diff --git a/.changeset/afraid-ways-teach.md b/.changeset/afraid-ways-teach.md deleted file mode 100644 index ebbf82acd..000000000 --- a/.changeset/afraid-ways-teach.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@jpmorganchase/mosaic-components': patch ---- - -Fix: ensure `AccordionDetail` and `AccordionSummary` are styled correctly diff --git a/.changeset/angry-carrots-destroy.md b/.changeset/angry-carrots-destroy.md deleted file mode 100644 index b9dac7aeb..000000000 --- a/.changeset/angry-carrots-destroy.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@jpmorganchase/mosaic-plugins': patch -'@jpmorganchase/mosaic-source-local-folder': patch ---- - -Ensure `prefixDir` is an optional source property diff --git a/.changeset/angry-mails-ring.md b/.changeset/angry-mails-ring.md deleted file mode 100644 index d251eb5ca..000000000 --- a/.changeset/angry-mails-ring.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@jpmorganchase/mosaic-site-components': patch ---- - -Pass alt to Image if fill or width and height are not defined diff --git a/.changeset/breezy-bottles-grin.md b/.changeset/breezy-bottles-grin.md deleted file mode 100644 index 6a6a27f57..000000000 --- a/.changeset/breezy-bottles-grin.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -'@jpmorganchase/mosaic-cli': patch -'@jpmorganchase/mosaic-site': patch -'@jpmorganchase/mosaic-source-git-repo': patch -'@jpmorganchase/mosaic-components': patch -'@jpmorganchase/mosaic-labs-components': patch -'@jpmorganchase/mosaic-content-editor-plugin': patch -'@jpmorganchase/mosaic-core': patch -'@jpmorganchase/mosaic-create-site': patch -'@jpmorganchase/mosaic-from-http-request': patch -'@jpmorganchase/mosaic-layouts': patch -'@jpmorganchase/mosaic-open-api-component': patch -'@jpmorganchase/mosaic-plugins': patch -'@jpmorganchase/mosaic-schemas': patch -'@jpmorganchase/mosaic-serialisers': patch -'@jpmorganchase/mosaic-site-components': patch -'@jpmorganchase/mosaic-site-middleware': patch -'@jpmorganchase/mosaic-site-preset-styles': patch -'@jpmorganchase/mosaic-source-http': patch -'@jpmorganchase/mosaic-source-local-folder': patch -'@jpmorganchase/mosaic-standard-generator': patch -'@jpmorganchase/mosaic-store': patch -'@jpmorganchase/mosaic-theme': patch -'@jpmorganchase/mosaic-types': patch -'@jpmorganchase/mosaic-workflows': patch ---- - -Added support for containerization of the site and cli as well as providing config for kubernetes development (skaffold) - -## @jpmorganchase/mosaic-cli - -The cli package has been updated to support containerization. diff --git a/.changeset/breezy-carrots-tie.md b/.changeset/breezy-carrots-tie.md deleted file mode 100644 index fb8a449dc..000000000 --- a/.changeset/breezy-carrots-tie.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -'@jpmorganchase/mosaic-standard-generator': patch -'@jpmorganchase/mosaic-cli': patch -'@jpmorganchase/mosaic-components': patch -'@jpmorganchase/mosaic-labs-components': patch -'@jpmorganchase/mosaic-content-editor-plugin': patch -'@jpmorganchase/mosaic-core': patch -'@jpmorganchase/mosaic-create-site': patch -'@jpmorganchase/mosaic-from-http-request': patch -'@jpmorganchase/mosaic-layouts': patch -'@jpmorganchase/mosaic-open-api-component': patch -'@jpmorganchase/mosaic-plugins': patch -'@jpmorganchase/mosaic-schemas': patch -'@jpmorganchase/mosaic-serialisers': patch -'@jpmorganchase/mosaic-site': patch -'@jpmorganchase/mosaic-site-components': patch -'@jpmorganchase/mosaic-site-middleware': patch -'@jpmorganchase/mosaic-site-preset-styles': patch -'@jpmorganchase/mosaic-source-git-repo': patch -'@jpmorganchase/mosaic-source-http': patch -'@jpmorganchase/mosaic-source-local-folder': patch -'@jpmorganchase/mosaic-store': patch -'@jpmorganchase/mosaic-theme': patch -'@jpmorganchase/mosaic-types': patch -'@jpmorganchase/mosaic-workflows': patch ---- - -fix markdown tables and update generator's Salt patches - -- Salt patches in generator were out of sync with Mosaic repo -- Markdown now support github flavoured markdown, such as Tables diff --git a/.changeset/calm-dingos-fix.md b/.changeset/calm-dingos-fix.md deleted file mode 100644 index 680a145af..000000000 --- a/.changeset/calm-dingos-fix.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -'@jpmorganchase/mosaic-cli': patch -'@jpmorganchase/mosaic-core': patch -'@jpmorganchase/mosaic-site': patch ---- - -### Fixes - -Strip credentials when using the list sources admin API diff --git a/.changeset/calm-pants-cheat.md b/.changeset/calm-pants-cheat.md deleted file mode 100644 index d8163300f..000000000 --- a/.changeset/calm-pants-cheat.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@jpmorganchase/mosaic-site-middleware': patch ---- - -Fixed routing breaking when URL parameters are present. diff --git a/.changeset/chatty-readers-sing.md b/.changeset/chatty-readers-sing.md deleted file mode 100644 index 57933768e..000000000 --- a/.changeset/chatty-readers-sing.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -'@jpmorganchase/mosaic-components': patch -'@jpmorganchase/mosaic-site': patch ---- - -### Fix - -The selected button in the Pagination control styling is updated to look like a CTA button diff --git a/.changeset/chilled-parents-visit.md b/.changeset/chilled-parents-visit.md deleted file mode 100644 index 4d98edd4b..000000000 --- a/.changeset/chilled-parents-visit.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -'@jpmorganchase/mosaic-layouts': patch -'@jpmorganchase/mosaic-site': patch ---- - -### Fixes - -Prevent full-width layouts from shrinking when there is not enough content to use up the full width of the page. diff --git a/.changeset/cold-buses-check.md b/.changeset/cold-buses-check.md deleted file mode 100644 index 5ba89ca27..000000000 --- a/.changeset/cold-buses-check.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -'@jpmorganchase/mosaic-cli': patch -'@jpmorganchase/mosaic-components': patch -'@jpmorganchase/mosaic-labs-components': patch -'@jpmorganchase/mosaic-content-editor-plugin': patch -'@jpmorganchase/mosaic-core': patch -'@jpmorganchase/mosaic-create-site': patch -'@jpmorganchase/mosaic-from-http-request': patch -'@jpmorganchase/mosaic-layouts': patch -'@jpmorganchase/mosaic-open-api-component': patch -'@jpmorganchase/mosaic-plugins': patch -'@jpmorganchase/mosaic-schemas': patch -'@jpmorganchase/mosaic-serialisers': patch -'@jpmorganchase/mosaic-site': patch -'@jpmorganchase/mosaic-site-components': patch -'@jpmorganchase/mosaic-site-middleware': patch -'@jpmorganchase/mosaic-site-preset-styles': patch -'@jpmorganchase/mosaic-source-git-repo': patch -'@jpmorganchase/mosaic-source-http': patch -'@jpmorganchase/mosaic-source-local-folder': patch -'@jpmorganchase/mosaic-standard-generator': patch -'@jpmorganchase/mosaic-store': patch -'@jpmorganchase/mosaic-theme': patch -'@jpmorganchase/mosaic-types': patch -'@jpmorganchase/mosaic-workflows': patch ---- - -1. Layout improvements. -2. Fix: if a user hits a url that lands on a directory, the index file within that directory is resolved as the content. -3. Fix: improve Table of Contents component highlighting. diff --git a/.changeset/cool-moose-design.md b/.changeset/cool-moose-design.md deleted file mode 100644 index a77bb1a92..000000000 --- a/.changeset/cool-moose-design.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -'@jpmorganchase/mosaic-plugins': patch -'@jpmorganchase/mosaic-cli': patch -'@jpmorganchase/mosaic-components': patch -'@jpmorganchase/mosaic-labs-components': patch -'@jpmorganchase/mosaic-content-editor-plugin': patch -'@jpmorganchase/mosaic-core': patch -'@jpmorganchase/mosaic-create-site': patch -'@jpmorganchase/mosaic-from-http-request': patch -'@jpmorganchase/mosaic-layouts': patch -'@jpmorganchase/mosaic-open-api-component': patch -'@jpmorganchase/mosaic-schemas': patch -'@jpmorganchase/mosaic-serialisers': patch -'@jpmorganchase/mosaic-site': patch -'@jpmorganchase/mosaic-site-components': patch -'@jpmorganchase/mosaic-site-middleware': patch -'@jpmorganchase/mosaic-site-preset-styles': patch -'@jpmorganchase/mosaic-source-git-repo': patch -'@jpmorganchase/mosaic-source-http': patch -'@jpmorganchase/mosaic-source-local-folder': patch -'@jpmorganchase/mosaic-standard-generator': patch -'@jpmorganchase/mosaic-store': patch -'@jpmorganchase/mosaic-theme': patch -'@jpmorganchase/mosaic-types': patch -'@jpmorganchase/mosaic-workflows': patch ---- - -fix sidebar which was generated after `beforeSend` had completed diff --git a/.changeset/curly-apes-pay.md b/.changeset/curly-apes-pay.md deleted file mode 100644 index b43f6ea2b..000000000 --- a/.changeset/curly-apes-pay.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@jpmorganchase/mosaic-components': patch -'@jpmorganchase/mosaic-site': patch -'@jpmorganchase/mosaic-theme': patch ---- - -Fix: hide `img` and `svg` in SSR content to prevent massive images caused by lack of Salt styles diff --git a/.changeset/curly-mayflies-smash.md b/.changeset/curly-mayflies-smash.md deleted file mode 100644 index 91c66026c..000000000 --- a/.changeset/curly-mayflies-smash.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -'@jpmorganchase/mosaic-components': patch -'@jpmorganchase/mosaic-cli': patch -'@jpmorganchase/mosaic-labs-components': patch -'@jpmorganchase/mosaic-content-editor-plugin': patch -'@jpmorganchase/mosaic-core': patch -'@jpmorganchase/mosaic-create-site': patch -'@jpmorganchase/mosaic-from-http-request': patch -'@jpmorganchase/mosaic-layouts': patch -'@jpmorganchase/mosaic-open-api-component': patch -'@jpmorganchase/mosaic-plugins': patch -'@jpmorganchase/mosaic-schemas': patch -'@jpmorganchase/mosaic-serialisers': patch -'@jpmorganchase/mosaic-site': patch -'@jpmorganchase/mosaic-site-components': patch -'@jpmorganchase/mosaic-site-middleware': patch -'@jpmorganchase/mosaic-site-preset-styles': patch -'@jpmorganchase/mosaic-source-git-repo': patch -'@jpmorganchase/mosaic-source-http': patch -'@jpmorganchase/mosaic-source-local-folder': patch -'@jpmorganchase/mosaic-standard-generator': patch -'@jpmorganchase/mosaic-store': patch -'@jpmorganchase/mosaic-theme': patch -'@jpmorganchase/mosaic-types': patch -'@jpmorganchase/mosaic-workflows': patch ---- - -Fix `pre` block code block rendering diff --git a/.changeset/curvy-penguins-boil.md b/.changeset/curvy-penguins-boil.md deleted file mode 100644 index 5b075cb9e..000000000 --- a/.changeset/curvy-penguins-boil.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@jpmorganchase/mosaic-theme': patch ---- - -fix: update the dark mode selector used to invert the color of images when using dark mode of the theme. diff --git a/.changeset/dull-carrots-drive.md b/.changeset/dull-carrots-drive.md deleted file mode 100644 index 9c6c04484..000000000 --- a/.changeset/dull-carrots-drive.md +++ /dev/null @@ -1,49 +0,0 @@ ---- -'@jpmorganchase/mosaic-cli': patch -'@jpmorganchase/mosaic-core': patch -'@jpmorganchase/mosaic-schemas': patch -'@jpmorganchase/mosaic-site': patch -'@jpmorganchase/mosaic-standard-generator': patch ---- - -## Source Pushing - -The Mosaic CLI provides an endpoint `/sources/add/` that allows a new source to be pushed to a running instance of Mosaic. - -To do this you make a POST request with a JSON body composed of - -- a `name` property -- a `definition` property - -### Example request body - -Pushing a new git repo source: - -``` -{ - "name":"my-docs-preview", - "definition": { - "modulePath": "@jpmorganchase/mosaic-source-git-repo", - "namespace": "my-docs", - "options": { - "credentials":, - "prefixDir": "my-docs", - "cache": true, - "subfolder": "docs", - "repo": , - "branch": "main", - "extensions": [".mdx"], - "remote": "origin" - } - } -} -``` - -## Notes - -By default, these sources are marked as a "preview" which means `preview-` is appended to the source namespace and certain plugins will not be run on this source e.g. search and sitemap plugins. - -You can disabled this behavior in 2 ways: - -1. send the property `isPreview` with the value of false as part of the POST request body -2. modify plugin definitions in the mosaic config file to set `previewDisabled` to be false for all plugins you wish have run on this source. diff --git a/.changeset/eighty-rings-marry.md b/.changeset/eighty-rings-marry.md deleted file mode 100644 index 1a9acb4eb..000000000 --- a/.changeset/eighty-rings-marry.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -'@jpmorganchase/mosaic-cli': patch -'@jpmorganchase/mosaic-core': patch -'@jpmorganchase/mosaic-plugins': patch -'@jpmorganchase/mosaic-serialisers': patch -'@jpmorganchase/mosaic-source-bitbucket': patch -'@jpmorganchase/mosaic-source-local-folder': patch -'@jpmorganchase/mosaic-types': patch ---- - -switch to public package diff --git a/.changeset/eleven-paws-invite.md b/.changeset/eleven-paws-invite.md deleted file mode 100644 index 71e6042a9..000000000 --- a/.changeset/eleven-paws-invite.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -'@jpmorganchase/mosaic-core': patch -'@jpmorganchase/mosaic-plugins': patch -'@jpmorganchase/mosaic-site': patch -'@jpmorganchase/mosaic-types': patch ---- - -`SharedConfigPlugin` can now apply a shared config to a source that doesn't have one but shares a namespace with 1 that does. diff --git a/.changeset/fair-chairs-lay.md b/.changeset/fair-chairs-lay.md deleted file mode 100644 index 486dc6143..000000000 --- a/.changeset/fair-chairs-lay.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@jpmorganchase/mosaic-source-figma': minor ---- - -use image previews generated by Figma's REST API to avoid auth issues with Figma embeds diff --git a/.changeset/famous-mirrors-type.md b/.changeset/famous-mirrors-type.md deleted file mode 100644 index fc3e94a76..000000000 --- a/.changeset/famous-mirrors-type.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -'@jpmorganchase/mosaic-create-site': patch -'@jpmorganchase/mosaic-standard-generator': patch ---- - -Mosaic site creators no longer needs to install `@jpmorganchase/mosaic-create-site` globally - -To generate a site, use `npx` -`npx @jpmorganchase/mosaic-create-site create -o my-sample-site` diff --git a/.changeset/fast-bulldogs-grab.md b/.changeset/fast-bulldogs-grab.md deleted file mode 100644 index 570e77dbf..000000000 --- a/.changeset/fast-bulldogs-grab.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@jpmorganchase/mosaic-plugins': patch ---- - -Fix pages that are excluded from the sidebar having no sidebar diff --git a/.changeset/fifty-chairs-happen.md b/.changeset/fifty-chairs-happen.md deleted file mode 100644 index 4aea8aef6..000000000 --- a/.changeset/fifty-chairs-happen.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -'@jpmorganchase/mosaic-site': patch -'@jpmorganchase/mosaic-source-git-repo': patch -'@jpmorganchase/mosaic-standard-generator': patch -'@jpmorganchase/mosaic-cli': patch -'@jpmorganchase/mosaic-components': patch -'@jpmorganchase/mosaic-labs-components': patch -'@jpmorganchase/mosaic-content-editor-plugin': patch -'@jpmorganchase/mosaic-core': patch -'@jpmorganchase/mosaic-create-site': patch -'@jpmorganchase/mosaic-layouts': patch -'@jpmorganchase/mosaic-open-api-component': patch -'@jpmorganchase/mosaic-plugins': patch -'@jpmorganchase/mosaic-schemas': patch -'@jpmorganchase/mosaic-serialisers': patch -'@jpmorganchase/mosaic-site-components': patch -'@jpmorganchase/mosaic-site-middleware': patch -'@jpmorganchase/mosaic-site-preset-styles': patch -'@jpmorganchase/mosaic-source-local-folder': patch -'@jpmorganchase/mosaic-store': patch -'@jpmorganchase/mosaic-theme': patch -'@jpmorganchase/mosaic-types': patch -'@jpmorganchase/mosaic-workflows': patch ---- - -Feature release - -- Enhanced generators now have defaults. - With one command (`yarn mosaic-create-site create`) it will generate a fully working site with both local and remote sources -- Fix an issue where we could not clone from the master branch of git repos -- Migrate to Next 13 image diff --git a/.changeset/five-poets-pay.md b/.changeset/five-poets-pay.md deleted file mode 100644 index 3bce5207d..000000000 --- a/.changeset/five-poets-pay.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -'@jpmorganchase/mosaic-core': patch -'@jpmorganchase/mosaic-plugins': patch -'@jpmorganchase/mosaic-site': patch -'@jpmorganchase/mosaic-types': patch ---- - -### Feature - -Add new `afterNamespaceSourceUpdate` plugin lifecycle method. - -This method is identical to `afterUpdate` but will **only** run if the `shouldUpdateNamespaceSources` lifecycle method returns `true`. diff --git a/.changeset/four-cups-watch.md b/.changeset/four-cups-watch.md deleted file mode 100644 index a3bb72f92..000000000 --- a/.changeset/four-cups-watch.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -'@jpmorganchase/mosaic-cli': patch -'@jpmorganchase/mosaic-core': patch -'@jpmorganchase/mosaic-plugins': patch -'@jpmorganchase/mosaic-serialisers': patch -'@jpmorganchase/mosaic-source-bitbucket': patch -'@jpmorganchase/mosaic-source-local-folder': patch -'@jpmorganchase/mosaic-types': patch ---- - -Release fixes for snapshot serve diff --git a/.changeset/fresh-coats-learn.md b/.changeset/fresh-coats-learn.md deleted file mode 100644 index 4bbaa7046..000000000 --- a/.changeset/fresh-coats-learn.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -'@jpmorganchase/mosaic-cli': patch -'@jpmorganchase/mosaic-core': patch -'@jpmorganchase/mosaic-plugins': patch -'@jpmorganchase/mosaic-serialisers': patch -'@jpmorganchase/mosaic-source-bitbucket': patch -'@jpmorganchase/mosaic-source-local-folder': patch -'@jpmorganchase/mosaic-types': patch ---- - -This releases add support for generate / build and serve snapshots diff --git a/.changeset/fresh-peaches-heal.md b/.changeset/fresh-peaches-heal.md deleted file mode 100644 index c1bec5f06..000000000 --- a/.changeset/fresh-peaches-heal.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -'@jpmorganchase/mosaic-content-editor-plugin': patch ---- - -### Fix - -The insert/edit link dialog no longer closes when its contents are clicked. - -### Refactor - -The forms used to insert/edit links and insert images in the content editor plugin have been updated to use the latest version of `FormField` and `Input` from Salt-ds. diff --git a/.changeset/funny-taxis-promise.md b/.changeset/funny-taxis-promise.md deleted file mode 100644 index ee26c391b..000000000 --- a/.changeset/funny-taxis-promise.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -'@jpmorganchase/mosaic-layouts': patch -'@jpmorganchase/mosaic-store': patch -'@jpmorganchase/mosaic-theme': patch ---- - -### Fix - -Ensure that help links in the sidebar are visible when they are present in the page `sharedConfig` diff --git a/.changeset/fuzzy-mails-deliver.md b/.changeset/fuzzy-mails-deliver.md deleted file mode 100644 index 09d241000..000000000 --- a/.changeset/fuzzy-mails-deliver.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -'@jpmorganchase/mosaic-plugins': patch -'@jpmorganchase/mosaic-site': patch -'@jpmorganchase/mosaic-site-components': patch -'@jpmorganchase/mosaic-store': patch -'@jpmorganchase/mosaic-cli': patch -'@jpmorganchase/mosaic-components': patch -'@jpmorganchase/mosaic-labs-components': patch -'@jpmorganchase/mosaic-content-editor-plugin': patch -'@jpmorganchase/mosaic-core': patch -'@jpmorganchase/mosaic-create-site': patch -'@jpmorganchase/mosaic-from-http-request': patch -'@jpmorganchase/mosaic-layouts': patch -'@jpmorganchase/mosaic-open-api-component': patch -'@jpmorganchase/mosaic-schemas': patch -'@jpmorganchase/mosaic-serialisers': patch -'@jpmorganchase/mosaic-site-middleware': patch -'@jpmorganchase/mosaic-site-preset-styles': patch -'@jpmorganchase/mosaic-source-git-repo': patch -'@jpmorganchase/mosaic-source-http': patch -'@jpmorganchase/mosaic-source-local-folder': patch -'@jpmorganchase/mosaic-standard-generator': patch -'@jpmorganchase/mosaic-theme': patch -'@jpmorganchase/mosaic-types': patch -'@jpmorganchase/mosaic-workflows': patch ---- - -- Next/Prev page buttons were not appearing at the bottom of a page sequence -- Removed redundant snapshot page api diff --git a/.changeset/great-bears-smash.md b/.changeset/great-bears-smash.md deleted file mode 100644 index f22c32003..000000000 --- a/.changeset/great-bears-smash.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@jpmorganchase/mosaic-site': patch -'@jpmorganchase/mosaic-site-components': patch -'@jpmorganchase/mosaic-standard-generator': patch ---- - -Use `next/font` to load fonts diff --git a/.changeset/grumpy-knives-nail.md b/.changeset/grumpy-knives-nail.md deleted file mode 100644 index 878aa625b..000000000 --- a/.changeset/grumpy-knives-nail.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -'@jpmorganchase/mosaic-components': minor -'@jpmorganchase/mosaic-site': minor -'@jpmorganchase/mosaic-standard-generator': minor -'@jpmorganchase/mosaic-theme': minor -'@jpmorganchase/mosaic-cli': minor -'@jpmorganchase/mosaic-labs-components': minor -'@jpmorganchase/mosaic-content-editor-plugin': minor -'@jpmorganchase/mosaic-core': minor -'@jpmorganchase/mosaic-create-site': minor -'@jpmorganchase/mosaic-from-http-request': minor -'@jpmorganchase/mosaic-layouts': minor -'@jpmorganchase/mosaic-open-api-component': minor -'@jpmorganchase/mosaic-plugins': minor -'@jpmorganchase/mosaic-schemas': minor -'@jpmorganchase/mosaic-serialisers': minor -'@jpmorganchase/mosaic-site-components': minor -'@jpmorganchase/mosaic-site-middleware': minor -'@jpmorganchase/mosaic-site-preset-styles': minor -'@jpmorganchase/mosaic-source-git-repo': minor -'@jpmorganchase/mosaic-source-http': minor -'@jpmorganchase/mosaic-source-local-folder': minor -'@jpmorganchase/mosaic-store': minor -'@jpmorganchase/mosaic-types': minor -'@jpmorganchase/mosaic-workflows': minor ---- - -The theme contract provided by the `@jpmorganchase/mosaic-theme` package now uses locally scoped variable names via a Vanilla Extract [Theme Contract](https://vanilla-extract.style/documentation/api/create-theme-contract/). Previously the theme variables were globally scoped resulting in conflicts with other design systems. diff --git a/.changeset/happy-actors-cover.md b/.changeset/happy-actors-cover.md deleted file mode 100644 index 79d10eb74..000000000 --- a/.changeset/happy-actors-cover.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -'@jpmorganchase/mosaic-plugins': patch -'@jpmorganchase/mosaic-cli': patch -'@jpmorganchase/mosaic-components': patch -'@jpmorganchase/mosaic-labs-components': patch -'@jpmorganchase/mosaic-content-editor-plugin': patch -'@jpmorganchase/mosaic-core': patch -'@jpmorganchase/mosaic-create-site': patch -'@jpmorganchase/mosaic-from-http-request': patch -'@jpmorganchase/mosaic-layouts': patch -'@jpmorganchase/mosaic-open-api-component': patch -'@jpmorganchase/mosaic-schemas': patch -'@jpmorganchase/mosaic-serialisers': patch -'@jpmorganchase/mosaic-site': patch -'@jpmorganchase/mosaic-site-components': patch -'@jpmorganchase/mosaic-site-middleware': patch -'@jpmorganchase/mosaic-site-preset-styles': patch -'@jpmorganchase/mosaic-source-git-repo': patch -'@jpmorganchase/mosaic-source-http': patch -'@jpmorganchase/mosaic-source-local-folder': patch -'@jpmorganchase/mosaic-standard-generator': patch -'@jpmorganchase/mosaic-store': patch -'@jpmorganchase/mosaic-theme': patch -'@jpmorganchase/mosaic-types': patch -'@jpmorganchase/mosaic-workflows': patch ---- - -1. Pip Salt version -2. Issues 155, make 500 error more specific -3. button and sidebar styles -4. search opt-out diff --git a/.changeset/healthy-dancers-pretend.md b/.changeset/healthy-dancers-pretend.md deleted file mode 100644 index 4a987699e..000000000 --- a/.changeset/healthy-dancers-pretend.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -'@jpmorganchase/mosaic-core': patch -'@jpmorganchase/mosaic-schemas': patch -'@jpmorganchase/mosaic-site': patch ---- - -### Feature - -Multiple instances of the same Plugin can be used by setting `allowMultiple` to true for all plugin definitions in the `mosaic.config.mjs` file that use that plugin. - -If there are multiple plugin definitions and only some have `allowMultiple` set to true then those are used and the definitions that do not set `allowMultiple` are discarded. diff --git a/.changeset/heavy-colts-try.md b/.changeset/heavy-colts-try.md deleted file mode 100644 index aac55dba9..000000000 --- a/.changeset/heavy-colts-try.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -'@jpmorganchase/mosaic-content-editor-plugin': patch -'@jpmorganchase/mosaic-core': patch -'@jpmorganchase/mosaic-site': patch -'@jpmorganchase/mosaic-site-components': patch -'@jpmorganchase/mosaic-workflows': patch ---- - -Styling and API changes for In-Browser Content Editor (IBCE) diff --git a/.changeset/heavy-donuts-cheat.md b/.changeset/heavy-donuts-cheat.md deleted file mode 100644 index e6106c0eb..000000000 --- a/.changeset/heavy-donuts-cheat.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -'@jpmorganchase/mosaic-site': patch -'@jpmorganchase/mosaic-site-components': patch -'@jpmorganchase/mosaic-store': patch ---- - -## Fix - -When a page does not specify a property that is part of the store default props, we use what the default props specify and not what is currently in the store. diff --git a/.changeset/heavy-snails-boil.md b/.changeset/heavy-snails-boil.md deleted file mode 100644 index 2694ab7fb..000000000 --- a/.changeset/heavy-snails-boil.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -'@jpmorganchase/mosaic-layouts': patch -'@jpmorganchase/mosaic-site': patch -'@jpmorganchase/mosaic-site-components': patch -'@jpmorganchase/mosaic-site-middleware': patch -'@jpmorganchase/mosaic-standard-generator': patch ---- - -Upgrade to latest version of NextJs (v13.4.1) diff --git a/.changeset/hip-kangaroos-beam.md b/.changeset/hip-kangaroos-beam.md deleted file mode 100644 index 20d404024..000000000 --- a/.changeset/hip-kangaroos-beam.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -'@jpmorganchase/mosaic-core': patch -'@jpmorganchase/mosaic-plugins': patch ---- - -## Fix - -Support Mosaic `tags` on Windows diff --git a/.changeset/little-mugs-scream.md b/.changeset/honest-coins-matter.md similarity index 74% rename from .changeset/little-mugs-scream.md rename to .changeset/honest-coins-matter.md index f6cea988e..c621723be 100644 --- a/.changeset/little-mugs-scream.md +++ b/.changeset/honest-coins-matter.md @@ -1,31 +1,34 @@ --- -'@jpmorganchase/mosaic-plugins': minor -'@jpmorganchase/mosaic-site': minor -'@jpmorganchase/mosaic-site-components': minor -'@jpmorganchase/mosaic-site-middleware': minor -'@jpmorganchase/mosaic-standard-generator': minor '@jpmorganchase/mosaic-cli': minor '@jpmorganchase/mosaic-components': minor '@jpmorganchase/mosaic-labs-components': minor '@jpmorganchase/mosaic-content-editor-plugin': minor '@jpmorganchase/mosaic-core': minor '@jpmorganchase/mosaic-create-site': minor -'@jpmorganchase/mosaic-from-http-request': minor +'@jpmorganchase/mosaic-icons': minor '@jpmorganchase/mosaic-layouts': minor +'@jpmorganchase/mosaic-loaders': minor +'@jpmorganchase/mosaic-mdx-components': minor '@jpmorganchase/mosaic-open-api-component': minor +'@jpmorganchase/mosaic-plugins': minor '@jpmorganchase/mosaic-schemas': minor -'@jpmorganchase/mosaic-serialisers': minor +'@jpmorganchase/mosaic-site': minor +'@jpmorganchase/mosaic-site-components': minor +'@jpmorganchase/mosaic-site-components-next': minor '@jpmorganchase/mosaic-site-preset-styles': minor '@jpmorganchase/mosaic-source-git-repo': minor -'@jpmorganchase/mosaic-source-http': minor -'@jpmorganchase/mosaic-source-local-folder': minor +'@jpmorganchase/mosaic-standard-generator': minor '@jpmorganchase/mosaic-store': minor '@jpmorganchase/mosaic-theme': minor '@jpmorganchase/mosaic-types': minor +'@jpmorganchase/mosaic-from-http-request': minor +'@jpmorganchase/mosaic-serialisers': minor +'@jpmorganchase/mosaic-source-figma': minor +'@jpmorganchase/mosaic-source-http': minor +'@jpmorganchase/mosaic-source-local-folder': minor +'@jpmorganchase/mosaic-source-readme': minor +'@jpmorganchase/mosaic-source-storybook': minor '@jpmorganchase/mosaic-workflows': minor --- -Flatten Sidebar -Search Optimisation -Public Assets Plugin -TOC Indentation +Refactor Mosaic around RSC diff --git a/.changeset/hot-owls-worry.md b/.changeset/hot-owls-worry.md deleted file mode 100644 index b1a592609..000000000 --- a/.changeset/hot-owls-worry.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -'@jpmorganchase/mosaic-components': patch -'@jpmorganchase/mosaic-labs-components': patch -'@jpmorganchase/mosaic-plugins': patch ---- - -## Fixes - -- Update lazy import of swagger-ui in the Mosaic Open API component -- Tab Component can use title or label props for tab title -- SharedConfigPlugin ensures closest shared-config.json file in the - page hierarchy is used to source the shared configuration. diff --git a/.changeset/itchy-timers-fold.md b/.changeset/itchy-timers-fold.md deleted file mode 100644 index 132a4dc11..000000000 --- a/.changeset/itchy-timers-fold.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -'@jpmorganchase/mosaic-components': patch -'@jpmorganchase/mosaic-labs-components': patch -'@jpmorganchase/mosaic-content-editor-plugin': patch -'@jpmorganchase/mosaic-layouts': patch -'@jpmorganchase/mosaic-site-components': patch -'@jpmorganchase/mosaic-site-preset-styles': patch -'@jpmorganchase/mosaic-theme': patch ---- - -Upgrade to latest Salt libraries diff --git a/.changeset/khaki-tables-guess.md b/.changeset/khaki-tables-guess.md deleted file mode 100644 index cbeb08d1f..000000000 --- a/.changeset/khaki-tables-guess.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -'@jpmorganchase/mosaic-layouts': patch -'@jpmorganchase/mosaic-site': patch ---- - -## Fixes - -- Prevent the search results popover from being hidden by the main page content -- When on smaller screens switch the main content grid to only show the main content grid area diff --git a/.changeset/large-avocados-know.md b/.changeset/large-avocados-know.md deleted file mode 100644 index 002fb80ad..000000000 --- a/.changeset/large-avocados-know.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -'@jpmorganchase/mosaic-cli': patch -'@jpmorganchase/mosaic-core': patch -'@jpmorganchase/mosaic-plugins': patch -'@jpmorganchase/mosaic-serialisers': patch -'@jpmorganchase/mosaic-source-bitbucket': patch -'@jpmorganchase/mosaic-source-local-folder': patch -'@jpmorganchase/mosaic-types': patch ---- - -pipped to 0.1.0-beta.1 for publishing to NPM diff --git a/.changeset/late-kings-sit.md b/.changeset/late-kings-sit.md deleted file mode 100644 index 1ce43d179..000000000 --- a/.changeset/late-kings-sit.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -'@jpmorganchase/mosaic-components': patch -'@jpmorganchase/mosaic-site': patch ---- - -## Fixes - -Prevent `EditionFilterView` from showing `Rendered fewer hooks than expected` error when a filter is appled. diff --git a/.changeset/late-shrimps-compete.md b/.changeset/late-shrimps-compete.md deleted file mode 100644 index c0fdb9cfd..000000000 --- a/.changeset/late-shrimps-compete.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@jpmorganchase/mosaic-site': patch -'@jpmorganchase/mosaic-site-components': patch ---- - -Fix: Ensure sidebar does not break when it is given bad config diff --git a/.changeset/lazy-clocks-lay.md b/.changeset/lazy-clocks-lay.md deleted file mode 100644 index 4255160ae..000000000 --- a/.changeset/lazy-clocks-lay.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@jpmorganchase/mosaic-site-middleware': patch ---- - -fix: remove env variable check in `withSession` middleware - -The `NEXTAUTH_SECRET` env variable is not always required. It is possible to pass the secret as an option to `next-auth` diff --git a/.changeset/lemon-dolls-drive.md b/.changeset/lemon-dolls-drive.md deleted file mode 100644 index 17e892c0d..000000000 --- a/.changeset/lemon-dolls-drive.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -'@jpmorganchase/mosaic-components': minor -'@jpmorganchase/mosaic-labs-components': minor -'@jpmorganchase/mosaic-content-editor-plugin': minor -'@jpmorganchase/mosaic-layouts': minor -'@jpmorganchase/mosaic-site-components': minor -'@jpmorganchase/mosaic-site-preset-styles': minor -'@jpmorganchase/mosaic-theme': minor ---- - -Upgraded Salt packages to: - -@salt-ds/core@1.11.0 -@salt-ds/lab@1.0.0-alpha.20 -@salt-ds/icons@1.7.0 -@salt-ds/theme@1.9.0 diff --git a/.changeset/light-cherries-retire.md b/.changeset/light-cherries-retire.md deleted file mode 100644 index c3b721b41..000000000 --- a/.changeset/light-cherries-retire.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@jpmorganchase/mosaic-components': patch -'@jpmorganchase/mosaic-site': patch ---- - -`LinkButton` added to default MDX components. diff --git a/.changeset/loud-impalas-relax.md b/.changeset/loud-impalas-relax.md deleted file mode 100644 index ab34f98f2..000000000 --- a/.changeset/loud-impalas-relax.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@jpmorganchase/mosaic-plugins': patch -'@jpmorganchase/mosaic-site': patch ---- - -Ensure that pages that have subscribed to tags are properly updated when the source of the tagged content is updated. diff --git a/.changeset/many-peas-laugh.md b/.changeset/many-peas-laugh.md deleted file mode 100644 index c4bb3c9cb..000000000 --- a/.changeset/many-peas-laugh.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -'@jpmorganchase/mosaic-cli': patch -'@jpmorganchase/mosaic-core': patch -'@jpmorganchase/mosaic-site': patch -'@jpmorganchase/mosaic-standard-generator': patch -'@jpmorganchase/mosaic-components': patch -'@jpmorganchase/mosaic-labs-components': patch -'@jpmorganchase/mosaic-content-editor-plugin': patch -'@jpmorganchase/mosaic-create-site': patch -'@jpmorganchase/mosaic-from-http-request': patch -'@jpmorganchase/mosaic-layouts': patch -'@jpmorganchase/mosaic-open-api-component': patch -'@jpmorganchase/mosaic-plugins': patch -'@jpmorganchase/mosaic-schemas': patch -'@jpmorganchase/mosaic-serialisers': patch -'@jpmorganchase/mosaic-site-components': patch -'@jpmorganchase/mosaic-site-middleware': patch -'@jpmorganchase/mosaic-site-preset-styles': patch -'@jpmorganchase/mosaic-source-git-repo': patch -'@jpmorganchase/mosaic-source-http': patch -'@jpmorganchase/mosaic-source-local-folder': patch -'@jpmorganchase/mosaic-store': patch -'@jpmorganchase/mosaic-theme': patch -'@jpmorganchase/mosaic-types': patch -'@jpmorganchase/mosaic-workflows': patch ---- - -Sidebar behavior and styling changes. -Add Client-side search feature. -Relax node engine requirements. -Removal of patches from the site package. -Update site generator templates. diff --git a/.changeset/mighty-tips-attend.md b/.changeset/mighty-tips-attend.md deleted file mode 100644 index dcbb06dd4..000000000 --- a/.changeset/mighty-tips-attend.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -'@jpmorganchase/mosaic-theme': minor -'@jpmorganchase/mosaic-cli': minor -'@jpmorganchase/mosaic-components': minor -'@jpmorganchase/mosaic-labs-components': minor -'@jpmorganchase/mosaic-content-editor-plugin': minor -'@jpmorganchase/mosaic-core': minor -'@jpmorganchase/mosaic-create-site': minor -'@jpmorganchase/mosaic-from-http-request': minor -'@jpmorganchase/mosaic-layouts': minor -'@jpmorganchase/mosaic-open-api-component': minor -'@jpmorganchase/mosaic-plugins': minor -'@jpmorganchase/mosaic-schemas': minor -'@jpmorganchase/mosaic-serialisers': minor -'@jpmorganchase/mosaic-site': minor -'@jpmorganchase/mosaic-site-components': minor -'@jpmorganchase/mosaic-site-middleware': minor -'@jpmorganchase/mosaic-site-preset-styles': minor -'@jpmorganchase/mosaic-source-git-repo': minor -'@jpmorganchase/mosaic-source-http': minor -'@jpmorganchase/mosaic-source-local-folder': minor -'@jpmorganchase/mosaic-standard-generator': minor -'@jpmorganchase/mosaic-store': minor -'@jpmorganchase/mosaic-types': minor -'@jpmorganchase/mosaic-workflows': minor ---- - -## Mosaic Theme - -The theme variables are now globally scoped and prefixed with `mosaic`. - -## BrokenLinksPlugin - -The `BrokenLinksPlugin` uses a running instance of mosaic to verify that all links in the source pages are alive. - -If mosaic is running behind a corporate proxy, the `proxyEndpoint` option is required to fetch external URLs. - -Configuration: - -```json - { - modulePath: '@jpmorganchase/mosaic-plugins/BrokenLinksPlugin', - priority: -1, - // Exclude this plugin in builds - runTimeOnly: true, - options: { - baseUrl: process.env.MOSAIC_ACTIVE_MODE_URL || 'http://localhost:8080', - proxyEndpoint: 'http://some-proxy-url' - } - } -``` - -## Next/Prev button - -The next and prev buttons are visible again on pages that have a layout that uses these buttons. diff --git a/.changeset/modern-ghosts-study.md b/.changeset/modern-ghosts-study.md deleted file mode 100644 index 33835d9aa..000000000 --- a/.changeset/modern-ghosts-study.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -'@jpmorganchase/mosaic-cli': patch -'@jpmorganchase/mosaic-content-editor-plugin': patch -'@jpmorganchase/mosaic-core': patch -'@jpmorganchase/mosaic-site': patch -'@jpmorganchase/mosaic-site-components': patch -'@jpmorganchase/mosaic-types': patch -'@jpmorganchase/mosaic-workflows': patch ---- - -Use a websocket for workflows diff --git a/.changeset/neat-cherries-remain.md b/.changeset/neat-cherries-remain.md deleted file mode 100644 index 5e5bad847..000000000 --- a/.changeset/neat-cherries-remain.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -'@jpmorganchase/mosaic-cli': patch -'@jpmorganchase/mosaic-core': patch -'@jpmorganchase/mosaic-plugins': patch -'@jpmorganchase/mosaic-serialisers': patch -'@jpmorganchase/mosaic-source-bitbucket': patch -'@jpmorganchase/mosaic-source-local-folder': patch -'@jpmorganchase/mosaic-types': patch ---- - -added dist to package.json diff --git a/.changeset/neat-fireants-hide.md b/.changeset/neat-fireants-hide.md deleted file mode 100644 index 43f2e865b..000000000 --- a/.changeset/neat-fireants-hide.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@jpmorganchase/mosaic-site-components': minor ---- - -Check if window exists before accessing document in table of contents utils diff --git a/.changeset/neat-swans-agree.md b/.changeset/neat-swans-agree.md deleted file mode 100644 index 26e59e50a..000000000 --- a/.changeset/neat-swans-agree.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -'@jpmorganchase/mosaic-cli': patch -'@jpmorganchase/mosaic-components': patch -'@jpmorganchase/mosaic-content-editor-plugin': patch -'@jpmorganchase/mosaic-core': patch -'@jpmorganchase/mosaic-create-site': patch -'@jpmorganchase/mosaic-layouts': patch -'@jpmorganchase/mosaic-open-api-component': patch -'@jpmorganchase/mosaic-plugins': patch -'@jpmorganchase/mosaic-schemas': patch -'@jpmorganchase/mosaic-serialisers': patch -'@jpmorganchase/mosaic-site-components': patch -'@jpmorganchase/mosaic-site-middleware': patch -'@jpmorganchase/mosaic-site-preset-styles': patch -'@jpmorganchase/mosaic-source-git-repo': patch -'@jpmorganchase/mosaic-source-local-folder': patch -'@jpmorganchase/mosaic-standard-generator': patch -'@jpmorganchase/mosaic-store': patch -'@jpmorganchase/mosaic-theme': patch -'@jpmorganchase/mosaic-types': patch -'@jpmorganchase/mosaic-workflows': patch ---- - -Upgrade React to version 18 and NextJs to version 13 diff --git a/.changeset/nervous-cougars-sparkle.md b/.changeset/nervous-cougars-sparkle.md deleted file mode 100644 index 7b2b29d92..000000000 --- a/.changeset/nervous-cougars-sparkle.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@jpmorganchase/mosaic-components': patch -'@jpmorganchase/mosaic-theme': patch ---- - -Removed overrides for Salt icon color and size. -Mosaic Icon component now uses number for size. diff --git a/.changeset/ninety-coins-fetch.md b/.changeset/ninety-coins-fetch.md deleted file mode 100644 index aaef63d4a..000000000 --- a/.changeset/ninety-coins-fetch.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -'@jpmorganchase/mosaic-plugins': patch -'@jpmorganchase/mosaic-site': patch ---- - -## Feature - Advanced Sidebar Sorting - -Given a directory of pages, you can provide a sidebar sort config in the frontmatter of the directory index page which will be used to sort the other pages in the directory. - -The sort config consists of: - -- field: the path, separated by a '/', to the page metadata you want to use for sorting e.g. title or data/publicationDate -- dataType: 'string' or 'number' or 'Date' -- arrange: 'asc' or 'desc' - -Note that a page can still specify its sidebar priority and this will overrule any sort config specified in the index page. - -## Example - -Let's say you have a "Newsletters" directory which has an index page and multiple newsletter pages in the same directory. - -Each newsletter page has a data property which includes the publication date of the newsletter. - -To order the newsletters in the sidebar in descending order (the newest newsletter first): - -Add the following to the **index** page frontmatter: - -``` -sharedConfig: - sidebar: - sort: - field: data/publicationDate - dataType: date - arrange: desc -``` diff --git a/.changeset/ninety-teachers-lick.md b/.changeset/ninety-teachers-lick.md deleted file mode 100644 index e5acd22e4..000000000 --- a/.changeset/ninety-teachers-lick.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -'@jpmorganchase/mosaic-components': patch -'@jpmorganchase/mosaic-labs-components': patch -'@jpmorganchase/mosaic-content-editor-plugin': patch -'@jpmorganchase/mosaic-layouts': patch -'@jpmorganchase/mosaic-site-components': patch ---- - -Pin @salt-ds/lab to 1.0.0-alpha.1 diff --git a/.changeset/poor-students-tickle.md b/.changeset/poor-students-tickle.md deleted file mode 100644 index 1be7fe75b..000000000 --- a/.changeset/poor-students-tickle.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -'@jpmorganchase/mosaic-site': patch -'@jpmorganchase/mosaic-site-components': patch ---- - -## Feat - -Navigating away from a broken page will reset the error status. - -This gives more independence to pages, one broken page does not impact the ability to view the other pages on the site. diff --git a/.changeset/popular-cows-deny.md b/.changeset/popular-cows-deny.md deleted file mode 100644 index 2b1fb4f15..000000000 --- a/.changeset/popular-cows-deny.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@jpmorganchase/mosaic-from-http-request': patch ---- - -Add support for text content types to `fromHttpRequest`. diff --git a/.changeset/proud-chefs-applaud.md b/.changeset/proud-chefs-applaud.md deleted file mode 100644 index 3777e116f..000000000 --- a/.changeset/proud-chefs-applaud.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@jpmorganchase/mosaic-theme': patch ---- - -Remove dark mode image filter diff --git a/.changeset/quiet-apricots-laugh.md b/.changeset/quiet-apricots-laugh.md deleted file mode 100644 index 9557eddd5..000000000 --- a/.changeset/quiet-apricots-laugh.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@jpmorganchase/mosaic-cli': patch -'@jpmorganchase/mosaic-core': patch -'@jpmorganchase/mosaic-site': patch ---- - -Add Admin endpoints diff --git a/.changeset/quiet-walls-lay.md b/.changeset/quiet-walls-lay.md deleted file mode 100644 index d3b8bd082..000000000 --- a/.changeset/quiet-walls-lay.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -'@jpmorganchase/mosaic-source-http': patch -'@jpmorganchase/mosaic-source-storybook': patch ---- - -## HTTP Source `noProxy` option - -The `noProxy` option is a regex used to check if an endpoint in the `endpoints` collection should create an http proxy agent for the request. - -## `createHttpSource` `configuredRequests` option - -When an http source is created using the `createHttpSource` function, instead of supplying a collection of endpoints, a `configuredRequests` option can be used to provide a collection of [Request](https://developer.mozilla.org/en-US/docs/Web/API/Request) objects. - -This gives full control over the request configuration to the user. - -_Should both `endpoints` and `configuredRequests` be provided then endpoints will take precedence._ - -## Storybook Source - -Storybook config in the `stories` option can now specify a `proxyEndpoint`. diff --git a/.changeset/rare-elephants-wave.md b/.changeset/rare-elephants-wave.md deleted file mode 100644 index 725af918c..000000000 --- a/.changeset/rare-elephants-wave.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -'@jpmorganchase/mosaic-site': patch -'@jpmorganchase/mosaic-site-components': patch -'@jpmorganchase/mosaic-standard-generator': patch ---- - -### Fixes - -- Breadcrumb label matches sidebar label if available. -- When breadcrumbs collapse into a menu button, the breadcrumb label is used for the menu items. -- Collapsed breadcrumbs will navigate to the page the breadcrumb represents -- Breadcrumb links no longer include the unnecessary file extension diff --git a/.changeset/red-rivers-work.md b/.changeset/red-rivers-work.md deleted file mode 100644 index c08d42f8a..000000000 --- a/.changeset/red-rivers-work.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -'@jpmorganchase/mosaic-site': patch -'@jpmorganchase/mosaic-source-readme': patch -'@jpmorganchase/mosaic-cli': patch -'@jpmorganchase/mosaic-components': patch -'@jpmorganchase/mosaic-labs-components': patch -'@jpmorganchase/mosaic-content-editor-plugin': patch -'@jpmorganchase/mosaic-core': patch -'@jpmorganchase/mosaic-create-site': patch -'@jpmorganchase/mosaic-from-http-request': patch -'@jpmorganchase/mosaic-layouts': patch -'@jpmorganchase/mosaic-open-api-component': patch -'@jpmorganchase/mosaic-plugins': patch -'@jpmorganchase/mosaic-schemas': patch -'@jpmorganchase/mosaic-serialisers': patch -'@jpmorganchase/mosaic-site-components': patch -'@jpmorganchase/mosaic-site-middleware': patch -'@jpmorganchase/mosaic-site-preset-styles': patch -'@jpmorganchase/mosaic-source-git-repo': patch -'@jpmorganchase/mosaic-source-http': patch -'@jpmorganchase/mosaic-source-local-folder': patch -'@jpmorganchase/mosaic-source-storybook': patch -'@jpmorganchase/mosaic-standard-generator': patch -'@jpmorganchase/mosaic-store': patch -'@jpmorganchase/mosaic-theme': patch -'@jpmorganchase/mosaic-types': patch -'@jpmorganchase/mosaic-workflows': patch ---- - -New Readme Source - -This source pulls a single Readme.md from a remote Source repo. -Typically used for third-party repos which exist already or don't want to -create a full document hierachy and use `@jpmorganchase/mosaic-source-git-repo`. -By pulling a single page, we can add metadata to that page via the source's config. -It's also more performant as we do not need to pull a whole source repo. diff --git a/.changeset/rich-queens-exercise.md b/.changeset/rich-queens-exercise.md deleted file mode 100644 index f27fc5301..000000000 --- a/.changeset/rich-queens-exercise.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -'@jpmorganchase/mosaic-cli': patch -'@jpmorganchase/mosaic-components': patch -'@jpmorganchase/mosaic-content-editor-plugin': patch -'@jpmorganchase/mosaic-core': patch -'@jpmorganchase/mosaic-create-site': patch -'@jpmorganchase/mosaic-layouts': patch -'@jpmorganchase/mosaic-open-api-component': patch -'@jpmorganchase/mosaic-plugins': patch -'@jpmorganchase/mosaic-schemas': patch -'@jpmorganchase/mosaic-serialisers': patch -'@jpmorganchase/mosaic-site-components': patch -'@jpmorganchase/mosaic-site-middleware': patch -'@jpmorganchase/mosaic-site-preset-styles': patch -'@jpmorganchase/mosaic-source-git-repo': patch -'@jpmorganchase/mosaic-source-local-folder': patch -'@jpmorganchase/mosaic-standard-generator': patch ---- - -fix SSR Initial render - -removed Salt Core patch -added Salt Labs patch (Cascading Menu) to support SSR diff --git a/.changeset/rude-emus-trade.md b/.changeset/rude-emus-trade.md deleted file mode 100644 index e2ac80bf6..000000000 --- a/.changeset/rude-emus-trade.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -'@jpmorganchase/mosaic-core': patch -'@jpmorganchase/mosaic-from-http-request': patch -'@jpmorganchase/mosaic-schemas': patch -'@jpmorganchase/mosaic-site': patch -'@jpmorganchase/mosaic-source-git-repo': patch -'@jpmorganchase/mosaic-source-http': patch -'@jpmorganchase/mosaic-types': patch ---- - -Feature: Source Schedules - -Sources that pull content from a remote source, need to poll the source to ensure that any updates are pulled into the mosaic filesystem. - -Source Schedules provide the ability to specify a global schedule that is applied to all sources, but with the ability to override this for individual sources. - -A schedule is defined as: - -```json - schedule: { - checkIntervalMins: 0.2, - initialDelayMs: 2000 - }, -``` - -Add the above to the root of a mosaic config file to set up a "global" schedule or to a specific source definition to set up a schedule for that source. - -The remote sources listed below have been updated to ensure compatibility with source schedules: - -- @jpmorganchase/mosaic-source-git-repo -- @jpmorganchase/mosaic-source-http diff --git a/.changeset/selfish-waves-appear.md b/.changeset/selfish-waves-appear.md deleted file mode 100644 index 6ed80d780..000000000 --- a/.changeset/selfish-waves-appear.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -'@jpmorganchase/mosaic-cli': patch -'@jpmorganchase/mosaic-core': patch -'@jpmorganchase/mosaic-plugins': patch -'@jpmorganchase/mosaic-types': patch ---- - -## Feature - -Any exception raised by plugins during any part of the plugin lifecycle are converted to instances of PluginError and tracked by the source that is running the plugins. This means plugin errors do not cause the source to close and content will continue to be served by Mosaic. - -Plugin authors should be encouraged to throw a `PluginError` as should an error occur when processing a particular page, then the full path to the page can be included in the error descriptor. - -Plugin errors are not currently surfaced to a Mosaic site but can be viewed using the list sources admin API. - -## Fix - -The `saveContent` plugin lifecycle method is removed. This concept was replaced with workflows some time ago and should have been removed then. diff --git a/.changeset/serious-suns-relate.md b/.changeset/serious-suns-relate.md deleted file mode 100644 index 1b5b67ce3..000000000 --- a/.changeset/serious-suns-relate.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -'@jpmorganchase/mosaic-site': patch -'@jpmorganchase/mosaic-workflows': patch ---- - -Fix Bitbucket Pull Request Workflow - -Create a new repo instance every time the workflow is triggered to prevent the wrong source being used to raise the PR. diff --git a/.changeset/sharp-steaks-judge.md b/.changeset/sharp-steaks-judge.md deleted file mode 100644 index 91fa34b19..000000000 --- a/.changeset/sharp-steaks-judge.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -'@jpmorganchase/mosaic-plugins': minor -'@jpmorganchase/mosaic-site': minor ---- - -Adds a a plugin that generates a component props table given a file path e.g. :propsTable{src="../../packages/core/src/button/Button.tsx"} - -It will allow users to embed the table within their mdx pages. diff --git a/.changeset/shiny-keys-kick.md b/.changeset/shiny-keys-kick.md deleted file mode 100644 index 62cf0691a..000000000 --- a/.changeset/shiny-keys-kick.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -'@jpmorganchase/mosaic-layouts': patch -'@jpmorganchase/mosaic-site': patch -'@jpmorganchase/mosaic-site-components': patch ---- - -Design fixes: - -- App Header spacing and responsive behavior -- Spacing of Tabs in `Tabs` component -- `Link` component external link icon size -- `TileContent` label styling -- Restore icons to `FilterToolbar` sort and filter dropdowns - -Fixes: - -- Sidebar fixed so that it works inside the drawer on smaller screen sizes -- `$RefPlugin` will merge page metadata but only after refs have been expanded diff --git a/.changeset/shiny-planes-deliver.md b/.changeset/shiny-planes-deliver.md deleted file mode 100644 index 4330d7648..000000000 --- a/.changeset/shiny-planes-deliver.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@jpmorganchase/mosaic-plugins': patch -'@jpmorganchase/mosaic-site': patch ---- - -Fix `$RefPlugin` circular ref error when content updates diff --git a/.changeset/shiny-worms-speak.md b/.changeset/shiny-worms-speak.md deleted file mode 100644 index 54e0fa8c2..000000000 --- a/.changeset/shiny-worms-speak.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -'@jpmorganchase/mosaic-cli': patch -'@jpmorganchase/mosaic-core': patch -'@jpmorganchase/mosaic-site': patch ---- - -### Feat - -Add admin API to retrieve the entire mosaic filesystem as JSON - -### Fix - -Ensure that the pages from a restarted source are added to the global filesystem diff --git a/.changeset/short-taxis-doubt.md b/.changeset/short-taxis-doubt.md deleted file mode 100644 index b0678c02c..000000000 --- a/.changeset/short-taxis-doubt.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -'@jpmorganchase/mosaic-components': patch -'@jpmorganchase/mosaic-labs-components': patch -'@jpmorganchase/mosaic-content-editor-plugin': patch -'@jpmorganchase/mosaic-layouts': patch -'@jpmorganchase/mosaic-open-api-component': patch -'@jpmorganchase/mosaic-site': patch -'@jpmorganchase/mosaic-site-components': patch -'@jpmorganchase/mosaic-site-middleware': patch -'@jpmorganchase/mosaic-site-preset-styles': patch -'@jpmorganchase/mosaic-standard-generator': patch -'@jpmorganchase/mosaic-store': patch -'@jpmorganchase/mosaic-theme': patch ---- - -initial work to enable generators to run outside of the repo diff --git a/.changeset/shy-otters-fry.md b/.changeset/shy-otters-fry.md deleted file mode 100644 index 0b27380db..000000000 --- a/.changeset/shy-otters-fry.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -'@jpmorganchase/mosaic-cli': patch -'@jpmorganchase/mosaic-components': patch -'@jpmorganchase/mosaic-content-editor-plugin': patch -'@jpmorganchase/mosaic-core': patch -'@jpmorganchase/mosaic-create-site': patch -'@jpmorganchase/mosaic-layouts': patch -'@jpmorganchase/mosaic-open-api-component': patch -'@jpmorganchase/mosaic-plugins': patch -'@jpmorganchase/mosaic-schemas': patch -'@jpmorganchase/mosaic-serialisers': patch -'@jpmorganchase/mosaic-site-components': patch -'@jpmorganchase/mosaic-site-middleware': patch -'@jpmorganchase/mosaic-site-preset-styles': patch -'@jpmorganchase/mosaic-source-git-repo': patch -'@jpmorganchase/mosaic-source-local-folder': patch -'@jpmorganchase/mosaic-standard-generator': patch -'@jpmorganchase/mosaic-store': patch -'@jpmorganchase/mosaic-theme': patch -'@jpmorganchase/mosaic-types': patch -'@jpmorganchase/mosaic-workflows': patch ---- - -Converted repo to ESM and Salt DS nomenclature - -- Switch UITK nomenclature to Salt DS - Upgraded to first stable version of Salt DS version 1.0.0 -- CommonJS code switched to ESM and upgraded to Node 16 -- Removed example-nextjs-ssr package as un-required, can be replaced by documentation -- Sites can now generate immutable snapshots of content that loads content like a SGS (statically generated site) - Snapshots can be used as a serverless solution when deployed to Vercel. -- New Middleware package `@jpmorganchase/mosaic-site-middleware` diff --git a/.changeset/silent-monkeys-notice.md b/.changeset/silent-monkeys-notice.md deleted file mode 100644 index eec89320b..000000000 --- a/.changeset/silent-monkeys-notice.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -'@jpmorganchase/mosaic-store': patch -'@jpmorganchase/mosaic-theme': patch -'@jpmorganchase/mosaic-workflows': patch -'@jpmorganchase/mosaic-cli': patch -'@jpmorganchase/mosaic-components': patch -'@jpmorganchase/mosaic-labs-components': patch -'@jpmorganchase/mosaic-content-editor-plugin': patch -'@jpmorganchase/mosaic-core': patch -'@jpmorganchase/mosaic-create-site': patch -'@jpmorganchase/mosaic-from-http-request': patch -'@jpmorganchase/mosaic-layouts': patch -'@jpmorganchase/mosaic-open-api-component': patch -'@jpmorganchase/mosaic-plugins': patch -'@jpmorganchase/mosaic-schemas': patch -'@jpmorganchase/mosaic-serialisers': patch -'@jpmorganchase/mosaic-site': patch -'@jpmorganchase/mosaic-site-components': patch -'@jpmorganchase/mosaic-site-middleware': patch -'@jpmorganchase/mosaic-site-preset-styles': patch -'@jpmorganchase/mosaic-source-git-repo': patch -'@jpmorganchase/mosaic-source-http': patch -'@jpmorganchase/mosaic-source-local-folder': patch -'@jpmorganchase/mosaic-source-storybook': patch -'@jpmorganchase/mosaic-standard-generator': patch -'@jpmorganchase/mosaic-types': patch ---- - -Add catch-all default exports for - -- `@jpmorganchase/mosaic-store` -- `@jpmorganchase/mosaic-theme` -- `@jpmorganchase/mosaic-workflows` - -This resolves an issue when running tests from an external repo which depends on these packages diff --git a/.changeset/silver-months-visit.md b/.changeset/silver-months-visit.md deleted file mode 100644 index 5a10c959f..000000000 --- a/.changeset/silver-months-visit.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@jpmorganchase/mosaic-plugins': patch ---- - -## Feature - -The SharedConfigPlugin will now merge shared config values. diff --git a/.changeset/silver-seas-applaud.md b/.changeset/silver-seas-applaud.md deleted file mode 100644 index d4713f756..000000000 --- a/.changeset/silver-seas-applaud.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -'@jpmorganchase/mosaic-theme': minor -'@jpmorganchase/mosaic-cli': minor -'@jpmorganchase/mosaic-core': minor -'@jpmorganchase/mosaic-plugins': minor -'@jpmorganchase/mosaic-schemas': minor -'@jpmorganchase/mosaic-serialisers': minor -'@jpmorganchase/mosaic-source-git-repo': minor -'@jpmorganchase/mosaic-source-local-folder': minor -'@jpmorganchase/mosaic-types': minor -'@jpmorganchase/mosaic-workflows': minor ---- - -Initial release of theme and client side search - -We are iterating towards deploying our site code. - -This release includes - -- initial work for client-side search support -- Mosaic theme. diff --git a/.changeset/slow-doors-deny.md b/.changeset/slow-doors-deny.md deleted file mode 100644 index 68bb5ddc6..000000000 --- a/.changeset/slow-doors-deny.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -'@jpmorganchase/mosaic-cli': patch -'@jpmorganchase/mosaic-components': patch -'@jpmorganchase/mosaic-labs-components': patch -'@jpmorganchase/mosaic-content-editor-plugin': patch -'@jpmorganchase/mosaic-core': patch -'@jpmorganchase/mosaic-create-site': patch -'@jpmorganchase/mosaic-layouts': patch -'@jpmorganchase/mosaic-open-api-component': patch -'@jpmorganchase/mosaic-plugins': patch -'@jpmorganchase/mosaic-schemas': patch -'@jpmorganchase/mosaic-serialisers': patch -'@jpmorganchase/mosaic-site': patch -'@jpmorganchase/mosaic-site-components': patch -'@jpmorganchase/mosaic-site-middleware': patch -'@jpmorganchase/mosaic-site-preset-styles': patch -'@jpmorganchase/mosaic-source-git-repo': patch -'@jpmorganchase/mosaic-source-local-folder': patch -'@jpmorganchase/mosaic-standard-generator': patch -'@jpmorganchase/mosaic-store': patch -'@jpmorganchase/mosaic-theme': patch -'@jpmorganchase/mosaic-types': patch -'@jpmorganchase/mosaic-workflows': patch ---- - -incremental improvements - -- move colormode into store -- ensure breadcrumbs and sidebar data is only added to frontmatter for pages which use a layout that has breadcrumbs or a sidebar -- improve changeset so it can work standalone without a monorepo -- resolev json5 vulnerability diff --git a/.changeset/small-elephants-fly.md b/.changeset/small-elephants-fly.md deleted file mode 100644 index 3128ed8b6..000000000 --- a/.changeset/small-elephants-fly.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -'@jpmorganchase/mosaic-create-site': patch -'@jpmorganchase/mosaic-site': patch -'@jpmorganchase/mosaic-standard-generator': patch -'@jpmorganchase/mosaic-cli': patch -'@jpmorganchase/mosaic-components': patch -'@jpmorganchase/mosaic-labs-components': patch -'@jpmorganchase/mosaic-content-editor-plugin': patch -'@jpmorganchase/mosaic-core': patch -'@jpmorganchase/mosaic-from-http-request': patch -'@jpmorganchase/mosaic-layouts': patch -'@jpmorganchase/mosaic-open-api-component': patch -'@jpmorganchase/mosaic-plugins': patch -'@jpmorganchase/mosaic-schemas': patch -'@jpmorganchase/mosaic-serialisers': patch -'@jpmorganchase/mosaic-site-components': patch -'@jpmorganchase/mosaic-site-middleware': patch -'@jpmorganchase/mosaic-site-preset-styles': patch -'@jpmorganchase/mosaic-source-git-repo': patch -'@jpmorganchase/mosaic-source-http': patch -'@jpmorganchase/mosaic-source-local-folder': patch -'@jpmorganchase/mosaic-store': patch -'@jpmorganchase/mosaic-theme': patch -'@jpmorganchase/mosaic-types': patch -'@jpmorganchase/mosaic-workflows': patch ---- - -Update docs with quick-start guide - -Sample docs now include a 'quick-start' guide to onboarding to AWS. - -Also - -- generator default directory is the current directory -- after generating a site, it will run `yarn` in the created directory. This simplifies the generator call to just `yarn mosaic-create-site` diff --git a/.changeset/small-hotels-retire.md b/.changeset/small-hotels-retire.md deleted file mode 100644 index e9c9909be..000000000 --- a/.changeset/small-hotels-retire.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -'@jpmorganchase/mosaic-cli': patch -'@jpmorganchase/mosaic-components': patch -'@jpmorganchase/mosaic-labs-components': patch -'@jpmorganchase/mosaic-content-editor-plugin': patch -'@jpmorganchase/mosaic-core': patch -'@jpmorganchase/mosaic-from-http-request': patch -'@jpmorganchase/mosaic-layouts': patch -'@jpmorganchase/mosaic-open-api-component': patch -'@jpmorganchase/mosaic-plugins': patch -'@jpmorganchase/mosaic-schemas': patch -'@jpmorganchase/mosaic-serialisers': patch -'@jpmorganchase/mosaic-site': patch -'@jpmorganchase/mosaic-site-components': patch -'@jpmorganchase/mosaic-site-middleware': patch -'@jpmorganchase/mosaic-site-preset-styles': patch -'@jpmorganchase/mosaic-source-git-repo': patch -'@jpmorganchase/mosaic-source-http': patch -'@jpmorganchase/mosaic-source-local-folder': patch -'@jpmorganchase/mosaic-standard-generator': patch -'@jpmorganchase/mosaic-store': patch -'@jpmorganchase/mosaic-theme': patch -'@jpmorganchase/mosaic-types': patch -'@jpmorganchase/mosaic-workflows': patch ---- - -pip to beta.20 diff --git a/.changeset/smart-hounds-cheat.md b/.changeset/smart-hounds-cheat.md deleted file mode 100644 index 9e1419741..000000000 --- a/.changeset/smart-hounds-cheat.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@jpmorganchase/mosaic-create-site': patch ---- - -Fix `mosaic-create-site` not working on Windows diff --git a/.changeset/smooth-cats-promise.md b/.changeset/smooth-cats-promise.md deleted file mode 100644 index 5521fbae3..000000000 --- a/.changeset/smooth-cats-promise.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -'@jpmorganchase/mosaic-source-storybook': patch -'@jpmorganchase/mosaic-cli': patch -'@jpmorganchase/mosaic-components': patch -'@jpmorganchase/mosaic-labs-components': patch -'@jpmorganchase/mosaic-content-editor-plugin': patch -'@jpmorganchase/mosaic-core': patch -'@jpmorganchase/mosaic-create-site': patch -'@jpmorganchase/mosaic-from-http-request': patch -'@jpmorganchase/mosaic-layouts': patch -'@jpmorganchase/mosaic-open-api-component': patch -'@jpmorganchase/mosaic-plugins': patch -'@jpmorganchase/mosaic-schemas': patch -'@jpmorganchase/mosaic-serialisers': patch -'@jpmorganchase/mosaic-site': patch -'@jpmorganchase/mosaic-site-components': patch -'@jpmorganchase/mosaic-site-middleware': patch -'@jpmorganchase/mosaic-site-preset-styles': patch -'@jpmorganchase/mosaic-source-git-repo': patch -'@jpmorganchase/mosaic-source-http': patch -'@jpmorganchase/mosaic-source-local-folder': patch -'@jpmorganchase/mosaic-standard-generator': patch -'@jpmorganchase/mosaic-store': patch -'@jpmorganchase/mosaic-theme': patch -'@jpmorganchase/mosaic-types': patch -'@jpmorganchase/mosaic-workflows': patch ---- - -Add new Storybook source - -Storybook stories can be extracted from Storybook and embedded into Mosaic pages. - -The stories are extracted based on a configured filter or matching tags. - -With a page created for each Story, the author can create a dynamic index of matching stories. - -eg. An index of patterns which match a specific tag diff --git a/.changeset/smooth-tables-build.md b/.changeset/smooth-tables-build.md deleted file mode 100644 index 02cefdb32..000000000 --- a/.changeset/smooth-tables-build.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -'@jpmorganchase/mosaic-layouts': patch -'@jpmorganchase/mosaic-site': patch ---- - -## Feature - -Provide the ability to set the default page layout at the root of a Mosaic site. Pages without a layout in their metadata will use this layout. - -``` - - - -``` diff --git a/.changeset/soft-mirrors-kiss.md b/.changeset/soft-mirrors-kiss.md deleted file mode 100644 index f81bba74f..000000000 --- a/.changeset/soft-mirrors-kiss.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -'@jpmorganchase/mosaic-core': patch -'@jpmorganchase/mosaic-schemas': patch -'@jpmorganchase/mosaic-site': patch ---- - -## Feature: Source Retries - -The source retries feature gracefully handles re-requesting content from a source that has thrown an error. Retries follow an exponential back-off strategy and will eventually rethrow the error when all retry attempts have been exhausted. - -The retry configuration is specified as part of the source schedule e.g. - -``` - schedule: { - checkIntervalMins: 0.2, - initialDelayMs: 2000, - retryDelayMins: 5, - maxRetries: 30, - retryEnabled: true - }, -``` diff --git a/.changeset/sour-trainers-talk.md b/.changeset/sour-trainers-talk.md deleted file mode 100644 index 6990db33f..000000000 --- a/.changeset/sour-trainers-talk.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -'@jpmorganchase/mosaic-cli': patch -'@jpmorganchase/mosaic-components': patch -'@jpmorganchase/mosaic-labs-components': patch -'@jpmorganchase/mosaic-content-editor-plugin': patch -'@jpmorganchase/mosaic-core': patch -'@jpmorganchase/mosaic-create-site': patch -'@jpmorganchase/mosaic-from-http-request': patch -'@jpmorganchase/mosaic-layouts': patch -'@jpmorganchase/mosaic-open-api-component': patch -'@jpmorganchase/mosaic-plugins': patch -'@jpmorganchase/mosaic-schemas': patch -'@jpmorganchase/mosaic-serialisers': patch -'@jpmorganchase/mosaic-site': patch -'@jpmorganchase/mosaic-site-components': patch -'@jpmorganchase/mosaic-site-middleware': patch -'@jpmorganchase/mosaic-site-preset-styles': patch -'@jpmorganchase/mosaic-source-figma': patch -'@jpmorganchase/mosaic-source-git-repo': patch -'@jpmorganchase/mosaic-source-http': patch -'@jpmorganchase/mosaic-source-local-folder': patch -'@jpmorganchase/mosaic-source-readme': patch -'@jpmorganchase/mosaic-source-storybook': patch -'@jpmorganchase/mosaic-standard-generator': patch -'@jpmorganchase/mosaic-store': patch -'@jpmorganchase/mosaic-theme': patch -'@jpmorganchase/mosaic-types': patch -'@jpmorganchase/mosaic-workflows': patch ---- - -add `pluginTimeout` (20 secs) to fastify to prevent loading timeout diff --git a/.changeset/spicy-hotels-type.md b/.changeset/spicy-hotels-type.md deleted file mode 100644 index 132a4dc11..000000000 --- a/.changeset/spicy-hotels-type.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -'@jpmorganchase/mosaic-components': patch -'@jpmorganchase/mosaic-labs-components': patch -'@jpmorganchase/mosaic-content-editor-plugin': patch -'@jpmorganchase/mosaic-layouts': patch -'@jpmorganchase/mosaic-site-components': patch -'@jpmorganchase/mosaic-site-preset-styles': patch -'@jpmorganchase/mosaic-theme': patch ---- - -Upgrade to latest Salt libraries diff --git a/.changeset/spicy-kiwis-sing.md b/.changeset/spicy-kiwis-sing.md deleted file mode 100644 index a7914a000..000000000 --- a/.changeset/spicy-kiwis-sing.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -'@jpmorganchase/mosaic-site': patch -'@jpmorganchase/mosaic-site-components': patch -'@jpmorganchase/mosaic-site-middleware': patch -'@jpmorganchase/mosaic-standard-generator': patch -'@jpmorganchase/mosaic-types': patch ---- - -- Upgrade `next-auth` version -- Update `withSession` mosaic middleware to use `next-auth` diff --git a/.changeset/spotty-mice-share.md b/.changeset/spotty-mice-share.md deleted file mode 100644 index 09e047adb..000000000 --- a/.changeset/spotty-mice-share.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -'@jpmorganchase/mosaic-cli': patch -'@jpmorganchase/mosaic-plugins': patch -'@jpmorganchase/mosaic-schemas': patch ---- - -### Feat - -`enableSourcePush` is now a property of the Mosaic Config file. This functionality was previously configured using an environment variable `process.env.MOSAIC_ENABLE_SOURCE_PUSH` - -### Fix - -The Admin API that returned the Mosaic config file now strips credentials from git reo sources - -### Refactor - -Fastify is now used as the web server powering the `serve` functionality of the Mosaic CLI. diff --git a/.changeset/strong-buttons-shave.md b/.changeset/strong-buttons-shave.md deleted file mode 100644 index 45d74b371..000000000 --- a/.changeset/strong-buttons-shave.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -'@jpmorganchase/mosaic-source-git-repo': patch -'@jpmorganchase/mosaic-cli': patch -'@jpmorganchase/mosaic-components': patch -'@jpmorganchase/mosaic-labs-components': patch -'@jpmorganchase/mosaic-content-editor-plugin': patch -'@jpmorganchase/mosaic-core': patch -'@jpmorganchase/mosaic-create-site': patch -'@jpmorganchase/mosaic-from-http-request': patch -'@jpmorganchase/mosaic-layouts': patch -'@jpmorganchase/mosaic-open-api-component': patch -'@jpmorganchase/mosaic-plugins': patch -'@jpmorganchase/mosaic-schemas': patch -'@jpmorganchase/mosaic-serialisers': patch -'@jpmorganchase/mosaic-site': patch -'@jpmorganchase/mosaic-site-components': patch -'@jpmorganchase/mosaic-site-middleware': patch -'@jpmorganchase/mosaic-site-preset-styles': patch -'@jpmorganchase/mosaic-source-http': patch -'@jpmorganchase/mosaic-source-local-folder': patch -'@jpmorganchase/mosaic-standard-generator': patch -'@jpmorganchase/mosaic-store': patch -'@jpmorganchase/mosaic-theme': patch -'@jpmorganchase/mosaic-types': patch -'@jpmorganchase/mosaic-workflows': patch ---- - -The git repo source no longer generates a double slash between the repo host and repo path. diff --git a/.changeset/sweet-eggs-dress.md b/.changeset/sweet-eggs-dress.md deleted file mode 100644 index 4c6730e72..000000000 --- a/.changeset/sweet-eggs-dress.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -'@jpmorganchase/mosaic-cli': patch -'@jpmorganchase/mosaic-schemas': patch -'@jpmorganchase/mosaic-site': patch -'@jpmorganchase/mosaic-standard-generator': patch -'@jpmorganchase/mosaic-components': patch -'@jpmorganchase/mosaic-labs-components': patch -'@jpmorganchase/mosaic-content-editor-plugin': patch -'@jpmorganchase/mosaic-core': patch -'@jpmorganchase/mosaic-create-site': patch -'@jpmorganchase/mosaic-from-http-request': patch -'@jpmorganchase/mosaic-layouts': patch -'@jpmorganchase/mosaic-open-api-component': patch -'@jpmorganchase/mosaic-plugins': patch -'@jpmorganchase/mosaic-serialisers': patch -'@jpmorganchase/mosaic-site-components': patch -'@jpmorganchase/mosaic-site-middleware': patch -'@jpmorganchase/mosaic-site-preset-styles': patch -'@jpmorganchase/mosaic-source-git-repo': patch -'@jpmorganchase/mosaic-source-http': patch -'@jpmorganchase/mosaic-source-local-folder': patch -'@jpmorganchase/mosaic-store': patch -'@jpmorganchase/mosaic-theme': patch -'@jpmorganchase/mosaic-types': patch -'@jpmorganchase/mosaic-workflows': patch ---- - -Improvements to vercel deployments diff --git a/.changeset/tall-avocados-repeat.md b/.changeset/tall-avocados-repeat.md deleted file mode 100644 index a5bd8bd2d..000000000 --- a/.changeset/tall-avocados-repeat.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -'@jpmorganchase/mosaic-core': patch -'@jpmorganchase/mosaic-plugins': patch -'@jpmorganchase/mosaic-types': patch ---- - -### Feature - -Add new plugin lifecycle method `shouldUpdateNamespaceSources`. - -This method is called when a source emits new pages and there is another source(s) that share the same namespace. - -If `shouldUpdateNamespaceSources` returns `true` then the other source(s), i.e., not the source that triggered the initial update, will call `afterUpdate` again. diff --git a/.changeset/tall-otters-scream.md b/.changeset/tall-otters-scream.md deleted file mode 100644 index ef803630d..000000000 --- a/.changeset/tall-otters-scream.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -'@jpmorganchase/mosaic-plugins': patch -'@jpmorganchase/mosaic-site': patch -'@jpmorganchase/mosaic-types': patch ---- - -### Fixes - -- Fix types of `IUnionVolume` so that the `promises` property is correct - -- Fix Breadcrumb generation so that the global filesystem is used to identify the full breadcrumbs path. diff --git a/.changeset/tall-pots-rule.md b/.changeset/tall-pots-rule.md deleted file mode 100644 index 62b3c9f41..000000000 --- a/.changeset/tall-pots-rule.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -'@jpmorganchase/mosaic-components': minor -'@jpmorganchase/mosaic-cli': minor -'@jpmorganchase/mosaic-core': minor -'@jpmorganchase/mosaic-plugins': minor -'@jpmorganchase/mosaic-schemas': minor -'@jpmorganchase/mosaic-serialisers': minor -'@jpmorganchase/mosaic-source-git-repo': minor -'@jpmorganchase/mosaic-source-local-folder': minor -'@jpmorganchase/mosaic-store': minor -'@jpmorganchase/mosaic-theme': minor -'@jpmorganchase/mosaic-types': minor -'@jpmorganchase/mosaic-workflows': minor ---- - -initial components package - -- added JSDOM testing diff --git a/.changeset/tame-laws-pretend.md b/.changeset/tame-laws-pretend.md deleted file mode 100644 index 424adff88..000000000 --- a/.changeset/tame-laws-pretend.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@jpmorganchase/mosaic-source-git-repo': patch ---- - -Fixed git repository source refresh - -Use the remote when trying to identify latest repo commit and use the remote when resetting the cloned repository. diff --git a/.changeset/tasty-pillows-tickle.md b/.changeset/tasty-pillows-tickle.md deleted file mode 100644 index 51f64fab2..000000000 --- a/.changeset/tasty-pillows-tickle.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -'@jpmorganchase/mosaic-create-site': patch -'@jpmorganchase/mosaic-standard-generator': patch -'@jpmorganchase/mosaic-cli': patch -'@jpmorganchase/mosaic-components': patch -'@jpmorganchase/mosaic-content-editor-plugin': patch -'@jpmorganchase/mosaic-core': patch -'@jpmorganchase/mosaic-layouts': patch -'@jpmorganchase/mosaic-open-api-component': patch -'@jpmorganchase/mosaic-plugins': patch -'@jpmorganchase/mosaic-schemas': patch -'@jpmorganchase/mosaic-serialisers': patch -'@jpmorganchase/mosaic-site': patch -'@jpmorganchase/mosaic-site-components': patch -'@jpmorganchase/mosaic-site-middleware': patch -'@jpmorganchase/mosaic-site-preset-styles': patch -'@jpmorganchase/mosaic-source-git-repo': patch -'@jpmorganchase/mosaic-source-local-folder': patch -'@jpmorganchase/mosaic-store': patch -'@jpmorganchase/mosaic-theme': patch -'@jpmorganchase/mosaic-types': patch -'@jpmorganchase/mosaic-workflows': patch ---- - -Generators can now interactively add sources - -Previously we were making local edits to our own site or examples to implement new features. -What we wanted was the ability to create a local rig, A local rig can be used for development purposes, -without touching our site code. - -We have added Mosaic repo commands, to enable us to generates local rigs (`yarn gen:rig`) and deploy our own -tech docs via snapshot (`yarn gen`) - -To generate a site+snapshot from sources defined in `mosaic-generators.js`, run `yarn gen` -To generate a dynamic site from sources defined in `mosaic-generators.js`, run `yarn gen:site` -To generate a rig `yarn gen:rig` - -Equally these changes can be used to generate sites in other repos via the `mosaic-create-site` command. - -`yarn mosaic-create-site init` will create a `mosaic.generators.js`. - -Configure the `mosaic.generators.js` with your generator and sources, then run. - -`yarn mosaic-create-site create -i -o path/to/my-site` - -When this command is run, it will present an interactive menu of generators and output the site to `path/to/my-site`. diff --git a/.changeset/thin-phones-travel.md b/.changeset/thin-phones-travel.md deleted file mode 100644 index 087513efe..000000000 --- a/.changeset/thin-phones-travel.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -'@jpmorganchase/mosaic-from-http-request': patch -'@jpmorganchase/mosaic-source-http': patch -'@jpmorganchase/mosaic-cli': patch -'@jpmorganchase/mosaic-components': patch -'@jpmorganchase/mosaic-labs-components': patch -'@jpmorganchase/mosaic-content-editor-plugin': patch -'@jpmorganchase/mosaic-core': patch -'@jpmorganchase/mosaic-create-site': patch -'@jpmorganchase/mosaic-layouts': patch -'@jpmorganchase/mosaic-open-api-component': patch -'@jpmorganchase/mosaic-plugins': patch -'@jpmorganchase/mosaic-schemas': patch -'@jpmorganchase/mosaic-serialisers': patch -'@jpmorganchase/mosaic-site-components': patch -'@jpmorganchase/mosaic-site-middleware': patch -'@jpmorganchase/mosaic-site-preset-styles': patch -'@jpmorganchase/mosaic-source-git-repo': patch -'@jpmorganchase/mosaic-source-local-folder': patch -'@jpmorganchase/mosaic-standard-generator': patch -'@jpmorganchase/mosaic-store': patch -'@jpmorganchase/mosaic-theme': patch -'@jpmorganchase/mosaic-types': patch -'@jpmorganchase/mosaic-workflows': patch ---- - -initial release of HTTP Source package. - -An HTTP source accepts a collection of endpoints and a path to a transformer module. -The response from fetching is transformed and merged together into 1 single collection of pages. -Should 1 of the endpoints request fail then it will have no impact on the other requests. diff --git a/.changeset/tiny-humans-exist.md b/.changeset/tiny-humans-exist.md deleted file mode 100644 index 08b3dc780..000000000 --- a/.changeset/tiny-humans-exist.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@jpmorganchase/mosaic-layouts': patch ---- - -The logic for showing a spinner has been simplified and should be more consistent. diff --git a/.changeset/warm-bulldogs-deny.md b/.changeset/warm-bulldogs-deny.md deleted file mode 100644 index bf61862d4..000000000 --- a/.changeset/warm-bulldogs-deny.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -'@jpmorganchase/mosaic-components': patch -'@jpmorganchase/mosaic-site': patch -'@jpmorganchase/mosaic-theme': patch ---- - -## Fixes - -Ensure that inline code blocks are styled according to design language diff --git a/.changeset/wet-goats-love.md b/.changeset/wet-goats-love.md deleted file mode 100644 index 74bd8d904..000000000 --- a/.changeset/wet-goats-love.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@jpmorganchase/mosaic-plugins': patch ---- - -Fix: the `remarkMdx` plugin wasn't applied inside the Mosaic `FragmentPlugin` and `PropsTablePlugin` causing incorrect parsing of complex React components included in page content. diff --git a/.changeset/wicked-horses-carry.md b/.changeset/wicked-horses-carry.md deleted file mode 100644 index 8a024c1fa..000000000 --- a/.changeset/wicked-horses-carry.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@jpmorganchase/mosaic-plugins': minor ---- - -Add path resolve in order for component path to be correct regardless of the plugin location diff --git a/.changeset/wild-baboons-prove.md b/.changeset/wild-baboons-prove.md deleted file mode 100644 index 03c82d23b..000000000 --- a/.changeset/wild-baboons-prove.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -'@jpmorganchase/mosaic-layouts': patch -'@jpmorganchase/mosaic-cli': patch -'@jpmorganchase/mosaic-components': patch -'@jpmorganchase/mosaic-labs-components': patch -'@jpmorganchase/mosaic-content-editor-plugin': patch -'@jpmorganchase/mosaic-core': patch -'@jpmorganchase/mosaic-create-site': patch -'@jpmorganchase/mosaic-from-http-request': patch -'@jpmorganchase/mosaic-open-api-component': patch -'@jpmorganchase/mosaic-plugins': patch -'@jpmorganchase/mosaic-schemas': patch -'@jpmorganchase/mosaic-serialisers': patch -'@jpmorganchase/mosaic-site': patch -'@jpmorganchase/mosaic-site-components': patch -'@jpmorganchase/mosaic-site-middleware': patch -'@jpmorganchase/mosaic-site-preset-styles': patch -'@jpmorganchase/mosaic-source-git-repo': patch -'@jpmorganchase/mosaic-source-http': patch -'@jpmorganchase/mosaic-source-local-folder': patch -'@jpmorganchase/mosaic-standard-generator': patch -'@jpmorganchase/mosaic-store': patch -'@jpmorganchase/mosaic-theme': patch -'@jpmorganchase/mosaic-types': patch -'@jpmorganchase/mosaic-workflows': patch ---- - -ensure spinner is removed after page has loaded diff --git a/.changeset/wise-adults-swim.md b/.changeset/wise-adults-swim.md deleted file mode 100644 index dd3ae5409..000000000 --- a/.changeset/wise-adults-swim.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -'@jpmorganchase/mosaic-site': patch -'@jpmorganchase/mosaic-standard-generator': patch -'@jpmorganchase/mosaic-cli': patch -'@jpmorganchase/mosaic-components': patch -'@jpmorganchase/mosaic-labs-components': patch -'@jpmorganchase/mosaic-content-editor-plugin': patch -'@jpmorganchase/mosaic-core': patch -'@jpmorganchase/mosaic-create-site': patch -'@jpmorganchase/mosaic-from-http-request': patch -'@jpmorganchase/mosaic-layouts': patch -'@jpmorganchase/mosaic-open-api-component': patch -'@jpmorganchase/mosaic-plugins': patch -'@jpmorganchase/mosaic-schemas': patch -'@jpmorganchase/mosaic-serialisers': patch -'@jpmorganchase/mosaic-site-components': patch -'@jpmorganchase/mosaic-site-middleware': patch -'@jpmorganchase/mosaic-site-preset-styles': patch -'@jpmorganchase/mosaic-source-git-repo': patch -'@jpmorganchase/mosaic-source-http': patch -'@jpmorganchase/mosaic-source-local-folder': patch -'@jpmorganchase/mosaic-store': patch -'@jpmorganchase/mosaic-theme': patch -'@jpmorganchase/mosaic-types': patch -'@jpmorganchase/mosaic-workflows': patch ---- - -add missing `@types/node` dependency for generator diff --git a/.changeset/wise-apricots-report.md b/.changeset/wise-apricots-report.md deleted file mode 100644 index b4dcce92c..000000000 --- a/.changeset/wise-apricots-report.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -'@jpmorganchase/mosaic-store': minor -'@jpmorganchase/mosaic-cli': minor -'@jpmorganchase/mosaic-core': minor -'@jpmorganchase/mosaic-plugins': minor -'@jpmorganchase/mosaic-schemas': minor -'@jpmorganchase/mosaic-serialisers': minor -'@jpmorganchase/mosaic-source-git-repo': minor -'@jpmorganchase/mosaic-source-local-folder': minor -'@jpmorganchase/mosaic-theme': minor -'@jpmorganchase/mosaic-types': minor -'@jpmorganchase/mosaic-workflows': minor ---- - -initial release of Mosaic store package diff --git a/.changeset/young-tables-fix.md b/.changeset/young-tables-fix.md deleted file mode 100644 index 50fa405a4..000000000 --- a/.changeset/young-tables-fix.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@jpmorganchase/mosaic-plugins': minor -'@jpmorganchase/mosaic-site': minor -'@jpmorganchase/mosaic-standard-generator': minor ---- - -Enable reading of environment variables in config files diff --git a/.eslintrc.js b/.eslintrc.js index f76c4c0eb..38dcb30a2 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,5 +1,11 @@ module.exports = { - extends: ['airbnb', 'airbnb-typescript', 'plugin:eslint-comments/recommended', 'prettier'], + extends: [ + 'airbnb', + 'airbnb-typescript', + 'plugin:eslint-comments/recommended', + 'prettier', + 'plugin:react-hooks/recommended' + ], parserOptions: { project: ['./tsconfig.json'] }, @@ -16,11 +22,13 @@ module.exports = { 'max-classes-per-file': 'off', 'import/prefer-default-export': 'off', 'react/function-component-definition': 'off', - 'react/require-default-props': 'off' + 'react/require-default-props': 'off', + 'react/react-in-jsx-scope': 'off', + 'react/jsx-props-no-spreading': 'off' }, overrides: [ { - files: ['**/*.ts', 'packages/*/src/**/*.tsx', 'packages/site/newsletters/**/*.tsx'], + files: ['**/*.ts', 'packages/*/src/**/*.tsx'], parser: '@typescript-eslint/parser', plugins: ['@typescript-eslint'], extends: ['plugin:@typescript-eslint/recommended', 'plugin:import/typescript'], @@ -32,5 +40,10 @@ module.exports = { '@typescript-eslint/lines-between-class-members': 0 } } - ] + ], + settings: { + react: { + version: 'detect' + } + } }; diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index a563ac6db..edd328adc 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -28,7 +28,7 @@ jobs: uses: actions/checkout@v3 - uses: actions/setup-node@v3.3.0 with: - node-version: '16.10.0' + node-version: '20.11.0' cache: 'yarn' - name: Install Dependencies run: yarn --frozen-lockfile diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e1eb0e583..add1709f5 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -20,7 +20,7 @@ jobs: - name: Use Node.js uses: actions/setup-node@v3.3.0 with: - node-version: '16.10.0' + node-version: '20.11.0' registry-url: https://registry.npmjs.org/ cache: 'yarn' diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 819051afd..f70f35a3d 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -18,7 +18,7 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest] - node-version: ['16.10.0'] + node-version: ['20.11.0'] steps: - uses: actions/checkout@v3 @@ -59,7 +59,7 @@ jobs: - name: Use Node.js uses: actions/setup-node@v3 with: - node-version: '16.10.0' + node-version: '20.11.0' cache: 'yarn' - name: Install Dependencies run: yarn --frozen-lockfile diff --git a/.gitignore b/.gitignore index cb4e1a210..994d90810 100644 --- a/.gitignore +++ b/.gitignore @@ -18,6 +18,7 @@ tsconfig.tsbuildinfo # Deployment packages/rig +packages/site/out # Test Results coverage diff --git a/.prettierignore b/.prettierignore index d095b5daa..e9381c67a 100644 --- a/.prettierignore +++ b/.prettierignore @@ -10,6 +10,7 @@ patches LICENSE *.png *.hbs +*.ico **/build **/dist diff --git a/__mocks__/zustand.ts b/__mocks__/zustand.ts index a5f6f9c72..3d20fb546 100644 --- a/__mocks__/zustand.ts +++ b/__mocks__/zustand.ts @@ -1,22 +1,60 @@ -const actualZustand = jest.requireActual('zustand'); +/** + * From: https://docs.pmnd.rs/zustand/guides/testing + * + * Modified to also export useStore + */ -const actualCreate = actualZustand.create; +import * as zustand from 'zustand'; +import { act } from '@testing-library/react'; -const stores = new Set(); +const { + create: actualCreate, + createStore: actualCreateStore, + useStore: actualUseStore +} = jest.requireActual('zustand'); -const create: typeof actualCreate = createState => { - const store = actualCreate(createState); +// a variable to hold reset functions for all stores declared in the app +export const storeResetFns = new Set<() => void>(); + +const createUncurried = (stateCreator: zustand.StateCreator) => { + const store = actualCreate(stateCreator); const initialState = store.getState(); - stores.add(() => store.setState(initialState, true)); + storeResetFns.add(() => { + store.setState(initialState, true); + }); + return store; +}; +// when creating a store, we get its initial state, create a reset function and add it in the set +export const create = ((stateCreator: zustand.StateCreator) => + // to support curried version of create + typeof stateCreator === 'function' + ? createUncurried(stateCreator) + : createUncurried) as typeof zustand.create; + +const createStoreUncurried = (stateCreator: zustand.StateCreator) => { + const store = actualCreateStore(stateCreator); + const initialState = store.getState(); + storeResetFns.add(() => { + store.setState(initialState, true); + }); return store; }; -// eslint-disable-next-line no-undef -afterEach(() => { - stores.forEach(resetFn => resetFn()); -}); +// when creating a store, we get its initial state, create a reset function and add it in the set +export const createStore = ((stateCreator: zustand.StateCreator) => + // to support curried version of createStore + typeof stateCreator === 'function' + ? createStoreUncurried(stateCreator) + : createStoreUncurried) as typeof zustand.createStore; -const { createStore, useStore } = actualZustand; +export { actualUseStore as useStore }; -export { create, createStore, useStore }; +// reset all stores after each test run +afterEach(() => { + act(() => { + storeResetFns.forEach(resetFn => { + resetFn(); + }); + }); +}); diff --git a/docs/author/refs.mdx b/docs/author/refs.mdx index d8ccbcd22..e6d69d9eb 100644 --- a/docs/author/refs.mdx +++ b/docs/author/refs.mdx @@ -157,6 +157,7 @@ You can use Mosaic components with referenced data as well. Below we are using t {meta.data.modes.map(mode => ( /__mocks__/file-stub.js', '@jpmorganchase/mosaic-components': '/packages/components/dist/index.js', + '@jpmorganchase/mosaic-icons': '/packages/icons/dist/index.js', '@jpmorganchase/mosaic-store': '/packages/store/dist/index.js', '@jpmorganchase/mosaic-theme': '/packages/theme/dist/index.js', '^lodash-es$': 'lodash' diff --git a/package.json b/package.json index 7655b8b01..e4d544553 100644 --- a/package.json +++ b/package.json @@ -11,9 +11,6 @@ "engines": { "node": ">=16.10.0 || >=18.0.0" }, - "bin": { - "mosaic": "yarn workspace @jpmorganchase/mosaic-cli" - }, "scripts": { "build:site": "turbo run build --filter=@jpmorganchase/mosaic-site", "build": "turbo run build", @@ -27,10 +24,10 @@ "e2e:codegen": "turbo run e2e:codegen --filter=@jpmorganchase/mosaic-site", "e2e:setup": "npx playwright install", "e2e": "turbo run e2e --filter=@jpmorganchase/mosaic-site", + "export:static": "turbo run export:static --filter=@jpmorganchase/mosaic-site", "gen:rig": "turbo run create:rig copy:rig:images --filter=//", "gen:site": "turbo run create:site copy:site:images --filter=//", - "gen:snapshot": "turbo run gen:snapshot --filter=@jpmorganchase/mosaic-site", - "gen": "turbo run gen:site gen:snapshot --filter=//", + "gen": "turbo run gen:site export:static --filter=//", "lint": "turbo run lint", "mosaic": "node ./packages/cli/dist/index.js", "postinstall": "patch-package", @@ -38,9 +35,8 @@ "prettier:ci": "prettier --check .", "prettier": "prettier --write .", "serve:rig": "turbo run serve --filter=@jpmorganchase/mosaic-rig", - "serve:snapshot:file": "turbo run serve:snapshot:file --filter=@jpmorganchase/mosaic-site", - "serve:snapshot:s3": "turbo run serve:snapshot:s3 --filter=@jpmorganchase/mosaic-site", "serve": "turbo run serve --filter=@jpmorganchase/mosaic-site", + "serve:static": "turbo run serve:static --filter=@jpmorganchase/mosaic-site", "start": "turbo run start --filter=@jpmorganchase/mosaic-site", "test:client": "jest --config ./jest.config.client.js --coverage", "test:server": "jest --config ./jest.config.server.js --coverage", @@ -60,15 +56,17 @@ "@testing-library/react": "^13.4.0", "@types/jest": "^29.1.2", "@types/lodash-es": "^4.17.6", - "@types/node": "^17.0.24", - "@typescript-eslint/eslint-plugin": "5.38.0", - "@typescript-eslint/parser": "5.38.0", - "@vanilla-extract/esbuild-plugin": "^2.0.0", + "@types/node": "^18.0.0", + "@types/react": "^18.2.46", + "@types/react-dom": "^18.2.18", + "@typescript-eslint/eslint-plugin": "^6.7.4", + "@typescript-eslint/parser": "^6.7.4", + "@vanilla-extract/esbuild-plugin": "^2.3.1", "concurrently": "^7.1.0", "del-cli": "^4.0.1", - "esbuild": "0.14.35", - "esbuild-node-externals": "^1.0.2", - "eslint": "^7.23.0", + "esbuild": "^0.19.11", + "esbuild-node-externals": "^1.12.0", + "eslint": "^8.51.0", "eslint-config-airbnb": "^19.0.4", "eslint-config-airbnb-typescript": "^17.0.0", "eslint-config-prettier": "^8.5.0", @@ -77,7 +75,7 @@ "eslint-plugin-jsx-a11y": "^6.5.1", "eslint-plugin-prettier": "^4.2.1", "eslint-plugin-promise": "^6.0.1", - "eslint-plugin-react": "7.31.8", + "eslint-plugin-react": "^7.33.2", "eslint-plugin-react-hooks": "^4.3.0", "fast-glob": "^3.2.7", "husky": "^8.0.0", @@ -93,7 +91,7 @@ "regenerator-runtime": "^0.13.10", "resize-observer-polyfill": "1.5.1", "ts-node": "^9.0.0", - "typescript": "^4.8.3" + "typescript": "^5.2.2" }, "dependencies": { "@types/swagger-ui-react": "^4.18.0", @@ -102,9 +100,11 @@ }, "resolutions": { "@braintree/sanitize-url": "^6.0.0", - "@types/react": "^18.0.26", + "@types/react": "^18.2.46", + "@types/react-dom": "^18.2.18", "commander": "^9.4.0", - "json5": "^1.0.2" + "json5": "^1.0.2", + "@salt-ds/lab": "1.0.0-alpha.25" }, "lint-staged": { "*": [ diff --git a/packages/cli/package.json b/packages/cli/package.json index 5360404c1..fc3863785 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -26,7 +26,7 @@ "scripts": { "build": "npm-run-all --parallel build:*", "build:types": "tsc", - "build:cli": "node ./scripts/bundle.js", + "build:cli": "node ./scripts/bundle.mjs", "clean": "rm -fr dist", "docker:build": "docker build . --tag mosaic-fs:latest", "docker:start": "docker run -it --rm --ipc=host -p 8080:8080 --mount source=docs,destination=/app/docs --network mosaic-net --name mosaic-fs mosaic-fs:latest", @@ -39,8 +39,8 @@ }, "devDependencies": { "@jpmorganchase/mosaic-types": "^0.1.0-beta.62", - "esbuild": "0.14.35", - "esbuild-node-externals": "^1.0.2", + "esbuild": "0.19.11", + "esbuild-node-externals": "^1.12.0", "fast-glob": "^3.2.7", "@types/ws": "^8.5.7" }, @@ -52,6 +52,7 @@ "@aws-sdk/client-s3": "^3.359.0", "@fastify/middie": "^8.3.0", "@fastify/websocket": "^8.2.0", + "@fastify/static": "^6.11.2", "commander": "^9.4.1", "cors": "^2.8.5", "deepmerge": "^4.2.2", diff --git a/packages/cli/scripts/bundle.js b/packages/cli/scripts/bundle.js deleted file mode 100644 index 21c6326f4..000000000 --- a/packages/cli/scripts/bundle.js +++ /dev/null @@ -1,48 +0,0 @@ -import esbuild from 'esbuild'; -import glob from 'fast-glob'; -import { nodeExternalsPlugin } from 'esbuild-node-externals'; - -const args = process.argv.slice(2); -const watchEnabled = args[0] === 'watch'; -const packageName = process.env.npm_package_name; - -const watchConfig = watchEnabled - ? { - onRebuild(error, result) { - if (error) console.error(`watch build failed for ${packageName}:`, error); - else console.log(`watch build succeeded for ${packageName}:`, result); - } - } - : false; - -esbuild - .build({ - entryPoints: glob.sync(['src/**/*.ts?(x)', 'src/*.ts?(x)'], { - ignore: ['**/__tests__', 'src/labs'] - }), - outdir: './dist', - outExtension: { '.js': '.mjs' }, - bundle: true, - sourcemap: false, - splitting: true, - minify: true, - format: 'esm', - target: ['es2022', 'node18'], - platform: 'node', - plugins: [nodeExternalsPlugin()], - watch: watchConfig - }) - .catch(e => { - if (e.errors && e.errors.length > 0) { - console.group(`!!!!!!! ${packageName} build errors !!!!!!!`); - console.error(e.errors); - console.groupEnd(); - } - - if (e.warnings && e.warnings.length > 0) { - console.group(`!!!!!!! ${packageName} build warnings !!!!!!!`); - console.error(e.warnings); - console.groupEnd(); - } - return process.exit(1); - }); diff --git a/packages/cli/scripts/bundle.mjs b/packages/cli/scripts/bundle.mjs new file mode 100644 index 000000000..006ae7eab --- /dev/null +++ b/packages/cli/scripts/bundle.mjs @@ -0,0 +1,45 @@ +import fs from 'fs-extra'; +import glob from 'fast-glob'; +import esbuild from 'esbuild'; +import { nodeExternalsPlugin } from 'esbuild-node-externals'; + +const args = process.argv.slice(2); +const watchEnabled = args[0] === 'watch'; +const packageName = process.env.npm_package_name; + +try { + const context = await esbuild.context({ + entryPoints: glob.sync(['src/**/*.ts?(x)', 'src/*.ts?(x)'], { + ignore: ['**/__tests__', 'src/labs'] + }), + outdir: './dist', + outExtension: { '.js': '.mjs' }, + bundle: true, + sourcemap: false, + splitting: true, + minify: true, + format: 'esm', + target: ['es2022', 'node18'], + platform: 'node', + plugins: [nodeExternalsPlugin()] + }); + await context.rebuild(); + if (watchEnabled) { + await context.watch(); + } + await context.serve(); + context.dispose(); +} catch (e) { + if (e.errors && e.errors.length > 0) { + console.group(`!!!!!!! ${packageName} build errors !!!!!!!`); + console.error(e.errors); + console.groupEnd(); + } + + if (e.warnings && e.warnings.length > 0) { + console.group(`!!!!!!! ${packageName} build warnings !!!!!!!`); + console.error(e.warnings); + console.groupEnd(); + } + process.exit(1); +} diff --git a/packages/cli/src/build.ts b/packages/cli/src/build.ts deleted file mode 100644 index 886125cac..000000000 --- a/packages/cli/src/build.ts +++ /dev/null @@ -1,105 +0,0 @@ -import fs from 'node:fs'; -import path from 'node:path'; -import deepmerge from 'deepmerge'; -import fsExtra from 'fs-extra'; -import MosaicCore from '@jpmorganchase/mosaic-core'; - -export default async function build(config, targetDir, options) { - // Strip out any plugins that are meant for runtime use only (i.e. `LazyPagePlugin`) - config.plugins = config.plugins.filter(({ runTimeOnly }) => !runTimeOnly); - // Turn off `cache` for each source - config.sources = config.sources.map(source => ({ - ...source, - options: { ...source.options, cache: false } - })); - const scope = options.scope && options.scope.split(','); - const mosaic = new MosaicCore(config); - const pathDir = path.posix.join(targetDir, options.name ?? new Date().toISOString()); - await fsExtra.emptyDir(pathDir); - await mosaic.start(); - // If `scope` arg was used, scope the filesystem to those namespaces - const filesystem = Array.isArray(scope) ? mosaic.filesystem.scope(scope) : mosaic.filesystem; - let calls = 0; - mosaic.onSourceUpdate(async () => { - try { - if (++calls === config.sources.length) { - const symlinks = filesystem.symlinksToJSON(); - const allFiles = await filesystem.promises.glob('**', { - cwd: '/', - onlyFiles: true - }); - for (const filePath of allFiles) { - // if (dotDirRegExp.test(filePath)) { - // continue; - // } - const rawFiles = await filesystem.promises.readFile(String(filePath), { - includeConflicts: true - }); - let rawFile = rawFiles[0]; - if (rawFiles.length > 1) { - // Join colliding JSON files together. e.g. sidebar.json files - if (path.posix.extname(String(filePath)) === '.json') { - console.warn( - `'${filePath}' returned multiple files at the same location. Since the files were JSON dot files, they were merged using \`deepmerge\`.` - ); - const allRawFiles: string[] = rawFiles.map(fileData => JSON.parse(String(fileData))); - rawFile = Buffer.from(JSON.stringify(deepmerge(allRawFiles[0], allRawFiles[1]))); - } else { - throw new Error(`'${filePath}' returned multiple files at the same location, this will result in overwritten data in the output. Aborting build. - -Try using \`--scope\` to just output certain namespaced sources, or adding a \`prefixDir\` to the source options to move the source files into a separate folder.`); - } - } - await fs.promises.mkdir(path.dirname(path.join(pathDir, String(filePath))), { - recursive: true - }); - await fs.promises.writeFile(path.join(pathDir, String(filePath)), rawFile); - } - const pwd = process.cwd(); - for (const alias in symlinks) { - if (alias.startsWith('/.tags')) { - continue; - } - for (const { target } of symlinks[alias]) { - if (target.startsWith('/.tags')) { - continue; - } - await fsExtra.ensureDir(path.join(pathDir, path.dirname(alias))); - - try { - const exists = !!(await fs.promises.stat(path.join(pathDir, alias))); - if (exists) { - console.error( - new Error( - `Symlink at '${path.join(pathDir, alias)}' already exists. Aborting build.` - ) - ); - process.exit(1); - } - } catch { - const targetPath = path.join(pathDir, target); - const aliasPath = path.join(pathDir, alias); - const aliasBasename = path.basename(aliasPath); - const targetSymlink = path.relative(path.dirname(aliasPath), targetPath); - process.chdir(path.dirname(aliasPath)); - if (fs.existsSync(aliasBasename)) { - fs.unlinkSync(aliasBasename); - } - await fs.promises.symlink(targetSymlink, aliasBasename); - } - } - } - process.chdir(pwd); - console.log( - `[Mosaic] filesystem for ${ - Array.isArray(scope) ? scope.length : config.sources.length - } source(s) written to disk at '${pathDir}'` - ); - mosaic.stop(); - } - } catch (e) { - console.error(e); - process.exit(1); - } - }); -} diff --git a/packages/cli/src/exportStatic.ts b/packages/cli/src/exportStatic.ts new file mode 100644 index 000000000..47af81532 --- /dev/null +++ b/packages/cli/src/exportStatic.ts @@ -0,0 +1,22 @@ +import { spawn } from 'node:child_process'; + +function runCommand(command) { + const child = spawn(command, { + cwd: process.cwd(), + shell: true + }); + child.stdout.on('data', progress => console.log(progress.toString())); + child.stderr.on('data', error => console.error(error.toString())); + return child; +} + +export default async function exportStatic() { + try { + const fsChild = runCommand(`yarn serve:fs`); + const buildChild = runCommand(`yarn build:static`); + buildChild.on('close', () => fsChild.kill()); + } catch (error) { + console.error(error); + process.exit(1); + } +} diff --git a/packages/cli/src/index.ts b/packages/cli/src/index.ts index d04f5199a..bea1ba080 100644 --- a/packages/cli/src/index.ts +++ b/packages/cli/src/index.ts @@ -4,45 +4,42 @@ import path from 'node:path'; import { pathToFileURL } from 'node:url'; import serve from './serve.js'; -import uploadS3Snapshot from './upload-s3-snapshot.js'; -import build from './build.js'; +import exportStatic from './exportStatic.js'; +import serveStatic from './serveStatic.js'; import { updateTraceFile } from './vercel-snapshot.js'; program .option('-c, --config ', 'Config path') .option('-o, --out ', 'Output directory', '.tmp/.mosaic-build') .option('-s, --scope ', 'Command separated namespaces') - .option('-p, --port ', 'Port to serve on', '8080') - .option('-n, --name ', 'Snapshot name') - .option('-S, --snapshot ', 'Snapshot path'); + .option('-p, --port ', 'Port to serve on', '8080'); program.parse(); const options = program.opts(); -let config; -if (options.config !== undefined) { - config = await import(pathToFileURL(path.resolve(process.cwd(), options.config)).toString()); - - if (!config) { - throw new Error( - `[Mosaic] could not find config file at ${path.resolve(process.cwd(), options.config)}.` - ); - } +if (program.args[0] === 'export:static') { + exportStatic(); +} else if (program.args[0] === 'serve:static') { + serveStatic(path.resolve(process.cwd(), options.out), options.port); } else { - throw new Error(`[Mosaic] no config file provided`); -} + let config; + if (options.config !== undefined) { + config = await import(pathToFileURL(path.resolve(process.cwd(), options.config)).toString()); + + if (!config) { + throw new Error( + `[Mosaic] could not find config file at ${path.resolve(process.cwd(), options.config)}.` + ); + } + } else { + throw new Error(`[Mosaic] no config file provided`); + } -if (program.args[0] === 'build') { - build(config.default, path.resolve(process.cwd(), options.out), options); -} -if (program.args[0] === 'serve') { - serve(config.default, options.port, options.scope && options.scope.split(',')); -} -if (program.args[0] === 'upload') { - uploadS3Snapshot(path.resolve(process.cwd(), options.snapshot)); -} -if (program.args[0] === 'deploy') { - updateTraceFile(config.default, options); + if (program.args[0] === 'serve') { + serve(config.default, options.port, options.scope && options.scope.split(',')); + } else if (program.args[0] === 'deploy') { + updateTraceFile(config.default, options); + } } diff --git a/packages/cli/src/serveStatic.ts b/packages/cli/src/serveStatic.ts new file mode 100644 index 000000000..5eefbac04 --- /dev/null +++ b/packages/cli/src/serveStatic.ts @@ -0,0 +1,24 @@ +#!/usr/bin/env node +import Fastify from 'fastify'; +import fastifyStatic from '@fastify/static'; + +export default async function serveStatic(staticPath, port) { + const start = async () => { + try { + await server.listen({ port }); + console.log(`[Mosaic] Listening on port ${port}`); + } catch (err) { + server.log.error(err); + process.exit(1); + } + }; + + const server = Fastify(); + await server.register(fastifyStatic, { + root: staticPath + }); + server.setNotFoundHandler((_request, reply) => { + reply.sendFile(`404.html`); + }); + await start(); +} diff --git a/packages/cli/src/upload-s3-snapshot.ts b/packages/cli/src/upload-s3-snapshot.ts deleted file mode 100644 index 4493f9d52..000000000 --- a/packages/cli/src/upload-s3-snapshot.ts +++ /dev/null @@ -1,53 +0,0 @@ -import { globby } from 'globby'; -import path from 'path'; -import fs from 'fs'; -import { S3Client, CreateBucketCommand, PutObjectCommand } from '@aws-sdk/client-s3'; -import assert from 'assert'; - -function createClient(region, accessKeyId, secretAccessKey): S3Client { - return new S3Client({ - region, - credentials: { - accessKeyId, - secretAccessKey - } - }); -} - -export default async function uploadS3Snapshot(targetDir) { - assert( - process.env.MOSAIC_S3_BUCKET, - 'Cannot read S3 bucket - MOSAIC_S3_BUCKET environment var is missing' - ); - assert( - process.env.MOSAIC_S3_REGION, - 'Cannot read S3 bucket - MOSAIC_S3_REGION environment var is missing' - ); - assert( - process.env.MOSAIC_S3_ACCESS_KEY_ID, - 'Cannot read S3 bucket - MOSAIC_S3_ACCESS_KEY_ID environment var is missing' - ); - assert( - process.env.MOSAIC_S3_SECRET_ACCESS_KEY, - 'Cannot read S3 bucket - MOSAIC_S3_SECRET_ACCESS_KEY environment var is missing' - ); - const bucket: string = process.env.MOSAIC_S3_BUCKET; - const region: string = process.env.MOSAIC_S3_REGION; - const accessKeyId: string = process.env.MOSAIC_S3_ACCESS_KEY_ID; - const secretAccessKey: string = process.env.MOSAIC_S3_SECRET_ACCESS_KEY; - - const client = createClient(region, accessKeyId, secretAccessKey); - await client.send(new CreateBucketCommand({ Bucket: bucket })); - const paths = await globby(targetDir); - paths.forEach(async filePath => { - const key = filePath.replace(`${targetDir}${path.sep}`, ''); - console.log(`Upload ${key} to bucket ${bucket}`); - const body = await fs.promises.readFile(filePath, { encoding: 'utf-8' }); - const putCommand = new PutObjectCommand({ - Bucket: bucket, - Key: key, - Body: body - }); - await client.send(putCommand); - }); -} diff --git a/packages/cli/src/vercel-snapshot.ts b/packages/cli/src/vercel-snapshot.ts index a7455550d..9a360c76d 100644 --- a/packages/cli/src/vercel-snapshot.ts +++ b/packages/cli/src/vercel-snapshot.ts @@ -22,7 +22,6 @@ export async function updateTraceFile(config, options) { const projectBase = process.cwd(); const buildDir = path.posix.join(projectBase, '.next'); const snapshotDir = options.out; - const snapshotName = options.name ?? new Date().toISOString(); if (!fsExtra.existsSync(buildDir)) { console.warn( @@ -32,7 +31,7 @@ export async function updateTraceFile(config, options) { const nftFilePath = path.posix.join(buildDir, 'server', 'pages', '[...route].js.nft.json'); // Find all snapshot files - const paths = await globby(`**/${snapshotDir}/${snapshotName}/**`, { + const paths = await globby(`**/${snapshotDir}/**`, { cwd: projectBase, onlyFiles: true }); diff --git a/packages/components-labs/package.json b/packages/components-labs/package.json index 409a59f24..d2588216c 100644 --- a/packages/components-labs/package.json +++ b/packages/components-labs/package.json @@ -24,30 +24,30 @@ }, "scripts": { "build": "npm-run-all --parallel build:*", - "build:components": "node ../../scripts/bundle.js", + "build:components": "node ../../scripts/bundle.mjs", "build:types": "tsc", "clean": "npx del-cli 'dist/**' && find . -type d -empty -delete", "lint": "eslint --ignore-pattern \"**/__tests__/**\"", - "dev": "node ../../scripts/bundle.js watch" + "dev": "node ../../scripts/bundle.mjs watch" }, "devDependencies": { "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.0.0", "@types/styled-components": "^5.1.26", - "@vanilla-extract/esbuild-plugin": "^2.0.2", + "@vanilla-extract/esbuild-plugin": "^2.3.1", "del-cli": "^4.0.1", "jest-fetch-mock": "^3.0.3", - "typescript": "^4.8.3" + "typescript": "^5.2.2" }, "dependencies": { "@jpmorganchase/mosaic-components": "^0.1.0-beta.62", "@jpmorganchase/mosaic-theme": "^0.1.0-beta.62", - "@salt-ds/core": "^1.11.0", - "@salt-ds/lab": "1.0.0-alpha.20", - "@vanilla-extract/css": "^1.6.0", - "@vanilla-extract/recipes": "^0.2.1", - "@vanilla-extract/sprinkles": "^1.3.0", + "@salt-ds/core": "^1.13.3", + "@salt-ds/lab": "1.0.0-alpha.25", + "@vanilla-extract/css": "^1.14.0", + "@vanilla-extract/recipes": "^0.5.1", + "@vanilla-extract/sprinkles": "^1.6.1", "d3": "^7.7.0", "deepmerge": "^2.0.1", "mermaid": "9.3.0", @@ -55,7 +55,7 @@ "warning": "^3.0.0" }, "peerDependencies": { - "@types/react": "^18.0.26", + "@types/react": "^18.2.46", "react": "^18.2.0", "react-dom": "^18.2.0" } diff --git a/packages/components-labs/src/Diagram.tsx b/packages/components-labs/src/Diagram.tsx index 73c41bcc5..7bc99bae3 100644 --- a/packages/components-labs/src/Diagram.tsx +++ b/packages/components-labs/src/Diagram.tsx @@ -1,4 +1,4 @@ -import React, { useEffect } from 'react'; +import { useEffect } from 'react'; import { Mermaid, MermaidProps } from 'mdx-mermaid/lib/Mermaid'; import warning from 'warning'; diff --git a/packages/components-labs/src/index.ts b/packages/components-labs/src/index.ts index a9b2953f2..e2efa0e51 100644 --- a/packages/components-labs/src/index.ts +++ b/packages/components-labs/src/index.ts @@ -1,13 +1,4 @@ -import { withMarkdownSpacing } from '@jpmorganchase/mosaic-components'; -import { Diagram } from './Diagram'; -import { Sitemap } from './Sitemap'; -import type { SitemapProps } from './Sitemap'; -import type { DiagramProps } from './Diagram'; +'use client'; export * from './Diagram'; export * from './Sitemap'; - -export const getLabMarkdownComponents = () => ({ - Diagram: withMarkdownSpacing(Diagram), - Sitemap: withMarkdownSpacing(Sitemap) -}); diff --git a/packages/components/README.md b/packages/components/README.md index d13df85a3..c747f247c 100644 --- a/packages/components/README.md +++ b/packages/components/README.md @@ -2,9 +2,6 @@ `@jpmorganchase/mosaic-components` contains re-usable UI components that conform to the Mosaic Design language. -All the Mosaic UI components are available within the MDX context of a Mosaic site but equally could be used outside a -Mosaic site. - ## Installation `yarn add @jpmorganchase/mosaic-components` @@ -15,3 +12,4 @@ The criteria for a component within `@jpmorganchase/mosaic-components` is - It can be used outside the Mosaic site with only Mosaic theme dependencies. - It **should not** contain any Mosaic Store, NextJS or other site specific dependencies. +- Should be client-side only components diff --git a/packages/components/package.json b/packages/components/package.json index ccd57b06b..490984dfc 100644 --- a/packages/components/package.json +++ b/packages/components/package.json @@ -26,11 +26,11 @@ "scripts": { "build": "npm-run-all --parallel build:*", "build:types": "tsc", - "build:components": "node ../../scripts/bundle.js", + "build:components": "node ../../scripts/bundle.mjs", "clean": "npx del-cli 'dist/**' && find . -type d -empty -delete", "lint": "eslint --ignore-pattern \"**/__tests__/**\"", "doc": "node ../../scripts/updateDocs.js", - "dev": "node ../../scripts/bundle.js watch" + "dev": "node ../../scripts/bundle.mjs watch" }, "devDependencies": { "@testing-library/jest-dom": "^5.16.5", @@ -38,31 +38,27 @@ "@testing-library/user-event": "^14.0.0", "react": "^18.2.0", "del-cli": "^4.0.1", - "typescript": "^4.8.3" + "typescript": "^5.2.2" }, "dependencies": { "@jpmorganchase/mosaic-store": "^0.1.0-beta.62", "@jpmorganchase/mosaic-theme": "^0.1.0-beta.62", - "@salt-ds/core": "^1.11.0", - "@salt-ds/lab": "1.0.0-alpha.20", - "@vanilla-extract/css": "^1.6.0", - "@vanilla-extract/sprinkles": "^1.3.0", - "@vanilla-extract/recipes": "^0.2.1", + "@salt-ds/core": "^1.13.3", + "@salt-ds/lab": "1.0.0-alpha.25", + "@vanilla-extract/css": "^1.14.0", + "@vanilla-extract/sprinkles": "^1.6.1", + "@vanilla-extract/recipes": "^0.5.1", "clsx": "^2.0.0", "deepmerge": "^2.0.1", "hoist-non-react-statics": "^3.3.2", "lodash-es": "^4.17.21", - "prism-react-renderer": "^1.1.1", - "react-live": "^2.2.3", - "react-markdown": "^6.0.2", "react-responsive-carousel": "3.2.10", "react-table": "^7.8.0", - "swagger-ui-react": "^5.0.0", "use-memo-one": "^1.1.1", "warning": "^3.0.0" }, "peerDependencies": { - "@types/react": "^18.0.26", + "@types/react": "^18.2.46", "react": "^18.2.0", "react-dom": "^18.2.0" } diff --git a/packages/components/src/BrowserOnly.tsx b/packages/components/src/BrowserOnly.tsx index a5c510a7f..cc8198a76 100644 --- a/packages/components/src/BrowserOnly.tsx +++ b/packages/components/src/BrowserOnly.tsx @@ -1,5 +1,3 @@ -import React from 'react'; - import { canUseDOM } from './canUseDOM'; export function BrowserOnly({ diff --git a/packages/components/src/Button.tsx b/packages/components/src/Button.tsx index f09526db3..4b606c67e 100644 --- a/packages/components/src/Button.tsx +++ b/packages/components/src/Button.tsx @@ -1,4 +1,4 @@ -import React, { type Ref, type ReactNode, forwardRef } from 'react'; +import { type Ref, type ReactNode, forwardRef } from 'react'; import classnames from 'clsx'; import { Button as SaltButton, ButtonProps as SaltButtonProps } from '@salt-ds/core'; import { button as buttonStyles } from '@jpmorganchase/mosaic-theme'; diff --git a/packages/components/src/EditionFilterView/index.tsx b/packages/components/src/EditionFilterView/index.tsx index 490157418..492fecc87 100644 --- a/packages/components/src/EditionFilterView/index.tsx +++ b/packages/components/src/EditionFilterView/index.tsx @@ -1,10 +1,10 @@ -import React from 'react'; +import React, { ReactNode } from 'react'; import classnames from 'clsx'; import { FilterResultCount, FilterView } from '../FilterView'; import { FilterDropdown, FilterSortDropdown } from '../FilterToolbar'; import { EditionTileLink } from '../EditionTileLink'; -import { FormattedContent } from '../FormattedContent'; +import { useBreakpoint } from '../useBreakpoint'; import styles from './styles.css'; export const createCustomFilter = (view, filters) => @@ -38,7 +38,7 @@ export type Edition = { group?: string; link: string; publicationDate: string; - formattedDescription?: string; + formattedDescription?: ReactNode; title?: string; }; @@ -58,20 +58,20 @@ export type EditionFilterViewProps = { ItemRenderer: EditionFilterViewRenderer; }; -export const DefaultEditionFilterViewRenderer: EditionFilterViewRenderer = (item, itemIndex) => ( - {item.formattedDescription} - ) : null - } - eyebrow={item.eyebrow} - image={item.image} - key={`editionTile-${itemIndex}`} - link={item.link} - title={item.title} - /> -); +export const DefaultEditionFilterViewRenderer: EditionFilterViewRenderer = (item, itemIndex) => { + const breakpoint = useBreakpoint(); + return ( + + ); +}; export const EditionFilterView: React.FC> = ({ className, ItemRenderer = DefaultEditionFilterViewRenderer, diff --git a/packages/components/src/EditionTileLink/index.tsx b/packages/components/src/EditionTileLink/index.tsx index 8307dba08..6e935dc19 100644 --- a/packages/components/src/EditionTileLink/index.tsx +++ b/packages/components/src/EditionTileLink/index.tsx @@ -1,22 +1,10 @@ -import React, { FC, ReactNode } from 'react'; +import React, { FC, ReactNode, useRef } from 'react'; +import { useImageComponent } from '@jpmorganchase/mosaic-store'; -import { LinkBase } from '../LinkBase'; -import { LinkText } from '../LinkText'; -import { TileBase, useTileState } from '../TileBase'; -import { useImageComponent } from '../ImageProvider'; import { useBreakpoint } from '../useBreakpoint'; import styles, { imageRecipe, tileImageRecipe } from './styles.css'; - -const PseudoLink = ({ children }) => { - const { - highlighted: [isHighlighted] - } = useTileState(); - return ( - - {children} - - ); -}; +import { Link } from '../Link'; +import { TileBase } from '../TileBase'; export type EditionTileLinkProps = { /** Additional class name for root class override */ @@ -65,26 +53,38 @@ export const EditionTileLink: React.FC { const breakpoint = useBreakpoint(); + const linkRef = useRef(null); const imagePlacementResponsive = breakpoint === 'mobile' ? 'fullWidth' : 'left'; const imagePlacement = imagePlacementProp || imagePlacementResponsive; + + const handleSelect = () => { + console.log('handle select'); + /** + * Why don't we just make the EditionTileLink a link itself and not use refs? + * Editions may contain content which **includes** links. + * It is invalid for a link to be within a link and will cause React hydration errors. + */ + linkRef.current?.click(); + }; + return ( - - + +
{image ? : null}
{eyebrow ?

{eyebrow}

: null} {title ?

{title}

: null} {description ?
{description}
: null} - -

Read More

-
+ + Read More +
- +
); }; diff --git a/packages/components/src/Feature/Feature.tsx b/packages/components/src/Feature/Feature.tsx index 4305510bd..844b06546 100644 --- a/packages/components/src/Feature/Feature.tsx +++ b/packages/components/src/Feature/Feature.tsx @@ -1,9 +1,9 @@ import React from 'react'; import classnames from 'clsx'; +import { useImageComponent } from '@jpmorganchase/mosaic-store'; import { feature } from '@jpmorganchase/mosaic-theme'; import styles from './styles.css'; -import { useImageComponent } from '../ImageProvider'; export type FeatureClassesType = { content?: string; diff --git a/packages/components/src/FilterToolbar/FilterDropdown/index.tsx b/packages/components/src/FilterToolbar/FilterDropdown/index.tsx index 7f80285c4..218a9fe9a 100644 --- a/packages/components/src/FilterToolbar/FilterDropdown/index.tsx +++ b/packages/components/src/FilterToolbar/FilterDropdown/index.tsx @@ -1,4 +1,4 @@ -import React, { useMemo, useState } from 'react'; +import { useMemo, useState, useId } from 'react'; import classnames from 'clsx'; import { Dropdown, DropdownButton, DropdownProps, SelectionChangeHandler } from '@salt-ds/lab'; import { Icon } from '../../Icon'; @@ -29,6 +29,7 @@ export function FilterDropdown({ source = [], ...rest }: FilterDropdownProps) { + const id = useId(); const dispatch = useToolbarDispatch(); const { filters = [] } = useToolbarState(); const [isOpen, setIsOpen] = useState(false); @@ -39,6 +40,7 @@ export function FilterDropdown({ }; return ( + id={id} aria-label={isOpen ? 'close filters menu' : 'open filters menu'} className={classnames(className, styles.root)} itemToString={itemToString} diff --git a/packages/components/src/FilterToolbar/Search/index.tsx b/packages/components/src/FilterToolbar/Search/index.tsx index f2f83c59d..c9387c5c6 100644 --- a/packages/components/src/FilterToolbar/Search/index.tsx +++ b/packages/components/src/FilterToolbar/Search/index.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import classnames from 'clsx'; import { escapeRegExp, ComboBox, ComboBoxProps, SelectionChangeHandler } from '@salt-ds/lab'; import { Icon } from '../../Icon'; diff --git a/packages/components/src/FilterToolbar/SortDropdown/index.tsx b/packages/components/src/FilterToolbar/SortDropdown/index.tsx index 66d07277c..9045ced74 100644 --- a/packages/components/src/FilterToolbar/SortDropdown/index.tsx +++ b/packages/components/src/FilterToolbar/SortDropdown/index.tsx @@ -1,4 +1,4 @@ -import React, { useState } from 'react'; +import { useState, useId } from 'react'; import classnames from 'clsx'; import { Dropdown, DropdownButton, DropdownProps, SelectionChangeHandler } from '@salt-ds/lab'; import { Icon } from '../../Icon'; @@ -22,6 +22,7 @@ export function FilterSortDropdown({ source = defaultSource, ...rest }: FilterSortDropdownProps) { + const id = useId(); const dispatch = useToolbarDispatch(); const { sort = source[0] } = useToolbarState(); const [, setIsOpen] = useState(false); @@ -35,6 +36,7 @@ export function FilterSortDropdown({ return ( ReactElement; - h2?: () => ReactElement; - h3?: () => ReactElement; - h4?: () => ReactElement; - h5?: () => ReactElement; - h6?: () => ReactElement; - p?: () => ReactElement; - em?: () => ReactElement; - strong?: () => ReactElement; - ul?: () => ReactElement; - ol?: () => ReactElement; - li?: () => ReactElement; - }; -}; - -const renderers = { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - h1: ({ node, ...props }) =>

, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - h2: ({ node, ...props }) =>

, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - h3: ({ node, ...props }) =>

, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - h4: ({ node, ...props }) =>

, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - h5: ({ node, ...props }) =>

, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - h6: ({ node, ...props }) =>
, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - p: ({ node, children, ...props }) =>

{children}

, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - emphasis: ({ node, children, ...props }) => {children}, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - strong: ({ node, children, ...props }) => {children}, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - ul: ({ node, children, ...props }) =>
    {children}
, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - ol: ({ node, children, ...props }) =>
    {children}
, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - listItem: ({ node, children, ...props }) => {children} -}; - -export const FormattedContent: React.FC> = ({ - children, - components = {}, - ...rest -}) => ( - - {children} - -); diff --git a/packages/components/src/Grid/index.tsx b/packages/components/src/Grid/index.tsx index 489b360fb..2bc9eaaa7 100644 --- a/packages/components/src/Grid/index.tsx +++ b/packages/components/src/Grid/index.tsx @@ -1,4 +1,4 @@ -import React, { forwardRef, ReactNode, Ref } from 'react'; +import { forwardRef, ReactNode, Ref } from 'react'; import classnames from 'clsx'; import styles from './styles.css'; diff --git a/packages/components/src/GridBase/index.tsx b/packages/components/src/GridBase/index.tsx index 97b093250..608884e61 100644 --- a/packages/components/src/GridBase/index.tsx +++ b/packages/components/src/GridBase/index.tsx @@ -1,4 +1,4 @@ -import React, { forwardRef, ReactElement, Ref } from 'react'; +import { forwardRef, ReactElement, Ref } from 'react'; import classnames from 'clsx'; import { responsiveSprinkles } from '@jpmorganchase/mosaic-theme'; import type { SpaceVars } from '@jpmorganchase/mosaic-theme'; diff --git a/packages/components/src/Hero/index.tsx b/packages/components/src/Hero/index.tsx index d9a33ecb1..c2a284bd5 100644 --- a/packages/components/src/Hero/index.tsx +++ b/packages/components/src/Hero/index.tsx @@ -1,10 +1,10 @@ -import React, { ReactElement } from 'react'; +import React, { ReactElement, ReactNode } from 'react'; +import { useImageComponent } from '@jpmorganchase/mosaic-store'; import classnames from 'clsx'; import { LinkButton } from '../LinkButton'; import styles from './styles.css'; import { Eyebrow, H1, P2 } from '../Typography'; -import { useImageComponent } from '../ImageProvider'; const formatTitle = (fullWidth: boolean, title: string, key: string): React.ReactNode => { const lines = title ? title.split('
') : []; @@ -30,6 +30,8 @@ export interface HeroLink { */ export interface HeroProps { backgroundImage?: string; + /** Optional children to use instead of links */ + children?: ReactNode; /** Additional class name for root class override. */ className?: string; /** Prop to provide a datestamp. */ @@ -42,7 +44,7 @@ export interface HeroProps { /** Image to be displayed. */ image?: string; /** The title of the Hero. */ - title: string | ReactElement; + title?: string | ReactElement; links?: HeroLink[]; /** Defines the variant. * @defaultValue `regular` @@ -95,8 +97,9 @@ function HeroImageContainer({ isFramed, heroBackgroundImage, heroImage, isFullWi * /> * ``` */ -export const Hero: React.FC> = ({ +export const Hero: React.FC = ({ backgroundImage, + children, className, datestamp, datestampLabel = 'Last Modified', @@ -139,7 +142,7 @@ export const Hero: React.FC> = ({ ) : null} {description ? {description} : null} {links ? ( -
+
{links.map((link, linkIndex) => { const isLastLink = linkIndex === links.length - 1; return ( @@ -157,7 +160,9 @@ export const Hero: React.FC> = ({ ); })}
- ) : null} + ) : ( +
{children}
+ )}
{image ? ( = createContext('img'); - -export const useImageComponent = (): ElementType => useContext(ImageContext); - -export const ImageProvider = ImageContext.Provider; diff --git a/packages/components/src/Impact/index.tsx b/packages/components/src/Impact/index.tsx index 32860c322..45b0c0904 100644 --- a/packages/components/src/Impact/index.tsx +++ b/packages/components/src/Impact/index.tsx @@ -1,8 +1,8 @@ import React from 'react'; import classnames from 'clsx'; +import { useImageComponent } from '@jpmorganchase/mosaic-store'; import styles from './styles.css'; -import { useImageComponent } from '../ImageProvider'; export interface ImpactProps { /** Additional class name for root class override */ diff --git a/packages/components/src/Link/index.tsx b/packages/components/src/Link/index.tsx index 1a3fc8c13..64e127ba0 100644 --- a/packages/components/src/Link/index.tsx +++ b/packages/components/src/Link/index.tsx @@ -1,4 +1,4 @@ -import React, { forwardRef, Ref } from 'react'; +import { forwardRef, Ref } from 'react'; import classnames from 'clsx'; import { LinkBase, LinkBaseProps } from '../LinkBase'; diff --git a/packages/components/src/LinkBase/index.tsx b/packages/components/src/LinkBase/index.tsx index dde976971..3f0fc4802 100644 --- a/packages/components/src/LinkBase/index.tsx +++ b/packages/components/src/LinkBase/index.tsx @@ -1,6 +1,6 @@ import React, { forwardRef, Ref } from 'react'; +import { useLinkComponent } from '@jpmorganchase/mosaic-store'; -import { useLinkComponent } from '../LinkProvider'; import { hasProtocol } from '../utils/hasProtocol'; export interface LinkBaseProps extends Omit, 'ref'> { diff --git a/packages/components/src/LinkProvider.ts b/packages/components/src/LinkProvider.ts deleted file mode 100644 index eff307d09..000000000 --- a/packages/components/src/LinkProvider.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { createContext, Context, ElementType, useContext } from 'react'; - -export type LinkProviderValue = ElementType; - -const LinkContext: Context = createContext('a'); - -export const useLinkComponent = (): ElementType => useContext(LinkContext); - -export const LinkProvider = LinkContext.Provider; diff --git a/packages/components/src/Markdown/Heading.tsx b/packages/components/src/Markdown/Heading.tsx deleted file mode 100644 index a77965b96..000000000 --- a/packages/components/src/Markdown/Heading.tsx +++ /dev/null @@ -1,39 +0,0 @@ -import { heading } from '@jpmorganchase/mosaic-theme'; - -import { withStyledTypography } from '../Typography/withStyledTypography'; - -export const H0 = withStyledTypography( - heading({ variant: 'heading0', context: 'markdown' }), - 'h1', - { role: 'heading' } -); -export const H1 = withStyledTypography( - heading({ variant: 'heading1', context: 'markdown' }), - 'h1', - { role: 'heading' } -); -export const H2 = withStyledTypography( - heading({ variant: 'heading2', context: 'markdown' }), - 'h2', - { role: 'heading' } -); -export const H3 = withStyledTypography( - heading({ variant: 'heading3', context: 'markdown' }), - 'h3', - { role: 'heading' } -); -export const H4 = withStyledTypography( - heading({ variant: 'heading4', context: 'markdown' }), - 'h4', - { role: 'heading' } -); -export const H5 = withStyledTypography( - heading({ variant: 'heading5', context: 'markdown' }), - 'h5', - { role: 'heading' } -); -export const H6 = withStyledTypography( - heading({ variant: 'heading6', context: 'markdown' }), - 'h6', - { role: 'heading' } -); diff --git a/packages/components/src/Markdown/Pre/index.css.ts b/packages/components/src/Markdown/Pre/index.css.ts deleted file mode 100644 index d3f01eb5e..000000000 --- a/packages/components/src/Markdown/Pre/index.css.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { style } from '@vanilla-extract/css'; -import { backgroundColor, foregroundColor, responsiveSprinkles } from '@jpmorganchase/mosaic-theme'; - -const root = style({ - position: 'relative' -}); - -export default { - button: style({ - top: '0px', - right: '0px', - selectors: { - [`${root} &`]: { - position: 'absolute' - } - } - }), - filename: style([ - backgroundColor({ variant: 'emphasis' }), - foregroundColor({ variant: 'low' }), - responsiveSprinkles({ - paddingLeft: ['x4', 'x4', 'x4', 'x4'] - }) - ]), - pre: style({ - selectors: { - [`${root} &`]: { - fontSize: '85%', - margin: 0, - whiteSpace: 'pre-wrap' - } - } - }), - root -}; diff --git a/packages/components/src/Markdown/Pre/index.tsx b/packages/components/src/Markdown/Pre/index.tsx deleted file mode 100644 index aae3e0d75..000000000 --- a/packages/components/src/Markdown/Pre/index.tsx +++ /dev/null @@ -1,155 +0,0 @@ -import React, { useEffect, useState, useRef } from 'react'; -import classnames from 'clsx'; -import Highlight, { defaultProps as defaultPrismProps } from 'prism-react-renderer'; -import type { Language } from 'prism-react-renderer'; -import { Icon } from '../../Icon'; - -import { Button } from '../../Button'; -import { Link } from '../../Link'; -import { ReactLive } from '../../ReactLive'; -import { P2 } from '../../Typography'; -import styles from './index.css'; - -export type CodeBlockPropsType = { - components?: Record; -}; -export type CodeBlockMeta = { - code?: string; - filename?: string; - language?: Language; - live?: boolean; -}; - -export type PreProps = CodeBlockMeta & - React.HTMLProps & { CodeBlockProps?: CodeBlockPropsType }; - -const httpPattern = /^((http[s]?):\/\/)/; - -/** - * Supported syntax: - * - * ```jsx live - *
I will be live editable!
- * ``` - */ -export const Pre: React.FC> = ({ - children, - className, - code: codeProp = '', - CodeBlockProps, - filename, - language: languageProp, - live, - ...rest -}) => { - const preRef = useRef(null); - const [hovered, setHovered] = useState(false); - - const handleMouseEnter = () => { - setHovered(true); - }; - const handleMouseLeave = () => { - setHovered(false); - }; - const handleClickCopy = () => { - if (preRef.current && preRef.current.textContent) { - navigator.clipboard.writeText(preRef.current.textContent); - } - }; - - let code: string | undefined = codeProp.replace(/
/g, '\n'); - let language: Language | undefined = languageProp; - if (children) { - const codeBlock = (children as React.ReactElement<{ className?: string; children: string }>) - .props; - code = codeBlock.children; - language = codeBlock.className?.replace('language-', '') as Language; - } - - if (typeof code !== 'string') { - return null; - } - - let FilenameElement; - if (!filename) { - FilenameElement = null; - } else if (httpPattern.test(filename)) { - const basename = filename.substring(filename.lastIndexOf('/') + 1); - FilenameElement = ( - - {basename} - - ); - } else { - FilenameElement = {filename}; - } - - // If a language other than JSX or TSX is specified, bail out - const isLive = live && (language === 'tsx' || language === 'jsx'); - - return ( -
-
- {FilenameElement} - {hovered && ( - - )} -
- -
- ); -}; - -const CodeBlock = React.memo( - React.forwardRef< - HTMLPreElement | null, - { isLive?: boolean; code: string; components?: Record; language?: Language } - >(({ code, components, isLive = false, language = '' }, ref) => - isLive ? ( - - {code} - - ) : ( -
-        
-      
- ) - ) -); - -const CodeHighlight: React.FC> = - function CodeHighlight({ code, language }) { - const [isClient, setIsClient] = useState(false); - useEffect(() => { - setIsClient(true); - }, []); - - if (!isClient) { - return null; - } - let trimmedCode = code.replace(/\n+$/, ''); - return ( - - {({ tokens, getLineProps, getTokenProps }) => ( - <> - {tokens.map((line, i) => ( - // eslint-disable-next-line react/jsx-key -
- {line.map((token, key) => ( - // eslint-disable-next-line react/jsx-key - - ))} -
- ))} - - )} -
- ); - }; diff --git a/packages/components/src/Markdown/index.tsx b/packages/components/src/Markdown/index.tsx deleted file mode 100644 index 351c38a9c..000000000 --- a/packages/components/src/Markdown/index.tsx +++ /dev/null @@ -1,210 +0,0 @@ -import type { Ref } from 'react'; -import { - action, - amount, - caption, - eyebrow, - heading, - paragraph, - subtitle, - watermark -} from '@jpmorganchase/mosaic-theme'; -import { Icon, IconProps } from '../Icon'; -import { getMarkdownElements } from './markdownElements'; -import { Accordion, AccordionSection, AccordionDetails, AccordionSummary } from '../Accordion'; -import type { AccordionProps } from '../Accordion'; -import { AudioPlayer } from '../AudioPlayer'; -import { Button } from '../Button'; -import { Callout } from '../Callout'; -import type { CalloutProps } from '../Callout'; -import { Card } from '../Card'; -import type { CardProps } from '../Card'; -import { Cards } from '../Cards'; -import type { CardsProps } from '../Cards'; -import { ComponentExample } from '../ComponentExample'; -import type { ComponentExampleProps } from '../ComponentExample'; -import { DataTable } from '../DataTable'; -import type { DataTableProps } from '../DataTable'; -import { Feature, FeatureActions, FeatureContent, FeatureTitle, FeatureEyebrow } from '../Feature'; -import type { FeatureProps } from '../Feature'; -import type { FeaturesProps } from '../Features'; -import { Features } from '../Features'; -import { - FilterDropdown, - FilterPillGroup, - FilterSearch, - FilterSortDropdown, - FilterToolbar -} from '../FilterToolbar'; -import type { - FilterDropdownProps, - FilterPillGroupProps, - FilterSearchProps, - FilterSortDropdownProps, - FilterToolbarProps -} from '../FilterToolbar'; -import { FilterNoResults, FilterResultCount, FilterView } from '../FilterView'; -import type { FilterViewProps, FilterResultCountProps, FilterNoResultsProps } from '../FilterView'; -import { HelpLinks } from '../HelpLinks'; -import type { HelpLinksProps } from '../HelpLinks'; -import { Hero } from '../Hero'; -import { Impact } from '../Impact'; -import type { ImpactProps } from '../Impact'; -import { Impacts } from '../Impacts'; -import type { ImpactsProps } from '../Impacts'; -import { Label } from '../Label'; -import type { LabelProps } from '../Label'; -import { Link } from '../Link'; -import { LinkBase, LinkBaseProps } from '../LinkBase'; -import { LinkText, LinkTextProps } from '../LinkText'; -import { Links } from '../Links'; -import type { LinksProps } from '../Links'; -import { Tag } from '../Tag'; -import type { TagProps } from '../Tag'; -import { EditionFilterView } from '../EditionFilterView'; -import type { EditionTileLinkProps } from '../EditionTileLink'; -import { EditionTileLink } from '../EditionTileLink'; -import { GridBase } from '../GridBase'; -import type { GridBaseProps } from '../GridBase'; -import { Grid } from '../Grid'; -import type { GridProps } from '../Grid'; -import { PageFilterView } from '../PageFilterView'; -import { SecondaryNavbar } from '../SecondaryNavbar'; -import type { SecondaryNavbarProps } from '../SecondaryNavbar'; -import { SectionHeading } from '../SectionHeading'; -import { StickyHeader } from '../StickyHeader'; -import { Story } from '../Story'; -import type { StoryProps } from '../Story'; -import { TabsBase } from '../TabsBase'; -import { Tabs, Tab } from '../Tabs'; -import type { TabsProps } from '../Tabs'; -import { Tiles } from '../Tiles'; -import type { TilesProps } from '../Tiles'; -import { TileBase } from '../TileBase'; -import type { TileBaseProps } from '../TileBase'; -import { TileButton } from '../TileButton'; -import type { TileButtonProps } from '../TileButton'; -import { TileContent } from '../TileContent'; -import type { TileContentProps } from '../TileContent'; -import { TileContentLabel } from '../TileContentLabel'; -import type { TileContentLabelProps } from '../TileContentLabel'; -import { TileLink } from '../TileLink'; -import type { TileLinkProps } from '../TileLink'; -import { VideoPlayer } from '../VideoPlayer'; -import { ViewStack, View } from '../ViewStack'; -import type { ViewStackProps } from '../ViewStack'; -import { withStyledTypography } from '../Typography/withStyledTypography'; -import { withMarkdownSpacing } from './withMarkdownSpacing'; -import { ListItem, OrderedList, UnorderedList } from '../List'; -import type { ListItemProps, OrderedListProps, UnOrderedListProps } from '../List'; -import { LinkButton, LinkButtonProps } from '../LinkButton'; - -export { getMarkdownElements } from './markdownElements'; - -export { withMarkdownSpacing } from './withMarkdownSpacing'; -export * from './Pre'; - -const markdownElements = getMarkdownElements(); -export const getMarkdownComponents = () => ({ - Accordion: withMarkdownSpacing(Accordion), - AccordionDetails, - AccordionSection, - AccordionSummary, - AudioPlayer, - Button, - Callout: withMarkdownSpacing(Callout), - Card: withMarkdownSpacing(Card), - Cards: withMarkdownSpacing(Cards), - ComponentExample: withMarkdownSpacing(ComponentExample), - DataTable: withMarkdownSpacing & { ref?: Ref }>(DataTable), - EditionFilterView, - EditionTileLink: withMarkdownSpacing(EditionTileLink), - Feature: withMarkdownSpacing(Feature), - FeatureActions, - FeatureContent, - FeatureEyebrow, - FeatureTitle, - Features: withMarkdownSpacing(Features), - FilterView: withMarkdownSpacing>(FilterView), - FilterDropdown: withMarkdownSpacing(FilterDropdown), - FilterToolbar: withMarkdownSpacing(FilterToolbar), - FilterNoResults: withMarkdownSpacing(FilterNoResults), - FilterPillGroup: withMarkdownSpacing(FilterPillGroup), - FilterSortDropdown: withMarkdownSpacing(FilterSortDropdown), - FilterSearch: withMarkdownSpacing(FilterSearch), - FilterResultCount: withMarkdownSpacing(FilterResultCount), - Grid: withMarkdownSpacing(Grid), - GridBase: withMarkdownSpacing(GridBase), - Hero, - HelpLinks: withMarkdownSpacing(HelpLinks), - Icon: withMarkdownSpacing(Icon, 'regular', true), - Impact: withMarkdownSpacing(Impact), - Impacts: withMarkdownSpacing(Impacts), - Label: withMarkdownSpacing(Label), - Link, - LinkBase: withMarkdownSpacing(LinkBase), - LinkButton: withMarkdownSpacing(LinkButton), - LinkText: withMarkdownSpacing(LinkText), - Links: withMarkdownSpacing(Links), - ListItem: withMarkdownSpacing(ListItem), - OrderedList: withMarkdownSpacing(OrderedList), - PageFilterView, - Tag: withMarkdownSpacing(Tag), - SecondaryNavbar: withMarkdownSpacing(SecondaryNavbar), - SectionHeading, - StickyHeader, - Story: withMarkdownSpacing(Story), - Tabs: withMarkdownSpacing(Tabs), - Tab, - TabsBase, - Tiles: withMarkdownSpacing(Tiles), - TileBase: withMarkdownSpacing(TileBase), - TileButton: withMarkdownSpacing(TileButton), - TileContent: withMarkdownSpacing(TileContent), - TileContentLabel: withMarkdownSpacing(TileContentLabel), - TileLink: withMarkdownSpacing(TileLink), - UnorderedList: withMarkdownSpacing(UnorderedList), - ViewStack: withMarkdownSpacing>(ViewStack), - VideoPlayer, - View, - Action1: withStyledTypography(action({ variant: 'action1', context: 'markdown' })), - Action2: withStyledTypography(action({ variant: 'action2', context: 'markdown' })), - Action3: withStyledTypography(action({ variant: 'action3', context: 'markdown' })), - Action4: withStyledTypography(action({ variant: 'action4', context: 'markdown' })), - Action5: withStyledTypography(action({ variant: 'action5', context: 'markdown' })), - Action6: withStyledTypography(action({ variant: 'action6', context: 'markdown' })), - Action7: withStyledTypography(action({ variant: 'action7', context: 'markdown' })), - Action8: withStyledTypography(action({ variant: 'action8', context: 'markdown' })), - Caption1: withStyledTypography(caption({ variant: 'caption1', context: 'markdown' })), - Caption2: withStyledTypography(caption({ variant: 'caption2', context: 'markdown' })), - Caption3: withStyledTypography(caption({ variant: 'caption3', context: 'markdown' })), - Caption4: withStyledTypography(caption({ variant: 'caption4', context: 'markdown' })), - Caption5: withStyledTypography(caption({ variant: 'caption5', context: 'markdown' })), - Caption6: withStyledTypography(caption({ variant: 'caption6', context: 'markdown' })), - Hr: markdownElements.hr, - H0: withStyledTypography(heading({ variant: 'heading0', context: 'markdown' }), 'h1'), - H1: markdownElements.h1, - H2: markdownElements.h2, - H3: markdownElements.h3, - H4: markdownElements.h4, - H5: markdownElements.h5, - H6: markdownElements.h6, - P1: markdownElements.p, - P2: withStyledTypography(paragraph({ variant: 'paragraph2', context: 'markdown' })), - P3: withStyledTypography(paragraph({ variant: 'paragraph3', context: 'markdown' })), - P4: withStyledTypography(paragraph({ variant: 'paragraph4', context: 'markdown' })), - P5: withStyledTypography(paragraph({ variant: 'paragraph5', context: 'markdown' })), - P6: withStyledTypography(paragraph({ variant: 'paragraph6', context: 'markdown' })), - Subtitle1: withStyledTypography(subtitle({ variant: 'subtitle1', context: 'markdown' })), - Subtitle2: withStyledTypography(subtitle({ variant: 'subtitle2', context: 'markdown' })), - Subtitle3: withStyledTypography(subtitle({ variant: 'subtitle3', context: 'markdown' })), - Subtitle4: withStyledTypography(subtitle({ variant: 'subtitle4', context: 'markdown' })), - Subtitle5: withStyledTypography(subtitle({ variant: 'subtitle5', context: 'markdown' })), - Subtitle6: withStyledTypography(subtitle({ variant: 'subtitle6', context: 'markdown' })), - Amount: withStyledTypography(amount({ context: 'markdown' })), - Eyebrow: withStyledTypography(eyebrow({ context: 'markdown' })), - Watermark: withStyledTypography(watermark({ context: 'markdown' })), - Emphasis: markdownElements.em, - Strong: markdownElements.strong, - ...markdownElements -}); diff --git a/packages/components/src/Markdown/markdownElements.tsx b/packages/components/src/Markdown/markdownElements.tsx deleted file mode 100644 index fc79f39a5..000000000 --- a/packages/components/src/Markdown/markdownElements.tsx +++ /dev/null @@ -1,52 +0,0 @@ -import { emphasis, link, paragraph } from '@jpmorganchase/mosaic-theme'; - -import { withAnchorHeading } from './AnchorHeading'; -import { BlockQuote } from './BlockQuote'; -import * as Heading from './Heading'; -import { ListItem, OrderedList, UnorderedList } from '../List'; -import { InlineCode } from './InlineCode'; -import { Link } from './Link'; -import { Pre } from './Pre'; -import { Table } from './Table'; -import { Tbody } from './Tbody'; -import { Thead } from './Thead'; -import { Th } from './Th'; -import { Td } from './Td'; -import { Tr } from './Tr'; -import { withStyledTypography } from '../Typography/withStyledTypography'; -import { withMarkdownSpacing } from './withMarkdownSpacing'; -import { ThematicBreak } from './ThematicBreak'; - -export const getMarkdownElements = () => ({ - a: withMarkdownSpacing(Link, link({ context: 'markdown', variant: 'document' })), - blockquote: withMarkdownSpacing(BlockQuote), - code: withMarkdownSpacing(InlineCode), - ol: withMarkdownSpacing(OrderedList), - ul: withMarkdownSpacing(UnorderedList), - li: withMarkdownSpacing(ListItem, 'none'), - hr: ThematicBreak, - h1: withAnchorHeading(Heading.H1), - h2: withAnchorHeading(Heading.H2), - h3: withAnchorHeading(Heading.H3), - h4: withAnchorHeading(Heading.H4), - h5: withAnchorHeading(Heading.H5), - h6: withAnchorHeading(Heading.H6), - p: withStyledTypography(paragraph({ variant: 'paragraph2', context: 'markdown' })), - pre: withMarkdownSpacing(Pre), - Pre: withMarkdownSpacing(Pre), - inlineCode: withMarkdownSpacing(InlineCode, 'none'), - table: withMarkdownSpacing(Table), - Table: withMarkdownSpacing(Table), - tbody: withMarkdownSpacing(Tbody, 'none'), - Tbody: withMarkdownSpacing(Tbody, 'none'), - thead: withMarkdownSpacing(Thead, 'none'), - Thead: withMarkdownSpacing(Thead, 'none'), - th: withMarkdownSpacing(Th, 'none'), - Th: withMarkdownSpacing(Th, 'none'), - td: withMarkdownSpacing(Td, 'none'), - Td: withMarkdownSpacing(Td, 'none'), - tr: withMarkdownSpacing(Tr, 'none'), - Tr: withMarkdownSpacing(Tr, 'none'), - em: withStyledTypography(emphasis({ variant: 'regular', context: 'markdown' }), 'span'), - strong: withStyledTypography(emphasis({ variant: 'strong', context: 'markdown' }), 'span') -}); diff --git a/packages/components/src/Markdown/withMarkdownSpacing/styles.css.ts b/packages/components/src/Markdown/withMarkdownSpacing/styles.css.ts deleted file mode 100644 index f2ce965b7..000000000 --- a/packages/components/src/Markdown/withMarkdownSpacing/styles.css.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { responsiveSprinkles } from '@jpmorganchase/mosaic-theme'; - -export default { - none: responsiveSprinkles({ marginTop: ['none', 'none', 'none', 'none'] }), - regular: responsiveSprinkles({ marginTop: ['x6', 'x6', 'x6', 'x6'] }), - inline: responsiveSprinkles({ paddingLeft: ['x1', 'x1', 'x1', 'x1'] }) -}; diff --git a/packages/components/src/PageFilterView/index.tsx b/packages/components/src/PageFilterView/index.tsx index 7ecc06871..f416a1604 100644 --- a/packages/components/src/PageFilterView/index.tsx +++ b/packages/components/src/PageFilterView/index.tsx @@ -1,5 +1,3 @@ -import React from 'react'; - import { TileContentLabel } from '../TileContentLabel'; import { TileLink } from '../TileLink'; import type { GridItemSize } from '../Grid'; diff --git a/packages/components/src/ReactLive/index.tsx b/packages/components/src/ReactLive/index.tsx deleted file mode 100644 index ca23c36bc..000000000 --- a/packages/components/src/ReactLive/index.tsx +++ /dev/null @@ -1,71 +0,0 @@ -import React, { useState } from 'react'; -import classnames from 'clsx'; -import { Switch } from '@salt-ds/core'; - -import { ComponentExample } from '../ComponentExample'; -import { getMarkdownComponents } from '../Markdown'; -import { IsomorphicSuspense } from '../IsomorphicSuspense'; -import styles from './styles.css'; - -type ReactLiveProps = { - /** Contents */ - children: string; - /** className determines the type of language flagged in the MD codeblock */ - className: string; - /** Scope (including components) for live editor */ - scope?: Record; -}; - -const LazyPreviewComponent = React.lazy(() => - import('react-live').then(reactLive => ({ - default: ({ className, codeString, scope }) => ( - - ) - })) -); - -function PreviewComponent({ - codeString, - className, - scope = getMarkdownComponents(), - LiveProvider, - LiveEditor, - LiveError, - LivePreview: ReactLivePreview -}) { - const [hidden, setHidden] = useState(true); - - return ( - - `${code.replace(/import(?:["'\s]*([\w*{}\n, ]+)from\s*)["'\s]*([@\w/_-]+)["'\s]*;?/gm, '')}` - } - > -
- - - -
-
- setHidden(!hidden)} /> -
-
- - {hidden ? null : } -
-
- ); -} - -export const ReactLive: React.FC = ({ children: codeString, className, scope }) => ( - - - -); diff --git a/packages/components/src/ReactLive/styles.css.ts b/packages/components/src/ReactLive/styles.css.ts deleted file mode 100644 index f18b2781e..000000000 --- a/packages/components/src/ReactLive/styles.css.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { style } from '@vanilla-extract/css'; -import { responsiveSprinkles, vars } from '@jpmorganchase/mosaic-theme'; - -const root = style({}); - -export default { - root, - liveError: style([ - { - backgroundColor: 'red', - color: 'white' - }, - responsiveSprinkles({ - marginBottom: ['none', 'none', 'none', 'none'], - padding: ['x4', 'x4', 'x4', 'x4'] - }) - ]), - liveEditor: style([{ backgroundColor: 'black', color: 'white', overflow: 'scroll' }]), - showLiveCodeContainer: style({ - position: 'relative' - }), - showLiveCode: style({ - right: vars.space.horizontal.x4, - bottom: '0px', - position: 'absolute', - lineHeight: 'initial' - }) -}; diff --git a/packages/components/src/SecondaryNavbar/index.tsx b/packages/components/src/SecondaryNavbar/index.tsx index 356f78408..3f99cac37 100644 --- a/packages/components/src/SecondaryNavbar/index.tsx +++ b/packages/components/src/SecondaryNavbar/index.tsx @@ -3,7 +3,7 @@ import classnames from 'clsx'; import { findLastIndex } from 'lodash-es'; import { config } from '@jpmorganchase/mosaic-theme'; -import { TabsBase, TabsMenu, TabMenuItemType, TabsLinkItem } from '../TabsBase'; +import { TabsBase, TabsMenu, TabsLinkItem } from '../TabsBase'; import { canUseDOM } from '../canUseDOM'; import { StickyHeader } from '../StickyHeader'; import styles from './styles.css'; @@ -22,7 +22,7 @@ export interface SecondaryNavbarProps { const getSelectedTabIndex = (items: TabsMenu, itemPath: string): number => findLastIndex(items, (item): boolean => { - if (item.type === TabMenuItemType.MENU) { + if (item.type === 'menu') { return !!item.links.find(link => itemPath.startsWith(link.link)); } return itemPath.startsWith((item as TabsLinkItem).link); diff --git a/packages/components/src/Story/index.tsx b/packages/components/src/Story/index.tsx index 62f25b77c..c581ef750 100644 --- a/packages/components/src/Story/index.tsx +++ b/packages/components/src/Story/index.tsx @@ -1,8 +1,8 @@ import React from 'react'; import classnames from 'clsx'; +import { useImageComponent } from '@jpmorganchase/mosaic-store'; import { LinkButton } from '../LinkButton'; -import { useImageComponent } from '../ImageProvider'; import styles from './styles.css'; export interface StoryProps { diff --git a/packages/components/src/Tabs/index.tsx b/packages/components/src/Tabs/index.tsx index 3e1df1d4d..d23f06d63 100644 --- a/packages/components/src/Tabs/index.tsx +++ b/packages/components/src/Tabs/index.tsx @@ -1,7 +1,7 @@ import React from 'react'; import classnames from 'clsx'; -import { TabsBase, TabsButtonItem, TabMenuItemType } from '../TabsBase'; +import { TabsBase, TabsButtonItem } from '../TabsBase'; import { ViewStack } from '../ViewStack'; import type { ViewProps } from '../ViewStack/View'; import styles from './styles.css'; @@ -36,7 +36,7 @@ export const Tabs: React.FC = ({ className, children }) => { const tabButtonItem: ExtendedTabsButtonItem = { title: tabElement.props.id || `Tab ${childIndex}`, defaultView: Object.prototype.hasOwnProperty.call(child.props, 'defaultView'), - type: TabMenuItemType.BUTTON, + type: 'button', onSelect: (_event, sourceItem) => setCurrentViewId(sourceItem) }; return tabButtonItem; diff --git a/packages/components/src/TabsBase/TabsBase.tsx b/packages/components/src/TabsBase/TabsBase.tsx index bed2448b2..ee09ed936 100644 --- a/packages/components/src/TabsBase/TabsBase.tsx +++ b/packages/components/src/TabsBase/TabsBase.tsx @@ -6,11 +6,8 @@ import { TabsLink, TabsLinkItem } from './TabsLink'; import { TabsMenuButton, TabsMenuButtonItem } from './TabsMenuButton'; import styles from './styles.css'; -export enum TabMenuItemType { - MENU = 'menu', - LINK = 'link', - BUTTON = 'button' -} +export type TabMenuItemType = 'menu' | 'link' | 'button'; + export interface TabsBaseProps { /** Additional class name for root class override */ className?: string; @@ -24,10 +21,10 @@ export type TabsMenu = (TabsLinkItem | TabsButtonItem | TabsMenuButtonItem)[]; function TabsItem({ children, item }) { const { type } = item; - if (type === TabMenuItemType.MENU) { + if (type === 'menu') { return {children}; } - if (type === TabMenuItemType.BUTTON) { + if (type === 'button') { return {children}; } return {children}; diff --git a/packages/components/src/TabsBase/TabsButton.tsx b/packages/components/src/TabsBase/TabsButton.tsx index b8408a0f0..f09bb1452 100644 --- a/packages/components/src/TabsBase/TabsButton.tsx +++ b/packages/components/src/TabsBase/TabsButton.tsx @@ -1,6 +1,5 @@ import React, { FC } from 'react'; -import { TabMenuItemType } from './index'; import styles from './styles.css'; export interface TabsButtonItem { @@ -13,7 +12,7 @@ export interface TabsButtonItem { /** Title of Tab */ title: string; /** Type of Tab */ - type: TabMenuItemType.BUTTON; + type: 'button'; } interface TabButtonProps { diff --git a/packages/components/src/TabsBase/TabsLink.tsx b/packages/components/src/TabsBase/TabsLink.tsx index 098467b2d..f52ea92bf 100644 --- a/packages/components/src/TabsBase/TabsLink.tsx +++ b/packages/components/src/TabsBase/TabsLink.tsx @@ -1,7 +1,6 @@ import React, { FC } from 'react'; import { Link } from '../Link'; -import { TabMenuItemType } from './index'; import styles from './styles.css'; export interface TabsLinkItem { @@ -14,7 +13,7 @@ export interface TabsLinkItem { /** Title of Tab */ title?: string; /** Type of Tab */ - type: TabMenuItemType.LINK; + type: 'link'; } export interface TabsLinkProps { diff --git a/packages/components/src/TabsBase/TabsMenuButton.tsx b/packages/components/src/TabsBase/TabsMenuButton.tsx index 2e92fed8e..2ddc9c46a 100644 --- a/packages/components/src/TabsBase/TabsMenuButton.tsx +++ b/packages/components/src/TabsBase/TabsMenuButton.tsx @@ -4,7 +4,6 @@ import classnames from 'clsx'; import styles from './tabsMenuButton.css'; import { TabsLinkItem } from './TabsLink'; -import { TabMenuItemType } from './index'; export interface TabsMenuButtonItem { /** @@ -14,11 +13,11 @@ export interface TabsMenuButtonItem { /** Collection of link options */ links: TabsLinkItem[]; /** Callback when Tab is selected */ - onSelect: (event: MouseEvent | KeyboardEvent, sourceItem: MenuDescriptor) => void; + onSelect?: (event: MouseEvent | KeyboardEvent, sourceItem: MenuDescriptor) => void; /** Title of Tab */ title: string; /** Type of Tab */ - type: TabMenuItemType.MENU; + type: 'menu'; } export interface TabsMenuButtonProps { @@ -32,7 +31,7 @@ export const TabsMenuButton: FC = ({ children, className, i className={classnames([className, styles.root])} CascadingMenuProps={{ initialSource: { menuItems: item.links }, - onItemClick: (sourceItem, event) => item.onSelect(event, sourceItem) + onItemClick: (sourceItem, event) => item.onSelect?.(event, sourceItem) }} > {item.title || item.label} diff --git a/packages/components/src/ThemeProvider.tsx b/packages/components/src/ThemeProvider.tsx deleted file mode 100644 index 8bf03d635..000000000 --- a/packages/components/src/ThemeProvider.tsx +++ /dev/null @@ -1,37 +0,0 @@ -import React, { ReactNode, useEffect, useState } from 'react'; -import { SaltProvider } from '@salt-ds/core'; -import { useColorMode } from '@jpmorganchase/mosaic-store'; -import { ssrClassName } from '@jpmorganchase/mosaic-theme'; - -import classnames from 'clsx'; - -const useHasHydrated = () => { - const [hasHydrated, setHasHydrated] = useState(false); - - useEffect(() => { - setHasHydrated(true); - }, []); - - return hasHydrated; -}; - -interface ThemeProviderProps { - className?: string; - children?: ReactNode; -} - -export function ThemeProvider({ className, children }: ThemeProviderProps) { - const hasHydrated = useHasHydrated(); - const colorMode = useColorMode(); - - const ssrClassname = hasHydrated ? undefined : ssrClassName; - - return ( - -
- {children} -
-
- - ); -} diff --git a/packages/components/src/TileContent/index.tsx b/packages/components/src/TileContent/index.tsx index f9dc10c40..97ffc82dd 100644 --- a/packages/components/src/TileContent/index.tsx +++ b/packages/components/src/TileContent/index.tsx @@ -1,5 +1,6 @@ import React, { FC, forwardRef, ReactNode, Ref } from 'react'; import classnames from 'clsx'; +import { useImageComponent } from '@jpmorganchase/mosaic-store'; import { useTileState } from '../TileBase'; import styles, { @@ -11,7 +12,6 @@ import styles, { titleRecipe } from './styles.css'; import { Size } from '../common/types'; -import { useImageComponent } from '../ImageProvider'; export type TileContentClassesType = { action?: string; diff --git a/packages/components/src/Tiles.tsx b/packages/components/src/Tiles.tsx index 539800db2..a8b31c202 100644 --- a/packages/components/src/Tiles.tsx +++ b/packages/components/src/Tiles.tsx @@ -1,4 +1,4 @@ -import React, { FC, forwardRef, ReactElement, Ref } from 'react'; +import { FC, forwardRef, ReactElement, Ref } from 'react'; import { TileBaseProps } from './TileBase'; import { Grid, GridProps } from './Grid'; diff --git a/packages/components/src/Typography/index.tsx b/packages/components/src/Typography/index.tsx index 99cdf2956..878505976 100644 --- a/packages/components/src/Typography/index.tsx +++ b/packages/components/src/Typography/index.tsx @@ -11,6 +11,7 @@ import { } from '@jpmorganchase/mosaic-theme'; import { withStyledTypography } from './withStyledTypography'; +export { withStyledTypography } from './withStyledTypography'; export const Action1 = withStyledTypography(action({ variant: 'action1' })); export const Action2 = withStyledTypography(action({ variant: 'action2' })); diff --git a/packages/components/src/__tests__/ReactLive.test.tsx b/packages/components/src/__tests__/ReactLive.test.tsx deleted file mode 100644 index b36592c3e..000000000 --- a/packages/components/src/__tests__/ReactLive.test.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import React from 'react'; -import { fireEvent, render, screen, waitFor } from '@testing-library/react'; -import { ReactLive } from '../ReactLive'; - -describe('GIVEN a ReactLive view', () => - it('THEN it should render code in a live view', async () => { - // arrange - const { getAllByRole } = render({'

Hello World

'}
); - - // assert - await waitFor(() => { - expect(screen.getByText('Show Live Code')).toBeInTheDocument(); - expect(screen.getByText('Hello World')).toBeInTheDocument(); - }); - // act - const showLiveCode = screen.getByText('Show Live Code'); - fireEvent.click(showLiveCode); - - // assert - expect(getAllByRole('textbox')[0]).toHaveAttribute('class', 'liveEditor'); - })); diff --git a/packages/components/src/index.tsx b/packages/components/src/index.tsx index e12a1470f..38604bd45 100644 --- a/packages/components/src/index.tsx +++ b/packages/components/src/index.tsx @@ -1,3 +1,4 @@ +'use client'; export * from './Accordion'; export * from './AudioPlayer'; export * from './Button'; @@ -12,26 +13,22 @@ export * from './Feature'; export * from './Features'; export * from './FilterToolbar'; export * from './FilterView'; -export * from './FormattedContent'; export * from './Grid'; export * from './GridBase'; export * from './HelpLinks'; export * from './Hero'; export * from './Icon'; -export * from './ImageProvider'; export * from './Impact'; export * from './Impacts'; +export * from './IsomorphicSuspense'; export * from './Label'; export * from './Link'; export * from './LinkBase'; export * from './LinkButton'; -export * from './LinkProvider'; export * from './Links'; export * from './LinkText'; export * from './List'; -export * from './Markdown'; export * from './PageFilterView'; -export * from './ReactLive'; export * from './SecondaryNavbar'; export * from './SectionHeading'; export * from './StickyHeader'; @@ -39,7 +36,6 @@ export * from './Story'; export * from './Tabs'; export * from './TabsBase'; export * from './Tag'; -export * from './ThemeProvider'; export * from './TileBase'; export * from './TileButton'; export * from './TileContent'; diff --git a/packages/components/src/styles.ts b/packages/components/src/styles.ts index 6b225edfa..b4a3d5605 100644 --- a/packages/components/src/styles.ts +++ b/packages/components/src/styles.ts @@ -27,11 +27,6 @@ import './Impact/styles.css'; import './Link/styles.css'; import './LinkText/styles.css'; import './Links/styles.css'; -import './Markdown/AnchorHeading/index.css'; -import './Markdown/BlockQuote/index.css'; -import './Markdown/Pre/index.css'; -import './Markdown/withMarkdownSpacing/styles.css'; -import './ReactLive/styles.css'; import './SecondaryNavbar/styles.css'; import './SectionHeading/styles.css'; import './StickyHeader/styles.css'; diff --git a/packages/content-editor-plugin/package.json b/packages/content-editor-plugin/package.json index 196690524..1e5278bbd 100644 --- a/packages/content-editor-plugin/package.json +++ b/packages/content-editor-plugin/package.json @@ -25,25 +25,26 @@ }, "scripts": { "build": "npm-run-all --parallel build:*", - "build:bundle": "node ../../scripts/bundle.js", + "build:bundle": "node ../../scripts/bundle.mjs", "build:types": "tsc", "clean": "npx del-cli 'dist/**' && find . -type d -empty -delete", "lint": "eslint --ignore-pattern \"**/__tests__/**\"", - "dev": "node ../../scripts/bundle.js watch" + "dev": "node ../../scripts/bundle.mjs watch" }, "devDependencies": { "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.0.0", - "typescript": "^4.8.3" + "msw": "^0.49.1", + "typescript": "^5.2.2" }, "dependencies": { "@jpmorganchase/mosaic-components": "^0.1.0-beta.62", "@jpmorganchase/mosaic-theme": "^0.1.0-beta.62", - "@salt-ds/core": "^1.11.0", - "@salt-ds/icons": "^1.7.0", - "@salt-ds/lab": "1.0.0-alpha.20", - "@salt-ds/theme": "^1.9.0", + "@salt-ds/core": "^1.13.3", + "@salt-ds/icons": "^1.9.1", + "@salt-ds/lab": "1.0.0-alpha.25", + "@salt-ds/theme": "^1.10.1", "@floating-ui/react": "^0.23.0", "@lexical/code": "^0.11.1", "@lexical/link": "^0.11.1", @@ -54,18 +55,19 @@ "@lexical/selection": "^0.11.1", "@lexical/utils": "^0.11.1", "@lexical/markdown": "^0.11.1", - "@vanilla-extract/css": "^1.6.0", + "@vanilla-extract/css": "^1.14.0", + "client-only": "^0.0.1", "clsx": "^2.0.0", "gray-matter": "^4.0.3", "lexical": "^0.11.1", "react-split": "^2.0.14", - "lodash-es": "^4.17.21", "md5": "*", + "use-debounce" : "^10.0.0", "yup": "^0.32.9", - "zustand": "^4.1.1" + "zustand": "^4.4.7" }, "peerDependencies": { - "@types/react": "^18.0.26", + "@types/react": "^18.2.46", "react": "^18.2.0", "react-dom": "^18.2.0" } diff --git a/packages/content-editor-plugin/src/LazyEditor.tsx b/packages/content-editor-plugin/src/LazyEditor.tsx new file mode 100644 index 000000000..545b2270f --- /dev/null +++ b/packages/content-editor-plugin/src/LazyEditor.tsx @@ -0,0 +1,11 @@ +import { Suspense, lazy } from 'react'; + +import type { EditorProps } from './components/Editor'; + +const LazyEditor = lazy(() => import('./components/Editor')); + +export const Editor = (props: EditorProps) => ( + Loading Editor...
}> + + +); diff --git a/packages/content-editor-plugin/src/components/ActionMenu/ActionMenu.tsx b/packages/content-editor-plugin/src/components/ActionMenu/ActionMenu.tsx index 1d440ec31..5f7deaf27 100644 --- a/packages/content-editor-plugin/src/components/ActionMenu/ActionMenu.tsx +++ b/packages/content-editor-plugin/src/components/ActionMenu/ActionMenu.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { MenuButton, MenuDescriptor } from '@salt-ds/lab'; import { Icon } from '@jpmorganchase/mosaic-components'; diff --git a/packages/content-editor-plugin/src/components/BaseToolbar/BaseToolbar.tsx b/packages/content-editor-plugin/src/components/BaseToolbar/BaseToolbar.tsx index 99a3c80fb..9af92f9ba 100644 --- a/packages/content-editor-plugin/src/components/BaseToolbar/BaseToolbar.tsx +++ b/packages/content-editor-plugin/src/components/BaseToolbar/BaseToolbar.tsx @@ -1,4 +1,4 @@ -import React, { type ReactNode } from 'react'; +import { type ReactNode } from 'react'; import classnames from 'clsx'; import styles from './BaseToolbar.css'; diff --git a/packages/content-editor-plugin/src/components/BaseTooltray/BaseTooltray.tsx b/packages/content-editor-plugin/src/components/BaseTooltray/BaseTooltray.tsx index 45d0c1f43..c06934e29 100644 --- a/packages/content-editor-plugin/src/components/BaseTooltray/BaseTooltray.tsx +++ b/packages/content-editor-plugin/src/components/BaseTooltray/BaseTooltray.tsx @@ -1,4 +1,4 @@ -import React, { type ReactNode } from 'react'; +import { type ReactNode } from 'react'; import classnames from 'clsx'; import styles from './BaseTooltray.css'; diff --git a/packages/content-editor-plugin/src/components/ContentEditor.tsx b/packages/content-editor-plugin/src/components/ContentEditor.tsx index 3a8a40dee..6a1606e4c 100644 --- a/packages/content-editor-plugin/src/components/ContentEditor.tsx +++ b/packages/content-editor-plugin/src/components/ContentEditor.tsx @@ -1,4 +1,3 @@ -import * as React from 'react'; import { RichTextPlugin } from '@lexical/react/LexicalRichTextPlugin'; import { ContentEditable } from '@lexical/react/LexicalContentEditable'; import LexicalErrorBoundary from '@lexical/react/LexicalErrorBoundary'; diff --git a/packages/content-editor-plugin/src/components/ContentPreview.tsx b/packages/content-editor-plugin/src/components/ContentPreview.tsx new file mode 100644 index 000000000..b765c4a22 --- /dev/null +++ b/packages/content-editor-plugin/src/components/ContentPreview.tsx @@ -0,0 +1,7 @@ +import useContentEditor from '../store/index'; + +export const ContentPreview = ({ children }) => { + const { previewContent } = useContentEditor(); + + return previewContent || children; +}; diff --git a/packages/content-editor-plugin/src/components/Dialog.tsx b/packages/content-editor-plugin/src/components/Dialog.tsx index 39b695f0b..f714346e2 100644 --- a/packages/content-editor-plugin/src/components/Dialog.tsx +++ b/packages/content-editor-plugin/src/components/Dialog.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { Dialog as SaltDialog, type DialogProps as SaltDialogProps } from '@salt-ds/lab'; import { themeClassName } from '@jpmorganchase/mosaic-theme'; import classnames from 'clsx'; diff --git a/packages/content-editor-plugin/src/components/Editor.tsx b/packages/content-editor-plugin/src/components/Editor.tsx index e91eaf16b..4a4d2c7dc 100644 --- a/packages/content-editor-plugin/src/components/Editor.tsx +++ b/packages/content-editor-plugin/src/components/Editor.tsx @@ -1,6 +1,5 @@ -import React, { ComponentType, FC, useRef, useState } from 'react'; +import React, { FC, useRef, useState } from 'react'; import classnames from 'clsx'; -import matter from 'gray-matter'; import { LexicalComposer } from '@lexical/react/LexicalComposer'; import { ListPlugin } from '@lexical/react/LexicalListPlugin'; import { TablePlugin } from '@lexical/react/LexicalTablePlugin'; @@ -13,8 +12,8 @@ import { $convertFromMarkdownString } from '@lexical/markdown'; import transformers from '../transformers'; import ContentEditor from './ContentEditor'; import { nodes } from '../nodes'; -import { useEditorUser, usePreviewContent } from '../store'; -import { PreviewPlugin } from '../plugins/PreviewPlugin'; +import { useEditorUser } from '../store'; +import { PreviewPlugin, type PreviewPluginProps } from '../plugins/PreviewPlugin'; import styles from './Editor.css'; import Toolbar from './Toolbar/Toolbar'; import theme from '../theme'; @@ -27,6 +26,7 @@ import { ScrollableSection } from './ScrollableSection/ScrollableSection'; import HorizontalRulePlugin from '../plugins/HorizontalRulePlugin'; import { FloatingToolbarPlugin } from '../plugins/FloatingToolbarPlugin'; import { TableActionMenuPlugin } from '../plugins/TableActionMenuPlugin'; +import { ContentPreview } from './ContentPreview'; function onError(error: Error) { console.error(error); @@ -39,40 +39,23 @@ const initialConfig = { theme }; -interface PreviewComponentProps { - source: any; - meta?: any; - components: any; -} - -interface EditorProps extends PreviewComponentProps { +export interface EditorProps extends PreviewPluginProps { content: string; - PreviewComponent?: ComponentType; - previewUrl?: string; persistUrl?: string; user?: any; + children: React.ReactNode; } const gutter = () => { - const gutter = document.createElement('div'); - gutter.className = styles.gutter; - return gutter; + const gutterDiv = document.createElement('div'); + gutterDiv.className = styles.gutter; + return gutterDiv; }; -const Editor: FC = ({ - components, - content, - persistUrl, - PreviewComponent, - previewUrl, - source, - user -}) => { - const previewContent = usePreviewContent() || source; +const Editor: FC = ({ content, persistUrl, user, meta, children, onChange }) => { const { setUser } = useEditorUser(); const [focused, setFocused] = useState(false); const containerRef = useRef(null); - const { data: meta, content: markdown } = matter(content); const handleEditorFocus = () => { setFocused(true); @@ -87,7 +70,7 @@ const Editor: FC = ({ $convertFromMarkdownString(markdown, transformers) + editorState: () => $convertFromMarkdownString(content, transformers) }} >
@@ -119,9 +102,7 @@ const Editor: FC = ({ - {PreviewComponent && ( - - )} + {children} @@ -129,7 +110,7 @@ const Editor: FC = ({ - {previewUrl ? : null} + {onChange ? : null} diff --git a/packages/content-editor-plugin/src/components/EditorControls.tsx b/packages/content-editor-plugin/src/components/EditorControls.tsx index 1cc415edd..201cb2b07 100644 --- a/packages/content-editor-plugin/src/components/EditorControls.tsx +++ b/packages/content-editor-plugin/src/components/EditorControls.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { Icon } from '@jpmorganchase/mosaic-components'; import { BaseToolbar as Toolbar } from './BaseToolbar/BaseToolbar'; import { BaseTooltray as Tooltray } from './BaseTooltray/BaseTooltray'; diff --git a/packages/content-editor-plugin/src/components/LinkEditor/EditLinkButton.tsx b/packages/content-editor-plugin/src/components/LinkEditor/EditLinkButton.tsx index d95212802..2cfbf6ab8 100644 --- a/packages/content-editor-plugin/src/components/LinkEditor/EditLinkButton.tsx +++ b/packages/content-editor-plugin/src/components/LinkEditor/EditLinkButton.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { Icon } from '@jpmorganchase/mosaic-components'; import { ToolbarButton, type ToolbarButtonProps } from '../Toolbar/ToolbarButton'; diff --git a/packages/content-editor-plugin/src/components/LinkEditor/LinkEditor.tsx b/packages/content-editor-plugin/src/components/LinkEditor/LinkEditor.tsx index 26e6e5f81..79d0cc1eb 100644 --- a/packages/content-editor-plugin/src/components/LinkEditor/LinkEditor.tsx +++ b/packages/content-editor-plugin/src/components/LinkEditor/LinkEditor.tsx @@ -6,7 +6,7 @@ import { RangeSelection, SELECTION_CHANGE_COMMAND } from 'lexical'; -import React, { ChangeEvent, useCallback, useEffect, useRef, useState } from 'react'; +import { ChangeEvent, useCallback, useEffect, useRef, useState } from 'react'; import { $isLinkNode, TOGGLE_LINK_COMMAND } from '@lexical/link'; import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'; import { useFloatingUI, Input } from '@salt-ds/core'; diff --git a/packages/content-editor-plugin/src/components/LinkEditor/SaveAdornment.tsx b/packages/content-editor-plugin/src/components/LinkEditor/SaveAdornment.tsx index 14bfc6d71..c1b276bc2 100644 --- a/packages/content-editor-plugin/src/components/LinkEditor/SaveAdornment.tsx +++ b/packages/content-editor-plugin/src/components/LinkEditor/SaveAdornment.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { Icon } from '@jpmorganchase/mosaic-components'; import type { ButtonProps } from '@jpmorganchase/mosaic-components'; import { StaticInputAdornment } from '@salt-ds/lab'; diff --git a/packages/content-editor-plugin/src/components/PersistEditDialog/PersistStatus.tsx b/packages/content-editor-plugin/src/components/PersistEditDialog/PersistStatus.tsx index bce0f5b5b..e5ca6d10a 100644 --- a/packages/content-editor-plugin/src/components/PersistEditDialog/PersistStatus.tsx +++ b/packages/content-editor-plugin/src/components/PersistEditDialog/PersistStatus.tsx @@ -1,9 +1,9 @@ -import React, { FC, ReactNode } from 'react'; +import { FC, ReactNode } from 'react'; import classnames from 'clsx'; import { P2, P6 } from '@jpmorganchase/mosaic-components'; +import { SourceWorkflowMessageEvent } from '@jpmorganchase/mosaic-types'; import styles from './PersistStatus.css'; -import { SourceWorkflowMessageEvent } from '@jpmorganchase/mosaic-types'; interface StepProps { children?: ReactNode; diff --git a/packages/content-editor-plugin/src/components/PersistEditDialog/index.tsx b/packages/content-editor-plugin/src/components/PersistEditDialog/index.tsx index 906f1a9ee..6ccb092f0 100644 --- a/packages/content-editor-plugin/src/components/PersistEditDialog/index.tsx +++ b/packages/content-editor-plugin/src/components/PersistEditDialog/index.tsx @@ -1,4 +1,4 @@ -import React, { FC, useState } from 'react'; +import { FC, useState } from 'react'; import md5 from 'md5'; import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'; import { $convertToMarkdownString } from '@lexical/markdown'; @@ -65,7 +65,7 @@ export const PersistDialog = ({ meta, persistUrl }: PersistDialogProps) => { }; const handleErrorMessage = (errorMessage: string) => { - setError(errorMessage ? errorMessage : 'Sorry - an unexpected error has occurred'); + setError(errorMessage || 'Sorry - an unexpected error has occurred'); setPrHref(null); setProgress([]); setIsRaising(false); diff --git a/packages/content-editor-plugin/src/components/Popper/Popper.tsx b/packages/content-editor-plugin/src/components/Popper/Popper.tsx index 55611685c..51064c6c8 100644 --- a/packages/content-editor-plugin/src/components/Popper/Popper.tsx +++ b/packages/content-editor-plugin/src/components/Popper/Popper.tsx @@ -1,4 +1,4 @@ -import React, { forwardRef, HTMLAttributes, ReactNode } from 'react'; +import { forwardRef, HTMLAttributes, ReactNode } from 'react'; import { Portal, useWindow } from '@salt-ds/lab'; import { themeClassName } from '@jpmorganchase/mosaic-theme'; import classnames from 'clsx'; diff --git a/packages/content-editor-plugin/src/components/SaveButton.tsx b/packages/content-editor-plugin/src/components/SaveButton.tsx index f418e26c5..969f7b6f4 100644 --- a/packages/content-editor-plugin/src/components/SaveButton.tsx +++ b/packages/content-editor-plugin/src/components/SaveButton.tsx @@ -1,4 +1,4 @@ -import React, { useState } from 'react'; +import { useState } from 'react'; import { Button, Icon } from '@jpmorganchase/mosaic-components'; import { OnChangePlugin } from '@lexical/react/LexicalOnChangePlugin'; diff --git a/packages/content-editor-plugin/src/components/StatusBanner.tsx b/packages/content-editor-plugin/src/components/StatusBanner.tsx index 92517cb23..71e6462c5 100644 --- a/packages/content-editor-plugin/src/components/StatusBanner.tsx +++ b/packages/content-editor-plugin/src/components/StatusBanner.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { Banner, BannerContent } from '@salt-ds/core'; import { usePageState } from '../store'; diff --git a/packages/content-editor-plugin/src/components/Toolbar/InsertBlockDropdown.tsx b/packages/content-editor-plugin/src/components/Toolbar/InsertBlockDropdown.tsx index 2da08ad71..70a65a3a0 100644 --- a/packages/content-editor-plugin/src/components/Toolbar/InsertBlockDropdown.tsx +++ b/packages/content-editor-plugin/src/components/Toolbar/InsertBlockDropdown.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { Dropdown, SelectionChangeHandler } from '@salt-ds/lab'; import { $createCodeNode } from '@lexical/code'; import { INSERT_ORDERED_LIST_COMMAND, INSERT_UNORDERED_LIST_COMMAND } from '@lexical/list'; diff --git a/packages/content-editor-plugin/src/components/Toolbar/InsertHorizontalRule.tsx b/packages/content-editor-plugin/src/components/Toolbar/InsertHorizontalRule.tsx index 52787037e..e87643bbe 100644 --- a/packages/content-editor-plugin/src/components/Toolbar/InsertHorizontalRule.tsx +++ b/packages/content-editor-plugin/src/components/Toolbar/InsertHorizontalRule.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { Icon } from '@jpmorganchase/mosaic-components'; import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'; import { INSERT_HORIZONTAL_RULE_COMMAND } from '@lexical/react/LexicalHorizontalRuleNode'; diff --git a/packages/content-editor-plugin/src/components/Toolbar/InsertImage.tsx b/packages/content-editor-plugin/src/components/Toolbar/InsertImage.tsx index 2b7a65192..e005389e1 100644 --- a/packages/content-editor-plugin/src/components/Toolbar/InsertImage.tsx +++ b/packages/content-editor-plugin/src/components/Toolbar/InsertImage.tsx @@ -1,4 +1,4 @@ -import React, { useState } from 'react'; +import { useState } from 'react'; import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'; import { Button, Icon } from '@jpmorganchase/mosaic-components'; import { string, object } from 'yup'; diff --git a/packages/content-editor-plugin/src/components/Toolbar/InsertLink.tsx b/packages/content-editor-plugin/src/components/Toolbar/InsertLink.tsx index 8dce426e8..54547a4a5 100644 --- a/packages/content-editor-plugin/src/components/Toolbar/InsertLink.tsx +++ b/packages/content-editor-plugin/src/components/Toolbar/InsertLink.tsx @@ -1,4 +1,4 @@ -import React, { useEffect, useState } from 'react'; +import { useEffect, useState } from 'react'; import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'; import { Button, Icon } from '@jpmorganchase/mosaic-components'; import { string, object } from 'yup'; diff --git a/packages/content-editor-plugin/src/components/Toolbar/InsertTable.tsx b/packages/content-editor-plugin/src/components/Toolbar/InsertTable.tsx index 5541ff548..86244cf68 100644 --- a/packages/content-editor-plugin/src/components/Toolbar/InsertTable.tsx +++ b/packages/content-editor-plugin/src/components/Toolbar/InsertTable.tsx @@ -1,4 +1,4 @@ -import React, { ReactElement, FC, ReactNode, MouseEventHandler, useRef, useState } from 'react'; +import { ReactElement, FC, ReactNode, MouseEventHandler, useRef, useState } from 'react'; import { Icon } from '@jpmorganchase/mosaic-components'; import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'; import { INSERT_TABLE_COMMAND } from '@lexical/table'; diff --git a/packages/content-editor-plugin/src/components/Toolbar/TextFormatTooltray.tsx b/packages/content-editor-plugin/src/components/Toolbar/TextFormatTooltray.tsx index 2d4135ca2..7375ab426 100644 --- a/packages/content-editor-plugin/src/components/Toolbar/TextFormatTooltray.tsx +++ b/packages/content-editor-plugin/src/components/Toolbar/TextFormatTooltray.tsx @@ -1,4 +1,4 @@ -import React, { useCallback, useEffect, useState } from 'react'; +import { useCallback, useEffect, useState } from 'react'; import classnames from 'clsx'; import { FORMAT_TEXT_COMMAND, diff --git a/packages/content-editor-plugin/src/components/Toolbar/Toolbar.tsx b/packages/content-editor-plugin/src/components/Toolbar/Toolbar.tsx index fbfe9e41b..c5f6545bd 100644 --- a/packages/content-editor-plugin/src/components/Toolbar/Toolbar.tsx +++ b/packages/content-editor-plugin/src/components/Toolbar/Toolbar.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import { Icon } from '@jpmorganchase/mosaic-components'; import { useEditHistory } from '../../hooks/useEditHistory'; import { usePageState } from '../../store'; diff --git a/packages/content-editor-plugin/src/components/Toolbar/ToolbarButton.tsx b/packages/content-editor-plugin/src/components/Toolbar/ToolbarButton.tsx index 960ed394e..efb5db1f9 100644 --- a/packages/content-editor-plugin/src/components/Toolbar/ToolbarButton.tsx +++ b/packages/content-editor-plugin/src/components/Toolbar/ToolbarButton.tsx @@ -1,4 +1,4 @@ -import React, { forwardRef, Ref } from 'react'; +import { forwardRef, Ref } from 'react'; import classnames from 'clsx'; import { Button, type ButtonProps, Label } from '@jpmorganchase/mosaic-components'; diff --git a/packages/content-editor-plugin/src/components/Toolbar/ToolbarSepartor.tsx b/packages/content-editor-plugin/src/components/Toolbar/ToolbarSepartor.tsx index ccacf3d35..2aebed6a9 100644 --- a/packages/content-editor-plugin/src/components/Toolbar/ToolbarSepartor.tsx +++ b/packages/content-editor-plugin/src/components/Toolbar/ToolbarSepartor.tsx @@ -1,4 +1,4 @@ -import React, { type ReactNode } from 'react'; +import { type ReactNode } from 'react'; import classnames from 'clsx'; import styles from './ToolbarSeparator.css'; diff --git a/packages/content-editor-plugin/src/hooks/useWorkflowFeed.ts b/packages/content-editor-plugin/src/hooks/useWorkflowFeed.ts index 047aa2411..c38c2e7e4 100644 --- a/packages/content-editor-plugin/src/hooks/useWorkflowFeed.ts +++ b/packages/content-editor-plugin/src/hooks/useWorkflowFeed.ts @@ -5,38 +5,49 @@ const ENDPOINT = process.env.NEXT_PUBLIC_MOSAIC_WORKFLOWS_URL || ''; export default function useDataFeed(onError, onSuccess, onComplete) { const webSocketRef = useRef(); + const socketOpenRef = useRef(false); const channelRef = useRef(); - useEffect(function subscribe() { + useEffect(() => { try { - webSocketRef.current = new WebSocket(ENDPOINT); - webSocketRef.current.onopen = () => console.log(`Workflows websocket open: ${ENDPOINT}`); - webSocketRef.current.onclose = () => console.log('Workflows websocket closed'); - - webSocketRef.current.onmessage = (msg: MessageEvent) => { - const message: SourceWorkflowMessageEvent = JSON.parse(msg.data); - - if (message.channel !== channelRef.current) { - // message is not for us; - return; - } - - if (message.status === 'ERROR') { - onError(message); - } - if (message.status === 'COMPLETE') { - onComplete(message); - } - if (message.status === 'IN_PROGRESS' || message.status === 'SUCCESS') { - onSuccess(message); - } - }; + if (!socketOpenRef.current && !webSocketRef.current) { + webSocketRef.current = new WebSocket(ENDPOINT); + + webSocketRef.current.onopen = () => { + socketOpenRef.current = true; + console.log(`Workflows websocket open: ${ENDPOINT}`); + }; + + webSocketRef.current.onclose = () => { + socketOpenRef.current = false; + console.log('Workflows websocket closed'); + }; + + webSocketRef.current.onmessage = (msg: MessageEvent) => { + const message: SourceWorkflowMessageEvent = JSON.parse(msg.data); + + if (message.channel !== channelRef.current) { + // message is not for us; + return; + } + + if (message.status === 'ERROR') { + onError(message); + } + if (message.status === 'COMPLETE') { + onComplete(message); + } + if (message.status === 'IN_PROGRESS' || message.status === 'SUCCESS') { + onSuccess(message); + } + }; + } } catch (ex) { onError(ex); } return () => { - if (webSocketRef.current && webSocketRef.current?.OPEN) { + if (webSocketRef.current && socketOpenRef.current) { channelRef.current = null; webSocketRef.current.close(); } diff --git a/packages/content-editor-plugin/src/index.ts b/packages/content-editor-plugin/src/index.ts index 566ff0ced..f56bbbaf0 100644 --- a/packages/content-editor-plugin/src/index.ts +++ b/packages/content-editor-plugin/src/index.ts @@ -1,5 +1,7 @@ -import Editor from './components/Editor'; +import 'client-only'; + +import { Editor } from './LazyEditor'; import { EditorControls } from './components/EditorControls'; -import { default as useContentEditor, usePageState } from './store'; +import useContentEditor, { usePageState } from './store'; export { Editor, EditorControls, usePageState, useContentEditor }; diff --git a/packages/content-editor-plugin/src/plugins/FloatingToolbarPlugin.tsx b/packages/content-editor-plugin/src/plugins/FloatingToolbarPlugin.tsx index 512f3f82b..009654c89 100644 --- a/packages/content-editor-plugin/src/plugins/FloatingToolbarPlugin.tsx +++ b/packages/content-editor-plugin/src/plugins/FloatingToolbarPlugin.tsx @@ -1,4 +1,4 @@ -import React, { useCallback, useEffect, useState } from 'react'; +import { useCallback, useEffect, useState } from 'react'; import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'; import { mergeRegister } from '@lexical/utils'; import { diff --git a/packages/content-editor-plugin/src/plugins/MarkdownLinkPlugin.tsx b/packages/content-editor-plugin/src/plugins/MarkdownLinkPlugin.tsx index be52dae3a..626af1131 100644 --- a/packages/content-editor-plugin/src/plugins/MarkdownLinkPlugin.tsx +++ b/packages/content-editor-plugin/src/plugins/MarkdownLinkPlugin.tsx @@ -11,7 +11,7 @@ import { createCommand, LexicalCommand } from 'lexical'; -import React, { useCallback, useEffect } from 'react'; +import { useCallback, useEffect } from 'react'; import { InsertLinkDialog } from '../components/Toolbar/InsertLink'; diff --git a/packages/content-editor-plugin/src/plugins/PreviewPlugin.tsx b/packages/content-editor-plugin/src/plugins/PreviewPlugin.tsx index 13a84abcb..67aa80ba0 100644 --- a/packages/content-editor-plugin/src/plugins/PreviewPlugin.tsx +++ b/packages/content-editor-plugin/src/plugins/PreviewPlugin.tsx @@ -2,70 +2,54 @@ import React from 'react'; import { $convertToMarkdownString } from '@lexical/markdown'; import { OnChangePlugin } from '@lexical/react/LexicalOnChangePlugin'; import type { EditorState } from 'lexical'; -import { debounce } from 'lodash-es'; +import { useDebouncedCallback } from 'use-debounce'; import transformers from '../transformers'; -import { useContentEditor } from '../index'; +import useContentEditor from '../store/index'; -interface SourceResponse { - source: { compiledSource: string; frontmatter: any; scope: any }; +export interface SourceResponse { + result?: React.ReactNode; error?: string; - exception?: string; } -async function fetchSource(previewUrl: string, markdown: string) { - const response = await fetch(previewUrl, { - method: 'POST', - headers: { - 'Content-Type': 'application/json' - }, - body: JSON.stringify({ mode: 'markdown', text: markdown }) - }); - - const data = (await response.json()) as SourceResponse; - return data; +export interface PreviewPluginProps { + onChange: ({ + source, + data + }: { + source: string; + data: Record; + }) => Promise; + meta: Record; } function usePreview(onContentChange: (markdown: string) => void) { - const handleContentChange = debounce(onContentChange, 250, { maxWait: 500 }); - - const onChange = (editorState: EditorState) => { + const onChange = useDebouncedCallback((editorState: EditorState) => { editorState.read(() => { const markdown = $convertToMarkdownString(transformers); if (markdown) { - handleContentChange(markdown); + onContentChange(markdown); } }); - }; + }, 400); return { onChange }; } -interface PreviewPluginProps { - previewUrl: string; -} - -export const PreviewPlugin = ({ previewUrl }: PreviewPluginProps) => { - const { setErrorMessage, setPreviewContent } = useContentEditor(); - +export const PreviewPlugin = ({ onChange: onChangeProp, meta }: PreviewPluginProps) => { + const { setPreviewContent, setErrorMessage } = useContentEditor(); const handleContentChange = async (content: string) => { - try { - if (content) { - const data = await fetchSource(previewUrl, content); - if (!data.error && data?.source) { - setPreviewContent(data.source); - } else { - setErrorMessage(`${data.error?.toUpperCase()}: ${data?.exception}`); - } - } - } catch (e) { - if (e instanceof Error) { - setErrorMessage(`MDX Error: ${e.message}`); + if (content) { + const previewResponse = await onChangeProp({ source: content, data: meta }); + + if (previewResponse.error) { + setErrorMessage(`MDX Error: ${previewResponse.error}`); + } else { + setPreviewContent(previewResponse.result); } } }; const { onChange } = usePreview(handleContentChange); - return ; }; diff --git a/packages/content-editor-plugin/src/plugins/TableActionMenuPlugin.tsx b/packages/content-editor-plugin/src/plugins/TableActionMenuPlugin.tsx index 6b7a1d85a..5b19effa1 100644 --- a/packages/content-editor-plugin/src/plugins/TableActionMenuPlugin.tsx +++ b/packages/content-editor-plugin/src/plugins/TableActionMenuPlugin.tsx @@ -1,4 +1,4 @@ -import React, { useCallback, useEffect, useState } from 'react'; +import { useCallback, useEffect, useState } from 'react'; import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'; import { $getSelection, $isRangeSelection, LexicalEditor } from 'lexical'; import { diff --git a/packages/content-editor-plugin/src/store/index.ts b/packages/content-editor-plugin/src/store/index.ts index 3a3b124b2..906bbb7ea 100644 --- a/packages/content-editor-plugin/src/store/index.ts +++ b/packages/content-editor-plugin/src/store/index.ts @@ -1,4 +1,4 @@ -import { useCallback } from 'react'; +import { ReactNode, useCallback } from 'react'; import { create } from 'zustand'; type PageState = 'VIEW' | 'EDIT' | 'REVIEW' | 'SAVING' | 'ERROR'; @@ -7,13 +7,13 @@ type UserType = { sid: string; displayName: string; email: string }; export interface ContentEditorState { pageState: PageState; user?: UserType; - previewContent?: any; + previewContent?: ReactNode; errorMessage?: string; isInsertingLink: boolean; setPageState: (state: PageState) => void; startEditing: () => void; stopEditing: () => void; - setPreviewContent: (content: any) => void; + setPreviewContent: (content: ReactNode) => void; setErrorMessage: (errorMessage: string) => void; setUser: (user: UserType) => void; setIsInsertingLink: (isInsertingLink: boolean) => void; @@ -35,7 +35,7 @@ const useStore = create(set => ({ setPageState: state => set({ pageState: state }), startEditing: () => set({ ...initialState, pageState: 'EDIT' }), stopEditing: () => set({ pageState: initialState.pageState }), - setPreviewContent: (content: string) => + setPreviewContent: (content: ReactNode) => set({ pageState: 'EDIT', previewContent: content, errorMessage: undefined }), setErrorMessage: (errorMessage: string) => set({ errorMessage, pageState: 'ERROR' }), setUser: (user: any) => set({ user }), diff --git a/packages/core/src/filesystems/RestrictedVolume.ts b/packages/core/src/filesystems/RestrictedVolume.ts index e36c0dd44..ee69090e6 100644 --- a/packages/core/src/filesystems/RestrictedVolume.ts +++ b/packages/core/src/filesystems/RestrictedVolume.ts @@ -14,6 +14,8 @@ class RestrictedVolume extends ImmutableFileSystem implements IVolumePartiallyMu this.#vfs = vfs; } + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + /** @ts-ignore */ promises = create(this.promises, { unlink: target => this.#vfs.unlink(target), symlink: (target, alias, type) => this.#vfs.symlink(target, alias, type), diff --git a/packages/core/src/filesystems/UnionVolume.ts b/packages/core/src/filesystems/UnionVolume.ts index db634bb84..380113545 100644 --- a/packages/core/src/filesystems/UnionVolume.ts +++ b/packages/core/src/filesystems/UnionVolume.ts @@ -13,6 +13,8 @@ export default class UnionVolume extends MutableVolume implements IUnionVolume { this.#vfs = vfs; } + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + /** @ts-ignore */ promises = create(this.promises, { readFile: (file, options) => { if (options?.includeConflicts) { diff --git a/packages/create-site/package.json b/packages/create-site/package.json index 735118488..98cdd7632 100644 --- a/packages/create-site/package.json +++ b/packages/create-site/package.json @@ -11,10 +11,10 @@ "main": "./dist/index.js", "scripts": { "build": "npm-run-all --parallel build:*", - "build:bundle": "node ./scripts/bundle.js", + "build:bundle": "node ./scripts/bundle.mjs", "clean": "npx del-cli 'dist/**' && find . -type d -empty -delete", "lint": "eslint --ignore-pattern \"**/__tests__/**\"", - "watch": "node ./scripts/bundle.js watch" + "watch": "node ./scripts/bundle.mjs watch" }, "bin": { "mosaic-create-site": "./bin/mosaic-create-site.js" diff --git a/packages/create-site/scripts/bundle.js b/packages/create-site/scripts/bundle.mjs similarity index 52% rename from packages/create-site/scripts/bundle.js rename to packages/create-site/scripts/bundle.mjs index b4d4984c1..42f0e23d5 100644 --- a/packages/create-site/scripts/bundle.js +++ b/packages/create-site/scripts/bundle.mjs @@ -1,37 +1,39 @@ -const fs = require('fs-extra'); -const esbuild = require('esbuild'); +import fs from 'fs-extra'; +import esbuild from 'esbuild'; const args = process.argv.slice(2); const watchEnabled = args[0] === 'watch'; const packageName = process.env.npm_package_name; -const watchConfig = watchEnabled - ? { - onRebuild(error, result) { - if (error) console.error(`watch build failed for ${packageName}:`, error); - else console.log(`watch build succeeded for ${packageName}:`, result); - } - } - : false; - try { - esbuild.build({ + const context = await esbuild.context({ entryPoints: ['src/create.ts', 'src/init.ts'], bundle: false, outdir: 'dist', outExtension: { '.js': '.mjs' }, platform: 'node', format: 'esm', - watch: watchConfig - }); - esbuild.build({ - entryPoints: ['src/index.ts'], - bundle: false, - outdir: 'dist', - platform: 'node', - format: 'cjs', - watch: watchConfig + plugins: [ + { + name: 'on-end', + setup(build) { + build.onEnd(({ errors = [] }) => { + if (errors.length) { + console.error(`build failed for ${packageName}:`, errors); + } else { + console.log(`build succeeded for ${packageName}:`); + } + }); + } + } + ] }); + await context.rebuild(); + if (watchEnabled) { + await context.watch(); + } + await context.serve(); + context.dispose(); } catch (e) { if (e.errors && e.errors.length > 0) { console.group(`!!!!!!! ${packageName} build errors !!!!!!!`); @@ -44,5 +46,5 @@ try { console.error(e.warnings); console.groupEnd(); } - return process.exit(1); + process.exit(1); } diff --git a/packages/icons/README.md b/packages/icons/README.md new file mode 100644 index 000000000..c93007ccf --- /dev/null +++ b/packages/icons/README.md @@ -0,0 +1,15 @@ +# Mosaic Icon Library + +`@jpmorganchase/mosaic-icons`contains icons used by the Mosaic. + +## Installation + +`yarn add @jpmorganchase/mosaic-icons` + +## Criteria + +The criteria for a component within `@jpmorganchase/mosaic-icons` is + +- It can be used outside the Mosaic site with only Mosaic theme dependencies. +- It **should not** contain any Mosaic Store, NextJS or other site specific dependencies. +- Should be client-side only components diff --git a/packages/icons/package.json b/packages/icons/package.json new file mode 100644 index 000000000..43d07bc6f --- /dev/null +++ b/packages/icons/package.json @@ -0,0 +1,52 @@ +{ + "name": "@jpmorganchase/mosaic-icons", + "description": "Mosaic - Icons", + "version": "0.1.0-beta.62", + "author": "", + "license": "Apache-2.0", + "repository": { + "type": "git", + "url": "git@github.com:jpmorganchase/mosaic.git", + "directory": "packages/icons" + }, + "type": "module", + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "style": "./dist/index.css", + "exports": { + "./index.css": "./dist/index.css", + ".": { + "style": "./dist/index.css", + "types": "./dist/index.d.ts", + "import": "./dist/index.js", + "node": "./dist/index.js" + } + }, + "files": [ + "dist" + ], + "scripts": { + "build": "npm-run-all --parallel build:*", + "build:types": "tsc", + "build:components": "node ./scripts/bundle.mjs", + "clean": "npx del-cli 'dist/**' && find . -type d -empty -delete", + "lint": "eslint --ignore-pattern \"**/__tests__/**\"", + "dev": "node ./scripts/bundle.mjs watch" + }, + "devDependencies": { + "@testing-library/jest-dom": "^5.16.5", + "@testing-library/react": "^13.4.0", + "@testing-library/user-event": "^14.0.0", + "del-cli": "^4.0.1", + "typescript": "^5.2.2" + }, + "dependencies": { + "@jpmorganchase/mosaic-theme": "^0.1.0-beta.62", + "@salt-ds/core": "^1.13.3" + }, + "peerDependencies": { + "@types/react": "^18.2.46", + "react": "^18.2.0", + "react-dom": "^18.2.0" + } +} diff --git a/packages/icons/scripts/bundle.mjs b/packages/icons/scripts/bundle.mjs new file mode 100644 index 000000000..136660f1a --- /dev/null +++ b/packages/icons/scripts/bundle.mjs @@ -0,0 +1,104 @@ +import glob from 'fast-glob'; +import esbuild from 'esbuild'; +import { nodeExternalsPlugin } from 'esbuild-node-externals'; +import saltIconNamesPlugin from './saltIconNames.js'; + +const args = process.argv.slice(2); +const watchEnabled = args[0] === 'watch'; +const packageName = process.env.npm_package_name; + +const onEndPlugin = { + name: 'on-end', + setup(build) { + build.onEnd(({ errors = [] }) => { + if (errors.length) { + console.error(`build failed for ${packageName}:`, errors); + } else { + console.log(`build succeeded for ${packageName}:`); + } + }); + } +}; + +try { + const context = await esbuild.context({ + entryPoints: glob.sync(['../../node_modules/@salt-ds/icons/dist-es/components/*.js']), + bundle: false, + outdir: 'dist', + plugins: [saltIconNamesPlugin, onEndPlugin] + }); + await context.rebuild(); + if (watchEnabled) { + await context.watch(); + } + await context.serve(); + context.dispose(); +} catch (e) { + if (e.errors && e.errors.length > 0) { + console.group(`!!!!!!! ${packageName} build errors !!!!!!!`); + console.error(e.errors); + console.groupEnd(); + } + + if (e.warnings && e.warnings.length > 0) { + console.group(`!!!!!!! ${packageName} build warnings !!!!!!!`); + console.error(e.warnings); + console.groupEnd(); + } + process.exit(1); +} + +try { + const context = await esbuild.context({ + entryPoints: glob.sync(['src/**/*.ts?(x)', 'src/*.ts?(x)'], { + ignore: ['**/__tests__'] + }), + loader: { + '.jpg': 'dataurl', + '.png': 'dataurl', + '.svg': 'text' + }, + outdir: './dist', + bundle: true, + sourcemap: false, + splitting: true, + minify: true, + format: 'esm', + target: ['es2022'], + plugins: [ + nodeExternalsPlugin(), + { + name: 'on-end', + setup(build) { + build.onEnd(({ errors = [] }) => { + if (errors.length) { + console.error(`build failed for ${packageName}:`, errors); + } else { + console.log(`build succeeded for ${packageName}:`); + } + }); + } + } + ], + external: ['react', 'react-dom'] + }); + await context.rebuild(); + if (watchEnabled) { + await context.watch(); + } + await context.serve(); + context.dispose(); +} catch (e) { + if (e.errors && e.errors.length > 0) { + console.group(`!!!!!!! ${packageName} build errors !!!!!!!`); + console.error(e.errors); + console.groupEnd(); + } + + if (e.warnings && e.warnings.length > 0) { + console.group(`!!!!!!! ${packageName} build warnings !!!!!!!`); + console.error(e.warnings); + console.groupEnd(); + } + process.exit(1); +} diff --git a/packages/theme/scripts/saltIconNames.js b/packages/icons/scripts/saltIconNames.js similarity index 90% rename from packages/theme/scripts/saltIconNames.js rename to packages/icons/scripts/saltIconNames.js index 0d59020fe..e854f5797 100644 --- a/packages/theme/scripts/saltIconNames.js +++ b/packages/icons/scripts/saltIconNames.js @@ -1,5 +1,5 @@ -const fs = require('fs'); -const path = require('path'); +import fs from 'fs'; +import path from 'path'; const typesPath = path.join(process.cwd(), 'types/saltIconNames.d.ts'); @@ -32,4 +32,4 @@ const saltIconNames = { } }; -module.exports = saltIconNames; +export default saltIconNames; diff --git a/packages/theme/src/icon/icons.ts b/packages/icons/src/index.ts similarity index 92% rename from packages/theme/src/icon/icons.ts rename to packages/icons/src/index.ts index 59623831a..064f37cf8 100644 --- a/packages/theme/src/icon/icons.ts +++ b/packages/icons/src/index.ts @@ -1,7 +1,8 @@ +'use client'; import React from 'react'; import * as SaltIcons from '@salt-ds/icons'; import type { IconProps as SaltIconProps } from '@salt-ds/icons'; -import type { saltIconNames } from '../../types/saltIconNames'; +import type { saltIconNames } from '../types/saltIconNames'; const { DEFAULT_ICON_SIZE: DEDEFAULT_ICON_SIZE, diff --git a/packages/icons/tsconfig.json b/packages/icons/tsconfig.json new file mode 100644 index 000000000..a179de405 --- /dev/null +++ b/packages/icons/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "../../tsconfig.bundle.json", + "compilerOptions": { + "rootDir": "./src", + "outDir": "./dist" + }, + "include": ["src"] +} diff --git a/packages/theme/types/saltIconNames.d.ts b/packages/icons/types/saltIconNames.d.ts similarity index 98% rename from packages/theme/types/saltIconNames.d.ts rename to packages/icons/types/saltIconNames.d.ts index b29c60f31..2b73a3105 100644 --- a/packages/theme/types/saltIconNames.d.ts +++ b/packages/icons/types/saltIconNames.d.ts @@ -96,6 +96,7 @@ export type saltIconNames = | 'doubleChevronRight' | 'doubleChevronUp' | 'download' + | 'dragRow' | 'edit' | 'editSolid' | 'error' @@ -147,6 +148,8 @@ export type saltIconNames = | 'inboxSolid' | 'info' | 'infoSolid' + | 'jigsaw' + | 'jigsawSolid' | 'key' | 'keyBackspace' | 'keyCapslock' @@ -159,6 +162,8 @@ export type saltIconNames = | 'keyTab' | 'laptop' | 'laptopSolid' + | 'layers' + | 'layersSolid' | 'light' | 'lightSolid' | 'lineChart' @@ -313,6 +318,8 @@ export type saltIconNames = | 'triangleRight' | 'triangleRightDown' | 'triangleUp' + | 'type' + | 'typeSolid' | 'undo' | 'ungroup' | 'ungroupSolid' diff --git a/packages/layouts/package.json b/packages/layouts/package.json index 53cc5a2bf..674f8daf1 100644 --- a/packages/layouts/package.json +++ b/packages/layouts/package.json @@ -25,34 +25,35 @@ }, "scripts": { "build": "npm-run-all --parallel build:*", - "build:bundle": "node ../../scripts/bundle.js", + "build:bundle": "node ../../scripts/bundle.mjs", "build:types": "tsc", "clean": "npx del-cli 'dist/**' && find . -type d -empty -delete", "lint": "eslint --ignore-pattern \"**/__tests__/**\"", - "dev": "node ../../scripts/bundle.js watch" + "dev": "node ../../scripts/bundle.mjs watch" }, "devDependencies": { "del-cli": "^4.0.1", - "esbuild-node-externals": "^1.0.2", + "esbuild": "^0.19.11", + "esbuild-node-externals": "^1.12.0", "jest-fetch-mock": "^3.0.1", - "typescript": "^4.8.3" + "typescript": "^5.2.2" }, "dependencies": { "@jpmorganchase/mosaic-components": "^0.1.0-beta.62", - "@jpmorganchase/mosaic-content-editor-plugin": "0.1.0-beta.62", "@jpmorganchase/mosaic-site-components": "^0.1.0-beta.62", + "@jpmorganchase/mosaic-site-components-next": "^0.1.0-beta.62", "@jpmorganchase/mosaic-store": "^0.1.0-beta.62", "@jpmorganchase/mosaic-theme": "^0.1.0-beta.62", - "@salt-ds/lab": "1.0.0-alpha.20", - "@vanilla-extract/css": "^1.6.0", - "@vanilla-extract/sprinkles": "^1.3.0", + "@salt-ds/lab": "1.0.0-alpha.25", + "@vanilla-extract/css": "^1.14.0", + "@vanilla-extract/sprinkles": "^1.6.1", "clsx": "^2.0.0", "lodash-es": "^4.17.21", - "next": "^13.4.1", + "next": "^14.0.0", "react-transition-group": "^4.4.5" }, "peerDependencies": { - "@types/react": "^18.0.26", + "@types/react": "^18.2.46", "react": "^18.2.0", "react-dom": "^18.2.0" } diff --git a/packages/layouts/src/Fade.tsx b/packages/layouts/src/Fade.tsx deleted file mode 100644 index bdce40fcb..000000000 --- a/packages/layouts/src/Fade.tsx +++ /dev/null @@ -1,43 +0,0 @@ -import React, { useRef } from 'react'; -import { Transition } from 'react-transition-group'; - -const transitionStyles = { - entering: { opacity: 1 }, - entered: { opacity: 1 }, - exiting: { opacity: 0 }, - exited: { opacity: 0 } -}; - -type FadeProps = { - children: React.ReactElement; - duration?: { - enter: number; - exit: number; - }; - in: boolean; - style?: React.CSSProperties; -}; - -export const Fade: React.FC = ({ children, duration, in: inProp, style }) => { - const nodeRef = useRef(null); - const defaultStyle = { - transition: `opacity ${duration?.enter}ms ease-in-out`, - opacity: 0 - }; - return ( - - {state => ( -
- {children} -
- )} -
- ); -}; diff --git a/packages/layouts/src/LayoutBase/index.tsx b/packages/layouts/src/LayoutBase/index.tsx index 4e60ca917..e58350cc6 100644 --- a/packages/layouts/src/LayoutBase/index.tsx +++ b/packages/layouts/src/LayoutBase/index.tsx @@ -1,10 +1,6 @@ import React from 'react'; -import { Spinner } from '@salt-ds/core'; import classnames from 'clsx'; -import { SidebarProvider } from '@jpmorganchase/mosaic-site-components'; -import { useIsLoading } from '../hooks/useIsLoading'; -import { Fade } from '../Fade'; import styles from './styles.css'; export const LayoutBase = ({ @@ -15,23 +11,9 @@ export const LayoutBase = ({ Header?: React.ReactNode; className?: string; children?: React.ReactNode; -}) => { - // Add a delay before showing loading state, so loading screen doesn't appear if page loads quickly - const isLoading = useIsLoading({ loadingDelay: 50 }); - return ( - -
-
{Header}
-
- -
-
- -
- - {children} -
-
-
- ); -}; +}) => ( +
+
{Header}
+
{children}
+
+); diff --git a/packages/layouts/src/LayoutColumns/index.tsx b/packages/layouts/src/LayoutColumns/index.tsx index db94a008b..efbc6b013 100644 --- a/packages/layouts/src/LayoutColumns/index.tsx +++ b/packages/layouts/src/LayoutColumns/index.tsx @@ -1,20 +1,9 @@ import React from 'react'; -import { Drawer, Sidebar, TriggerElementProps } from '@jpmorganchase/mosaic-site-components'; -import { Button, Icon, useBreakpoint } from '@jpmorganchase/mosaic-components'; +import { Sidebar } from '@jpmorganchase/mosaic-site-components'; import styles from './styles.css'; -const TriggerElement: React.FC = ({ open, onClick: handleClick }) => ( - -); - export const LayoutColumns = ({ PrimarySidebar, SecondarySidebar, @@ -25,26 +14,15 @@ export const LayoutColumns = ({ SecondarySidebar?: React.ReactNode; Footer?: React.ReactNode; children?: React.ReactNode; -}) => { - const breakpoint = useBreakpoint(); - const showDrawer = breakpoint === 'mobile' || breakpoint == 'tablet'; - return ( -
-
- {showDrawer && PrimarySidebar && ( - - {PrimarySidebar} - - )} - {!showDrawer && PrimarySidebar && {PrimarySidebar}} -
-
- {children} - {Footer && Footer} -
-
- {SecondarySidebar && !showDrawer ? {SecondarySidebar} : null} -
+}) => ( +
+
{PrimarySidebar && {PrimarySidebar}}
+
+ {children} + {Footer && Footer} +
+
+ {SecondarySidebar ? {SecondarySidebar} : null}
- ); -}; +
+); diff --git a/packages/layouts/src/LayoutColumns/styles.css.ts b/packages/layouts/src/LayoutColumns/styles.css.ts index d25ea2e81..832ff2899 100644 --- a/packages/layouts/src/LayoutColumns/styles.css.ts +++ b/packages/layouts/src/LayoutColumns/styles.css.ts @@ -29,6 +29,10 @@ const rootGridProperties = defineProperties({ const rootGridSprinkles = createSprinkles(rootGridProperties); +const responsiveGridArea = responsiveSprinkles({ + display: ['none', 'none', 'flex', 'flex'] +}); + const styles = { root: style([ style({ @@ -66,18 +70,23 @@ const styles = { marginRight: 'auto', marginLeft: 'auto' }), - sidebar: style({ - gridArea: 'layout-column-sidebar', - position: 'sticky', - top: `${config.appHeader.height}px`, - display: 'flex' - }), - toc: style({ - gridArea: 'layout-column-toc', - position: 'sticky', - top: `${config.appHeader.height}px`, - maxWidth: '500px' - }), + sidebar: style([ + style({ + gridArea: 'layout-column-sidebar', + position: 'sticky', + top: `${config.appHeader.height}px` + }), + responsiveGridArea + ]), + toc: style([ + style({ + gridArea: 'layout-column-toc', + position: 'sticky', + top: `${config.appHeader.height}px`, + maxWidth: '500px' + }), + responsiveGridArea + ]), toggleButton: style([ { diff --git a/packages/layouts/src/LayoutConfigProvider/index.tsx b/packages/layouts/src/LayoutConfigProvider/index.tsx deleted file mode 100644 index 3edfd4cc3..000000000 --- a/packages/layouts/src/LayoutConfigProvider/index.tsx +++ /dev/null @@ -1,22 +0,0 @@ -import React, { ReactNode } from 'react'; - -let LayoutContext; - -export function LayoutConfigProvider({ - children, - config -}: { - children?: ReactNode; - config: unknown; -}) { - LayoutContext = LayoutContext || React.createContext(config); - return children; -} - -export function useLayoutConfig() { - if (!LayoutContext) { - throw new Error('Trying to use `useLayoutConfig` outside of a `LayoutConfigContext`.'); - } - - return React.useContext(LayoutContext); -} diff --git a/packages/layouts/src/LayoutFullWidth/index.tsx b/packages/layouts/src/LayoutFullWidth/index.tsx index 8186b360c..42967a900 100644 --- a/packages/layouts/src/LayoutFullWidth/index.tsx +++ b/packages/layouts/src/LayoutFullWidth/index.tsx @@ -4,7 +4,7 @@ import classnames from 'clsx'; import styles from './styles.css'; export interface LayoutFullWidthProps { - Footer?: React.ReactElement; + Footer?: React.ReactNode; children: React.ReactNode; className?: string; } diff --git a/packages/layouts/src/LayoutProvider.tsx b/packages/layouts/src/LayoutProvider.tsx deleted file mode 100644 index e8f1b19b9..000000000 --- a/packages/layouts/src/LayoutProvider.tsx +++ /dev/null @@ -1,37 +0,0 @@ -import React, { FC, ReactNode } from 'react'; -import { useLayout } from '@jpmorganchase/mosaic-store'; -import { usePageState } from '@jpmorganchase/mosaic-content-editor-plugin'; - -import type { LayoutProps } from './types'; -import * as layouts from './layouts'; - -export type LayoutProviderProps = { - layoutComponents?: { - [name: string]: React.FC | undefined; - }; - LayoutProps?: LayoutProps; - children: ReactNode; - defaultLayout?: string; -}; - -export const LayoutProvider: FC = ({ - children, - layoutComponents, - LayoutProps = {}, - defaultLayout = 'FullWidth' -}) => { - const { layout: layoutInStore = defaultLayout } = useLayout(); - const { pageState } = usePageState(); - const layout = pageState !== 'VIEW' ? 'EditLayout' : layoutInStore; - - let LayoutComponent: FC | undefined = layoutComponents?.[layout] as FC; - if (!LayoutComponent) { - console.error(`Layout ${layout} is not supported, defaulting to ${defaultLayout}`); - LayoutComponent = layouts[defaultLayout]; - } - return LayoutComponent ? ( - {children} - ) : ( - <>children - ); -}; diff --git a/packages/layouts/src/hooks/useIsLoading.ts b/packages/layouts/src/hooks/useIsLoading.ts deleted file mode 100644 index 3f168bca7..000000000 --- a/packages/layouts/src/hooks/useIsLoading.ts +++ /dev/null @@ -1,41 +0,0 @@ -import { useState, useEffect } from 'react'; -import { useRouter } from 'next/router'; -import { debounce } from 'lodash-es'; - -// Unexported type from next/dist/shared/lib/mitt.d.ts -declare type Handler = (...evts: any[]) => void; - -export function useIsLoading({ loadingDelay }: { loadingDelay?: number } = {}) { - const router = useRouter(); - const [isLoading, setIsLoading] = useState(false); - - useEffect(() => { - const start = debounce(() => { - setIsLoading(true); - }, loadingDelay); - - const handleRouteChangeStart: Handler = (_url, { shallow }) => { - if (!shallow) { - start(); - } - }; - - const handleRouteChangeDone: Handler = (_url, { shallow }) => { - if (!shallow) { - setIsLoading(false); - } - }; - - router.events.on('routeChangeStart', handleRouteChangeStart); - router.events.on('routeChangeError', handleRouteChangeDone); - router.events.on('routeChangeComplete', handleRouteChangeDone); - - return () => { - router.events.off('routeChangeStart', handleRouteChangeStart); - router.events.off('routeChangeError', handleRouteChangeDone); - router.events.off('routeChangeComplete', handleRouteChangeDone); - }; - }, [router]); - - return isLoading; -} diff --git a/packages/layouts/src/index.ts b/packages/layouts/src/index.ts index f30ff3ca9..399b7413f 100644 --- a/packages/layouts/src/index.ts +++ b/packages/layouts/src/index.ts @@ -1,8 +1,5 @@ export * from './LayoutBase'; export * from './LayoutColumns'; export * from './LayoutFullWidth'; -export * from './hooks/useIsLoading'; -export * from './LayoutConfigProvider'; -export * from './LayoutProvider'; export * as layouts from './layouts'; diff --git a/packages/layouts/src/layouts/Detail/DetailContentOnly.tsx b/packages/layouts/src/layouts/Detail/DetailContentOnly.tsx index ca5a25c74..cb4fbbbf6 100644 --- a/packages/layouts/src/layouts/Detail/DetailContentOnly.tsx +++ b/packages/layouts/src/layouts/Detail/DetailContentOnly.tsx @@ -1,15 +1,8 @@ import React from 'react'; -import { AppHeader, Breadcrumbs, Footer } from '@jpmorganchase/mosaic-site-components'; -import { LayoutBase } from '../../LayoutBase'; import { LayoutFullWidth } from '../../LayoutFullWidth'; import type { LayoutProps } from '../../types'; -export const DetailContentOnly: React.FC = ({ FooterProps, children }) => ( - }> - }> - - {children} - - +export const DetailContentOnly: React.FC = ({ children, FooterComponent }) => ( + {children} ); diff --git a/packages/layouts/src/layouts/Detail/DetailHighlight.tsx b/packages/layouts/src/layouts/Detail/DetailHighlight.tsx index 78af1eecc..41774facb 100644 --- a/packages/layouts/src/layouts/Detail/DetailHighlight.tsx +++ b/packages/layouts/src/layouts/Detail/DetailHighlight.tsx @@ -1,24 +1,18 @@ import React from 'react'; -import { - AppHeader, - Breadcrumbs, - Footer, - TableOfContents -} from '@jpmorganchase/mosaic-site-components'; -import { LayoutBase } from '../../LayoutBase'; import { LayoutColumns } from '../../LayoutColumns'; import type { LayoutProps } from '../../types'; -export const DetailHighlight: React.FC = ({ FooterProps, children }) => ( - }> - } - Footer={
} - > - - {children} - - +export const DetailHighlight: React.FC = ({ + SecondarySidebarComponent, + FooterComponent, + children +}) => ( + + {children} + ); diff --git a/packages/layouts/src/layouts/Detail/DetailOverview.tsx b/packages/layouts/src/layouts/Detail/DetailOverview.tsx index 73db7abb0..f0ec1928c 100644 --- a/packages/layouts/src/layouts/Detail/DetailOverview.tsx +++ b/packages/layouts/src/layouts/Detail/DetailOverview.tsx @@ -1,15 +1,7 @@ import React from 'react'; import { HelpLinks } from '@jpmorganchase/mosaic-components'; -import { - AppHeader, - BackLink, - Breadcrumbs, - DocPaginator, - Footer, - PageNavigation -} from '@jpmorganchase/mosaic-site-components'; +import { BackLink } from '@jpmorganchase/mosaic-site-components'; -import { LayoutBase } from '../../LayoutBase'; import { LayoutColumns } from '../../LayoutColumns'; import type { LayoutProps } from '../../types'; import styles from './styles.css'; @@ -17,7 +9,9 @@ import styles from './styles.css'; export const DetailOverview: React.FC = ({ BackLinkProps, SidebarProps, - FooterProps, + FooterComponent, + DocPaginatorComponent, + PrimarySidebarComponent, children }) => { const Sidebar = ( @@ -27,21 +21,14 @@ export const DetailOverview: React.FC = ({ )} - + {PrimarySidebarComponent} {SidebarProps?.helpLinks && } ); return ( - }> - } - > - - {children} - - - + + {children} + {DocPaginatorComponent} + ); }; diff --git a/packages/layouts/src/layouts/Detail/DetailTechnical.tsx b/packages/layouts/src/layouts/Detail/DetailTechnical.tsx index 1c799f95f..33328339f 100644 --- a/packages/layouts/src/layouts/Detail/DetailTechnical.tsx +++ b/packages/layouts/src/layouts/Detail/DetailTechnical.tsx @@ -1,28 +1,20 @@ import React from 'react'; import { HelpLinks } from '@jpmorganchase/mosaic-components'; -import { - AppHeader, - DocPaginator, - BackLink, - Breadcrumbs, - Footer, - TableOfContents, - PageNavigation -} from '@jpmorganchase/mosaic-site-components'; +import { BackLink } from '@jpmorganchase/mosaic-site-components'; -import { LayoutBase } from '../../LayoutBase'; import { LayoutColumns } from '../../LayoutColumns'; import type { LayoutProps } from '../../types'; import styles from './styles.css'; export const DetailTechnical: React.FC = ({ BackLinkProps, - FooterProps, + FooterComponent, + DocPaginatorComponent, + SecondarySidebarComponent, + PrimarySidebarComponent, SidebarProps, children }) => { - const Header = ; - const PrimarySidebar = ( <> {BackLinkProps && ( @@ -30,24 +22,19 @@ export const DetailTechnical: React.FC = ({ )} - + {PrimarySidebarComponent} {SidebarProps?.helpLinks && } ); - const SecondarySidebar = ; - return ( - - } - > - - {children} - - - + + {children} + {DocPaginatorComponent} + ); }; diff --git a/packages/layouts/src/layouts/Edit/index.css.ts b/packages/layouts/src/layouts/Edit/index.css.ts new file mode 100644 index 000000000..de728d49e --- /dev/null +++ b/packages/layouts/src/layouts/Edit/index.css.ts @@ -0,0 +1,15 @@ +import { responsiveSprinkles, vars } from '@jpmorganchase/mosaic-theme'; +import { style } from '@vanilla-extract/css'; + +export default { + root: style([ + style({ + maxWidth: '100vw', + marginLeft: vars.space.horizontal.x10, + marginRight: vars.space.horizontal.x10 + }), + responsiveSprinkles({ + marginTop: ['x6', 'x6', 'x10', 'x10'] + }) + ]) +}; diff --git a/packages/layouts/src/layouts/Edit/index.tsx b/packages/layouts/src/layouts/Edit/index.tsx index fca7f7d13..6c7b8ea3a 100644 --- a/packages/layouts/src/layouts/Edit/index.tsx +++ b/packages/layouts/src/layouts/Edit/index.tsx @@ -1,35 +1,13 @@ -import React, { useEffect } from 'react'; -import { useRouter } from 'next/router'; -import { useContentEditor } from '@jpmorganchase/mosaic-content-editor-plugin'; -import { AppHeader } from '@jpmorganchase/mosaic-site-components'; +import type { ReactNode } from 'react'; -import { LayoutBase } from '../../LayoutBase'; -import type { LayoutProps } from '../../types'; -import styles from './styles.css'; +import styles from './index.css'; -export const EditLayout: React.FC = ({ children }) => { - const router = useRouter(); - const { pageState, stopEditing } = useContentEditor(); +export interface EditLayoutProps { + children: ReactNode; +} - useEffect(() => { - const handleRouteChange = () => { - if (pageState === 'EDIT') { - stopEditing(); - } - }; - - router.events.on('routeChangeStart', handleRouteChange); - - return () => { - router.events.off('routeChangeStart', handleRouteChange); - }; - }, [pageState, router.events, stopEditing]); - - return ( - }> -
- {children} -
-
- ); -}; +export const Edit = ({ children }: EditLayoutProps) => ( +
+ {children} +
+); diff --git a/packages/layouts/src/layouts/Edit/styles.css.ts b/packages/layouts/src/layouts/Edit/styles.css.ts deleted file mode 100644 index f505763a5..000000000 --- a/packages/layouts/src/layouts/Edit/styles.css.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { responsiveSprinkles, vars, config } from '@jpmorganchase/mosaic-theme'; -import { globalStyle, style } from '@vanilla-extract/css'; - -const base = style({}); - -globalStyle(`${base} > main`, { - height: `calc(100% + ${config.appHeader.height}px)` -}); - -export default { - root: style([ - style({ - maxWidth: '100vw', - marginLeft: vars.space.horizontal.x10, - marginRight: vars.space.horizontal.x10 - }), - responsiveSprinkles({ - marginTop: ['x6', 'x6', 'x10', 'x10'] - }) - ]), - base -}; diff --git a/packages/layouts/src/layouts/FullWidth/index.tsx b/packages/layouts/src/layouts/FullWidth/index.tsx index 065831856..5eee18b6a 100644 --- a/packages/layouts/src/layouts/FullWidth/index.tsx +++ b/packages/layouts/src/layouts/FullWidth/index.tsx @@ -1,12 +1,8 @@ import React from 'react'; -import { AppHeader } from '@jpmorganchase/mosaic-site-components'; -import { LayoutBase } from '../../LayoutBase'; import { LayoutFullWidth } from '../../LayoutFullWidth'; import type { LayoutProps } from '../../types'; export const FullWidth: React.FC = ({ children }) => ( - }> - {children} - + {children} ); diff --git a/packages/layouts/src/layouts/Landing/index.tsx b/packages/layouts/src/layouts/Landing/index.tsx index d68d01c2e..efd9896f3 100644 --- a/packages/layouts/src/layouts/Landing/index.tsx +++ b/packages/layouts/src/layouts/Landing/index.tsx @@ -1,12 +1,8 @@ import React from 'react'; -import { AppHeader, Footer } from '@jpmorganchase/mosaic-site-components'; -import { LayoutBase } from '../../LayoutBase'; import { LayoutFullWidth } from '../../LayoutFullWidth'; import type { LayoutProps } from '../../types'; -export const Landing: React.FC = ({ FooterProps, children }) => ( - }> - }>{children} - +export const Landing: React.FC = ({ FooterComponent, children }) => ( + {children} ); diff --git a/packages/layouts/src/layouts/Newsletter/index.tsx b/packages/layouts/src/layouts/Newsletter/index.tsx index afc2b1fbf..eb58137c4 100644 --- a/packages/layouts/src/layouts/Newsletter/index.tsx +++ b/packages/layouts/src/layouts/Newsletter/index.tsx @@ -1,29 +1,27 @@ import React from 'react'; -import { AppHeader, DocPaginator, BackLink, Footer } from '@jpmorganchase/mosaic-site-components'; +import { BackLink } from '@jpmorganchase/mosaic-site-components'; -import { LayoutBase } from '../../LayoutBase'; import { LayoutColumns } from '../../LayoutColumns'; import type { LayoutProps } from '../../types'; import styles from '../Detail/styles.css'; export interface NewsletterProps extends LayoutProps {} -export const Newsletter: React.FC = ({ children, BackLinkProps, FooterProps }) => { +export const Newsletter: React.FC = ({ + children, + BackLinkProps, + FooterComponent, + DocPaginatorComponent +}) => { const Sidebar = BackLinkProps?.link ? (
) : null; return ( - }> - } - SecondarySidebar={null} - > - {children} - - - + + {children} + {DocPaginatorComponent} + ); }; diff --git a/packages/layouts/src/layouts/Product/ProductDiscover.tsx b/packages/layouts/src/layouts/Product/ProductDiscover.tsx index 1d91c9f5a..e443b9528 100644 --- a/packages/layouts/src/layouts/Product/ProductDiscover.tsx +++ b/packages/layouts/src/layouts/Product/ProductDiscover.tsx @@ -1,15 +1,8 @@ import React from 'react'; -import { AppHeader, Breadcrumbs, Footer } from '@jpmorganchase/mosaic-site-components'; -import { LayoutBase } from '../../LayoutBase'; import { LayoutFullWidth } from '../../LayoutFullWidth'; import type { LayoutProps } from '../../types'; -export const ProductDiscover: React.FC = ({ FooterProps, children }) => ( - }> - }> - - {children} - - +export const ProductDiscover: React.FC = ({ FooterComponent, children }) => ( + {children} ); diff --git a/packages/layouts/src/layouts/Product/ProductPreview.tsx b/packages/layouts/src/layouts/Product/ProductPreview.tsx index 3bed5ab79..ff67d82c9 100644 --- a/packages/layouts/src/layouts/Product/ProductPreview.tsx +++ b/packages/layouts/src/layouts/Product/ProductPreview.tsx @@ -1,12 +1,8 @@ import React from 'react'; -import { AppHeader, Footer } from '@jpmorganchase/mosaic-site-components'; -import { LayoutBase } from '../../LayoutBase'; import { LayoutFullWidth } from '../../LayoutFullWidth'; import type { LayoutProps } from '../../types'; -export const ProductPreview: React.FC = ({ FooterProps, children }) => ( - }> - }>{children} - +export const ProductPreview: React.FC = ({ FooterComponent, children }) => ( + {children} ); diff --git a/packages/layouts/src/layouts/PythonDoc/index.tsx b/packages/layouts/src/layouts/PythonDoc/index.tsx deleted file mode 100644 index 9b9c528a2..000000000 --- a/packages/layouts/src/layouts/PythonDoc/index.tsx +++ /dev/null @@ -1,86 +0,0 @@ -import React from 'react'; -import classnames from 'clsx'; -import { HelpLinks, Hero } from '@jpmorganchase/mosaic-components'; -import { - AppHeader, - BackLink, - Breadcrumbs, - DocPaginator, - Footer, - TableOfContents, - PageNavigation -} from '@jpmorganchase/mosaic-site-components'; - -import { LayoutBase } from '../../LayoutBase'; -import { LayoutColumns } from '../../LayoutColumns'; -import type { LayoutProps } from '../../types'; -import styles from './styles.css'; - -// TODO add image support to Hero via Mosaic plugin or provide a custom Layout -const APIHero = ({ description, name, pageType, releaseDate, title, version }) => ( - -); - -export const PythonDoc: React.FC = ({ - BackLinkProps, - FooterProps, - SidebarProps, - ToCProps, - children, - meta -}) => { - // Format the toc so that function calls do not have any arguments - // init(arg1, arg2) becomes init() - const formattedTableOfContentsItems = ToCProps?.items?.map(({ text, ...rest }) => ({ - ...rest, - text: text.replace(/\s*\(.*?\).*/g, '() ') - })); - - const PrimarySidebar = ( - <> - {BackLinkProps && ( -
- -
- )} - - {SidebarProps?.helpLinks && } - - ); - - const SecondarySidebar = ; - - return ( - }> - } - > -
- - {meta?.data?.pageType === 'root' || meta?.data?.pageType === 'index' ? ( - - ) : null} - {children} - -
-
-
- ); -}; diff --git a/packages/layouts/src/layouts/PythonDoc/styles.css.ts b/packages/layouts/src/layouts/PythonDoc/styles.css.ts deleted file mode 100644 index 3b51cba67..000000000 --- a/packages/layouts/src/layouts/PythonDoc/styles.css.ts +++ /dev/null @@ -1,67 +0,0 @@ -import { style } from '@vanilla-extract/css'; -import { responsiveSprinkles } from '@jpmorganchase/mosaic-theme'; - -export default { - root: style({ - width: '100%', - zIndex: 1, - display: 'flex' - }), - - main: style({ - width: '100%', - minWidth: 0, - display: 'flex', - justifyContent: 'center' - }), - - locked: style({ - width: '100%', - minWidth: 0, - display: 'flex', - justifyContent: 'center', - position: 'relative', - overflow: 'hidden' - }), - - columnWrapper: style([ - style({ - display: 'flex', - width: '100%', - maxWidth: '1128px' - }), - responsiveSprinkles({ - marginX: ['x8', 'x8', 'x8', 'x8'] - }) - ]), - - contentScrollMargin: style({}), - - contentColumn: style([ - style({ - display: 'flex', - flexDirection: 'column', - justifyContent: 'stretch', - zIndex: 2, - width: '100%' - }), - responsiveSprinkles({ - paddingTop: ['x10', 'x10', 'x20', 'x20'], - marginRight: ['none', 'none', 'none', 'x6'] - }) - ]), - - contentBody: style([ - style({ - flexGrow: 1 - }) - ]), - - sidebarHeader: style({ flexShrink: 0 }), - - wrapper: style({ - width: '100%', - overflow: 'hidden', - position: 'relative' - }) -}; diff --git a/packages/layouts/src/layouts/TypeDoc/ExportsSidebar/index.tsx b/packages/layouts/src/layouts/TypeDoc/ExportsSidebar/index.tsx deleted file mode 100644 index ee3507a37..000000000 --- a/packages/layouts/src/layouts/TypeDoc/ExportsSidebar/index.tsx +++ /dev/null @@ -1,36 +0,0 @@ -import React from 'react'; -import { Caption1, Caption2, Link } from '@jpmorganchase/mosaic-components'; - -import styles from './styles.css'; - -export type Item = { level: number; id: string; text: string }; - -function TableOfContentsItem({ item }) { - return ( -
  • - - {item.text} - -
  • - ); -} - -export function ExportsSidebar({ items }) { - if (!items) { - throw new Error('No `items` specified for Exports Sidebar TOC.'); - } - if (!items.length) { - return null; - } - - return ( - - ); -} diff --git a/packages/layouts/src/layouts/TypeDoc/ExportsSidebar/styles.css.ts b/packages/layouts/src/layouts/TypeDoc/ExportsSidebar/styles.css.ts deleted file mode 100644 index 85cc65cd7..000000000 --- a/packages/layouts/src/layouts/TypeDoc/ExportsSidebar/styles.css.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { style } from '@vanilla-extract/css'; -import { link, navigableBorder, responsiveSprinkles } from '@jpmorganchase/mosaic-theme'; - -export default { - root: style({ - position: 'sticky' - }), - list: style([ - style({ - listStyle: 'none' - }), - responsiveSprinkles({ - marginTop: ['x4', 'x4', 'x4', 'x4'], - marginBottom: ['x6', 'x6', 'x6', 'x6'], - padding: ['none', 'none', 'none', 'none'] - }) - ]), - item: style([ - { - cursor: 'pointer', - position: 'relative', - display: 'block' - }, - navigableBorder({ - variant: 'unselected', - borderLeftWidth: 'medium' - }), - navigableBorder({ - variant: 'hover', - borderLeftWidth: 'medium' - }), - navigableBorder({ - variant: 'selected', - borderLeftWidth: 'medium' - }), - link({ variant: 'selectable' }), - responsiveSprinkles({ - paddingTop: ['x2', 'x2', 'x2', 'x2'], - paddingRight: ['x4', 'x4', 'x4', 'x4'], - paddingBottom: ['x2', 'x2', 'x2', 'x2'], - paddingLeft: ['x4', 'x4', 'x4', 'x4'] - }) - ]) -}; diff --git a/packages/layouts/src/layouts/TypeDoc/icons.css b/packages/layouts/src/layouts/TypeDoc/icons.css deleted file mode 100644 index 29d5aae5f..000000000 --- a/packages/layouts/src/layouts/TypeDoc/icons.css +++ /dev/null @@ -1,944 +0,0 @@ -.tsd-kind-icon { - display: block; - position: relative; - padding-left: 20px; - text-indent: -20px; -} -.tsd-kind-icon:before { - content: ''; - display: inline-block; - vertical-align: middle; - width: 17px; - height: 17px; - margin: 0 8px 2px 0; - background-image: url(./icons.png); -} -@media (-webkit-min-device-pixel-ratio: 1.5), (min-resolution: 144dpi) { - .tsd-kind-icon:before { - background-image: url(./icons@2x.png); - background-size: 238px 204px; - } -} - -.tsd-signature.tsd-kind-icon:before { - background-position: 0 -153px; -} - -.tsd-kind-object-literal > .tsd-kind-icon:before { - background-position: 0px -17px; -} -.tsd-kind-object-literal.tsd-is-protected > .tsd-kind-icon:before { - background-position: -17px -17px; -} -.tsd-kind-object-literal.tsd-is-private > .tsd-kind-icon:before { - background-position: -34px -17px; -} - -.tsd-kind-class > .tsd-kind-icon:before { - background-position: 0px -34px; -} -.tsd-kind-classes > .tsd-kind-icon:before { - background-position: 0px -34px; -} -.tsd-kind-class.tsd-is-protected > .tsd-kind-icon:before { - background-position: -17px -34px; -} -.tsd-kind-class.tsd-is-private > .tsd-kind-icon:before { - background-position: -34px -34px; -} - -.tsd-kind-class.tsd-has-type-parameter > .tsd-kind-icon:before { - background-position: 0px -51px; -} -.tsd-kind-class.tsd-has-type-parameter.tsd-is-protected > .tsd-kind-icon:before { - background-position: -17px -51px; -} -.tsd-kind-class.tsd-has-type-parameter.tsd-is-private > .tsd-kind-icon:before { - background-position: -34px -51px; -} - -.tsd-kind-interface > .tsd-kind-icon:before { - background-position: 0px -68px; -} -.tsd-kind-interfaces > .tsd-kind-icon:before { - background-position: 0px -68px; -} -.tsd-kind-interface.tsd-is-protected > .tsd-kind-icon:before { - background-position: -17px -68px; -} -.tsd-kind-interface.tsd-is-private > .tsd-kind-icon:before { - background-position: -34px -68px; -} - -.tsd-kind-interface.tsd-has-type-parameter > .tsd-kind-icon:before { - background-position: 0px -85px; -} -.tsd-kind-interface.tsd-has-type-parameter.tsd-is-protected > .tsd-kind-icon:before { - background-position: -17px -85px; -} -.tsd-kind-interface.tsd-has-type-parameter.tsd-is-private > .tsd-kind-icon:before { - background-position: -34px -85px; -} - -.tsd-kind-namespace > .tsd-kind-icon:before { - background-position: 0px -102px; -} -.tsd-kind-namespace.tsd-is-protected > .tsd-kind-icon:before { - background-position: -17px -102px; -} -.tsd-kind-namespace.tsd-is-private > .tsd-kind-icon:before { - background-position: -34px -102px; -} - -.tsd-kind-module > .tsd-kind-icon:before { - background-position: 0px -102px; -} -.tsd-kind-module.tsd-is-protected > .tsd-kind-icon:before { - background-position: -17px -102px; -} -.tsd-kind-module.tsd-is-private > .tsd-kind-icon:before { - background-position: -34px -102px; -} - -.tsd-kind-enum > .tsd-kind-icon:before { - background-position: 0px -119px; -} -.tsd-kind-enums > .tsd-kind-icon:before { - background-position: 0px -119px; -} -.tsd-kind-enum.tsd-is-protected > .tsd-kind-icon:before { - background-position: -17px -119px; -} -.tsd-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -34px -119px; -} - -.tsd-kind-enum-member > .tsd-kind-icon:before { - background-position: 0px -136px; -} -.tsd-kind-enum-member.tsd-is-protected > .tsd-kind-icon:before { - background-position: -17px -136px; -} -.tsd-kind-enum-member.tsd-is-private > .tsd-kind-icon:before { - background-position: -34px -136px; -} - -.tsd-kind-signature > .tsd-kind-icon:before { - background-position: 0px -153px; -} -.tsd-kind-signature.tsd-is-protected > .tsd-kind-icon:before { - background-position: -17px -153px; -} -.tsd-kind-signature.tsd-is-private > .tsd-kind-icon:before { - background-position: -34px -153px; -} - -.tsd-kind-type-alias > .tsd-kind-icon:before { - background-position: 0px -170px; -} -.tsd-kind-type-alias.tsd-is-protected > .tsd-kind-icon:before { - background-position: -17px -170px; -} -.tsd-kind-type-alias.tsd-is-private > .tsd-kind-icon:before { - background-position: -34px -170px; -} - -.tsd-kind-type-alias.tsd-has-type-parameter > .tsd-kind-icon:before { - background-position: 0px -187px; -} -.tsd-kind-type-alias.tsd-has-type-parameter.tsd-is-protected > .tsd-kind-icon:before { - background-position: -17px -187px; -} -.tsd-kind-type-alias.tsd-has-type-parameter.tsd-is-private > .tsd-kind-icon:before { - background-position: -34px -187px; -} - -.tsd-kind-variable > .tsd-kind-icon:before { - background-position: -136px -0px; -} -.tsd-kind-variable.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -0px; -} -.tsd-kind-variable.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -0px; -} -.tsd-kind-variable.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -0px; -} -.tsd-kind-variable.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -68px -0px; -} -.tsd-kind-variable.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { - background-position: -85px -0px; -} -.tsd-kind-variable.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -102px -0px; -} -.tsd-kind-variable.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -0px; -} -.tsd-kind-variable.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -0px; -} -.tsd-kind-variable.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { - background-position: -187px -0px; -} -.tsd-kind-variable.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -0px; -} -.tsd-kind-variable.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -0px; -} -.tsd-kind-variable.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -221px -0px; -} - -.tsd-kind-property > .tsd-kind-icon:before { - background-position: -136px -0px; -} -.tsd-kind-property.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -0px; -} -.tsd-kind-property.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -0px; -} -.tsd-kind-property.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -0px; -} -.tsd-kind-property.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -68px -0px; -} -.tsd-kind-property.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { - background-position: -85px -0px; -} -.tsd-kind-property.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -102px -0px; -} -.tsd-kind-property.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -0px; -} -.tsd-kind-property.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -0px; -} -.tsd-kind-property.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { - background-position: -187px -0px; -} -.tsd-kind-property.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -0px; -} -.tsd-kind-property.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -0px; -} -.tsd-kind-property.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -221px -0px; -} - -.tsd-kind-get-signature > .tsd-kind-icon:before { - background-position: -136px -17px; -} -.tsd-kind-get-signature.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -17px; -} -.tsd-kind-get-signature.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -17px; -} -.tsd-kind-get-signature.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -17px; -} -.tsd-kind-get-signature.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -68px -17px; -} -.tsd-kind-get-signature.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { - background-position: -85px -17px; -} -.tsd-kind-get-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -102px -17px; -} -.tsd-kind-get-signature.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -17px; -} -.tsd-kind-get-signature.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -17px; -} -.tsd-kind-get-signature.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { - background-position: -187px -17px; -} -.tsd-kind-get-signature.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -17px; -} -.tsd-kind-get-signature.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -17px; -} -.tsd-kind-get-signature.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -221px -17px; -} - -.tsd-kind-set-signature > .tsd-kind-icon:before { - background-position: -136px -34px; -} -.tsd-kind-set-signature.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -34px; -} -.tsd-kind-set-signature.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -34px; -} -.tsd-kind-set-signature.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -34px; -} -.tsd-kind-set-signature.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -68px -34px; -} -.tsd-kind-set-signature.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { - background-position: -85px -34px; -} -.tsd-kind-set-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -102px -34px; -} -.tsd-kind-set-signature.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -34px; -} -.tsd-kind-set-signature.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -34px; -} -.tsd-kind-set-signature.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { - background-position: -187px -34px; -} -.tsd-kind-set-signature.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -34px; -} -.tsd-kind-set-signature.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -34px; -} -.tsd-kind-set-signature.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -221px -34px; -} - -.tsd-kind-accessor > .tsd-kind-icon:before { - background-position: -136px -51px; -} -.tsd-kind-accessor.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -51px; -} -.tsd-kind-accessor.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -51px; -} -.tsd-kind-accessor.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -51px; -} -.tsd-kind-accessor.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -68px -51px; -} -.tsd-kind-accessor.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { - background-position: -85px -51px; -} -.tsd-kind-accessor.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -102px -51px; -} -.tsd-kind-accessor.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -51px; -} -.tsd-kind-accessor.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -51px; -} -.tsd-kind-accessor.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { - background-position: -187px -51px; -} -.tsd-kind-accessor.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -51px; -} -.tsd-kind-accessor.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -51px; -} -.tsd-kind-accessor.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -221px -51px; -} - -.tsd-kind-function > .tsd-kind-icon:before { - background-position: -136px -68px; -} -.tsd-kind-function.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -68px; -} -.tsd-kind-function.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -68px; -} -.tsd-kind-function.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -68px; -} -.tsd-kind-function.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -68px -68px; -} -.tsd-kind-function.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { - background-position: -85px -68px; -} -.tsd-kind-function.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -102px -68px; -} -.tsd-kind-function.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -68px; -} -.tsd-kind-function.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -68px; -} -.tsd-kind-function.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { - background-position: -187px -68px; -} -.tsd-kind-function.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -68px; -} -.tsd-kind-function.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -68px; -} -.tsd-kind-function.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -221px -68px; -} - -.tsd-kind-method > .tsd-kind-icon:before { - background-position: -136px -68px; -} -.tsd-kind-method.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -68px; -} -.tsd-kind-method.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -68px; -} -.tsd-kind-method.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -68px; -} -.tsd-kind-method.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -68px -68px; -} -.tsd-kind-method.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { - background-position: -85px -68px; -} -.tsd-kind-method.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -102px -68px; -} -.tsd-kind-method.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -68px; -} -.tsd-kind-method.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -68px; -} -.tsd-kind-method.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { - background-position: -187px -68px; -} -.tsd-kind-method.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -68px; -} -.tsd-kind-method.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -68px; -} -.tsd-kind-method.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -221px -68px; -} - -.tsd-kind-call-signature > .tsd-kind-icon:before { - background-position: -136px -68px; -} -.tsd-kind-call-signature.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -68px; -} -.tsd-kind-call-signature.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -68px; -} -.tsd-kind-call-signature.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -68px; -} -.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -68px -68px; -} -.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { - background-position: -85px -68px; -} -.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -102px -68px; -} -.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -68px; -} -.tsd-kind-call-signature.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -68px; -} -.tsd-kind-call-signature.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { - background-position: -187px -68px; -} -.tsd-kind-call-signature.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -68px; -} -.tsd-kind-call-signature.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -68px; -} -.tsd-kind-call-signature.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -221px -68px; -} - -.tsd-kind-function.tsd-has-type-parameter > .tsd-kind-icon:before { - background-position: -136px -85px; -} -.tsd-kind-function.tsd-has-type-parameter.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -85px; -} -.tsd-kind-function.tsd-has-type-parameter.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -85px; -} -.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -85px; -} -.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -68px -85px; -} -.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -85px -85px; -} -.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -102px -85px; -} -.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-private - > .tsd-kind-icon:before { - background-position: -119px -85px; -} -.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -85px; -} -.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-enum.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -187px -85px; -} -.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-enum.tsd-is-private - > .tsd-kind-icon:before { - background-position: -119px -85px; -} -.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -85px; -} -.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-interface.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -221px -85px; -} - -.tsd-kind-method.tsd-has-type-parameter > .tsd-kind-icon:before { - background-position: -136px -85px; -} -.tsd-kind-method.tsd-has-type-parameter.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -85px; -} -.tsd-kind-method.tsd-has-type-parameter.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -85px; -} -.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -85px; -} -.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -68px -85px; -} -.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -85px -85px; -} -.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -102px -85px; -} -.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-private - > .tsd-kind-icon:before { - background-position: -119px -85px; -} -.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -85px; -} -.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-enum.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -187px -85px; -} -.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-enum.tsd-is-private - > .tsd-kind-icon:before { - background-position: -119px -85px; -} -.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -85px; -} -.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-interface.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -221px -85px; -} - -.tsd-kind-constructor > .tsd-kind-icon:before { - background-position: -136px -102px; -} -.tsd-kind-constructor.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -102px; -} -.tsd-kind-constructor.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -102px; -} -.tsd-kind-constructor.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -102px; -} -.tsd-kind-constructor.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -68px -102px; -} -.tsd-kind-constructor.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { - background-position: -85px -102px; -} -.tsd-kind-constructor.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -102px -102px; -} -.tsd-kind-constructor.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -102px; -} -.tsd-kind-constructor.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -102px; -} -.tsd-kind-constructor.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { - background-position: -187px -102px; -} -.tsd-kind-constructor.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -102px; -} -.tsd-kind-constructor.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -102px; -} -.tsd-kind-constructor.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -221px -102px; -} - -.tsd-kind-constructor-signature > .tsd-kind-icon:before { - background-position: -136px -102px; -} -.tsd-kind-constructor-signature.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -102px; -} -.tsd-kind-constructor-signature.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -102px; -} -.tsd-kind-constructor-signature.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -102px; -} -.tsd-kind-constructor-signature.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -68px -102px; -} -.tsd-kind-constructor-signature.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { - background-position: -85px -102px; -} -.tsd-kind-constructor-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -102px -102px; -} -.tsd-kind-constructor-signature.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -102px; -} -.tsd-kind-constructor-signature.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -102px; -} -.tsd-kind-constructor-signature.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { - background-position: -187px -102px; -} -.tsd-kind-constructor-signature.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -102px; -} -.tsd-kind-constructor-signature.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -102px; -} -.tsd-kind-constructor-signature.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -221px -102px; -} - -.tsd-kind-index-signature > .tsd-kind-icon:before { - background-position: -136px -119px; -} -.tsd-kind-index-signature.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -119px; -} -.tsd-kind-index-signature.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -119px; -} -.tsd-kind-index-signature.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -119px; -} -.tsd-kind-index-signature.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -68px -119px; -} -.tsd-kind-index-signature.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { - background-position: -85px -119px; -} -.tsd-kind-index-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -102px -119px; -} -.tsd-kind-index-signature.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -119px; -} -.tsd-kind-index-signature.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -119px; -} -.tsd-kind-index-signature.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { - background-position: -187px -119px; -} -.tsd-kind-index-signature.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -119px; -} -.tsd-kind-index-signature.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -119px; -} -.tsd-kind-index-signature.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -221px -119px; -} - -.tsd-kind-event > .tsd-kind-icon:before { - background-position: -136px -136px; -} -.tsd-kind-event.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -136px; -} -.tsd-kind-event.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -136px; -} -.tsd-kind-event.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -136px; -} -.tsd-kind-event.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -68px -136px; -} -.tsd-kind-event.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { - background-position: -85px -136px; -} -.tsd-kind-event.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -102px -136px; -} -.tsd-kind-event.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -136px; -} -.tsd-kind-event.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -136px; -} -.tsd-kind-event.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { - background-position: -187px -136px; -} -.tsd-kind-event.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -136px; -} -.tsd-kind-event.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -136px; -} -.tsd-kind-event.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -221px -136px; -} - -.tsd-is-static > .tsd-kind-icon:before { - background-position: -136px -153px; -} -.tsd-is-static.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -153px; -} -.tsd-is-static.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -153px; -} -.tsd-is-static.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -153px; -} -.tsd-is-static.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -68px -153px; -} -.tsd-is-static.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { - background-position: -85px -153px; -} -.tsd-is-static.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -102px -153px; -} -.tsd-is-static.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -153px; -} -.tsd-is-static.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -153px; -} -.tsd-is-static.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { - background-position: -187px -153px; -} -.tsd-is-static.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -153px; -} -.tsd-is-static.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -153px; -} -.tsd-is-static.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -221px -153px; -} - -.tsd-is-static.tsd-kind-function > .tsd-kind-icon:before { - background-position: -136px -170px; -} -.tsd-is-static.tsd-kind-function.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -170px; -} -.tsd-is-static.tsd-kind-function.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -170px; -} -.tsd-is-static.tsd-kind-function.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -170px; -} -.tsd-is-static.tsd-kind-function.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -68px -170px; -} -.tsd-is-static.tsd-kind-function.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { - background-position: -85px -170px; -} -.tsd-is-static.tsd-kind-function.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -102px -170px; -} -.tsd-is-static.tsd-kind-function.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -170px; -} -.tsd-is-static.tsd-kind-function.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -170px; -} -.tsd-is-static.tsd-kind-function.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { - background-position: -187px -170px; -} -.tsd-is-static.tsd-kind-function.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -170px; -} -.tsd-is-static.tsd-kind-function.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -170px; -} -.tsd-is-static.tsd-kind-function.tsd-parent-kind-interface.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -221px -170px; -} - -.tsd-is-static.tsd-kind-method > .tsd-kind-icon:before { - background-position: -136px -170px; -} -.tsd-is-static.tsd-kind-method.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -170px; -} -.tsd-is-static.tsd-kind-method.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -170px; -} -.tsd-is-static.tsd-kind-method.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -170px; -} -.tsd-is-static.tsd-kind-method.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -68px -170px; -} -.tsd-is-static.tsd-kind-method.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { - background-position: -85px -170px; -} -.tsd-is-static.tsd-kind-method.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -102px -170px; -} -.tsd-is-static.tsd-kind-method.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -170px; -} -.tsd-is-static.tsd-kind-method.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -170px; -} -.tsd-is-static.tsd-kind-method.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { - background-position: -187px -170px; -} -.tsd-is-static.tsd-kind-method.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -170px; -} -.tsd-is-static.tsd-kind-method.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -170px; -} -.tsd-is-static.tsd-kind-method.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -221px -170px; -} - -.tsd-is-static.tsd-kind-call-signature > .tsd-kind-icon:before { - background-position: -136px -170px; -} -.tsd-is-static.tsd-kind-call-signature.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -170px; -} -.tsd-is-static.tsd-kind-call-signature.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -170px; -} -.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -170px; -} -.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -68px -170px; -} -.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -85px -170px; -} -.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -102px -170px; -} -.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-private - > .tsd-kind-icon:before { - background-position: -119px -170px; -} -.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -170px; -} -.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-enum.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -187px -170px; -} -.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -170px; -} -.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -170px; -} -.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-interface.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -221px -170px; -} - -.tsd-is-static.tsd-kind-event > .tsd-kind-icon:before { - background-position: -136px -187px; -} -.tsd-is-static.tsd-kind-event.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -187px; -} -.tsd-is-static.tsd-kind-event.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -187px; -} -.tsd-is-static.tsd-kind-event.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -187px; -} -.tsd-is-static.tsd-kind-event.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -68px -187px; -} -.tsd-is-static.tsd-kind-event.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { - background-position: -85px -187px; -} -.tsd-is-static.tsd-kind-event.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -102px -187px; -} -.tsd-is-static.tsd-kind-event.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -187px; -} -.tsd-is-static.tsd-kind-event.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -187px; -} -.tsd-is-static.tsd-kind-event.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { - background-position: -187px -187px; -} -.tsd-is-static.tsd-kind-event.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -187px; -} -.tsd-is-static.tsd-kind-event.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -187px; -} -.tsd-is-static.tsd-kind-event.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -221px -187px; -} diff --git a/packages/layouts/src/layouts/TypeDoc/icons.png b/packages/layouts/src/layouts/TypeDoc/icons.png deleted file mode 100644 index 3836d5fe4..000000000 Binary files a/packages/layouts/src/layouts/TypeDoc/icons.png and /dev/null differ diff --git a/packages/layouts/src/layouts/TypeDoc/icons@2x.png b/packages/layouts/src/layouts/TypeDoc/icons@2x.png deleted file mode 100644 index 5a209e2f6..000000000 Binary files a/packages/layouts/src/layouts/TypeDoc/icons@2x.png and /dev/null differ diff --git a/packages/layouts/src/layouts/TypeDoc/index.tsx b/packages/layouts/src/layouts/TypeDoc/index.tsx deleted file mode 100644 index be10f2a18..000000000 --- a/packages/layouts/src/layouts/TypeDoc/index.tsx +++ /dev/null @@ -1,80 +0,0 @@ -import React from 'react'; -import classnames from 'clsx'; -import { HelpLinks, Hero } from '@jpmorganchase/mosaic-components'; -import { - AppHeader, - BackLink, - Breadcrumbs, - Footer, - PageNavigation -} from '@jpmorganchase/mosaic-site-components'; - -import { LayoutBase } from '../../LayoutBase'; -import { LayoutColumns } from '../../LayoutColumns'; -import type { LayoutProps } from '../../types'; -import styles from './styles.css'; -import { ExportsSidebar } from './ExportsSidebar'; - -const APIHero = ({ description, name, pageType, releaseDate, title, version }) => ( - -); - -export const TypeDoc: React.FC = ({ - BackLinkProps, - SidebarProps, - FooterProps, - meta, - children -}) => { - const Sidebar = ( - <> - {BackLinkProps && ( -
    - -
    - )} - - {SidebarProps?.helpLinks && } - - ); - const showHero = meta?.data?.pageType === 'root' || meta?.data?.pageType === 'index'; - const SecondarySidebar = meta?.data?.sidebarNavOptions ? ( - - ) : null; - return ( - }> - } - > -
    - - {showHero && meta?.data ? ( - - ) : null} - {children} -
    -
    -
    - ); -}; diff --git a/packages/layouts/src/layouts/TypeDoc/style.css b/packages/layouts/src/layouts/TypeDoc/style.css deleted file mode 100644 index 2199bf03e..000000000 --- a/packages/layouts/src/layouts/TypeDoc/style.css +++ /dev/null @@ -1,689 +0,0 @@ -@import url('./icons.css'); -:root { - --color-ts: #9600ff; - --color-ts-interface: #647f1b; - --color-ts-enum: #937210; - --color-ts-class: #0672de; - --color-ts-private: #707070; - --color-link: var(--color-light-navigable-link-regular); - --color-panel-divider: var(--color-light-neutral-foreground-low); -} -.dark { - --color-ts: #9600ff; - --color-ts-interface: #647f1b; - --color-ts-enum: #937210; - --color-ts-class: #0672de; - --color-ts-private: #707070; - --color-link: var(--color-dark-navigable-link-regular); - --color-panel-divider: var(--color-dark-neutral-foreground-low); -} - -.typedoc body { - margin: 0; -} - -.typedoc h2 { - font-size: var(--fontSize-s140) !important; -} - -.typedoc h3 { - font-size: var(--fontSize-s110) !important; -} - -.typedoc h4 { - font-size: var(--fontSize-s80) !important; -} - -.typedoc-api-page .tsd-typography div:first-of-type h2 { - margin: 0; -} -.typedoc-api-page h4, -h5, -h6 { - margin: 0; -} -.typedoc.typedoc-modules-page a > h4, -.typedoc.typedoc-modules-page a > h5, -.typedoc.typedoc-modules-page a > h6 { - display: inline; - margin: 0; -} - -.typedoc .container { - margin: 0 auto; - margin-top: var(--space-vertical-x6); -} - -.typedoc .row { - display: flex; -} -.typedoc .row:after { - visibility: hidden; - display: block; - content: ''; - clear: both; - height: 0; -} - -.col-4, -.typedoc .col-8 { - width: 100%; - box-sizing: border-box; -} - -@media (min-width: 901px) and (max-width: 1024px) { - .typedoc html .col-content { - width: 72%; - } - .typedoc html .col-menu { - width: 28%; - } - .typedoc html .tsd-navigation { - padding-left: 10px; - } -} -@media (max-width: 900px) { - .typedoc html .col-content { - float: none; - width: 100%; - } - .typedoc html .col-menu { - position: fixed !important; - overflow: auto; - -webkit-overflow-scrolling: touch; - z-index: 1024; - top: 0 !important; - bottom: 0 !important; - left: auto !important; - right: 0 !important; - width: 100%; - padding: 20px 20px 0 0; - max-width: 450px; - visibility: hidden; - transform: translate(100%, 0); - } - .typedoc html .col-menu > *:last-child { - padding-bottom: 20px; - } -} - -.tsd-page-title { - padding: 0; -} -.tsd-page-title h2 { - margin: 0; -} - -#tsd-filter { - position: relative; - display: inline-block; - height: 40px; - vertical-align: bottom; -} -.no-filter #tsd-filter { - display: none; -} -#tsd-filter .tsd-filter-group { - display: inline-block; - height: 40px; - vertical-align: bottom; - white-space: nowrap; -} -#tsd-filter input { - display: none; -} -@media (max-width: 900px) { - #tsd-filter .tsd-filter-group { - display: block; - position: absolute; - top: 40px; - right: 20px; - height: auto; - visibility: hidden; - transform: translate(50%, 0); - } - .has-options #tsd-filter .tsd-filter-group { - visibility: visible; - } - .to-has-options #tsd-filter .tsd-filter-group { - animation: fade-in 0.2s; - } - .from-has-options #tsd-filter .tsd-filter-group { - animation: fade-out 0.2s; - } - #tsd-filter label, - #tsd-filter .tsd-select { - display: block; - padding-right: 20px; - } -} - -.tsd-hierarchy .target { - font-weight: bold; -} - -.tsd-panel.tsd-index-panel { - margin-top: var(--space-vertical-x6); - border: 1px solid var(--color-panel-divider); -} - -.tsd-index-panel h3 { -} -.tsd-index-panel ul.tsd-index-list { - -webkit-column-count: 2; - -moz-column-count: 2; - -ms-column-count: 2; - -o-column-count: 2; - column-count: 2; - -webkit-column-gap: 20px; - -moz-column-gap: 20px; - -ms-column-gap: 20px; - -o-column-gap: 20px; - column-gap: 20px; - padding: 0; - list-style: none; -} - -@media (min-width: 961px) and (max-width: 1280px) { - .tsd-index-panel ul.tsd-index-list { - -webkit-column-count: 2; - -moz-column-count: 2; - -ms-column-count: 2; - -o-column-count: 2; - column-count: 2; - } -} - -@media (min-width: 601px) and (max-width: 960px) { - .tsd-index-panel ul.tsd-index-list { - -webkit-column-count: 2; - -moz-column-count: 2; - -ms-column-count: 2; - -o-column-count: 2; - column-count: 2; - } -} - -@media (max-width: 600px) { - .tsd-index-panel ul.tsd-index-list { - -webkit-column-count: 1; - -moz-column-count: 1; - -ms-column-count: 1; - -o-column-count: 1; - column-count: 1; - } -} -.tsd-index-panel ul.tsd-index-list li { - -webkit-page-break-inside: avoid; - -moz-page-break-inside: avoid; - -ms-page-break-inside: avoid; - -o-page-break-inside: avoid; - page-break-inside: avoid; - padding: 8px; -} - -.tsd-index-panel a[class^='tsd-kind'] { - color: var(--color-ts); -} -.tsd-index-panel .tsd-parent-kind-interface a { - color: var(--color-ts-interface); -} -.tsd-index-panel .tsd-parent-kind-enum a { - color: var(--color-ts-enum); -} -.tsd-index-panel .tsd-parent-kind-class a { - color: var(--color-ts-class); -} -.tsd-index-panel .tsd-kind-module a { - color: var(--color-ts); -} -.tsd-index-panel .tsd-kind-interface a { - color: var(--color-ts-interface); -} -.tsd-index-panel .tsd-kind-enum a { - color: var(--color-ts-enum); -} -.tsd-index-panel .tsd-kind-class a { - color: var(--color-ts-class); -} -.tsd-index-panel .tsd-is-private a { - color: var(--color-ts-private); -} - -.tsd-index-panel .tsd-parent-kind-interfaces a { - color: var(--color-ts-interface); -} -.tsd-index-panel .tsd-parent-kind-enums a { - color: var(--color-ts-enum); -} -.tsd-index-panel .tsd-parent-kind-classes a { - color: var(--color-ts-class); -} -.tsd-index-panel .tsd-kind-modules a { - color: var(--color-ts); -} -.tsd-index-panel .tsd-kind-interfaces a { - color: var(--color-ts-interface); -} -.tsd-index-panel .tsd-kind-enums a { - color: var(--color-ts-enum); -} -.tsd-index-panel .tsd-kind-classes a { - color: var(--color-ts-class); -} - -.tsd-flag { - display: inline-block; - padding: 1px 5px; - border-radius: 4px; - color: var(--color-dark-neutral-foreground-high); - background-color: var(--color-light-navigable-link-disabled); - text-indent: 0; - font-size: 14px; - font-weight: normal; - vertical-align: middle; -} - -.tsd-member .tsd-anchor + h3 { - margin-top: 0; - margin-bottom: 0; - border-bottom: none; -} -.tsd-member [data-tsd-kind] { - color: var(--color-ts); -} -.tsd-member [data-tsd-kind='Interface'] { - color: var(--color-ts-interface); -} -.tsd-member [data-tsd-kind='Enum'] { - color: var(--color-ts-enum); -} -.tsd-member [data-tsd-kind='Class'] { - color: var(--color-ts-class); -} -.tsd-member [data-tsd-kind='Private'] { - color: var(--color-ts-private); -} - -.tsd-panel { - padding-left: var(--space-horizontal-x4); - padding-right: var(--space-horizontal-x4); - border: 1px solid var(--color-panel-divider); - box-shadow: var(--shadow-light-elevation2); -} -.tsd-panel.tsd-member { - margin-top: var(--space-vertical-x4); - padding: var(--space-vertical-x4); -} -.tsd-panel.tsd-typography, -.tsd-panel.tsd-comment { - border: none; - box-shadow: none; -} -.tsd-panel.tsd-comment { - padding-left: 0; -} - -.tsd-panel:empty { - display: none; -} - -.tsd-panel > h2, -.tsd-panel > h3 { -} -.tsd-panel > h1.tsd-before-signature, -.tsd-panel > h2.tsd-before-signature, -.tsd-panel > h3.tsd-before-signature { - margin-bottom: 0; -} -.tsd-panel table { - display: block; - width: 100%; - overflow: auto; - margin-top: 10px; - word-break: normal; - word-break: keep-all; - border-collapse: collapse; -} -.tsd-panel table th { - font-weight: bold; -} -.tsd-panel table th, -.tsd-panel table td { - padding: 6px 13px; - border: 1px solid var(--color-panel-divider); -} -.tsd-panel table tr, -.tsd-panel table tr:nth-child(even), -.tsd-panel-group { -} - -.tsd-panel-group > h3 { - padding-right: 20px; -} - -.tsd-signature { - padding-left: var(--space-horizontal-x4); - padding-right: var(--space-horizontal-x4); - padding-top: var(--space-vertical-x4); - padding-bottom: var(--space-vertical-x4); - margin-top: var(--space-vertical-x4); - margin-bottom: var(--space-vertical-x4); - font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; - font-size: 14px; - overflow-x: auto; - border: 1px solid var(--color-panel-divider); -} - -.tsd-signature.tsd-kind-icon { - padding-left: 30px; -} -.tsd-signature.tsd-kind-icon:before { - top: 10px; - left: 10px; -} - -.tsd-panel > .tsd-signature.tsd-kind-icon { - padding-left: 40px; -} -.tsd-panel > .tsd-signature.tsd-kind-icon:before { - left: 20px; -} - -.tsd-signature-symbol { - font-weight: normal; -} - -.tsd-signature-type { - font-style: italic; - font-weight: normal; -} - -.tsd-signatures { - padding: 0; -} - -.tsd-signatures .tsd-signature { - margin: 0; - transition: background-color 0.1s; -} - -.tsd-signatures .tsd-signature.current, -.tsd-signatures.active > .tsd-signature { - cursor: pointer; -} -.tsd-panel > .tsd-signatures { - border-width: 1px 0; -} -.tsd-panel > .tsd-signatures .tsd-signature.tsd-kind-icon { - padding-left: 40px; -} -.tsd-panel > .tsd-signatures .tsd-signature.tsd-kind-icon:before { - left: 20px; -} - -.tsd-kind-icon { - overflow-wrap: normal; -} -.tsd-signature.tsd-kind-icon:before { - mask: unset; - -webkit-mask: none; - background-color: unset; -} - -ul.tsd-descriptions { - position: relative; - overflow: hidden; - padding: 0; - list-style: none; -} -ul.tsd-descriptions.active > .tsd-description { - display: none; -} -ul.tsd-descriptions.active > .tsd-description.current { - display: block; -} -ul.tsd-descriptions.active > .tsd-description.fade-in { - animation: fade-in-delayed 0.3s; -} -ul.tsd-descriptions.active > .tsd-description.fade-out { - animation: fade-out-delayed 0.3s; - position: absolute; - display: block; - top: 0; - left: 0; - right: 0; - opacity: 0; - visibility: hidden; -} -ul.tsd-descriptions h4, -ul.tsd-descriptions .tsd-index-panel h3, -.tsd-index-panel ul.tsd-descriptions h3 { - font-size: 16px; -} - -ul.tsd-parameters, -ul.tsd-type-parameters { -} -ul.tsd-parameters > li.tsd-parameter-signature, -ul.tsd-type-parameters > li.tsd-parameter-signature { - list-style: none; -} -ul.tsd-parameters h5, -ul.tsd-type-parameters h5 { - font-size: 16px; -} -ul.tsd-parameters .tsd-comment, -ul.tsd-type-parameters .tsd-comment { -} - -.tsd-comment-tags dt { - float: left; - padding: 1px 5px; - border-radius: 4px; - color: var(--color-light-neutral-foreground-high); - text-indent: 0; - font-size: 0.8em; - font-weight: normal; - border: 1px solid var(--color-light-neutral-foreground-mid); - margin-right: var(--space-horizontal-x2); -} - -.tsd-comment-tags dd { - display: block; -} - -.tsd-comment-tags li { - margin-left: var(--space-horizontal-x13); -} -.tsd-sources { - font-size: 14px; - margin: 0; -} -.tsd-sources a { - text-decoration: underline; - display: inline-block; -} -.tsd-sources ul, -.tsd-sources p { - margin: 0 !important; -} -.tsd-sources ul { - list-style: none; - padding: 0; -} - -/** Latest */ - -.typedoc dd { - margin: 0; -} - -.typedoc a { - display: inline; -} -.typedoc p a { - display: inline; -} - -.typedoc a.tsd-signature-type { - display: inline; -} - -.typedoc .lead > p { - margin-top: var(--space-vertical-x2); -} - -.typedoc .tsd-type-declaration { - margin-top: var(--space-vertical-x4); -} -.typedoc .tsd-type-declaration > ul { - margin-left: 0; - padding: 0; -} -.typedoc .tsd-parameters { - margin-top: 0; -} -.typedoc .tsd-parameters .tsd-parameter > div { - display: inline; -} -.typedoc .tsd-parameters .tsd-parameter > div a { - display: inline-block; -} -.typedoc .tsd-parameter, -.tsd-declaration { - padding: 0 var(--space-horizontal-x4); -} -.typedoc .tsd-type-declaration a { - font-style: italic; - text-decoration: none; -} - -.typedoc .tsd-type-parameters-title, -.tsd-parameters-title { - font-style: italic; - text-decoration: none; - margin-top: var(--space-vertical-x4); -} -.typedoc .tsd-type-returns-title, -.tsd-returns-title { - font-style: italic; - text-decoration: none; - margin-top: var(--space-vertical-x4); -} - -.typedoc .target { - display: inline-block; - margin-top: var(--space-vertical-x4); -} - -.typedoc footer { - padding-top: var(--space-vertical-x1); -} - -.typedoc footer:after { - content: ''; - display: table; -} -.typedoc footer .tsd-legend-group { - font-size: 0; -} -.typedoc footer .tsd-legend-group li { - padding: var(--space-vertical-x1); -} -.typedoc footer .tsd-legend { - display: inline-block; - width: 25%; - padding: var(--space-vertical-x2) 0 0 0; - font-size: 16px; - list-style: none; - vertical-align: top; -} - -.typedoc .tsd-parameters > .tsd-parameter { - margin-left: var(--space-vertical-x4); -} -.typedoc .tsd-parameter-signature > ul { - margin-left: 0; -} -.typedoc .tsd-index-section { - padding: 0; -} -.typedoc .tsd-index-section:first-of-type { - padding-top: var(--space-vertical-x6); -} - -.typedoc .tsd-index-section .tsd-index-list { - padding: 0; - margin: 0; -} -.typedoc .tsd-index-section ul:first-of-type { - margin-top: var(--space-vertical-x6); -} - -.typedoc .tsd-index-section .tsd-index-list a { - padding: 0; - margin: 0; -} -.typedoc .tsd-index-section h3 { - margin-top: var(--space-vertical-x6); -} -.typedoc .tsd-index-section:first-of-type h3 { - margin-top: 0; -} -.typedoc .tsd-panel.tsd-member h3 { - margin-top: 0; -} -.typedoc div.tsd-typography { - display: inline; -} -.typedoc :not(.tsd-member).tsd-panel:first-of-type { - margin-top: 0; -} - -.typedoc .tsd-index-group .tsd-panel.tsd-panel { - padding: 0 var(--space-horizontal-x4) var(--space-vertical-x4) var(--space-horizontal-x4); - margin-top: var(--space-vertical-x4); -} - -.typedoc .tsd-panel.tsd-type-parameters { - padding: 0 var(--space-horizontal-x4) var(--space-vertical-x4) var(--space-horizontal-x4); - margin-top: var(--space-vertical-x10); -} -.typedoc .tsd-panel.tsd-hierarchy { - padding: 0 var(--space-horizontal-x4) var(--space-vertical-x4) var(--space-horizontal-x4); - margin-top: var(--space-vertical-x10); - border: 1px solid var(--color-panel-divider); -} - -.typedoc.typedoc-index .tsd-page-title { - display: none; -} - -.typedoc .tsd-member a[data-tsd-kind] { - color: var(--color-ts); -} -.typedoc .tsd-member a[data-tsd-kind='Interface'] { - color: var(--color-ts-interface); -} - -.typedoc .tsd-index-panel .tsd-parent-kind-module a { - color: var(--color-ts); -} - -.typedoc a { - color: var(--color-link); - text-decoration: none; - display: inline; -} - -.typedoc a:hover { - text-decoration: none; -} -.typedoc li > div { - display: inline-block; -} - -.typedoc.typedoc-root-page .tsd-panel { - padding: 0; -} diff --git a/packages/layouts/src/layouts/TypeDoc/styles.css.ts b/packages/layouts/src/layouts/TypeDoc/styles.css.ts deleted file mode 100644 index c1f975c1a..000000000 --- a/packages/layouts/src/layouts/TypeDoc/styles.css.ts +++ /dev/null @@ -1,41 +0,0 @@ -import { style } from '@vanilla-extract/css'; -import { responsiveSprinkles } from '@jpmorganchase/mosaic-theme'; - -export default { - columnWrapper: style([ - style({ - display: 'flex', - justifyContent: 'stretch', - width: '100%', - maxWidth: '1440px', - marginLeft: 'auto', - marginRight: 'auto' - }), - responsiveSprinkles({ - paddingLeft: ['x4', 'x6', 'x6', 'x6'], - paddingRight: ['x4', 'x6', 'x6', 'x6'] - }) - ]), - - contentBody: style([ - style({ - zIndex: 2, - flexGrow: 1, - flexShrink: 1, - // We're letting flexGrow do the width calc here, so as long as - // the width is smaller than the space the layout will be correct. - width: '1px' - }), - responsiveSprinkles({ - paddingTop: ['x10', 'x10', 'x20', 'x20'] - }) - ]), - - sidebarHeader: style({ flexShrink: 0 }), - - wrapper: style({ - width: '100%', - overflow: 'hidden', - position: 'relative' - }) -}; diff --git a/packages/layouts/src/layouts/TypeDoc/widgets.png b/packages/layouts/src/layouts/TypeDoc/widgets.png deleted file mode 100644 index c7380532a..000000000 Binary files a/packages/layouts/src/layouts/TypeDoc/widgets.png and /dev/null differ diff --git a/packages/layouts/src/layouts/TypeDoc/widgets@2x.png b/packages/layouts/src/layouts/TypeDoc/widgets@2x.png deleted file mode 100644 index 4bbbd5727..000000000 Binary files a/packages/layouts/src/layouts/TypeDoc/widgets@2x.png and /dev/null differ diff --git a/packages/layouts/src/layouts/index.ts b/packages/layouts/src/layouts/index.ts index 9017d1678..2d935fbf0 100644 --- a/packages/layouts/src/layouts/index.ts +++ b/packages/layouts/src/layouts/index.ts @@ -4,5 +4,3 @@ export * from './FullWidth'; export * from './Landing'; export * from './Newsletter'; export * from './Product'; -export * from './PythonDoc'; -export * from './TypeDoc'; diff --git a/packages/layouts/src/types/index.tsx b/packages/layouts/src/types/index.tsx index d9f3b45fd..67d6e1324 100644 --- a/packages/layouts/src/types/index.tsx +++ b/packages/layouts/src/types/index.tsx @@ -1,20 +1,24 @@ import type { ReactNode } from 'react'; -import type { Breadcrumb, LinkType } from '@jpmorganchase/mosaic-site-components'; +import type { LinkType } from '@jpmorganchase/mosaic-site-components'; import { FooterProps } from '@jpmorganchase/mosaic-site-components'; export type LayoutProps = { + AppHeaderComponent: ReactNode; + BreadcrumbsComponent: ReactNode; + FooterComponent: ReactNode; + DocPaginatorComponent: ReactNode; + SecondarySidebarComponent: ReactNode; + PrimarySidebarComponent: ReactNode; children?: ReactNode; className?: string; ToCProps?: { items: any; }; SidebarProps?: Pick; - NextPrevLinksProps?: { next?: LinkType; prev?: LinkType; }; - BreadcrumbsProps?: { breadcrumbs: typeof Breadcrumb[] }; BackLinkProps?: { label?: string; link: string }; FooterProps?: any; layout?: string; diff --git a/packages/loaders/README.md b/packages/loaders/README.md new file mode 100644 index 000000000..68657d24f --- /dev/null +++ b/packages/loaders/README.md @@ -0,0 +1,13 @@ +# Mosaic Loaders (Server) + +`@jpmorganchase/mosaic-loaders` contains Mosaic loaders for content served by Mosaic Core. + +## Installation + +`yarn add @jpmorganchase/mosaic-loaders` + +## Criteria + +The criteria for code within `@jpmorganchase/mosaic-loaders` is + +- Should only export server side code diff --git a/packages/loaders/package.json b/packages/loaders/package.json new file mode 100644 index 000000000..34716bcb6 --- /dev/null +++ b/packages/loaders/package.json @@ -0,0 +1,48 @@ +{ + "name": "@jpmorganchase/mosaic-loaders", + "description": "Mosaic - Loaders", + "version": "0.1.0-beta.62", + "author": "", + "license": "Apache-2.0", + "repository": { + "type": "git", + "url": "git@github.com:jpmorganchase/mosaic.git", + "directory": "packages/loaders" + }, + "type": "module", + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "exports": { + "./index.css": "./dist/index.css", + ".": { + "types": "./dist/index.d.ts", + "import": "./dist/index.js", + "node": "./dist/index.js" + } + }, + "scripts": { + "build": "npm-run-all --parallel build:*", + "build:types": "tsc", + "build:components": "node ./scripts/bundle.mjs", + "clean": "npx del-cli 'dist/**' && find . -type d -empty -delete", + "lint": "eslint --ignore-pattern \"**/__tests__/**\"", + "dev": "node ./scripts/bundle.mjs watch" + }, + "devDependencies": { + "@jpmorganchase/mosaic-types": "^0.1.0-beta.62", + "del-cli": "^4.0.1", + "esbuild": "0.19.11", + "esbuild-node-externals": "^1.12.0", + "fast-glob": "^3.2.7", + "typescript": "^5.2.2" + }, + "dependencies": { + "@jpmorganchase/mosaic-mdx-components": "^0.1.0-beta.62", + "@jpmorganchase/mosaic-store": "^0.1.0-beta.62", + "@jpmorganchase/mosaic-schemas": "^0.1.0-beta.62", + "@types/node": "^18.15.3", + "deepmerge": "^4.2.2", + "gray-matter": "^4.0.3", + "zod": "^3.19.1" + } +} diff --git a/packages/loaders/scripts/bundle.mjs b/packages/loaders/scripts/bundle.mjs new file mode 100644 index 000000000..006ae7eab --- /dev/null +++ b/packages/loaders/scripts/bundle.mjs @@ -0,0 +1,45 @@ +import fs from 'fs-extra'; +import glob from 'fast-glob'; +import esbuild from 'esbuild'; +import { nodeExternalsPlugin } from 'esbuild-node-externals'; + +const args = process.argv.slice(2); +const watchEnabled = args[0] === 'watch'; +const packageName = process.env.npm_package_name; + +try { + const context = await esbuild.context({ + entryPoints: glob.sync(['src/**/*.ts?(x)', 'src/*.ts?(x)'], { + ignore: ['**/__tests__', 'src/labs'] + }), + outdir: './dist', + outExtension: { '.js': '.mjs' }, + bundle: true, + sourcemap: false, + splitting: true, + minify: true, + format: 'esm', + target: ['es2022', 'node18'], + platform: 'node', + plugins: [nodeExternalsPlugin()] + }); + await context.rebuild(); + if (watchEnabled) { + await context.watch(); + } + await context.serve(); + context.dispose(); +} catch (e) { + if (e.errors && e.errors.length > 0) { + console.group(`!!!!!!! ${packageName} build errors !!!!!!!`); + console.error(e.errors); + console.groupEnd(); + } + + if (e.warnings && e.warnings.length > 0) { + console.group(`!!!!!!! ${packageName} build warnings !!!!!!!`); + console.error(e.warnings); + console.groupEnd(); + } + process.exit(1); +} diff --git a/packages/loaders/src/index.ts b/packages/loaders/src/index.ts new file mode 100644 index 000000000..0cc5939d9 --- /dev/null +++ b/packages/loaders/src/index.ts @@ -0,0 +1,77 @@ +import path from 'path'; +import matter from 'gray-matter'; +import type { SafeParseError } from 'zod'; +import { activeEnvSchema } from '@jpmorganchase/mosaic-schemas'; +import type { SharedConfig } from '@jpmorganchase/mosaic-types'; + +import type { LoaderPage } from './types/index.js'; + +export * from './types/index.js'; + +const normalizePageUrl = (url: string): string => (/\/index$/.test(url) ? `${url}.mdx` : url); + +type ActiveModeUrlEnv = { + MOSAIC_ACTIVE_MODE_URL: string; +}; + +export class LoadPageError extends Error { + statusCode: number; + constructor({ message, statusCode }: { message: string; statusCode: number }) { + super(message); + this.statusCode = statusCode; + } +} + +const getFSRootUrl = (): string => { + const env = activeEnvSchema.safeParse(process.env); + if (!env.success) { + const { error } = env as SafeParseError; + error.issues.forEach(issue => { + console.error( + `Missing process.env.${issue.path.join()} environment variable required to load pages` + ); + }); + throw new LoadPageError({ + message: `Environment variables missing to load pages`, + statusCode: 500 + }); + } + return env.data.MOSAIC_ACTIVE_MODE_URL; +}; + +export const loadMosaicData = async (url: string): Promise => { + const fsRootUrl = getFSRootUrl(); + const dataUrl = new URL(url, fsRootUrl); + const response = await fetch(dataUrl); + + if (!response.ok) { + // This will activate the closest `error.js` Error Boundary + throw new Error(`Failed to fetch mosaic data @ ${dataUrl}`); + } + return response.json(); +}; + +export const loadSharedConfig = async (route: string): Promise => { + const sharedConfigUrl = path.posix.join(path.posix.dirname(route), 'shared-config.json'); + const { config } = await loadMosaicData<{ config: SharedConfig }>(sharedConfigUrl); + return config; +}; + +export const loadPage = async (route: string): Promise => { + const fsRootUrl = getFSRootUrl(); + const pageUrl = normalizePageUrl(`${fsRootUrl}${route}`); + const response = await fetch(pageUrl); + if (response.status === 302) { + const { redirect } = await response.json(); + return loadPage(redirect); + } + if (response.ok) { + const source = await response.text(); + const { content, data } = matter(source); + return { source: content, data }; + } + throw new LoadPageError({ + message: `Could not load page : ${pageUrl} ${response.status}/${response.statusText}`, + statusCode: 404 + }); +}; diff --git a/packages/loaders/src/types/index.ts b/packages/loaders/src/types/index.ts new file mode 100644 index 000000000..620ae9be8 --- /dev/null +++ b/packages/loaders/src/types/index.ts @@ -0,0 +1,37 @@ +import type { + Breadcrumb, + Navigation, + SearchConfig, + SearchIndex, + SharedConfig, + SidebarItem, + TableOfContentsItem +} from '@jpmorganchase/mosaic-types'; + +export type SiteState = { + /** Path described in breadcrumbs */ + breadcrumbs: Breadcrumb[]; + /** Page metadata description, used by search */ + description?: string; + /** Page route */ + route?: string; + /** Layout name that will define the page's anatomy */ + layout?: string; + navigation?: Navigation; + sharedConfig?: SharedConfig; + /** Page title */ + title?: string; + searchIndex?: SearchIndex; + searchConfig?: SearchConfig; + sidebarData: SidebarItem[]; + tableOfContents: TableOfContentsItem[]; +}; + +export type LoaderSource = string; +export type LoaderData = Partial; +export type LoaderPage = { + /** content source */ + source?: LoaderSource; + /** meta for content */ + data?: LoaderData; +}; diff --git a/packages/site-middleware/tsconfig.json b/packages/loaders/tsconfig.json similarity index 100% rename from packages/site-middleware/tsconfig.json rename to packages/loaders/tsconfig.json diff --git a/packages/mdx-components/README.md b/packages/mdx-components/README.md new file mode 100644 index 000000000..e377830f9 --- /dev/null +++ b/packages/mdx-components/README.md @@ -0,0 +1,18 @@ +# Mosaic MDX Component Library + +`@jpmorganchase/mosaic-components` contains re-usable MDX components that conform to the Mosaic Design language. + +All the Mosaic MDX components are wrapped with default spacing so they can be composed within a MDX page + +This package is intended to be used with a Mosaic site and should export "client side" components + +## Installation + +`yarn add @jpmorganchase/mosaic-components` + +## Criteria + +The criteria for a component within `@jpmorganchase/mosaic-components-client` is + +- Should only export React client-side components +- It can contain any Mosaic Store, NextJS or other site specific dependencies. diff --git a/packages/mdx-components/package.json b/packages/mdx-components/package.json new file mode 100644 index 000000000..bc183abe6 --- /dev/null +++ b/packages/mdx-components/package.json @@ -0,0 +1,55 @@ +{ + "name": "@jpmorganchase/mosaic-mdx-components", + "description": "Mosaic - Markdown Components", + "version": "0.1.0-beta.62", + "author": "", + "license": "Apache-2.0", + "repository": { + "type": "git", + "url": "git@github.com:jpmorganchase/mosaic.git", + "directory": "packages/mdx-components" + }, + "type": "module", + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "style": "./dist/index.css", + "exports": { + "./index.css": "./dist/index.css", + ".": { + "style": "./dist/index.css", + "types": "./dist/index.d.ts", + "import": "./dist/index.js", + "node": "./dist/index.js" + } + }, + "scripts": { + "build": "npm-run-all --parallel build:*", + "build:types": "tsc", + "build:components": "node ../../scripts/bundle.mjs", + "clean": "npx del-cli 'dist/**' && find . -type d -empty -delete", + "lint": "eslint --ignore-pattern \"**/__tests__/**\"", + "doc": "node ../../scripts/updateDocs.js", + "dev": "node ../../scripts/bundle.mjs watch" + }, + "devDependencies": { + "@testing-library/jest-dom": "^5.16.5", + "@testing-library/react": "^13.4.0", + "@testing-library/user-event": "^14.0.0", + "react": "^18.2.0", + "del-cli": "^4.0.1", + "typescript": "^5.2.2" + }, + "dependencies": { + "@jpmorganchase/mosaic-components": "^0.1.0-beta.62", + "@jpmorganchase/mosaic-open-api-component": "^0.1.0-beta.62", + "@jpmorganchase/mosaic-site-components": "^0.1.0-beta.62", + "@jpmorganchase/mosaic-theme": "^0.1.0-beta.62", + "clsx": "^2.0.0", + "hoist-non-react-statics": "^3.3.2" + }, + "peerDependencies": { + "@types/react": "^18.2.46", + "react": "^18.2.0", + "react-dom": "^18.2.0" + } +} diff --git a/packages/components/src/Markdown/BlockQuote/index.css.ts b/packages/mdx-components/src/BlockQuote/index.css.ts similarity index 100% rename from packages/components/src/Markdown/BlockQuote/index.css.ts rename to packages/mdx-components/src/BlockQuote/index.css.ts diff --git a/packages/components/src/Markdown/BlockQuote/index.tsx b/packages/mdx-components/src/BlockQuote/index.tsx similarity index 88% rename from packages/components/src/Markdown/BlockQuote/index.tsx rename to packages/mdx-components/src/BlockQuote/index.tsx index 34b8d51f5..7f71028b7 100644 --- a/packages/components/src/Markdown/BlockQuote/index.tsx +++ b/packages/mdx-components/src/BlockQuote/index.tsx @@ -1,7 +1,6 @@ import React from 'react'; import classnames from 'clsx'; -import { P2 } from '../../Typography'; import styles from './index.css'; export interface BlockQuoteProps extends React.HTMLProps {} @@ -15,7 +14,7 @@ export const BlockQuote: React.FC> = ({ return (
    - {rawChildren} + {rawChildren}
    ); }; diff --git a/packages/components/src/Markdown/AnchorHeading/index.css.ts b/packages/mdx-components/src/Heading/AnchorHeading.css.ts similarity index 100% rename from packages/components/src/Markdown/AnchorHeading/index.css.ts rename to packages/mdx-components/src/Heading/AnchorHeading.css.ts diff --git a/packages/components/src/Markdown/AnchorHeading/index.tsx b/packages/mdx-components/src/Heading/AnchorHeading.tsx similarity index 86% rename from packages/components/src/Markdown/AnchorHeading/index.tsx rename to packages/mdx-components/src/Heading/AnchorHeading.tsx index a2364129e..e1dacee87 100644 --- a/packages/components/src/Markdown/AnchorHeading/index.tsx +++ b/packages/mdx-components/src/Heading/AnchorHeading.tsx @@ -1,13 +1,12 @@ import React, { useEffect, useRef, useState } from 'react'; +import { usePathname } from 'next/navigation'; import classnames from 'clsx'; -import { Icon } from '../../Icon'; +import { Caption6, Icon, Link, LinkProps, TypographyProps } from '@jpmorganchase/mosaic-components'; -import { Link, LinkProps } from '../../Link'; -import { Caption6, TypographyProps } from '../../Typography'; -import styles from './index.css'; +import styles from './AnchorHeading.css'; export interface AnchorHeadingProps extends React.HTMLProps { - children: React.ReactNode[]; + children: React.ReactNode; Component: React.FC>; LinkProps?: LinkProps; } @@ -20,6 +19,7 @@ export const AnchorHeading: React.FC LinkProps: LinkPropsProp = {}, ...rest }) => { + const route = usePathname(); const timerRef = useRef(null); useEffect( () => () => { @@ -41,7 +41,7 @@ export const AnchorHeading: React.FC }; const handleMouseClick = event => { const anchor = event.currentTarget.getAttribute('href'); - navigator.clipboard.writeText(`${window.location.origin}${anchor}`); + navigator.clipboard.writeText(`${window.location.origin}${route}/${anchor}`); setCopied(true); timerRef.current = setTimeout(() => setCopied(false), 1000); event.preventDefault(); @@ -92,6 +92,3 @@ export const AnchorHeading: React.FC
    ); }; - -export const withAnchorHeading = Component => props => - ; diff --git a/packages/components/src/Markdown/__tests__/Heading.test.tsx b/packages/mdx-components/src/Heading/__tests__/Heading.test.tsx similarity index 83% rename from packages/components/src/Markdown/__tests__/Heading.test.tsx rename to packages/mdx-components/src/Heading/__tests__/Heading.test.tsx index 3a8d87733..c04bdf0cc 100644 --- a/packages/components/src/Markdown/__tests__/Heading.test.tsx +++ b/packages/mdx-components/src/Heading/__tests__/Heading.test.tsx @@ -1,54 +1,54 @@ import React from 'react'; import { render, screen } from '@testing-library/react'; -import * as Heading from '../Heading'; +import { H0, H1, H2, H3, H4, H5, H6 } from '../index'; describe('GIVEN a Heading', () => { test('THEN a H0 can be rendered', () => { // arrange - render(H0); + render(H0); // assert expect(screen.getByText('H0')).toBeInTheDocument(); expect(screen.getByRole('heading', { level: 1 })).toBeInTheDocument(); }); test('THEN a H1 can be rendered', () => { // arrange - render(H1); + render(

    H1

    ); // assert expect(screen.getByText('H1')).toBeInTheDocument(); expect(screen.getByRole('heading', { level: 1 })).toBeInTheDocument(); }); test('THEN a H1 can be rendered', () => { // arrange - render(H2); + render(

    H2

    ); // assert expect(screen.getByText('H2')).toBeInTheDocument(); expect(screen.getByRole('heading', { level: 2 })).toBeInTheDocument(); }); test('THEN a H3 can be rendered', () => { // arrange - render(H3); + render(

    H3

    ); // assert expect(screen.getByText('H3')).toBeInTheDocument(); expect(screen.getByRole('heading', { level: 3 })).toBeInTheDocument(); }); test('THEN a H4 can be rendered', () => { // arrange - render(H4); + render(

    H4

    ); // assert expect(screen.getByText('H4')).toBeInTheDocument(); expect(screen.getByRole('heading', { level: 4 })).toBeInTheDocument(); }); test('THEN a H5 can be rendered', () => { // arrange - render(H5); + render(
    H5
    ); // assert expect(screen.getByText('H5')).toBeInTheDocument(); expect(screen.getByRole('heading', { level: 5 })).toBeInTheDocument(); }); test('THEN a H6 can be rendered', () => { // arrange - render(H6); + render(
    H6
    ); // assert expect(screen.getByText('H6')).toBeInTheDocument(); expect(screen.getByRole('heading', { level: 6 })).toBeInTheDocument(); diff --git a/packages/components/src/Markdown/AnchorHeading/__tests__/index.test.tsx b/packages/mdx-components/src/Heading/__tests__/index.test.tsx similarity index 80% rename from packages/components/src/Markdown/AnchorHeading/__tests__/index.test.tsx rename to packages/mdx-components/src/Heading/__tests__/index.test.tsx index b3058cc1e..40b4b13ca 100644 --- a/packages/components/src/Markdown/AnchorHeading/__tests__/index.test.tsx +++ b/packages/mdx-components/src/Heading/__tests__/index.test.tsx @@ -2,15 +2,13 @@ import React from 'react'; import { render, screen } from '@testing-library/react'; import userEvents from '@testing-library/user-event'; -import { withAnchorHeading } from '../index'; -import * as Heading from '../../Heading'; +import { H1 } from '../index'; describe('GIVEN an AnchoredHeading', () => { describe('WHEN rendered', () => { test('THEN the Heading is rendered', () => { // arrange - const TestHeading = withAnchorHeading(Heading.H1); - render(Mosaic Heading); + render(

    Mosaic Heading

    ); // assert expect(screen.getByText('Mosaic Heading')).toBeInTheDocument(); }); @@ -27,11 +25,8 @@ describe('GIVEN an AnchoredHeading', () => { }; (global.navigator as any).clipboard = mockClipboard; - const TestHeading = withAnchorHeading(Heading.H1); render( - - Mosaic Heading - +

    Mosaic Heading

    ); // assert expect(screen.queryByLabelText('copied anchor link to clipboard')).not.toBeInTheDocument(); diff --git a/packages/mdx-components/src/Heading/index.tsx b/packages/mdx-components/src/Heading/index.tsx new file mode 100644 index 000000000..2e58366c2 --- /dev/null +++ b/packages/mdx-components/src/Heading/index.tsx @@ -0,0 +1,34 @@ +import classnames from 'clsx'; +import { Typography } from '@jpmorganchase/mosaic-components'; +import { heading } from '@jpmorganchase/mosaic-theme'; +import { AnchorHeading } from './AnchorHeading'; + +const createHeading = + (variant, component) => + ({ children, className, ...props }) => + ( + + {children} + + ); + +const Heading0 = createHeading('heading0', 'h1'); +const Heading1 = createHeading('heading1', 'h1'); +const Heading2 = createHeading('heading2', 'h2'); +const Heading3 = createHeading('heading3', 'h3'); +const Heading4 = createHeading('heading4', 'h4'); +const Heading5 = createHeading('heading5', 'h5'); +const Heading6 = createHeading('heading6', 'h6'); + +export const H0 = props => ; +export const H1 = props => ; +export const H2 = props => ; +export const H3 = props => ; +export const H4 = props => ; +export const H5 = props => ; +export const H6 = props => ; diff --git a/packages/components/src/Markdown/InlineCode.tsx b/packages/mdx-components/src/InlineCode.tsx similarity index 100% rename from packages/components/src/Markdown/InlineCode.tsx rename to packages/mdx-components/src/InlineCode.tsx diff --git a/packages/components/src/Markdown/Link.tsx b/packages/mdx-components/src/Link.tsx similarity index 75% rename from packages/components/src/Markdown/Link.tsx rename to packages/mdx-components/src/Link.tsx index f10d1de22..1b2ad2968 100644 --- a/packages/components/src/Markdown/Link.tsx +++ b/packages/mdx-components/src/Link.tsx @@ -1,6 +1,5 @@ import React from 'react'; - -import { Link as LinkComponent, LinkProps } from '../Link'; +import { Link as LinkComponent, LinkProps } from '@jpmorganchase/mosaic-components'; export interface MarkdownLinkProps extends LinkProps { href?: string; diff --git a/packages/components/src/Markdown/Table.tsx b/packages/mdx-components/src/Table.tsx similarity index 100% rename from packages/components/src/Markdown/Table.tsx rename to packages/mdx-components/src/Table.tsx diff --git a/packages/components/src/Markdown/Tbody.tsx b/packages/mdx-components/src/Tbody.tsx similarity index 100% rename from packages/components/src/Markdown/Tbody.tsx rename to packages/mdx-components/src/Tbody.tsx diff --git a/packages/components/src/Markdown/Td.tsx b/packages/mdx-components/src/Td.tsx similarity index 100% rename from packages/components/src/Markdown/Td.tsx rename to packages/mdx-components/src/Td.tsx diff --git a/packages/components/src/Markdown/Th.tsx b/packages/mdx-components/src/Th.tsx similarity index 100% rename from packages/components/src/Markdown/Th.tsx rename to packages/mdx-components/src/Th.tsx diff --git a/packages/components/src/Markdown/Thead.tsx b/packages/mdx-components/src/Thead.tsx similarity index 100% rename from packages/components/src/Markdown/Thead.tsx rename to packages/mdx-components/src/Thead.tsx diff --git a/packages/components/src/Markdown/ThematicBreak/index.css.ts b/packages/mdx-components/src/ThematicBreak/index.css.ts similarity index 100% rename from packages/components/src/Markdown/ThematicBreak/index.css.ts rename to packages/mdx-components/src/ThematicBreak/index.css.ts diff --git a/packages/components/src/Markdown/ThematicBreak/index.tsx b/packages/mdx-components/src/ThematicBreak/index.tsx similarity index 100% rename from packages/components/src/Markdown/ThematicBreak/index.tsx rename to packages/mdx-components/src/ThematicBreak/index.tsx diff --git a/packages/components/src/Markdown/Tr.tsx b/packages/mdx-components/src/Tr.tsx similarity index 100% rename from packages/components/src/Markdown/Tr.tsx rename to packages/mdx-components/src/Tr.tsx diff --git a/packages/mdx-components/src/components.ts b/packages/mdx-components/src/components.ts new file mode 100644 index 000000000..f7343d03d --- /dev/null +++ b/packages/mdx-components/src/components.ts @@ -0,0 +1,166 @@ +import { Ref } from 'react'; +import { + Accordion as MosaicAccordion, + AccordionProps, + Callout as MosaicCallout, + CalloutProps, + Card as MosaicCard, + CardProps, + Cards as MosaicCards, + CardsProps, + ComponentExample as MosaicComponentExample, + ComponentExampleProps, + DataTable as MosaicDataTable, + DataTableProps, + EditionTileLink as MosaicEditionTileLink, + EditionTileLinkProps, + Feature as MosaicFeature, + FeatureProps, + Features as MosaicFeatures, + FeaturesProps, + FilterDropdown as MosaicFilterDropdown, + FilterDropdownProps, + FilterNoResults as MosaicFilterNoResults, + FilterNoResultsProps, + FilterPillGroup as MosaicFilterPillGroup, + FilterPillGroupProps, + FilterResultCount as MosaicFilterResultCount, + FilterResultCountProps, + FilterSearch as MosaicFilterSearch, + FilterSearchProps, + FilterSortDropdown as MosaicFilterSortDropdown, + FilterSortDropdownProps, + FilterToolbar as MosaicFilterToolbar, + FilterToolbarProps, + FilterView as MosaicFilterView, + FilterViewProps, + Grid as MosaicGrid, + GridBase as MosaicGridBase, + GridBaseProps, + GridProps, + HelpLinks as MosaicHelpLinks, + HelpLinksProps, + Icon as MosaicIcon, + IconProps, + Impact as MosaicImpact, + ImpactProps, + Impacts as MosaicImpacts, + ImpactsProps, + Label as MosaicLabel, + LabelProps, + LinkBase as MosaicLinkBase, + LinkBaseProps, + LinkButton as MosaicLinkButton, + LinkButtonProps, + Links as MosaicLinks, + LinksProps, + LinkText as MosaicLinkText, + LinkTextProps, + ListItem as MosaicListItem, + ListItemProps, + OrderedList as MosaicOrderedList, + OrderedListProps, + SecondaryNavbar as MosaicSecondaryNavbar, + SecondaryNavbarProps, + Story as MosaicStory, + StoryProps, + Tabs as MosaicTabs, + TabsProps, + Tag as MosaicTag, + TagProps, + TileBase as MosaicTileBase, + TileBaseProps, + TileButton as MosaicTileButton, + TileButtonProps, + TileContent as MosaicTileContent, + TileContentLabel as MosaicTileContentLabel, + TileContentLabelProps, + TileContentProps, + TileLink as MosaicTileLink, + TileLinkProps, + Tiles as MosaicTiles, + TilesProps, + UnorderedList as MosaicUnorderedList, + UnOrderedListProps, + ViewStack as MosaicViewStack, + ViewStackProps +} from '@jpmorganchase/mosaic-components'; + +import { + OpenAPI as MosaicOpenAPI, + type OpenAPIProps +} from '@jpmorganchase/mosaic-open-api-component'; + +import { withMarkdownSpacing } from './withMarkdownSpacing'; + +export { + AudioPlayer, + AccordionDetails, + AccordionSection, + AccordionSummary, + Button, + EditionFilterView, + FeatureActions, + FeatureContent, + FeatureEyebrow, + FeatureTitle, + Hero, + Link, + SectionHeading, + StickyHeader, + Tab, + TabsBase, + PageFilterView, + VideoPlayer, + View +} from '@jpmorganchase/mosaic-components'; +export * from './markdownElements'; +export * from './typography'; + +export const Accordion = withMarkdownSpacing(MosaicAccordion); +export const Callout = withMarkdownSpacing(MosaicCallout); +export const Card = withMarkdownSpacing(MosaicCard); +export const Cards = withMarkdownSpacing(MosaicCards); +export const ComponentExample = withMarkdownSpacing(MosaicComponentExample); +export const DataTable = withMarkdownSpacing & { ref?: Ref }>( + MosaicDataTable +); +export const EditionTileLink = withMarkdownSpacing(MosaicEditionTileLink); +export const Feature = withMarkdownSpacing(MosaicFeature); +export const Features = withMarkdownSpacing(MosaicFeatures); +export const FilterView = withMarkdownSpacing>(MosaicFilterView); +export const FilterDropdown = withMarkdownSpacing(MosaicFilterDropdown); +export const FilterToolbar = withMarkdownSpacing(MosaicFilterToolbar); +export const FilterNoResults = withMarkdownSpacing(MosaicFilterNoResults); +export const FilterPillGroup = withMarkdownSpacing(MosaicFilterPillGroup); +export const FilterSortDropdown = + withMarkdownSpacing(MosaicFilterSortDropdown); +export const FilterSearch = withMarkdownSpacing(MosaicFilterSearch); +export const FilterResultCount = + withMarkdownSpacing(MosaicFilterResultCount); +export const Grid = withMarkdownSpacing(MosaicGrid); +export const GridBase = withMarkdownSpacing(MosaicGridBase); +export const HelpLinks = withMarkdownSpacing(MosaicHelpLinks); +export const Icon = withMarkdownSpacing(MosaicIcon, 'regular', true); +export const Impact = withMarkdownSpacing(MosaicImpact); +export const Impacts = withMarkdownSpacing(MosaicImpacts); +export const Label = withMarkdownSpacing(MosaicLabel); +export const LinkBase = withMarkdownSpacing(MosaicLinkBase); +export const LinkButton = withMarkdownSpacing(MosaicLinkButton); +export const LinkText = withMarkdownSpacing(MosaicLinkText); +export const Links = withMarkdownSpacing(MosaicLinks); +export const ListItem = withMarkdownSpacing(MosaicListItem); +export const OpenAPI = withMarkdownSpacing(MosaicOpenAPI); +export const OrderedList = withMarkdownSpacing(MosaicOrderedList); +export const Tag = withMarkdownSpacing(MosaicTag); +export const SecondaryNavbar = withMarkdownSpacing(MosaicSecondaryNavbar); +export const Story = withMarkdownSpacing(MosaicStory); +export const Tabs = withMarkdownSpacing(MosaicTabs); +export const Tiles = withMarkdownSpacing(MosaicTiles); +export const TileBase = withMarkdownSpacing(MosaicTileBase); +export const TileButton = withMarkdownSpacing(MosaicTileButton); +export const TileContent = withMarkdownSpacing(MosaicTileContent); +export const TileContentLabel = withMarkdownSpacing(MosaicTileContentLabel); +export const TileLink = withMarkdownSpacing(MosaicTileLink); +export const UnorderedList = withMarkdownSpacing(MosaicUnorderedList); +export const ViewStack = withMarkdownSpacing>(MosaicViewStack); diff --git a/packages/mdx-components/src/index.tsx b/packages/mdx-components/src/index.tsx new file mode 100644 index 000000000..021480a9d --- /dev/null +++ b/packages/mdx-components/src/index.tsx @@ -0,0 +1,3 @@ +'use client'; + +export * from './components'; diff --git a/packages/mdx-components/src/markdownElements.tsx b/packages/mdx-components/src/markdownElements.tsx new file mode 100644 index 000000000..c2c713712 --- /dev/null +++ b/packages/mdx-components/src/markdownElements.tsx @@ -0,0 +1,58 @@ +import { emphasis, link, paragraph } from '@jpmorganchase/mosaic-theme'; +import { + ListItem, + OrderedList, + UnorderedList, + withStyledTypography +} from '@jpmorganchase/mosaic-components'; +import { Image as MosaicImage, ImageProps } from '@jpmorganchase/mosaic-site-components'; + +import { BlockQuote } from './BlockQuote'; +import { InlineCode } from './InlineCode'; +import * as Heading from './Heading'; +import { Link } from './Link'; +import { Table as MosaicTable } from './Table'; +import { Tbody as MosaicTbody } from './Tbody'; +import { Thead as MosaicThead } from './Thead'; +import { Th as MosaicTh } from './Th'; +import { Td as MosaicTd } from './Td'; +import { Tr as MosaicTr } from './Tr'; +import { ThematicBreak } from './ThematicBreak'; +import { withMarkdownSpacing } from './withMarkdownSpacing'; + +export const a = withMarkdownSpacing(Link, link({ context: 'markdown', variant: 'document' })); +export const blockquote = withMarkdownSpacing(BlockQuote); +export const ol = withMarkdownSpacing(OrderedList); +export const ul = withMarkdownSpacing(UnorderedList); +export const li = withMarkdownSpacing(ListItem, 'none'); +export const hr = ThematicBreak; +export const h1 = Heading.H1; +export const h2 = Heading.H2; +export const h3 = Heading.H3; +export const h4 = Heading.H4; +export const h5 = Heading.H5; +export const h6 = Heading.H6; +export const img = withMarkdownSpacing(MosaicImage); +export const Image = img; +export const p = withStyledTypography(paragraph({ variant: 'paragraph2', context: 'markdown' })); +export const inlineCode = withMarkdownSpacing(InlineCode, 'none'); +export const table = withMarkdownSpacing(MosaicTable); +export const Table = table; +export const tbody = withMarkdownSpacing(MosaicTbody, 'none'); +export const Tbody = tbody; +export const thead = withMarkdownSpacing(MosaicThead, 'none'); +export const Thead = thead; +export const th = withMarkdownSpacing(MosaicTh, 'none'); +export const Th = th; +export const td = withMarkdownSpacing(MosaicTd, 'none'); +export const Td = MosaicTd; +export const tr = withMarkdownSpacing(MosaicTr, 'none'); +export const Tr = tr; +export const em = withStyledTypography( + emphasis({ variant: 'regular', context: 'markdown' }), + 'span' +); +export const strong = withStyledTypography( + emphasis({ variant: 'strong', context: 'markdown' }), + 'span' +); diff --git a/packages/mdx-components/src/typography.tsx b/packages/mdx-components/src/typography.tsx new file mode 100644 index 000000000..ca0ec0544 --- /dev/null +++ b/packages/mdx-components/src/typography.tsx @@ -0,0 +1,55 @@ +import { + action, + amount, + caption, + eyebrow, + paragraph, + subtitle, + watermark +} from '@jpmorganchase/mosaic-theme'; +import { withStyledTypography } from '@jpmorganchase/mosaic-components'; +import * as markdownElements from './markdownElements'; + +export const Action1 = withStyledTypography(action({ variant: 'action1', context: 'markdown' })); +export const Action2 = withStyledTypography(action({ variant: 'action2', context: 'markdown' })); +export const Action3 = withStyledTypography(action({ variant: 'action3', context: 'markdown' })); +export const Action4 = withStyledTypography(action({ variant: 'action4', context: 'markdown' })); +export const Action5 = withStyledTypography(action({ variant: 'action5', context: 'markdown' })); +export const Action6 = withStyledTypography(action({ variant: 'action6', context: 'markdown' })); +export const Action7 = withStyledTypography(action({ variant: 'action7', context: 'markdown' })); +export const Action8 = withStyledTypography(action({ variant: 'action8', context: 'markdown' })); +export const Caption1 = withStyledTypography(caption({ variant: 'caption1', context: 'markdown' })); +export const Caption2 = withStyledTypography(caption({ variant: 'caption2', context: 'markdown' })); +export const Caption3 = withStyledTypography(caption({ variant: 'caption3', context: 'markdown' })); +export const Caption4 = withStyledTypography(caption({ variant: 'caption4', context: 'markdown' })); +export const Caption5 = withStyledTypography(caption({ variant: 'caption5', context: 'markdown' })); +export const Caption6 = withStyledTypography(caption({ variant: 'caption6', context: 'markdown' })); +export const Hr = markdownElements.hr; +export * from './Heading'; +export const P1 = markdownElements.p; +export const P2 = withStyledTypography(paragraph({ variant: 'paragraph2', context: 'markdown' })); +export const P3 = withStyledTypography(paragraph({ variant: 'paragraph3', context: 'markdown' })); +export const P4 = withStyledTypography(paragraph({ variant: 'paragraph4', context: 'markdown' })); +export const P5 = withStyledTypography(paragraph({ variant: 'paragraph5', context: 'markdown' })); +export const P6 = withStyledTypography(paragraph({ variant: 'paragraph6', context: 'markdown' })); +export const Subtitle1 = withStyledTypography( + subtitle({ variant: 'subtitle1', context: 'markdown' }) +); +export const Subtitle2 = withStyledTypography( + subtitle({ variant: 'subtitle2', context: 'markdown' }) +); +export const Subtitle3 = withStyledTypography( + subtitle({ variant: 'subtitle3', context: 'markdown' }) +); +export const Subtitle4 = withStyledTypography( + subtitle({ variant: 'subtitle4', context: 'markdown' }) +); +export const Subtitle5 = withStyledTypography( + subtitle({ variant: 'subtitle5', context: 'markdown' }) +); +export const Subtitle6 = withStyledTypography( + subtitle({ variant: 'subtitle6', context: 'markdown' }) +); +export const Amount = withStyledTypography(amount({ context: 'markdown' })); +export const Eyebrow = withStyledTypography(eyebrow({ context: 'markdown' })); +export const Watermark = withStyledTypography(watermark({ context: 'markdown' })); diff --git a/packages/components/src/Markdown/withMarkdownSpacing/index.tsx b/packages/mdx-components/src/withMarkdownSpacing/index.tsx similarity index 100% rename from packages/components/src/Markdown/withMarkdownSpacing/index.tsx rename to packages/mdx-components/src/withMarkdownSpacing/index.tsx diff --git a/packages/mdx-components/src/withMarkdownSpacing/styles.css.ts b/packages/mdx-components/src/withMarkdownSpacing/styles.css.ts new file mode 100644 index 000000000..8164ffc50 --- /dev/null +++ b/packages/mdx-components/src/withMarkdownSpacing/styles.css.ts @@ -0,0 +1,7 @@ +import { responsiveSprinkles } from '@jpmorganchase/mosaic-theme'; + +export default { + none: responsiveSprinkles({ marginTop: 'x6' }), + regular: responsiveSprinkles({ marginTop: 'x6' }), + inline: responsiveSprinkles({ paddingLeft: 'x1' }) +}; diff --git a/packages/mdx-components/tsconfig.json b/packages/mdx-components/tsconfig.json new file mode 100644 index 000000000..a179de405 --- /dev/null +++ b/packages/mdx-components/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "../../tsconfig.bundle.json", + "compilerOptions": { + "rootDir": "./src", + "outDir": "./dist" + }, + "include": ["src"] +} diff --git a/packages/open-api-component/package.json b/packages/open-api-component/package.json index 200e6b350..dd1d4b767 100644 --- a/packages/open-api-component/package.json +++ b/packages/open-api-component/package.json @@ -23,36 +23,33 @@ "default": "./dist/index.js" } }, + "engines": { + "node": ">=20.0.0" + }, "scripts": { "build": "npm-run-all --parallel build:*", - "build:bundle": "node ../../scripts/bundle.js", + "build:bundle": "node ../../scripts/bundle.mjs", "build:types": "tsc", "clean": "npx del-cli 'dist/**' && find . -type d -empty -delete", "lint": "eslint --ignore-pattern \"**/__tests__/**\"", - "dev": "node ../../scripts/bundle.js watch" + "dev": "node ../../scripts/bundle.mjs watch" }, "devDependencies": { "del-cli": "^4.0.1", - "typescript": "^4.8.3" + "typescript": "^5.2.2" }, "dependencies": { "@jpmorganchase/mosaic-components": "^0.1.0-beta.62", "@jpmorganchase/mosaic-theme": "^0.1.0-beta.62", - "@vanilla-extract/css": "^1.6.0", - "@vanilla-extract/sprinkles": "^1.3.0", - "@vanilla-extract/recipes": "^0.2.1", + "@vanilla-extract/css": "^1.14.0", + "@vanilla-extract/sprinkles": "^1.6.1", + "@vanilla-extract/recipes": "^0.5.1", "@types/swagger-ui-react": "^4.18.0", - "swagger-ui-react": "^5.0.0", - "clsx": "^2.0.0", - "deepmerge": "^2.0.1", - "lodash-es": "^4.17.21", - "react-live": "^2.2.3", - "react-markdown": "^6.0.2", - "use-memo-one": "^1.1.1", - "warning": "^3.0.0" + "swagger-ui-react": "^5.11.0", + "clsx": "^2.0.0" }, "peerDependencies": { - "@types/react": "^18.0.26", + "@types/react": "^18.2.46", "react": "^18.2.0", "react-dom": "^18.2.0" } diff --git a/packages/open-api-component/src/IsomorphicSuspense.tsx b/packages/open-api-component/src/IsomorphicSuspense.tsx deleted file mode 100644 index b58927ea6..000000000 --- a/packages/open-api-component/src/IsomorphicSuspense.tsx +++ /dev/null @@ -1,17 +0,0 @@ -import React from 'react'; - -export interface IsomorphicSuspenseProps { - fallback: JSX.Element; -} - -export const IsomorphicSuspense: React.FC> = ({ - children, - fallback -}) => { - if (typeof window === 'undefined') { - return fallback; - } - return {children}; -}; - -export default IsomorphicSuspense; diff --git a/packages/open-api-component/src/OpenAPI/SwaggerUi.tsx b/packages/open-api-component/src/OpenAPI/SwaggerUi.tsx index d222c90ff..920a7e5de 100644 --- a/packages/open-api-component/src/OpenAPI/SwaggerUi.tsx +++ b/packages/open-api-component/src/OpenAPI/SwaggerUi.tsx @@ -1,7 +1,13 @@ +'use client'; + /** * Keep this separate. * We want this to be loaded on the client and not the server to prevent * issues with swagger-ui-react dependencies. + * + * Also, swagger-ui-react needs node 20 to work + * See --> https://github.com/swagger-api/swagger-ui/issues/8245#issuecomment-1707703135 + * */ import SwaggerUI from 'swagger-ui-react'; diff --git a/packages/open-api-component/src/OpenAPI/index.tsx b/packages/open-api-component/src/OpenAPI/index.tsx index 26e1f3e3e..87d837929 100644 --- a/packages/open-api-component/src/OpenAPI/index.tsx +++ b/packages/open-api-component/src/OpenAPI/index.tsx @@ -1,6 +1,4 @@ -import React, { lazy } from 'react'; - -import { IsomorphicSuspense } from '../IsomorphicSuspense'; +import React, { lazy, Suspense } from 'react'; export interface OpenAPIProps { /** Additional class name for root class override */ @@ -12,7 +10,7 @@ export interface OpenAPIProps { const LazySwagger = lazy(() => import('./SwaggerUi')); export const OpenAPI: React.FC> = ({ url }) => ( - Loading Swagger component...}> + Loading Swagger component...}> - + ); diff --git a/packages/open-api-component/src/index.ts b/packages/open-api-component/src/index.ts new file mode 100644 index 000000000..5574526f7 --- /dev/null +++ b/packages/open-api-component/src/index.ts @@ -0,0 +1,4 @@ +import './styles.css'; +import 'swagger-ui-react/swagger-ui.css'; + +export * from './OpenAPI/index'; diff --git a/packages/open-api-component/src/index.tsx b/packages/open-api-component/src/index.tsx deleted file mode 100644 index c00bc2493..000000000 --- a/packages/open-api-component/src/index.tsx +++ /dev/null @@ -1 +0,0 @@ -export * from './OpenAPI'; diff --git a/packages/open-api-component/src/OpenAPI/styles.css.ts b/packages/open-api-component/src/styles.css.ts similarity index 100% rename from packages/open-api-component/src/OpenAPI/styles.css.ts rename to packages/open-api-component/src/styles.css.ts diff --git a/packages/open-api-component/src/styles.ts b/packages/open-api-component/src/styles.ts deleted file mode 100644 index 3604c1125..000000000 --- a/packages/open-api-component/src/styles.ts +++ /dev/null @@ -1,3 +0,0 @@ -import 'swagger-ui-react/swagger-ui.css'; - -import './OpenAPI/styles.css'; diff --git a/packages/plugins/package.json b/packages/plugins/package.json index 0cc4bf2d4..3cef39d1c 100644 --- a/packages/plugins/package.json +++ b/packages/plugins/package.json @@ -56,16 +56,16 @@ "react-docgen-typescript": "^2.2.2", "react-pro-sidebar": "^1.0.0", "reading-time": "^1.5.0", - "remark": "^14.0.2", - "remark-directive": "^2.0.1", - "remark-gfm": "^3.0.1", - "remark-mdx": "^2.1.5", - "remark-parse": "^10.0.1", - "remark-stringify": "^10.0.2", + "remark": "^15.0.1", + "remark-directive": "^3.0.0", + "remark-gfm": "^4.0.0", + "remark-mdx": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-stringify": "^11.0.0", "rxjs": "^7.5.5", - "unified": "^10.1.2", - "unist-util-visit": "^4.1.1", + "unified": "^11.0.4", + "unist-util-visit": "^5.0.0", "uuid": "^7.0.3", - "vfile-reporter": "^7.0.5" + "vfile-reporter": "^8.1.0" } } diff --git a/packages/plugins/src/ReadingTimePlugin.ts b/packages/plugins/src/ReadingTimePlugin.ts index c9a681158..67889b6e9 100644 --- a/packages/plugins/src/ReadingTimePlugin.ts +++ b/packages/plugins/src/ReadingTimePlugin.ts @@ -41,7 +41,7 @@ const ReadingTimePlugin: PluginType = { visit( tree, node => node.type === 'text' || node.type === 'code', - (node: LeafNode) => { + function (node: LeafNode) { textContent += node.value; } ); diff --git a/packages/schemas/src/ActiveEnvSchema.ts b/packages/schemas/src/ActiveEnvSchema.ts new file mode 100644 index 000000000..dd8e99cfc --- /dev/null +++ b/packages/schemas/src/ActiveEnvSchema.ts @@ -0,0 +1,7 @@ +import { z } from 'zod'; + +export const activeEnvSchema = z.object({ + MOSAIC_ACTIVE_MODE_URL: z.string() +}); + +export type ActiveEnvSchema = z.infer; diff --git a/packages/schemas/src/index.ts b/packages/schemas/src/index.ts index 9c8991a19..7c45ffa41 100644 --- a/packages/schemas/src/index.ts +++ b/packages/schemas/src/index.ts @@ -4,6 +4,7 @@ export * from './fileExtensionSchema.js'; export * from './sidebarSortConfigSchema.js'; export * from './validate.js'; +export * from './ActiveEnvSchema.js'; export * from './SnapshotFileEnvSchema.js'; export * from './MosaicConfigSchema.js'; export * from './PluginModuleSchema.js'; diff --git a/packages/site-components-next/package.json b/packages/site-components-next/package.json new file mode 100644 index 000000000..46912705c --- /dev/null +++ b/packages/site-components-next/package.json @@ -0,0 +1,55 @@ +{ + "name": "@jpmorganchase/mosaic-site-components-next", + "version": "0.1.0-beta.62", + "license": "Apache-2.0", + "description": "Mosaic - Site components NEXT", + "repository": { + "type": "git", + "url": "git@github.com:jpmorganchase/mosaic.git", + "directory": "packages/site-components" + }, + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "import": "./dist/index.js", + "node": "./dist/index.js" + } + }, + "scripts": { + "build": "npm-run-all --parallel build:*", + "build:bundle": "node ../../scripts/bundle.mjs", + "build:types": "tsc", + "clean": "npx del-cli 'dist/**' && find . -type d -empty -delete", + "lint": "eslint --ignore-pattern \"**/__tests__/**\"", + "dev": "node ../../scripts/bundle.mjs watch" + }, + "devDependencies": { + "del-cli": "^4.0.1", + "typescript": "^5.2.2" + }, + "dependencies": { + "@jpmorganchase/mosaic-mdx-components": "0.1.0-beta.62", + "@jpmorganchase/mosaic-site-components": "^0.1.0-beta.62", + "@jpmorganchase/mosaic-loaders": "^0.1.0-beta.62", + "@jpmorganchase/mosaic-types": "^0.1.0-beta.62", + "clsx": "^2.0.0", + "deepmerge": "^4.2.2", + "rehype-pretty-code": "0.13.0", + "remark-rehype": "11.1.0", + "rehype-slug": "^6.0.0", + "rehype-stringify": "10.0.0", + "remark-gfm": "^4.0.0", + "server-only": "^0.0.1", + "shiki": "^1.1.1", + "@daviereid/next-mdx-remote": "^4.4.2", + "unified": "11.0.4" + }, + "peerDependencies": { + "@types/react": "^18.2.46", + "next-auth": "^4.22.1", + "react": "^18.2.0", + "react-dom": "^18.2.0" + } +} diff --git a/packages/site-components-next/src/AppHeader/index.tsx b/packages/site-components-next/src/AppHeader/index.tsx new file mode 100644 index 000000000..09767619f --- /dev/null +++ b/packages/site-components-next/src/AppHeader/index.tsx @@ -0,0 +1,138 @@ +import { Suspense } from 'react'; +import { loadSharedConfig } from '@jpmorganchase/mosaic-loaders'; +import { AppHeader as UI } from '@jpmorganchase/mosaic-site-components'; +import type { TabsLinkItem, TabsMenu, TabsMenuButtonItem } from '@jpmorganchase/mosaic-components'; +import { SearchInput } from '../SearchInput'; + +/** + * [[`MenuItemType`]] defines the type of App header Menu items + */ +export type MenuItemType = 'menu' | 'link'; + +function isMenu(menu: MenuLinkItem | MenuLinksItem): menu is MenuLinksItem { + return (menu as MenuLinksItem).links !== undefined; +} +function isMenuLink(menu: MenuLinkItem | MenuLinksItem): menu is MenuLinkItem { + return (menu as MenuLinkItem).link !== undefined; +} + +/** + * [[`Menu`]] defines App Header menus + */ +export type Menu = MenuLinksItem | MenuLinkItem; + +/** + * [[`MenuLinksItem`]] defines a menu of links + */ +export interface MenuLinksItem { + /** Collection of link options */ + links: MenuLinkItem[]; + /** Title of MenuLinksItem */ + title: string; + /** Type of MenuLinksItem */ + type: 'menu'; +} + +/** + * [[`MenuLinksItem`]] defines a menu of links and includes a type + */ +export interface AppHeaderMenuLinksItem { + /** Collection of link options */ + links: MenuLinkItem[]; + /** Title of Tab */ + title: string; + /** Type of Tab */ + type: 'menu'; +} + +/** + * [[`MenuLinkItem`]] define a menu link + */ +export interface MenuLinkItem { + /** URL linked by Tab */ + link: string; + /** Title of Tab */ + title?: string; + /** Type of MenuLinkItem */ + type: 'link'; +} + +/** + * [[`MenuLinkItem`]] define a menu link and include a type + */ +export interface AppHeaderMenuLinkItem { + /** URL linked by Tab */ + link: string; + /** Title of Tab */ + title?: string; + /** Type of Tab */ + type: 'link'; +} + +/** + * [[`AppHeaderSlice`]] specifies the contents of the AppHeader + */ +export type AppHeaderSlice = { + /** App logo/title */ + title: string; + /** Link to the home page */ + homeLink: string; + /** Logo URL */ + logo?: string; + /** App Header menu */ + menu: Menu[]; + /** Search namespace, suffix used on env variable `process.env.SEARCH_ENDPOINT` to filter search results to a specific namespace. */ + searchNamespace?: string; + /** Search index, created by SearchIndexPlugin */ + searchIndex?: any; +}; + +export type AppHeaderMenu = Array; + +function createTabsMenu(appHeaderMenu: AppHeaderMenu): TabsMenu { + const tabsMenu = appHeaderMenu.reduce<(TabsMenuButtonItem | TabsLinkItem)[]>( + (result, menuItem) => { + if (menuItem && isMenu(menuItem)) { + const tabsLinksItem: TabsMenuButtonItem = { + title: menuItem.title, + type: 'menu', + links: menuItem.links.map(({ title, link }: MenuLinkItem) => ({ + type: 'link', + title, + link + })) + }; + return [...result, tabsLinksItem]; + } + if (menuItem && isMenuLink(menuItem)) { + const tabsLinkItem: TabsLinkItem = { + title: menuItem.title, + type: 'link', + link: menuItem.link + }; + return [...result, tabsLinkItem]; + } + console.error('Unknown Menu item passed to createTabsMenu, ignoring', menuItem); + return result; + }, + [] + ); + return tabsMenu; +} + +export async function AppHeader({ path }: { path: string }) { + const sharedConfig = await loadSharedConfig(path); + const headerConfig = sharedConfig?.header; + const { homeLink, logo, menu: menuItems = [], title } = headerConfig || {}; + + const tabsMenu = createTabsMenu(menuItems); + + return ( + + Loading Search
    }> + {/* @ts-expect-error Server Component */} + + + + ); +} diff --git a/packages/site-components-next/src/Breadcrumbs/index.tsx b/packages/site-components-next/src/Breadcrumbs/index.tsx new file mode 100644 index 000000000..40078e71e --- /dev/null +++ b/packages/site-components-next/src/Breadcrumbs/index.tsx @@ -0,0 +1,8 @@ +import { loadPage } from '@jpmorganchase/mosaic-loaders'; +import { Breadcrumbs as UI } from '@jpmorganchase/mosaic-site-components'; + +export async function Breadcrumbs({ path, loader }: { path: string; loader: typeof loadPage }) { + const { data } = await loader(path); + const breadcrumbs = data?.breadcrumbs || []; + return 2} />; +} diff --git a/packages/site-components-next/src/DocPaginator/index.tsx b/packages/site-components-next/src/DocPaginator/index.tsx new file mode 100644 index 000000000..ca29c3337 --- /dev/null +++ b/packages/site-components-next/src/DocPaginator/index.tsx @@ -0,0 +1,16 @@ +import { loadPage } from '@jpmorganchase/mosaic-loaders'; +import { DocPaginator as UI } from '@jpmorganchase/mosaic-site-components'; + +export async function DocPaginator({ + path, + loader, + linkSuffix = 'Page' +}: { + path: string; + loader: typeof loadPage; + linkSuffix: string; +}) { + const { data } = await loader(path); + const { next, prev } = data?.navigation || {}; + return ; +} diff --git a/packages/site-components-next/src/EditionFilterView/index.tsx b/packages/site-components-next/src/EditionFilterView/index.tsx new file mode 100644 index 000000000..14df8fffd --- /dev/null +++ b/packages/site-components-next/src/EditionFilterView/index.tsx @@ -0,0 +1,17 @@ +import type { EditionFilterViewProps } from '@jpmorganchase/mosaic-components'; +import { EditionFilterView as UI } from '@jpmorganchase/mosaic-mdx-components'; +import { MDXContent } from '../MDXContent'; +import { mdxElements } from '../mdx/elements'; + +export async function EditionFilterView({ view, ...restProps }: EditionFilterViewProps) { + const formattedView = view.map(item => { + const formattedDescription = ( + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + /** @ts-ignore Server Component */ + + ); + + return item.formattedDescription ? { ...item, formattedDescription } : item; + }); + return ; +} diff --git a/packages/site-components-next/src/Footer/index.tsx b/packages/site-components-next/src/Footer/index.tsx new file mode 100644 index 000000000..e501fa7a6 --- /dev/null +++ b/packages/site-components-next/src/Footer/index.tsx @@ -0,0 +1,8 @@ +import { loadSharedConfig } from '@jpmorganchase/mosaic-loaders'; +import { Footer as UI } from '@jpmorganchase/mosaic-site-components'; + +export async function Footer({ path }: { path: string }) { + const sharedConfig = await loadSharedConfig(path); + const footerProps = sharedConfig?.footer; + return ; +} diff --git a/packages/site-components-next/src/MDXContent/index.tsx b/packages/site-components-next/src/MDXContent/index.tsx new file mode 100644 index 000000000..43eb2fd10 --- /dev/null +++ b/packages/site-components-next/src/MDXContent/index.tsx @@ -0,0 +1,12 @@ +import { CompileOptions, compile } from '../actions/compile'; + +export type MDXContentProps = CompileOptions; + +export async function MDXContent(props: MDXContentProps) { + if (props.source === undefined) { + return null; + } + + const content = await compile(props); + return content; +} diff --git a/packages/site-components-next/src/SearchInput/index.tsx b/packages/site-components-next/src/SearchInput/index.tsx new file mode 100644 index 000000000..7d2cf719f --- /dev/null +++ b/packages/site-components-next/src/SearchInput/index.tsx @@ -0,0 +1,12 @@ +import { SearchInput as UI } from '@jpmorganchase/mosaic-site-components'; +import { loadMosaicData } from '@jpmorganchase/mosaic-loaders'; +import { SearchConfig, SearchIndex } from '@jpmorganchase/mosaic-types'; + +export async function SearchInput() { + const [searchConfig, searchIndex] = await Promise.all([ + loadMosaicData('search-config.json'), + loadMosaicData('search-data.json') + ]); + + return ; +} diff --git a/packages/site-components-next/src/Sidebar/index.tsx b/packages/site-components-next/src/Sidebar/index.tsx new file mode 100644 index 000000000..887cb250d --- /dev/null +++ b/packages/site-components-next/src/Sidebar/index.tsx @@ -0,0 +1,18 @@ +import type { loadPage } from '@jpmorganchase/mosaic-loaders'; +import { PageNavigation as UI } from '@jpmorganchase/mosaic-site-components'; +import type { Breadcrumb } from '@jpmorganchase/mosaic-types'; + +function getIds(breadcrumbs: Breadcrumb[]) { + return new Set(breadcrumbs.map(({ id }) => id.substr(0, id.lastIndexOf('.')))); +} + +export async function Sidebar({ path, loader }: { path: string; loader: typeof loadPage }) { + const { data } = await loader(path); + const props = { + menu: data?.sidebarData || [], + selectedNodeId: data?.route, + expandedNodeIds: getIds(data?.breadcrumbs || []) + }; + + return ; +} diff --git a/packages/site-components-next/src/TOC/index.tsx b/packages/site-components-next/src/TOC/index.tsx new file mode 100644 index 000000000..8765aa570 --- /dev/null +++ b/packages/site-components-next/src/TOC/index.tsx @@ -0,0 +1,16 @@ +import { loadPage } from '@jpmorganchase/mosaic-loaders'; +import { TableOfContents as UI, type TOCItem } from '@jpmorganchase/mosaic-site-components'; + +export async function TableOfContents({ + path, + loader, + items +}: { + path: string; + loader: typeof loadPage; + items?: TOCItem[]; +}) { + const { data } = await loader(path); + const tableOfContents = data?.tableOfContents || []; + return ; +} diff --git a/packages/site-components-next/src/actions/compile.ts b/packages/site-components-next/src/actions/compile.ts new file mode 100644 index 000000000..10cd7aafc --- /dev/null +++ b/packages/site-components-next/src/actions/compile.ts @@ -0,0 +1,49 @@ +import { compileMDX } from '@daviereid/next-mdx-remote/rsc'; +import remarkGfm from 'remark-gfm'; +import rehypeSlug from 'rehype-slug'; +import rehypePrettyCode, { type Options } from 'rehype-pretty-code'; +import type { MDXComponents } from 'mdx/types'; +import type { SiteState } from '@jpmorganchase/mosaic-loaders'; + +const defaultLangPrettyCodeOptions: Partial = { + theme: { dark: 'night-owl', light: 'light-plus' }, + defaultLang: 'js', + keepBackground: false +}; + +export type CompileOptions = { + source: string; + components: MDXComponents; + data?: Partial; + rehypePlugins?: any[]; + remarkPlugins?: any[]; + parseFrontmatter?: boolean; + prettyCodeOptions?: Options; +}; + +export async function compile({ + source, + data = {}, + components, + rehypePlugins = [], + remarkPlugins = [], + parseFrontmatter = false, + prettyCodeOptions = defaultLangPrettyCodeOptions +}: CompileOptions) { + const { content } = await compileMDX({ + source, + components, + options: { + scope: { meta: data }, + mdxOptions: { + rehypePlugins: [rehypeSlug, [rehypePrettyCode, prettyCodeOptions], ...rehypePlugins], + remarkPlugins: [remarkGfm, ...remarkPlugins] + }, + parseFrontmatter + } + }); + + return content; +} + +export type CompileAction = typeof compile; diff --git a/packages/site-components-next/src/actions/preview.ts b/packages/site-components-next/src/actions/preview.ts new file mode 100644 index 000000000..2aabb44d0 --- /dev/null +++ b/packages/site-components-next/src/actions/preview.ts @@ -0,0 +1,37 @@ +import { SiteState } from '@jpmorganchase/mosaic-loaders'; +import { compile, type CompileOptions } from './compile'; +import { mdxComponents } from '../mdx'; + +export type PreviewActionOptions = { + source: string; + data?: Partial; + components?: CompileOptions['components']; +}; + +/** + * + * This is a wrapper around the compile function that handles errors. + * + * When previewing content in the editor we expect errors + * so want to show them in toasts and not redirect to the main error page + */ +export async function preview({ + components = mdxComponents, + ...restOptions +}: PreviewActionOptions) { + try { + const result = await compile({ ...restOptions, components }); + return { result }; + } catch (e) { + if (e instanceof Error) { + return { + result: undefined, + error: e.message + }; + } + + throw e; + } +} + +export type PreviewAction = typeof preview; diff --git a/packages/site-components-next/src/index.ts b/packages/site-components-next/src/index.ts new file mode 100644 index 000000000..d4ef8940a --- /dev/null +++ b/packages/site-components-next/src/index.ts @@ -0,0 +1,14 @@ +import 'server-only'; +import { compile, CompileAction } from './actions/compile'; +import { preview, PreviewAction } from './actions/preview'; + +export * from './AppHeader'; +export * from './Breadcrumbs'; +export * from './DocPaginator'; +export * from './Footer'; +export * from './Sidebar'; +export * from './TOC'; +export * from './mdx'; +export * from './MDXContent'; + +export { compile, type CompileAction, preview, type PreviewAction }; diff --git a/packages/site-components-next/src/mdx/elements.ts b/packages/site-components-next/src/mdx/elements.ts new file mode 100644 index 000000000..bc6f85737 --- /dev/null +++ b/packages/site-components-next/src/mdx/elements.ts @@ -0,0 +1,34 @@ +import { + a, + em, + h1, + h2, + h3, + h4, + h5, + h6, + hr, + li, + ol, + p, + ul, + inlineCode +} from '@jpmorganchase/mosaic-mdx-components'; +import type { MDXComponents } from 'mdx/types'; + +export const mdxElements = { + a, + em, + h1, + h2, + h3, + h4, + h5, + h6, + hr, + li, + ol, + p, + ul, + code: inlineCode +} as unknown as MDXComponents; diff --git a/packages/site-components-next/src/mdx/index.tsx b/packages/site-components-next/src/mdx/index.tsx new file mode 100644 index 000000000..940ea4487 --- /dev/null +++ b/packages/site-components-next/src/mdx/index.tsx @@ -0,0 +1,239 @@ +import type { MDXComponents } from 'mdx/types'; + +import { + Accordion, + AccordionDetails, + AccordionSection, + AccordionSummary, + Action1, + Action2, + Action3, + Action4, + Action5, + Action6, + Action7, + Action8, + Amount, + AudioPlayer, + Button, + blockquote, + Callout, + Caption1, + Caption2, + Caption3, + Caption4, + Caption5, + Caption6, + Card, + Cards, + ComponentExample, + DataTable, + EditionTileLink, + Eyebrow, + Feature, + FeatureActions, + FeatureContent, + FeatureEyebrow, + FeatureTitle, + Features, + FilterView, + FilterDropdown, + FilterToolbar, + FilterNoResults, + FilterPillGroup, + FilterSortDropdown, + FilterSearch, + FilterResultCount, + Grid, + GridBase, + H0, + H1, + H2, + H3, + H4, + H5, + H6, + HelpLinks, + Hero, + inlineCode, + Icon, + Impact, + Impacts, + Label, + Link, + LinkBase, + LinkButton, + LinkText, + Links, + ListItem, + OpenAPI, + OrderedList, + P1, + P2, + P3, + P4, + P5, + P6, + PageFilterView, + SecondaryNavbar, + SectionHeading, + strong, + StickyHeader, + Story, + Subtitle1, + Subtitle2, + Subtitle3, + Subtitle4, + Subtitle5, + Subtitle6, + table, + Table, + Tag, + Tabs, + Tab, + TabsBase, + tbody, + Tbody, + td, + Td, + thead, + Thead, + th, + Th, + Tiles, + TileBase, + TileButton, + TileContent, + TileContentLabel, + TileLink, + tr, + Tr, + UnorderedList, + View, + ViewStack, + VideoPlayer, + Watermark +} from '@jpmorganchase/mosaic-mdx-components'; + +import { EditionFilterView } from '../EditionFilterView'; + +import { mdxElements } from './elements'; + +export const mdxComponents = { + ...mdxElements, + Accordion, + AccordionDetails, + AccordionSection, + AccordionSummary, + Action1, + Action2, + Action3, + Action4, + Action5, + Action6, + Action7, + Action8, + Amount, + AudioPlayer, + Button, + blockquote, + Callout, + Caption1, + Caption2, + Caption3, + Caption4, + Caption5, + Caption6, + Card, + Cards, + ComponentExample, + DataTable, + Emphasis: mdxElements.em, + EditionFilterView, + EditionTileLink, + Eyebrow, + Feature, + FeatureActions, + FeatureContent, + FeatureEyebrow, + FeatureTitle, + Features, + FilterView, + FilterDropdown, + FilterToolbar, + FilterNoResults, + FilterPillGroup, + FilterSortDropdown, + FilterSearch, + FilterResultCount, + Grid, + GridBase, + H0, + H1, + H2, + H3, + H4, + H5, + H6, + HelpLinks, + Hero, + inlineCode, + Icon, + Impact, + Impacts, + Label, + Link, + LinkBase, + LinkButton, + LinkText, + Links, + ListItem, + OpenAPI, + OrderedList, + P1, + P2, + P3, + P4, + P5, + P6, + PageFilterView, + SecondaryNavbar, + SectionHeading, + strong, + Strong: strong, + StickyHeader, + Story, + Subtitle1, + Subtitle2, + Subtitle3, + Subtitle4, + Subtitle5, + Subtitle6, + table, + Table, + Tag, + Tabs, + Tab, + TabsBase, + tbody, + Tbody, + td, + Td, + thead, + Thead, + th, + Th, + Tiles, + TileBase, + TileButton, + TileContent, + TileContentLabel, + TileLink, + tr, + Tr, + UnorderedList, + View, + VideoPlayer, + ViewStack, + Watermark +} as unknown as MDXComponents; diff --git a/packages/site-components-next/tsconfig.json b/packages/site-components-next/tsconfig.json new file mode 100644 index 000000000..a179de405 --- /dev/null +++ b/packages/site-components-next/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "../../tsconfig.bundle.json", + "compilerOptions": { + "rootDir": "./src", + "outDir": "./dist" + }, + "include": ["src"] +} diff --git a/packages/site-components/package.json b/packages/site-components/package.json index 2ecca686b..f84fd673e 100644 --- a/packages/site-components/package.json +++ b/packages/site-components/package.json @@ -23,36 +23,36 @@ }, "scripts": { "build": "npm-run-all --parallel build:*", - "build:bundle": "node ../../scripts/bundle.js", + "build:bundle": "node ../../scripts/bundle.mjs", "build:types": "tsc", "clean": "npx del-cli 'dist/**' && find . -type d -empty -delete", "lint": "eslint --ignore-pattern \"**/__tests__/**\"", - "dev": "node ../../scripts/bundle.js watch" + "dev": "node ../../scripts/bundle.mjs watch" }, "devDependencies": { "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.0.0", "@types/styled-components": "^5.1.26", - "@vanilla-extract/esbuild-plugin": "^2.0.2", + "@vanilla-extract/esbuild-plugin": "^2.3.1", "del-cli": "^4.0.1", "jest-fetch-mock": "^3.0.3", "next-router-mock": "^0.9.2", - "typescript": "^4.8.3" + "typescript": "^5.2.2" }, "dependencies": { "@jpmorganchase/mosaic-components": "^0.1.0-beta.62", "@jpmorganchase/mosaic-content-editor-plugin": "^0.1.0-beta.62", "@jpmorganchase/mosaic-labs-components": "^0.1.0-beta.62", "@jpmorganchase/mosaic-open-api-component": "^0.1.0-beta.62", - "@jpmorganchase/mosaic-site-middleware": "^0.1.0-beta.62", "@jpmorganchase/mosaic-store": "^0.1.0-beta.62", "@jpmorganchase/mosaic-theme": "^0.1.0-beta.62", - "@salt-ds/lab": "1.0.0-alpha.20", + "@salt-ds/core": "^1.13.3", + "@salt-ds/lab": "1.0.0-alpha.25", "@types/mdast": "^3.0.0", - "@vanilla-extract/css": "^1.6.0", - "@vanilla-extract/recipes": "^0.2.1", - "@vanilla-extract/sprinkles": "^1.3.0", + "@vanilla-extract/css": "^1.14.0", + "@vanilla-extract/recipes": "^0.5.1", + "@vanilla-extract/sprinkles": "^1.6.1", "acorn": "^8.0.0", "acorn-jsx": "^5.0.0", "clsx": "^2.0.0", @@ -61,19 +61,14 @@ "https-proxy-agent": "^5.0.1", "jwt-decode": "^3.1.2", "lodash-es": "^4.17.21", - "next": "^13.4.1", - "next-mdx-remote": "^4.2.1", + "next": "^14.0.0", "node-cookie": "^2.1.2", "react-error-boundary": "^4.0.11", "react-pro-sidebar": "^1.0.0", - "rehype-slug": "^5.0.1", - "swr": "^2.1.2", - "unified": "^10.0.0", - "unist-util-visit": "^2.0.0", "warning": "^3.0.0" }, "peerDependencies": { - "@types/react": "^18.0.26", + "@types/react": "^18.2.46", "next-auth": "^4.22.1", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/packages/site-components/src/404.tsx b/packages/site-components/src/404.tsx index 2c07c6d32..8f6cd3cf8 100644 --- a/packages/site-components/src/404.tsx +++ b/packages/site-components/src/404.tsx @@ -1,13 +1,9 @@ import React from 'react'; -import { Hero } from '@jpmorganchase/mosaic-components'; +import { Hero, HeroProps } from '@jpmorganchase/mosaic-components'; -export function Page404() { - return ( - - ); -} +export const Page404: React.FC = ({ + children, + description = "Sorry, looks like something's wrong here.", + title = 'Page Not Found', + ...rest +}) => ; diff --git a/packages/site-components/src/500.tsx b/packages/site-components/src/500.tsx index 2755351f9..88c1aa634 100644 --- a/packages/site-components/src/500.tsx +++ b/packages/site-components/src/500.tsx @@ -1,13 +1,13 @@ import React from 'react'; -import { Hero } from '@jpmorganchase/mosaic-components'; +import { Hero, HeroProps } from '@jpmorganchase/mosaic-components'; -export function Page500() { - return ( - - ); -} +export const Page500: React.FC = ({ + children, + description = 'A 500 error occurred.', + title = 'Whoops! something went wrong', + ...rest +}) => ( + + {children} + +); diff --git a/packages/site-components/src/AppHeader/AppHeader.tsx b/packages/site-components/src/AppHeader/AppHeader.tsx index a59a2a3f9..af5fdf763 100644 --- a/packages/site-components/src/AppHeader/AppHeader.tsx +++ b/packages/site-components/src/AppHeader/AppHeader.tsx @@ -3,7 +3,6 @@ import { Text } from '@salt-ds/core'; import { Logo, LogoImage } from '@salt-ds/lab'; import { useBreakpoint, Link } from '@jpmorganchase/mosaic-components'; import type { TabsMenu } from '@jpmorganchase/mosaic-components'; -import { useRoute } from '@jpmorganchase/mosaic-store'; import { AppHeaderControls } from '../AppHeaderControls'; import { AppHeaderDrawer } from '../AppHeaderDrawer'; @@ -15,6 +14,7 @@ export type AppHeaderProps = { logo?: string; menu?: TabsMenu; title?: string; + children: React.ReactNode; }; const useIsomorphicLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect; @@ -33,10 +33,15 @@ const createDrawerMenu = menu => return [...result, parsedItem]; }, []); -export const AppHeader: React.FC = ({ homeLink, logo, menu = [], title }) => { +export const AppHeader: React.FC = ({ + children, + homeLink, + logo, + menu = [], + title +}) => { const [showDrawer, setShowDrawer] = useState(false); const breakpoint = useBreakpoint(); - const { route } = useRoute(); useIsomorphicLayoutEffect(() => { setShowDrawer(breakpoint === 'mobile' || breakpoint === 'tablet'); @@ -56,8 +61,8 @@ export const AppHeader: React.FC = ({ homeLink, logo, menu = [], )} )} - {!showDrawer && } - + {!showDrawer && } + {children}
    ); diff --git a/packages/site-components/src/AppHeader/index.ts b/packages/site-components/src/AppHeader/index.ts index dc1ce3b80..ffd39ab6f 100644 --- a/packages/site-components/src/AppHeader/index.ts +++ b/packages/site-components/src/AppHeader/index.ts @@ -1,5 +1 @@ -import { withAppHeaderAdapter } from './withAppHeaderAdapter'; -import { AppHeader as OriginalAppHeader } from './AppHeader'; - -export { withAppHeaderAdapter } from './withAppHeaderAdapter'; -export const AppHeader = withAppHeaderAdapter(OriginalAppHeader); +export { AppHeader } from './AppHeader'; diff --git a/packages/site-components/src/AppHeader/withAppHeaderAdapter.tsx b/packages/site-components/src/AppHeader/withAppHeaderAdapter.tsx deleted file mode 100644 index 5a85bdafe..000000000 --- a/packages/site-components/src/AppHeader/withAppHeaderAdapter.tsx +++ /dev/null @@ -1,46 +0,0 @@ -import React from 'react'; -import type { TabsLinkItem, TabsMenu, TabsMenuButtonItem } from '@jpmorganchase/mosaic-components'; -import { TabMenuItemType } from '@jpmorganchase/mosaic-components'; -import type { - MenuLinkItem, - AppHeaderMenuLinksItem, - AppHeaderMenuLinkItem -} from '@jpmorganchase/mosaic-store'; -import { useAppHeader, AppHeaderMenu, MenuItemType } from '@jpmorganchase/mosaic-store'; - -function createTabsMenu(menu: AppHeaderMenu): TabsMenu { - const tabsMenu = menu.reduce<(TabsMenuButtonItem | TabsLinkItem)[]>((result, menuItem) => { - const menu = menuItem as AppHeaderMenuLinksItem; - const link = menuItem as AppHeaderMenuLinkItem; - if (menu && menu.type === MenuItemType.MENU) { - const tabsLinksItem: TabsMenuButtonItem = { - title: menu.title, - type: TabMenuItemType.MENU, - links: menu.links.map(({ title, link }: MenuLinkItem) => ({ - type: TabMenuItemType.LINK, - title, - link - })), - onSelect: () => undefined - }; - return [...result, tabsLinksItem]; - } else if (link && link.type === MenuItemType.LINK) { - const tabsLinkItem: TabsLinkItem = { - title: link.title, - type: TabMenuItemType.LINK, - link: link.link - }; - return [...result, tabsLinkItem]; - } - console.error('Unknown Menu item passed to createTabsMenu, ignoring', menu); - return result; - }, []); - return tabsMenu; -} - -export const withAppHeaderAdapter = Component => () => { - const headerConfig = useAppHeader(); - const { homeLink, logo, menu: menuItems = [], title } = headerConfig || {}; - const tabsMenu = createTabsMenu(menuItems); - return ; -}; diff --git a/packages/site-components/src/AppHeaderControls/index.tsx b/packages/site-components/src/AppHeaderControls/index.tsx index abaff7482..7039b9818 100644 --- a/packages/site-components/src/AppHeaderControls/index.tsx +++ b/packages/site-components/src/AppHeaderControls/index.tsx @@ -1,13 +1,11 @@ -import React from 'react'; import { Icon, Link } from '@jpmorganchase/mosaic-components'; import { MenuButton, MenuDescriptor } from '@salt-ds/lab'; -import { useRouter } from 'next/router'; +import { useRouter } from 'next/navigation'; import { useContentEditor, EditorControls } from '@jpmorganchase/mosaic-content-editor-plugin'; -import { useColorMode, useSearchIndex, useStoreActions } from '@jpmorganchase/mosaic-store'; +import { useColorMode } from '@jpmorganchase/mosaic-store'; import { useSession } from 'next-auth/react'; import { UserProfile } from '../UserProfile'; -import { SearchInput } from '../SearchInput'; import styles from './styles.css'; type ActionMenuItem = { @@ -20,16 +18,14 @@ function toUpperFirst(str) { return `${str.substr(0, 1).toUpperCase()}${str.toLowerCase().substr(1)}`; } -export const AppHeaderControls: React.FC = () => { +export const AppHeaderControls = ({ children }) => { const router = useRouter(); - const colorMode = useColorMode(); - const { setColorMode } = useStoreActions(); + const { colorMode, setColorMode } = useColorMode(); const { data: session } = useSession(); const isLoginEnabled = process.env.NEXT_PUBLIC_ENABLE_LOGIN === 'true' || false; const isLoggedIn = session != null; const { pageState, startEditing, stopEditing } = useContentEditor(); - const { searchEnabled } = useSearchIndex(); const inverseColorMode = colorMode === 'dark' ? 'light' : 'dark'; let actionMenuOptions: ActionMenuItem[] = [ @@ -73,7 +69,7 @@ export const AppHeaderControls: React.FC = () => { return (
    {isLoginEnabled && } - {searchEnabled && } + {children} {isLoginEnabled && (
    {isLoggedIn ? ( diff --git a/packages/site-components/src/AppHeaderTabs/index.tsx b/packages/site-components/src/AppHeaderTabs/index.tsx index 4e007b437..225a1ec25 100644 --- a/packages/site-components/src/AppHeaderTabs/index.tsx +++ b/packages/site-components/src/AppHeaderTabs/index.tsx @@ -1,18 +1,19 @@ import React, { useEffect, useState } from 'react'; -import { useRouter } from 'next/router'; -import { hasProtocol, TabsBase, TabMenuItemType } from '@jpmorganchase/mosaic-components'; +import { useRouter, usePathname } from 'next/navigation'; +import { hasProtocol, TabsBase } from '@jpmorganchase/mosaic-components'; import type { TabsMenu, TabsMenuButtonItem, TabsLinkItem } from '@jpmorganchase/mosaic-components'; import { useWindowResize, Size } from './useWindowResize'; export type { TabsMenu } from '@jpmorganchase/mosaic-components'; -function resolveSelectedIndex(menu, itemPath) { +function resolveSelectedIndex(menu, itemPath: string) { let selectedIndex = -1; let longestMatch = 0; for (let i = 0; i < menu.length; i++) { const item: TabsMenuButtonItem | TabsLinkItem = menu[i]; - if (item.type === TabMenuItemType.MENU) { + + if (item.type === 'menu') { // eslint-disable-next-line no-restricted-syntax for (const { link: subLink } of item.links) { // If menu link matches the current route - we can return this index @@ -31,11 +32,14 @@ function resolveSelectedIndex(menu, itemPath) { if (item.link === itemPath) { return i; } + + // remove "/index" from the end of the item link + const indexTrimmedLinkPath = item.link.slice(0, -'/index'.length); // If current item is contained within part of route (e.g. /case-studies when route is /case-studies/item) // and the link will be the longest matching one we've seen so far (longest means closest match) - if (itemPath.startsWith(item.link) && item.link.length > longestMatch) { + if (itemPath.startsWith(indexTrimmedLinkPath) && indexTrimmedLinkPath.length > longestMatch) { selectedIndex = i; - longestMatch = item.link.length; + longestMatch = indexTrimmedLinkPath.length; } } } @@ -49,6 +53,7 @@ export function AppHeaderTabs({ menu = [] }: { menu: TabsMenu }) { itemPath => resolveSelectedIndex(menu, itemPath), [menu] ); + const pathname = usePathname(); const [selectionIndex, setSelectionIndex] = useState(() => -1); @@ -57,23 +62,12 @@ export function AppHeaderTabs({ menu = [] }: { menu: TabsMenu }) { setSelectionIndex(currentSelection); }; - const handleRouteChangeComplete = (newRoute: string) => updateSelection(newRoute); - - useEffect(() => { - router.events.on('routeChangeComplete', handleRouteChangeComplete); - - return () => { - router.events.off('routeChangeComplete', handleRouteChangeComplete); - }; - // eslint-disable-next-line react-hooks/exhaustive-deps - }, []); - useEffect(() => { - if (router.asPath && size?.width) { - updateSelection(router.asPath); + if (pathname && size?.width) { + updateSelection(pathname); } // eslint-disable-next-line react-hooks/exhaustive-deps - }, [router, size]); + }, [pathname, size]); const handleMenuSelect = (_event, sourceItem) => { const { link } = sourceItem as TabsLinkItem; @@ -84,7 +78,7 @@ export function AppHeaderTabs({ menu = [] }: { menu: TabsMenu }) { } }; const linkedMenu = menu.map(menuItem => { - if (menuItem.type === TabMenuItemType.MENU) { + if (menuItem.type === 'menu') { return { ...menuItem, onSelect: handleMenuSelect }; } return menuItem; diff --git a/packages/site-components/src/BaseUrlProvider.tsx b/packages/site-components/src/BaseUrlProvider.tsx deleted file mode 100644 index 79a895fb4..000000000 --- a/packages/site-components/src/BaseUrlProvider.tsx +++ /dev/null @@ -1,39 +0,0 @@ -import React, { createContext, Context, useContext } from 'react'; -import { hasProtocol } from '@jpmorganchase/mosaic-components'; -import { useRoute } from '@jpmorganchase/mosaic-store'; - -// The pathname of the current route. We don't get this from router, as we want the full -// path including the /index on index pages. -export type BaseUrlValue = string; - -export const BaseUrlContext: Context = createContext('/'); -export const BaseUrlProvider = ({ children }) => { - const { route = '/' } = useRoute(); - return {children}; -}; - -function resolveRelativeUrl(href: string, baseRoute: string) { - if (hasProtocol(href) || href.startsWith('#') || !href.startsWith('.')) { - return href; - } - if (!baseRoute) { - throw new Error('Cannot resolve relative url as base route is undefined'); - } - const url = new URL('http://jpmorgan.com'); - const anchorMatches = href.match(/(.*)#(.*)/); - if (anchorMatches && anchorMatches[2]) { - // Anchors will get encoded to %23 if set on URL - url.pathname = `${baseRoute}/../${anchorMatches[1]}`; - return `${url.pathname}#${anchorMatches[2]}`; - } - url.pathname = `${baseRoute}/../${href}`; - return url.pathname; -} - -export const useBaseRoute = () => useContext(BaseUrlContext); - -export const useResolveRelativeUrl = href => { - const baseRoute = useContext(BaseUrlContext); - - return resolveRelativeUrl(href, baseRoute); -}; diff --git a/packages/site-components/src/Body.tsx b/packages/site-components/src/Body.tsx deleted file mode 100644 index 25322d350..000000000 --- a/packages/site-components/src/Body.tsx +++ /dev/null @@ -1,81 +0,0 @@ -import React, { useEffect } from 'react'; -import { MDXRemote } from 'next-mdx-remote'; -import { ErrorBoundary, useErrorBoundary } from 'react-error-boundary'; -import { useContentEditor, Editor } from '@jpmorganchase/mosaic-content-editor-plugin'; -import { useSession } from 'next-auth/react'; -import { useRouter } from 'next/router'; - -import { createMDXScope } from './utils/createMDXScope'; -import { Page500 } from './500'; -import { Page404 } from './404'; - -const DefaultFallBackComponent = ({ error: { message: errorMessage = 'unknown' } }) => { - const router = useRouter(); - const { resetBoundary } = useErrorBoundary(); - - useEffect(() => { - const handleRouteChange = () => { - resetBoundary(); - }; - - router.events.on('routeChangeComplete', handleRouteChange); - - return () => { - router.events.off('routeChangeComplete', handleRouteChange); - }; - }, [router, resetBoundary]); - console.error('An un-handled error created a 500 message'); - console.error(errorMessage); - return ; -}; - -function MDXRemoteWithErrorBoundary({ components, source, meta = {} }) { - return ( - - - - ); -} - -export function Body({ components = {}, type, ...props }) { - const { pageState } = useContentEditor(); - const { data: session } = useSession(); - - if (props.show404) { - return ; - } - if (props.show500) { - return ; - } - - if (pageState !== 'VIEW' && session !== null && type === 'mdx') { - return ( - - ); - } - - if (type === 'mdx') { - return ( -
    - -
    - ); - } - // If file is JSON, we expect it to have a `content` attr - if (type === 'json') { - return
    {props.content}
    ; - } - return
    Unsupported file type
    ; -} diff --git a/packages/site-components/src/Breadcrumbs/Breadcrumb.tsx b/packages/site-components/src/Breadcrumbs/Breadcrumb.tsx index e8ade21d9..4886b075f 100644 --- a/packages/site-components/src/Breadcrumbs/Breadcrumb.tsx +++ b/packages/site-components/src/Breadcrumbs/Breadcrumb.tsx @@ -1,4 +1,4 @@ -import React, { forwardRef, ReactNode } from 'react'; +import { forwardRef, ReactNode } from 'react'; import { Link } from '@jpmorganchase/mosaic-components'; import styles from './styles.css'; @@ -12,7 +12,7 @@ export interface BreadcrumbProps { // TODO replace with Salt Breadcrumb when it supports an API that can customize Links export const Breadcrumb = forwardRef(function Breadcrumb( - { children, isCurrentLevel, ...props }, + { children, isCurrentLevel, overflowLabel, ...props }, ref ) { return ( diff --git a/packages/site-components/src/Breadcrumbs/Breadcrumbs.tsx b/packages/site-components/src/Breadcrumbs/Breadcrumbs.tsx index 4e7ac3121..59ab9b918 100644 --- a/packages/site-components/src/Breadcrumbs/Breadcrumbs.tsx +++ b/packages/site-components/src/Breadcrumbs/Breadcrumbs.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { useRouter } from 'next/router'; +import { useRouter } from 'next/navigation'; import { Breadcrumbs as SaltBreadcrumbs } from '@salt-ds/lab'; import { Breadcrumb } from './Breadcrumb'; diff --git a/packages/site-components/src/Breadcrumbs/index.ts b/packages/site-components/src/Breadcrumbs/index.ts index f9c87f55e..2ec57c850 100644 --- a/packages/site-components/src/Breadcrumbs/index.ts +++ b/packages/site-components/src/Breadcrumbs/index.ts @@ -1,7 +1,2 @@ -import { withBreadcrumbsAdapter } from './withBreadcrumbsAdapter'; -import { Breadcrumbs as OriginalBreadcrumbs } from './Breadcrumbs'; - -export type { Breadcrumb } from './Breadcrumb'; - -export { withBreadcrumbsAdapter } from './withBreadcrumbsAdapter'; -export const Breadcrumbs = withBreadcrumbsAdapter(OriginalBreadcrumbs); +export { type Breadcrumb } from './Breadcrumb'; +export { Breadcrumbs } from './Breadcrumbs'; diff --git a/packages/site-components/src/Breadcrumbs/withBreadcrumbsAdapter.tsx b/packages/site-components/src/Breadcrumbs/withBreadcrumbsAdapter.tsx deleted file mode 100644 index c6b17ab54..000000000 --- a/packages/site-components/src/Breadcrumbs/withBreadcrumbsAdapter.tsx +++ /dev/null @@ -1,7 +0,0 @@ -import React from 'react'; -import { useBreadcrumbs } from '@jpmorganchase/mosaic-store'; - -export const withBreadcrumbsAdapter = Component => () => { - const { breadcrumbs, enabled } = useBreadcrumbs(); - return ; -}; diff --git a/packages/site-components/src/DocPaginator/DocPaginator.tsx b/packages/site-components/src/DocPaginator/DocPaginator.tsx index a1f2cecc3..260ac4d93 100644 --- a/packages/site-components/src/DocPaginator/DocPaginator.tsx +++ b/packages/site-components/src/DocPaginator/DocPaginator.tsx @@ -1,12 +1,9 @@ -import React, { useEffect } from 'react'; -import { Link, P6, P3, TileBase, Icon } from '@jpmorganchase/mosaic-components'; import classnames from 'clsx'; -import { useRouter } from 'next/router'; +import { Link, P6, P3, TileBase, Icon } from '@jpmorganchase/mosaic-components'; +import { NavigationLink } from '@jpmorganchase/mosaic-types'; import styles from './styles.css'; -import { NavigationLink } from '@jpmorganchase/mosaic-store'; - export interface DocPaginatorProps { /** Link label suffix */ linkSuffix: string; @@ -16,58 +13,33 @@ export interface DocPaginatorProps { prev?: NavigationLink; } -export const DocPaginator: React.FC = ({ linkSuffix, next, prev }) => { - const router = useRouter(); - - const handleRouteChangeComplete = () => { - setTimeout(() => { - if (window.pageYOffset > 0) { - window.scroll({ - top: 0, - left: 0, - behavior: 'smooth' - }); - } - }, 300); - }; - - useEffect(() => { - router.events.on('routeChangeComplete', handleRouteChangeComplete); - - return () => { - router.events.off('routeChangeComplete', handleRouteChangeComplete); - }; - // eslint-disable-next-line react-hooks/exhaustive-deps - }, []); - - return ( -
    -
    - {prev && ( - - - <> - Previous {linkSuffix} - - {prev.title} - - - - )} -
    -
    - {next && ( - - - <> - Next {linkSuffix} - - {next.title} - - - - )} -
    +export const DocPaginator = ({ linkSuffix, next, prev }: DocPaginatorProps) => ( +
    +
    + {prev && ( + + + <> + Previous {linkSuffix} + + {prev.title} + + + + )} +
    +
    + {next && ( + + + <> + Next {linkSuffix} + + {next.title} + + + + )}
    - ); -}; +
    +); diff --git a/packages/site-components/src/DocPaginator/index.ts b/packages/site-components/src/DocPaginator/index.ts index 78fe6cd07..6c790afa3 100644 --- a/packages/site-components/src/DocPaginator/index.ts +++ b/packages/site-components/src/DocPaginator/index.ts @@ -1,5 +1 @@ -import { withNavigationAdapter } from './withNavigationAdapter'; -import { DocPaginator as OriginalDocPaginator } from './DocPaginator'; - -export { withNavigationAdapter } from './withNavigationAdapter'; -export const DocPaginator = withNavigationAdapter(OriginalDocPaginator); +export * from './DocPaginator'; diff --git a/packages/site-components/src/DocPaginator/withNavigationAdapter.tsx b/packages/site-components/src/DocPaginator/withNavigationAdapter.tsx deleted file mode 100644 index f36010632..000000000 --- a/packages/site-components/src/DocPaginator/withNavigationAdapter.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import React from 'react'; -import { useNavigation } from '@jpmorganchase/mosaic-store'; - -export const withNavigationAdapter = - Component => - ({ linkSuffix = 'Page' }) => { - const { next, prev } = useNavigation(); - return ; - }; diff --git a/packages/site-components/src/Document.tsx b/packages/site-components/src/Document.tsx deleted file mode 100644 index 26152f16c..000000000 --- a/packages/site-components/src/Document.tsx +++ /dev/null @@ -1,20 +0,0 @@ -/* eslint-disable eslint-comments/disable-enable-pair */ -/* eslint-disable @typescript-eslint/no-explicit-any */ -import React from 'react'; -import NextDocument, { Html, Head, NextScript, Main } from 'next/document'; - -export type { DocumentProps } from 'next/document'; - -export class Document extends NextDocument { - render() { - return ( - - - -
    - - - - ); - } -} diff --git a/packages/site-components/src/Drawer/index.tsx b/packages/site-components/src/Drawer/index.tsx index 56874ffd1..b5d2d7b2e 100644 --- a/packages/site-components/src/Drawer/index.tsx +++ b/packages/site-components/src/Drawer/index.tsx @@ -1,11 +1,11 @@ -import React, { useEffect, useRef, useState } from 'react'; +import React, { useRef, useState } from 'react'; import { createPortal } from 'react-dom'; import classNames from 'clsx'; -import { useRoute } from '@jpmorganchase/mosaic-store'; import { LayerLayout } from '@salt-ds/lab'; -import styles from './styles.css'; import { Button, Icon, useOutsideClick } from '@jpmorganchase/mosaic-components'; +import styles from './styles.css'; + export type TriggerElementProps = { /** open state of drawer */ open: boolean; @@ -25,21 +25,11 @@ export function Drawer({ children, TriggerElement, side }: DrawerProps) { const triggerRef = useRef(null); const rootRef = useOutsideClick(triggerRef, () => setOpen(false)); - const { route } = useRoute(); - const handleNavigationToggle = () => { setOpen(!open); }; - const [isClient, setIsClient] = useState(false); - - useEffect(() => { - // Close drawer whenever a page loads - setOpen(false); - setIsClient(true); - }, [route]); - - const portalRoot = isClient ? document.querySelector('[data-mosaic-id="portal-root"]') : null; + const portalRoot = document.querySelector('[data-mosaic-id="portal-root"]'); return ( <>
    diff --git a/packages/site-components/src/Drawer/styles.css.ts b/packages/site-components/src/Drawer/styles.css.ts index 3ea7364b5..6586185b0 100644 --- a/packages/site-components/src/Drawer/styles.css.ts +++ b/packages/site-components/src/Drawer/styles.css.ts @@ -11,7 +11,6 @@ export default { paragraph({ variant: 'paragraph2' }) ]), layerLayout: style({ - background: 'inherit !important', padding: '0px', margin: '0px' }), @@ -27,17 +26,18 @@ export default { { selectors: { ['.saltButton.&']: { - position: 'absolute' + position: 'absolute', + top: '10px' } } }, button({ variant: 'square' }) ]), leftCloseButton: style({ - right: '0px' + right: '10px' }), rightCloseButton: style({ - left: '0px' + left: '10px' }), openLeft: animation({ variant: 'leftSlideIn' }), closeLeft: animation({ variant: 'leftSlideOut' }), diff --git a/packages/site-components/src/Footer/index.ts b/packages/site-components/src/Footer/index.ts index f6a7f6cd7..ddcc5a9cd 100644 --- a/packages/site-components/src/Footer/index.ts +++ b/packages/site-components/src/Footer/index.ts @@ -1,6 +1 @@ -import { withFooterAdapter } from './withFooterAdapter'; -import { Footer as OriginalFooter } from './Footer'; - -export type { FooterProps } from './Footer'; - -export const Footer = withFooterAdapter(OriginalFooter); +export * from './Footer'; diff --git a/packages/site-components/src/Footer/withFooterAdapter.tsx b/packages/site-components/src/Footer/withFooterAdapter.tsx deleted file mode 100644 index de3171615..000000000 --- a/packages/site-components/src/Footer/withFooterAdapter.tsx +++ /dev/null @@ -1,7 +0,0 @@ -import React from 'react'; -import { useFooter } from '@jpmorganchase/mosaic-store'; - -export const withFooterAdapter = Component => () => { - const props = useFooter(); - return ; -}; diff --git a/packages/site-components/src/HTMLView.tsx b/packages/site-components/src/HTMLView.tsx deleted file mode 100644 index 681eff611..000000000 --- a/packages/site-components/src/HTMLView.tsx +++ /dev/null @@ -1,48 +0,0 @@ -import React, { useEffect } from 'react'; - -const embeddedWebViewInitialized = false; - -declare global { - // eslint-disable-next-line @typescript-eslint/no-namespace - namespace JSX { - interface IntrinsicElements { - 'embedded-webview': { html: string } & Partial; - } - } -} - -function initEmbeddedWebView() { - if (typeof window === 'undefined') { - return; - } - - if (embeddedWebViewInitialized) { - return; - } - - class EmbeddedWebview extends HTMLElement { - connectedCallback() { - if (typeof window !== 'undefined') { - const shadow = this.attachShadow({ mode: 'closed' }); - shadow.innerHTML = this.getAttribute('html') || ''; - } - } - } - - if (typeof window !== 'undefined' && !window.customElements.get('embedded-webview')) { - window.customElements.define('embedded-webview', EmbeddedWebview); - } -} - -export function HTMLView({ children }) { - useEffect(() => { - initEmbeddedWebView(); - }, []); - - if (typeof window === 'undefined') { - // eslint-disable-next-line react/no-danger - return
    ; - } - - return ; -} diff --git a/packages/site-components/src/Home/__tests__/index.test.tsx b/packages/site-components/src/Home/__tests__/index.test.tsx deleted file mode 100644 index 13afad830..000000000 --- a/packages/site-components/src/Home/__tests__/index.test.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import React from 'react'; -import { render } from '@testing-library/react'; - -import { Home } from '../index'; - -describe('GIVEN a Home component', () => { - test('THEN it renders children', () => { - const { getByText } = render( - - TEST - - ); - expect(getByText('TEST')).toBeDefined(); - }); -}); diff --git a/packages/site-components/src/Home/index.tsx b/packages/site-components/src/Home/index.tsx deleted file mode 100644 index 3075ada1f..000000000 --- a/packages/site-components/src/Home/index.tsx +++ /dev/null @@ -1,77 +0,0 @@ -import React from 'react'; -import classnames from 'clsx'; -import { useImageComponent } from '@jpmorganchase/mosaic-components'; - -import styles from './styles.css'; - -export type HomeHeroProps = { - /** The child components representing Home's Hero content */ - children?: React.ReactNode; - /** Additional class name for root class override */ - className?: string; -}; -export const HomeHero: React.FC = ({ children, className, ...rest }) => ( -
    - {children} -
    -); - -export type HomeSectionProps = { - /** The child components representing a section within the Home component */ - children?: React.ReactNode; - /** Additional class name for root class override */ - className?: string; -}; -export const HomeSection: React.FC = ({ children, className, ...rest }) => ( -
    - {children} -
    -); - -function BackgroundImages() { - const ImageComponent = useImageComponent(); - - return ( - <> -
    - -
    -
    - -
    -
    - -
    -
    - -
    -
    - -
    - - ); -} - -export type HomeProps = { - /** The children components of the Section component */ - children?: React.ReactNode; - /** Additional class name for root class override */ - className?: string; -}; - -export interface HomeComposition { - /** The initial hero section of the Home component */ - Hero?: typeof HomeHero; - /** A content section for the Home component */ - Section?: typeof HomeSection; -} - -export const Home: React.FC & HomeComposition = ({ children, className, ...rest }) => ( -
    - - {children} -
    -); - -Home.Hero = HomeHero; -Home.Section = HomeSection; diff --git a/packages/site-components/src/Home/styles.css.ts b/packages/site-components/src/Home/styles.css.ts deleted file mode 100644 index d7be48d7a..000000000 --- a/packages/site-components/src/Home/styles.css.ts +++ /dev/null @@ -1,57 +0,0 @@ -import { style } from '@vanilla-extract/css'; -import { responsiveSprinkles } from '@jpmorganchase/mosaic-theme'; - -export default { - section: responsiveSprinkles({ - marginTop: ['x30', 'x30', 'x30', 'x30'] - }), - main: responsiveSprinkles({ - marginBottom: ['x30', 'x30', 'x30', 'x30'] - }), - backgroundImage: style([ - responsiveSprinkles({ - display: ['none', 'none', 'inherit', 'inherit'] - }), - { - zIndex: -1, - pointerEvents: 'none', - userSelect: 'none', - position: 'absolute' - } - ]), - backgroundImage1: style({ - opacity: '0.25', - top: '702px', - left: '1251px', - width: '254px', - height: '193px' - }), - backgroundImage2: style({ - opacity: '0.5', - top: '772px', - left: '1121px', - width: '385px', - height: '214px' - }), - backgroundImage3: style({ - opacity: '0.15', - top: '1259px', - left: '1153px', - width: '629px', - height: '1024px' - }), - backgroundImage4: style({ - opacity: '0.15', - top: '2367px', - left: '1041px', - width: '750px', - height: '813px' - }), - backgroundImage5: style({ - opacity: '0.5', - top: '5100px', - left: '-51px', - width: '385px', - height: '214px' - }) -}; diff --git a/packages/site-components/src/Image/index.tsx b/packages/site-components/src/Image/index.tsx index b1772c16b..56128f463 100644 --- a/packages/site-components/src/Image/index.tsx +++ b/packages/site-components/src/Image/index.tsx @@ -1,8 +1,7 @@ -import React, { FC, forwardRef, Ref } from 'react'; +import { FC, forwardRef, Ref } from 'react'; import NextImage, { type ImageProps as NextImageProps } from 'next/image'; import classnames from 'clsx'; -import { useResolveRelativeUrl } from '../BaseUrlProvider'; import styles from './styles.css'; export type ImageProps = Omit & { @@ -31,7 +30,6 @@ export const Image: FC = forwardRef( }, ref: Ref ) => { - const resolvedSrc = useResolveRelativeUrl(src); return (
    {fill || (width && height) ? ( @@ -41,16 +39,12 @@ export const Image: FC = forwardRef( {...rest} height={height} fill={fill} - src={src.match(/^(http[s]?:)?\/{1,2}/) === null ? resolvedSrc : src} + src={src} width={width} unoptimized={unoptimized} /> ) : ( - {alt} + {alt} )}
    ); diff --git a/packages/site-components/src/Link.tsx b/packages/site-components/src/Link.tsx index 008b3fe1d..41bd3e496 100644 --- a/packages/site-components/src/Link.tsx +++ b/packages/site-components/src/Link.tsx @@ -1,7 +1,24 @@ import NextLink from 'next/link'; import React, { Ref } from 'react'; +import { hasProtocol } from '@jpmorganchase/mosaic-components'; -import { useResolveRelativeUrl } from './BaseUrlProvider'; +function resolveRelativeUrl(href: string, baseRoute: string) { + if (hasProtocol(href) || href.startsWith('#') || !href.startsWith('.')) { + return href; + } + if (!baseRoute) { + throw new Error('Cannot resolve relative url as base route is undefined'); + } + const url = new URL('http://jpmorgan.com'); + const anchorMatches = href.match(/(.*)#(.*)/); + if (anchorMatches && anchorMatches[2]) { + // Anchors will get encoded to %23 if set on URL + url.pathname = `${baseRoute}/../${anchorMatches[1]}`; + return `${url.pathname}#${anchorMatches[2]}`; + } + url.pathname = `${baseRoute}/../${href}`; + return url.pathname; +} interface LinkProps extends React.AnchorHTMLAttributes { href: string; @@ -11,7 +28,7 @@ export type LinkType = { link: string; text: string }; export const Link = React.forwardRef( ({ href = '', ...props }: LinkProps, ref: Ref) => { - const url = useResolveRelativeUrl(href); + const url = resolveRelativeUrl(href, '/'); return ; } diff --git a/packages/site-components/src/Metadata.tsx b/packages/site-components/src/Metadata.tsx deleted file mode 100644 index 5b4924b57..000000000 --- a/packages/site-components/src/Metadata.tsx +++ /dev/null @@ -1,23 +0,0 @@ -import React, { ElementType } from 'react'; -import { useMeta } from '@jpmorganchase/mosaic-store'; -import type { MetaSlice } from '@jpmorganchase/mosaic-store'; -import { useSession } from 'next-auth/react'; - -export interface HTMLMeta extends MetaSlice {} - -export type MetadataProps = { - Component: ElementType; -}; - -export const Metadata: React.FC = ({ Component = 'head' }) => { - const { meta } = useMeta(); - const { data: session } = useSession(); - return ( - - {meta.title && {meta.title}} - {meta.description && } - {session?.user?.image && } - {meta.breadcrumbs && } - - ); -}; diff --git a/packages/site-components/src/PageNavigation.tsx b/packages/site-components/src/PageNavigation.tsx index 851baa057..78c4bf6b9 100644 --- a/packages/site-components/src/PageNavigation.tsx +++ b/packages/site-components/src/PageNavigation.tsx @@ -1,14 +1,33 @@ -import React from 'react'; -import { useSidebar } from '@jpmorganchase/mosaic-store'; import { VerticalNavigation } from './VerticalNavigation'; -export const PageNavigation = () => { - const { menu, selectedNodeId, expandedNodeIds } = useSidebar(); - return ( - - ); +export type PageNavigationItem = { + /** The id of the item */ + id: string; + /** The name of the item */ + name: string; + /** Sidebar data */ + data: { + /** The link of the item */ + link: string; + }; + /** The level of the menu item from the sidebar root */ + level: number; + /** Child nodes */ + childNodes: PageNavigationItem[]; + /** Whether the item is hidden */ + hidden: boolean; }; + +export type PageNavigationProps = { + menu: PageNavigationItem[]; + selectedNodeId?: string; + expandedNodeIds?: Set; +}; + +export const PageNavigation = ({ menu, selectedNodeId, expandedNodeIds }: PageNavigationProps) => ( + +); diff --git a/packages/site-components/src/SearchInput/Results.tsx b/packages/site-components/src/SearchInput/Results.tsx index 039f971f3..4b6cba9d9 100644 --- a/packages/site-components/src/SearchInput/Results.tsx +++ b/packages/site-components/src/SearchInput/Results.tsx @@ -1,5 +1,5 @@ -import React, { useState } from 'react'; -import { useRouter } from 'next/router'; +import { useState } from 'react'; +import { useRouter } from 'next/navigation'; import classnames from 'clsx'; import { Caption6, P4, P6 } from '@jpmorganchase/mosaic-components'; import { Highlighter } from '@salt-ds/lab'; diff --git a/packages/site-components/src/SearchInput/index.tsx b/packages/site-components/src/SearchInput/index.tsx index 0379edd04..7a16f0593 100644 --- a/packages/site-components/src/SearchInput/index.tsx +++ b/packages/site-components/src/SearchInput/index.tsx @@ -1,14 +1,14 @@ -import React, { useCallback, useEffect, useRef, useState } from 'react'; +import { useCallback, useEffect, useRef, useState } from 'react'; import { Input, Button } from '@salt-ds/core'; import { Icon } from '@jpmorganchase/mosaic-components'; -import { useSearchData } from './useSearchData'; + + import { performSearch } from './searchUtils'; import { ResultsList } from './Results'; import type { SearchResults } from './Results'; import styles from './styles.css'; -export function SearchInput() { - const { searchIndex, searchConfig } = useSearchData(); +export function SearchInput({ searchIndex, searchConfig }) { const [searchTerm, setSearchTerm] = useState(''); const [searchResults, setSearchResults] = useState([]); const [listVisibility, setListVisibility] = useState(false); @@ -55,6 +55,9 @@ export function SearchInput() { }; }, []); + if (!searchIndex || !searchConfig) { + return null; + } return (
    fetch(url).then(res => res.json()); - - const { searchIndex: fallbackIndex, searchConfig } = useSearchIndex(); - - const { data, error, isLoading: searchIsLoading } = useSWR('/search-data.json', fetcher); - - const searchIndex = searchIsLoading || error ? fallbackIndex : data; - - return { searchIndex, searchConfig }; -} diff --git a/packages/site-components/src/SessionProvider.tsx b/packages/site-components/src/SessionProvider.tsx new file mode 100644 index 000000000..d0ed7ae64 --- /dev/null +++ b/packages/site-components/src/SessionProvider.tsx @@ -0,0 +1,5 @@ +import { SessionProvider as NextSessionProvider } from 'next-auth/react'; + +export function SessionProvider({ children }) { + return {children}; +} diff --git a/packages/site-components/src/Sidebar/index.tsx b/packages/site-components/src/Sidebar/index.tsx index 0c06f6d73..513eef425 100644 --- a/packages/site-components/src/Sidebar/index.tsx +++ b/packages/site-components/src/Sidebar/index.tsx @@ -1,4 +1,4 @@ -import React, { FC, ReactNode } from 'react'; +import { FC, ReactNode } from 'react'; import classnames from 'clsx'; import styles from './styles.css'; diff --git a/packages/site-components/src/TableOfContents/TableOfContents.tsx b/packages/site-components/src/TableOfContents/TableOfContents.tsx index 23f037edc..d2df0f6e5 100644 --- a/packages/site-components/src/TableOfContents/TableOfContents.tsx +++ b/packages/site-components/src/TableOfContents/TableOfContents.tsx @@ -6,14 +6,14 @@ import { TableOfContentsItem } from './TableOfContentsItem'; import { mostRecentScrollPoint, setupHeadingState, setupSelectedHeadingState } from './utils'; import styles from './styles.css'; -export type Item = { level: number; id: string; text: string }; -export interface CurrentItem extends Item { +export type TOCItem = { level: number; id: string; text: string }; +export interface CurrentItem extends TOCItem { current: boolean; } const useIsomorphicLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect; export type TableOfContentsProps = { - items?: Item[]; + items?: TOCItem[]; }; export const TableOfContents: React.FC = ({ items }) => { diff --git a/packages/site-components/src/TableOfContents/TableOfContentsItem.tsx b/packages/site-components/src/TableOfContents/TableOfContentsItem.tsx index f4e75b918..ac70b2542 100644 --- a/packages/site-components/src/TableOfContents/TableOfContentsItem.tsx +++ b/packages/site-components/src/TableOfContents/TableOfContentsItem.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import classnames from 'clsx'; import { Caption2, Caption3 } from '@jpmorganchase/mosaic-components'; diff --git a/packages/site-components/src/TableOfContents/index.ts b/packages/site-components/src/TableOfContents/index.ts index a56b90de6..715a3a239 100644 --- a/packages/site-components/src/TableOfContents/index.ts +++ b/packages/site-components/src/TableOfContents/index.ts @@ -1,8 +1 @@ -import React from 'react'; -import { withTableOfContentsAdapter } from './withTableOfContentsAdapter'; -import { TableOfContents as OriginalTableOfContents } from './TableOfContents'; -import type { TableOfContentsProps } from './TableOfContents'; - -export { withTableOfContentsAdapter } from './withTableOfContentsAdapter'; -export const TableOfContents: React.FC = - withTableOfContentsAdapter(OriginalTableOfContents); +export * from './TableOfContents'; diff --git a/packages/site-components/src/TableOfContents/withTableOfContentsAdapter.tsx b/packages/site-components/src/TableOfContents/withTableOfContentsAdapter.tsx deleted file mode 100644 index 217b8c63a..000000000 --- a/packages/site-components/src/TableOfContents/withTableOfContentsAdapter.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import React from 'react'; -import { useTableOfContents } from '@jpmorganchase/mosaic-store'; -import { TableOfContentsProps } from './TableOfContents'; - -export const withTableOfContentsAdapter = - (Component): React.FC => - ({ items }) => { - const { tableOfContents } = useTableOfContents(); - return ; - }; diff --git a/packages/site-components/src/ThemeProvider.tsx b/packages/site-components/src/ThemeProvider.tsx new file mode 100644 index 000000000..7cba67871 --- /dev/null +++ b/packages/site-components/src/ThemeProvider.tsx @@ -0,0 +1,23 @@ +import { ReactNode } from 'react'; +import { SaltProvider } from '@salt-ds/core'; +import { useColorMode } from '@jpmorganchase/mosaic-store'; + +import classnames from 'clsx'; + +interface ThemeProviderProps { + className?: string; + children?: ReactNode; +} + +export function ThemeProvider({ className, children }: ThemeProviderProps) { + const { colorMode } = useColorMode(); + + return ( + +
    + {children} +
    +
    + + ); +} diff --git a/packages/site-components/src/UserProfile/index.tsx b/packages/site-components/src/UserProfile/index.tsx index dc5adf872..68cbdf094 100644 --- a/packages/site-components/src/UserProfile/index.tsx +++ b/packages/site-components/src/UserProfile/index.tsx @@ -1,4 +1,4 @@ -import React, { ReactElement } from 'react'; +import { ReactElement } from 'react'; import classnames from 'clsx'; import { Avatar } from '@salt-ds/core'; diff --git a/packages/site-components/src/VerticalNavigation.tsx b/packages/site-components/src/VerticalNavigation.tsx index 41a4ad3d3..8d397ab2e 100644 --- a/packages/site-components/src/VerticalNavigation.tsx +++ b/packages/site-components/src/VerticalNavigation.tsx @@ -1,9 +1,17 @@ import React from 'react'; -import { ElementStyles, Sidebar as SidebarPro, Menu, MenuItem, SubMenu } from 'react-pro-sidebar'; -import { link } from '@jpmorganchase/mosaic-theme'; +import { + ElementStyles, + Sidebar as SidebarPro, + Menu, + MenuItem, + SubMenu, + ProSidebarProvider +} from 'react-pro-sidebar'; +import { link, vars } from '@jpmorganchase/mosaic-theme'; import { Icon, Link } from '@jpmorganchase/mosaic-components'; -import { SidebarItem, useColorMode } from '@jpmorganchase/mosaic-store'; -export { ProSidebarProvider as SidebarProvider } from 'react-pro-sidebar'; +import { useColorMode } from '@jpmorganchase/mosaic-store'; +import type { SidebarItem } from '@jpmorganchase/mosaic-types'; + export { useProSidebar as useSidebar } from 'react-pro-sidebar'; export type VerticalNavigationProps = { @@ -22,41 +30,30 @@ const createMenuItemStyles = colorMode => ({ backgroundColor: 'inherit' }, button: ({ active }) => { - let buttonStyle: ElementStyles = { - paddingRight: 'var(--mosaic-space-horizontal-x4)' + const buttonStyle: ElementStyles = { + paddingRight: vars.space.horizontal.x4 }; + return { ...buttonStyle, ':disabled': { backgroundColor: 'unset', - color: - colorMode === 'light' - ? 'var(--mosaic-color-light-navigable-selectableLink-unselectedLabel)' - : 'var(--mosaic-color-dark-navigable-selectableLink-unselectedLabel)' + color: `var(--mosaic-color-${colorMode}-navigable-selectableLink-unselectedLabel)` }, ':hover': { - backgroundColor: - colorMode === 'light' - ? 'var(--mosaic-color-light-neutral-background-emphasis)' - : 'var(--mosaic-color-dark-neutral-background-emphasis)' + backgroundColor: `var(--mosaic-color-${colorMode}-neutral-background-emphasis)` }, - fontWeight: active ? 'var(--mosaic-fontWeight-semibold)' : 'var(--mosaic-fontWeight-regular)', + fontWeight: active ? vars.fontWeight.semibold : vars.fontWeight.regular, borderLeft: active - ? colorMode === 'light' - ? '4px solid var(--mosaic-color-light-navigable-selectableLink-selected)' - : '4px solid var(--mosaic-color-dark-navigable-selectableLink-selected)' + ? `4px solid var(--mosaic-color-${colorMode}-navigable-selectableLink-selected)` : '4px solid transparent', color: active - ? colorMode === 'light' - ? 'var(--mosaic-color-light-navigable-selectableLink-selectedLabel)' - : 'var(--mosaic-color-dark-navigable-selectableLink-selectedLabel)' - : colorMode === 'light' - ? 'var(--mosaic-color-light-navigable-selectableLink-unselectedLabel)' - : 'var(--mosaic-color-dark-navigable-selectableLink-unselectedLabel)' + ? `var(--mosaic-color-${colorMode}-navigable-selectableLink-selectedLabel)` + : `var(--mosaic-color-${colorMode}-navigable-selectableLink-unselectedLabel)` }; }, label: { - marginRight: 'var(--mosaic-space-horizontal-x4)' + marginRight: vars.space.horizontal.x4 } }); @@ -69,7 +66,7 @@ const SubMenuLink = ({ href, selectedNodeId, ...rest }) => { if (href === selectedNodeId) { return
    ; } - return ; + return ; }; const renderMenu = (menu, expandedNodeIds, selectedNodeId) => @@ -89,7 +86,7 @@ const renderMenu = (menu, expandedNodeIds, selectedNodeId) => } + component={} key={item.id} > {item.name} @@ -104,13 +101,16 @@ export const VerticalNavigation: React.FC = ({ selectedNodeId, ...rest }) => { - const colorMode = useColorMode(); + const { colorMode } = useColorMode(); const menuItemStyles = createMenuItemStyles(colorMode); + return ( - - - {renderMenu(menu, expandedNodeIds, selectedNodeId)} - - + + + + {renderMenu(menu, expandedNodeIds, selectedNodeId)} + + + ); }; diff --git a/packages/site-components/src/index.tsx b/packages/site-components/src/index.tsx index 349069b3d..6fa24e9ce 100644 --- a/packages/site-components/src/index.tsx +++ b/packages/site-components/src/index.tsx @@ -1,25 +1,23 @@ +'use client'; + export * from './AppHeader'; export * from './AppHeaderControls'; export * from './AppHeaderDrawer'; export * from './AppHeaderTabs'; export * from './BackLink'; export * from './Breadcrumbs'; -export * from './BaseUrlProvider'; -export * from './Body'; -export * from './Document'; export * from './DocPaginator'; export * from './Drawer'; export * from './Footer'; -export * from './HTMLView'; export * from './Link'; export * from './Image'; -export * from './Metadata'; export * from './PageNavigation'; +export * from './SearchInput'; +export * from './SessionProvider'; export * from './Sidebar'; export * from './TableOfContents'; +export * from './ThemeProvider'; export * from './UserProfile'; export * from './VerticalNavigation'; export * from './404'; export * from './500'; - -export { default as components } from './mdx'; diff --git a/packages/site-components/src/mdx.tsx b/packages/site-components/src/mdx.tsx deleted file mode 100644 index fdc72dc9d..000000000 --- a/packages/site-components/src/mdx.tsx +++ /dev/null @@ -1,22 +0,0 @@ -import React from 'react'; -import { Pre, getMarkdownComponents, withMarkdownSpacing } from '@jpmorganchase/mosaic-components'; -import type { PreProps } from '@jpmorganchase/mosaic-components'; -import { getLabMarkdownComponents } from '@jpmorganchase/mosaic-labs-components'; -import { OpenAPI } from '@jpmorganchase/mosaic-open-api-component'; -import type { OpenAPIProps } from '@jpmorganchase/mosaic-open-api-component'; -import type {} from '@salt-ds/lab'; - -import { Home } from './Home'; -import { Image } from './Image'; -import type { ImageProps } from './Image'; - -const components = { - ...getMarkdownComponents(), - Labs: getLabMarkdownComponents(), - Home, - img: withMarkdownSpacing(Image), - pre: withMarkdownSpacing(props =>
    ),
    -  OpenAPI: withMarkdownSpacing(OpenAPI)
    -};
    -
    -export default components;
    diff --git a/packages/site-middleware/CHANGELOG.md b/packages/site-middleware/CHANGELOG.md
    deleted file mode 100644
    index 3b0855e3a..000000000
    --- a/packages/site-middleware/CHANGELOG.md
    +++ /dev/null
    @@ -1,635 +0,0 @@
    -# @jpmorganchase/mosaic-site-middleware
    -
    -## 0.1.0-beta.62
    -
    -### Patch Changes
    -
    -- @jpmorganchase/mosaic-schemas@0.1.0-beta.62
    -- @jpmorganchase/mosaic-store@0.1.0-beta.62
    -- @jpmorganchase/mosaic-types@0.1.0-beta.62
    -
    -## 0.1.0-beta.61
    -
    -### Patch Changes
    -
    -- cec89401: add `pluginTimeout` (20 secs) to fastify to prevent loading timeout
    -- Updated dependencies [cec89401]
    -  - @jpmorganchase/mosaic-schemas@0.1.0-beta.61
    -  - @jpmorganchase/mosaic-store@0.1.0-beta.61
    -  - @jpmorganchase/mosaic-types@0.1.0-beta.61
    -
    -## 0.1.0-beta.60
    -
    -### Patch Changes
    -
    -- a3da0830: New Readme Source
    -
    -  This source pulls a single Readme.md from a remote Source repo.
    -  Typically used for third-party repos which exist already or don't want to
    -  create a full document hierachy and use `@jpmorganchase/mosaic-source-git-repo`.
    -  By pulling a single page, we can add metadata to that page via the source's config.
    -  It's also more performant as we do not need to pull a whole source repo.
    -
    -- Updated dependencies [a3da0830]
    -  - @jpmorganchase/mosaic-schemas@0.1.0-beta.60
    -  - @jpmorganchase/mosaic-store@0.1.0-beta.60
    -  - @jpmorganchase/mosaic-types@0.1.0-beta.60
    -
    -## 0.1.0-beta.59
    -
    -### Patch Changes
    -
    -- e3f4b7c3: Fixed routing breaking when URL parameters are present.
    -  - @jpmorganchase/mosaic-schemas@0.1.0-beta.59
    -  - @jpmorganchase/mosaic-store@0.1.0-beta.59
    -  - @jpmorganchase/mosaic-types@0.1.0-beta.59
    -
    -## 0.1.0-beta.58
    -
    -### Patch Changes
    -
    -- @jpmorganchase/mosaic-schemas@0.1.0-beta.58
    -- @jpmorganchase/mosaic-store@0.1.0-beta.58
    -- @jpmorganchase/mosaic-types@0.1.0-beta.58
    -
    -## 0.1.0-beta.57
    -
    -### Patch Changes
    -
    -- d214d112: Add catch-all default exports for
    -
    -  - `@jpmorganchase/mosaic-store`
    -  - `@jpmorganchase/mosaic-theme`
    -  - `@jpmorganchase/mosaic-workflows`
    -
    -  This resolves an issue when running tests from an external repo which depends on these packages
    -
    -- Updated dependencies [d214d112]
    -  - @jpmorganchase/mosaic-store@0.1.0-beta.57
    -  - @jpmorganchase/mosaic-schemas@0.1.0-beta.57
    -  - @jpmorganchase/mosaic-types@0.1.0-beta.57
    -
    -## 0.1.0-beta.56
    -
    -### Patch Changes
    -
    -- 6d30e29f: Add new Storybook source
    -
    -  Storybook stories can be extracted from Storybook and embedded into Mosaic pages.
    -
    -  The stories are extracted based on a configured filter or matching tags.
    -
    -  With a page created for each Story, the author can create a dynamic index of matching stories.
    -
    -  eg. An index of patterns which match a specific tag
    -
    -- Updated dependencies [6d30e29f]
    -  - @jpmorganchase/mosaic-schemas@0.1.0-beta.56
    -  - @jpmorganchase/mosaic-store@0.1.0-beta.56
    -  - @jpmorganchase/mosaic-types@0.1.0-beta.56
    -
    -## 0.1.0-beta.55
    -
    -### Patch Changes
    -
    -- @jpmorganchase/mosaic-schemas@0.1.0-beta.55
    -- @jpmorganchase/mosaic-store@0.1.0-beta.55
    -- @jpmorganchase/mosaic-types@0.1.0-beta.55
    -
    -## 0.1.0-beta.54
    -
    -### Patch Changes
    -
    -- @jpmorganchase/mosaic-schemas@0.1.0-beta.54
    -- @jpmorganchase/mosaic-store@0.1.0-beta.54
    -- @jpmorganchase/mosaic-types@0.1.0-beta.54
    -
    -## 0.1.0-beta.53
    -
    -### Patch Changes
    -
    -- Updated dependencies [d7098baa]
    -  - @jpmorganchase/mosaic-types@0.1.0-beta.53
    -  - @jpmorganchase/mosaic-schemas@0.1.0-beta.53
    -  - @jpmorganchase/mosaic-store@0.1.0-beta.53
    -
    -## 0.1.0-beta.52
    -
    -### Patch Changes
    -
    -- Updated dependencies [9ad7418c]
    -  - @jpmorganchase/mosaic-types@0.1.0-beta.52
    -  - @jpmorganchase/mosaic-schemas@0.1.0-beta.52
    -  - @jpmorganchase/mosaic-store@0.1.0-beta.52
    -
    -## 0.1.0-beta.51
    -
    -### Patch Changes
    -
    -- @jpmorganchase/mosaic-schemas@0.1.0-beta.51
    -- @jpmorganchase/mosaic-store@0.1.0-beta.51
    -- @jpmorganchase/mosaic-types@0.1.0-beta.51
    -
    -## 0.1.0-beta.50
    -
    -### Patch Changes
    -
    -- Updated dependencies [2f015976]
    -  - @jpmorganchase/mosaic-schemas@0.1.0-beta.50
    -  - @jpmorganchase/mosaic-store@0.1.0-beta.50
    -  - @jpmorganchase/mosaic-types@0.1.0-beta.50
    -
    -## 0.1.0-beta.49
    -
    -### Patch Changes
    -
    -- Updated dependencies [425b5a00]
    -  - @jpmorganchase/mosaic-types@0.1.0-beta.49
    -  - @jpmorganchase/mosaic-schemas@0.1.0-beta.49
    -  - @jpmorganchase/mosaic-store@0.1.0-beta.49
    -
    -## 0.1.0-beta.48
    -
    -### Patch Changes
    -
    -- Updated dependencies [0eca1d6e]
    -  - @jpmorganchase/mosaic-types@0.1.0-beta.48
    -  - @jpmorganchase/mosaic-schemas@0.1.0-beta.48
    -  - @jpmorganchase/mosaic-store@0.1.0-beta.48
    -
    -## 0.1.0-beta.47
    -
    -### Patch Changes
    -
    -- Updated dependencies [19b4e49a]
    -- Updated dependencies [6caa661a]
    -  - @jpmorganchase/mosaic-store@0.1.0-beta.47
    -  - @jpmorganchase/mosaic-schemas@0.1.0-beta.47
    -  - @jpmorganchase/mosaic-types@0.1.0-beta.47
    -
    -## 0.1.0-beta.46
    -
    -### Patch Changes
    -
    -- Updated dependencies [32e86cfd]
    -  - @jpmorganchase/mosaic-store@0.1.0-beta.46
    -  - @jpmorganchase/mosaic-schemas@0.1.0-beta.46
    -  - @jpmorganchase/mosaic-types@0.1.0-beta.46
    -
    -## 0.1.0-beta.45
    -
    -### Patch Changes
    -
    -- @jpmorganchase/mosaic-schemas@0.1.0-beta.45
    -- @jpmorganchase/mosaic-store@0.1.0-beta.45
    -- @jpmorganchase/mosaic-types@0.1.0-beta.45
    -
    -## 0.1.0-beta.44
    -
    -### Patch Changes
    -
    -- @jpmorganchase/mosaic-schemas@0.1.0-beta.44
    -- @jpmorganchase/mosaic-store@0.1.0-beta.44
    -- @jpmorganchase/mosaic-types@0.1.0-beta.44
    -
    -## 0.1.0-beta.43
    -
    -### Patch Changes
    -
    -- Updated dependencies [d3b8b3a]
    -- Updated dependencies [0ced179]
    -  - @jpmorganchase/mosaic-types@0.1.0-beta.43
    -  - @jpmorganchase/mosaic-schemas@0.1.0-beta.43
    -  - @jpmorganchase/mosaic-store@0.1.0-beta.43
    -
    -## 0.1.0-beta.42
    -
    -### Patch Changes
    -
    -- @jpmorganchase/mosaic-schemas@0.1.0-beta.42
    -- @jpmorganchase/mosaic-store@0.1.0-beta.42
    -- @jpmorganchase/mosaic-types@0.1.0-beta.42
    -
    -## 0.1.0-beta.41
    -
    -### Patch Changes
    -
    -- Updated dependencies [898c9ad]
    -- Updated dependencies [5cd5a87]
    -  - @jpmorganchase/mosaic-schemas@0.1.0-beta.41
    -  - @jpmorganchase/mosaic-types@0.1.0-beta.41
    -  - @jpmorganchase/mosaic-store@0.1.0-beta.41
    -
    -## 0.1.0-beta.40
    -
    -### Patch Changes
    -
    -- @jpmorganchase/mosaic-schemas@0.1.0-beta.40
    -- @jpmorganchase/mosaic-store@0.1.0-beta.40
    -- @jpmorganchase/mosaic-types@0.1.0-beta.40
    -
    -## 0.1.0-beta.39
    -
    -### Patch Changes
    -
    -- @jpmorganchase/mosaic-schemas@0.1.0-beta.39
    -- @jpmorganchase/mosaic-store@0.1.0-beta.39
    -- @jpmorganchase/mosaic-types@0.1.0-beta.39
    -
    -## 0.1.0-beta.38
    -
    -### Patch Changes
    -
    -- @jpmorganchase/mosaic-schemas@0.1.0-beta.38
    -- @jpmorganchase/mosaic-store@0.1.0-beta.38
    -- @jpmorganchase/mosaic-types@0.1.0-beta.38
    -
    -## 0.1.0-beta.37
    -
    -### Patch Changes
    -
    -- @jpmorganchase/mosaic-schemas@0.1.0-beta.37
    -- @jpmorganchase/mosaic-store@0.1.0-beta.37
    -- @jpmorganchase/mosaic-types@0.1.0-beta.37
    -
    -## 0.1.0-beta.36
    -
    -### Patch Changes
    -
    -- 03464ad: fix: remove env variable check in `withSession` middleware
    -
    -  The `NEXTAUTH_SECRET` env variable is not always required. It is possible to pass the secret as an option to `next-auth`
    -
    -  - @jpmorganchase/mosaic-schemas@0.1.0-beta.36
    -  - @jpmorganchase/mosaic-store@0.1.0-beta.36
    -  - @jpmorganchase/mosaic-types@0.1.0-beta.36
    -
    -## 0.1.0-beta.35
    -
    -### Patch Changes
    -
    -- @jpmorganchase/mosaic-schemas@0.1.0-beta.35
    -- @jpmorganchase/mosaic-store@0.1.0-beta.35
    -- @jpmorganchase/mosaic-types@0.1.0-beta.35
    -
    -## 0.1.0-beta.34
    -
    -### Patch Changes
    -
    -- @jpmorganchase/mosaic-schemas@0.1.0-beta.34
    -- @jpmorganchase/mosaic-store@0.1.0-beta.34
    -- @jpmorganchase/mosaic-types@0.1.0-beta.34
    -
    -## 0.1.0-beta.33
    -
    -### Patch Changes
    -
    -- @jpmorganchase/mosaic-schemas@0.1.0-beta.33
    -- @jpmorganchase/mosaic-store@0.1.0-beta.33
    -- @jpmorganchase/mosaic-types@0.1.0-beta.33
    -
    -## 0.1.0-beta.32
    -
    -### Patch Changes
    -
    -- 7ed1ee7: Upgrade to latest version of NextJs (v13.4.1)
    -- 8c854fd: - Upgrade `next-auth` version
    -  - Update `withSession` mosaic middleware to use `next-auth`
    -- Updated dependencies [a56eadb]
    -- Updated dependencies [8c854fd]
    -  - @jpmorganchase/mosaic-schemas@0.1.0-beta.32
    -  - @jpmorganchase/mosaic-types@0.1.0-beta.32
    -  - @jpmorganchase/mosaic-store@0.1.0-beta.32
    -
    -## 0.1.0-beta.31
    -
    -### Patch Changes
    -
    -- b609fd0: Added support for containerization of the site and cli as well as providing config for kubernetes development (skaffold)
    -
    -  ## @jpmorganchase/mosaic-cli
    -
    -  The cli package has been updated to support containerization.
    -
    -- Updated dependencies [b609fd0]
    -  - @jpmorganchase/mosaic-schemas@0.1.0-beta.31
    -  - @jpmorganchase/mosaic-store@0.1.0-beta.31
    -  - @jpmorganchase/mosaic-types@0.1.0-beta.31
    -
    -## 0.1.0-beta.30
    -
    -### Patch Changes
    -
    -- 18ef436: The git repo source no longer generates a double slash between the repo host and repo path.
    -- Updated dependencies [18ef436]
    -  - @jpmorganchase/mosaic-schemas@0.1.0-beta.30
    -  - @jpmorganchase/mosaic-store@0.1.0-beta.30
    -  - @jpmorganchase/mosaic-types@0.1.0-beta.30
    -
    -## 0.1.0-beta.29
    -
    -### Minor Changes
    -
    -- c78deb4: Flatten Sidebar
    -  Search Optimisation
    -  Public Assets Plugin
    -  TOC Indentation
    -
    -### Patch Changes
    -
    -- Updated dependencies [c78deb4]
    -  - @jpmorganchase/mosaic-schemas@0.1.0-beta.29
    -  - @jpmorganchase/mosaic-store@0.1.0-beta.29
    -  - @jpmorganchase/mosaic-types@0.1.0-beta.29
    -
    -## 0.1.0-beta.28
    -
    -### Patch Changes
    -
    -- 27ac914: 1. Layout improvements. 2. Fix: if a user hits a url that lands on a directory, the index file within that directory is resolved as the content. 3. Fix: improve Table of Contents component highlighting.
    -- Updated dependencies [27ac914]
    -  - @jpmorganchase/mosaic-schemas@0.1.0-beta.28
    -  - @jpmorganchase/mosaic-store@0.1.0-beta.28
    -  - @jpmorganchase/mosaic-types@0.1.0-beta.28
    -
    -## 0.1.0-beta.27
    -
    -### Patch Changes
    -
    -- b465413: Improvements to vercel deployments
    -- Updated dependencies [b465413]
    -  - @jpmorganchase/mosaic-schemas@0.1.0-beta.27
    -  - @jpmorganchase/mosaic-store@0.1.0-beta.27
    -  - @jpmorganchase/mosaic-types@0.1.0-beta.27
    -
    -## 0.1.0-beta.26
    -
    -### Minor Changes
    -
    -- 531c87a: ## Mosaic Theme
    -
    -  The theme variables are now globally scoped and prefixed with `mosaic`.
    -
    -  ## BrokenLinksPlugin
    -
    -  The `BrokenLinksPlugin` uses a running instance of mosaic to verify that all links in the source pages are alive.
    -
    -  If mosaic is running behind a corporate proxy, the `proxyEndpoint` option is required to fetch external URLs.
    -
    -  Configuration:
    -
    -  ```json
    -   {
    -        modulePath: '@jpmorganchase/mosaic-plugins/BrokenLinksPlugin',
    -        priority: -1,
    -        // Exclude this plugin in builds
    -        runTimeOnly: true,
    -        options: {
    -          baseUrl: process.env.MOSAIC_ACTIVE_MODE_URL || 'http://localhost:8080',
    -          proxyEndpoint: 'http://some-proxy-url'
    -        }
    -      }
    -  ```
    -
    -  ## Next/Prev button
    -
    -  The next and prev buttons are visible again on pages that have a layout that uses these buttons.
    -
    -### Patch Changes
    -
    -- Updated dependencies [531c87a]
    -  - @jpmorganchase/mosaic-schemas@0.1.0-beta.26
    -  - @jpmorganchase/mosaic-store@0.1.0-beta.26
    -  - @jpmorganchase/mosaic-types@0.1.0-beta.26
    -
    -## 0.1.0-beta.25
    -
    -### Minor Changes
    -
    -- 93e9b07: The theme contract provided by the `@jpmorganchase/mosaic-theme` package now uses locally scoped variable names via a Vanilla Extract [Theme Contract](https://vanilla-extract.style/documentation/api/create-theme-contract/). Previously the theme variables were globally scoped resulting in conflicts with other design systems.
    -
    -### Patch Changes
    -
    -- a36219c: - Next/Prev page buttons were not appearing at the bottom of a page sequence
    -  - Removed redundant snapshot page api
    -- Updated dependencies [a36219c]
    -- Updated dependencies [93e9b07]
    -  - @jpmorganchase/mosaic-store@0.1.0-beta.25
    -  - @jpmorganchase/mosaic-schemas@0.1.0-beta.25
    -  - @jpmorganchase/mosaic-types@0.1.0-beta.25
    -
    -## 0.1.0-beta.24
    -
    -### Patch Changes
    -
    -- 049d9af: 1. Pip Salt version 2. Issues 155, make 500 error more specific 3. button and sidebar styles 4. search opt-out
    -- Updated dependencies [049d9af]
    -  - @jpmorganchase/mosaic-schemas@0.1.0-beta.24
    -  - @jpmorganchase/mosaic-store@0.1.0-beta.24
    -  - @jpmorganchase/mosaic-types@0.1.0-beta.24
    -
    -## 0.1.0-beta.23
    -
    -### Patch Changes
    -
    -- 513d45f: Sidebar behavior and styling changes.
    -  Add Client-side search feature.
    -  Relax node engine requirements.
    -  Removal of patches from the site package.
    -  Update site generator templates.
    -- Updated dependencies [513d45f]
    -  - @jpmorganchase/mosaic-schemas@0.1.0-beta.23
    -  - @jpmorganchase/mosaic-store@0.1.0-beta.23
    -  - @jpmorganchase/mosaic-types@0.1.0-beta.23
    -
    -## 0.1.0-beta.22
    -
    -### Patch Changes
    -
    -- be89e4f: fix markdown tables and update generator's Salt patches
    -
    -  - Salt patches in generator were out of sync with Mosaic repo
    -  - Markdown now support github flavoured markdown, such as Tables
    -
    -- Updated dependencies [be89e4f]
    -  - @jpmorganchase/mosaic-schemas@0.1.0-beta.22
    -  - @jpmorganchase/mosaic-store@0.1.0-beta.22
    -  - @jpmorganchase/mosaic-types@0.1.0-beta.22
    -
    -## 0.1.0-beta.21
    -
    -### Patch Changes
    -
    -- f75fd5e: fix sidebar which was generated after `beforeSend` had completed
    -- Updated dependencies [f75fd5e]
    -  - @jpmorganchase/mosaic-schemas@0.1.0-beta.21
    -  - @jpmorganchase/mosaic-store@0.1.0-beta.21
    -  - @jpmorganchase/mosaic-types@0.1.0-beta.21
    -
    -## 0.1.0-beta.20
    -
    -### Patch Changes
    -
    -- 9c7b8ff: pip to beta.20
    -- Updated dependencies [9c7b8ff]
    -  - @jpmorganchase/mosaic-schemas@0.1.0-beta.20
    -  - @jpmorganchase/mosaic-store@0.1.0-beta.20
    -  - @jpmorganchase/mosaic-types@0.1.0-beta.20
    -
    -## 0.1.0-beta.19
    -
    -### Patch Changes
    -
    -- ad06d4c: ensure spinner is removed after page has loaded
    -- Updated dependencies [ad06d4c]
    -  - @jpmorganchase/mosaic-schemas@0.1.0-beta.19
    -  - @jpmorganchase/mosaic-store@0.1.0-beta.19
    -  - @jpmorganchase/mosaic-types@0.1.0-beta.19
    -
    -## 0.1.0-beta.18
    -
    -### Patch Changes
    -
    -- 066efed: Update docs with quick-start guide
    -
    -  Sample docs now include a 'quick-start' guide to onboarding to AWS.
    -
    -  Also
    -
    -  - generator default directory is the current directory
    -  - after generating a site, it will run `yarn` in the created directory. This simplifies the generator call to just `yarn mosaic-create-site`
    -
    -- Updated dependencies [066efed]
    -  - @jpmorganchase/mosaic-schemas@0.1.0-beta.18
    -  - @jpmorganchase/mosaic-store@0.1.0-beta.18
    -  - @jpmorganchase/mosaic-types@0.1.0-beta.18
    -
    -## 0.1.0-beta.17
    -
    -### Patch Changes
    -
    -- b2f6d52: Fix `pre` block code block rendering
    -- Updated dependencies [b2f6d52]
    -  - @jpmorganchase/mosaic-schemas@0.1.0-beta.17
    -  - @jpmorganchase/mosaic-store@0.1.0-beta.17
    -  - @jpmorganchase/mosaic-types@0.1.0-beta.17
    -
    -## 0.1.0-beta.16
    -
    -### Patch Changes
    -
    -- 3a5c88a: add missing `@types/node` dependency for generator
    -- Updated dependencies [3a5c88a]
    -  - @jpmorganchase/mosaic-schemas@0.1.0-beta.16
    -  - @jpmorganchase/mosaic-store@0.1.0-beta.16
    -  - @jpmorganchase/mosaic-types@0.1.0-beta.16
    -
    -## 0.1.0-beta.15
    -
    -### Patch Changes
    -
    -- aaaf255: initial release of HTTP Source package.
    -
    -  An HTTP source accepts a collection of endpoints and a path to a transformer module.
    -  The response from fetching is transformed and merged together into 1 single collection of pages.
    -  Should 1 of the endpoints request fail then it will have no impact on the other requests.
    -
    -- Updated dependencies [aaaf255]
    -  - @jpmorganchase/mosaic-schemas@0.1.0-beta.15
    -  - @jpmorganchase/mosaic-store@0.1.0-beta.15
    -  - @jpmorganchase/mosaic-types@0.1.0-beta.15
    -
    -## 0.1.0-beta.14
    -
    -### Patch Changes
    -
    -- dde3b5a: Feature release
    -
    -  - Enhanced generators now have defaults.
    -    With one command (`yarn mosaic-create-site create`) it will generate a fully working site with both local and remote sources
    -  - Fix an issue where we could not clone from the master branch of git repos
    -  - Migrate to Next 13 image
    -
    -- Updated dependencies [dde3b5a]
    -  - @jpmorganchase/mosaic-store@0.1.0-beta.14
    -  - @jpmorganchase/mosaic-types@0.1.0-beta.14
    -
    -## 0.1.0-beta.13
    -
    -### Patch Changes
    -
    -- d4da1df: incremental improvements
    -
    -  - move colormode into store
    -  - ensure breadcrumbs and sidebar data is only added to frontmatter for pages which use a layout that has breadcrumbs or a sidebar
    -  - improve changeset so it can work standalone without a monorepo
    -  - resolev json5 vulnerability
    -
    -- Updated dependencies [d4da1df]
    -  - @jpmorganchase/mosaic-store@0.1.0-beta.13
    -  - @jpmorganchase/mosaic-types@0.1.0-beta.13
    -
    -## 0.1.0-beta.12
    -
    -### Patch Changes
    -
    -- 9ec358b: Upgrade React to version 18 and NextJs to version 13
    -- 3eb35bf: initial work to enable generators to run outside of the repo
    -- Updated dependencies [9ec358b]
    -- Updated dependencies [3eb35bf]
    -  - @jpmorganchase/mosaic-store@0.1.0-beta.12
    -  - @jpmorganchase/mosaic-types@0.1.0-beta.12
    -
    -## 0.1.0-beta.11
    -
    -### Patch Changes
    -
    -- 146a4bb: fix SSR Initial render
    -
    -  removed Salt Core patch
    -  added Salt Labs patch (Cascading Menu) to support SSR
    -
    -- fc5d7b5: Generators can now interactively add sources
    -
    -  Previously we were making local edits to our own site or examples to implement new features.
    -  What we wanted was the ability to create a local rig, A local rig can be used for development purposes,
    -  without touching our site code.
    -
    -  We have added Mosaic repo commands, to enable us to generates local rigs (`yarn gen:rig`) and deploy our own
    -  tech docs via snapshot (`yarn gen`)
    -
    -  To generate a site+snapshot from sources defined in `mosaic-generators.js`, run `yarn gen`
    -  To generate a dynamic site from sources defined in `mosaic-generators.js`, run `yarn gen:site`
    -  To generate a rig `yarn gen:rig`
    -
    -  Equally these changes can be used to generate sites in other repos via the `mosaic-create-site` command.
    -
    -  `yarn mosaic-create-site init` will create a `mosaic.generators.js`.
    -
    -  Configure the `mosaic.generators.js` with your generator and sources, then run.
    -
    -  `yarn mosaic-create-site create -i -o path/to/my-site`
    -
    -  When this command is run, it will present an interactive menu of generators and output the site to `path/to/my-site`.
    -
    -- Updated dependencies [fc5d7b5]
    -  - @jpmorganchase/mosaic-store@0.1.0-beta.11
    -  - @jpmorganchase/mosaic-types@0.1.0-beta.11
    -
    -## 0.1.0-beta.10
    -
    -### Patch Changes
    -
    -- af2f579: Converted repo to ESM and Salt DS nomenclature
    -
    -  - Switch UITK nomenclature to Salt DS
    -    Upgraded to first stable version of Salt DS version 1.0.0
    -  - CommonJS code switched to ESM and upgraded to Node 16
    -  - Removed example-nextjs-ssr package as un-required, can be replaced by documentation
    -  - Sites can now generate immutable snapshots of content that loads content like a SGS (statically generated site)
    -    Snapshots can be used as a serverless solution when deployed to Vercel.
    -  - New Middleware package `@jpmorganchase/mosaic-site-middleware`
    -
    -- Updated dependencies [af2f579]
    -  - @jpmorganchase/mosaic-store@0.1.0-beta.10
    -  - @jpmorganchase/mosaic-types@0.1.0-beta.10
    diff --git a/packages/site-middleware/README.md b/packages/site-middleware/README.md
    deleted file mode 100644
    index 84a50eed6..000000000
    --- a/packages/site-middleware/README.md
    +++ /dev/null
    @@ -1,14 +0,0 @@
    -# Mosaic Site Components Library
    -
    -`@jpmorganchase/mosaic-site-middleware` contains site specific middleware functions.
    -
    -Middleware functions are server-side only functions. They cannot be run on the client.
    -
    -## Features
    -
    -1. Middleware functions.
    -2. Middleware Preset
    -
    -## Installation
    -
    -`yarn add @jpmorganchase/mosaic-site-components`
    diff --git a/packages/site-middleware/package.json b/packages/site-middleware/package.json
    deleted file mode 100644
    index 8da07543e..000000000
    --- a/packages/site-middleware/package.json
    +++ /dev/null
    @@ -1,59 +0,0 @@
    -{
    -  "name": "@jpmorganchase/mosaic-site-middleware",
    -  "version": "0.1.0-beta.62",
    -  "license": "Apache-2.0",
    -  "description": "Mosaic - Site middleware",
    -  "repository": {
    -    "type": "git",
    -    "url": "git@github.com:jpmorganchase/mosaic.git",
    -    "directory": "packages/site-middleware"
    -  },
    -  "main": "./dist/index.js",
    -  "types": "./dist/index.d.ts",
    -  "exports": {
    -    "./index.css": "./dist/index.css",
    -    ".": {
    -      "style": "./dist/index.css",
    -      "types": "./dist/index.d.ts",
    -      "import": "./dist/index.js",
    -      "node": "./dist/index.js",
    -      "default": "./dist/index.js"
    -    }
    -  },
    -  "scripts": {
    -    "build": "tsc",
    -    "clean": "rm -fr dist",
    -    "lint": "eslint --ignore-pattern \"**/__tests__/**\""
    -  },
    -  "devDependencies": {
    -    "aws-sdk-client-mock": "^2.0.1",
    -    "jest-fetch-mock": "^3.0.3",
    -    "mock-fs": "^4.14.0",
    -    "typescript": "^4.8.3"
    -  },
    -  "dependencies": {
    -    "@aws-sdk/client-s3": "^3.256.0",
    -    "@jpmorganchase/mosaic-schemas": "^0.1.0-beta.62",
    -    "@jpmorganchase/mosaic-store": "^0.1.0-beta.62",
    -    "@jpmorganchase/mosaic-types": "^0.1.0-beta.62",
    -    "@types/mdast": "^3.0.0",
    -    "acorn": "^8.0.0",
    -    "acorn-jsx": "^5.0.0",
    -    "deepmerge": "^4.2.2",
    -    "jwt-decode": "^3.1.2",
    -    "lodash-es": "^4.17.21",
    -    "next": "^13.4.1",
    -    "next-mdx-remote": "^4.2.1",
    -    "node-cookie": "^2.1.2",
    -    "react-error-boundary": "^3.1.4",
    -    "react-pro-sidebar": "1.0.0-alpha.7",
    -    "remark-gfm": "3.0.1",
    -    "rehype-slug": "^5.0.1",
    -    "unified": "^10.0.0",
    -    "unist-util-visit": "^2.0.0",
    -    "warning": "^3.0.0"
    -  },
    -  "peerDependencies": {
    -    "next-auth": "^4.22.1"
    -  }
    -}
    diff --git a/packages/site-middleware/src/MiddlewareError.ts b/packages/site-middleware/src/MiddlewareError.ts
    deleted file mode 100644
    index 64c25796f..000000000
    --- a/packages/site-middleware/src/MiddlewareError.ts
    +++ /dev/null
    @@ -1,26 +0,0 @@
    -export default class MiddlewareError extends Error {
    -  /** Response code */
    -  public status: number;
    -
    -  /** Related route location */
    -  public location: string | undefined;
    -
    -  /** Array of errors */
    -  public errors: string[];
    -
    -  /** Props to pass back */
    -  public props: { show404?: boolean; show500?: boolean };
    -
    -  constructor(
    -    status: MiddlewareError['status'],
    -    location: MiddlewareError['location'],
    -    errors: MiddlewareError['errors'] = [],
    -    props: MiddlewareError['props'] = {}
    -  ) {
    -    super(`${status} error`);
    -    this.status = status;
    -    this.location = location;
    -    this.errors = errors;
    -    this.props = props;
    -  }
    -}
    diff --git a/packages/site-middleware/src/__tests__/withMDXContent.test.ts b/packages/site-middleware/src/__tests__/withMDXContent.test.ts
    deleted file mode 100644
    index da345ffc5..000000000
    --- a/packages/site-middleware/src/__tests__/withMDXContent.test.ts
    +++ /dev/null
    @@ -1,102 +0,0 @@
    -import { GetObjectCommand, S3Client } from '@aws-sdk/client-s3';
    -import { AwsStub, mockClient } from 'aws-sdk-client-mock';
    -import { sdkStreamMixin } from '@aws-sdk/util-stream';
    -import { Readable } from 'stream';
    -import { default as fetchMock, disableFetchMocks, enableFetchMocks } from 'jest-fetch-mock';
    -
    -const mockFs = require('mock-fs');
    -
    -import { withMDXContent } from '../withMDXContent';
    -
    -jest.mock('../compileMdx.js', () => ({
    -  compileMDX: async (value: string) => Promise.resolve(value)
    -}));
    -
    -declare var process: {
    -  env: {
    -    MOSAIC_S3_BUCKET?: string;
    -    MOSAIC_S3_REGION?: string;
    -    MOSAIC_S3_ACCESS_KEY_ID?: string;
    -    MOSAIC_S3_SECRET_ACCESS_KEY?: string;
    -    MOSAIC_SNAPSHOT_DIR?: string;
    -  };
    -};
    -
    -describe('GIVEN withMDXContent', () => {
    -  describe('WHEN snapshot-s3 Mosaic mode is set', () => {
    -    let savedEnv = process.env;
    -    let s3ClientMock: AwsStub<{}, { $metadata: {} }>;
    -    beforeAll(() => {
    -      process.env = {
    -        ...process.env,
    -        MOSAIC_S3_BUCKET: 'some-bucket',
    -        MOSAIC_S3_REGION: 'some-region',
    -        MOSAIC_S3_ACCESS_KEY_ID: 'some-access-key',
    -        MOSAIC_S3_SECRET_ACCESS_KEY: 'some-secret-key'
    -      };
    -      s3ClientMock = mockClient(S3Client);
    -      const stream = new Readable();
    -      stream.push('my content');
    -      stream.push(null); // end of stream
    -      const contentStream = sdkStreamMixin(stream);
    -      s3ClientMock.on(GetObjectCommand).resolves({ Body: contentStream });
    -    });
    -    afterAll(() => {
    -      process.env = savedEnv;
    -      s3ClientMock.reset();
    -    });
    -    test('THEN a snapshot can be loaded from an S3 bucket', async () => {
    -      // arrange
    -      const content = await withMDXContent({
    -        resolvedUrl: '/mynamespace/mypage.mdx',
    -        res: { getHeader: () => 'snapshot-s3' }
    -      });
    -      // assert
    -      expect(content).toEqual({ props: { raw: 'my content', source: 'my content', type: 'mdx' } });
    -    });
    -  });
    -
    -  describe('WHEN snapshot-file Mosaic mode is set', () => {
    -    let savedEnv = process.env;
    -    beforeAll(() => {
    -      process.env = { ...process.env, MOSAIC_SNAPSHOT_DIR: '/some/snapshots' };
    -      mockFs({
    -        'some/snapshots/mynamespace/mydir': {
    -          'mypage.mdx': 'my content'
    -        }
    -      });
    -    });
    -    afterAll(() => {
    -      mockFs.restore();
    -      process.env = savedEnv;
    -    });
    -
    -    test('THEN a snapshot can be loaded from a local file', async () => {
    -      // arrange
    -      const content = await withMDXContent({
    -        resolvedUrl: '/mynamespace/mydir/mypage.mdx',
    -        res: { getHeader: () => 'snapshot-file' }
    -      });
    -      expect(content).toEqual({ props: { raw: 'my content', source: 'my content', type: 'mdx' } });
    -    });
    -  });
    -
    -  describe('WHEN dynamic Mosaic mode is set', () => {
    -    beforeAll(() => {
    -      enableFetchMocks();
    -      fetchMock.mockOnce('my content');
    -    });
    -    afterAll(() => {
    -      disableFetchMocks();
    -    });
    -    test('THEN content is fetched from the data source', async () => {
    -      // arrange
    -      const content = await withMDXContent({
    -        resolvedUrl: '/mynamespace/mypage.mdx',
    -        res: { getHeader: () => '/dynamic' }
    -      });
    -      // assert
    -      expect(content).toEqual({ props: { raw: 'my content', source: 'my content', type: 'mdx' } });
    -    });
    -  });
    -});
    diff --git a/packages/site-middleware/src/__tests__/withSearchIndex.test.ts b/packages/site-middleware/src/__tests__/withSearchIndex.test.ts
    deleted file mode 100644
    index 9a386e53c..000000000
    --- a/packages/site-middleware/src/__tests__/withSearchIndex.test.ts
    +++ /dev/null
    @@ -1,172 +0,0 @@
    -import { GetObjectCommand, HeadObjectCommand, S3Client } from '@aws-sdk/client-s3';
    -import { AwsStub, mockClient } from 'aws-sdk-client-mock';
    -import { sdkStreamMixin } from '@aws-sdk/util-stream';
    -import { Readable } from 'stream';
    -import { default as fetchMock, disableFetchMocks, enableFetchMocks } from 'jest-fetch-mock';
    -const mockFs = require('mock-fs');
    -
    -import { withSearchIndex } from '../withSearchIndex';
    -
    -declare var process: {
    -  env: {
    -    MOSAIC_S3_BUCKET?: string;
    -    MOSAIC_S3_REGION?: string;
    -    MOSAIC_S3_ACCESS_KEY_ID?: string;
    -    MOSAIC_S3_SECRET_ACCESS_KEY?: string;
    -    MOSAIC_SNAPSHOT_DIR?: string;
    -  };
    -};
    -
    -describe('GIVEN withSearchIndex', () => {
    -  describe('WHEN snapshot-s3 Mosaic mode is set', () => {
    -    let savedEnv = process.env;
    -    let s3ClientMock: AwsStub<{}, { $metadata: {} }>;
    -    beforeAll(() => {
    -      process.env = {
    -        ...process.env,
    -        MOSAIC_S3_BUCKET: 'some-bucket',
    -        MOSAIC_S3_REGION: 'some-region',
    -        MOSAIC_S3_ACCESS_KEY_ID: 'some-access-key',
    -        MOSAIC_S3_SECRET_ACCESS_KEY: 'some-secret-key'
    -      };
    -      s3ClientMock = mockClient(S3Client);
    -      const indexStream = new Readable();
    -      indexStream.push('{ "someValue": true }');
    -      indexStream.push(null); // end of stream
    -      const indexContentStream = sdkStreamMixin(indexStream);
    -      s3ClientMock
    -        .on(GetObjectCommand, {
    -          Bucket: 'some-bucket',
    -          Key: 'search-data-condensed.json'
    -        })
    -        .resolves({ Body: indexContentStream });
    -      s3ClientMock
    -        .on(HeadObjectCommand, {
    -          Bucket: 'some-bucket',
    -          Key: 'search-data-condensed.json'
    -        })
    -        .resolvesOnce({ $metadata: { httpStatusCode: 200 } })
    -        .resolves({ $metadata: { httpStatusCode: 404 } });
    -      const configStream = new Readable();
    -      configStream.push('{ "someConfigValue": true }');
    -      configStream.push(null); // end of stream
    -      const configContentStream = sdkStreamMixin(configStream);
    -      s3ClientMock
    -        .on(GetObjectCommand, {
    -          Bucket: 'some-bucket',
    -          Key: 'search-config.json'
    -        })
    -        .resolves({ Body: configContentStream });
    -      s3ClientMock
    -        .on(HeadObjectCommand, {
    -          Bucket: 'some-bucket',
    -          Key: 'search-config.json'
    -        })
    -        .resolvesOnce({ $metadata: { httpStatusCode: 200 } })
    -        .resolves({ $metadata: { httpStatusCode: 404 } });
    -    });
    -    afterAll(() => {
    -      process.env = savedEnv;
    -      s3ClientMock.reset();
    -    });
    -    test('THEN search-index can be loaded from an S3 bucket', async () => {
    -      // arrange
    -      const content = await withSearchIndex({
    -        resolvedUrl: '/mynamespace/mypage.mdx',
    -        res: {
    -          getHeader: name => (name === 'X-Mosaic-Content-Url' ? '/mynamespace' : 'snapshot-s3')
    -        }
    -      });
    -      // assert
    -      expect(content).toEqual({
    -        props: { searchConfig: { someConfigValue: true }, searchIndex: { someValue: true } }
    -      });
    -    });
    -    test('THEN does not throw for a non-existent search-index', async () => {
    -      // arrange
    -      const content = await withSearchIndex({
    -        resolvedUrl: '/non-existent/mypage.mdx',
    -        res: {
    -          getHeader: name => (name === 'X-Mosaic-Content-Url' ? '/mynamespace' : 'snapshot-s3')
    -        }
    -      });
    -      // assert
    -      expect(content).toEqual({ props: {} });
    -    });
    -  });
    -
    -  describe('WHEN snapshot-file Mosaic mode is set', () => {
    -    let savedEnv = process.env;
    -    beforeEach(() => {
    -      process.env = { MOSAIC_SNAPSHOT_DIR: '/some/snapshots' };
    -    });
    -    afterEach(() => {
    -      process.env = savedEnv;
    -    });
    -    test('THEN reads search-index from a local file', async () => {
    -      // arrange
    -      mockFs({
    -        'some/snapshots/': {
    -          'search-data-condensed.json': '{ "someValue": true }',
    -          'search-config.json': '{ "someConfigValue": true }'
    -        }
    -      });
    -      const content = await withSearchIndex({
    -        resolvedUrl: '/mynamespace/mydir/mypage.mdx',
    -        res: {
    -          getHeader: name => (name === 'X-Mosaic-Content-Url' ? '/mydomain' : 'snapshot-file')
    -        }
    -      });
    -      expect(content).toEqual({
    -        props: { searchConfig: { someConfigValue: true }, searchIndex: { someValue: true } }
    -      });
    -      mockFs.restore();
    -    });
    -    test('THEN does not throw for a non-existent search-index', async () => {
    -      // arrange
    -      const content = await withSearchIndex({
    -        resolvedUrl: '/mynamespace/non-existent/mypage.mdx',
    -        res: {
    -          getHeader: name => (name === 'X-Mosaic-Content-Url' ? '/mydomain' : 'snapshot-file')
    -        }
    -      });
    -      console.log({ content });
    -      expect(content).toEqual({ props: {} });
    -    });
    -  });
    -
    -  describe('WHEN active Mosaic mode is set', () => {
    -    beforeAll(() => {
    -      enableFetchMocks();
    -      fetchMock.mockResponses(
    -        [JSON.stringify({ someValue: true }), { status: 200 }],
    -        [JSON.stringify({ someConfigValue: true }), { status: 200 }],
    -        ['', { status: 404 }],
    -        ['', { status: 404 }]
    -      );
    -    });
    -    afterAll(() => {
    -      disableFetchMocks();
    -    });
    -    test('THEN search-index is fetched from the data source', async () => {
    -      // arrange
    -      const content = await withSearchIndex({
    -        resolvedUrl: '/mynamespace/mypage.mdx',
    -        res: { getHeader: name => (name === 'X-Mosaic-Content-Url' ? '/mydomain' : 'active') }
    -      });
    -      // assert
    -      expect(content).toEqual({
    -        props: { searchConfig: { someConfigValue: true }, searchIndex: { someValue: true } }
    -      });
    -    });
    -    test('THEN does not throw for a non-existent search-index', async () => {
    -      // arrange
    -      const content = await withSearchIndex({
    -        resolvedUrl: '/mynamespace/non-existent/mypage.mdx',
    -        res: { getHeader: name => (name === 'X-Mosaic-Content-Url' ? '/mydomain' : 'active') }
    -      });
    -      // assert
    -      expect(content).toEqual({ props: {} });
    -    });
    -  });
    -});
    diff --git a/packages/site-middleware/src/__tests__/withSharedConfig.test.ts b/packages/site-middleware/src/__tests__/withSharedConfig.test.ts
    deleted file mode 100644
    index 9182cda01..000000000
    --- a/packages/site-middleware/src/__tests__/withSharedConfig.test.ts
    +++ /dev/null
    @@ -1,151 +0,0 @@
    -import { GetObjectCommand, HeadObjectCommand, S3Client } from '@aws-sdk/client-s3';
    -import { AwsStub, mockClient } from 'aws-sdk-client-mock';
    -import { sdkStreamMixin } from '@aws-sdk/util-stream';
    -import { Readable } from 'stream';
    -import { default as fetchMock, disableFetchMocks, enableFetchMocks } from 'jest-fetch-mock';
    -const mockFs = require('mock-fs');
    -
    -import { withSharedConfig } from '../withSharedConfig';
    -
    -declare var process: {
    -  env: {
    -    MOSAIC_S3_BUCKET?: string;
    -    MOSAIC_S3_REGION?: string;
    -    MOSAIC_S3_ACCESS_KEY_ID?: string;
    -    MOSAIC_S3_SECRET_ACCESS_KEY?: string;
    -    MOSAIC_SNAPSHOT_DIR?: string;
    -  };
    -};
    -
    -describe('GIVEN withSharedConfig', () => {
    -  describe('WHEN snapshot-s3 Mosaic mode is set', () => {
    -    let savedEnv = process.env;
    -    let s3ClientMock: AwsStub<{}, { $metadata: {} }>;
    -    beforeAll(() => {
    -      process.env = {
    -        ...process.env,
    -        MOSAIC_S3_BUCKET: 'some-bucket',
    -        MOSAIC_S3_REGION: 'some-region',
    -        MOSAIC_S3_ACCESS_KEY_ID: 'some-access-key',
    -        MOSAIC_S3_SECRET_ACCESS_KEY: 'some-secret-key'
    -      };
    -      s3ClientMock = mockClient(S3Client);
    -      const stream = new Readable();
    -      stream.push('{"config": { "someValue": true }}');
    -      stream.push(null); // end of stream
    -      const contentStream = sdkStreamMixin(stream);
    -      s3ClientMock
    -        .on(GetObjectCommand, {
    -          Bucket: 'some-bucket',
    -          Key: 'mynamespace/shared-config.json'
    -        })
    -        .resolves({ Body: contentStream });
    -      s3ClientMock
    -        .on(HeadObjectCommand, {
    -          Bucket: 'some-bucket',
    -          Key: 'mynamespace/shared-config.json'
    -        })
    -        .resolves({ $metadata: { httpStatusCode: 200 } });
    -      s3ClientMock
    -        .on(HeadObjectCommand, {
    -          Bucket: 'some-bucket',
    -          Key: 'non-existent/shared-config.json'
    -        })
    -        .resolves({ $metadata: { httpStatusCode: 404 } });
    -    });
    -    afterAll(() => {
    -      process.env = savedEnv;
    -      s3ClientMock.reset();
    -    });
    -    test('THEN shared-config can be loaded from an S3 bucket', async () => {
    -      // arrange
    -      const content = await withSharedConfig({
    -        resolvedUrl: '/mynamespace/mypage.mdx',
    -        res: {
    -          getHeader: name => (name === 'X-Mosaic-Content-Url' ? 'http://mydomain' : 'snapshot-s3')
    -        }
    -      });
    -      // assert
    -      expect(content).toEqual({ props: { sharedConfig: { someValue: true } } });
    -    });
    -    test('THEN does not throw for a non-existent shared-config', async () => {
    -      // arrange
    -      const content = await withSharedConfig({
    -        resolvedUrl: '/non-existent/mypage.mdx',
    -        res: {
    -          getHeader: name => (name === 'X-Mosaic-Content-Url' ? 'http://mydomain' : 'snapshot-s3')
    -        }
    -      });
    -      // assert
    -      expect(content).toEqual({ props: {} });
    -    });
    -  });
    -
    -  describe('WHEN snapshot-file Mosaic mode is set', () => {
    -    let savedEnv = process.env;
    -    beforeEach(() => {
    -      process.env = { MOSAIC_SNAPSHOT_DIR: '/some/snapshots' };
    -      mockFs({
    -        'some/snapshots/mynamespace/mydir': {
    -          'shared-config.json': '{"config": { "someValue": true }}'
    -        }
    -      });
    -    });
    -    afterEach(() => {
    -      mockFs.restore();
    -      process.env = savedEnv;
    -    });
    -
    -    test('THEN reads shared-config from a local file', async () => {
    -      // arrange
    -      const content = await withSharedConfig({
    -        resolvedUrl: '/mynamespace/mydir/mypage.mdx',
    -        res: {
    -          getHeader: name => (name === 'X-Mosaic-Content-Url' ? 'http://mydomain' : 'snapshot-file')
    -        }
    -      });
    -      expect(content).toEqual({ props: { sharedConfig: { someValue: true } } });
    -    });
    -    test('THEN does not throw for a non-existent shared-config', async () => {
    -      // arrange
    -      const content = await withSharedConfig({
    -        resolvedUrl: '/mynamespace/non-existent/mypage.mdx',
    -        res: {
    -          getHeader: name => (name === 'X-Mosaic-Content-Url' ? 'http://mydomain' : 'snapshot-file')
    -        }
    -      });
    -      expect(content).toEqual({ props: {} });
    -    });
    -  });
    -
    -  describe('WHEN active Mosaic mode is set', () => {
    -    beforeAll(() => {
    -      enableFetchMocks();
    -      fetchMock.mockResponses(
    -        [JSON.stringify({ config: { someValue: true } }), { status: 200 }],
    -        ['', { status: 404 }]
    -      );
    -    });
    -    afterAll(() => {
    -      disableFetchMocks();
    -    });
    -    test('THEN shared-config is fetched from the data source', async () => {
    -      // arrange
    -      const content = await withSharedConfig({
    -        resolvedUrl: '/mynamespace/mypage.mdx',
    -        res: { getHeader: name => (name === 'X-Mosaic-Content-Url' ? 'http://mydomain' : 'active') }
    -      });
    -      // assert
    -      expect(content).toEqual({ props: { sharedConfig: { someValue: true } } });
    -    });
    -    test('THEN does not throw for a non-existent shared-config', async () => {
    -      // arrange
    -      const content = await withSharedConfig({
    -        resolvedUrl: '/mynamespace/non-existent/mypage.mdx',
    -        res: { getHeader: name => (name === 'X-Mosaic-Content-Url' ? 'http://mydomain' : 'active') }
    -      });
    -      // assert
    -      expect(content).toEqual({ props: {} });
    -    });
    -  });
    -});
    diff --git a/packages/site-middleware/src/compileMdx.ts b/packages/site-middleware/src/compileMdx.ts
    deleted file mode 100644
    index 4d8e6e73d..000000000
    --- a/packages/site-middleware/src/compileMdx.ts
    +++ /dev/null
    @@ -1,20 +0,0 @@
    -import { serialize } from 'next-mdx-remote/serialize';
    -import remarkGfm from 'remark-gfm';
    -import rehypeSlug from 'rehype-slug';
    -import { codeBlocks } from './plugins/codeBlocks.js';
    -
    -export async function compileMDX(
    -  content,
    -  parseFrontmatter = true,
    -  rehypePlugins = [],
    -  remarkPlugins = []
    -) {
    -  const mdxSource = await serialize(content, {
    -    mdxOptions: {
    -      rehypePlugins: [rehypeSlug, ...remarkPlugins],
    -      remarkPlugins: [codeBlocks, remarkGfm, ...rehypePlugins]
    -    },
    -    parseFrontmatter
    -  });
    -  return mdxSource;
    -}
    diff --git a/packages/site-middleware/src/createMiddlewareRunner.ts b/packages/site-middleware/src/createMiddlewareRunner.ts
    deleted file mode 100644
    index 7716f9576..000000000
    --- a/packages/site-middleware/src/createMiddlewareRunner.ts
    +++ /dev/null
    @@ -1,106 +0,0 @@
    -import type { GetServerSidePropsContext } from 'next';
    -import deepmerge from 'deepmerge';
    -
    -import type { MosaicAppProps } from './middlewarePresets.js';
    -import MiddlewareError from './MiddlewareError.js';
    -
    -const overwriteMerge = (_, sourceArray) => sourceArray;
    -
    -/** Props returned after running Middleware */
    -export type MiddlewareResult = Awaited>;
    -
    -/** Options to be passed to Middleware */
    -export type MosaicMiddlewareOptions = Record;
    -
    -/** Middleware callbacks return props to be added to the page */
    -export type MosaicMiddleware = (
    -  /** Context provides information on the current page */
    -  context: GetServerSidePropsContext,
    -  /** Middleware specific options */
    -  options?: TOptions,
    -  /** Previous result created by plugins */
    -  lastState?: Record
    -) => Promise>;
    -
    -/** Middleware with a configuration object specifying options */
    -export type MosaicMiddlewareWithConfig = [
    -  MosaicMiddleware,
    -  TConfig
    -];
    -
    -/** Function to run all provided middleware */
    -export type MosaicMiddlewareRunner = (
    -  context: GetServerSidePropsContext,
    -  options: MosaicMiddlewareOptions
    -) => Promise>;
    -
    -/**
    - * Creates a middleware runner from the collection of provided middleware
    - * @param initialState initial state
    - * @param middleware a collection of middleware to be executed in order to get the page props
    - * @returns a middleware runner
    - */
    -export function createMiddlewareRunner(
    -  initialState: Record,
    -  middleware: Array | MosaicMiddlewareWithConfig>
    -): MosaicMiddlewareRunner {
    -  return async function middlewareRunner(context, options) {
    -    let result: MiddlewareResult = initialState;
    -    const errors: Error[] = [];
    -    // eslint-disable-next-line no-restricted-syntax
    -    for (const fnOrConfig of middleware) {
    -      let fn: MosaicMiddleware;
    -      let finalOptions = options;
    -      try {
    -        if (typeof fnOrConfig === 'function') {
    -          fn = fnOrConfig;
    -        } else {
    -          fn = fnOrConfig[0];
    -          finalOptions = { ...options, ...fnOrConfig[1] };
    -        }
    -        // eslint-disable-next-line no-await-in-loop
    -        const nextState = await fn(context, finalOptions, result);
    -        result = deepmerge>(result, nextState, {
    -          arrayMerge: overwriteMerge
    -        });
    -      } catch (error) {
    -        if (error instanceof Error) {
    -          errors.push(error);
    -        } else {
    -          const unexpectedError = new MiddlewareError(500, undefined, [String(error)], {
    -            show500: true
    -          });
    -          errors.push(unexpectedError);
    -        }
    -      }
    -    }
    -    if (result.redirect) {
    -      return { redirect: result.redirect };
    -    }
    -    const show404 = errors.some(error => {
    -      if (error instanceof MiddlewareError) {
    -        return error.props?.show404;
    -      }
    -      return false;
    -    });
    -    const show500 =
    -      !show404 &&
    -      errors.some(error => {
    -        if (error instanceof MiddlewareError) {
    -          return error.props?.show500;
    -        }
    -        return true;
    -      });
    -
    -    if (show500) {
    -      console.error('An un-expected error(s) was thrown which caused the 500 page to appear');
    -      errors.forEach(console.error);
    -    }
    -
    -    if (show404 || show500) {
    -      context.res.setHeader(`X-Mosaic-${show404 ? '404' : '500'}`, 'true');
    -    }
    -    const props: TProps = { ...result.props, show404, show500 } as TProps;
    -    return { props };
    -  };
    -}
    diff --git a/packages/site-middleware/src/index.ts b/packages/site-middleware/src/index.ts
    deleted file mode 100644
    index 791345149..000000000
    --- a/packages/site-middleware/src/index.ts
    +++ /dev/null
    @@ -1,9 +0,0 @@
    -export * from './compileMdx.js';
    -export * from './createMiddlewareRunner.js';
    -export * from './MiddlewareError.js';
    -export * from './middlewarePresets.js';
    -export * from './withMDXContent.js';
    -export * from './withMosaicMode.js';
    -export * from './withSearchIndex.js';
    -export * from './withSession.js';
    -export * from './withSharedConfig.js';
    diff --git a/packages/site-middleware/src/loaders/__tests__/createS3Loader.test.ts b/packages/site-middleware/src/loaders/__tests__/createS3Loader.test.ts
    deleted file mode 100644
    index c5700b58d..000000000
    --- a/packages/site-middleware/src/loaders/__tests__/createS3Loader.test.ts
    +++ /dev/null
    @@ -1,55 +0,0 @@
    -import { GetObjectCommand, HeadObjectCommand, S3Client } from '@aws-sdk/client-s3';
    -import { AwsStub, mockClient } from 'aws-sdk-client-mock';
    -import { sdkStreamMixin } from '@aws-sdk/util-stream';
    -import { Readable } from 'stream';
    -
    -import { createS3Loader } from '../index.js';
    -
    -describe.only('GIVEN createS3Loader', () => {
    -  let savedEnv = process.env;
    -  let s3ClientMock: AwsStub<{}, { $metadata: {} }>;
    -  beforeAll(() => {
    -    process.env = {
    -      ...process.env,
    -      MOSAIC_S3_BUCKET: 'some-bucket',
    -      MOSAIC_S3_REGION: 'some-region',
    -      MOSAIC_S3_ACCESS_KEY_ID: 'some-access-key',
    -      MOSAIC_S3_SECRET_ACCESS_KEY: 'some-secret-key'
    -    };
    -    s3ClientMock = mockClient(S3Client);
    -    const stream = new Readable();
    -    stream.push('some-content');
    -    stream.push(null); // end of stream
    -    const contentStream = sdkStreamMixin(stream);
    -    s3ClientMock.on(GetObjectCommand).resolves({ Body: contentStream });
    -    s3ClientMock
    -      .on(HeadObjectCommand, {
    -        Bucket: 'some-bucket',
    -        Key: 'some-key'
    -      })
    -      .resolves({ $metadata: { httpStatusCode: 200 } });
    -    s3ClientMock
    -      .on(HeadObjectCommand, {
    -        Bucket: 'some-bucket',
    -        Key: 'non-existent-key'
    -      })
    -      .resolves({ $metadata: { httpStatusCode: 404 } });
    -  });
    -  afterAll(() => {
    -    process.env = savedEnv;
    -    s3ClientMock.reset();
    -  });
    -  test('THEN the S3 loader can load keys from buckets', async () => {
    -    // arrange
    -    const s3Client = createS3Loader('some-bucket', 'some-access-key', 'some-secret-key');
    -    // assert
    -    expect(await s3Client.loadKey('some-bucket', 'some-key')).toEqual('some-content');
    -  });
    -  test('THEN the S3 loader can check keys exist in buckets', async () => {
    -    // arrange
    -    const s3Client = createS3Loader('some-bucket', 'some-access-key', 'some-secret-key');
    -    // assert
    -    expect(await s3Client.keyExists('some-bucket', 'some-key')).toEqual(true);
    -    expect(await s3Client.keyExists('some-bucket', 'non-existent-key')).toEqual(false);
    -  });
    -});
    diff --git a/packages/site-middleware/src/loaders/__tests__/getS3Config.test.ts b/packages/site-middleware/src/loaders/__tests__/getS3Config.test.ts
    deleted file mode 100644
    index b633ca2f3..000000000
    --- a/packages/site-middleware/src/loaders/__tests__/getS3Config.test.ts
    +++ /dev/null
    @@ -1,44 +0,0 @@
    -import { getSnapshotS3Config } from '../index.js';
    -describe('GIVEN getS3Config', () => {
    -  describe('WHEN valid config is defined', () => {
    -    let savedEnv = process.env;
    -    beforeAll(() => {
    -      process.env = {
    -        ...process.env,
    -        MOSAIC_S3_BUCKET: 'some-bucket',
    -        MOSAIC_S3_REGION: 'some-region',
    -        MOSAIC_S3_ACCESS_KEY_ID: 'some-access-key',
    -        MOSAIC_S3_SECRET_ACCESS_KEY: 'some-secret-key'
    -      };
    -    });
    -    afterAll(() => {
    -      process.env = savedEnv;
    -    });
    -    test('THEN it returns the S3 config', async () => {
    -      // arrange
    -      const config = getSnapshotS3Config('some-key');
    -      // assert
    -      expect(config).toEqual({
    -        bucket: 'some-bucket',
    -        region: 'some-region',
    -        accessKeyId: 'some-access-key',
    -        secretAccessKey: 'some-secret-key'
    -      });
    -    });
    -  });
    -  describe('WHEN invalid config is defined', () => {
    -    let savedEnv = process.env;
    -    beforeAll(() => {
    -      process.env = {};
    -    });
    -    afterAll(() => {
    -      process.env = savedEnv;
    -    });
    -    test('THEN it throws an error', () => {
    -      // assert
    -      expect(() => getSnapshotS3Config('some-key')).toThrow(
    -        /Environment variables missing for loading of S3 content for key some-key/
    -      );
    -    });
    -  });
    -});
    diff --git a/packages/site-middleware/src/loaders/__tests__/loadLocalFile.test.ts b/packages/site-middleware/src/loaders/__tests__/loadLocalFile.test.ts
    deleted file mode 100644
    index cb0f45f82..000000000
    --- a/packages/site-middleware/src/loaders/__tests__/loadLocalFile.test.ts
    +++ /dev/null
    @@ -1,33 +0,0 @@
    -const mockFs = require('mock-fs');
    -import { loadLocalFile } from '../index.js';
    -
    -describe('GIVEN loadLocalFile', () => {
    -  beforeEach(() => {
    -    mockFs({
    -      'some/snapshots/mynamespace/mydir': 'some-content',
    -      'some/snapshots/mynamespace/dir/index': 'directory index content'
    -    });
    -  });
    -  afterEach(() => {
    -    mockFs.restore();
    -  });
    -
    -  test('THEN it can read from a local file', async () => {
    -    // arrange
    -    const content = await loadLocalFile('some/snapshots/mynamespace/mydir');
    -    // assert
    -    expect(content).toEqual('some-content');
    -  });
    -  test('THEN it throws and error when the local file does not exist', async () => {
    -    // assert
    -    await expect(loadLocalFile('some/non-existent/mynamespace/mydir')).rejects.toThrow(
    -      /ENOENT, no such file or directory 'some\/non-existent\/mynamespace\/mydir'/
    -    );
    -  });
    -  test('THEN it loads the index file if a directory is requested', async () => {
    -    // arrange
    -    const content = await loadLocalFile('some/snapshots/mynamespace/dir');
    -    // assert
    -    expect(content).toEqual('directory index content');
    -  });
    -});
    diff --git a/packages/site-middleware/src/loaders/createS3Loader.ts b/packages/site-middleware/src/loaders/createS3Loader.ts
    deleted file mode 100644
    index b372709a8..000000000
    --- a/packages/site-middleware/src/loaders/createS3Loader.ts
    +++ /dev/null
    @@ -1,61 +0,0 @@
    -import md5 from 'md5';
    -import { GetObjectCommand, HeadObjectCommand, S3Client } from '@aws-sdk/client-s3';
    -import { MetadataBearer } from '@aws-sdk/types';
    -
    -export function createClient(region, accessKeyId, secretAccessKey): S3Client {
    -  return new S3Client({
    -    region,
    -    credentials: {
    -      accessKeyId,
    -      secretAccessKey
    -    }
    -  });
    -}
    -
    -async function readFile(client, bucket, key) {
    -  const params = {
    -    Bucket: bucket,
    -    Key: key
    -  };
    -  const command = new GetObjectCommand(params);
    -  const response = await client.send(command);
    -  return response;
    -}
    -
    -const clientCache = {};
    -export function createS3Loader(region, accessKeyId, secretAccessKey) {
    -  const clientHash = md5(`${region}${accessKeyId}${secretAccessKey}`);
    -  if (!clientCache[clientHash]) {
    -    clientCache[clientHash] = createClient(region, accessKeyId, secretAccessKey);
    -  }
    -  const client = clientCache[clientHash];
    -
    -  return {
    -    loadKey: async (bucket: string, key: string): Promise => {
    -      const data = await readFile(client, bucket, key);
    -      const text = await data.Body.transformToString();
    -      return text;
    -    },
    -    keyExists: async (bucket: string, key: string): Promise => {
    -      const params = {
    -        Bucket: bucket,
    -        Key: key
    -      };
    -      const command = new HeadObjectCommand(params);
    -      let exists = false;
    -
    -      try {
    -        const response = await client.send(command);
    -        exists = response?.$metadata?.httpStatusCode === 200;
    -      } catch (error) {
    -        const bearer: MetadataBearer = error as MetadataBearer;
    -        if (bearer?.$metadata?.httpStatusCode === 404) {
    -          exists = false;
    -        } else {
    -          throw error;
    -        }
    -      }
    -      return !!exists;
    -    }
    -  };
    -}
    diff --git a/packages/site-middleware/src/loaders/getSnapshotFileConfig.ts b/packages/site-middleware/src/loaders/getSnapshotFileConfig.ts
    deleted file mode 100644
    index 764fe5f78..000000000
    --- a/packages/site-middleware/src/loaders/getSnapshotFileConfig.ts
    +++ /dev/null
    @@ -1,16 +0,0 @@
    -import { snapshotFileEnvSchema } from '@jpmorganchase/mosaic-schemas';
    -
    -export const getSnapshotFileConfig = url => {
    -  const env = snapshotFileEnvSchema.safeParse(process.env);
    -  if (!env.success) {
    -    env.error.issues.forEach(issue => {
    -      console.error(
    -        `Missing process.env.${issue.path.join()} environment variable required to load path ${url} from local snapshot`
    -      );
    -    });
    -    throw new Error(`Environment variables missing for loading of ${url} for local snapshot`);
    -  }
    -  return {
    -    snapshotDir: env.data.MOSAIC_SNAPSHOT_DIR
    -  };
    -};
    diff --git a/packages/site-middleware/src/loaders/getSnapshotS3Config.ts b/packages/site-middleware/src/loaders/getSnapshotS3Config.ts
    deleted file mode 100644
    index 0f04a16b7..000000000
    --- a/packages/site-middleware/src/loaders/getSnapshotS3Config.ts
    +++ /dev/null
    @@ -1,19 +0,0 @@
    -import { snapshotS3EnvSchema } from '@jpmorganchase/mosaic-schemas';
    -
    -export function getSnapshotS3Config(key) {
    -  const config = snapshotS3EnvSchema.safeParse(process.env);
    -  if (!config.success) {
    -    config.error.issues.forEach(issue => {
    -      console.error(
    -        `Missing process.env.${issue.path.join()} environment variable required to load S3 bucket ${key}`
    -      );
    -    });
    -    throw new Error(`Environment variables missing for loading of S3 content for key ${key}`);
    -  }
    -  return {
    -    bucket: config.data.MOSAIC_S3_BUCKET,
    -    region: config.data.MOSAIC_S3_REGION,
    -    accessKeyId: config.data.MOSAIC_S3_ACCESS_KEY_ID,
    -    secretAccessKey: config.data.MOSAIC_S3_SECRET_ACCESS_KEY
    -  };
    -}
    diff --git a/packages/site-middleware/src/loaders/index.ts b/packages/site-middleware/src/loaders/index.ts
    deleted file mode 100644
    index c15e05639..000000000
    --- a/packages/site-middleware/src/loaders/index.ts
    +++ /dev/null
    @@ -1,4 +0,0 @@
    -export * from './loadLocalFile.js';
    -export * from './createS3Loader.js';
    -export * from './getSnapshotS3Config';
    -export * from './getSnapshotFileConfig.js';
    diff --git a/packages/site-middleware/src/loaders/loadLocalFile.ts b/packages/site-middleware/src/loaders/loadLocalFile.ts
    deleted file mode 100644
    index 85e60228b..000000000
    --- a/packages/site-middleware/src/loaders/loadLocalFile.ts
    +++ /dev/null
    @@ -1,12 +0,0 @@
    -import fs from 'fs';
    -import path from 'path';
    -
    -export const loadLocalFile = async (filePath: string): Promise => {
    -  let localPath = filePath;
    -  if ((await fs.promises.stat(filePath)).isDirectory()) {
    -    localPath = path.posix.join(localPath, 'index');
    -  }
    -  const realPath = await fs.promises.realpath(localPath);
    -  const data = await fs.promises.readFile(realPath, 'utf-8');
    -  return data.toString();
    -};
    diff --git a/packages/site-middleware/src/middlewarePresets.ts b/packages/site-middleware/src/middlewarePresets.ts
    deleted file mode 100644
    index ae9737c5d..000000000
    --- a/packages/site-middleware/src/middlewarePresets.ts
    +++ /dev/null
    @@ -1,47 +0,0 @@
    -import type { Redirect } from 'next';
    -import { SearchIndexSlice, SharedConfigSlice } from '@jpmorganchase/mosaic-store';
    -import type { ContentProps } from '@jpmorganchase/mosaic-types';
    -import { withSearchIndex } from './withSearchIndex.js';
    -import { withSharedConfig } from './withSharedConfig.js';
    -import { withMDXContent } from './withMDXContent.js';
    -import { MosaicMiddleware, MosaicMiddlewareWithConfig } from './createMiddlewareRunner.js';
    -import { withMosaicMode, type MosaicModeProps } from './withMosaicMode.js';
    -
    -export type BaseMosaicAppProps = {
    -  /** Flag to show custom 404 page, whilst maintaining current state/layout */
    -  show404?: boolean;
    -  /** Flag to show custom 500 page, whilst maintaining current state/layout */
    -  show500?: boolean;
    -};
    -
    -/** Abstract Mosaic App Props */
    -export type MosaicAppProps = {
    -  /** Page props created by [[`Middleware`]] */
    -  props?: T;
    -  /** Error description */
    -  errors?: {
    -    /** Stacktrace * */
    -    location?: string;
    -    /** Error message * */
    -    statusText?: string;
    -    /** Error code */
    -    status?: number;
    -  } & BaseMosaicAppProps;
    -  /** Next JS Redirect */
    -  redirect?: Redirect;
    -};
    -
    -/** Mosaic getServerSideProps result which supports error handling */
    -export type GetMosaicServerSidePropsResult = MosaicAppProps;
    -
    -/** MiddlewarePresets props */
    -export type MiddlewarePresetsProps = MosaicModeProps &
    -  ContentProps &
    -  SearchIndexSlice &
    -  SharedConfigSlice;
    -
    -/** A collection of preset [[`Middleware`]] plugins that will compose together the page props */
    -export const middlewarePresets: Array<
    -  | MosaicMiddleware
    -  | MosaicMiddlewareWithConfig
    -> = [withMosaicMode, withSharedConfig, withMDXContent, withSearchIndex];
    diff --git a/packages/site-middleware/src/plugins/codeBlocks.ts b/packages/site-middleware/src/plugins/codeBlocks.ts
    deleted file mode 100644
    index 8e8fd7b06..000000000
    --- a/packages/site-middleware/src/plugins/codeBlocks.ts
    +++ /dev/null
    @@ -1,52 +0,0 @@
    -import { Parser } from 'acorn';
    -import jsx from 'acorn-jsx';
    -import type { Code, Literal } from 'mdast';
    -import { Plugin, Transformer } from 'unified';
    -import visit from 'unist-util-visit';
    -
    -const parser = Parser.extend(jsx());
    -
    -/**
    - * Modified from: https://github.com/remcohaszing/remark-mdx-code-meta
    - *
    - * Custom meta parser for codefences that have extra params. e.g.
    - * ```jsx filename="hello.jsx"
    - * 
    Test!
    - * ``` - * - * Custom meta parser for codefences that have eval or eval="true". - * This allows vars to be resolved and their values used as the code block body. - * ```jsx eval - * meta.data.someStringOnlyAvailableAtRuntime - * ``` - */ -export const transformer: Transformer = ast => { - visit(ast, 'code', (node, index, parent) => { - if (!node.meta) { - return; - } - // Limit eval to just basic strings that start with "meta." - const isEval = - /(^| )eval(="true"| |$)/.test(node.meta) && /^meta\.[a-z0-9_[\].$"']+$/i.test(node.value); - - let code; - if (!isEval) { - code = JSON.stringify(`${node.value}\n`); - } else { - code = node.value; - } - - const codeProps = node.lang ? `className="language-${node.lang}"` : ''; - const value = `
    {${code}}
    `; - const estree = parser.parse(value, { ecmaVersion: 'latest' }); - // eslint-disable-next-line no-param-reassign - parent!.children[index] = { type: 'mdxFlowExpression', value, data: { estree } } as Literal; - }); -}; - -/** - * A markdown plugin for transforming code metadata. - * - * @returns A unified transformer. - */ -export const codeBlocks: Plugin<[]> = () => transformer; diff --git a/packages/site-middleware/src/withMDXContent.ts b/packages/site-middleware/src/withMDXContent.ts deleted file mode 100644 index 168415905..000000000 --- a/packages/site-middleware/src/withMDXContent.ts +++ /dev/null @@ -1,123 +0,0 @@ -import path from 'path'; -import { GetServerSidePropsContext } from 'next'; -import type { ContentProps, MosaicMode } from '@jpmorganchase/mosaic-types'; -import { MosaicMiddleware } from './createMiddlewareRunner.js'; -import MiddlewareError from './MiddlewareError.js'; -import { - createS3Loader, - getSnapshotFileConfig, - getSnapshotS3Config, - loadLocalFile -} from './loaders'; -import { compileMDX } from './compileMdx.js'; - -if (typeof window !== 'undefined') { - throw new Error('This file should not be loaded on the client.'); -} -function stripParams(resolvedUrl: string) { - const url = new URL(resolvedUrl, 'https://example.com'); - return url.pathname; -} - -function normalizeUrl(url: string) { - return /\/index$/.test(url) ? `${url}.mdx` : url; -} - -async function loadSnapshotFile(url) { - const { snapshotDir } = getSnapshotFileConfig(url); - const normalizedUrl = normalizeUrl(url); - const filePath = path.posix.join(process.cwd(), snapshotDir, normalizedUrl); - try { - return await loadLocalFile(filePath); - } catch (error) { - if (error instanceof Error) { - console.error(error.message); - } - throw new MiddlewareError(404, url, [`Could not read local file '${filePath}' for '${url}'`], { - show404: true - }); - } -} - -async function loadSnapshotS3(url) { - let text; - try { - const { accessKeyId, bucket, region, secretAccessKey } = getSnapshotS3Config(url); - const s3Loader = createS3Loader(region, accessKeyId, secretAccessKey); - const normalizedUrl = normalizeUrl(url); - const s3Key = normalizedUrl.replace(/^\//, ''); - text = await s3Loader.loadKey(bucket, s3Key); - } catch (error) { - if (error instanceof Error) { - console.error(error.message); - } - throw new MiddlewareError(404, url, [`Could not find an S3 object for '${url}'`], { - show404: true - }); - } - return text; -} - -async function loadActiveContent(url) { - let text; - const normalizedUrl = normalizeUrl(url); - const response = await fetch(normalizedUrl); - if (response.ok) { - text = await response.text(); - // If redirect url was returned - } else if (response.status === 302) { - return { - redirect: { - destination: (await response.json()).redirect, - permanent: true - } - }; - } else { - throw new MiddlewareError(404, url, [`Could not fetch any content for ${url}`], { - show404: true - }); - } - return text; -} -/** - * Adds the [[`type`, `source`, `raw`,]] object to the page props - * @param context - */ -export const withMDXContent: MosaicMiddleware = async ( - context: GetServerSidePropsContext -) => { - const { resolvedUrl } = context; - const mosaicMode = context.res.getHeader('X-Mosaic-Mode' || 'active') as MosaicMode; - const extname = path.extname(resolvedUrl); - const pathname = stripParams(resolvedUrl); - // Any urls which are not prefixed, will default to MDX - const isMDX = extname === '.mdx' || extname === ''; - if (!isMDX) { - return {}; - } - let text; - if (mosaicMode === 'snapshot-file') { - text = await loadSnapshotFile(pathname); - } else if (mosaicMode === 'snapshot-s3') { - text = await loadSnapshotS3(pathname); - } else { - const mosaicUrl = context.res.getHeader('X-Mosaic-Content-Url'); - const fetchedResult = await loadActiveContent(`${mosaicUrl}${pathname}`); - const isRedirect = typeof fetchedResult === 'object'; - if (isRedirect) { - return fetchedResult; - } - text = fetchedResult; - } - try { - const mdxSource = await compileMDX(text); - return { props: { type: 'mdx', source: mdxSource, raw: text } }; - } catch (error) { - console.error(error); - if (error instanceof Error) { - throw new MiddlewareError(500, resolvedUrl, [error.message], { show500: true }); - } else { - throw new MiddlewareError(500, resolvedUrl, ['unexpected error'], { show500: true }); - } - } -}; diff --git a/packages/site-middleware/src/withMosaicMode.ts b/packages/site-middleware/src/withMosaicMode.ts deleted file mode 100644 index 2ada9dbb2..000000000 --- a/packages/site-middleware/src/withMosaicMode.ts +++ /dev/null @@ -1,26 +0,0 @@ -import type { MosaicMode } from '@jpmorganchase/mosaic-types'; - -import type { MosaicMiddleware } from './createMiddlewareRunner.js'; - -if (typeof window !== 'undefined') { - throw new Error('This file should not be loaded on the client.'); -} - -/** - * [[`MosaicModeProps`]] specifies the mode mosaic uses - */ -export interface MosaicModeProps { - mode?: MosaicMode; -} - -/** - * Adds the [[`MosaicModeProps`]] object to the page props - * @param context - */ -export const withMosaicMode: MosaicMiddleware = async context => { - const mode: MosaicMode = (process.env.MOSAIC_MODE || 'active') as MosaicMode; - const mosaicContentUrl = process.env[`MOSAIC_${mode.toUpperCase()}_MODE_URL`] || ''; - context.res.setHeader('X-Mosaic-Mode', mode); - context.res.setHeader('X-Mosaic-Content-Url', mosaicContentUrl); - return { props: { mode } }; -}; diff --git a/packages/site-middleware/src/withSearchIndex.ts b/packages/site-middleware/src/withSearchIndex.ts deleted file mode 100644 index 887c12157..000000000 --- a/packages/site-middleware/src/withSearchIndex.ts +++ /dev/null @@ -1,104 +0,0 @@ -import fs from 'fs'; -import path from 'path'; -import { GetServerSidePropsContext } from 'next'; -import type { SearchIndexSlice } from '@jpmorganchase/mosaic-store'; -import { MosaicMiddleware } from './createMiddlewareRunner.js'; -import MiddlewareError from './MiddlewareError.js'; -import { - createS3Loader, - getSnapshotFileConfig, - getSnapshotS3Config, - loadLocalFile -} from './loaders'; - -if (typeof window !== 'undefined') { - throw new Error('This file should not be loaded on the client.'); -} - -const searchDataFile = 'search-data-condensed.json'; -const searchConfigFile = 'search-config.json'; - -const getSnapshotFile = async (urlPath, targetPath) => { - const { snapshotDir } = getSnapshotFileConfig(urlPath); - const filePath = path.join(process.cwd(), snapshotDir, targetPath); - try { - await fs.promises.stat(filePath); - const rawSearchIndex = await loadLocalFile(filePath); - return JSON.parse(rawSearchIndex); - } catch { - console.warn(`Could not load data from ${urlPath}/${targetPath}`); - return false; - } -}; - -const getSnapshotS3File = async (urlPath, targetPath) => { - const { accessKeyId, bucket, region, secretAccessKey } = getSnapshotS3Config(targetPath); - const { keyExists, loadKey } = createS3Loader(region, accessKeyId, secretAccessKey); - const s3KeyExists = await keyExists(bucket, targetPath); - if (s3KeyExists) { - const rawSearchIndex = await loadKey(bucket, targetPath); - return JSON.parse(rawSearchIndex); - } else { - console.warn(`Could not load data from ${urlPath}/${targetPath}`); - return false; - } -}; - -const getFechedFile = async (mosaicUrl, targetPath) => { - const response = await fetch(`${mosaicUrl}/${targetPath}`, { - headers: { - 'Content-Type': 'application/json' - } - }); - if (response.ok) { - return await response.json(); - } else if (response.status !== 404) { - throw Error(`${response.status} - ${response.statusText}`); - } else { - console.warn(`Could not load data from ${mosaicUrl}/${targetPath}`); - return false; - } -}; - -/** - * Adds the [[`searchIndex`]] props to the page props - * @param _context - * @returns site props object - */ -export const withSearchIndex: MosaicMiddleware = async ( - context: GetServerSidePropsContext -) => { - const { res, resolvedUrl } = context; - const isSnapshotFile = res.getHeader('X-Mosaic-Mode') === 'snapshot-file'; - const isSnapshotS3 = res.getHeader('X-Mosaic-Mode') === 'snapshot-s3'; - - const matches = resolvedUrl.match(/(.*)[!/]/); - const urlPath = matches?.length ? matches[1] : ''; - - try { - let searchIndex; - let searchConfig; - if (isSnapshotFile) { - searchIndex = await getSnapshotFile(urlPath, searchDataFile); - searchConfig = await getSnapshotFile(urlPath, searchConfigFile); - } else if (isSnapshotS3) { - searchIndex = await getSnapshotS3File(urlPath, searchDataFile); - searchConfig = await getSnapshotS3File(urlPath, searchConfigFile); - } else { - const mosaicUrl = res.getHeader('X-Mosaic-Content-Url'); - searchIndex = await getFechedFile(mosaicUrl, searchDataFile); - searchConfig = await getFechedFile(mosaicUrl, searchConfigFile); - } - if (searchIndex && searchConfig) { - return { props: { searchConfig, searchIndex } }; - } - return { props: {} }; - } catch (error) { - console.error(error); - let errorMessage = `Could not load any search index for ${resolvedUrl}`; - throw new MiddlewareError(500, resolvedUrl, [errorMessage], { - show404: false, - show500: true - }); - } -}; diff --git a/packages/site-middleware/src/withSession.ts b/packages/site-middleware/src/withSession.ts deleted file mode 100644 index a738d5656..000000000 --- a/packages/site-middleware/src/withSession.ts +++ /dev/null @@ -1,56 +0,0 @@ -import { type NextAuthOptions, getServerSession } from 'next-auth'; -import type { Session } from '@jpmorganchase/mosaic-types'; -import { MosaicMiddleware } from './createMiddlewareRunner.js'; -import MiddlewareError from './MiddlewareError.js'; - -if (typeof window !== 'undefined') { - throw new Error('This file should not be loaded on the client.'); -} - -/** - * [[`SessionProps`]] specifies session object containing user profile of logged in user - */ -export interface SessionProps { - session?: Session; -} - -/** - * [[`SessionOptions`]] specifies a configuration object for the withSession middleware - */ -export interface SessionOptions { - /** is login required for the environment */ - loginRequired: boolean; - authOptions: NextAuthOptions; -} - -/** - * Adds the [[`Session`]] object to the page props - * @param context - * @param options - */ -export const withSession: MosaicMiddleware, SessionOptions> = async ( - context, - options -) => { - if (process.env.NEXT_PUBLIC_ENABLE_LOGIN !== 'true') { - return {}; - } - - if (!options?.authOptions) { - const errorMessage = '`authOptions` must be provided.'; - throw new MiddlewareError(500, context.resolvedUrl, [errorMessage], { - show500: true - }); - } - - const session = await getServerSession(context.req, context.res, options.authOptions); - - return { - props: { - session: { - ...session, - isLoggedIn: session !== null - } - } - }; -}; diff --git a/packages/site-middleware/src/withSharedConfig.ts b/packages/site-middleware/src/withSharedConfig.ts deleted file mode 100644 index e84724501..000000000 --- a/packages/site-middleware/src/withSharedConfig.ts +++ /dev/null @@ -1,82 +0,0 @@ -import fs from 'fs'; -import path from 'path'; -import { GetServerSidePropsContext } from 'next'; -import type { SharedConfig, SharedConfigSlice } from '@jpmorganchase/mosaic-store'; -import { MosaicMiddleware } from './createMiddlewareRunner.js'; -import MiddlewareError from './MiddlewareError.js'; -import { - createS3Loader, - getSnapshotFileConfig, - getSnapshotS3Config, - loadLocalFile -} from './loaders'; - -if (typeof window !== 'undefined') { - throw new Error('This file should not be loaded on the client.'); -} - -/** - * Adds the [[`sharedConfig`]] props to the page props - * @param _context - * @param _params - */ -export const withSharedConfig: MosaicMiddleware = async ( - context: GetServerSidePropsContext -) => { - const { resolvedUrl, res } = context; - const isSnapshotFile = res.getHeader('X-Mosaic-Mode') === 'snapshot-file'; - const isSnapshotS3 = res.getHeader('X-Mosaic-Mode') === 'snapshot-s3'; - - const matches = resolvedUrl.match(/(.*)[!/]/); - const urlPath = matches?.length ? matches[1] : ''; - try { - let sharedConfig; - if (isSnapshotFile) { - const { snapshotDir } = getSnapshotFileConfig(urlPath); - const filePath = path.join(process.cwd(), snapshotDir, urlPath, 'shared-config.json'); - let fileExists = false; - try { - await fs.promises.stat(filePath); - fileExists = true; - } catch {} - if (fileExists) { - const rawSharedConfig = await loadLocalFile(filePath); - sharedConfig = JSON.parse(rawSharedConfig); - } - } else if (isSnapshotS3) { - const s3Key = `${urlPath}/shared-config.json`.replace(/^\//, ''); - const { accessKeyId, bucket, region, secretAccessKey } = getSnapshotS3Config(s3Key); - const { keyExists, loadKey } = createS3Loader(region, accessKeyId, secretAccessKey); - - const s3KeyExists = await keyExists(bucket, s3Key); - if (s3KeyExists) { - const rawSharedConfig = await loadKey(bucket, s3Key); - sharedConfig = JSON.parse(rawSharedConfig); - } - } else { - const mosaicUrl = res.getHeader('X-Mosaic-Content-Url'); - const response = await fetch(`${mosaicUrl}${urlPath}/shared-config.json`, { - headers: { - 'Content-Type': 'application/json' - } - }); - if (response.ok) { - sharedConfig = await response.json(); - } else if (response.status !== 404) { - throw Error(`${response.status} - ${response.statusText}`); - } - } - if (sharedConfig) { - const { config } = sharedConfig as { config: SharedConfig }; - return { props: { sharedConfig: config } }; - } - return { props: {} }; - } catch (error) { - console.error(error); - let errorMessage = `Could not load any shared config for ${resolvedUrl}`; - throw new MiddlewareError(500, resolvedUrl, [errorMessage], { - show404: false, - show500: true - }); - } -}; diff --git a/packages/site-preset-styles/package.json b/packages/site-preset-styles/package.json index b2ef24916..82cc5b6f5 100644 --- a/packages/site-preset-styles/package.json +++ b/packages/site-preset-styles/package.json @@ -16,27 +16,25 @@ }, "scripts": { "build": "npm-run-all --parallel build:*", - "build:bundle": "node ./scripts/bundle.js", + "build:bundle": "node ./scripts/bundle.mjs", "clean": "npx del-cli 'dist/**' && find . -type d -empty -delete", "lint": "eslint --ignore-pattern \"**/__tests__/**\"", - "dev": "node ./scripts/bundle.js watch" + "dev": "node ./scripts/bundle.mjs watch" }, "devDependencies": { "del-cli": "^4.0.1", - "esbuild": "0.14.35", - "esbuild-node-externals": "^1.0.2" + "esbuild": "0.19.11", + "esbuild-node-externals": "^1.12.0" }, "dependencies": { - "@salt-ds/theme": "^1.9.0", - "@salt-ds/icons": "^1.7.0", + "@salt-ds/theme": "^1.10.1", + "@salt-ds/icons": "^1.9.1", "@jpmorganchase/mosaic-components": "0.1.0-beta.62", - "@jpmorganchase/mosaic-labs-components": "0.1.0-beta.62", "@jpmorganchase/mosaic-open-api-component": "0.1.0-beta.62", "@jpmorganchase/mosaic-content-editor-plugin": "0.1.0-beta.62", "@jpmorganchase/mosaic-site-components": "0.1.0-beta.62", "@jpmorganchase/mosaic-layouts": "0.1.0-beta.62", - "@jpmorganchase/mosaic-theme": "0.1.0-beta.62", - "prismjs": "^1.23.0" + "@jpmorganchase/mosaic-theme": "0.1.0-beta.62" }, "peerDependencies": {} } diff --git a/packages/site-preset-styles/scripts/bundle.js b/packages/site-preset-styles/scripts/bundle.js deleted file mode 100644 index 59e824865..000000000 --- a/packages/site-preset-styles/scripts/bundle.js +++ /dev/null @@ -1,44 +0,0 @@ -const esbuild = require('esbuild'); - -const args = process.argv.slice(2); -const watchEnabled = args[0] === 'watch'; -const packageName = process.env.npm_package_name; - -const watchConfig = watchEnabled - ? { - onRebuild(error, result) { - if (error) console.error(`watch build failed for ${packageName}:`, error); - else console.log(`watch build succeeded for ${packageName}:`, result); - } - } - : false; - -esbuild - .build({ - entryPoints: ['src/index.js'], - bundle: true, - loader: { - '.png': 'dataurl', - '.woff': 'dataurl', - '.woff2': 'dataurl', - '.eot': 'dataurl', - '.ttf': 'dataurl', - '.svg': 'dataurl' - }, - outdir: './dist', - watch: watchConfig - }) - .catch(e => { - if (e.errors && e.errors.length > 0) { - console.group(`!!!!!!! ${packageName} build errors !!!!!!!`); - console.error(e.errors); - console.groupEnd(); - } - - if (e.warnings && e.warnings.length > 0) { - console.group(`!!!!!!! ${packageName} build warnings !!!!!!!`); - console.error(e.warnings); - console.groupEnd(); - } - return process.exit(1); - }); diff --git a/packages/site-preset-styles/scripts/bundle.mjs b/packages/site-preset-styles/scripts/bundle.mjs new file mode 100644 index 000000000..ad4413f92 --- /dev/null +++ b/packages/site-preset-styles/scripts/bundle.mjs @@ -0,0 +1,54 @@ +import esbuild from 'esbuild'; + +const args = process.argv.slice(2); +const watchEnabled = args[0] === 'watch'; +const packageName = process.env.npm_package_name; + +try { + const context = await esbuild.context({ + entryPoints: ['src/index.js'], + bundle: true, + loader: { + '.png': 'dataurl', + '.woff': 'dataurl', + '.woff2': 'dataurl', + '.eot': 'dataurl', + '.ttf': 'dataurl', + '.svg': 'dataurl' + }, + outdir: './dist', + plugins: [ + { + name: 'on-end', + setup(build) { + build.onEnd(({ errors = [] }) => { + if (errors.length) { + console.error(`build failed for ${packageName}:`, errors); + } else { + console.log(`build succeeded for ${packageName}:`); + } + }); + } + } + ] + }); + await context.rebuild(); + if (watchEnabled) { + await context.watch(); + } + await context.serve(); + context.dispose(); +} catch (e) { + if (e.errors && e.errors.length > 0) { + console.group(`!!!!!!! ${packageName} build errors !!!!!!!`); + console.error(e.errors); + console.groupEnd(); + } + + if (e.warnings && e.warnings.length > 0) { + console.group(`!!!!!!! ${packageName} build warnings !!!!!!!`); + console.error(e.warnings); + console.groupEnd(); + } + process.exit(1); +} diff --git a/packages/site-preset-styles/src/index.js b/packages/site-preset-styles/src/index.js index 6aea1782a..4fd10bf84 100644 --- a/packages/site-preset-styles/src/index.js +++ b/packages/site-preset-styles/src/index.js @@ -1,11 +1,13 @@ import '@salt-ds/theme/css/global.css'; import '@salt-ds/theme/css/theme.css'; +import '@salt-ds/icons/css/salt-icon.css'; +import '@salt-ds/core/css/salt-core.css'; +import '@salt-ds/lab/css/salt-lab.css'; import '@jpmorganchase/mosaic-theme/index.css'; import '@jpmorganchase/mosaic-theme/baseline.css'; -import '@jpmorganchase/mosaic-theme/salt.css'; import '@jpmorganchase/mosaic-layouts/index.css'; import '@jpmorganchase/mosaic-site-components/index.css'; import '@jpmorganchase/mosaic-components/index.css'; -import '@jpmorganchase/mosaic-labs-components/index.css'; +import '@jpmorganchase/mosaic-mdx-components/index.css'; import '@jpmorganchase/mosaic-content-editor-plugin/index.css'; -import 'prismjs/themes/prism.css'; +import '@jpmorganchase/mosaic-open-api-component/index.css'; diff --git a/packages/site/.env.local b/packages/site/.env.local index 31464e4a3..bfcf4e264 100644 --- a/packages/site/.env.local +++ b/packages/site/.env.local @@ -4,6 +4,5 @@ OPTIMIZE_IMAGES=false NEXTAUTH_URL=http://localhost:3000 NODE_ENV=development MOSAIC_ENABLE_SOURCE_PUSH=true -NEXTAUTH_URL=http://localhost:3000/ NEXT_PUBLIC_MOSAIC_IBCE_PREVIEW_URL=/api/content/preview NEXT_PUBLIC_MOSAIC_WORKFLOWS_URL=ws://localhost:8080/workflows \ No newline at end of file diff --git a/packages/site/.eslintrc.js b/packages/site/.eslintrc.js index 38c0c80d2..77b1f75f2 100644 --- a/packages/site/.eslintrc.js +++ b/packages/site/.eslintrc.js @@ -1,8 +1,9 @@ module.exports = { + extends: ['eslint:recommended', 'next'], + ignorePatterns: ['**/*.test.*'], overrides: [ { files: ['./src/**/*'], - extends: ['next'], rules: { 'import/no-extraneous-dependencies': ['off'], 'import/no-duplicates': ['off'], diff --git a/packages/site/mosaic.config.mjs b/packages/site/mosaic.config.mjs index 043fd125a..0ddb55e69 100644 --- a/packages/site/mosaic.config.mjs +++ b/packages/site/mosaic.config.mjs @@ -21,7 +21,12 @@ const siteConfig = { priority: -1, options: { outputDir: './public', - assets: ['sitemap.xml', 'search-data.json'] + assets: [ + 'search-config.json', + 'search-data.json', + 'search-data-condensed.json', + 'sitemap.xml' + ] } } ] diff --git a/packages/site/next-env.d.ts b/packages/site/next-env.d.ts index 4f11a03dc..fd36f9494 100644 --- a/packages/site/next-env.d.ts +++ b/packages/site/next-env.d.ts @@ -1,5 +1,6 @@ /// /// +/// // NOTE: This file should not be edited // see https://nextjs.org/docs/basic-features/typescript for more information. diff --git a/packages/site/next.config.js b/packages/site/next.config.js index a38dc2ec1..6f3469083 100755 --- a/packages/site/next.config.js +++ b/packages/site/next.config.js @@ -1,31 +1,15 @@ -const webpack = require('webpack'); +const withBundleAnalyzer = require('@next/bundle-analyzer')({ + enabled: process.env.ANALYZE === 'true' +}); -module.exports = { +const nextConfig = { + experimental: { + mdxRs: true, + serverComponentsExternalPackages: ['@daviereid/next-mdx-remote'] + }, reactStrictMode: true, - output: 'standalone', + output: process.env.GENERATE_STATIC_PARAMS_URL ? 'export' : 'standalone', swcMinify: true, - transpilePackages: [ - '@jpmorganchase/mosaic-components', - '@jpmorganchase/mosaic-content-editor-plugin', - '@jpmorganchase/mosaic-labs-components', - '@jpmorganchase/mosaic-layouts', - '@jpmorganchase/mosaic-open-api-component', - '@jpmorganchase/mosaic-site-components', - '@jpmorganchase/mosaic-site-middleware', - '@jpmorganchase/mosaic-theme', - '@jpmorganchase/mosaic-store' - ], - rewrites() { - return { - // These rewrites are checked after headers/redirects - // and before all files including _next/public files which - // allows overriding page files - beforeFiles: [{ source: '/favicon.ico', destination: '/img/favicon.png' }], - // These rewrites are checked after pages/public files - // are checked but before dynamic routes - afterFiles: [] - }; - }, images: { domains: [ /** Insert the domains where you will load images from */ @@ -33,37 +17,16 @@ module.exports = { ] }, webpack(config) { - // Swaps out Buble for a smaller version that removes the latest Regex spec features. - // See https://github.com/FormidableLabs/react-live#what-bundle-size-can-i-expect - config.plugins.push( - new webpack.NormalModuleReplacementPlugin(/^buble$/, require.resolve('@philpl/buble')) - ); // Required by MDX-JS if (config.resolve.fallback) { config.resolve.fallback.fs = false; } else { config.resolve.fallback = { fs: false }; } + config.experiments.topLevelAwait = true; return config; }, - env: {}, - async redirects() { - return [ - { - source: '/', - destination: '/mosaic/index', - permanent: true - }, - { - source: '/mosaic', - destination: '/mosaic/index', - permanent: true - }, - { - source: '/local', - destination: '/local/index', - permanent: true - } - ]; - } + env: {} }; + +module.exports = withBundleAnalyzer(nextConfig); diff --git a/packages/site/package.json b/packages/site/package.json index 08aaaaef0..9af85253a 100644 --- a/packages/site/package.json +++ b/packages/site/package.json @@ -13,27 +13,31 @@ "types": "dist/index.d.ts", "style": "dist/index.css", "scripts": { + "analyze": "ANALYZE=true yarn build", "clean": "rm -fr public/.tmp .next", "build": "next build", + "export:static": "yarn mosaic export:static", + "build:static": "yarn cross-env GENERATE_STATIC_PARAMS_URL=\"http://localhost:8080/search-data-condensed.json\" concurrently --kill-others \"next build\"", "dev": "next dev", "start": "next start", "debug": "yarn mosaic serve -c ./mosaic.config.mjs -p 8080", - "deploy": "yarn mosaic deploy --out snapshots --name latest --config mosaic.config.mjs", + "deploy": "yarn mosaic deploy --out out --name latest --config mosaic.config.mjs", "docker:build": "docker build . --tag mosaic-site:latest", "docker:start": "docker run -it --rm --ipc=host -p 3000:3000 --network mosaic-net --name mosaic-site mosaic-site:latest", "e2e": "npx playwright test", "e2e:codegen": "npx playwright codegen localhost:3000", - "gen:snapshot": "yarn mosaic build --out snapshots --name latest --config mosaic.config.mjs", - "serve:snapshot:file": "yarn cross-env MOSAIC_MODE=\"snapshot-file\" concurrently --kill-others \"yarn dev\"", - "serve:snapshot:s3": "yarn cross-env MOSAIC_MODE=\"snapshot-s3\" concurrently --kill-others \"yarn dev\"", + "serve:fs": "yarn mosaic serve -c ./mosaic.config.mjs -p 8080", + "serve:static": "yarn mosaic serve:static -o ./out -p 3000", "serve": "concurrently --kill-others \"yarn dev\" \"yarn mosaic serve -c ./mosaic.config.mjs\" -p 8080" }, "dependencies": { + "@jpmorganchase/mosaic-loaders": "^0.1.0-beta.62", "@jpmorganchase/mosaic-cli": "^0.1.0-beta.62", "@jpmorganchase/mosaic-components": "^0.1.0-beta.62", "@jpmorganchase/mosaic-content-editor-plugin": "^0.1.0-beta.62", "@jpmorganchase/mosaic-layouts": "^0.1.0-beta.62", "@jpmorganchase/mosaic-site-components": "^0.1.0-beta.62", + "@jpmorganchase/mosaic-site-components-next": "^0.1.0-beta.62", "@jpmorganchase/mosaic-site-preset-styles": "^0.1.0-beta.62", "@jpmorganchase/mosaic-source-git-repo": "^0.1.0-beta.62", "@jpmorganchase/mosaic-source-local-folder": "^0.1.0-beta.62", @@ -41,18 +45,20 @@ "@jpmorganchase/mosaic-store": "^0.1.0-beta.62", "@jpmorganchase/mosaic-theme": "^0.1.0-beta.62", "@philpl/buble": "^0.19.7", - "@types/react": "^18.0.26", - "next": "^13.4.1", + "next": "^14.0.0", "next-auth": "^4.24.5" }, "devDependencies": { - "@next/eslint-plugin-next": "12.3.1", + "@next/bundle-analyzer": "14.0.0", + "@next/eslint-plugin-next": "^14.0.0", + "@next/mdx": "^14.0.0", "@playwright/test": "^1.33.0", + "@types/react": "^18.2.46", "@types/node": "^16.0.0", "concurrently": "^7.1.0", "cross-env": "^7.0.3", "dotenv-load": "^2.0.1", - "eslint-config-next": "^12.3.1", + "eslint-config-next": "^14.0.0", "react": "^18.2.0", "react-dom": "^18.2.0" } diff --git a/packages/site/public/img/favicon.png b/packages/site/public/img/logo.png similarity index 100% rename from packages/site/public/img/favicon.png rename to packages/site/public/img/logo.png diff --git a/packages/site/snapshots/latest/search-config.json b/packages/site/public/search-config.json similarity index 100% rename from packages/site/snapshots/latest/search-config.json rename to packages/site/public/search-config.json diff --git a/packages/site/snapshots/latest/search-data-condensed.json b/packages/site/public/search-data-condensed.json similarity index 63% rename from packages/site/snapshots/latest/search-data-condensed.json rename to packages/site/public/search-data-condensed.json index c2d110daa..b1f937794 100644 --- a/packages/site/snapshots/latest/search-data-condensed.json +++ b/packages/site/public/search-data-condensed.json @@ -1 +1 @@ -[{"title":"Mosaic","route":"/mosaic/index"},{"title":"Aliases","route":"/mosaic/author/aliases"},{"title":"Fragments","route":"/mosaic/author/fragments"},{"title":"Frontmatter","route":"/mosaic/author/frontmatter"},{"title":"Author","route":"/mosaic/author/index"},{"title":"Markdown Syntax","route":"/mosaic/author/markdown-syntax"},{"title":"Refs","route":"/mosaic/author/refs"},{"title":"Sidebar Configuration","route":"/mosaic/author/sidebars"},{"title":"Tags","route":"/mosaic/author/tags"},{"title":"UI Components","route":"/mosaic/author/ui-components"},{"title":"Configure","route":"/mosaic/configure/index"},{"title":"Content Fragment","route":"/mosaic/fragments/content-fragment"},{"title":"Fragments","route":"/mosaic/fragments/index"},{"title":"Tile A","route":"/mosaic/fragments/tile-a"},{"title":"Tile B","route":"/mosaic/fragments/tile-b"},{"title":"Create a Site","route":"/mosaic/getting-started/create-a-site"},{"title":"Getting Started","route":"/mosaic/getting-started/index"},{"title":"Publish a site to AWS","route":"/mosaic/getting-started/publish-site-to-aws"},{"title":"Publish","route":"/mosaic/publish/index"},{"title":"Publish a site to AWS","route":"/mosaic/publish/publish-site-to-aws"},{"title":"Publish a site to Vercel","route":"/mosaic/publish/publish-site-to-vercel"},{"title":"Test","route":"/mosaic/test/index"},{"title":"Admin","route":"/mosaic/configure/admin/index"},{"title":"Detail Highlight","route":"/mosaic/configure/layouts/detail-highlight"},{"title":"Detail Overview","route":"/mosaic/configure/layouts/detail-overview"},{"title":"Detail Technical","route":"/mosaic/configure/layouts/detail-technical"},{"title":"Layouts","route":"/mosaic/configure/layouts/index"},{"title":"Landing Layout","route":"/mosaic/configure/layouts/landing"},{"title":"Product Discover Layout","route":"/mosaic/configure/layouts/product-discover"},{"title":"Product Preview Layout","route":"/mosaic/configure/layouts/product-preview"},{"title":"Active mode","route":"/mosaic/configure/modes/active"},{"title":"Modes of operation","route":"/mosaic/configure/modes/index"},{"title":"Snapshot file mode","route":"/mosaic/configure/modes/snapshot-file"},{"title":"Snapshot AWS/S3 mode","route":"/mosaic/configure/modes/snapshot-s3"},{"title":"$AliasPlugin","route":"/mosaic/configure/plugins/alias-plugin"},{"title":"BreadcrumbsPlugin","route":"/mosaic/configure/plugins/breadcrumbs-plugin"},{"title":"BrokenLinksPlugin","route":"/mosaic/configure/plugins/broken-links-plugin"},{"title":"$CodeModPlugin","route":"/mosaic/configure/plugins/codemod-plugin"},{"title":"Plugins","route":"/mosaic/configure/plugins/index"},{"title":"LazyPagePlugin","route":"/mosaic/configure/plugins/lazy-page-plugin"},{"title":"PagesWithoutFileExtPlugin","route":"/mosaic/configure/plugins/pages-wthout-extensions-plugin"},{"title":"PublicAssetsPlugin","route":"/mosaic/configure/plugins/public-assets-plugin"},{"title":"ReadingTimePlugin","route":"/mosaic/configure/plugins/reading-time-plugin"},{"title":"$RefPlugin","route":"/mosaic/configure/plugins/ref-plugin"},{"title":"SearchIndexPlugin","route":"/mosaic/configure/plugins/search-index-plugin"},{"title":"SharedConfigPlugin","route":"/mosaic/configure/plugins/shared-config-plugin"},{"title":"SidebarPlugin","route":"/mosaic/configure/plugins/sidebar-plugin"},{"title":"SiteMapPlugin","route":"/mosaic/configure/plugins/site-map-plugin"},{"title":"$TagPlugin","route":"/mosaic/configure/plugins/tag-plugin"},{"title":"TableOfContentsPlugin","route":"/mosaic/configure/plugins/toc-plugin"},{"title":"Git Repo Source","route":"/mosaic/configure/sources/git-repo-source"},{"title":"HTTP Source","route":"/mosaic/configure/sources/http-source"},{"title":"Sources","route":"/mosaic/configure/sources/index"},{"title":"Local Folder Source","route":"/mosaic/configure/sources/local-folder-source"},{"title":"Source Schedules","route":"/mosaic/configure/sources/schedules"},{"title":"Custom Components","route":"/mosaic/configure/theme/custom-components"},{"title":"Custom CSS","route":"/mosaic/configure/theme/custom-css"},{"title":"Theming Your Site","route":"/mosaic/configure/theme/index"},{"title":"Aliases Test","route":"/mosaic/test/aliases/index"},{"title":"Detail Highlight Test Page","route":"/mosaic/test/layouts/detail-highlight"},{"title":"Detail Overview Test Page","route":"/mosaic/test/layouts/detail-overview"},{"title":"Detail Technical Test Page","route":"/mosaic/test/layouts/detail-technical"},{"title":"Edit Layout","route":"/mosaic/test/layouts/edit"},{"title":"Full Width Layout","route":"/mosaic/test/layouts/full-width"},{"title":"Layouts","route":"/mosaic/test/layouts/index"},{"title":"Landing Layout Test Page","route":"/mosaic/test/layouts/landing"},{"title":"Newsletter Test Page","route":"/mosaic/test/layouts/newsletter"},{"title":"Product Discover Test Page","route":"/mosaic/test/layouts/product-discover"},{"title":"Product Preview Test Page","route":"/mosaic/test/layouts/product-preview"},{"title":"Refs Data","route":"/mosaic/test/refs/data"},{"title":"Refs Test","route":"/mosaic/test/refs/index"},{"title":"Tags Test","route":"/mosaic/test/tags/index"},{"title":"$afterSource","route":"/mosaic/configure/plugins/lifecycle/after-source"},{"title":"afterUpdate","route":"/mosaic/configure/plugins/lifecycle/after-update"},{"title":"$beforeSend","route":"/mosaic/configure/plugins/lifecycle/before-send"},{"title":"Lifecycle Events","route":"/mosaic/configure/plugins/lifecycle/index"},{"title":"shouldClearCache","route":"/mosaic/configure/plugins/lifecycle/should-clear-cache"},{"title":"shouldUpdateNamespaceSources","route":"/mosaic/configure/plugins/lifecycle/should-update-namespace-sources"},{"title":"Product A","route":"/mosaic/products/producta"},{"title":"Product B","route":"/mosaic/products/productb"}] \ No newline at end of file +[{"title":"Mosaic","route":"/mosaic/index"},{"title":"Aliases","route":"/mosaic/author/aliases"},{"title":"Fragments","route":"/mosaic/author/fragments"},{"title":"Frontmatter","route":"/mosaic/author/frontmatter"},{"title":"Author","route":"/mosaic/author/index"},{"title":"Markdown Syntax","route":"/mosaic/author/markdown-syntax"},{"title":"Refs","route":"/mosaic/author/refs"},{"title":"Sidebar Configuration","route":"/mosaic/author/sidebars"},{"title":"Tags","route":"/mosaic/author/tags"},{"title":"UI Components","route":"/mosaic/author/ui-components"},{"title":"Configure","route":"/mosaic/configure/index"},{"title":"Content Fragment","route":"/mosaic/fragments/content-fragment"},{"title":"Fragments","route":"/mosaic/fragments/index"},{"title":"Tile A","route":"/mosaic/fragments/tile-a"},{"title":"Tile B","route":"/mosaic/fragments/tile-b"},{"title":"Create a Site","route":"/mosaic/getting-started/create-a-site"},{"title":"Getting Started","route":"/mosaic/getting-started/index"},{"title":"Publish a site to AWS","route":"/mosaic/getting-started/publish-site-to-aws"},{"title":"Publish","route":"/mosaic/publish/index"},{"title":"Publish a site to AWS","route":"/mosaic/publish/publish-site-to-aws"},{"title":"Publish a site to Vercel","route":"/mosaic/publish/publish-site-to-vercel"},{"title":"Test","route":"/mosaic/test/index"},{"title":"Admin","route":"/mosaic/configure/admin/index"},{"title":"Detail Highlight","route":"/mosaic/configure/layouts/detail-highlight"},{"title":"Detail Overview","route":"/mosaic/configure/layouts/detail-overview"},{"title":"Detail Technical","route":"/mosaic/configure/layouts/detail-technical"},{"title":"Layouts","route":"/mosaic/configure/layouts/index"},{"title":"Landing Layout","route":"/mosaic/configure/layouts/landing"},{"title":"Product Discover Layout","route":"/mosaic/configure/layouts/product-discover"},{"title":"Product Preview Layout","route":"/mosaic/configure/layouts/product-preview"},{"title":"Active mode","route":"/mosaic/configure/modes/active"},{"title":"Modes of operation","route":"/mosaic/configure/modes/index"},{"title":"Snapshot file mode","route":"/mosaic/configure/modes/snapshot-file"},{"title":"Snapshot AWS/S3 mode","route":"/mosaic/configure/modes/snapshot-s3"},{"title":"$AliasPlugin","route":"/mosaic/configure/plugins/alias-plugin"},{"title":"BreadcrumbsPlugin","route":"/mosaic/configure/plugins/breadcrumbs-plugin"},{"title":"BrokenLinksPlugin","route":"/mosaic/configure/plugins/broken-links-plugin"},{"title":"$CodeModPlugin","route":"/mosaic/configure/plugins/codemod-plugin"},{"title":"Plugins","route":"/mosaic/configure/plugins/index"},{"title":"LazyPagePlugin","route":"/mosaic/configure/plugins/lazy-page-plugin"},{"title":"PagesWithoutFileExtPlugin","route":"/mosaic/configure/plugins/pages-wthout-extensions-plugin"},{"title":"PublicAssetsPlugin","route":"/mosaic/configure/plugins/public-assets-plugin"},{"title":"ReadingTimePlugin","route":"/mosaic/configure/plugins/reading-time-plugin"},{"title":"$RefPlugin","route":"/mosaic/configure/plugins/ref-plugin"},{"title":"SearchIndexPlugin","route":"/mosaic/configure/plugins/search-index-plugin"},{"title":"SharedConfigPlugin","route":"/mosaic/configure/plugins/shared-config-plugin"},{"title":"SidebarPlugin","route":"/mosaic/configure/plugins/sidebar-plugin"},{"title":"SiteMapPlugin","route":"/mosaic/configure/plugins/site-map-plugin"},{"title":"$TagPlugin","route":"/mosaic/configure/plugins/tag-plugin"},{"title":"TableOfContentsPlugin","route":"/mosaic/configure/plugins/toc-plugin"},{"title":"Git Repo Source","route":"/mosaic/configure/sources/git-repo-source"},{"title":"HTTP Source","route":"/mosaic/configure/sources/http-source"},{"title":"Sources","route":"/mosaic/configure/sources/index"},{"title":"Local Folder Source","route":"/mosaic/configure/sources/local-folder-source"},{"title":"Source Schedules","route":"/mosaic/configure/sources/schedules"},{"title":"Figma Source","route":"/mosaic/configure/sources/storybook-figma"},{"title":"Readme Source","route":"/mosaic/configure/sources/storybook-readme"},{"title":"Storybook Source","route":"/mosaic/configure/sources/storybook-source"},{"title":"Custom Components","route":"/mosaic/configure/theme/custom-components"},{"title":"Custom CSS","route":"/mosaic/configure/theme/custom-css"},{"title":"Theming Your Site","route":"/mosaic/configure/theme/index"},{"title":"Aliases Test","route":"/mosaic/test/aliases/index"},{"title":"Detail Highlight Test Page","route":"/mosaic/test/layouts/detail-highlight"},{"title":"Detail Overview Test Page","route":"/mosaic/test/layouts/detail-overview"},{"title":"Detail Technical Test Page","route":"/mosaic/test/layouts/detail-technical"},{"title":"Edit Layout","route":"/mosaic/test/layouts/edit"},{"title":"Full Width Layout","route":"/mosaic/test/layouts/full-width"},{"title":"Layouts","route":"/mosaic/test/layouts/index"},{"title":"Landing Layout Test Page","route":"/mosaic/test/layouts/landing"},{"title":"Newsletter Test Page","route":"/mosaic/test/layouts/newsletter"},{"title":"Product Discover Test Page","route":"/mosaic/test/layouts/product-discover"},{"title":"Product Preview Test Page","route":"/mosaic/test/layouts/product-preview"},{"title":"Open API component","route":"/mosaic/test/open-api/index"},{"title":"Refs Data","route":"/mosaic/test/refs/data"},{"title":"Refs Test","route":"/mosaic/test/refs/index"},{"title":"Tags Test","route":"/mosaic/test/tags/index"},{"title":"$afterSource","route":"/mosaic/configure/plugins/lifecycle/after-source"},{"title":"afterUpdate","route":"/mosaic/configure/plugins/lifecycle/after-update"},{"title":"$beforeSend","route":"/mosaic/configure/plugins/lifecycle/before-send"},{"title":"Lifecycle Events","route":"/mosaic/configure/plugins/lifecycle/index"},{"title":"shouldClearCache","route":"/mosaic/configure/plugins/lifecycle/should-clear-cache"},{"title":"shouldUpdateNamespaceSources","route":"/mosaic/configure/plugins/lifecycle/should-update-namespace-sources"},{"title":"Product A","route":"/mosaic/products/producta"},{"title":"Product B","route":"/mosaic/products/productb"}] \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/another/example b/packages/site/snapshots/latest/mosaic/another/example deleted file mode 120000 index 3f7f0cfae..000000000 --- a/packages/site/snapshots/latest/mosaic/another/example +++ /dev/null @@ -1 +0,0 @@ -../test/aliases/index.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/author/aliases b/packages/site/snapshots/latest/mosaic/author/aliases deleted file mode 120000 index c34f928a6..000000000 --- a/packages/site/snapshots/latest/mosaic/author/aliases +++ /dev/null @@ -1 +0,0 @@ -aliases.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/author/aliases.mdx b/packages/site/snapshots/latest/mosaic/author/aliases.mdx deleted file mode 100644 index ff1befb87..000000000 --- a/packages/site/snapshots/latest/mosaic/author/aliases.mdx +++ /dev/null @@ -1,154 +0,0 @@ ---- -title: Aliases -layout: DetailTechnical -sidebar: - priority: 3 -sharedConfig: - header: - homeLink: /mosaic/index - title: Mosaic (BETA) - logo: /img/favicon.png - searchNamespace: mosaic - menu: - - title: Getting Started - link: /mosaic/getting-started/index - - title: Configure - link: /mosaic/configure/index - - title: Author - link: /mosaic/author/index - - title: Publish - link: /mosaic/publish/index - footer: - description: Coming soon - title: Mosaic BETA - href: /mosaic -lastModified: 1699966447325 -fullPath: /mosaic/author/aliases.mdx -route: /mosaic/author/aliases -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Author - path: /mosaic/author/index - id: /mosaic/author/index.mdx - - label: Aliases - path: /mosaic/author/aliases - id: /mosaic/author/aliases.mdx -readingTime: - text: 1 min read - minutes: 0.525 - time: 31500 - words: 105 -tableOfContents: - - level: 2 - id: use-cases - text: Use Cases - - level: 2 - id: example - text: Example -navigation: - prev: - title: Frontmatter - route: /mosaic/author/frontmatter - next: - title: Refs - route: /mosaic/author/refs -sidebarData: - - id: /mosaic/author/index - fullPath: /mosaic/author/index.mdx - name: Author - priority: 3 - data: - level: 2 - link: /mosaic/author/index - childNodes: [] - - id: /mosaic/author/markdown-syntax - fullPath: /mosaic/author/markdown-syntax.mdx - name: Markdown Syntax - priority: 5 - data: - level: 2 - link: /mosaic/author/markdown-syntax - childNodes: [] - - id: /mosaic/author/frontmatter - fullPath: /mosaic/author/frontmatter.mdx - name: Frontmatter - priority: 4 - data: - level: 2 - link: /mosaic/author/frontmatter - childNodes: [] - - id: /mosaic/author/aliases - fullPath: /mosaic/author/aliases.mdx - name: Aliases - priority: 3 - data: - level: 2 - link: /mosaic/author/aliases - childNodes: [] - - id: /mosaic/author/refs - fullPath: /mosaic/author/refs.mdx - name: Refs - priority: 3 - data: - level: 2 - link: /mosaic/author/refs - childNodes: [] - - id: /mosaic/author/tags - fullPath: /mosaic/author/tags.mdx - name: Tags - priority: 3 - data: - level: 2 - link: /mosaic/author/tags - childNodes: [] - - id: /mosaic/author/fragments - fullPath: /mosaic/author/fragments.mdx - name: Fragments - priority: 2 - data: - level: 2 - link: /mosaic/author/fragments - childNodes: [] - - id: /mosaic/author/ui-components - fullPath: /mosaic/author/ui-components.mdx - name: UI Components - priority: 2 - data: - level: 2 - link: /mosaic/author/ui-components - childNodes: [] - - id: /mosaic/author/sidebars - fullPath: /mosaic/author/sidebars.mdx - name: Sidebar Configuration - data: - level: 2 - link: /mosaic/author/sidebars - childNodes: [] ---- -# {meta.title} - -Aliases are virtual 'symlinks' of pages, allowing one page to take on one or more other routes. -This is not the same as copying the page, it is a primitive filesystem link which is resolved by Mosaic. - -## Use Cases - -Aliases are great for linking to an old route if you've moved a page to a new place. -They can also be used to create short hand links to pages or to 'clone' a copy of a page into -another section of the site where it may be relevant. - -## Example - -This is the frontmatter for this page: - -``` ---- -title: Aliases -layout: DetailTechnical -aliases: - - /mosaic/example/aliases ---- -``` - -Try accessing this page from [/mosaic/example/aliases](/mosaic/example/aliases) diff --git a/packages/site/snapshots/latest/mosaic/author/fragments b/packages/site/snapshots/latest/mosaic/author/fragments deleted file mode 120000 index 468b49eff..000000000 --- a/packages/site/snapshots/latest/mosaic/author/fragments +++ /dev/null @@ -1 +0,0 @@ -fragments.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/author/fragments.mdx b/packages/site/snapshots/latest/mosaic/author/fragments.mdx deleted file mode 100644 index c1cebd3a0..000000000 --- a/packages/site/snapshots/latest/mosaic/author/fragments.mdx +++ /dev/null @@ -1,200 +0,0 @@ ---- -title: Fragments -layout: DetailTechnical -sidebar: - priority: 2 -lastModified: 1699883563187 -fullPath: /mosaic/author/fragments.mdx -route: /mosaic/author/fragments -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Author - path: /mosaic/author/index - id: /mosaic/author/index.mdx - - label: Fragments - path: /mosaic/author/fragments - id: /mosaic/author/fragments.mdx -readingTime: - text: 2 min read - minutes: 1.845 - time: 110700 - words: 369 -tableOfContents: - - level: 2 - id: use-cases - text: Use Cases - - level: 2 - id: usage - text: Usage - - level: 3 - id: markdown-content-example - text: Markdown Content Example - - level: 3 - id: component-example - text: Component Example -navigation: - prev: - title: Tags - route: /mosaic/author/tags - next: - title: UI Components - route: /mosaic/author/ui-components -sidebarData: - - id: /mosaic/author/index - fullPath: /mosaic/author/index.mdx - name: Author - priority: 3 - data: - level: 2 - link: /mosaic/author/index - childNodes: [] - - id: /mosaic/author/markdown-syntax - fullPath: /mosaic/author/markdown-syntax.mdx - name: Markdown Syntax - priority: 5 - data: - level: 2 - link: /mosaic/author/markdown-syntax - childNodes: [] - - id: /mosaic/author/frontmatter - fullPath: /mosaic/author/frontmatter.mdx - name: Frontmatter - priority: 4 - data: - level: 2 - link: /mosaic/author/frontmatter - childNodes: [] - - id: /mosaic/author/aliases - fullPath: /mosaic/author/aliases.mdx - name: Aliases - priority: 3 - data: - level: 2 - link: /mosaic/author/aliases - childNodes: [] - - id: /mosaic/author/refs - fullPath: /mosaic/author/refs.mdx - name: Refs - priority: 3 - data: - level: 2 - link: /mosaic/author/refs - childNodes: [] - - id: /mosaic/author/tags - fullPath: /mosaic/author/tags.mdx - name: Tags - priority: 3 - data: - level: 2 - link: /mosaic/author/tags - childNodes: [] - - id: /mosaic/author/fragments - fullPath: /mosaic/author/fragments.mdx - name: Fragments - priority: 2 - data: - level: 2 - link: /mosaic/author/fragments - childNodes: [] - - id: /mosaic/author/ui-components - fullPath: /mosaic/author/ui-components.mdx - name: UI Components - priority: 2 - data: - level: 2 - link: /mosaic/author/ui-components - childNodes: [] - - id: /mosaic/author/sidebars - fullPath: /mosaic/author/sidebars.mdx - name: Sidebar Configuration - data: - level: 2 - link: /mosaic/author/sidebars - childNodes: [] ---- -# {meta.title} - -Fragments, also known as content fragments, are powerful tools that allow you to incorporate content from other pages into your documentation. By creating an MDX file and using the [generic directives](https://talk.commonmark.org/t/generic-directives-plugins-syntax/444) syntax `:fragment{src="path-to-fragment"}`, you can easily render the fragment in another file, providing modularity and reusability to your content. - -## Use Cases - -Fragments offer various use cases, such as: - -**Consistent Content**: Use fragments to maintain consistent content across multiple pages. For instance, if you have a table or a tile that appears on multiple pages, you can create a fragment for it and include it in all relevant files. This ensures that any updates made to the fragment automatically reflect across the entire documentation. - -**Reusable Components**: Fragments enable the creation of reusable components or sections. You can define a complex or commonly used section once and then include it in multiple pages as needed. This approach saves time and effort, as you only need to update the fragment file to propagate changes throughout your documentation. - -**Modular Documentation**: With fragments, you can break down your documentation into smaller, manageable pieces. Each fragment represents a specific topic or section, allowing you to organize and structure your content more efficiently. This modular approach simplifies maintenance and makes it easier to navigate and update your documentation. - -## Usage - -Firstly, enable the Fragment Plugin by adding the following to your plugins in `mosaic.config.mjs`. - -``` -{ - modulePath: '@jpmorganchase/mosaic-plugins/FragmentPlugin', - options: {} -} -``` - -To include a fragment in your content, follow these steps: - -Create an MDX file for the fragment you want to reuse. Remember to set the sidebar property of your fragment's frontmatter to exclude: true if you don't want the fragment to appear in the vertical navigation menu. - -``` ---- -title: Fragment Title -sidebar: - exclude: true ---- -``` - -In the target file where you want to include the fragment, use the remark directive syntax `:fragment{src="path-to-fragment"}`. - -### Markdown Content Example - -This is the contents of a fragment located at `../fragments/content-fragment.mdx`: - -``` ---- -title: Content Fragment -sidebar: - exclude: true ---- - -#### Fragment Title - -This is an example fragment of markdown content, being pulled from `../fragments/content-fragment.mdx`. - -``` - -The below code snippet will render the content from the content-fragment.mdx file in your target file: - -``` -:fragment{src="../fragments/content-fragment.mdx"} -``` - -Example output: - - -#### Fragment Title - -This is an example fragment of markdown content, being pulled from `../fragments/content-fragment.mdx`. - - -### Component Example - -Here is another example, where the fragment files each contain a `` component. - -``` -:fragment{src="../fragments/tile-a.mdx"} :fragment{src="../fragments/tile-b.mdx"} -``` - -The above code will render the content from tile-a.mdx and tile-b.mdx files, demonstrated below: - - - - - diff --git a/packages/site/snapshots/latest/mosaic/author/frontmatter b/packages/site/snapshots/latest/mosaic/author/frontmatter deleted file mode 120000 index b1325195f..000000000 --- a/packages/site/snapshots/latest/mosaic/author/frontmatter +++ /dev/null @@ -1 +0,0 @@ -frontmatter.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/author/frontmatter.mdx b/packages/site/snapshots/latest/mosaic/author/frontmatter.mdx deleted file mode 100644 index d050be39f..000000000 --- a/packages/site/snapshots/latest/mosaic/author/frontmatter.mdx +++ /dev/null @@ -1,253 +0,0 @@ ---- -title: Frontmatter -layout: DetailTechnical -sidebar: - priority: 4 -lastModified: 1699883563187 -fullPath: /mosaic/author/frontmatter.mdx -route: /mosaic/author/frontmatter -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Author - path: /mosaic/author/index - id: /mosaic/author/index.mdx - - label: Frontmatter - path: /mosaic/author/frontmatter - id: /mosaic/author/frontmatter.mdx -readingTime: - text: 3 min read - minutes: 2.215 - time: 132900 - words: 443 -tableOfContents: - - level: 2 - id: example-page-yaml - text: Example page yaml - - level: 2 - id: accessing-frontmatter-in-content - text: Accessing Frontmatter in content - - level: 2 - id: plugins--frontmatter - text: Plugins & Frontmatter - - level: 3 - id: adding-a-property-to-the-page - text: Adding a property to the page - - level: 3 - id: json-file - text: JSON File -navigation: - prev: - title: Markdown Syntax - route: /mosaic/author/markdown-syntax - next: - title: Aliases - route: /mosaic/author/aliases -sidebarData: - - id: /mosaic/author/index - fullPath: /mosaic/author/index.mdx - name: Author - priority: 3 - data: - level: 2 - link: /mosaic/author/index - childNodes: [] - - id: /mosaic/author/markdown-syntax - fullPath: /mosaic/author/markdown-syntax.mdx - name: Markdown Syntax - priority: 5 - data: - level: 2 - link: /mosaic/author/markdown-syntax - childNodes: [] - - id: /mosaic/author/frontmatter - fullPath: /mosaic/author/frontmatter.mdx - name: Frontmatter - priority: 4 - data: - level: 2 - link: /mosaic/author/frontmatter - childNodes: [] - - id: /mosaic/author/aliases - fullPath: /mosaic/author/aliases.mdx - name: Aliases - priority: 3 - data: - level: 2 - link: /mosaic/author/aliases - childNodes: [] - - id: /mosaic/author/refs - fullPath: /mosaic/author/refs.mdx - name: Refs - priority: 3 - data: - level: 2 - link: /mosaic/author/refs - childNodes: [] - - id: /mosaic/author/tags - fullPath: /mosaic/author/tags.mdx - name: Tags - priority: 3 - data: - level: 2 - link: /mosaic/author/tags - childNodes: [] - - id: /mosaic/author/fragments - fullPath: /mosaic/author/fragments.mdx - name: Fragments - priority: 2 - data: - level: 2 - link: /mosaic/author/fragments - childNodes: [] - - id: /mosaic/author/ui-components - fullPath: /mosaic/author/ui-components.mdx - name: UI Components - priority: 2 - data: - level: 2 - link: /mosaic/author/ui-components - childNodes: [] - - id: /mosaic/author/sidebars - fullPath: /mosaic/author/sidebars.mdx - name: Sidebar Configuration - data: - level: 2 - link: /mosaic/author/sidebars - childNodes: [] ---- -# {meta.title} - -[Frontmatter](https://mdxjs.com/guides/frontmatter/), also known as page metadata, is a powerful feature that allows easy configuration of a page and Mosaic site components e.g. the sidebar. - -Frontmatter is written in yaml syntax and is found at the top of a page between 2 sets of 3 dashes: `---`. - -## Example page yaml - -``` ---- -title: Page Title -layout: DetailTechnical -sidebar: - priority: 4 ---- - -// frontmatter is closed and now comes page content -# Page Title - -This is some content. - -``` - -## Accessing Frontmatter in content - -With the syntax below it is possible to directly reference frontmatter inside content using curly brackets and the `meta` object. - -You can think of `meta` as a JSON object that holds all the frontmatter of a page and when the Mosaic `RefPlugin` encounters the curly brackets then the value in the frontmatter will be resolved. - -``` -{meta.title} -{meta.description} -{meta.someValueYouHaveAddedToTheFrontmatter} -``` - -This is very common to see Mosaic pages that reference the title as shown below: - -``` ---- -title: Title ---- - -# {meta.title} -``` - -## Plugins & Frontmatter - -Mosaic plugins can also embed their output into page frontmatter in 2 different ways: - -* a property is directly added to the page object -* a JSON file is generated and referenced using a [ref](./refs) - -### Adding a property to the page - -A plugin can add a property to a page simply by extending the page object it receives in the `$afterSource` lifecycle event: - -``` -async function $afterSource(pages) { - for (const page of pages) { - page.newProperty = 'Hello' - } - return pages; -} -``` - -You could use this property in the page content using `{meta.newProperty}` - -### JSON File - -Let's take a look at the `SharedConfigPlugin`. - -The purpose of this plugin is to crawl the page hierarchy to find the closest `sharedConfig` found in any parent page's frontmatter. - -* Finds all index pages among the source docs -* Deserialises those pages so it can read the frontmatter and content of the page -* If a property called `sharedConfig` in the page frontmatter is found a new file named shared-config.json is created -* Adds a ref named `config` to the shared config file that points to the shared config of the index page - -``` -import type { Page, Plugin as PluginType } from '@jpmorganchase/mosaic-types'; -import { flatten } from 'lodash-es'; -import path from 'path'; - -function createFileGlob(url, pageExtensions) { -if (pageExtensions.length === 1) { -return `${url}${pageExtensions[0]}`; -} -return `${url}{${pageExtensions.join(',')}}`; -} - -interface SharedConfigPluginPage extends Page { -sharedConfig?: string; -} - -interface SharedConfigPluginOptions { -filename: string; -} - -const SharedConfigPlugin: PluginType = { -async $beforeSend( - mutableFilesystem, - { config, serialiser, ignorePages, pageExtensions }, - options - ) { - const pagePaths = await mutableFilesystem.promises.glob( - createFileGlob('**/index', pageExtensions), - { - ignore: [options.filename, ...flatten(ignorePages.map(ignore => [ignore, `**/${ignore}`]))], -cwd: '/' -} -); - - for (const pagePath of pagePaths) { - const sharedConfigFile = path.join(path.dirname(String(pagePath)), options.filename); - - const page = await serialiser.deserialise( - String(pagePath), - await mutableFilesystem.promises.readFile(String(pagePath)) - ); - if (page.sharedConfig) { - config.setRef(sharedConfigFile, ['config', '$ref'], `${String(pagePath)}#/sharedConfig`); - await mutableFilesystem.promises.writeFile(sharedConfigFile, '{}'); - } else { - const baseDir = path.posix.resolve(path.dirname(String(pagePath)), '../'); - config.setAliases(path.join(baseDir, options.filename), [sharedConfigFile]); - } - } - -} -}; - -export default SharedConfigPlugin; - -``` diff --git a/packages/site/snapshots/latest/mosaic/author/index b/packages/site/snapshots/latest/mosaic/author/index deleted file mode 120000 index 34f13104b..000000000 --- a/packages/site/snapshots/latest/mosaic/author/index +++ /dev/null @@ -1 +0,0 @@ -index.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/author/index.mdx b/packages/site/snapshots/latest/mosaic/author/index.mdx deleted file mode 100644 index 5e83989e3..000000000 --- a/packages/site/snapshots/latest/mosaic/author/index.mdx +++ /dev/null @@ -1,103 +0,0 @@ ---- -title: Author -layout: DetailTechnical -sidebar: - priority: 3 -data: - exampleRefData: Hello from Author page -lastModified: 1699882981576 -fullPath: /mosaic/author/index.mdx -route: /mosaic/author/index -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Author - path: /mosaic/author/index - id: /mosaic/author/index.mdx -readingTime: - text: 1 min read - minutes: 0.075 - time: 4500 - words: 15 -tableOfContents: [] -navigation: - next: - title: Markdown Syntax - route: /mosaic/author/markdown-syntax -sidebarData: - - id: /mosaic/author/index - fullPath: /mosaic/author/index.mdx - name: Author - priority: 3 - data: - level: 2 - link: /mosaic/author/index - childNodes: [] - - id: /mosaic/author/markdown-syntax - fullPath: /mosaic/author/markdown-syntax.mdx - name: Markdown Syntax - priority: 5 - data: - level: 2 - link: /mosaic/author/markdown-syntax - childNodes: [] - - id: /mosaic/author/frontmatter - fullPath: /mosaic/author/frontmatter.mdx - name: Frontmatter - priority: 4 - data: - level: 2 - link: /mosaic/author/frontmatter - childNodes: [] - - id: /mosaic/author/aliases - fullPath: /mosaic/author/aliases.mdx - name: Aliases - priority: 3 - data: - level: 2 - link: /mosaic/author/aliases - childNodes: [] - - id: /mosaic/author/refs - fullPath: /mosaic/author/refs.mdx - name: Refs - priority: 3 - data: - level: 2 - link: /mosaic/author/refs - childNodes: [] - - id: /mosaic/author/tags - fullPath: /mosaic/author/tags.mdx - name: Tags - priority: 3 - data: - level: 2 - link: /mosaic/author/tags - childNodes: [] - - id: /mosaic/author/fragments - fullPath: /mosaic/author/fragments.mdx - name: Fragments - priority: 2 - data: - level: 2 - link: /mosaic/author/fragments - childNodes: [] - - id: /mosaic/author/ui-components - fullPath: /mosaic/author/ui-components.mdx - name: UI Components - priority: 2 - data: - level: 2 - link: /mosaic/author/ui-components - childNodes: [] - - id: /mosaic/author/sidebars - fullPath: /mosaic/author/sidebars.mdx - name: Sidebar Configuration - data: - level: 2 - link: /mosaic/author/sidebars - childNodes: [] ---- -# {meta.title} - -Here you will learn how to author documentation using markdown, Mosaic components and page templates diff --git a/packages/site/snapshots/latest/mosaic/author/markdown-syntax b/packages/site/snapshots/latest/mosaic/author/markdown-syntax deleted file mode 120000 index f70cbe6ed..000000000 --- a/packages/site/snapshots/latest/mosaic/author/markdown-syntax +++ /dev/null @@ -1 +0,0 @@ -markdown-syntax.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/author/markdown-syntax.mdx b/packages/site/snapshots/latest/mosaic/author/markdown-syntax.mdx deleted file mode 100644 index f4f29d39a..000000000 --- a/packages/site/snapshots/latest/mosaic/author/markdown-syntax.mdx +++ /dev/null @@ -1,132 +0,0 @@ ---- -title: Markdown Syntax -layout: DetailTechnical -sidebar: - priority: 5 -lastModified: 1699975713986 -fullPath: /mosaic/author/markdown-syntax.mdx -route: /mosaic/author/markdown-syntax -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Author - path: /mosaic/author/index - id: /mosaic/author/index.mdx - - label: Markdown Syntax - path: /mosaic/author/markdown-syntax - id: /mosaic/author/markdown-syntax.mdx -readingTime: - text: 1 min read - minutes: 0.52 - time: 31200 - words: 104 -tableOfContents: - - level: 2 - id: mosaic-standard-components - text: Mosaic Standard Components - - level: 2 - id: referencing-frontmatter - text: Referencing Frontmatter - - level: 2 - id: configuring-supported-components - text: Configuring Supported components -navigation: - next: - title: Frontmatter - route: /mosaic/author/frontmatter -sidebarData: - - id: /mosaic/author/index - fullPath: /mosaic/author/index.mdx - name: Author - priority: 3 - data: - level: 2 - link: /mosaic/author/index - childNodes: [] - - id: /mosaic/author/markdown-syntax - fullPath: /mosaic/author/markdown-syntax.mdx - name: Markdown Syntax - priority: 5 - data: - level: 2 - link: /mosaic/author/markdown-syntax - childNodes: [] - - id: /mosaic/author/frontmatter - fullPath: /mosaic/author/frontmatter.mdx - name: Frontmatter - priority: 4 - data: - level: 2 - link: /mosaic/author/frontmatter - childNodes: [] - - id: /mosaic/author/aliases - fullPath: /mosaic/author/aliases.mdx - name: Aliases - priority: 3 - data: - level: 2 - link: /mosaic/author/aliases - childNodes: [] - - id: /mosaic/author/refs - fullPath: /mosaic/author/refs.mdx - name: Refs - priority: 3 - data: - level: 2 - link: /mosaic/author/refs - childNodes: [] - - id: /mosaic/author/tags - fullPath: /mosaic/author/tags.mdx - name: Tags - priority: 3 - data: - level: 2 - link: /mosaic/author/tags - childNodes: [] - - id: /mosaic/author/fragments - fullPath: /mosaic/author/fragments.mdx - name: Fragments - priority: 2 - data: - level: 2 - link: /mosaic/author/fragments - childNodes: [] - - id: /mosaic/author/ui-components - fullPath: /mosaic/author/ui-components.mdx - name: UI Components - priority: 2 - data: - level: 2 - link: /mosaic/author/ui-components - childNodes: [] - - id: /mosaic/author/sidebars - fullPath: /mosaic/author/sidebars.mdx - name: Sidebar Configuration - data: - level: 2 - link: /mosaic/author/sidebars - childNodes: [] ---- -# {meta.title} - -Out of the box, Mosaic supports documents written in [MDX](https://mdxjs.com/) which allows React components to be embedded within the [basic syntax](https://www.markdownguide.org/basic-syntax/) outlined in the original Markdown design document. - -In addition to the basic markdown syntax, the MDX processor used by Mosaic has been configured to support additional markdown syntax and features: - -* [GitHub flavored markdown (gfm)](https://mdxjs.com/guides/gfm/) -* [Frontmatter](./frontmatter) - -## Mosaic Standard Components - -All components that comprise the `components` export from `@jpmorganchase/mosaic-site-components` package are available to use out of the box in your documents. - -This includes components for all standard markdown syntax and additional components like `Callout` and `Tile`. - -## Referencing Frontmatter - -Frontmatter values can be embedded into the page using the `meta` object. See [frontmatter](./frontmatter#accessing-frontmatter-in-content) for more information. - -## Configuring Supported components - -TODO diff --git a/packages/site/snapshots/latest/mosaic/author/refs b/packages/site/snapshots/latest/mosaic/author/refs deleted file mode 120000 index d01c31d62..000000000 --- a/packages/site/snapshots/latest/mosaic/author/refs +++ /dev/null @@ -1 +0,0 @@ -refs.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/author/refs.mdx b/packages/site/snapshots/latest/mosaic/author/refs.mdx deleted file mode 100644 index 93a2bb3d6..000000000 --- a/packages/site/snapshots/latest/mosaic/author/refs.mdx +++ /dev/null @@ -1,341 +0,0 @@ ---- -title: Refs -layout: DetailTechnical -sidebar: - priority: 3 -data: - authorRef: Hello from Author page - modes: - - active - - snapshot-file - - snapshot-s3 - sidebarPriority: 3 -lastModified: 1699883563193 -fullPath: /mosaic/author/refs.mdx -route: /mosaic/author/refs -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Author - path: /mosaic/author/index - id: /mosaic/author/index.mdx - - label: Refs - path: /mosaic/author/refs - id: /mosaic/author/refs.mdx -readingTime: - text: 4 min read - minutes: 3.075 - time: 184500 - words: 615 -tableOfContents: - - level: 2 - id: local-refs-in-schema-reference - text: Local refs (In-schema reference) - - level: 2 - id: remote-refs-cross-schema-reference - text: Remote Refs (Cross-schema reference) - - level: 2 - id: advanced - text: Advanced - - level: 3 - id: output - text: Output - - level: 3 - id: output-with-mosaic-components - text: Output with Mosaic Components - - level: 2 - id: setting-refs-using-plugins - text: Setting Refs using Plugins - - level: 3 - id: create-new-refs - text: Create new refs - - level: 3 - id: existing-refs - text: Existing refs - - level: 3 - id: create-global-refs - text: Create global refs -navigation: - prev: - title: Aliases - route: /mosaic/author/aliases - next: - title: Tags - route: /mosaic/author/tags -sidebarData: - - id: /mosaic/author/index - fullPath: /mosaic/author/index.mdx - name: Author - priority: 3 - data: - level: 2 - link: /mosaic/author/index - childNodes: [] - - id: /mosaic/author/markdown-syntax - fullPath: /mosaic/author/markdown-syntax.mdx - name: Markdown Syntax - priority: 5 - data: - level: 2 - link: /mosaic/author/markdown-syntax - childNodes: [] - - id: /mosaic/author/frontmatter - fullPath: /mosaic/author/frontmatter.mdx - name: Frontmatter - priority: 4 - data: - level: 2 - link: /mosaic/author/frontmatter - childNodes: [] - - id: /mosaic/author/aliases - fullPath: /mosaic/author/aliases.mdx - name: Aliases - priority: 3 - data: - level: 2 - link: /mosaic/author/aliases - childNodes: [] - - id: /mosaic/author/refs - fullPath: /mosaic/author/refs.mdx - name: Refs - priority: 3 - data: - level: 2 - link: /mosaic/author/refs - childNodes: [] - - id: /mosaic/author/tags - fullPath: /mosaic/author/tags.mdx - name: Tags - priority: 3 - data: - level: 2 - link: /mosaic/author/tags - childNodes: [] - - id: /mosaic/author/fragments - fullPath: /mosaic/author/fragments.mdx - name: Fragments - priority: 2 - data: - level: 2 - link: /mosaic/author/fragments - childNodes: [] - - id: /mosaic/author/ui-components - fullPath: /mosaic/author/ui-components.mdx - name: UI Components - priority: 2 - data: - level: 2 - link: /mosaic/author/ui-components - childNodes: [] - - id: /mosaic/author/sidebars - fullPath: /mosaic/author/sidebars.mdx - name: Sidebar Configuration - data: - level: 2 - link: /mosaic/author/sidebars - childNodes: [] ---- -# {meta.title} - -Refs are a very powerful feature of Mosaic documents that use [JSON References](https://json-spec.readthedocs.io/reference.html) to reference -a property from the page frontmatter or frontmatter of other pages. - -The key concept is that of a JSON pointer which takes the form **A**#**B** where: - -* **A** is the relative path from the current schema to a target schema. If A is empty, the reference is to a type or property in the same schema, an in-schema reference. Otherwise, the reference is to a different schema, a cross-schema reference. -* **B** is the complete path from the root of the schema to a type or property in the schema. If # in not included or B is empty, the reference is to an entire schema. - -To translate this for our purposes: - -* **A** is the relative path to a file in the filesystem. -* **B** is the path to a property in the frontmatter of the file. - -It's probably better explained with examples... - -## Local refs (In-schema reference) - -It is possible to reference a page's own frontmatter to avoid duplication: - -``` ---- -title: Refs -layout: DetailTechnical -sidebar: - priority: 3 -data: - sidebarPriority: - $ref: '#/sidebar/priority' ---- -``` - -This page you are reading right now has a sidebar priority of **{meta.data.sidebarPriority}**. - -The value of `data.sidebarPriority` comes from `sidebar.priority` in the frontmatter. - - - Notice that because we don't specify a path before the `#` in the ref we need to put the whole - value inside quotes. - - -## Remote Refs (Cross-schema reference) - -It is possible to reference frontmatter of other pages. Again this helps avoid duplication but the real power is using refs to build the data model. See [advanced](#advanced) for more information. - -The [index](./index) page of the Author section has this frontmatter: - -``` ---- -title: Author -layout: DetailTechnical -sidebar: - priority: 3 -data: - exampleRefData: Hello from Author page ---- -``` - -This page you are currently looking at is referencing the `data.exampleRefData` in it's frontmatter like this: - -``` ---- -title: Refs -layout: DetailTechnical -sidebar: - priority: 3 -data: - authorRef: - $ref: ./#/data/exampleRefData ---- -``` - -I can then use the data and embed it in this page like this: - -``` -{meta.data.authorRef} -``` - -And here it is: {meta.data.authorRef} - - - Notice that we did not need to put `/index` in the ref since index pages are resolved - automatically. - - -## Advanced - -You have had a taste of the power and want to know more? OK, lets reference and then list out all the mosaic modes: - -
      - {meta.data.modes.map(mode => ( -
    • {mode}
    • - ))} -
    - -The Modes [index](../configure/modes/index) page has this frontmatter: - -``` ---- -title: Modes of operation -layout: DetailTechnical -sidebar: - priority: 4 -data: - modes: - $ref: ./*#/title ---- -``` - -The ref here is essentially using a wildcard (the \*) to grab the `mode` property from the frontmatter of every page in the modes folder. - -We can reference that data just like before: - -``` ---- -title: Refs -layout: DetailTechnical -sidebar: - priority: 3 -data: - modes: - $ref: ../configure/modes#/data/modes ---- -``` - -### Output - -With the code below, the referenced data can be embedded in a page. - -``` -
      - {meta.data.modes.map(mode => ( -
    • {mode}
    • - ))} -
    -``` - -### Output with Mosaic Components - -You can use Mosaic components with referenced data as well. Below we are using the `Tiles` and `TileContent` components. - - - {meta.data.modes.map(mode => ( - - ))} - - -``` - - {meta.data.modes.map(mode => ( - - ))} - -``` - -## Setting Refs using Plugins - -Mosaic plugins can create new refs, create new *global* refs and see existing refs created by the page or other plugins. This is achieved using a special `config` property available in the plugin helpers. - -### Create new refs - -Use the `config.setRef` function from the helpers provided to plugin lifecycle events. You need to provide - -* The file/fullpath to write the ref to -* The path to the ptoperty where the ref will be applied -* The value of the ref, which can use wildcards - -For example, the following would add a property to pages named `titles`. The value is the title of all pages in the **same** directory as the current page - -``` - async $afterSource(pages, { config }) { - for (const page of pages) { - config.setRef(page.fullPath, ['titles', '$ref'], `**#/title`); - } - return pages; - } -``` - - - When setting the property path the last string must be `$ref` otherwise you're not creating a ref - that will be resolved by the RefPlugin. - - -### Existing refs - -To view refs that already exist you can use `config.data.refs`. For example to see all refs for a page: - -``` - config.data.refs[fullPathToPage] -``` - -### Create global refs - -Global refs are similar to regular refs except they do not pre-resolve. This means they are resolved when the referenced file is read and the global mosaic filesystem, made up of multiple sources, is used rather than the filesystem of a single source. diff --git a/packages/site/snapshots/latest/mosaic/author/shared-config.json b/packages/site/snapshots/latest/mosaic/author/shared-config.json deleted file mode 120000 index 11f2745e8..000000000 --- a/packages/site/snapshots/latest/mosaic/author/shared-config.json +++ /dev/null @@ -1 +0,0 @@ -../shared-config.json \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/author/sidebar.json b/packages/site/snapshots/latest/mosaic/author/sidebar.json deleted file mode 100644 index 13ac5daec..000000000 --- a/packages/site/snapshots/latest/mosaic/author/sidebar.json +++ /dev/null @@ -1 +0,0 @@ -{"pages":[{"id":"/mosaic/author/index","fullPath":"/mosaic/author/index.mdx","name":"Author","priority":3,"data":{"level":2,"link":"/mosaic/author/index"},"childNodes":[]},{"id":"/mosaic/author/markdown-syntax","fullPath":"/mosaic/author/markdown-syntax.mdx","name":"Markdown Syntax","priority":5,"data":{"level":2,"link":"/mosaic/author/markdown-syntax"},"childNodes":[]},{"id":"/mosaic/author/frontmatter","fullPath":"/mosaic/author/frontmatter.mdx","name":"Frontmatter","priority":4,"data":{"level":2,"link":"/mosaic/author/frontmatter"},"childNodes":[]},{"id":"/mosaic/author/aliases","fullPath":"/mosaic/author/aliases.mdx","name":"Aliases","priority":3,"data":{"level":2,"link":"/mosaic/author/aliases"},"childNodes":[]},{"id":"/mosaic/author/refs","fullPath":"/mosaic/author/refs.mdx","name":"Refs","priority":3,"data":{"level":2,"link":"/mosaic/author/refs"},"childNodes":[]},{"id":"/mosaic/author/tags","fullPath":"/mosaic/author/tags.mdx","name":"Tags","priority":3,"data":{"level":2,"link":"/mosaic/author/tags"},"childNodes":[]},{"id":"/mosaic/author/fragments","fullPath":"/mosaic/author/fragments.mdx","name":"Fragments","priority":2,"data":{"level":2,"link":"/mosaic/author/fragments"},"childNodes":[]},{"id":"/mosaic/author/ui-components","fullPath":"/mosaic/author/ui-components.mdx","name":"UI Components","priority":2,"data":{"level":2,"link":"/mosaic/author/ui-components"},"childNodes":[]},{"id":"/mosaic/author/sidebars","fullPath":"/mosaic/author/sidebars.mdx","name":"Sidebar Configuration","data":{"level":2,"link":"/mosaic/author/sidebars"},"childNodes":[]}]} \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/author/ui-components b/packages/site/snapshots/latest/mosaic/author/ui-components deleted file mode 120000 index 2dc3fd50b..000000000 --- a/packages/site/snapshots/latest/mosaic/author/ui-components +++ /dev/null @@ -1 +0,0 @@ -ui-components.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/author/ui-components.mdx b/packages/site/snapshots/latest/mosaic/author/ui-components.mdx deleted file mode 100644 index 3347d538c..000000000 --- a/packages/site/snapshots/latest/mosaic/author/ui-components.mdx +++ /dev/null @@ -1,107 +0,0 @@ ---- -title: UI Components -layout: DetailTechnical -sidebar: - priority: 2 -lastModified: 1699883563193 -fullPath: /mosaic/author/ui-components.mdx -route: /mosaic/author/ui-components -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Author - path: /mosaic/author/index - id: /mosaic/author/index.mdx - - label: UI Components - path: /mosaic/author/ui-components - id: /mosaic/author/ui-components.mdx -readingTime: - text: 1 min read - minutes: 0.005 - time: 300 - words: 1 -tableOfContents: [] -navigation: - prev: - title: Fragments - route: /mosaic/author/fragments - next: - title: Sidebar Configuration - route: /mosaic/author/sidebars -sidebarData: - - id: /mosaic/author/index - fullPath: /mosaic/author/index.mdx - name: Author - priority: 3 - data: - level: 2 - link: /mosaic/author/index - childNodes: [] - - id: /mosaic/author/markdown-syntax - fullPath: /mosaic/author/markdown-syntax.mdx - name: Markdown Syntax - priority: 5 - data: - level: 2 - link: /mosaic/author/markdown-syntax - childNodes: [] - - id: /mosaic/author/frontmatter - fullPath: /mosaic/author/frontmatter.mdx - name: Frontmatter - priority: 4 - data: - level: 2 - link: /mosaic/author/frontmatter - childNodes: [] - - id: /mosaic/author/aliases - fullPath: /mosaic/author/aliases.mdx - name: Aliases - priority: 3 - data: - level: 2 - link: /mosaic/author/aliases - childNodes: [] - - id: /mosaic/author/refs - fullPath: /mosaic/author/refs.mdx - name: Refs - priority: 3 - data: - level: 2 - link: /mosaic/author/refs - childNodes: [] - - id: /mosaic/author/tags - fullPath: /mosaic/author/tags.mdx - name: Tags - priority: 3 - data: - level: 2 - link: /mosaic/author/tags - childNodes: [] - - id: /mosaic/author/fragments - fullPath: /mosaic/author/fragments.mdx - name: Fragments - priority: 2 - data: - level: 2 - link: /mosaic/author/fragments - childNodes: [] - - id: /mosaic/author/ui-components - fullPath: /mosaic/author/ui-components.mdx - name: UI Components - priority: 2 - data: - level: 2 - link: /mosaic/author/ui-components - childNodes: [] - - id: /mosaic/author/sidebars - fullPath: /mosaic/author/sidebars.mdx - name: Sidebar Configuration - data: - level: 2 - link: /mosaic/author/sidebars - childNodes: [] ---- -# {meta.title} - -Todo... diff --git a/packages/site/snapshots/latest/mosaic/configure/index b/packages/site/snapshots/latest/mosaic/configure/index deleted file mode 120000 index 34f13104b..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/index +++ /dev/null @@ -1 +0,0 @@ -index.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/configure/index.mdx b/packages/site/snapshots/latest/mosaic/configure/index.mdx deleted file mode 100644 index 6740218d8..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/index.mdx +++ /dev/null @@ -1,353 +0,0 @@ ---- -title: Configure -layout: DetailTechnical -sidebar: - priority: 4 -lastModified: 1699883563201 -fullPath: /mosaic/configure/index.mdx -route: /mosaic/configure/index -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Configure - path: /mosaic/configure/index - id: /mosaic/configure/index.mdx -readingTime: - text: 1 min read - minutes: 0.19 - time: 11400 - words: 38 -tableOfContents: [] -navigation: - next: - title: Modes of operation - route: /mosaic/configure/modes/index -sidebarData: - - id: /mosaic/configure/index - fullPath: /mosaic/configure/index.mdx - name: Configure - priority: 4 - data: - level: 2 - link: /mosaic/configure/index - childNodes: [] - - id: /mosaic/configure/modes/index - fullPath: /mosaic/configure/modes/index.mdx - name: Modes of operation - priority: 4 - data: - level: 3 - link: /mosaic/configure/modes/index - childNodes: - - id: /mosaic/configure/modes/active - fullPath: /mosaic/configure/modes/active.mdx - name: Active mode - data: - level: 3 - link: /mosaic/configure/modes/active - childNodes: [] - - id: /mosaic/configure/modes/snapshot-file - fullPath: /mosaic/configure/modes/snapshot-file.mdx - name: Snapshot file mode - data: - level: 3 - link: /mosaic/configure/modes/snapshot-file - childNodes: [] - - id: /mosaic/configure/modes/snapshot-s3 - fullPath: /mosaic/configure/modes/snapshot-s3.mdx - name: Snapshot AWS/S3 mode - data: - level: 3 - link: /mosaic/configure/modes/snapshot-s3 - childNodes: [] - - id: /mosaic/configure/theme/index - fullPath: /mosaic/configure/theme/index.mdx - name: Theming Your Site - priority: 4 - data: - level: 3 - link: /mosaic/configure/theme/index - childNodes: - - id: /mosaic/configure/theme/custom-css - fullPath: /mosaic/configure/theme/custom-css.mdx - name: Custom CSS - priority: 3 - data: - level: 3 - link: /mosaic/configure/theme/custom-css - childNodes: [] - - id: /mosaic/configure/theme/custom-components - fullPath: /mosaic/configure/theme/custom-components.mdx - name: Custom Components - priority: 2 - data: - level: 3 - link: /mosaic/configure/theme/custom-components - childNodes: [] - - id: /mosaic/configure/admin/index - fullPath: /mosaic/configure/admin/index.mdx - name: Admin - priority: 3 - data: - level: 3 - link: /mosaic/configure/admin/index - childNodes: [] - - id: /mosaic/configure/sources/index - fullPath: /mosaic/configure/sources/index.mdx - name: Sources - priority: 3 - data: - level: 3 - link: /mosaic/configure/sources/index - childNodes: - - id: /mosaic/configure/sources/schedules - fullPath: /mosaic/configure/sources/schedules.mdx - name: Schedules - priority: 4 - data: - level: 3 - link: /mosaic/configure/sources/schedules - childNodes: [] - - id: /mosaic/configure/sources/local-folder-source - fullPath: /mosaic/configure/sources/local-folder-source.mdx - name: Local Folder Source - priority: 3 - data: - level: 3 - link: /mosaic/configure/sources/local-folder-source - childNodes: [] - - id: /mosaic/configure/sources/git-repo-source - fullPath: /mosaic/configure/sources/git-repo-source.mdx - name: Git Repo Source - priority: 2 - data: - level: 3 - link: /mosaic/configure/sources/git-repo-source - childNodes: [] - - id: /mosaic/configure/sources/http-source - fullPath: /mosaic/configure/sources/http-source.mdx - name: HTTP Source - priority: 1 - data: - level: 3 - link: /mosaic/configure/sources/http-source - childNodes: [] - - id: /mosaic/configure/layouts/index - fullPath: /mosaic/configure/layouts/index.mdx - name: Layouts - priority: 2 - data: - level: 3 - link: /mosaic/configure/layouts/index - childNodes: - - id: /mosaic/configure/layouts/detail-highlight - fullPath: /mosaic/configure/layouts/detail-highlight.mdx - name: Detail Highlight - data: - level: 3 - link: /mosaic/configure/layouts/detail-highlight - childNodes: [] - - id: /mosaic/configure/layouts/detail-overview - fullPath: /mosaic/configure/layouts/detail-overview.mdx - name: Detail Overview - data: - level: 3 - link: /mosaic/configure/layouts/detail-overview - childNodes: [] - - id: /mosaic/configure/layouts/detail-technical - fullPath: /mosaic/configure/layouts/detail-technical.mdx - name: Detail Technical - data: - level: 3 - link: /mosaic/configure/layouts/detail-technical - childNodes: [] - - id: /mosaic/configure/layouts/landing - fullPath: /mosaic/configure/layouts/landing.mdx - name: Landing Layout - data: - level: 3 - link: /mosaic/configure/layouts/landing - childNodes: [] - - id: /mosaic/configure/layouts/product-discover - fullPath: /mosaic/configure/layouts/product-discover.mdx - name: Product Discover Layout - data: - level: 3 - link: /mosaic/configure/layouts/product-discover - childNodes: [] - - id: /mosaic/configure/layouts/product-preview - fullPath: /mosaic/configure/layouts/product-preview.mdx - name: Product Preview Layout - data: - level: 3 - link: /mosaic/configure/layouts/product-preview - childNodes: [] - - id: /mosaic/configure/plugins/index - fullPath: /mosaic/configure/plugins/index.mdx - name: Plugins - priority: 1 - data: - level: 3 - link: /mosaic/configure/plugins/index - childNodes: - - id: /mosaic/configure/plugins/lifecycle/index - fullPath: /mosaic/configure/plugins/lifecycle/index.mdx - name: Lifecycle Events - priority: 1 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/index - childNodes: - - id: /mosaic/configure/plugins/lifecycle/after-source - fullPath: /mosaic/configure/plugins/lifecycle/after-source.mdx - name: $afterSource - priority: 5 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/after-source - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/before-send - fullPath: /mosaic/configure/plugins/lifecycle/before-send.mdx - name: $beforeSend - priority: 4 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/before-send - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/after-update - fullPath: /mosaic/configure/plugins/lifecycle/after-update.mdx - name: afterUpdate - priority: 3 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/after-update - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/should-clear-cache - fullPath: /mosaic/configure/plugins/lifecycle/should-clear-cache.mdx - name: shouldClearCache - priority: 2 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/should-clear-cache - childNodes: [] - - id: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources - fullPath: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources.mdx - name: shouldUpdateNamespaceSources - priority: 1 - data: - level: 4 - link: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources - childNodes: [] - - id: /mosaic/configure/plugins/alias-plugin - fullPath: /mosaic/configure/plugins/alias-plugin.mdx - name: $AliasPlugin - data: - level: 3 - link: /mosaic/configure/plugins/alias-plugin - childNodes: [] - - id: /mosaic/configure/plugins/breadcrumbs-plugin - fullPath: /mosaic/configure/plugins/breadcrumbs-plugin.mdx - name: BreadcrumbsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/breadcrumbs-plugin - childNodes: [] - - id: /mosaic/configure/plugins/broken-links-plugin - fullPath: /mosaic/configure/plugins/broken-links-plugin.mdx - name: BrokenLinksPlugin - data: - level: 3 - link: /mosaic/configure/plugins/broken-links-plugin - childNodes: [] - - id: /mosaic/configure/plugins/codemod-plugin - fullPath: /mosaic/configure/plugins/codemod-plugin.mdx - name: $CodeModPlugin - data: - level: 3 - link: /mosaic/configure/plugins/codemod-plugin - childNodes: [] - - id: /mosaic/configure/plugins/lazy-page-plugin - fullPath: /mosaic/configure/plugins/lazy-page-plugin.mdx - name: LazyPagePlugin - data: - level: 3 - link: /mosaic/configure/plugins/lazy-page-plugin - childNodes: [] - - id: /mosaic/configure/plugins/pages-wthout-extensions-plugin - fullPath: /mosaic/configure/plugins/pages-wthout-extensions-plugin.mdx - name: PagesWithoutFileExtPlugin - data: - level: 3 - link: /mosaic/configure/plugins/pages-wthout-extensions-plugin - childNodes: [] - - id: /mosaic/configure/plugins/public-assets-plugin - fullPath: /mosaic/configure/plugins/public-assets-plugin.mdx - name: PublicAssetsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/public-assets-plugin - childNodes: [] - - id: /mosaic/configure/plugins/reading-time-plugin - fullPath: /mosaic/configure/plugins/reading-time-plugin.mdx - name: ReadingTimePlugin - data: - level: 3 - link: /mosaic/configure/plugins/reading-time-plugin - childNodes: [] - - id: /mosaic/configure/plugins/ref-plugin - fullPath: /mosaic/configure/plugins/ref-plugin.mdx - name: $RefPlugin - data: - level: 3 - link: /mosaic/configure/plugins/ref-plugin - childNodes: [] - - id: /mosaic/configure/plugins/search-index-plugin - fullPath: /mosaic/configure/plugins/search-index-plugin.mdx - name: SearchIndexPlugin - data: - level: 3 - link: /mosaic/configure/plugins/search-index-plugin - childNodes: [] - - id: /mosaic/configure/plugins/shared-config-plugin - fullPath: /mosaic/configure/plugins/shared-config-plugin.mdx - name: SharedConfigPlugin - data: - level: 3 - link: /mosaic/configure/plugins/shared-config-plugin - childNodes: [] - - id: /mosaic/configure/plugins/sidebar-plugin - fullPath: /mosaic/configure/plugins/sidebar-plugin.mdx - name: SidebarPlugin - data: - level: 3 - link: /mosaic/configure/plugins/sidebar-plugin - childNodes: [] - - id: /mosaic/configure/plugins/site-map-plugin - fullPath: /mosaic/configure/plugins/site-map-plugin.mdx - name: SiteMapPlugin - data: - level: 3 - link: /mosaic/configure/plugins/site-map-plugin - childNodes: [] - - id: /mosaic/configure/plugins/tag-plugin - fullPath: /mosaic/configure/plugins/tag-plugin.mdx - name: $TagPlugin - data: - level: 3 - link: /mosaic/configure/plugins/tag-plugin - childNodes: [] - - id: /mosaic/configure/plugins/toc-plugin - fullPath: /mosaic/configure/plugins/toc-plugin.mdx - name: TableOfContentsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/toc-plugin - childNodes: [] ---- -# {meta.title} - -Mosaic is a tool which retrieves, formats and combines documentation pages from any number of different external sources (such as GitHub repositories, local disks or REST endpoints), into a single filesystem for you to use in your websites. diff --git a/packages/site/snapshots/latest/mosaic/configure/layouts/index b/packages/site/snapshots/latest/mosaic/configure/layouts/index deleted file mode 120000 index 34f13104b..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/layouts/index +++ /dev/null @@ -1 +0,0 @@ -index.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/configure/layouts/index.mdx b/packages/site/snapshots/latest/mosaic/configure/layouts/index.mdx deleted file mode 100644 index 9e1afd65e..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/layouts/index.mdx +++ /dev/null @@ -1,359 +0,0 @@ ---- -title: Layouts -layout: DetailTechnical -sidebar: - priority: 2 -lastModified: 1699883563205 -fullPath: /mosaic/configure/layouts/index.mdx -route: /mosaic/configure/layouts/index -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Configure - path: /mosaic/configure/index - id: /mosaic/configure/index.mdx - - label: Layouts - path: /mosaic/configure/layouts/index - id: /mosaic/configure/layouts/index.mdx -readingTime: - text: 1 min read - minutes: 0.005 - time: 300 - words: 1 -tableOfContents: [] -navigation: - prev: - title: HTTP Source - route: /mosaic/configure/sources/http-source - next: - title: Detail Highlight - route: /mosaic/configure/layouts/detail-highlight -sidebarData: - - id: /mosaic/configure/index - fullPath: /mosaic/configure/index.mdx - name: Configure - priority: 4 - data: - level: 2 - link: /mosaic/configure/index - childNodes: [] - - id: /mosaic/configure/modes/index - fullPath: /mosaic/configure/modes/index.mdx - name: Modes of operation - priority: 4 - data: - level: 3 - link: /mosaic/configure/modes/index - childNodes: - - id: /mosaic/configure/modes/active - fullPath: /mosaic/configure/modes/active.mdx - name: Active mode - data: - level: 3 - link: /mosaic/configure/modes/active - childNodes: [] - - id: /mosaic/configure/modes/snapshot-file - fullPath: /mosaic/configure/modes/snapshot-file.mdx - name: Snapshot file mode - data: - level: 3 - link: /mosaic/configure/modes/snapshot-file - childNodes: [] - - id: /mosaic/configure/modes/snapshot-s3 - fullPath: /mosaic/configure/modes/snapshot-s3.mdx - name: Snapshot AWS/S3 mode - data: - level: 3 - link: /mosaic/configure/modes/snapshot-s3 - childNodes: [] - - id: /mosaic/configure/theme/index - fullPath: /mosaic/configure/theme/index.mdx - name: Theming Your Site - priority: 4 - data: - level: 3 - link: /mosaic/configure/theme/index - childNodes: - - id: /mosaic/configure/theme/custom-css - fullPath: /mosaic/configure/theme/custom-css.mdx - name: Custom CSS - priority: 3 - data: - level: 3 - link: /mosaic/configure/theme/custom-css - childNodes: [] - - id: /mosaic/configure/theme/custom-components - fullPath: /mosaic/configure/theme/custom-components.mdx - name: Custom Components - priority: 2 - data: - level: 3 - link: /mosaic/configure/theme/custom-components - childNodes: [] - - id: /mosaic/configure/admin/index - fullPath: /mosaic/configure/admin/index.mdx - name: Admin - priority: 3 - data: - level: 3 - link: /mosaic/configure/admin/index - childNodes: [] - - id: /mosaic/configure/sources/index - fullPath: /mosaic/configure/sources/index.mdx - name: Sources - priority: 3 - data: - level: 3 - link: /mosaic/configure/sources/index - childNodes: - - id: /mosaic/configure/sources/schedules - fullPath: /mosaic/configure/sources/schedules.mdx - name: Schedules - priority: 4 - data: - level: 3 - link: /mosaic/configure/sources/schedules - childNodes: [] - - id: /mosaic/configure/sources/local-folder-source - fullPath: /mosaic/configure/sources/local-folder-source.mdx - name: Local Folder Source - priority: 3 - data: - level: 3 - link: /mosaic/configure/sources/local-folder-source - childNodes: [] - - id: /mosaic/configure/sources/git-repo-source - fullPath: /mosaic/configure/sources/git-repo-source.mdx - name: Git Repo Source - priority: 2 - data: - level: 3 - link: /mosaic/configure/sources/git-repo-source - childNodes: [] - - id: /mosaic/configure/sources/http-source - fullPath: /mosaic/configure/sources/http-source.mdx - name: HTTP Source - priority: 1 - data: - level: 3 - link: /mosaic/configure/sources/http-source - childNodes: [] - - id: /mosaic/configure/layouts/index - fullPath: /mosaic/configure/layouts/index.mdx - name: Layouts - priority: 2 - data: - level: 3 - link: /mosaic/configure/layouts/index - childNodes: - - id: /mosaic/configure/layouts/detail-highlight - fullPath: /mosaic/configure/layouts/detail-highlight.mdx - name: Detail Highlight - data: - level: 3 - link: /mosaic/configure/layouts/detail-highlight - childNodes: [] - - id: /mosaic/configure/layouts/detail-overview - fullPath: /mosaic/configure/layouts/detail-overview.mdx - name: Detail Overview - data: - level: 3 - link: /mosaic/configure/layouts/detail-overview - childNodes: [] - - id: /mosaic/configure/layouts/detail-technical - fullPath: /mosaic/configure/layouts/detail-technical.mdx - name: Detail Technical - data: - level: 3 - link: /mosaic/configure/layouts/detail-technical - childNodes: [] - - id: /mosaic/configure/layouts/landing - fullPath: /mosaic/configure/layouts/landing.mdx - name: Landing Layout - data: - level: 3 - link: /mosaic/configure/layouts/landing - childNodes: [] - - id: /mosaic/configure/layouts/product-discover - fullPath: /mosaic/configure/layouts/product-discover.mdx - name: Product Discover Layout - data: - level: 3 - link: /mosaic/configure/layouts/product-discover - childNodes: [] - - id: /mosaic/configure/layouts/product-preview - fullPath: /mosaic/configure/layouts/product-preview.mdx - name: Product Preview Layout - data: - level: 3 - link: /mosaic/configure/layouts/product-preview - childNodes: [] - - id: /mosaic/configure/plugins/index - fullPath: /mosaic/configure/plugins/index.mdx - name: Plugins - priority: 1 - data: - level: 3 - link: /mosaic/configure/plugins/index - childNodes: - - id: /mosaic/configure/plugins/lifecycle/index - fullPath: /mosaic/configure/plugins/lifecycle/index.mdx - name: Lifecycle Events - priority: 1 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/index - childNodes: - - id: /mosaic/configure/plugins/lifecycle/after-source - fullPath: /mosaic/configure/plugins/lifecycle/after-source.mdx - name: $afterSource - priority: 5 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/after-source - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/before-send - fullPath: /mosaic/configure/plugins/lifecycle/before-send.mdx - name: $beforeSend - priority: 4 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/before-send - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/after-update - fullPath: /mosaic/configure/plugins/lifecycle/after-update.mdx - name: afterUpdate - priority: 3 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/after-update - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/should-clear-cache - fullPath: /mosaic/configure/plugins/lifecycle/should-clear-cache.mdx - name: shouldClearCache - priority: 2 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/should-clear-cache - childNodes: [] - - id: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources - fullPath: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources.mdx - name: shouldUpdateNamespaceSources - priority: 1 - data: - level: 4 - link: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources - childNodes: [] - - id: /mosaic/configure/plugins/alias-plugin - fullPath: /mosaic/configure/plugins/alias-plugin.mdx - name: $AliasPlugin - data: - level: 3 - link: /mosaic/configure/plugins/alias-plugin - childNodes: [] - - id: /mosaic/configure/plugins/breadcrumbs-plugin - fullPath: /mosaic/configure/plugins/breadcrumbs-plugin.mdx - name: BreadcrumbsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/breadcrumbs-plugin - childNodes: [] - - id: /mosaic/configure/plugins/broken-links-plugin - fullPath: /mosaic/configure/plugins/broken-links-plugin.mdx - name: BrokenLinksPlugin - data: - level: 3 - link: /mosaic/configure/plugins/broken-links-plugin - childNodes: [] - - id: /mosaic/configure/plugins/codemod-plugin - fullPath: /mosaic/configure/plugins/codemod-plugin.mdx - name: $CodeModPlugin - data: - level: 3 - link: /mosaic/configure/plugins/codemod-plugin - childNodes: [] - - id: /mosaic/configure/plugins/lazy-page-plugin - fullPath: /mosaic/configure/plugins/lazy-page-plugin.mdx - name: LazyPagePlugin - data: - level: 3 - link: /mosaic/configure/plugins/lazy-page-plugin - childNodes: [] - - id: /mosaic/configure/plugins/pages-wthout-extensions-plugin - fullPath: /mosaic/configure/plugins/pages-wthout-extensions-plugin.mdx - name: PagesWithoutFileExtPlugin - data: - level: 3 - link: /mosaic/configure/plugins/pages-wthout-extensions-plugin - childNodes: [] - - id: /mosaic/configure/plugins/public-assets-plugin - fullPath: /mosaic/configure/plugins/public-assets-plugin.mdx - name: PublicAssetsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/public-assets-plugin - childNodes: [] - - id: /mosaic/configure/plugins/reading-time-plugin - fullPath: /mosaic/configure/plugins/reading-time-plugin.mdx - name: ReadingTimePlugin - data: - level: 3 - link: /mosaic/configure/plugins/reading-time-plugin - childNodes: [] - - id: /mosaic/configure/plugins/ref-plugin - fullPath: /mosaic/configure/plugins/ref-plugin.mdx - name: $RefPlugin - data: - level: 3 - link: /mosaic/configure/plugins/ref-plugin - childNodes: [] - - id: /mosaic/configure/plugins/search-index-plugin - fullPath: /mosaic/configure/plugins/search-index-plugin.mdx - name: SearchIndexPlugin - data: - level: 3 - link: /mosaic/configure/plugins/search-index-plugin - childNodes: [] - - id: /mosaic/configure/plugins/shared-config-plugin - fullPath: /mosaic/configure/plugins/shared-config-plugin.mdx - name: SharedConfigPlugin - data: - level: 3 - link: /mosaic/configure/plugins/shared-config-plugin - childNodes: [] - - id: /mosaic/configure/plugins/sidebar-plugin - fullPath: /mosaic/configure/plugins/sidebar-plugin.mdx - name: SidebarPlugin - data: - level: 3 - link: /mosaic/configure/plugins/sidebar-plugin - childNodes: [] - - id: /mosaic/configure/plugins/site-map-plugin - fullPath: /mosaic/configure/plugins/site-map-plugin.mdx - name: SiteMapPlugin - data: - level: 3 - link: /mosaic/configure/plugins/site-map-plugin - childNodes: [] - - id: /mosaic/configure/plugins/tag-plugin - fullPath: /mosaic/configure/plugins/tag-plugin.mdx - name: $TagPlugin - data: - level: 3 - link: /mosaic/configure/plugins/tag-plugin - childNodes: [] - - id: /mosaic/configure/plugins/toc-plugin - fullPath: /mosaic/configure/plugins/toc-plugin.mdx - name: TableOfContentsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/toc-plugin - childNodes: [] ---- -# {meta.title} - -Todo... diff --git a/packages/site/snapshots/latest/mosaic/configure/layouts/shared-config.json b/packages/site/snapshots/latest/mosaic/configure/layouts/shared-config.json deleted file mode 120000 index da3ba444a..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/layouts/shared-config.json +++ /dev/null @@ -1 +0,0 @@ -../../shared-config.json \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/configure/modes/active b/packages/site/snapshots/latest/mosaic/configure/modes/active deleted file mode 120000 index 81b52f1d9..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/modes/active +++ /dev/null @@ -1 +0,0 @@ -active.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/configure/modes/active.mdx b/packages/site/snapshots/latest/mosaic/configure/modes/active.mdx deleted file mode 100644 index 8b38c7483..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/modes/active.mdx +++ /dev/null @@ -1,403 +0,0 @@ ---- -title: Active mode -mode: active -layout: DetailTechnical -lastModified: 1699883563207 -fullPath: /mosaic/configure/modes/active.mdx -route: /mosaic/configure/modes/active -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Configure - path: /mosaic/configure/index - id: /mosaic/configure/index.mdx - - label: Modes of operation - path: /mosaic/configure/modes/index - id: /mosaic/configure/modes/index.mdx - - label: Active mode - path: /mosaic/configure/modes/active - id: /mosaic/configure/modes/active.mdx -readingTime: - text: 1 min read - minutes: 0.975 - time: 58500 - words: 195 -tableOfContents: - - level: 2 - id: configuring-your-content-sources - text: Configuring your content sources - - level: 2 - id: pull-your-local-content - text: Pull your local content - - level: 2 - id: pull-your-remote-content - text: Pull your remote content -navigation: - prev: - title: Modes of operation - route: /mosaic/configure/modes/index - next: - title: Snapshot file mode - route: /mosaic/configure/modes/snapshot-file -sidebarData: - - id: /mosaic/configure/index - fullPath: /mosaic/configure/index.mdx - name: Configure - priority: 4 - data: - level: 2 - link: /mosaic/configure/index - childNodes: [] - - id: /mosaic/configure/modes/index - fullPath: /mosaic/configure/modes/index.mdx - name: Modes of operation - priority: 4 - data: - level: 3 - link: /mosaic/configure/modes/index - childNodes: - - id: /mosaic/configure/modes/active - fullPath: /mosaic/configure/modes/active.mdx - name: Active mode - data: - level: 3 - link: /mosaic/configure/modes/active - childNodes: [] - - id: /mosaic/configure/modes/snapshot-file - fullPath: /mosaic/configure/modes/snapshot-file.mdx - name: Snapshot file mode - data: - level: 3 - link: /mosaic/configure/modes/snapshot-file - childNodes: [] - - id: /mosaic/configure/modes/snapshot-s3 - fullPath: /mosaic/configure/modes/snapshot-s3.mdx - name: Snapshot AWS/S3 mode - data: - level: 3 - link: /mosaic/configure/modes/snapshot-s3 - childNodes: [] - - id: /mosaic/configure/theme/index - fullPath: /mosaic/configure/theme/index.mdx - name: Theming Your Site - priority: 4 - data: - level: 3 - link: /mosaic/configure/theme/index - childNodes: - - id: /mosaic/configure/theme/custom-css - fullPath: /mosaic/configure/theme/custom-css.mdx - name: Custom CSS - priority: 3 - data: - level: 3 - link: /mosaic/configure/theme/custom-css - childNodes: [] - - id: /mosaic/configure/theme/custom-components - fullPath: /mosaic/configure/theme/custom-components.mdx - name: Custom Components - priority: 2 - data: - level: 3 - link: /mosaic/configure/theme/custom-components - childNodes: [] - - id: /mosaic/configure/admin/index - fullPath: /mosaic/configure/admin/index.mdx - name: Admin - priority: 3 - data: - level: 3 - link: /mosaic/configure/admin/index - childNodes: [] - - id: /mosaic/configure/sources/index - fullPath: /mosaic/configure/sources/index.mdx - name: Sources - priority: 3 - data: - level: 3 - link: /mosaic/configure/sources/index - childNodes: - - id: /mosaic/configure/sources/schedules - fullPath: /mosaic/configure/sources/schedules.mdx - name: Schedules - priority: 4 - data: - level: 3 - link: /mosaic/configure/sources/schedules - childNodes: [] - - id: /mosaic/configure/sources/local-folder-source - fullPath: /mosaic/configure/sources/local-folder-source.mdx - name: Local Folder Source - priority: 3 - data: - level: 3 - link: /mosaic/configure/sources/local-folder-source - childNodes: [] - - id: /mosaic/configure/sources/git-repo-source - fullPath: /mosaic/configure/sources/git-repo-source.mdx - name: Git Repo Source - priority: 2 - data: - level: 3 - link: /mosaic/configure/sources/git-repo-source - childNodes: [] - - id: /mosaic/configure/sources/http-source - fullPath: /mosaic/configure/sources/http-source.mdx - name: HTTP Source - priority: 1 - data: - level: 3 - link: /mosaic/configure/sources/http-source - childNodes: [] - - id: /mosaic/configure/layouts/index - fullPath: /mosaic/configure/layouts/index.mdx - name: Layouts - priority: 2 - data: - level: 3 - link: /mosaic/configure/layouts/index - childNodes: - - id: /mosaic/configure/layouts/detail-highlight - fullPath: /mosaic/configure/layouts/detail-highlight.mdx - name: Detail Highlight - data: - level: 3 - link: /mosaic/configure/layouts/detail-highlight - childNodes: [] - - id: /mosaic/configure/layouts/detail-overview - fullPath: /mosaic/configure/layouts/detail-overview.mdx - name: Detail Overview - data: - level: 3 - link: /mosaic/configure/layouts/detail-overview - childNodes: [] - - id: /mosaic/configure/layouts/detail-technical - fullPath: /mosaic/configure/layouts/detail-technical.mdx - name: Detail Technical - data: - level: 3 - link: /mosaic/configure/layouts/detail-technical - childNodes: [] - - id: /mosaic/configure/layouts/landing - fullPath: /mosaic/configure/layouts/landing.mdx - name: Landing Layout - data: - level: 3 - link: /mosaic/configure/layouts/landing - childNodes: [] - - id: /mosaic/configure/layouts/product-discover - fullPath: /mosaic/configure/layouts/product-discover.mdx - name: Product Discover Layout - data: - level: 3 - link: /mosaic/configure/layouts/product-discover - childNodes: [] - - id: /mosaic/configure/layouts/product-preview - fullPath: /mosaic/configure/layouts/product-preview.mdx - name: Product Preview Layout - data: - level: 3 - link: /mosaic/configure/layouts/product-preview - childNodes: [] - - id: /mosaic/configure/plugins/index - fullPath: /mosaic/configure/plugins/index.mdx - name: Plugins - priority: 1 - data: - level: 3 - link: /mosaic/configure/plugins/index - childNodes: - - id: /mosaic/configure/plugins/lifecycle/index - fullPath: /mosaic/configure/plugins/lifecycle/index.mdx - name: Lifecycle Events - priority: 1 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/index - childNodes: - - id: /mosaic/configure/plugins/lifecycle/after-source - fullPath: /mosaic/configure/plugins/lifecycle/after-source.mdx - name: $afterSource - priority: 5 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/after-source - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/before-send - fullPath: /mosaic/configure/plugins/lifecycle/before-send.mdx - name: $beforeSend - priority: 4 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/before-send - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/after-update - fullPath: /mosaic/configure/plugins/lifecycle/after-update.mdx - name: afterUpdate - priority: 3 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/after-update - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/should-clear-cache - fullPath: /mosaic/configure/plugins/lifecycle/should-clear-cache.mdx - name: shouldClearCache - priority: 2 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/should-clear-cache - childNodes: [] - - id: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources - fullPath: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources.mdx - name: shouldUpdateNamespaceSources - priority: 1 - data: - level: 4 - link: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources - childNodes: [] - - id: /mosaic/configure/plugins/alias-plugin - fullPath: /mosaic/configure/plugins/alias-plugin.mdx - name: $AliasPlugin - data: - level: 3 - link: /mosaic/configure/plugins/alias-plugin - childNodes: [] - - id: /mosaic/configure/plugins/breadcrumbs-plugin - fullPath: /mosaic/configure/plugins/breadcrumbs-plugin.mdx - name: BreadcrumbsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/breadcrumbs-plugin - childNodes: [] - - id: /mosaic/configure/plugins/broken-links-plugin - fullPath: /mosaic/configure/plugins/broken-links-plugin.mdx - name: BrokenLinksPlugin - data: - level: 3 - link: /mosaic/configure/plugins/broken-links-plugin - childNodes: [] - - id: /mosaic/configure/plugins/codemod-plugin - fullPath: /mosaic/configure/plugins/codemod-plugin.mdx - name: $CodeModPlugin - data: - level: 3 - link: /mosaic/configure/plugins/codemod-plugin - childNodes: [] - - id: /mosaic/configure/plugins/lazy-page-plugin - fullPath: /mosaic/configure/plugins/lazy-page-plugin.mdx - name: LazyPagePlugin - data: - level: 3 - link: /mosaic/configure/plugins/lazy-page-plugin - childNodes: [] - - id: /mosaic/configure/plugins/pages-wthout-extensions-plugin - fullPath: /mosaic/configure/plugins/pages-wthout-extensions-plugin.mdx - name: PagesWithoutFileExtPlugin - data: - level: 3 - link: /mosaic/configure/plugins/pages-wthout-extensions-plugin - childNodes: [] - - id: /mosaic/configure/plugins/public-assets-plugin - fullPath: /mosaic/configure/plugins/public-assets-plugin.mdx - name: PublicAssetsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/public-assets-plugin - childNodes: [] - - id: /mosaic/configure/plugins/reading-time-plugin - fullPath: /mosaic/configure/plugins/reading-time-plugin.mdx - name: ReadingTimePlugin - data: - level: 3 - link: /mosaic/configure/plugins/reading-time-plugin - childNodes: [] - - id: /mosaic/configure/plugins/ref-plugin - fullPath: /mosaic/configure/plugins/ref-plugin.mdx - name: $RefPlugin - data: - level: 3 - link: /mosaic/configure/plugins/ref-plugin - childNodes: [] - - id: /mosaic/configure/plugins/search-index-plugin - fullPath: /mosaic/configure/plugins/search-index-plugin.mdx - name: SearchIndexPlugin - data: - level: 3 - link: /mosaic/configure/plugins/search-index-plugin - childNodes: [] - - id: /mosaic/configure/plugins/shared-config-plugin - fullPath: /mosaic/configure/plugins/shared-config-plugin.mdx - name: SharedConfigPlugin - data: - level: 3 - link: /mosaic/configure/plugins/shared-config-plugin - childNodes: [] - - id: /mosaic/configure/plugins/sidebar-plugin - fullPath: /mosaic/configure/plugins/sidebar-plugin.mdx - name: SidebarPlugin - data: - level: 3 - link: /mosaic/configure/plugins/sidebar-plugin - childNodes: [] - - id: /mosaic/configure/plugins/site-map-plugin - fullPath: /mosaic/configure/plugins/site-map-plugin.mdx - name: SiteMapPlugin - data: - level: 3 - link: /mosaic/configure/plugins/site-map-plugin - childNodes: [] - - id: /mosaic/configure/plugins/tag-plugin - fullPath: /mosaic/configure/plugins/tag-plugin.mdx - name: $TagPlugin - data: - level: 3 - link: /mosaic/configure/plugins/tag-plugin - childNodes: [] - - id: /mosaic/configure/plugins/toc-plugin - fullPath: /mosaic/configure/plugins/toc-plugin.mdx - name: TableOfContentsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/toc-plugin - childNodes: [] ---- -# {meta.title} - -In `active` mode content can be *pulled* from heterogeneous data sources and normalized via plugins, to the configured components/theme. -As your content changes, the site will *re-pull* the content and update your site in real-time. - -The standard generated site comes with 2 sources to demonstrate, how 'active' mode work. - -* a local source, which loads content from `./docs` -* a remote source, which loads content from a [sample Github repository](https://github.com/jpmorganchase/mosaic/tree/main/docs) - -## Configuring your content sources - -All content is composed together within a *namespace*. - -A *namespace* is the scope for aggregated content, represented by the root path. -e.g Our sample docs are aggregated into a *namespace* called `mosaic` and served by the user journey `http://localhost:3000/mosaic` - -Mosaic doc sources are defined by a file called `mosaic.config.mjs` - -Here is how that might look for a standard site. - -## Pull your local content - -To tryout local content creation, add a file called`./docs/index.mdx` - -The load `http://localhost:3000/local` - -Each directory should contain an `index.mdx` which is the default page, when a page is loaded without a path - -Now create other pages and subdirectories and explore how Mosaic, builds your user-journeys from your fileset. - -## Pull your remote content - -To tryout remote content creation, your standard site comes pre-configured to load our Mosaic sample docs. - -Edit the `mosaic.config.mjs` and change your `repoUrl` and `branch` to pull content from other repos. diff --git a/packages/site/snapshots/latest/mosaic/configure/modes/index b/packages/site/snapshots/latest/mosaic/configure/modes/index deleted file mode 120000 index 34f13104b..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/modes/index +++ /dev/null @@ -1 +0,0 @@ -index.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/configure/modes/index.mdx b/packages/site/snapshots/latest/mosaic/configure/modes/index.mdx deleted file mode 100644 index 6500a2217..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/modes/index.mdx +++ /dev/null @@ -1,403 +0,0 @@ ---- -title: Modes of operation -layout: DetailTechnical -sidebar: - priority: 4 -data: - modes: - - active - - snapshot-file - - snapshot-s3 -lastModified: 1699883563208 -fullPath: /mosaic/configure/modes/index.mdx -route: /mosaic/configure/modes/index -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Configure - path: /mosaic/configure/index - id: /mosaic/configure/index.mdx - - label: Modes of operation - path: /mosaic/configure/modes/index - id: /mosaic/configure/modes/index.mdx -readingTime: - text: 1 min read - minutes: 0.485 - time: 29100 - words: 97 -tableOfContents: - - level: 2 - id: active-updates - text: Active updates - - level: 2 - id: static-content - text: Static content - - level: 3 - id: file-based-snapshots - text: File based snapshots - - level: 3 - id: s3-based-snapshots - text: S3 based snapshots -navigation: - next: - title: Active mode - route: /mosaic/configure/modes/active -sidebarData: - - id: /mosaic/configure/index - fullPath: /mosaic/configure/index.mdx - name: Configure - priority: 4 - data: - level: 2 - link: /mosaic/configure/index - childNodes: [] - - id: /mosaic/configure/modes/index - fullPath: /mosaic/configure/modes/index.mdx - name: Modes of operation - priority: 4 - data: - level: 3 - link: /mosaic/configure/modes/index - childNodes: - - id: /mosaic/configure/modes/active - fullPath: /mosaic/configure/modes/active.mdx - name: Active mode - data: - level: 3 - link: /mosaic/configure/modes/active - childNodes: [] - - id: /mosaic/configure/modes/snapshot-file - fullPath: /mosaic/configure/modes/snapshot-file.mdx - name: Snapshot file mode - data: - level: 3 - link: /mosaic/configure/modes/snapshot-file - childNodes: [] - - id: /mosaic/configure/modes/snapshot-s3 - fullPath: /mosaic/configure/modes/snapshot-s3.mdx - name: Snapshot AWS/S3 mode - data: - level: 3 - link: /mosaic/configure/modes/snapshot-s3 - childNodes: [] - - id: /mosaic/configure/theme/index - fullPath: /mosaic/configure/theme/index.mdx - name: Theming Your Site - priority: 4 - data: - level: 3 - link: /mosaic/configure/theme/index - childNodes: - - id: /mosaic/configure/theme/custom-css - fullPath: /mosaic/configure/theme/custom-css.mdx - name: Custom CSS - priority: 3 - data: - level: 3 - link: /mosaic/configure/theme/custom-css - childNodes: [] - - id: /mosaic/configure/theme/custom-components - fullPath: /mosaic/configure/theme/custom-components.mdx - name: Custom Components - priority: 2 - data: - level: 3 - link: /mosaic/configure/theme/custom-components - childNodes: [] - - id: /mosaic/configure/admin/index - fullPath: /mosaic/configure/admin/index.mdx - name: Admin - priority: 3 - data: - level: 3 - link: /mosaic/configure/admin/index - childNodes: [] - - id: /mosaic/configure/sources/index - fullPath: /mosaic/configure/sources/index.mdx - name: Sources - priority: 3 - data: - level: 3 - link: /mosaic/configure/sources/index - childNodes: - - id: /mosaic/configure/sources/schedules - fullPath: /mosaic/configure/sources/schedules.mdx - name: Schedules - priority: 4 - data: - level: 3 - link: /mosaic/configure/sources/schedules - childNodes: [] - - id: /mosaic/configure/sources/local-folder-source - fullPath: /mosaic/configure/sources/local-folder-source.mdx - name: Local Folder Source - priority: 3 - data: - level: 3 - link: /mosaic/configure/sources/local-folder-source - childNodes: [] - - id: /mosaic/configure/sources/git-repo-source - fullPath: /mosaic/configure/sources/git-repo-source.mdx - name: Git Repo Source - priority: 2 - data: - level: 3 - link: /mosaic/configure/sources/git-repo-source - childNodes: [] - - id: /mosaic/configure/sources/http-source - fullPath: /mosaic/configure/sources/http-source.mdx - name: HTTP Source - priority: 1 - data: - level: 3 - link: /mosaic/configure/sources/http-source - childNodes: [] - - id: /mosaic/configure/layouts/index - fullPath: /mosaic/configure/layouts/index.mdx - name: Layouts - priority: 2 - data: - level: 3 - link: /mosaic/configure/layouts/index - childNodes: - - id: /mosaic/configure/layouts/detail-highlight - fullPath: /mosaic/configure/layouts/detail-highlight.mdx - name: Detail Highlight - data: - level: 3 - link: /mosaic/configure/layouts/detail-highlight - childNodes: [] - - id: /mosaic/configure/layouts/detail-overview - fullPath: /mosaic/configure/layouts/detail-overview.mdx - name: Detail Overview - data: - level: 3 - link: /mosaic/configure/layouts/detail-overview - childNodes: [] - - id: /mosaic/configure/layouts/detail-technical - fullPath: /mosaic/configure/layouts/detail-technical.mdx - name: Detail Technical - data: - level: 3 - link: /mosaic/configure/layouts/detail-technical - childNodes: [] - - id: /mosaic/configure/layouts/landing - fullPath: /mosaic/configure/layouts/landing.mdx - name: Landing Layout - data: - level: 3 - link: /mosaic/configure/layouts/landing - childNodes: [] - - id: /mosaic/configure/layouts/product-discover - fullPath: /mosaic/configure/layouts/product-discover.mdx - name: Product Discover Layout - data: - level: 3 - link: /mosaic/configure/layouts/product-discover - childNodes: [] - - id: /mosaic/configure/layouts/product-preview - fullPath: /mosaic/configure/layouts/product-preview.mdx - name: Product Preview Layout - data: - level: 3 - link: /mosaic/configure/layouts/product-preview - childNodes: [] - - id: /mosaic/configure/plugins/index - fullPath: /mosaic/configure/plugins/index.mdx - name: Plugins - priority: 1 - data: - level: 3 - link: /mosaic/configure/plugins/index - childNodes: - - id: /mosaic/configure/plugins/lifecycle/index - fullPath: /mosaic/configure/plugins/lifecycle/index.mdx - name: Lifecycle Events - priority: 1 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/index - childNodes: - - id: /mosaic/configure/plugins/lifecycle/after-source - fullPath: /mosaic/configure/plugins/lifecycle/after-source.mdx - name: $afterSource - priority: 5 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/after-source - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/before-send - fullPath: /mosaic/configure/plugins/lifecycle/before-send.mdx - name: $beforeSend - priority: 4 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/before-send - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/after-update - fullPath: /mosaic/configure/plugins/lifecycle/after-update.mdx - name: afterUpdate - priority: 3 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/after-update - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/should-clear-cache - fullPath: /mosaic/configure/plugins/lifecycle/should-clear-cache.mdx - name: shouldClearCache - priority: 2 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/should-clear-cache - childNodes: [] - - id: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources - fullPath: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources.mdx - name: shouldUpdateNamespaceSources - priority: 1 - data: - level: 4 - link: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources - childNodes: [] - - id: /mosaic/configure/plugins/alias-plugin - fullPath: /mosaic/configure/plugins/alias-plugin.mdx - name: $AliasPlugin - data: - level: 3 - link: /mosaic/configure/plugins/alias-plugin - childNodes: [] - - id: /mosaic/configure/plugins/breadcrumbs-plugin - fullPath: /mosaic/configure/plugins/breadcrumbs-plugin.mdx - name: BreadcrumbsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/breadcrumbs-plugin - childNodes: [] - - id: /mosaic/configure/plugins/broken-links-plugin - fullPath: /mosaic/configure/plugins/broken-links-plugin.mdx - name: BrokenLinksPlugin - data: - level: 3 - link: /mosaic/configure/plugins/broken-links-plugin - childNodes: [] - - id: /mosaic/configure/plugins/codemod-plugin - fullPath: /mosaic/configure/plugins/codemod-plugin.mdx - name: $CodeModPlugin - data: - level: 3 - link: /mosaic/configure/plugins/codemod-plugin - childNodes: [] - - id: /mosaic/configure/plugins/lazy-page-plugin - fullPath: /mosaic/configure/plugins/lazy-page-plugin.mdx - name: LazyPagePlugin - data: - level: 3 - link: /mosaic/configure/plugins/lazy-page-plugin - childNodes: [] - - id: /mosaic/configure/plugins/pages-wthout-extensions-plugin - fullPath: /mosaic/configure/plugins/pages-wthout-extensions-plugin.mdx - name: PagesWithoutFileExtPlugin - data: - level: 3 - link: /mosaic/configure/plugins/pages-wthout-extensions-plugin - childNodes: [] - - id: /mosaic/configure/plugins/public-assets-plugin - fullPath: /mosaic/configure/plugins/public-assets-plugin.mdx - name: PublicAssetsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/public-assets-plugin - childNodes: [] - - id: /mosaic/configure/plugins/reading-time-plugin - fullPath: /mosaic/configure/plugins/reading-time-plugin.mdx - name: ReadingTimePlugin - data: - level: 3 - link: /mosaic/configure/plugins/reading-time-plugin - childNodes: [] - - id: /mosaic/configure/plugins/ref-plugin - fullPath: /mosaic/configure/plugins/ref-plugin.mdx - name: $RefPlugin - data: - level: 3 - link: /mosaic/configure/plugins/ref-plugin - childNodes: [] - - id: /mosaic/configure/plugins/search-index-plugin - fullPath: /mosaic/configure/plugins/search-index-plugin.mdx - name: SearchIndexPlugin - data: - level: 3 - link: /mosaic/configure/plugins/search-index-plugin - childNodes: [] - - id: /mosaic/configure/plugins/shared-config-plugin - fullPath: /mosaic/configure/plugins/shared-config-plugin.mdx - name: SharedConfigPlugin - data: - level: 3 - link: /mosaic/configure/plugins/shared-config-plugin - childNodes: [] - - id: /mosaic/configure/plugins/sidebar-plugin - fullPath: /mosaic/configure/plugins/sidebar-plugin.mdx - name: SidebarPlugin - data: - level: 3 - link: /mosaic/configure/plugins/sidebar-plugin - childNodes: [] - - id: /mosaic/configure/plugins/site-map-plugin - fullPath: /mosaic/configure/plugins/site-map-plugin.mdx - name: SiteMapPlugin - data: - level: 3 - link: /mosaic/configure/plugins/site-map-plugin - childNodes: [] - - id: /mosaic/configure/plugins/tag-plugin - fullPath: /mosaic/configure/plugins/tag-plugin.mdx - name: $TagPlugin - data: - level: 3 - link: /mosaic/configure/plugins/tag-plugin - childNodes: [] - - id: /mosaic/configure/plugins/toc-plugin - fullPath: /mosaic/configure/plugins/toc-plugin.mdx - name: TableOfContentsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/toc-plugin - childNodes: [] ---- -# {meta.title} - -Mosaic can operate in 3 different modes - -* `active` -* `snapshot-file` -* `snapshot-s3` - -## Active updates - -In *active* mode, content updates in real-time. - -*active* mode content is pulled at configured intervals in real-time, as defined by `mosaic.config.mjs`. - -Read the [active](./active) configuration docs. - -## Static content - -Consider a snapshot as a directory of static content previously pulled from your content sources, which does not update itself. - -In a snapshot mode, the snapshot does update itself. - -### File based snapshots - -In `snapshot-file` mode, immutable snapshots of content are loaded at startup from the local file-system. - -Read the [snapshot-file](./snapshot-file) configuration docs. - -### S3 based snapshots - -In `snapshot-s3` mode, snapshots of content are loaded at startup from a remote S3 bucket. - -Read the [snapshot-s3](./snapshot-s3) configuration docs. diff --git a/packages/site/snapshots/latest/mosaic/configure/modes/shared-config.json b/packages/site/snapshots/latest/mosaic/configure/modes/shared-config.json deleted file mode 120000 index da3ba444a..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/modes/shared-config.json +++ /dev/null @@ -1 +0,0 @@ -../../shared-config.json \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/configure/modes/snapshot-file b/packages/site/snapshots/latest/mosaic/configure/modes/snapshot-file deleted file mode 120000 index a3dea6db6..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/modes/snapshot-file +++ /dev/null @@ -1 +0,0 @@ -snapshot-file.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/configure/modes/snapshot-file.mdx b/packages/site/snapshots/latest/mosaic/configure/modes/snapshot-file.mdx deleted file mode 100644 index 66b413579..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/modes/snapshot-file.mdx +++ /dev/null @@ -1,382 +0,0 @@ ---- -title: Snapshot file mode -mode: snapshot-file -layout: DetailTechnical -lastModified: 1699883563208 -fullPath: /mosaic/configure/modes/snapshot-file.mdx -route: /mosaic/configure/modes/snapshot-file -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Configure - path: /mosaic/configure/index - id: /mosaic/configure/index.mdx - - label: Modes of operation - path: /mosaic/configure/modes/index - id: /mosaic/configure/modes/index.mdx - - label: Snapshot file mode - path: /mosaic/configure/modes/snapshot-file - id: /mosaic/configure/modes/snapshot-file.mdx -readingTime: - text: 1 min read - minutes: 0.32 - time: 19200 - words: 64 -tableOfContents: - - level: 2 - id: generating-a-snapshot - text: Generating a snapshot -navigation: - prev: - title: Active mode - route: /mosaic/configure/modes/active - next: - title: Snapshot AWS/S3 mode - route: /mosaic/configure/modes/snapshot-s3 -sidebarData: - - id: /mosaic/configure/index - fullPath: /mosaic/configure/index.mdx - name: Configure - priority: 4 - data: - level: 2 - link: /mosaic/configure/index - childNodes: [] - - id: /mosaic/configure/modes/index - fullPath: /mosaic/configure/modes/index.mdx - name: Modes of operation - priority: 4 - data: - level: 3 - link: /mosaic/configure/modes/index - childNodes: - - id: /mosaic/configure/modes/active - fullPath: /mosaic/configure/modes/active.mdx - name: Active mode - data: - level: 3 - link: /mosaic/configure/modes/active - childNodes: [] - - id: /mosaic/configure/modes/snapshot-file - fullPath: /mosaic/configure/modes/snapshot-file.mdx - name: Snapshot file mode - data: - level: 3 - link: /mosaic/configure/modes/snapshot-file - childNodes: [] - - id: /mosaic/configure/modes/snapshot-s3 - fullPath: /mosaic/configure/modes/snapshot-s3.mdx - name: Snapshot AWS/S3 mode - data: - level: 3 - link: /mosaic/configure/modes/snapshot-s3 - childNodes: [] - - id: /mosaic/configure/theme/index - fullPath: /mosaic/configure/theme/index.mdx - name: Theming Your Site - priority: 4 - data: - level: 3 - link: /mosaic/configure/theme/index - childNodes: - - id: /mosaic/configure/theme/custom-css - fullPath: /mosaic/configure/theme/custom-css.mdx - name: Custom CSS - priority: 3 - data: - level: 3 - link: /mosaic/configure/theme/custom-css - childNodes: [] - - id: /mosaic/configure/theme/custom-components - fullPath: /mosaic/configure/theme/custom-components.mdx - name: Custom Components - priority: 2 - data: - level: 3 - link: /mosaic/configure/theme/custom-components - childNodes: [] - - id: /mosaic/configure/admin/index - fullPath: /mosaic/configure/admin/index.mdx - name: Admin - priority: 3 - data: - level: 3 - link: /mosaic/configure/admin/index - childNodes: [] - - id: /mosaic/configure/sources/index - fullPath: /mosaic/configure/sources/index.mdx - name: Sources - priority: 3 - data: - level: 3 - link: /mosaic/configure/sources/index - childNodes: - - id: /mosaic/configure/sources/schedules - fullPath: /mosaic/configure/sources/schedules.mdx - name: Schedules - priority: 4 - data: - level: 3 - link: /mosaic/configure/sources/schedules - childNodes: [] - - id: /mosaic/configure/sources/local-folder-source - fullPath: /mosaic/configure/sources/local-folder-source.mdx - name: Local Folder Source - priority: 3 - data: - level: 3 - link: /mosaic/configure/sources/local-folder-source - childNodes: [] - - id: /mosaic/configure/sources/git-repo-source - fullPath: /mosaic/configure/sources/git-repo-source.mdx - name: Git Repo Source - priority: 2 - data: - level: 3 - link: /mosaic/configure/sources/git-repo-source - childNodes: [] - - id: /mosaic/configure/sources/http-source - fullPath: /mosaic/configure/sources/http-source.mdx - name: HTTP Source - priority: 1 - data: - level: 3 - link: /mosaic/configure/sources/http-source - childNodes: [] - - id: /mosaic/configure/layouts/index - fullPath: /mosaic/configure/layouts/index.mdx - name: Layouts - priority: 2 - data: - level: 3 - link: /mosaic/configure/layouts/index - childNodes: - - id: /mosaic/configure/layouts/detail-highlight - fullPath: /mosaic/configure/layouts/detail-highlight.mdx - name: Detail Highlight - data: - level: 3 - link: /mosaic/configure/layouts/detail-highlight - childNodes: [] - - id: /mosaic/configure/layouts/detail-overview - fullPath: /mosaic/configure/layouts/detail-overview.mdx - name: Detail Overview - data: - level: 3 - link: /mosaic/configure/layouts/detail-overview - childNodes: [] - - id: /mosaic/configure/layouts/detail-technical - fullPath: /mosaic/configure/layouts/detail-technical.mdx - name: Detail Technical - data: - level: 3 - link: /mosaic/configure/layouts/detail-technical - childNodes: [] - - id: /mosaic/configure/layouts/landing - fullPath: /mosaic/configure/layouts/landing.mdx - name: Landing Layout - data: - level: 3 - link: /mosaic/configure/layouts/landing - childNodes: [] - - id: /mosaic/configure/layouts/product-discover - fullPath: /mosaic/configure/layouts/product-discover.mdx - name: Product Discover Layout - data: - level: 3 - link: /mosaic/configure/layouts/product-discover - childNodes: [] - - id: /mosaic/configure/layouts/product-preview - fullPath: /mosaic/configure/layouts/product-preview.mdx - name: Product Preview Layout - data: - level: 3 - link: /mosaic/configure/layouts/product-preview - childNodes: [] - - id: /mosaic/configure/plugins/index - fullPath: /mosaic/configure/plugins/index.mdx - name: Plugins - priority: 1 - data: - level: 3 - link: /mosaic/configure/plugins/index - childNodes: - - id: /mosaic/configure/plugins/lifecycle/index - fullPath: /mosaic/configure/plugins/lifecycle/index.mdx - name: Lifecycle Events - priority: 1 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/index - childNodes: - - id: /mosaic/configure/plugins/lifecycle/after-source - fullPath: /mosaic/configure/plugins/lifecycle/after-source.mdx - name: $afterSource - priority: 5 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/after-source - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/before-send - fullPath: /mosaic/configure/plugins/lifecycle/before-send.mdx - name: $beforeSend - priority: 4 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/before-send - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/after-update - fullPath: /mosaic/configure/plugins/lifecycle/after-update.mdx - name: afterUpdate - priority: 3 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/after-update - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/should-clear-cache - fullPath: /mosaic/configure/plugins/lifecycle/should-clear-cache.mdx - name: shouldClearCache - priority: 2 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/should-clear-cache - childNodes: [] - - id: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources - fullPath: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources.mdx - name: shouldUpdateNamespaceSources - priority: 1 - data: - level: 4 - link: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources - childNodes: [] - - id: /mosaic/configure/plugins/alias-plugin - fullPath: /mosaic/configure/plugins/alias-plugin.mdx - name: $AliasPlugin - data: - level: 3 - link: /mosaic/configure/plugins/alias-plugin - childNodes: [] - - id: /mosaic/configure/plugins/breadcrumbs-plugin - fullPath: /mosaic/configure/plugins/breadcrumbs-plugin.mdx - name: BreadcrumbsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/breadcrumbs-plugin - childNodes: [] - - id: /mosaic/configure/plugins/broken-links-plugin - fullPath: /mosaic/configure/plugins/broken-links-plugin.mdx - name: BrokenLinksPlugin - data: - level: 3 - link: /mosaic/configure/plugins/broken-links-plugin - childNodes: [] - - id: /mosaic/configure/plugins/codemod-plugin - fullPath: /mosaic/configure/plugins/codemod-plugin.mdx - name: $CodeModPlugin - data: - level: 3 - link: /mosaic/configure/plugins/codemod-plugin - childNodes: [] - - id: /mosaic/configure/plugins/lazy-page-plugin - fullPath: /mosaic/configure/plugins/lazy-page-plugin.mdx - name: LazyPagePlugin - data: - level: 3 - link: /mosaic/configure/plugins/lazy-page-plugin - childNodes: [] - - id: /mosaic/configure/plugins/pages-wthout-extensions-plugin - fullPath: /mosaic/configure/plugins/pages-wthout-extensions-plugin.mdx - name: PagesWithoutFileExtPlugin - data: - level: 3 - link: /mosaic/configure/plugins/pages-wthout-extensions-plugin - childNodes: [] - - id: /mosaic/configure/plugins/public-assets-plugin - fullPath: /mosaic/configure/plugins/public-assets-plugin.mdx - name: PublicAssetsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/public-assets-plugin - childNodes: [] - - id: /mosaic/configure/plugins/reading-time-plugin - fullPath: /mosaic/configure/plugins/reading-time-plugin.mdx - name: ReadingTimePlugin - data: - level: 3 - link: /mosaic/configure/plugins/reading-time-plugin - childNodes: [] - - id: /mosaic/configure/plugins/ref-plugin - fullPath: /mosaic/configure/plugins/ref-plugin.mdx - name: $RefPlugin - data: - level: 3 - link: /mosaic/configure/plugins/ref-plugin - childNodes: [] - - id: /mosaic/configure/plugins/search-index-plugin - fullPath: /mosaic/configure/plugins/search-index-plugin.mdx - name: SearchIndexPlugin - data: - level: 3 - link: /mosaic/configure/plugins/search-index-plugin - childNodes: [] - - id: /mosaic/configure/plugins/shared-config-plugin - fullPath: /mosaic/configure/plugins/shared-config-plugin.mdx - name: SharedConfigPlugin - data: - level: 3 - link: /mosaic/configure/plugins/shared-config-plugin - childNodes: [] - - id: /mosaic/configure/plugins/sidebar-plugin - fullPath: /mosaic/configure/plugins/sidebar-plugin.mdx - name: SidebarPlugin - data: - level: 3 - link: /mosaic/configure/plugins/sidebar-plugin - childNodes: [] - - id: /mosaic/configure/plugins/site-map-plugin - fullPath: /mosaic/configure/plugins/site-map-plugin.mdx - name: SiteMapPlugin - data: - level: 3 - link: /mosaic/configure/plugins/site-map-plugin - childNodes: [] - - id: /mosaic/configure/plugins/tag-plugin - fullPath: /mosaic/configure/plugins/tag-plugin.mdx - name: $TagPlugin - data: - level: 3 - link: /mosaic/configure/plugins/tag-plugin - childNodes: [] - - id: /mosaic/configure/plugins/toc-plugin - fullPath: /mosaic/configure/plugins/toc-plugin.mdx - name: TableOfContentsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/toc-plugin - childNodes: [] ---- -# {meta.title} - -In `snapshot-file` mode a local immutable snapshot can be loaded by the site. Typically, the snapshot and the site are -deployed together and upon startup the site can load the snapshot from the local file-system. - -To use `snapshot-file` mode - -``` -export MOSAIC_MODE="snapshot-file" -export MOSAIC_SNAPSHOT_DIR="./snapshot/latest" -``` - -## Generating a snapshot - -To generate a snapshot, run - -``` -yarn gen:snapshot -``` - -Commit the snapshot to your Git repo and push the site+snapshot to your Git repo, within the same branch. diff --git a/packages/site/snapshots/latest/mosaic/configure/modes/snapshot-s3 b/packages/site/snapshots/latest/mosaic/configure/modes/snapshot-s3 deleted file mode 120000 index 561e1f22b..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/modes/snapshot-s3 +++ /dev/null @@ -1 +0,0 @@ -snapshot-s3.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/configure/modes/snapshot-s3.mdx b/packages/site/snapshots/latest/mosaic/configure/modes/snapshot-s3.mdx deleted file mode 100644 index 7dbe6fa55..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/modes/snapshot-s3.mdx +++ /dev/null @@ -1,393 +0,0 @@ ---- -title: Snapshot AWS/S3 mode -mode: snapshot-s3 -layout: DetailTechnical -lastModified: 1699883563209 -fullPath: /mosaic/configure/modes/snapshot-s3.mdx -route: /mosaic/configure/modes/snapshot-s3 -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Configure - path: /mosaic/configure/index - id: /mosaic/configure/index.mdx - - label: Modes of operation - path: /mosaic/configure/modes/index - id: /mosaic/configure/modes/index.mdx - - label: Snapshot AWS/S3 mode - path: /mosaic/configure/modes/snapshot-s3 - id: /mosaic/configure/modes/snapshot-s3.mdx -readingTime: - text: 1 min read - minutes: 0.335 - time: 20100 - words: 67 -tableOfContents: - - level: 2 - id: generating-a-snapshot - text: Generating a snapshot - - level: 2 - id: uploading-a-snapshot-to-s3 - text: Uploading a snapshot to S3 -navigation: - prev: - title: Snapshot file mode - route: /mosaic/configure/modes/snapshot-file - next: - title: Theming Your Site - route: /mosaic/configure/theme/index -sidebarData: - - id: /mosaic/configure/index - fullPath: /mosaic/configure/index.mdx - name: Configure - priority: 4 - data: - level: 2 - link: /mosaic/configure/index - childNodes: [] - - id: /mosaic/configure/modes/index - fullPath: /mosaic/configure/modes/index.mdx - name: Modes of operation - priority: 4 - data: - level: 3 - link: /mosaic/configure/modes/index - childNodes: - - id: /mosaic/configure/modes/active - fullPath: /mosaic/configure/modes/active.mdx - name: Active mode - data: - level: 3 - link: /mosaic/configure/modes/active - childNodes: [] - - id: /mosaic/configure/modes/snapshot-file - fullPath: /mosaic/configure/modes/snapshot-file.mdx - name: Snapshot file mode - data: - level: 3 - link: /mosaic/configure/modes/snapshot-file - childNodes: [] - - id: /mosaic/configure/modes/snapshot-s3 - fullPath: /mosaic/configure/modes/snapshot-s3.mdx - name: Snapshot AWS/S3 mode - data: - level: 3 - link: /mosaic/configure/modes/snapshot-s3 - childNodes: [] - - id: /mosaic/configure/theme/index - fullPath: /mosaic/configure/theme/index.mdx - name: Theming Your Site - priority: 4 - data: - level: 3 - link: /mosaic/configure/theme/index - childNodes: - - id: /mosaic/configure/theme/custom-css - fullPath: /mosaic/configure/theme/custom-css.mdx - name: Custom CSS - priority: 3 - data: - level: 3 - link: /mosaic/configure/theme/custom-css - childNodes: [] - - id: /mosaic/configure/theme/custom-components - fullPath: /mosaic/configure/theme/custom-components.mdx - name: Custom Components - priority: 2 - data: - level: 3 - link: /mosaic/configure/theme/custom-components - childNodes: [] - - id: /mosaic/configure/admin/index - fullPath: /mosaic/configure/admin/index.mdx - name: Admin - priority: 3 - data: - level: 3 - link: /mosaic/configure/admin/index - childNodes: [] - - id: /mosaic/configure/sources/index - fullPath: /mosaic/configure/sources/index.mdx - name: Sources - priority: 3 - data: - level: 3 - link: /mosaic/configure/sources/index - childNodes: - - id: /mosaic/configure/sources/schedules - fullPath: /mosaic/configure/sources/schedules.mdx - name: Schedules - priority: 4 - data: - level: 3 - link: /mosaic/configure/sources/schedules - childNodes: [] - - id: /mosaic/configure/sources/local-folder-source - fullPath: /mosaic/configure/sources/local-folder-source.mdx - name: Local Folder Source - priority: 3 - data: - level: 3 - link: /mosaic/configure/sources/local-folder-source - childNodes: [] - - id: /mosaic/configure/sources/git-repo-source - fullPath: /mosaic/configure/sources/git-repo-source.mdx - name: Git Repo Source - priority: 2 - data: - level: 3 - link: /mosaic/configure/sources/git-repo-source - childNodes: [] - - id: /mosaic/configure/sources/http-source - fullPath: /mosaic/configure/sources/http-source.mdx - name: HTTP Source - priority: 1 - data: - level: 3 - link: /mosaic/configure/sources/http-source - childNodes: [] - - id: /mosaic/configure/layouts/index - fullPath: /mosaic/configure/layouts/index.mdx - name: Layouts - priority: 2 - data: - level: 3 - link: /mosaic/configure/layouts/index - childNodes: - - id: /mosaic/configure/layouts/detail-highlight - fullPath: /mosaic/configure/layouts/detail-highlight.mdx - name: Detail Highlight - data: - level: 3 - link: /mosaic/configure/layouts/detail-highlight - childNodes: [] - - id: /mosaic/configure/layouts/detail-overview - fullPath: /mosaic/configure/layouts/detail-overview.mdx - name: Detail Overview - data: - level: 3 - link: /mosaic/configure/layouts/detail-overview - childNodes: [] - - id: /mosaic/configure/layouts/detail-technical - fullPath: /mosaic/configure/layouts/detail-technical.mdx - name: Detail Technical - data: - level: 3 - link: /mosaic/configure/layouts/detail-technical - childNodes: [] - - id: /mosaic/configure/layouts/landing - fullPath: /mosaic/configure/layouts/landing.mdx - name: Landing Layout - data: - level: 3 - link: /mosaic/configure/layouts/landing - childNodes: [] - - id: /mosaic/configure/layouts/product-discover - fullPath: /mosaic/configure/layouts/product-discover.mdx - name: Product Discover Layout - data: - level: 3 - link: /mosaic/configure/layouts/product-discover - childNodes: [] - - id: /mosaic/configure/layouts/product-preview - fullPath: /mosaic/configure/layouts/product-preview.mdx - name: Product Preview Layout - data: - level: 3 - link: /mosaic/configure/layouts/product-preview - childNodes: [] - - id: /mosaic/configure/plugins/index - fullPath: /mosaic/configure/plugins/index.mdx - name: Plugins - priority: 1 - data: - level: 3 - link: /mosaic/configure/plugins/index - childNodes: - - id: /mosaic/configure/plugins/lifecycle/index - fullPath: /mosaic/configure/plugins/lifecycle/index.mdx - name: Lifecycle Events - priority: 1 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/index - childNodes: - - id: /mosaic/configure/plugins/lifecycle/after-source - fullPath: /mosaic/configure/plugins/lifecycle/after-source.mdx - name: $afterSource - priority: 5 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/after-source - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/before-send - fullPath: /mosaic/configure/plugins/lifecycle/before-send.mdx - name: $beforeSend - priority: 4 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/before-send - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/after-update - fullPath: /mosaic/configure/plugins/lifecycle/after-update.mdx - name: afterUpdate - priority: 3 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/after-update - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/should-clear-cache - fullPath: /mosaic/configure/plugins/lifecycle/should-clear-cache.mdx - name: shouldClearCache - priority: 2 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/should-clear-cache - childNodes: [] - - id: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources - fullPath: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources.mdx - name: shouldUpdateNamespaceSources - priority: 1 - data: - level: 4 - link: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources - childNodes: [] - - id: /mosaic/configure/plugins/alias-plugin - fullPath: /mosaic/configure/plugins/alias-plugin.mdx - name: $AliasPlugin - data: - level: 3 - link: /mosaic/configure/plugins/alias-plugin - childNodes: [] - - id: /mosaic/configure/plugins/breadcrumbs-plugin - fullPath: /mosaic/configure/plugins/breadcrumbs-plugin.mdx - name: BreadcrumbsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/breadcrumbs-plugin - childNodes: [] - - id: /mosaic/configure/plugins/broken-links-plugin - fullPath: /mosaic/configure/plugins/broken-links-plugin.mdx - name: BrokenLinksPlugin - data: - level: 3 - link: /mosaic/configure/plugins/broken-links-plugin - childNodes: [] - - id: /mosaic/configure/plugins/codemod-plugin - fullPath: /mosaic/configure/plugins/codemod-plugin.mdx - name: $CodeModPlugin - data: - level: 3 - link: /mosaic/configure/plugins/codemod-plugin - childNodes: [] - - id: /mosaic/configure/plugins/lazy-page-plugin - fullPath: /mosaic/configure/plugins/lazy-page-plugin.mdx - name: LazyPagePlugin - data: - level: 3 - link: /mosaic/configure/plugins/lazy-page-plugin - childNodes: [] - - id: /mosaic/configure/plugins/pages-wthout-extensions-plugin - fullPath: /mosaic/configure/plugins/pages-wthout-extensions-plugin.mdx - name: PagesWithoutFileExtPlugin - data: - level: 3 - link: /mosaic/configure/plugins/pages-wthout-extensions-plugin - childNodes: [] - - id: /mosaic/configure/plugins/public-assets-plugin - fullPath: /mosaic/configure/plugins/public-assets-plugin.mdx - name: PublicAssetsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/public-assets-plugin - childNodes: [] - - id: /mosaic/configure/plugins/reading-time-plugin - fullPath: /mosaic/configure/plugins/reading-time-plugin.mdx - name: ReadingTimePlugin - data: - level: 3 - link: /mosaic/configure/plugins/reading-time-plugin - childNodes: [] - - id: /mosaic/configure/plugins/ref-plugin - fullPath: /mosaic/configure/plugins/ref-plugin.mdx - name: $RefPlugin - data: - level: 3 - link: /mosaic/configure/plugins/ref-plugin - childNodes: [] - - id: /mosaic/configure/plugins/search-index-plugin - fullPath: /mosaic/configure/plugins/search-index-plugin.mdx - name: SearchIndexPlugin - data: - level: 3 - link: /mosaic/configure/plugins/search-index-plugin - childNodes: [] - - id: /mosaic/configure/plugins/shared-config-plugin - fullPath: /mosaic/configure/plugins/shared-config-plugin.mdx - name: SharedConfigPlugin - data: - level: 3 - link: /mosaic/configure/plugins/shared-config-plugin - childNodes: [] - - id: /mosaic/configure/plugins/sidebar-plugin - fullPath: /mosaic/configure/plugins/sidebar-plugin.mdx - name: SidebarPlugin - data: - level: 3 - link: /mosaic/configure/plugins/sidebar-plugin - childNodes: [] - - id: /mosaic/configure/plugins/site-map-plugin - fullPath: /mosaic/configure/plugins/site-map-plugin.mdx - name: SiteMapPlugin - data: - level: 3 - link: /mosaic/configure/plugins/site-map-plugin - childNodes: [] - - id: /mosaic/configure/plugins/tag-plugin - fullPath: /mosaic/configure/plugins/tag-plugin.mdx - name: $TagPlugin - data: - level: 3 - link: /mosaic/configure/plugins/tag-plugin - childNodes: [] - - id: /mosaic/configure/plugins/toc-plugin - fullPath: /mosaic/configure/plugins/toc-plugin.mdx - name: TableOfContentsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/toc-plugin - childNodes: [] ---- -# {meta.title} - -In `snapshot-s3` mode a snapshot can be loaded from a pre-configured AWS S3 bucket. - -To use `snapshot-s3` mode - -``` -> export MOSAIC_MODE="snapshot-s3" -> MOSAIC_S3_BUCKET="" -> MOSAIC_S3_REGION="" -> MOSAIC_S3_ACCESS_KEY_ID="" -> MOSAIC_S3_SECRET_ACCESS_KEY="" -``` - -## Generating a snapshot - -To generate a snapshot, run - -``` -yarn gen:snapshot -``` - -## Uploading a snapshot to S3 - -To upload a snapshot to S3, define the required environment variables and run - -``` -yarn mosaic upload -S -``` diff --git a/packages/site/snapshots/latest/mosaic/configure/plugins/index b/packages/site/snapshots/latest/mosaic/configure/plugins/index deleted file mode 120000 index 34f13104b..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/plugins/index +++ /dev/null @@ -1 +0,0 @@ -index.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/configure/plugins/index.mdx b/packages/site/snapshots/latest/mosaic/configure/plugins/index.mdx deleted file mode 100644 index daf092c37..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/plugins/index.mdx +++ /dev/null @@ -1,458 +0,0 @@ ---- -title: Plugins -layout: DetailTechnical -sidebar: - priority: 1 -lastModified: 1699883563210 -fullPath: /mosaic/configure/plugins/index.mdx -route: /mosaic/configure/plugins/index -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Configure - path: /mosaic/configure/index - id: /mosaic/configure/index.mdx - - label: Plugins - path: /mosaic/configure/plugins/index - id: /mosaic/configure/plugins/index.mdx -readingTime: - text: 2 min read - minutes: 1.92 - time: 115200 - words: 384 -tableOfContents: - - level: 2 - id: installation - text: Installation - - level: 2 - id: configuration - text: Configuration - - level: 2 - id: default-plugins - text: Default Plugins - - level: 2 - id: plugin-errors - text: Plugin errors - - level: 2 - id: multiple-instances - text: Multiple Instances -navigation: - prev: - title: Product Preview Layout - route: /mosaic/configure/layouts/product-preview - next: - title: Lifecycle Events - route: /mosaic/configure/plugins/lifecycle/index -sidebarData: - - id: /mosaic/configure/index - fullPath: /mosaic/configure/index.mdx - name: Configure - priority: 4 - data: - level: 2 - link: /mosaic/configure/index - childNodes: [] - - id: /mosaic/configure/modes/index - fullPath: /mosaic/configure/modes/index.mdx - name: Modes of operation - priority: 4 - data: - level: 3 - link: /mosaic/configure/modes/index - childNodes: - - id: /mosaic/configure/modes/active - fullPath: /mosaic/configure/modes/active.mdx - name: Active mode - data: - level: 3 - link: /mosaic/configure/modes/active - childNodes: [] - - id: /mosaic/configure/modes/snapshot-file - fullPath: /mosaic/configure/modes/snapshot-file.mdx - name: Snapshot file mode - data: - level: 3 - link: /mosaic/configure/modes/snapshot-file - childNodes: [] - - id: /mosaic/configure/modes/snapshot-s3 - fullPath: /mosaic/configure/modes/snapshot-s3.mdx - name: Snapshot AWS/S3 mode - data: - level: 3 - link: /mosaic/configure/modes/snapshot-s3 - childNodes: [] - - id: /mosaic/configure/theme/index - fullPath: /mosaic/configure/theme/index.mdx - name: Theming Your Site - priority: 4 - data: - level: 3 - link: /mosaic/configure/theme/index - childNodes: - - id: /mosaic/configure/theme/custom-css - fullPath: /mosaic/configure/theme/custom-css.mdx - name: Custom CSS - priority: 3 - data: - level: 3 - link: /mosaic/configure/theme/custom-css - childNodes: [] - - id: /mosaic/configure/theme/custom-components - fullPath: /mosaic/configure/theme/custom-components.mdx - name: Custom Components - priority: 2 - data: - level: 3 - link: /mosaic/configure/theme/custom-components - childNodes: [] - - id: /mosaic/configure/admin/index - fullPath: /mosaic/configure/admin/index.mdx - name: Admin - priority: 3 - data: - level: 3 - link: /mosaic/configure/admin/index - childNodes: [] - - id: /mosaic/configure/sources/index - fullPath: /mosaic/configure/sources/index.mdx - name: Sources - priority: 3 - data: - level: 3 - link: /mosaic/configure/sources/index - childNodes: - - id: /mosaic/configure/sources/schedules - fullPath: /mosaic/configure/sources/schedules.mdx - name: Schedules - priority: 4 - data: - level: 3 - link: /mosaic/configure/sources/schedules - childNodes: [] - - id: /mosaic/configure/sources/local-folder-source - fullPath: /mosaic/configure/sources/local-folder-source.mdx - name: Local Folder Source - priority: 3 - data: - level: 3 - link: /mosaic/configure/sources/local-folder-source - childNodes: [] - - id: /mosaic/configure/sources/git-repo-source - fullPath: /mosaic/configure/sources/git-repo-source.mdx - name: Git Repo Source - priority: 2 - data: - level: 3 - link: /mosaic/configure/sources/git-repo-source - childNodes: [] - - id: /mosaic/configure/sources/http-source - fullPath: /mosaic/configure/sources/http-source.mdx - name: HTTP Source - priority: 1 - data: - level: 3 - link: /mosaic/configure/sources/http-source - childNodes: [] - - id: /mosaic/configure/layouts/index - fullPath: /mosaic/configure/layouts/index.mdx - name: Layouts - priority: 2 - data: - level: 3 - link: /mosaic/configure/layouts/index - childNodes: - - id: /mosaic/configure/layouts/detail-highlight - fullPath: /mosaic/configure/layouts/detail-highlight.mdx - name: Detail Highlight - data: - level: 3 - link: /mosaic/configure/layouts/detail-highlight - childNodes: [] - - id: /mosaic/configure/layouts/detail-overview - fullPath: /mosaic/configure/layouts/detail-overview.mdx - name: Detail Overview - data: - level: 3 - link: /mosaic/configure/layouts/detail-overview - childNodes: [] - - id: /mosaic/configure/layouts/detail-technical - fullPath: /mosaic/configure/layouts/detail-technical.mdx - name: Detail Technical - data: - level: 3 - link: /mosaic/configure/layouts/detail-technical - childNodes: [] - - id: /mosaic/configure/layouts/landing - fullPath: /mosaic/configure/layouts/landing.mdx - name: Landing Layout - data: - level: 3 - link: /mosaic/configure/layouts/landing - childNodes: [] - - id: /mosaic/configure/layouts/product-discover - fullPath: /mosaic/configure/layouts/product-discover.mdx - name: Product Discover Layout - data: - level: 3 - link: /mosaic/configure/layouts/product-discover - childNodes: [] - - id: /mosaic/configure/layouts/product-preview - fullPath: /mosaic/configure/layouts/product-preview.mdx - name: Product Preview Layout - data: - level: 3 - link: /mosaic/configure/layouts/product-preview - childNodes: [] - - id: /mosaic/configure/plugins/index - fullPath: /mosaic/configure/plugins/index.mdx - name: Plugins - priority: 1 - data: - level: 3 - link: /mosaic/configure/plugins/index - childNodes: - - id: /mosaic/configure/plugins/lifecycle/index - fullPath: /mosaic/configure/plugins/lifecycle/index.mdx - name: Lifecycle Events - priority: 1 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/index - childNodes: - - id: /mosaic/configure/plugins/lifecycle/after-source - fullPath: /mosaic/configure/plugins/lifecycle/after-source.mdx - name: $afterSource - priority: 5 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/after-source - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/before-send - fullPath: /mosaic/configure/plugins/lifecycle/before-send.mdx - name: $beforeSend - priority: 4 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/before-send - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/after-update - fullPath: /mosaic/configure/plugins/lifecycle/after-update.mdx - name: afterUpdate - priority: 3 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/after-update - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/should-clear-cache - fullPath: /mosaic/configure/plugins/lifecycle/should-clear-cache.mdx - name: shouldClearCache - priority: 2 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/should-clear-cache - childNodes: [] - - id: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources - fullPath: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources.mdx - name: shouldUpdateNamespaceSources - priority: 1 - data: - level: 4 - link: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources - childNodes: [] - - id: /mosaic/configure/plugins/alias-plugin - fullPath: /mosaic/configure/plugins/alias-plugin.mdx - name: $AliasPlugin - data: - level: 3 - link: /mosaic/configure/plugins/alias-plugin - childNodes: [] - - id: /mosaic/configure/plugins/breadcrumbs-plugin - fullPath: /mosaic/configure/plugins/breadcrumbs-plugin.mdx - name: BreadcrumbsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/breadcrumbs-plugin - childNodes: [] - - id: /mosaic/configure/plugins/broken-links-plugin - fullPath: /mosaic/configure/plugins/broken-links-plugin.mdx - name: BrokenLinksPlugin - data: - level: 3 - link: /mosaic/configure/plugins/broken-links-plugin - childNodes: [] - - id: /mosaic/configure/plugins/codemod-plugin - fullPath: /mosaic/configure/plugins/codemod-plugin.mdx - name: $CodeModPlugin - data: - level: 3 - link: /mosaic/configure/plugins/codemod-plugin - childNodes: [] - - id: /mosaic/configure/plugins/lazy-page-plugin - fullPath: /mosaic/configure/plugins/lazy-page-plugin.mdx - name: LazyPagePlugin - data: - level: 3 - link: /mosaic/configure/plugins/lazy-page-plugin - childNodes: [] - - id: /mosaic/configure/plugins/pages-wthout-extensions-plugin - fullPath: /mosaic/configure/plugins/pages-wthout-extensions-plugin.mdx - name: PagesWithoutFileExtPlugin - data: - level: 3 - link: /mosaic/configure/plugins/pages-wthout-extensions-plugin - childNodes: [] - - id: /mosaic/configure/plugins/public-assets-plugin - fullPath: /mosaic/configure/plugins/public-assets-plugin.mdx - name: PublicAssetsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/public-assets-plugin - childNodes: [] - - id: /mosaic/configure/plugins/reading-time-plugin - fullPath: /mosaic/configure/plugins/reading-time-plugin.mdx - name: ReadingTimePlugin - data: - level: 3 - link: /mosaic/configure/plugins/reading-time-plugin - childNodes: [] - - id: /mosaic/configure/plugins/ref-plugin - fullPath: /mosaic/configure/plugins/ref-plugin.mdx - name: $RefPlugin - data: - level: 3 - link: /mosaic/configure/plugins/ref-plugin - childNodes: [] - - id: /mosaic/configure/plugins/search-index-plugin - fullPath: /mosaic/configure/plugins/search-index-plugin.mdx - name: SearchIndexPlugin - data: - level: 3 - link: /mosaic/configure/plugins/search-index-plugin - childNodes: [] - - id: /mosaic/configure/plugins/shared-config-plugin - fullPath: /mosaic/configure/plugins/shared-config-plugin.mdx - name: SharedConfigPlugin - data: - level: 3 - link: /mosaic/configure/plugins/shared-config-plugin - childNodes: [] - - id: /mosaic/configure/plugins/sidebar-plugin - fullPath: /mosaic/configure/plugins/sidebar-plugin.mdx - name: SidebarPlugin - data: - level: 3 - link: /mosaic/configure/plugins/sidebar-plugin - childNodes: [] - - id: /mosaic/configure/plugins/site-map-plugin - fullPath: /mosaic/configure/plugins/site-map-plugin.mdx - name: SiteMapPlugin - data: - level: 3 - link: /mosaic/configure/plugins/site-map-plugin - childNodes: [] - - id: /mosaic/configure/plugins/tag-plugin - fullPath: /mosaic/configure/plugins/tag-plugin.mdx - name: $TagPlugin - data: - level: 3 - link: /mosaic/configure/plugins/tag-plugin - childNodes: [] - - id: /mosaic/configure/plugins/toc-plugin - fullPath: /mosaic/configure/plugins/toc-plugin.mdx - name: TableOfContentsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/toc-plugin - childNodes: [] ---- -# {meta.title} - -Mosaic Plugins are [lifecycle-based](./lifecycle/index) hooks that are called on *every* source at different stages. You will never need to invoke a lifecycle method directly as their execution is managed by a plugin runner. - -Plugins enable Mosaic to have a lightweight and flexible, modular architecture by encapsulating features and functionality as plugins. - -## Installation - -`yarn add @jpmorganchase/mosaic-plugins` - -## Configuration - -Plugins are added to the `plugins` collection of the mosaic config file. Like [sources](../sources/index), plugins have an options property that can be used to provide plugin specific configuration. - -| Property | Description | Required | -| --------------- | -------------------------------------------------------------------------- | -------- | -| modulePath | The path to the installed plugin module | Yes | -| disabled | Exclude this plugin completely. Defaults to false | No | -| runtimeOnly | Exclude this plugin when generating a snapshot. Defaults to false | No | -| previewDisabled | Exclude this plugin for "preview" sources | No | -| allowMultiple | Allow multiple instances of this plugin to run. | No | -| priority | The importance of this plugin. Plugins with the highest priority run first | No | -| options | Collection of other configuration values | No | - -```js - plugins: [ - { - modulePath: '@jpmorganchase/mosaic-plugins/PagesWithoutFileExtPlugin', - options: {}, - priority: 1 - }, - { - modulePath: '@jpmorganchase/mosaic-plugins/SidebarPlugin', - options: {} - }, - { - modulePath: '@jpmorganchase/mosaic-plugins/ReadingTimePlugin', - options: {} - } -], -``` - - - There is no need to import the plugin module directly. As long as the plugin is installed, Mosaic - will be able to import it using the built-in plugin loader. - - -## Default Plugins - -The following plugins are always included by Mosaic, regardless of whether they are present in the plugins collection of the Mosaic config file: - -1. [$TagPlugin](./tag-plugin) -2. [$AliasPlugin](./alias-plugin) -3. [$CodeModPlugin](./codemod-plugin) -4. [$RefPlugin](./ref-plugin) - -## Plugin errors - -Should a plugin fail, the failure will **not** cause a source to close or for any other plugin to not run. - -Instead plugin errors are tracked by Mosaic and can be viewed in the `pluginErrors` property available on each source listed by the list sources [admin API](../admin/index). - -Plugin errors will be split by lifecycle event and only the lifecycle events used by the loaded plugins used will be shown. - -## Multiple Instances - -By default, Mosaic will only run one instance of a plugin. - -It may be the case that you wish to run the same plugin twice with a slightly different config. To do this, you must have 2 instances listed in the plugins collection and they **both** must set the `allowMultiple` option to `true`. - -For example, the config below runs the [SidebarPlugin](./sidebar-plugin) twice: - -```js -plugins: [ - { - modulePath: '@jpmorganchase/mosaic-plugins/SidebarPlugin', - options: { rootDirGlob: 'products/product-a' }, - allowMultiple: true - }, - { - modulePath: '@jpmorganchase/mosaic-plugins/SidebarPlugin', - options: { rootDirGlob: '*/!(product-a)/*' }, - allowMultiple: true - } - // other plugins -]; -``` diff --git a/packages/site/snapshots/latest/mosaic/configure/plugins/lifecycle/after-source b/packages/site/snapshots/latest/mosaic/configure/plugins/lifecycle/after-source deleted file mode 120000 index 9cc158a68..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/plugins/lifecycle/after-source +++ /dev/null @@ -1 +0,0 @@ -after-source.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/configure/plugins/lifecycle/after-update b/packages/site/snapshots/latest/mosaic/configure/plugins/lifecycle/after-update deleted file mode 120000 index 6dbe358d0..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/plugins/lifecycle/after-update +++ /dev/null @@ -1 +0,0 @@ -after-update.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/configure/plugins/lifecycle/before-send b/packages/site/snapshots/latest/mosaic/configure/plugins/lifecycle/before-send deleted file mode 120000 index 2ecba4c54..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/plugins/lifecycle/before-send +++ /dev/null @@ -1 +0,0 @@ -before-send.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/configure/plugins/lifecycle/should-clear-cache b/packages/site/snapshots/latest/mosaic/configure/plugins/lifecycle/should-clear-cache deleted file mode 120000 index 0ffe51a1b..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/plugins/lifecycle/should-clear-cache +++ /dev/null @@ -1 +0,0 @@ -should-clear-cache.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/configure/plugins/shared-config.json b/packages/site/snapshots/latest/mosaic/configure/plugins/shared-config.json deleted file mode 120000 index da3ba444a..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/plugins/shared-config.json +++ /dev/null @@ -1 +0,0 @@ -../../shared-config.json \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/configure/shared-config.json b/packages/site/snapshots/latest/mosaic/configure/shared-config.json deleted file mode 120000 index 11f2745e8..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/shared-config.json +++ /dev/null @@ -1 +0,0 @@ -../shared-config.json \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/configure/sidebar.json b/packages/site/snapshots/latest/mosaic/configure/sidebar.json deleted file mode 100644 index 908f4f397..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/sidebar.json +++ /dev/null @@ -1 +0,0 @@ -{"pages":[{"id":"/mosaic/configure/index","fullPath":"/mosaic/configure/index.mdx","name":"Configure","priority":4,"data":{"level":2,"link":"/mosaic/configure/index"},"childNodes":[]},{"id":"/mosaic/configure/modes/index","fullPath":"/mosaic/configure/modes/index.mdx","name":"Modes of operation","priority":4,"data":{"level":3,"link":"/mosaic/configure/modes/index"},"childNodes":[{"id":"/mosaic/configure/modes/active","fullPath":"/mosaic/configure/modes/active.mdx","name":"Active mode","data":{"level":3,"link":"/mosaic/configure/modes/active"},"childNodes":[]},{"id":"/mosaic/configure/modes/snapshot-file","fullPath":"/mosaic/configure/modes/snapshot-file.mdx","name":"Snapshot file mode","data":{"level":3,"link":"/mosaic/configure/modes/snapshot-file"},"childNodes":[]},{"id":"/mosaic/configure/modes/snapshot-s3","fullPath":"/mosaic/configure/modes/snapshot-s3.mdx","name":"Snapshot AWS/S3 mode","data":{"level":3,"link":"/mosaic/configure/modes/snapshot-s3"},"childNodes":[]}]},{"id":"/mosaic/configure/theme/index","fullPath":"/mosaic/configure/theme/index.mdx","name":"Theming Your Site","priority":4,"data":{"level":3,"link":"/mosaic/configure/theme/index"},"childNodes":[{"id":"/mosaic/configure/theme/custom-css","fullPath":"/mosaic/configure/theme/custom-css.mdx","name":"Custom CSS","priority":3,"data":{"level":3,"link":"/mosaic/configure/theme/custom-css"},"childNodes":[]},{"id":"/mosaic/configure/theme/custom-components","fullPath":"/mosaic/configure/theme/custom-components.mdx","name":"Custom Components","priority":2,"data":{"level":3,"link":"/mosaic/configure/theme/custom-components"},"childNodes":[]}]},{"id":"/mosaic/configure/admin/index","fullPath":"/mosaic/configure/admin/index.mdx","name":"Admin","priority":3,"data":{"level":3,"link":"/mosaic/configure/admin/index"},"childNodes":[]},{"id":"/mosaic/configure/sources/index","fullPath":"/mosaic/configure/sources/index.mdx","name":"Sources","priority":3,"data":{"level":3,"link":"/mosaic/configure/sources/index"},"childNodes":[{"id":"/mosaic/configure/sources/schedules","fullPath":"/mosaic/configure/sources/schedules.mdx","name":"Schedules","priority":4,"data":{"level":3,"link":"/mosaic/configure/sources/schedules"},"childNodes":[]},{"id":"/mosaic/configure/sources/local-folder-source","fullPath":"/mosaic/configure/sources/local-folder-source.mdx","name":"Local Folder Source","priority":3,"data":{"level":3,"link":"/mosaic/configure/sources/local-folder-source"},"childNodes":[]},{"id":"/mosaic/configure/sources/git-repo-source","fullPath":"/mosaic/configure/sources/git-repo-source.mdx","name":"Git Repo Source","priority":2,"data":{"level":3,"link":"/mosaic/configure/sources/git-repo-source"},"childNodes":[]},{"id":"/mosaic/configure/sources/http-source","fullPath":"/mosaic/configure/sources/http-source.mdx","name":"HTTP Source","priority":1,"data":{"level":3,"link":"/mosaic/configure/sources/http-source"},"childNodes":[]}]},{"id":"/mosaic/configure/layouts/index","fullPath":"/mosaic/configure/layouts/index.mdx","name":"Layouts","priority":2,"data":{"level":3,"link":"/mosaic/configure/layouts/index"},"childNodes":[{"id":"/mosaic/configure/layouts/detail-highlight","fullPath":"/mosaic/configure/layouts/detail-highlight.mdx","name":"Detail Highlight","data":{"level":3,"link":"/mosaic/configure/layouts/detail-highlight"},"childNodes":[]},{"id":"/mosaic/configure/layouts/detail-overview","fullPath":"/mosaic/configure/layouts/detail-overview.mdx","name":"Detail Overview","data":{"level":3,"link":"/mosaic/configure/layouts/detail-overview"},"childNodes":[]},{"id":"/mosaic/configure/layouts/detail-technical","fullPath":"/mosaic/configure/layouts/detail-technical.mdx","name":"Detail Technical","data":{"level":3,"link":"/mosaic/configure/layouts/detail-technical"},"childNodes":[]},{"id":"/mosaic/configure/layouts/landing","fullPath":"/mosaic/configure/layouts/landing.mdx","name":"Landing Layout","data":{"level":3,"link":"/mosaic/configure/layouts/landing"},"childNodes":[]},{"id":"/mosaic/configure/layouts/product-discover","fullPath":"/mosaic/configure/layouts/product-discover.mdx","name":"Product Discover Layout","data":{"level":3,"link":"/mosaic/configure/layouts/product-discover"},"childNodes":[]},{"id":"/mosaic/configure/layouts/product-preview","fullPath":"/mosaic/configure/layouts/product-preview.mdx","name":"Product Preview Layout","data":{"level":3,"link":"/mosaic/configure/layouts/product-preview"},"childNodes":[]}]},{"id":"/mosaic/configure/plugins/index","fullPath":"/mosaic/configure/plugins/index.mdx","name":"Plugins","priority":1,"data":{"level":3,"link":"/mosaic/configure/plugins/index"},"childNodes":[{"id":"/mosaic/configure/plugins/lifecycle/index","fullPath":"/mosaic/configure/plugins/lifecycle/index.mdx","name":"Lifecycle Events","priority":1,"data":{"level":4,"link":"/mosaic/configure/plugins/lifecycle/index"},"childNodes":[{"id":"/mosaic/configure/plugins/lifecycle/after-source","fullPath":"/mosaic/configure/plugins/lifecycle/after-source.mdx","name":"$afterSource","priority":5,"data":{"level":4,"link":"/mosaic/configure/plugins/lifecycle/after-source"},"childNodes":[]},{"id":"/mosaic/configure/plugins/lifecycle/before-send","fullPath":"/mosaic/configure/plugins/lifecycle/before-send.mdx","name":"$beforeSend","priority":4,"data":{"level":4,"link":"/mosaic/configure/plugins/lifecycle/before-send"},"childNodes":[]},{"id":"/mosaic/configure/plugins/lifecycle/after-update","fullPath":"/mosaic/configure/plugins/lifecycle/after-update.mdx","name":"afterUpdate","priority":3,"data":{"level":4,"link":"/mosaic/configure/plugins/lifecycle/after-update"},"childNodes":[]},{"id":"/mosaic/configure/plugins/lifecycle/should-clear-cache","fullPath":"/mosaic/configure/plugins/lifecycle/should-clear-cache.mdx","name":"shouldClearCache","priority":2,"data":{"level":4,"link":"/mosaic/configure/plugins/lifecycle/should-clear-cache"},"childNodes":[]},{"id":"/mosaic/configure/plugins/lifecycle/should-update-namespace-sources","fullPath":"/mosaic/configure/plugins/lifecycle/should-update-namespace-sources.mdx","name":"shouldUpdateNamespaceSources","priority":1,"data":{"level":4,"link":"/mosaic/configure/plugins/lifecycle/should-update-namespace-sources"},"childNodes":[]}]},{"id":"/mosaic/configure/plugins/alias-plugin","fullPath":"/mosaic/configure/plugins/alias-plugin.mdx","name":"$AliasPlugin","data":{"level":3,"link":"/mosaic/configure/plugins/alias-plugin"},"childNodes":[]},{"id":"/mosaic/configure/plugins/breadcrumbs-plugin","fullPath":"/mosaic/configure/plugins/breadcrumbs-plugin.mdx","name":"BreadcrumbsPlugin","data":{"level":3,"link":"/mosaic/configure/plugins/breadcrumbs-plugin"},"childNodes":[]},{"id":"/mosaic/configure/plugins/broken-links-plugin","fullPath":"/mosaic/configure/plugins/broken-links-plugin.mdx","name":"BrokenLinksPlugin","data":{"level":3,"link":"/mosaic/configure/plugins/broken-links-plugin"},"childNodes":[]},{"id":"/mosaic/configure/plugins/codemod-plugin","fullPath":"/mosaic/configure/plugins/codemod-plugin.mdx","name":"$CodeModPlugin","data":{"level":3,"link":"/mosaic/configure/plugins/codemod-plugin"},"childNodes":[]},{"id":"/mosaic/configure/plugins/lazy-page-plugin","fullPath":"/mosaic/configure/plugins/lazy-page-plugin.mdx","name":"LazyPagePlugin","data":{"level":3,"link":"/mosaic/configure/plugins/lazy-page-plugin"},"childNodes":[]},{"id":"/mosaic/configure/plugins/pages-wthout-extensions-plugin","fullPath":"/mosaic/configure/plugins/pages-wthout-extensions-plugin.mdx","name":"PagesWithoutFileExtPlugin","data":{"level":3,"link":"/mosaic/configure/plugins/pages-wthout-extensions-plugin"},"childNodes":[]},{"id":"/mosaic/configure/plugins/public-assets-plugin","fullPath":"/mosaic/configure/plugins/public-assets-plugin.mdx","name":"PublicAssetsPlugin","data":{"level":3,"link":"/mosaic/configure/plugins/public-assets-plugin"},"childNodes":[]},{"id":"/mosaic/configure/plugins/reading-time-plugin","fullPath":"/mosaic/configure/plugins/reading-time-plugin.mdx","name":"ReadingTimePlugin","data":{"level":3,"link":"/mosaic/configure/plugins/reading-time-plugin"},"childNodes":[]},{"id":"/mosaic/configure/plugins/ref-plugin","fullPath":"/mosaic/configure/plugins/ref-plugin.mdx","name":"$RefPlugin","data":{"level":3,"link":"/mosaic/configure/plugins/ref-plugin"},"childNodes":[]},{"id":"/mosaic/configure/plugins/search-index-plugin","fullPath":"/mosaic/configure/plugins/search-index-plugin.mdx","name":"SearchIndexPlugin","data":{"level":3,"link":"/mosaic/configure/plugins/search-index-plugin"},"childNodes":[]},{"id":"/mosaic/configure/plugins/shared-config-plugin","fullPath":"/mosaic/configure/plugins/shared-config-plugin.mdx","name":"SharedConfigPlugin","data":{"level":3,"link":"/mosaic/configure/plugins/shared-config-plugin"},"childNodes":[]},{"id":"/mosaic/configure/plugins/sidebar-plugin","fullPath":"/mosaic/configure/plugins/sidebar-plugin.mdx","name":"SidebarPlugin","data":{"level":3,"link":"/mosaic/configure/plugins/sidebar-plugin"},"childNodes":[]},{"id":"/mosaic/configure/plugins/site-map-plugin","fullPath":"/mosaic/configure/plugins/site-map-plugin.mdx","name":"SiteMapPlugin","data":{"level":3,"link":"/mosaic/configure/plugins/site-map-plugin"},"childNodes":[]},{"id":"/mosaic/configure/plugins/tag-plugin","fullPath":"/mosaic/configure/plugins/tag-plugin.mdx","name":"$TagPlugin","data":{"level":3,"link":"/mosaic/configure/plugins/tag-plugin"},"childNodes":[]},{"id":"/mosaic/configure/plugins/toc-plugin","fullPath":"/mosaic/configure/plugins/toc-plugin.mdx","name":"TableOfContentsPlugin","data":{"level":3,"link":"/mosaic/configure/plugins/toc-plugin"},"childNodes":[]}]}]} \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/configure/sources/git-repo-source b/packages/site/snapshots/latest/mosaic/configure/sources/git-repo-source deleted file mode 120000 index c19523970..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/sources/git-repo-source +++ /dev/null @@ -1 +0,0 @@ -git-repo-source.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/configure/sources/git-repo-source.mdx b/packages/site/snapshots/latest/mosaic/configure/sources/git-repo-source.mdx deleted file mode 100644 index 4d8eec8f3..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/sources/git-repo-source.mdx +++ /dev/null @@ -1,430 +0,0 @@ ---- -title: Git Repo Source -layout: DetailTechnical -sidebar: - priority: 2 -lastModified: 1699883563213 -fullPath: /mosaic/configure/sources/git-repo-source.mdx -route: /mosaic/configure/sources/git-repo-source -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Configure - path: /mosaic/configure/index - id: /mosaic/configure/index.mdx - - label: Sources - path: /mosaic/configure/sources/index - id: /mosaic/configure/sources/index.mdx - - label: Git Repo Source - path: /mosaic/configure/sources/git-repo-source - id: /mosaic/configure/sources/git-repo-source.mdx -readingTime: - text: 2 min read - minutes: 1.31 - time: 78600 - words: 262 -tableOfContents: - - level: 2 - id: installation - text: Installation - - level: 2 - id: credentials-and-access-tokens - text: Credentials and Access tokens - - level: 3 - id: example - text: Example - - level: 2 - id: configuration - text: Configuration - - level: 3 - id: example-git-repo-source-definition - text: Example Git Repo Source Definition -navigation: - prev: - title: Local Folder Source - route: /mosaic/configure/sources/local-folder-source - next: - title: HTTP Source - route: /mosaic/configure/sources/http-source -sidebarData: - - id: /mosaic/configure/index - fullPath: /mosaic/configure/index.mdx - name: Configure - priority: 4 - data: - level: 2 - link: /mosaic/configure/index - childNodes: [] - - id: /mosaic/configure/modes/index - fullPath: /mosaic/configure/modes/index.mdx - name: Modes of operation - priority: 4 - data: - level: 3 - link: /mosaic/configure/modes/index - childNodes: - - id: /mosaic/configure/modes/active - fullPath: /mosaic/configure/modes/active.mdx - name: Active mode - data: - level: 3 - link: /mosaic/configure/modes/active - childNodes: [] - - id: /mosaic/configure/modes/snapshot-file - fullPath: /mosaic/configure/modes/snapshot-file.mdx - name: Snapshot file mode - data: - level: 3 - link: /mosaic/configure/modes/snapshot-file - childNodes: [] - - id: /mosaic/configure/modes/snapshot-s3 - fullPath: /mosaic/configure/modes/snapshot-s3.mdx - name: Snapshot AWS/S3 mode - data: - level: 3 - link: /mosaic/configure/modes/snapshot-s3 - childNodes: [] - - id: /mosaic/configure/theme/index - fullPath: /mosaic/configure/theme/index.mdx - name: Theming Your Site - priority: 4 - data: - level: 3 - link: /mosaic/configure/theme/index - childNodes: - - id: /mosaic/configure/theme/custom-css - fullPath: /mosaic/configure/theme/custom-css.mdx - name: Custom CSS - priority: 3 - data: - level: 3 - link: /mosaic/configure/theme/custom-css - childNodes: [] - - id: /mosaic/configure/theme/custom-components - fullPath: /mosaic/configure/theme/custom-components.mdx - name: Custom Components - priority: 2 - data: - level: 3 - link: /mosaic/configure/theme/custom-components - childNodes: [] - - id: /mosaic/configure/admin/index - fullPath: /mosaic/configure/admin/index.mdx - name: Admin - priority: 3 - data: - level: 3 - link: /mosaic/configure/admin/index - childNodes: [] - - id: /mosaic/configure/sources/index - fullPath: /mosaic/configure/sources/index.mdx - name: Sources - priority: 3 - data: - level: 3 - link: /mosaic/configure/sources/index - childNodes: - - id: /mosaic/configure/sources/schedules - fullPath: /mosaic/configure/sources/schedules.mdx - name: Schedules - priority: 4 - data: - level: 3 - link: /mosaic/configure/sources/schedules - childNodes: [] - - id: /mosaic/configure/sources/local-folder-source - fullPath: /mosaic/configure/sources/local-folder-source.mdx - name: Local Folder Source - priority: 3 - data: - level: 3 - link: /mosaic/configure/sources/local-folder-source - childNodes: [] - - id: /mosaic/configure/sources/git-repo-source - fullPath: /mosaic/configure/sources/git-repo-source.mdx - name: Git Repo Source - priority: 2 - data: - level: 3 - link: /mosaic/configure/sources/git-repo-source - childNodes: [] - - id: /mosaic/configure/sources/http-source - fullPath: /mosaic/configure/sources/http-source.mdx - name: HTTP Source - priority: 1 - data: - level: 3 - link: /mosaic/configure/sources/http-source - childNodes: [] - - id: /mosaic/configure/layouts/index - fullPath: /mosaic/configure/layouts/index.mdx - name: Layouts - priority: 2 - data: - level: 3 - link: /mosaic/configure/layouts/index - childNodes: - - id: /mosaic/configure/layouts/detail-highlight - fullPath: /mosaic/configure/layouts/detail-highlight.mdx - name: Detail Highlight - data: - level: 3 - link: /mosaic/configure/layouts/detail-highlight - childNodes: [] - - id: /mosaic/configure/layouts/detail-overview - fullPath: /mosaic/configure/layouts/detail-overview.mdx - name: Detail Overview - data: - level: 3 - link: /mosaic/configure/layouts/detail-overview - childNodes: [] - - id: /mosaic/configure/layouts/detail-technical - fullPath: /mosaic/configure/layouts/detail-technical.mdx - name: Detail Technical - data: - level: 3 - link: /mosaic/configure/layouts/detail-technical - childNodes: [] - - id: /mosaic/configure/layouts/landing - fullPath: /mosaic/configure/layouts/landing.mdx - name: Landing Layout - data: - level: 3 - link: /mosaic/configure/layouts/landing - childNodes: [] - - id: /mosaic/configure/layouts/product-discover - fullPath: /mosaic/configure/layouts/product-discover.mdx - name: Product Discover Layout - data: - level: 3 - link: /mosaic/configure/layouts/product-discover - childNodes: [] - - id: /mosaic/configure/layouts/product-preview - fullPath: /mosaic/configure/layouts/product-preview.mdx - name: Product Preview Layout - data: - level: 3 - link: /mosaic/configure/layouts/product-preview - childNodes: [] - - id: /mosaic/configure/plugins/index - fullPath: /mosaic/configure/plugins/index.mdx - name: Plugins - priority: 1 - data: - level: 3 - link: /mosaic/configure/plugins/index - childNodes: - - id: /mosaic/configure/plugins/lifecycle/index - fullPath: /mosaic/configure/plugins/lifecycle/index.mdx - name: Lifecycle Events - priority: 1 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/index - childNodes: - - id: /mosaic/configure/plugins/lifecycle/after-source - fullPath: /mosaic/configure/plugins/lifecycle/after-source.mdx - name: $afterSource - priority: 5 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/after-source - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/before-send - fullPath: /mosaic/configure/plugins/lifecycle/before-send.mdx - name: $beforeSend - priority: 4 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/before-send - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/after-update - fullPath: /mosaic/configure/plugins/lifecycle/after-update.mdx - name: afterUpdate - priority: 3 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/after-update - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/should-clear-cache - fullPath: /mosaic/configure/plugins/lifecycle/should-clear-cache.mdx - name: shouldClearCache - priority: 2 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/should-clear-cache - childNodes: [] - - id: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources - fullPath: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources.mdx - name: shouldUpdateNamespaceSources - priority: 1 - data: - level: 4 - link: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources - childNodes: [] - - id: /mosaic/configure/plugins/alias-plugin - fullPath: /mosaic/configure/plugins/alias-plugin.mdx - name: $AliasPlugin - data: - level: 3 - link: /mosaic/configure/plugins/alias-plugin - childNodes: [] - - id: /mosaic/configure/plugins/breadcrumbs-plugin - fullPath: /mosaic/configure/plugins/breadcrumbs-plugin.mdx - name: BreadcrumbsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/breadcrumbs-plugin - childNodes: [] - - id: /mosaic/configure/plugins/broken-links-plugin - fullPath: /mosaic/configure/plugins/broken-links-plugin.mdx - name: BrokenLinksPlugin - data: - level: 3 - link: /mosaic/configure/plugins/broken-links-plugin - childNodes: [] - - id: /mosaic/configure/plugins/codemod-plugin - fullPath: /mosaic/configure/plugins/codemod-plugin.mdx - name: $CodeModPlugin - data: - level: 3 - link: /mosaic/configure/plugins/codemod-plugin - childNodes: [] - - id: /mosaic/configure/plugins/lazy-page-plugin - fullPath: /mosaic/configure/plugins/lazy-page-plugin.mdx - name: LazyPagePlugin - data: - level: 3 - link: /mosaic/configure/plugins/lazy-page-plugin - childNodes: [] - - id: /mosaic/configure/plugins/pages-wthout-extensions-plugin - fullPath: /mosaic/configure/plugins/pages-wthout-extensions-plugin.mdx - name: PagesWithoutFileExtPlugin - data: - level: 3 - link: /mosaic/configure/plugins/pages-wthout-extensions-plugin - childNodes: [] - - id: /mosaic/configure/plugins/public-assets-plugin - fullPath: /mosaic/configure/plugins/public-assets-plugin.mdx - name: PublicAssetsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/public-assets-plugin - childNodes: [] - - id: /mosaic/configure/plugins/reading-time-plugin - fullPath: /mosaic/configure/plugins/reading-time-plugin.mdx - name: ReadingTimePlugin - data: - level: 3 - link: /mosaic/configure/plugins/reading-time-plugin - childNodes: [] - - id: /mosaic/configure/plugins/ref-plugin - fullPath: /mosaic/configure/plugins/ref-plugin.mdx - name: $RefPlugin - data: - level: 3 - link: /mosaic/configure/plugins/ref-plugin - childNodes: [] - - id: /mosaic/configure/plugins/search-index-plugin - fullPath: /mosaic/configure/plugins/search-index-plugin.mdx - name: SearchIndexPlugin - data: - level: 3 - link: /mosaic/configure/plugins/search-index-plugin - childNodes: [] - - id: /mosaic/configure/plugins/shared-config-plugin - fullPath: /mosaic/configure/plugins/shared-config-plugin.mdx - name: SharedConfigPlugin - data: - level: 3 - link: /mosaic/configure/plugins/shared-config-plugin - childNodes: [] - - id: /mosaic/configure/plugins/sidebar-plugin - fullPath: /mosaic/configure/plugins/sidebar-plugin.mdx - name: SidebarPlugin - data: - level: 3 - link: /mosaic/configure/plugins/sidebar-plugin - childNodes: [] - - id: /mosaic/configure/plugins/site-map-plugin - fullPath: /mosaic/configure/plugins/site-map-plugin.mdx - name: SiteMapPlugin - data: - level: 3 - link: /mosaic/configure/plugins/site-map-plugin - childNodes: [] - - id: /mosaic/configure/plugins/tag-plugin - fullPath: /mosaic/configure/plugins/tag-plugin.mdx - name: $TagPlugin - data: - level: 3 - link: /mosaic/configure/plugins/tag-plugin - childNodes: [] - - id: /mosaic/configure/plugins/toc-plugin - fullPath: /mosaic/configure/plugins/toc-plugin.mdx - name: TableOfContentsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/toc-plugin - childNodes: [] ---- -# {meta.title} - -The Git Repo Source is used to pull content from a remote git repository e.g. github. - -## Installation - -`yarn add @jpmorganchase/mosaic-source-git-repo` - -## Credentials and Access tokens - -To successfully clone the git repo, the source definition must include credentials that have sufficient permissions to clone the repository. - -We recommend storing a [personal access token](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token) in an environment variable and using the environment variable in the source definition. - -This keeps credentials out of code where they may be accidentally exposed to third parties. - -### Example - -``` -export MOSAIC_DOCS_CLONE_CREDENTIALS=":", -``` - -## Configuration - -| Property | Description | Required | -| ------------------- | -------------------------------------------------------------------------------- | -------- | -| modulePath | The path to the installed module (@jpmorganchase/mosaic-source-git-repo) | Yes | -| namespace | The scope for this source. | Yes | -| disabled | When true, content from this source is not used | No | -| options.credentials | Collection of URLS to make requests | Yes | -| options.prefixDir | The root path used in the content URL | Yes | -| options.subfolder | The name of the folder within the cloned repo containing the docs | Yes | -| options.repo | The repo URL | Yes | -| options.branch | The branch or tag to clone | Yes | -| options.extensions | Collection of file extensions that the source will look for inside the subfolder | Yes | -| options.remote | The name of the git remote to use. Defaults to origin. | Yes | - -### Example Git Repo Source Definition - -``` - - { - modulePath: '@jpmorganchase/mosaic-source-git-repo', - namespace: 'mosaic', - options: { - credentials: process.env.MOSAIC_DOCS_CLONE_CREDENTIALS, - prefixDir: 'mosaic', - subfolder: 'docs', - repo: 'https://github.com/jpmorganchase/mosaic.git', - branch: 'main', - extensions: ['.mdx'], - remote: 'origin' - } - } - -``` diff --git a/packages/site/snapshots/latest/mosaic/configure/sources/http-source b/packages/site/snapshots/latest/mosaic/configure/sources/http-source deleted file mode 120000 index 5ff76548b..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/sources/http-source +++ /dev/null @@ -1 +0,0 @@ -http-source.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/configure/sources/http-source.mdx b/packages/site/snapshots/latest/mosaic/configure/sources/http-source.mdx deleted file mode 100644 index 624c323cd..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/sources/http-source.mdx +++ /dev/null @@ -1,407 +0,0 @@ ---- -title: HTTP Source -layout: DetailTechnical -sidebar: - priority: 1 -lastModified: 1699883563214 -fullPath: /mosaic/configure/sources/http-source.mdx -route: /mosaic/configure/sources/http-source -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Configure - path: /mosaic/configure/index - id: /mosaic/configure/index.mdx - - label: Sources - path: /mosaic/configure/sources/index - id: /mosaic/configure/sources/index.mdx - - label: HTTP Source - path: /mosaic/configure/sources/http-source - id: /mosaic/configure/sources/http-source.mdx -readingTime: - text: 1 min read - minutes: 0.92 - time: 55200 - words: 184 -tableOfContents: - - level: 2 - id: installation - text: Installation - - level: 2 - id: configuration - text: Configuration - - level: 3 - id: example-http-source-definition - text: Example HTTP Source Definition -navigation: - prev: - title: Git Repo Source - route: /mosaic/configure/sources/git-repo-source - next: - title: Layouts - route: /mosaic/configure/layouts/index -sidebarData: - - id: /mosaic/configure/index - fullPath: /mosaic/configure/index.mdx - name: Configure - priority: 4 - data: - level: 2 - link: /mosaic/configure/index - childNodes: [] - - id: /mosaic/configure/modes/index - fullPath: /mosaic/configure/modes/index.mdx - name: Modes of operation - priority: 4 - data: - level: 3 - link: /mosaic/configure/modes/index - childNodes: - - id: /mosaic/configure/modes/active - fullPath: /mosaic/configure/modes/active.mdx - name: Active mode - data: - level: 3 - link: /mosaic/configure/modes/active - childNodes: [] - - id: /mosaic/configure/modes/snapshot-file - fullPath: /mosaic/configure/modes/snapshot-file.mdx - name: Snapshot file mode - data: - level: 3 - link: /mosaic/configure/modes/snapshot-file - childNodes: [] - - id: /mosaic/configure/modes/snapshot-s3 - fullPath: /mosaic/configure/modes/snapshot-s3.mdx - name: Snapshot AWS/S3 mode - data: - level: 3 - link: /mosaic/configure/modes/snapshot-s3 - childNodes: [] - - id: /mosaic/configure/theme/index - fullPath: /mosaic/configure/theme/index.mdx - name: Theming Your Site - priority: 4 - data: - level: 3 - link: /mosaic/configure/theme/index - childNodes: - - id: /mosaic/configure/theme/custom-css - fullPath: /mosaic/configure/theme/custom-css.mdx - name: Custom CSS - priority: 3 - data: - level: 3 - link: /mosaic/configure/theme/custom-css - childNodes: [] - - id: /mosaic/configure/theme/custom-components - fullPath: /mosaic/configure/theme/custom-components.mdx - name: Custom Components - priority: 2 - data: - level: 3 - link: /mosaic/configure/theme/custom-components - childNodes: [] - - id: /mosaic/configure/admin/index - fullPath: /mosaic/configure/admin/index.mdx - name: Admin - priority: 3 - data: - level: 3 - link: /mosaic/configure/admin/index - childNodes: [] - - id: /mosaic/configure/sources/index - fullPath: /mosaic/configure/sources/index.mdx - name: Sources - priority: 3 - data: - level: 3 - link: /mosaic/configure/sources/index - childNodes: - - id: /mosaic/configure/sources/schedules - fullPath: /mosaic/configure/sources/schedules.mdx - name: Schedules - priority: 4 - data: - level: 3 - link: /mosaic/configure/sources/schedules - childNodes: [] - - id: /mosaic/configure/sources/local-folder-source - fullPath: /mosaic/configure/sources/local-folder-source.mdx - name: Local Folder Source - priority: 3 - data: - level: 3 - link: /mosaic/configure/sources/local-folder-source - childNodes: [] - - id: /mosaic/configure/sources/git-repo-source - fullPath: /mosaic/configure/sources/git-repo-source.mdx - name: Git Repo Source - priority: 2 - data: - level: 3 - link: /mosaic/configure/sources/git-repo-source - childNodes: [] - - id: /mosaic/configure/sources/http-source - fullPath: /mosaic/configure/sources/http-source.mdx - name: HTTP Source - priority: 1 - data: - level: 3 - link: /mosaic/configure/sources/http-source - childNodes: [] - - id: /mosaic/configure/layouts/index - fullPath: /mosaic/configure/layouts/index.mdx - name: Layouts - priority: 2 - data: - level: 3 - link: /mosaic/configure/layouts/index - childNodes: - - id: /mosaic/configure/layouts/detail-highlight - fullPath: /mosaic/configure/layouts/detail-highlight.mdx - name: Detail Highlight - data: - level: 3 - link: /mosaic/configure/layouts/detail-highlight - childNodes: [] - - id: /mosaic/configure/layouts/detail-overview - fullPath: /mosaic/configure/layouts/detail-overview.mdx - name: Detail Overview - data: - level: 3 - link: /mosaic/configure/layouts/detail-overview - childNodes: [] - - id: /mosaic/configure/layouts/detail-technical - fullPath: /mosaic/configure/layouts/detail-technical.mdx - name: Detail Technical - data: - level: 3 - link: /mosaic/configure/layouts/detail-technical - childNodes: [] - - id: /mosaic/configure/layouts/landing - fullPath: /mosaic/configure/layouts/landing.mdx - name: Landing Layout - data: - level: 3 - link: /mosaic/configure/layouts/landing - childNodes: [] - - id: /mosaic/configure/layouts/product-discover - fullPath: /mosaic/configure/layouts/product-discover.mdx - name: Product Discover Layout - data: - level: 3 - link: /mosaic/configure/layouts/product-discover - childNodes: [] - - id: /mosaic/configure/layouts/product-preview - fullPath: /mosaic/configure/layouts/product-preview.mdx - name: Product Preview Layout - data: - level: 3 - link: /mosaic/configure/layouts/product-preview - childNodes: [] - - id: /mosaic/configure/plugins/index - fullPath: /mosaic/configure/plugins/index.mdx - name: Plugins - priority: 1 - data: - level: 3 - link: /mosaic/configure/plugins/index - childNodes: - - id: /mosaic/configure/plugins/lifecycle/index - fullPath: /mosaic/configure/plugins/lifecycle/index.mdx - name: Lifecycle Events - priority: 1 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/index - childNodes: - - id: /mosaic/configure/plugins/lifecycle/after-source - fullPath: /mosaic/configure/plugins/lifecycle/after-source.mdx - name: $afterSource - priority: 5 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/after-source - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/before-send - fullPath: /mosaic/configure/plugins/lifecycle/before-send.mdx - name: $beforeSend - priority: 4 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/before-send - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/after-update - fullPath: /mosaic/configure/plugins/lifecycle/after-update.mdx - name: afterUpdate - priority: 3 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/after-update - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/should-clear-cache - fullPath: /mosaic/configure/plugins/lifecycle/should-clear-cache.mdx - name: shouldClearCache - priority: 2 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/should-clear-cache - childNodes: [] - - id: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources - fullPath: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources.mdx - name: shouldUpdateNamespaceSources - priority: 1 - data: - level: 4 - link: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources - childNodes: [] - - id: /mosaic/configure/plugins/alias-plugin - fullPath: /mosaic/configure/plugins/alias-plugin.mdx - name: $AliasPlugin - data: - level: 3 - link: /mosaic/configure/plugins/alias-plugin - childNodes: [] - - id: /mosaic/configure/plugins/breadcrumbs-plugin - fullPath: /mosaic/configure/plugins/breadcrumbs-plugin.mdx - name: BreadcrumbsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/breadcrumbs-plugin - childNodes: [] - - id: /mosaic/configure/plugins/broken-links-plugin - fullPath: /mosaic/configure/plugins/broken-links-plugin.mdx - name: BrokenLinksPlugin - data: - level: 3 - link: /mosaic/configure/plugins/broken-links-plugin - childNodes: [] - - id: /mosaic/configure/plugins/codemod-plugin - fullPath: /mosaic/configure/plugins/codemod-plugin.mdx - name: $CodeModPlugin - data: - level: 3 - link: /mosaic/configure/plugins/codemod-plugin - childNodes: [] - - id: /mosaic/configure/plugins/lazy-page-plugin - fullPath: /mosaic/configure/plugins/lazy-page-plugin.mdx - name: LazyPagePlugin - data: - level: 3 - link: /mosaic/configure/plugins/lazy-page-plugin - childNodes: [] - - id: /mosaic/configure/plugins/pages-wthout-extensions-plugin - fullPath: /mosaic/configure/plugins/pages-wthout-extensions-plugin.mdx - name: PagesWithoutFileExtPlugin - data: - level: 3 - link: /mosaic/configure/plugins/pages-wthout-extensions-plugin - childNodes: [] - - id: /mosaic/configure/plugins/public-assets-plugin - fullPath: /mosaic/configure/plugins/public-assets-plugin.mdx - name: PublicAssetsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/public-assets-plugin - childNodes: [] - - id: /mosaic/configure/plugins/reading-time-plugin - fullPath: /mosaic/configure/plugins/reading-time-plugin.mdx - name: ReadingTimePlugin - data: - level: 3 - link: /mosaic/configure/plugins/reading-time-plugin - childNodes: [] - - id: /mosaic/configure/plugins/ref-plugin - fullPath: /mosaic/configure/plugins/ref-plugin.mdx - name: $RefPlugin - data: - level: 3 - link: /mosaic/configure/plugins/ref-plugin - childNodes: [] - - id: /mosaic/configure/plugins/search-index-plugin - fullPath: /mosaic/configure/plugins/search-index-plugin.mdx - name: SearchIndexPlugin - data: - level: 3 - link: /mosaic/configure/plugins/search-index-plugin - childNodes: [] - - id: /mosaic/configure/plugins/shared-config-plugin - fullPath: /mosaic/configure/plugins/shared-config-plugin.mdx - name: SharedConfigPlugin - data: - level: 3 - link: /mosaic/configure/plugins/shared-config-plugin - childNodes: [] - - id: /mosaic/configure/plugins/sidebar-plugin - fullPath: /mosaic/configure/plugins/sidebar-plugin.mdx - name: SidebarPlugin - data: - level: 3 - link: /mosaic/configure/plugins/sidebar-plugin - childNodes: [] - - id: /mosaic/configure/plugins/site-map-plugin - fullPath: /mosaic/configure/plugins/site-map-plugin.mdx - name: SiteMapPlugin - data: - level: 3 - link: /mosaic/configure/plugins/site-map-plugin - childNodes: [] - - id: /mosaic/configure/plugins/tag-plugin - fullPath: /mosaic/configure/plugins/tag-plugin.mdx - name: $TagPlugin - data: - level: 3 - link: /mosaic/configure/plugins/tag-plugin - childNodes: [] - - id: /mosaic/configure/plugins/toc-plugin - fullPath: /mosaic/configure/plugins/toc-plugin.mdx - name: TableOfContentsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/toc-plugin - childNodes: [] ---- -# {meta.title} - -The HTTP Source is used to pull content over HTTP. - -Multiple endpoints can be specified and the source will combine and transform the response from each into a single collection of pages. - -## Installation - -`yarn add @jpmorganchase/mosaic-source-http` - -## Configuration - -| Property | Description | Required | -| ------------------------------------------ | ----------------------------------------------------------------------------- | -------- | -| modulePath | The path to the installed module (@jpmorganchase/mosaic-source-http) | Yes | -| namespace | The scope for this source | Yes | -| disabled | When true, content from this source is not used | No | -| options.endpoints | Collection of URLS to make requests | Yes | -| options.prefixDir | The root path used in the content URL | Yes | -| options.transformResponseToPagesModulePath | The path of the module used to transform endpoint responses into Mosaic pages | Yes | -| options.checkIntervalMins | Number of minutes to wait between requests. Defaults to 5 minutes | No | -| options.initialDelayMs | Number of milliseconds to wait for making initial request. Defaults to 1000 | No | - -### Example HTTP Source Definition - -``` - { - modulePath: '@jpmorganchase/mosaic-source-http', - namespace: 'my-namespace', - options: { - prefixDir: 'docs', - endpoints: [ - 'https://api.data.com/blah', - 'https://api.data.com/hello' - ], - transformResponseToPagesModulePath: '@scope/transformer-package' - } - } -``` diff --git a/packages/site/snapshots/latest/mosaic/configure/sources/index b/packages/site/snapshots/latest/mosaic/configure/sources/index deleted file mode 120000 index 34f13104b..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/sources/index +++ /dev/null @@ -1 +0,0 @@ -index.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/configure/sources/index.mdx b/packages/site/snapshots/latest/mosaic/configure/sources/index.mdx deleted file mode 100644 index d2d25959e..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/sources/index.mdx +++ /dev/null @@ -1,468 +0,0 @@ ---- -title: Sources -layout: DetailTechnical -sidebar: - priority: 3 -lastModified: 1699975774030 -fullPath: /mosaic/configure/sources/index.mdx -route: /mosaic/configure/sources/index -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Configure - path: /mosaic/configure/index - id: /mosaic/configure/index.mdx - - label: Sources - path: /mosaic/configure/sources/index - id: /mosaic/configure/sources/index.mdx -readingTime: - text: 3 min read - minutes: 2.395 - time: 143700 - words: 479 -tableOfContents: - - level: 2 - id: source-definitions - text: Source Definitions - - level: 3 - id: example-local-folder-source-definition - text: Example Local Folder Source Definition - - level: 2 - id: source-namespace - text: Source Namespace - - level: 2 - id: source-schedules - text: Source Schedules - - level: 2 - id: source-types - text: Source Types - - level: 2 - id: watching-for-updates - text: Watching for Updates - - level: 2 - id: source-worker-thread - text: Source Worker Thread - - level: 3 - id: gotchas - text: Gotchas -navigation: - prev: - title: Admin - route: /mosaic/configure/admin/index - next: - title: Source Schedules - route: /mosaic/configure/sources/schedules -sidebarData: - - id: /mosaic/configure/index - fullPath: /mosaic/configure/index.mdx - name: Configure - priority: 4 - data: - level: 2 - link: /mosaic/configure/index - childNodes: [] - - id: /mosaic/configure/modes/index - fullPath: /mosaic/configure/modes/index.mdx - name: Modes of operation - priority: 4 - data: - level: 3 - link: /mosaic/configure/modes/index - childNodes: - - id: /mosaic/configure/modes/active - fullPath: /mosaic/configure/modes/active.mdx - name: Active mode - data: - level: 3 - link: /mosaic/configure/modes/active - childNodes: [] - - id: /mosaic/configure/modes/snapshot-file - fullPath: /mosaic/configure/modes/snapshot-file.mdx - name: Snapshot file mode - data: - level: 3 - link: /mosaic/configure/modes/snapshot-file - childNodes: [] - - id: /mosaic/configure/modes/snapshot-s3 - fullPath: /mosaic/configure/modes/snapshot-s3.mdx - name: Snapshot AWS/S3 mode - data: - level: 3 - link: /mosaic/configure/modes/snapshot-s3 - childNodes: [] - - id: /mosaic/configure/theme/index - fullPath: /mosaic/configure/theme/index.mdx - name: Theming Your Site - priority: 4 - data: - level: 3 - link: /mosaic/configure/theme/index - childNodes: - - id: /mosaic/configure/theme/custom-css - fullPath: /mosaic/configure/theme/custom-css.mdx - name: Custom CSS - priority: 3 - data: - level: 3 - link: /mosaic/configure/theme/custom-css - childNodes: [] - - id: /mosaic/configure/theme/custom-components - fullPath: /mosaic/configure/theme/custom-components.mdx - name: Custom Components - priority: 2 - data: - level: 3 - link: /mosaic/configure/theme/custom-components - childNodes: [] - - id: /mosaic/configure/admin/index - fullPath: /mosaic/configure/admin/index.mdx - name: Admin - priority: 3 - data: - level: 3 - link: /mosaic/configure/admin/index - childNodes: [] - - id: /mosaic/configure/sources/index - fullPath: /mosaic/configure/sources/index.mdx - name: Sources - priority: 3 - data: - level: 3 - link: /mosaic/configure/sources/index - childNodes: - - id: /mosaic/configure/sources/schedules - fullPath: /mosaic/configure/sources/schedules.mdx - name: Schedules - priority: 4 - data: - level: 3 - link: /mosaic/configure/sources/schedules - childNodes: [] - - id: /mosaic/configure/sources/local-folder-source - fullPath: /mosaic/configure/sources/local-folder-source.mdx - name: Local Folder Source - priority: 3 - data: - level: 3 - link: /mosaic/configure/sources/local-folder-source - childNodes: [] - - id: /mosaic/configure/sources/git-repo-source - fullPath: /mosaic/configure/sources/git-repo-source.mdx - name: Git Repo Source - priority: 2 - data: - level: 3 - link: /mosaic/configure/sources/git-repo-source - childNodes: [] - - id: /mosaic/configure/sources/http-source - fullPath: /mosaic/configure/sources/http-source.mdx - name: HTTP Source - priority: 1 - data: - level: 3 - link: /mosaic/configure/sources/http-source - childNodes: [] - - id: /mosaic/configure/layouts/index - fullPath: /mosaic/configure/layouts/index.mdx - name: Layouts - priority: 2 - data: - level: 3 - link: /mosaic/configure/layouts/index - childNodes: - - id: /mosaic/configure/layouts/detail-highlight - fullPath: /mosaic/configure/layouts/detail-highlight.mdx - name: Detail Highlight - data: - level: 3 - link: /mosaic/configure/layouts/detail-highlight - childNodes: [] - - id: /mosaic/configure/layouts/detail-overview - fullPath: /mosaic/configure/layouts/detail-overview.mdx - name: Detail Overview - data: - level: 3 - link: /mosaic/configure/layouts/detail-overview - childNodes: [] - - id: /mosaic/configure/layouts/detail-technical - fullPath: /mosaic/configure/layouts/detail-technical.mdx - name: Detail Technical - data: - level: 3 - link: /mosaic/configure/layouts/detail-technical - childNodes: [] - - id: /mosaic/configure/layouts/landing - fullPath: /mosaic/configure/layouts/landing.mdx - name: Landing Layout - data: - level: 3 - link: /mosaic/configure/layouts/landing - childNodes: [] - - id: /mosaic/configure/layouts/product-discover - fullPath: /mosaic/configure/layouts/product-discover.mdx - name: Product Discover Layout - data: - level: 3 - link: /mosaic/configure/layouts/product-discover - childNodes: [] - - id: /mosaic/configure/layouts/product-preview - fullPath: /mosaic/configure/layouts/product-preview.mdx - name: Product Preview Layout - data: - level: 3 - link: /mosaic/configure/layouts/product-preview - childNodes: [] - - id: /mosaic/configure/plugins/index - fullPath: /mosaic/configure/plugins/index.mdx - name: Plugins - priority: 1 - data: - level: 3 - link: /mosaic/configure/plugins/index - childNodes: - - id: /mosaic/configure/plugins/lifecycle/index - fullPath: /mosaic/configure/plugins/lifecycle/index.mdx - name: Lifecycle Events - priority: 1 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/index - childNodes: - - id: /mosaic/configure/plugins/lifecycle/after-source - fullPath: /mosaic/configure/plugins/lifecycle/after-source.mdx - name: $afterSource - priority: 5 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/after-source - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/before-send - fullPath: /mosaic/configure/plugins/lifecycle/before-send.mdx - name: $beforeSend - priority: 4 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/before-send - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/after-update - fullPath: /mosaic/configure/plugins/lifecycle/after-update.mdx - name: afterUpdate - priority: 3 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/after-update - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/should-clear-cache - fullPath: /mosaic/configure/plugins/lifecycle/should-clear-cache.mdx - name: shouldClearCache - priority: 2 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/should-clear-cache - childNodes: [] - - id: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources - fullPath: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources.mdx - name: shouldUpdateNamespaceSources - priority: 1 - data: - level: 4 - link: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources - childNodes: [] - - id: /mosaic/configure/plugins/alias-plugin - fullPath: /mosaic/configure/plugins/alias-plugin.mdx - name: $AliasPlugin - data: - level: 3 - link: /mosaic/configure/plugins/alias-plugin - childNodes: [] - - id: /mosaic/configure/plugins/breadcrumbs-plugin - fullPath: /mosaic/configure/plugins/breadcrumbs-plugin.mdx - name: BreadcrumbsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/breadcrumbs-plugin - childNodes: [] - - id: /mosaic/configure/plugins/broken-links-plugin - fullPath: /mosaic/configure/plugins/broken-links-plugin.mdx - name: BrokenLinksPlugin - data: - level: 3 - link: /mosaic/configure/plugins/broken-links-plugin - childNodes: [] - - id: /mosaic/configure/plugins/codemod-plugin - fullPath: /mosaic/configure/plugins/codemod-plugin.mdx - name: $CodeModPlugin - data: - level: 3 - link: /mosaic/configure/plugins/codemod-plugin - childNodes: [] - - id: /mosaic/configure/plugins/lazy-page-plugin - fullPath: /mosaic/configure/plugins/lazy-page-plugin.mdx - name: LazyPagePlugin - data: - level: 3 - link: /mosaic/configure/plugins/lazy-page-plugin - childNodes: [] - - id: /mosaic/configure/plugins/pages-wthout-extensions-plugin - fullPath: /mosaic/configure/plugins/pages-wthout-extensions-plugin.mdx - name: PagesWithoutFileExtPlugin - data: - level: 3 - link: /mosaic/configure/plugins/pages-wthout-extensions-plugin - childNodes: [] - - id: /mosaic/configure/plugins/public-assets-plugin - fullPath: /mosaic/configure/plugins/public-assets-plugin.mdx - name: PublicAssetsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/public-assets-plugin - childNodes: [] - - id: /mosaic/configure/plugins/reading-time-plugin - fullPath: /mosaic/configure/plugins/reading-time-plugin.mdx - name: ReadingTimePlugin - data: - level: 3 - link: /mosaic/configure/plugins/reading-time-plugin - childNodes: [] - - id: /mosaic/configure/plugins/ref-plugin - fullPath: /mosaic/configure/plugins/ref-plugin.mdx - name: $RefPlugin - data: - level: 3 - link: /mosaic/configure/plugins/ref-plugin - childNodes: [] - - id: /mosaic/configure/plugins/search-index-plugin - fullPath: /mosaic/configure/plugins/search-index-plugin.mdx - name: SearchIndexPlugin - data: - level: 3 - link: /mosaic/configure/plugins/search-index-plugin - childNodes: [] - - id: /mosaic/configure/plugins/shared-config-plugin - fullPath: /mosaic/configure/plugins/shared-config-plugin.mdx - name: SharedConfigPlugin - data: - level: 3 - link: /mosaic/configure/plugins/shared-config-plugin - childNodes: [] - - id: /mosaic/configure/plugins/sidebar-plugin - fullPath: /mosaic/configure/plugins/sidebar-plugin.mdx - name: SidebarPlugin - data: - level: 3 - link: /mosaic/configure/plugins/sidebar-plugin - childNodes: [] - - id: /mosaic/configure/plugins/site-map-plugin - fullPath: /mosaic/configure/plugins/site-map-plugin.mdx - name: SiteMapPlugin - data: - level: 3 - link: /mosaic/configure/plugins/site-map-plugin - childNodes: [] - - id: /mosaic/configure/plugins/tag-plugin - fullPath: /mosaic/configure/plugins/tag-plugin.mdx - name: $TagPlugin - data: - level: 3 - link: /mosaic/configure/plugins/tag-plugin - childNodes: [] - - id: /mosaic/configure/plugins/toc-plugin - fullPath: /mosaic/configure/plugins/toc-plugin.mdx - name: TableOfContentsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/toc-plugin - childNodes: [] ---- -# {meta.title} - -Sources are what Mosaic uses to pull content from disparate locations and merge into a single virtual filesystem that can be used by a Mosaic Site. - -Depending on the [mode](../modes/index) used, sources can update periodically ensuring that new content is made available automatically. - -## Source Definitions - -Source Definitions are specified in the `sources` collection of a mosaic config file. - -Each source uses a [zod schema](https://zod.dev/?id=introduction) to validate the provided JSON to ensure that all required information for the source to pull content has been provided. - -A source definition at a minimum needs to provide the module path of the source and the [namespace](#source-namespace) that it will use. A namespace is not unique across sources though it is common that each source has a different namespace. - -Lastly, the options field can be used as a bucket for configuration values needed to configure the source e.g. credentials. - - - Users are free to add any property as a source option but please read the [gotchas](#gotchas) - first regarding the allowed *values*. - - -### Example Local Folder Source Definition - -``` - /** - * Demonstrates a local file-system source, in this case a relative path to where the - * site was generated. - * Access from your browser as http://localhost:3000/local - */ - { - modulePath: '@jpmorganchase/mosaic-source-local-folder', - namespace: 'local', // each site has it's own namespace, think of this as your content's uid - options: { - rootDir: '../../docs', // relative path to content - prefixDir: 'local', // root path used for namespace - extensions: ['.mdx'] // extensions of content which should be pulled - } - } -``` - -## Source Namespace - -A Source Namespace is a scoping mechanism for Mosaic sources used to filter the content loaded by Mosaic. By default all sources specified in the mosaic config file are loaded. - -``` -sources: [ - { - namespace: 'my-namespace', - modulePath: '@jpmorganchase/mosaic-source-local-folder' - } -]; -``` - -The following command will ensure mosaic only loads sources with the `local` scope. - -``` -yarn mosaic serve -c ''./mosaic.config.mjs' -p 8080 --scope "local" -``` - -## Source Schedules - -Source schedules define how often sources pull in content that exists remotely and if a failed source is retried. More information can be found [here](./schedules) - -## Source Types - -Out of the box, Mosaic provides 3 source "types": - -* [Local Folder](./local-folder-source) -* [Git Repo Source](./git-repo-source) -* [HTTP Source](./http-source) - -Sources must expose an observable interface so it is possible to compose sources together e.g. the Git Repo source uses the Local Folder source internally to watch the cloned folder for changes. - -## Watching for Updates - -When running in [active mode](../modes/active), Mosaic will watch for any changes to the source content and if a change is detected, will initiate a pull of that new content. - -How often to check for updates and how updates are triggered are a matter for the source to handle. Mosaic simply responds when a source emits new content. - -## Source Worker Thread - -Sources are executed inside their own worker thread to ensure that the main thread is not overloaded. It is here that a local virtual filesystem for the source is created and where several of the [Plugin Lifecycle](../plugins/index#Plugin-lifecycle) events are triggered. - -### Gotchas - -A service worker thread uses [postMessage](https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorker/postMessage) to communicate with the main thread and vice-versa. - -This is important because it limits what values can be provided in the source definition to those that can be processed by the [Structured Clone Algorithm](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Structured_clone_algorithm). diff --git a/packages/site/snapshots/latest/mosaic/configure/sources/local-folder-source b/packages/site/snapshots/latest/mosaic/configure/sources/local-folder-source deleted file mode 120000 index 74b1ab13c..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/sources/local-folder-source +++ /dev/null @@ -1 +0,0 @@ -local-folder-source.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/configure/sources/local-folder-source.mdx b/packages/site/snapshots/latest/mosaic/configure/sources/local-folder-source.mdx deleted file mode 100644 index d72186063..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/sources/local-folder-source.mdx +++ /dev/null @@ -1,406 +0,0 @@ ---- -title: Local Folder Source -layout: DetailTechnical -sidebar: - priority: 3 -lastModified: 1699883563216 -fullPath: /mosaic/configure/sources/local-folder-source.mdx -route: /mosaic/configure/sources/local-folder-source -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Configure - path: /mosaic/configure/index - id: /mosaic/configure/index.mdx - - label: Sources - path: /mosaic/configure/sources/index - id: /mosaic/configure/sources/index.mdx - - label: Local Folder Source - path: /mosaic/configure/sources/local-folder-source - id: /mosaic/configure/sources/local-folder-source.mdx -readingTime: - text: 2 min read - minutes: 1.18 - time: 70800 - words: 236 -tableOfContents: - - level: 2 - id: installation - text: Installation - - level: 2 - id: configuration - text: Configuration - - level: 3 - id: example-local-folder-source-definition - text: Example Local Folder Source Definition -navigation: - prev: - title: Source Schedules - route: /mosaic/configure/sources/schedules - next: - title: Git Repo Source - route: /mosaic/configure/sources/git-repo-source -sidebarData: - - id: /mosaic/configure/index - fullPath: /mosaic/configure/index.mdx - name: Configure - priority: 4 - data: - level: 2 - link: /mosaic/configure/index - childNodes: [] - - id: /mosaic/configure/modes/index - fullPath: /mosaic/configure/modes/index.mdx - name: Modes of operation - priority: 4 - data: - level: 3 - link: /mosaic/configure/modes/index - childNodes: - - id: /mosaic/configure/modes/active - fullPath: /mosaic/configure/modes/active.mdx - name: Active mode - data: - level: 3 - link: /mosaic/configure/modes/active - childNodes: [] - - id: /mosaic/configure/modes/snapshot-file - fullPath: /mosaic/configure/modes/snapshot-file.mdx - name: Snapshot file mode - data: - level: 3 - link: /mosaic/configure/modes/snapshot-file - childNodes: [] - - id: /mosaic/configure/modes/snapshot-s3 - fullPath: /mosaic/configure/modes/snapshot-s3.mdx - name: Snapshot AWS/S3 mode - data: - level: 3 - link: /mosaic/configure/modes/snapshot-s3 - childNodes: [] - - id: /mosaic/configure/theme/index - fullPath: /mosaic/configure/theme/index.mdx - name: Theming Your Site - priority: 4 - data: - level: 3 - link: /mosaic/configure/theme/index - childNodes: - - id: /mosaic/configure/theme/custom-css - fullPath: /mosaic/configure/theme/custom-css.mdx - name: Custom CSS - priority: 3 - data: - level: 3 - link: /mosaic/configure/theme/custom-css - childNodes: [] - - id: /mosaic/configure/theme/custom-components - fullPath: /mosaic/configure/theme/custom-components.mdx - name: Custom Components - priority: 2 - data: - level: 3 - link: /mosaic/configure/theme/custom-components - childNodes: [] - - id: /mosaic/configure/admin/index - fullPath: /mosaic/configure/admin/index.mdx - name: Admin - priority: 3 - data: - level: 3 - link: /mosaic/configure/admin/index - childNodes: [] - - id: /mosaic/configure/sources/index - fullPath: /mosaic/configure/sources/index.mdx - name: Sources - priority: 3 - data: - level: 3 - link: /mosaic/configure/sources/index - childNodes: - - id: /mosaic/configure/sources/schedules - fullPath: /mosaic/configure/sources/schedules.mdx - name: Schedules - priority: 4 - data: - level: 3 - link: /mosaic/configure/sources/schedules - childNodes: [] - - id: /mosaic/configure/sources/local-folder-source - fullPath: /mosaic/configure/sources/local-folder-source.mdx - name: Local Folder Source - priority: 3 - data: - level: 3 - link: /mosaic/configure/sources/local-folder-source - childNodes: [] - - id: /mosaic/configure/sources/git-repo-source - fullPath: /mosaic/configure/sources/git-repo-source.mdx - name: Git Repo Source - priority: 2 - data: - level: 3 - link: /mosaic/configure/sources/git-repo-source - childNodes: [] - - id: /mosaic/configure/sources/http-source - fullPath: /mosaic/configure/sources/http-source.mdx - name: HTTP Source - priority: 1 - data: - level: 3 - link: /mosaic/configure/sources/http-source - childNodes: [] - - id: /mosaic/configure/layouts/index - fullPath: /mosaic/configure/layouts/index.mdx - name: Layouts - priority: 2 - data: - level: 3 - link: /mosaic/configure/layouts/index - childNodes: - - id: /mosaic/configure/layouts/detail-highlight - fullPath: /mosaic/configure/layouts/detail-highlight.mdx - name: Detail Highlight - data: - level: 3 - link: /mosaic/configure/layouts/detail-highlight - childNodes: [] - - id: /mosaic/configure/layouts/detail-overview - fullPath: /mosaic/configure/layouts/detail-overview.mdx - name: Detail Overview - data: - level: 3 - link: /mosaic/configure/layouts/detail-overview - childNodes: [] - - id: /mosaic/configure/layouts/detail-technical - fullPath: /mosaic/configure/layouts/detail-technical.mdx - name: Detail Technical - data: - level: 3 - link: /mosaic/configure/layouts/detail-technical - childNodes: [] - - id: /mosaic/configure/layouts/landing - fullPath: /mosaic/configure/layouts/landing.mdx - name: Landing Layout - data: - level: 3 - link: /mosaic/configure/layouts/landing - childNodes: [] - - id: /mosaic/configure/layouts/product-discover - fullPath: /mosaic/configure/layouts/product-discover.mdx - name: Product Discover Layout - data: - level: 3 - link: /mosaic/configure/layouts/product-discover - childNodes: [] - - id: /mosaic/configure/layouts/product-preview - fullPath: /mosaic/configure/layouts/product-preview.mdx - name: Product Preview Layout - data: - level: 3 - link: /mosaic/configure/layouts/product-preview - childNodes: [] - - id: /mosaic/configure/plugins/index - fullPath: /mosaic/configure/plugins/index.mdx - name: Plugins - priority: 1 - data: - level: 3 - link: /mosaic/configure/plugins/index - childNodes: - - id: /mosaic/configure/plugins/lifecycle/index - fullPath: /mosaic/configure/plugins/lifecycle/index.mdx - name: Lifecycle Events - priority: 1 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/index - childNodes: - - id: /mosaic/configure/plugins/lifecycle/after-source - fullPath: /mosaic/configure/plugins/lifecycle/after-source.mdx - name: $afterSource - priority: 5 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/after-source - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/before-send - fullPath: /mosaic/configure/plugins/lifecycle/before-send.mdx - name: $beforeSend - priority: 4 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/before-send - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/after-update - fullPath: /mosaic/configure/plugins/lifecycle/after-update.mdx - name: afterUpdate - priority: 3 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/after-update - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/should-clear-cache - fullPath: /mosaic/configure/plugins/lifecycle/should-clear-cache.mdx - name: shouldClearCache - priority: 2 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/should-clear-cache - childNodes: [] - - id: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources - fullPath: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources.mdx - name: shouldUpdateNamespaceSources - priority: 1 - data: - level: 4 - link: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources - childNodes: [] - - id: /mosaic/configure/plugins/alias-plugin - fullPath: /mosaic/configure/plugins/alias-plugin.mdx - name: $AliasPlugin - data: - level: 3 - link: /mosaic/configure/plugins/alias-plugin - childNodes: [] - - id: /mosaic/configure/plugins/breadcrumbs-plugin - fullPath: /mosaic/configure/plugins/breadcrumbs-plugin.mdx - name: BreadcrumbsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/breadcrumbs-plugin - childNodes: [] - - id: /mosaic/configure/plugins/broken-links-plugin - fullPath: /mosaic/configure/plugins/broken-links-plugin.mdx - name: BrokenLinksPlugin - data: - level: 3 - link: /mosaic/configure/plugins/broken-links-plugin - childNodes: [] - - id: /mosaic/configure/plugins/codemod-plugin - fullPath: /mosaic/configure/plugins/codemod-plugin.mdx - name: $CodeModPlugin - data: - level: 3 - link: /mosaic/configure/plugins/codemod-plugin - childNodes: [] - - id: /mosaic/configure/plugins/lazy-page-plugin - fullPath: /mosaic/configure/plugins/lazy-page-plugin.mdx - name: LazyPagePlugin - data: - level: 3 - link: /mosaic/configure/plugins/lazy-page-plugin - childNodes: [] - - id: /mosaic/configure/plugins/pages-wthout-extensions-plugin - fullPath: /mosaic/configure/plugins/pages-wthout-extensions-plugin.mdx - name: PagesWithoutFileExtPlugin - data: - level: 3 - link: /mosaic/configure/plugins/pages-wthout-extensions-plugin - childNodes: [] - - id: /mosaic/configure/plugins/public-assets-plugin - fullPath: /mosaic/configure/plugins/public-assets-plugin.mdx - name: PublicAssetsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/public-assets-plugin - childNodes: [] - - id: /mosaic/configure/plugins/reading-time-plugin - fullPath: /mosaic/configure/plugins/reading-time-plugin.mdx - name: ReadingTimePlugin - data: - level: 3 - link: /mosaic/configure/plugins/reading-time-plugin - childNodes: [] - - id: /mosaic/configure/plugins/ref-plugin - fullPath: /mosaic/configure/plugins/ref-plugin.mdx - name: $RefPlugin - data: - level: 3 - link: /mosaic/configure/plugins/ref-plugin - childNodes: [] - - id: /mosaic/configure/plugins/search-index-plugin - fullPath: /mosaic/configure/plugins/search-index-plugin.mdx - name: SearchIndexPlugin - data: - level: 3 - link: /mosaic/configure/plugins/search-index-plugin - childNodes: [] - - id: /mosaic/configure/plugins/shared-config-plugin - fullPath: /mosaic/configure/plugins/shared-config-plugin.mdx - name: SharedConfigPlugin - data: - level: 3 - link: /mosaic/configure/plugins/shared-config-plugin - childNodes: [] - - id: /mosaic/configure/plugins/sidebar-plugin - fullPath: /mosaic/configure/plugins/sidebar-plugin.mdx - name: SidebarPlugin - data: - level: 3 - link: /mosaic/configure/plugins/sidebar-plugin - childNodes: [] - - id: /mosaic/configure/plugins/site-map-plugin - fullPath: /mosaic/configure/plugins/site-map-plugin.mdx - name: SiteMapPlugin - data: - level: 3 - link: /mosaic/configure/plugins/site-map-plugin - childNodes: [] - - id: /mosaic/configure/plugins/tag-plugin - fullPath: /mosaic/configure/plugins/tag-plugin.mdx - name: $TagPlugin - data: - level: 3 - link: /mosaic/configure/plugins/tag-plugin - childNodes: [] - - id: /mosaic/configure/plugins/toc-plugin - fullPath: /mosaic/configure/plugins/toc-plugin.mdx - name: TableOfContentsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/toc-plugin - childNodes: [] ---- -# {meta.title} - -The Local Folder Source is used to pull content from a folder located on the same machine as Mosaic is running. - -It is common to use this source when running mosaic locally. - -## Installation - -`yarn add @jpmorganchase/mosaic-source-local-folder` - -## Configuration - -| Property | Description | Required | -| ------------------ | ------------------------------------------------------------------------------ | -------- | -| modulePath | The path to the installed module (@jpmorganchase/mosaic-source-local-folder) | Yes | -| namespace | The scope for this source | Yes | -| disabled | When true, content from this source is not used | No | -| options.rootDir | The top level directory content will be pulled from | Yes | -| options.prefixDir | The root path used in the content URL | Yes | -| options.extensions | Collection of file extensions that the source will look for inside the rootDir | Yes | - -### Example Local Folder Source Definition - -``` -{ - modulePath: '@jpmorganchase/mosaic-source-local-folder', - namespace: 'local', // each site has it's own namespace, think of this as your content's uid - options: { - rootDir: '../../docs', // relative path to content - prefixDir: 'local', // root path used for namespace - extensions: ['.mdx'] // extensions of content which should be pulled - } -} -``` - -This source will look for content with the ".mdx" extension in a "docs" directory 2 levels up from the Mosaic working directory. That content is included in the "local" namespace and available from a route that is prefixed with "local". - -So if you had a file, `docs/app/index.mdx` then you would be able to view it at `http://localhost:3000/local/app/index`. diff --git a/packages/site/snapshots/latest/mosaic/configure/sources/shared-config.json b/packages/site/snapshots/latest/mosaic/configure/sources/shared-config.json deleted file mode 120000 index da3ba444a..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/sources/shared-config.json +++ /dev/null @@ -1 +0,0 @@ -../../shared-config.json \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/configure/theme/custom-components b/packages/site/snapshots/latest/mosaic/configure/theme/custom-components deleted file mode 120000 index 498658a9d..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/theme/custom-components +++ /dev/null @@ -1 +0,0 @@ -custom-components.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/configure/theme/custom-components.mdx b/packages/site/snapshots/latest/mosaic/configure/theme/custom-components.mdx deleted file mode 100644 index f1380796a..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/theme/custom-components.mdx +++ /dev/null @@ -1,511 +0,0 @@ ---- -title: Custom Components -layout: DetailTechnical -sidebar: - priority: 2 -lastModified: 1699883563217 -fullPath: /mosaic/configure/theme/custom-components.mdx -route: /mosaic/configure/theme/custom-components -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Configure - path: /mosaic/configure/index - id: /mosaic/configure/index.mdx - - label: Theming Your Site - path: /mosaic/configure/theme/index - id: /mosaic/configure/theme/index.mdx - - label: Custom Components - path: /mosaic/configure/theme/custom-components - id: /mosaic/configure/theme/custom-components.mdx -readingTime: - text: 2 min read - minutes: 1.86 - time: 111600 - words: 372 -tableOfContents: - - level: 2 - id: create-components-folder - text: Create Components Folder - - level: 2 - id: create-card-component - text: Create Card Component - - level: 3 - id: card-component-indextsx - text: 'Card Component: index.tsx' - - level: 3 - id: card-component-cardmodulecss - text: 'Card Component: card.module.css' - - level: 2 - id: import-custom-card-component - text: Import Custom Card Component - - level: 2 - id: use-your-custom-card-component - text: Use Your Custom Card Component -navigation: - prev: - title: Custom CSS - route: /mosaic/configure/theme/custom-css - next: - title: Admin - route: /mosaic/configure/admin/index -sidebarData: - - id: /mosaic/configure/index - fullPath: /mosaic/configure/index.mdx - name: Configure - priority: 4 - data: - level: 2 - link: /mosaic/configure/index - childNodes: [] - - id: /mosaic/configure/modes/index - fullPath: /mosaic/configure/modes/index.mdx - name: Modes of operation - priority: 4 - data: - level: 3 - link: /mosaic/configure/modes/index - childNodes: - - id: /mosaic/configure/modes/active - fullPath: /mosaic/configure/modes/active.mdx - name: Active mode - data: - level: 3 - link: /mosaic/configure/modes/active - childNodes: [] - - id: /mosaic/configure/modes/snapshot-file - fullPath: /mosaic/configure/modes/snapshot-file.mdx - name: Snapshot file mode - data: - level: 3 - link: /mosaic/configure/modes/snapshot-file - childNodes: [] - - id: /mosaic/configure/modes/snapshot-s3 - fullPath: /mosaic/configure/modes/snapshot-s3.mdx - name: Snapshot AWS/S3 mode - data: - level: 3 - link: /mosaic/configure/modes/snapshot-s3 - childNodes: [] - - id: /mosaic/configure/theme/index - fullPath: /mosaic/configure/theme/index.mdx - name: Theming Your Site - priority: 4 - data: - level: 3 - link: /mosaic/configure/theme/index - childNodes: - - id: /mosaic/configure/theme/custom-css - fullPath: /mosaic/configure/theme/custom-css.mdx - name: Custom CSS - priority: 3 - data: - level: 3 - link: /mosaic/configure/theme/custom-css - childNodes: [] - - id: /mosaic/configure/theme/custom-components - fullPath: /mosaic/configure/theme/custom-components.mdx - name: Custom Components - priority: 2 - data: - level: 3 - link: /mosaic/configure/theme/custom-components - childNodes: [] - - id: /mosaic/configure/admin/index - fullPath: /mosaic/configure/admin/index.mdx - name: Admin - priority: 3 - data: - level: 3 - link: /mosaic/configure/admin/index - childNodes: [] - - id: /mosaic/configure/sources/index - fullPath: /mosaic/configure/sources/index.mdx - name: Sources - priority: 3 - data: - level: 3 - link: /mosaic/configure/sources/index - childNodes: - - id: /mosaic/configure/sources/schedules - fullPath: /mosaic/configure/sources/schedules.mdx - name: Schedules - priority: 4 - data: - level: 3 - link: /mosaic/configure/sources/schedules - childNodes: [] - - id: /mosaic/configure/sources/local-folder-source - fullPath: /mosaic/configure/sources/local-folder-source.mdx - name: Local Folder Source - priority: 3 - data: - level: 3 - link: /mosaic/configure/sources/local-folder-source - childNodes: [] - - id: /mosaic/configure/sources/git-repo-source - fullPath: /mosaic/configure/sources/git-repo-source.mdx - name: Git Repo Source - priority: 2 - data: - level: 3 - link: /mosaic/configure/sources/git-repo-source - childNodes: [] - - id: /mosaic/configure/sources/http-source - fullPath: /mosaic/configure/sources/http-source.mdx - name: HTTP Source - priority: 1 - data: - level: 3 - link: /mosaic/configure/sources/http-source - childNodes: [] - - id: /mosaic/configure/layouts/index - fullPath: /mosaic/configure/layouts/index.mdx - name: Layouts - priority: 2 - data: - level: 3 - link: /mosaic/configure/layouts/index - childNodes: - - id: /mosaic/configure/layouts/detail-highlight - fullPath: /mosaic/configure/layouts/detail-highlight.mdx - name: Detail Highlight - data: - level: 3 - link: /mosaic/configure/layouts/detail-highlight - childNodes: [] - - id: /mosaic/configure/layouts/detail-overview - fullPath: /mosaic/configure/layouts/detail-overview.mdx - name: Detail Overview - data: - level: 3 - link: /mosaic/configure/layouts/detail-overview - childNodes: [] - - id: /mosaic/configure/layouts/detail-technical - fullPath: /mosaic/configure/layouts/detail-technical.mdx - name: Detail Technical - data: - level: 3 - link: /mosaic/configure/layouts/detail-technical - childNodes: [] - - id: /mosaic/configure/layouts/landing - fullPath: /mosaic/configure/layouts/landing.mdx - name: Landing Layout - data: - level: 3 - link: /mosaic/configure/layouts/landing - childNodes: [] - - id: /mosaic/configure/layouts/product-discover - fullPath: /mosaic/configure/layouts/product-discover.mdx - name: Product Discover Layout - data: - level: 3 - link: /mosaic/configure/layouts/product-discover - childNodes: [] - - id: /mosaic/configure/layouts/product-preview - fullPath: /mosaic/configure/layouts/product-preview.mdx - name: Product Preview Layout - data: - level: 3 - link: /mosaic/configure/layouts/product-preview - childNodes: [] - - id: /mosaic/configure/plugins/index - fullPath: /mosaic/configure/plugins/index.mdx - name: Plugins - priority: 1 - data: - level: 3 - link: /mosaic/configure/plugins/index - childNodes: - - id: /mosaic/configure/plugins/lifecycle/index - fullPath: /mosaic/configure/plugins/lifecycle/index.mdx - name: Lifecycle Events - priority: 1 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/index - childNodes: - - id: /mosaic/configure/plugins/lifecycle/after-source - fullPath: /mosaic/configure/plugins/lifecycle/after-source.mdx - name: $afterSource - priority: 5 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/after-source - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/before-send - fullPath: /mosaic/configure/plugins/lifecycle/before-send.mdx - name: $beforeSend - priority: 4 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/before-send - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/after-update - fullPath: /mosaic/configure/plugins/lifecycle/after-update.mdx - name: afterUpdate - priority: 3 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/after-update - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/should-clear-cache - fullPath: /mosaic/configure/plugins/lifecycle/should-clear-cache.mdx - name: shouldClearCache - priority: 2 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/should-clear-cache - childNodes: [] - - id: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources - fullPath: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources.mdx - name: shouldUpdateNamespaceSources - priority: 1 - data: - level: 4 - link: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources - childNodes: [] - - id: /mosaic/configure/plugins/alias-plugin - fullPath: /mosaic/configure/plugins/alias-plugin.mdx - name: $AliasPlugin - data: - level: 3 - link: /mosaic/configure/plugins/alias-plugin - childNodes: [] - - id: /mosaic/configure/plugins/breadcrumbs-plugin - fullPath: /mosaic/configure/plugins/breadcrumbs-plugin.mdx - name: BreadcrumbsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/breadcrumbs-plugin - childNodes: [] - - id: /mosaic/configure/plugins/broken-links-plugin - fullPath: /mosaic/configure/plugins/broken-links-plugin.mdx - name: BrokenLinksPlugin - data: - level: 3 - link: /mosaic/configure/plugins/broken-links-plugin - childNodes: [] - - id: /mosaic/configure/plugins/codemod-plugin - fullPath: /mosaic/configure/plugins/codemod-plugin.mdx - name: $CodeModPlugin - data: - level: 3 - link: /mosaic/configure/plugins/codemod-plugin - childNodes: [] - - id: /mosaic/configure/plugins/lazy-page-plugin - fullPath: /mosaic/configure/plugins/lazy-page-plugin.mdx - name: LazyPagePlugin - data: - level: 3 - link: /mosaic/configure/plugins/lazy-page-plugin - childNodes: [] - - id: /mosaic/configure/plugins/pages-wthout-extensions-plugin - fullPath: /mosaic/configure/plugins/pages-wthout-extensions-plugin.mdx - name: PagesWithoutFileExtPlugin - data: - level: 3 - link: /mosaic/configure/plugins/pages-wthout-extensions-plugin - childNodes: [] - - id: /mosaic/configure/plugins/public-assets-plugin - fullPath: /mosaic/configure/plugins/public-assets-plugin.mdx - name: PublicAssetsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/public-assets-plugin - childNodes: [] - - id: /mosaic/configure/plugins/reading-time-plugin - fullPath: /mosaic/configure/plugins/reading-time-plugin.mdx - name: ReadingTimePlugin - data: - level: 3 - link: /mosaic/configure/plugins/reading-time-plugin - childNodes: [] - - id: /mosaic/configure/plugins/ref-plugin - fullPath: /mosaic/configure/plugins/ref-plugin.mdx - name: $RefPlugin - data: - level: 3 - link: /mosaic/configure/plugins/ref-plugin - childNodes: [] - - id: /mosaic/configure/plugins/search-index-plugin - fullPath: /mosaic/configure/plugins/search-index-plugin.mdx - name: SearchIndexPlugin - data: - level: 3 - link: /mosaic/configure/plugins/search-index-plugin - childNodes: [] - - id: /mosaic/configure/plugins/shared-config-plugin - fullPath: /mosaic/configure/plugins/shared-config-plugin.mdx - name: SharedConfigPlugin - data: - level: 3 - link: /mosaic/configure/plugins/shared-config-plugin - childNodes: [] - - id: /mosaic/configure/plugins/sidebar-plugin - fullPath: /mosaic/configure/plugins/sidebar-plugin.mdx - name: SidebarPlugin - data: - level: 3 - link: /mosaic/configure/plugins/sidebar-plugin - childNodes: [] - - id: /mosaic/configure/plugins/site-map-plugin - fullPath: /mosaic/configure/plugins/site-map-plugin.mdx - name: SiteMapPlugin - data: - level: 3 - link: /mosaic/configure/plugins/site-map-plugin - childNodes: [] - - id: /mosaic/configure/plugins/tag-plugin - fullPath: /mosaic/configure/plugins/tag-plugin.mdx - name: $TagPlugin - data: - level: 3 - link: /mosaic/configure/plugins/tag-plugin - childNodes: [] - - id: /mosaic/configure/plugins/toc-plugin - fullPath: /mosaic/configure/plugins/toc-plugin.mdx - name: TableOfContentsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/toc-plugin - childNodes: [] ---- -# {meta.title} - -Learn how to add your own custom components to your Mosaic site. - -## Create Components Folder - -To start, create a `components` folder under `src` where you'll store your custom components. - -``` -src/ -└── components/ -``` - -In this tutorial, we will create a custom `Card` component. - -## Create Card Component - -Inside the `components` folder, create a `card` folder, which will contain your React `Card` component. The `card` folder should include `index.tsx` and `card.module.css` files as shown in the structure below: - -``` -├── src/ -│ ├── components/ -│ │ └── card/ -│ │ ├── index.tsx -│ │ └── card.module.css -``` - -### Card Component: index.tsx - -Create your `Card` component within the `index.tsx` file: - -```tsx -import React from 'react'; -import styles from './card.module.css'; - -type CardProps = { - title: string; - content: string; -}; - -export const Card: React.FC = ({ title, content }) => { - return ( -
    -

    {title}

    -

    {content}

    -
    - ); -}; -``` - -### Card Component: card.module.css - -Define your component styles in the `card.module.css` file: - -```css -.card { - background-color: #f5f5f5; - border: 1px solid #ccc; - border-radius: 4px; - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); - padding: 16px; - transition: box-shadow 0.2s ease-in-out; -} - -.card:hover { - box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2); -} - -.card h2 { - color: #333; - font-size: 24px; - margin-bottom: 8px; -} - -.card p { - color: #666; - font-size: 16px; - line-height: 1.5; -} -``` - -In this example, we use a CSS file, but you can use whichever styling approach you prefer, such as [vanilla extract](https://vanilla-extract.style/). - -To export your `Card` component, create an `index.ts` file in the `components` folder: - -```ts -export * from './card'; -``` - -Your final folder structure should look like this: - -``` -├── src/ -│ ├── components/ -│ │ ├── card/ -│ │ │ ├── index.tsx -│ │ │ └── card.module.css -│ │ ├── index.ts -``` - -## Import Custom Card Component - -To use your custom `Card` component, import it into your site's `_app.tsx` file. Add the following line to your imports: - -```tsx -import * as myComponents from '../components'; -``` - -Replace this line: - -```tsx -const components = mosaicComponents; -``` - -with: - -```tsx -const components = { - ...mosaicComponents, - ...myComponents -}; -``` - -This will add your custom components to the site, and any custom components in `myComponents` will override the corresponding ones in `mosaicComponents`. The spread operator (`...`) merges both `mosaicComponents` and `myComponents` objects, giving priority to `myComponents` when there is a naming conflict. - -## Use Your Custom Card Component - -Now you're ready to use your custom `Card` component. Build and run your site, and add the `Card` component to an MDX file in your `docs` folder or another source: - -```mdx - -``` - -You can create and add more custom components to your Mosaic site by following the same process. diff --git a/packages/site/snapshots/latest/mosaic/configure/theme/custom-css b/packages/site/snapshots/latest/mosaic/configure/theme/custom-css deleted file mode 120000 index b773cc37e..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/theme/custom-css +++ /dev/null @@ -1 +0,0 @@ -custom-css.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/configure/theme/custom-css.mdx b/packages/site/snapshots/latest/mosaic/configure/theme/custom-css.mdx deleted file mode 100644 index f8b056dc3..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/theme/custom-css.mdx +++ /dev/null @@ -1,466 +0,0 @@ ---- -title: Custom CSS -layout: DetailTechnical -sidebar: - priority: 3 -lastModified: 1699883563217 -fullPath: /mosaic/configure/theme/custom-css.mdx -route: /mosaic/configure/theme/custom-css -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Configure - path: /mosaic/configure/index - id: /mosaic/configure/index.mdx - - label: Theming Your Site - path: /mosaic/configure/theme/index - id: /mosaic/configure/theme/index.mdx - - label: Custom CSS - path: /mosaic/configure/theme/custom-css - id: /mosaic/configure/theme/custom-css.mdx -readingTime: - text: 2 min read - minutes: 1.885 - time: 113100 - words: 377 -tableOfContents: - - level: 2 - id: create-a-css-folder - text: Create a CSS folder - - level: 2 - id: create-your-theme - text: Create your theme - - level: 2 - id: import-your-custom-css-into-your-site - text: Import your custom CSS into your site -navigation: - prev: - title: Theming Your Site - route: /mosaic/configure/theme/index - next: - title: Custom Components - route: /mosaic/configure/theme/custom-components -sidebarData: - - id: /mosaic/configure/index - fullPath: /mosaic/configure/index.mdx - name: Configure - priority: 4 - data: - level: 2 - link: /mosaic/configure/index - childNodes: [] - - id: /mosaic/configure/modes/index - fullPath: /mosaic/configure/modes/index.mdx - name: Modes of operation - priority: 4 - data: - level: 3 - link: /mosaic/configure/modes/index - childNodes: - - id: /mosaic/configure/modes/active - fullPath: /mosaic/configure/modes/active.mdx - name: Active mode - data: - level: 3 - link: /mosaic/configure/modes/active - childNodes: [] - - id: /mosaic/configure/modes/snapshot-file - fullPath: /mosaic/configure/modes/snapshot-file.mdx - name: Snapshot file mode - data: - level: 3 - link: /mosaic/configure/modes/snapshot-file - childNodes: [] - - id: /mosaic/configure/modes/snapshot-s3 - fullPath: /mosaic/configure/modes/snapshot-s3.mdx - name: Snapshot AWS/S3 mode - data: - level: 3 - link: /mosaic/configure/modes/snapshot-s3 - childNodes: [] - - id: /mosaic/configure/theme/index - fullPath: /mosaic/configure/theme/index.mdx - name: Theming Your Site - priority: 4 - data: - level: 3 - link: /mosaic/configure/theme/index - childNodes: - - id: /mosaic/configure/theme/custom-css - fullPath: /mosaic/configure/theme/custom-css.mdx - name: Custom CSS - priority: 3 - data: - level: 3 - link: /mosaic/configure/theme/custom-css - childNodes: [] - - id: /mosaic/configure/theme/custom-components - fullPath: /mosaic/configure/theme/custom-components.mdx - name: Custom Components - priority: 2 - data: - level: 3 - link: /mosaic/configure/theme/custom-components - childNodes: [] - - id: /mosaic/configure/admin/index - fullPath: /mosaic/configure/admin/index.mdx - name: Admin - priority: 3 - data: - level: 3 - link: /mosaic/configure/admin/index - childNodes: [] - - id: /mosaic/configure/sources/index - fullPath: /mosaic/configure/sources/index.mdx - name: Sources - priority: 3 - data: - level: 3 - link: /mosaic/configure/sources/index - childNodes: - - id: /mosaic/configure/sources/schedules - fullPath: /mosaic/configure/sources/schedules.mdx - name: Schedules - priority: 4 - data: - level: 3 - link: /mosaic/configure/sources/schedules - childNodes: [] - - id: /mosaic/configure/sources/local-folder-source - fullPath: /mosaic/configure/sources/local-folder-source.mdx - name: Local Folder Source - priority: 3 - data: - level: 3 - link: /mosaic/configure/sources/local-folder-source - childNodes: [] - - id: /mosaic/configure/sources/git-repo-source - fullPath: /mosaic/configure/sources/git-repo-source.mdx - name: Git Repo Source - priority: 2 - data: - level: 3 - link: /mosaic/configure/sources/git-repo-source - childNodes: [] - - id: /mosaic/configure/sources/http-source - fullPath: /mosaic/configure/sources/http-source.mdx - name: HTTP Source - priority: 1 - data: - level: 3 - link: /mosaic/configure/sources/http-source - childNodes: [] - - id: /mosaic/configure/layouts/index - fullPath: /mosaic/configure/layouts/index.mdx - name: Layouts - priority: 2 - data: - level: 3 - link: /mosaic/configure/layouts/index - childNodes: - - id: /mosaic/configure/layouts/detail-highlight - fullPath: /mosaic/configure/layouts/detail-highlight.mdx - name: Detail Highlight - data: - level: 3 - link: /mosaic/configure/layouts/detail-highlight - childNodes: [] - - id: /mosaic/configure/layouts/detail-overview - fullPath: /mosaic/configure/layouts/detail-overview.mdx - name: Detail Overview - data: - level: 3 - link: /mosaic/configure/layouts/detail-overview - childNodes: [] - - id: /mosaic/configure/layouts/detail-technical - fullPath: /mosaic/configure/layouts/detail-technical.mdx - name: Detail Technical - data: - level: 3 - link: /mosaic/configure/layouts/detail-technical - childNodes: [] - - id: /mosaic/configure/layouts/landing - fullPath: /mosaic/configure/layouts/landing.mdx - name: Landing Layout - data: - level: 3 - link: /mosaic/configure/layouts/landing - childNodes: [] - - id: /mosaic/configure/layouts/product-discover - fullPath: /mosaic/configure/layouts/product-discover.mdx - name: Product Discover Layout - data: - level: 3 - link: /mosaic/configure/layouts/product-discover - childNodes: [] - - id: /mosaic/configure/layouts/product-preview - fullPath: /mosaic/configure/layouts/product-preview.mdx - name: Product Preview Layout - data: - level: 3 - link: /mosaic/configure/layouts/product-preview - childNodes: [] - - id: /mosaic/configure/plugins/index - fullPath: /mosaic/configure/plugins/index.mdx - name: Plugins - priority: 1 - data: - level: 3 - link: /mosaic/configure/plugins/index - childNodes: - - id: /mosaic/configure/plugins/lifecycle/index - fullPath: /mosaic/configure/plugins/lifecycle/index.mdx - name: Lifecycle Events - priority: 1 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/index - childNodes: - - id: /mosaic/configure/plugins/lifecycle/after-source - fullPath: /mosaic/configure/plugins/lifecycle/after-source.mdx - name: $afterSource - priority: 5 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/after-source - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/before-send - fullPath: /mosaic/configure/plugins/lifecycle/before-send.mdx - name: $beforeSend - priority: 4 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/before-send - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/after-update - fullPath: /mosaic/configure/plugins/lifecycle/after-update.mdx - name: afterUpdate - priority: 3 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/after-update - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/should-clear-cache - fullPath: /mosaic/configure/plugins/lifecycle/should-clear-cache.mdx - name: shouldClearCache - priority: 2 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/should-clear-cache - childNodes: [] - - id: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources - fullPath: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources.mdx - name: shouldUpdateNamespaceSources - priority: 1 - data: - level: 4 - link: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources - childNodes: [] - - id: /mosaic/configure/plugins/alias-plugin - fullPath: /mosaic/configure/plugins/alias-plugin.mdx - name: $AliasPlugin - data: - level: 3 - link: /mosaic/configure/plugins/alias-plugin - childNodes: [] - - id: /mosaic/configure/plugins/breadcrumbs-plugin - fullPath: /mosaic/configure/plugins/breadcrumbs-plugin.mdx - name: BreadcrumbsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/breadcrumbs-plugin - childNodes: [] - - id: /mosaic/configure/plugins/broken-links-plugin - fullPath: /mosaic/configure/plugins/broken-links-plugin.mdx - name: BrokenLinksPlugin - data: - level: 3 - link: /mosaic/configure/plugins/broken-links-plugin - childNodes: [] - - id: /mosaic/configure/plugins/codemod-plugin - fullPath: /mosaic/configure/plugins/codemod-plugin.mdx - name: $CodeModPlugin - data: - level: 3 - link: /mosaic/configure/plugins/codemod-plugin - childNodes: [] - - id: /mosaic/configure/plugins/lazy-page-plugin - fullPath: /mosaic/configure/plugins/lazy-page-plugin.mdx - name: LazyPagePlugin - data: - level: 3 - link: /mosaic/configure/plugins/lazy-page-plugin - childNodes: [] - - id: /mosaic/configure/plugins/pages-wthout-extensions-plugin - fullPath: /mosaic/configure/plugins/pages-wthout-extensions-plugin.mdx - name: PagesWithoutFileExtPlugin - data: - level: 3 - link: /mosaic/configure/plugins/pages-wthout-extensions-plugin - childNodes: [] - - id: /mosaic/configure/plugins/public-assets-plugin - fullPath: /mosaic/configure/plugins/public-assets-plugin.mdx - name: PublicAssetsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/public-assets-plugin - childNodes: [] - - id: /mosaic/configure/plugins/reading-time-plugin - fullPath: /mosaic/configure/plugins/reading-time-plugin.mdx - name: ReadingTimePlugin - data: - level: 3 - link: /mosaic/configure/plugins/reading-time-plugin - childNodes: [] - - id: /mosaic/configure/plugins/ref-plugin - fullPath: /mosaic/configure/plugins/ref-plugin.mdx - name: $RefPlugin - data: - level: 3 - link: /mosaic/configure/plugins/ref-plugin - childNodes: [] - - id: /mosaic/configure/plugins/search-index-plugin - fullPath: /mosaic/configure/plugins/search-index-plugin.mdx - name: SearchIndexPlugin - data: - level: 3 - link: /mosaic/configure/plugins/search-index-plugin - childNodes: [] - - id: /mosaic/configure/plugins/shared-config-plugin - fullPath: /mosaic/configure/plugins/shared-config-plugin.mdx - name: SharedConfigPlugin - data: - level: 3 - link: /mosaic/configure/plugins/shared-config-plugin - childNodes: [] - - id: /mosaic/configure/plugins/sidebar-plugin - fullPath: /mosaic/configure/plugins/sidebar-plugin.mdx - name: SidebarPlugin - data: - level: 3 - link: /mosaic/configure/plugins/sidebar-plugin - childNodes: [] - - id: /mosaic/configure/plugins/site-map-plugin - fullPath: /mosaic/configure/plugins/site-map-plugin.mdx - name: SiteMapPlugin - data: - level: 3 - link: /mosaic/configure/plugins/site-map-plugin - childNodes: [] - - id: /mosaic/configure/plugins/tag-plugin - fullPath: /mosaic/configure/plugins/tag-plugin.mdx - name: $TagPlugin - data: - level: 3 - link: /mosaic/configure/plugins/tag-plugin - childNodes: [] - - id: /mosaic/configure/plugins/toc-plugin - fullPath: /mosaic/configure/plugins/toc-plugin.mdx - name: TableOfContentsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/toc-plugin - childNodes: [] ---- -# {meta.title} - -You can customize the look and feel of your Mosaic site by creating cusotm CSS files. Here is a step-by-step guide to help you create your own CSS theme. - -## Create a CSS folder - -To get started, create a folder named "css" in the "src" folder of your Mosaic project. - -``` -src/ -└── css/ -``` - -## Create your theme - -Inside the "css" folder, create a folder named "global". This is where you will add your custom styles. - -``` -src/ -└── css/ - ├── global/ - ├── index.css -``` - -Create an "index.css" file inside the "css" folder. This file will import your custom styles. - -```css -@import './global/'; -``` - -Inside your global folder, create a separate CSS file for each part of your site that you want to customize. For instance, if you want to change the text styling, create a "text.css" file inside the "global" folder. Here is an example of how your "text.css" file could look like: - -```css -h1 { - /* Set custom font size and weight */ - font-size: /* insert value */ ; - font-weight: /* insert value */ ; -} - -h2 { - font-size: /* insert value */ ; - font-weight: /* insert value */ ; -} - -h3 { - font-size: /* insert value */ ; - font-weight: /* insert value */ ; -} - -h4 { - font-size: /* insert value */ ; - font-weight: /* insert value */ ; -} - -h5 { - font-size: /* insert value */ ; - font-weight: /* insert value */ ; -} - -h6 { - font-size: /* insert value */ ; - font-weight: /* insert value */ ; -} - -p { - font-size: /* insert value */ ; - line-height: /* insert value */ ; -} -``` - -You can add as many CSS files as you need, depending on how much you want to customize your site. - -Create an "index.css" file inside the "global" folder. This file will import your custom styles, in this example we are importing our "text.css" file. - -```css -@import './text.css'; -``` - -Your "css" folder should now look like this: - -``` -src/ -└── css/ - ├── global/ - │ ├── text.css - │ ├── index.css - ├── index.css -``` - -## Import your custom CSS into your site - -To apply your custom styles to your Mosaic site, open your "\_app.tsx" file and add the following line to the bottom of your imports: - -```javascript -import '../css/index.css'; -``` - -Congratulations! You have successfully applied your custom CSS styles to your site. This example demonstrated how to create text styles, but you can use the same approach to customize other aspects of your site as well. diff --git a/packages/site/snapshots/latest/mosaic/configure/theme/index b/packages/site/snapshots/latest/mosaic/configure/theme/index deleted file mode 120000 index 34f13104b..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/theme/index +++ /dev/null @@ -1 +0,0 @@ -index.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/configure/theme/index.mdx b/packages/site/snapshots/latest/mosaic/configure/theme/index.mdx deleted file mode 100644 index 6b89ea03b..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/theme/index.mdx +++ /dev/null @@ -1,377 +0,0 @@ ---- -title: Theming Your Site -layout: DetailTechnical -sidebar: - priority: 4 -lastModified: 1699883563217 -fullPath: /mosaic/configure/theme/index.mdx -route: /mosaic/configure/theme/index -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Configure - path: /mosaic/configure/index - id: /mosaic/configure/index.mdx - - label: Theming Your Site - path: /mosaic/configure/theme/index - id: /mosaic/configure/theme/index.mdx -readingTime: - text: 1 min read - minutes: 0.42 - time: 25200 - words: 84 -tableOfContents: - - level: 2 - id: customize-the-css - text: Customize the CSS - - level: 2 - id: import-custom-components - text: Import Custom Components -navigation: - prev: - title: Snapshot AWS/S3 mode - route: /mosaic/configure/modes/snapshot-s3 - next: - title: Custom CSS - route: /mosaic/configure/theme/custom-css -sidebarData: - - id: /mosaic/configure/index - fullPath: /mosaic/configure/index.mdx - name: Configure - priority: 4 - data: - level: 2 - link: /mosaic/configure/index - childNodes: [] - - id: /mosaic/configure/modes/index - fullPath: /mosaic/configure/modes/index.mdx - name: Modes of operation - priority: 4 - data: - level: 3 - link: /mosaic/configure/modes/index - childNodes: - - id: /mosaic/configure/modes/active - fullPath: /mosaic/configure/modes/active.mdx - name: Active mode - data: - level: 3 - link: /mosaic/configure/modes/active - childNodes: [] - - id: /mosaic/configure/modes/snapshot-file - fullPath: /mosaic/configure/modes/snapshot-file.mdx - name: Snapshot file mode - data: - level: 3 - link: /mosaic/configure/modes/snapshot-file - childNodes: [] - - id: /mosaic/configure/modes/snapshot-s3 - fullPath: /mosaic/configure/modes/snapshot-s3.mdx - name: Snapshot AWS/S3 mode - data: - level: 3 - link: /mosaic/configure/modes/snapshot-s3 - childNodes: [] - - id: /mosaic/configure/theme/index - fullPath: /mosaic/configure/theme/index.mdx - name: Theming Your Site - priority: 4 - data: - level: 3 - link: /mosaic/configure/theme/index - childNodes: - - id: /mosaic/configure/theme/custom-css - fullPath: /mosaic/configure/theme/custom-css.mdx - name: Custom CSS - priority: 3 - data: - level: 3 - link: /mosaic/configure/theme/custom-css - childNodes: [] - - id: /mosaic/configure/theme/custom-components - fullPath: /mosaic/configure/theme/custom-components.mdx - name: Custom Components - priority: 2 - data: - level: 3 - link: /mosaic/configure/theme/custom-components - childNodes: [] - - id: /mosaic/configure/admin/index - fullPath: /mosaic/configure/admin/index.mdx - name: Admin - priority: 3 - data: - level: 3 - link: /mosaic/configure/admin/index - childNodes: [] - - id: /mosaic/configure/sources/index - fullPath: /mosaic/configure/sources/index.mdx - name: Sources - priority: 3 - data: - level: 3 - link: /mosaic/configure/sources/index - childNodes: - - id: /mosaic/configure/sources/schedules - fullPath: /mosaic/configure/sources/schedules.mdx - name: Schedules - priority: 4 - data: - level: 3 - link: /mosaic/configure/sources/schedules - childNodes: [] - - id: /mosaic/configure/sources/local-folder-source - fullPath: /mosaic/configure/sources/local-folder-source.mdx - name: Local Folder Source - priority: 3 - data: - level: 3 - link: /mosaic/configure/sources/local-folder-source - childNodes: [] - - id: /mosaic/configure/sources/git-repo-source - fullPath: /mosaic/configure/sources/git-repo-source.mdx - name: Git Repo Source - priority: 2 - data: - level: 3 - link: /mosaic/configure/sources/git-repo-source - childNodes: [] - - id: /mosaic/configure/sources/http-source - fullPath: /mosaic/configure/sources/http-source.mdx - name: HTTP Source - priority: 1 - data: - level: 3 - link: /mosaic/configure/sources/http-source - childNodes: [] - - id: /mosaic/configure/layouts/index - fullPath: /mosaic/configure/layouts/index.mdx - name: Layouts - priority: 2 - data: - level: 3 - link: /mosaic/configure/layouts/index - childNodes: - - id: /mosaic/configure/layouts/detail-highlight - fullPath: /mosaic/configure/layouts/detail-highlight.mdx - name: Detail Highlight - data: - level: 3 - link: /mosaic/configure/layouts/detail-highlight - childNodes: [] - - id: /mosaic/configure/layouts/detail-overview - fullPath: /mosaic/configure/layouts/detail-overview.mdx - name: Detail Overview - data: - level: 3 - link: /mosaic/configure/layouts/detail-overview - childNodes: [] - - id: /mosaic/configure/layouts/detail-technical - fullPath: /mosaic/configure/layouts/detail-technical.mdx - name: Detail Technical - data: - level: 3 - link: /mosaic/configure/layouts/detail-technical - childNodes: [] - - id: /mosaic/configure/layouts/landing - fullPath: /mosaic/configure/layouts/landing.mdx - name: Landing Layout - data: - level: 3 - link: /mosaic/configure/layouts/landing - childNodes: [] - - id: /mosaic/configure/layouts/product-discover - fullPath: /mosaic/configure/layouts/product-discover.mdx - name: Product Discover Layout - data: - level: 3 - link: /mosaic/configure/layouts/product-discover - childNodes: [] - - id: /mosaic/configure/layouts/product-preview - fullPath: /mosaic/configure/layouts/product-preview.mdx - name: Product Preview Layout - data: - level: 3 - link: /mosaic/configure/layouts/product-preview - childNodes: [] - - id: /mosaic/configure/plugins/index - fullPath: /mosaic/configure/plugins/index.mdx - name: Plugins - priority: 1 - data: - level: 3 - link: /mosaic/configure/plugins/index - childNodes: - - id: /mosaic/configure/plugins/lifecycle/index - fullPath: /mosaic/configure/plugins/lifecycle/index.mdx - name: Lifecycle Events - priority: 1 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/index - childNodes: - - id: /mosaic/configure/plugins/lifecycle/after-source - fullPath: /mosaic/configure/plugins/lifecycle/after-source.mdx - name: $afterSource - priority: 5 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/after-source - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/before-send - fullPath: /mosaic/configure/plugins/lifecycle/before-send.mdx - name: $beforeSend - priority: 4 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/before-send - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/after-update - fullPath: /mosaic/configure/plugins/lifecycle/after-update.mdx - name: afterUpdate - priority: 3 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/after-update - childNodes: [] - - id: /mosaic/configure/plugins/lifecycle/should-clear-cache - fullPath: /mosaic/configure/plugins/lifecycle/should-clear-cache.mdx - name: shouldClearCache - priority: 2 - data: - level: 4 - link: /mosaic/configure/plugins/lifecycle/should-clear-cache - childNodes: [] - - id: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources - fullPath: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources.mdx - name: shouldUpdateNamespaceSources - priority: 1 - data: - level: 4 - link: >- - /mosaic/configure/plugins/lifecycle/should-update-namespace-sources - childNodes: [] - - id: /mosaic/configure/plugins/alias-plugin - fullPath: /mosaic/configure/plugins/alias-plugin.mdx - name: $AliasPlugin - data: - level: 3 - link: /mosaic/configure/plugins/alias-plugin - childNodes: [] - - id: /mosaic/configure/plugins/breadcrumbs-plugin - fullPath: /mosaic/configure/plugins/breadcrumbs-plugin.mdx - name: BreadcrumbsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/breadcrumbs-plugin - childNodes: [] - - id: /mosaic/configure/plugins/broken-links-plugin - fullPath: /mosaic/configure/plugins/broken-links-plugin.mdx - name: BrokenLinksPlugin - data: - level: 3 - link: /mosaic/configure/plugins/broken-links-plugin - childNodes: [] - - id: /mosaic/configure/plugins/codemod-plugin - fullPath: /mosaic/configure/plugins/codemod-plugin.mdx - name: $CodeModPlugin - data: - level: 3 - link: /mosaic/configure/plugins/codemod-plugin - childNodes: [] - - id: /mosaic/configure/plugins/lazy-page-plugin - fullPath: /mosaic/configure/plugins/lazy-page-plugin.mdx - name: LazyPagePlugin - data: - level: 3 - link: /mosaic/configure/plugins/lazy-page-plugin - childNodes: [] - - id: /mosaic/configure/plugins/pages-wthout-extensions-plugin - fullPath: /mosaic/configure/plugins/pages-wthout-extensions-plugin.mdx - name: PagesWithoutFileExtPlugin - data: - level: 3 - link: /mosaic/configure/plugins/pages-wthout-extensions-plugin - childNodes: [] - - id: /mosaic/configure/plugins/public-assets-plugin - fullPath: /mosaic/configure/plugins/public-assets-plugin.mdx - name: PublicAssetsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/public-assets-plugin - childNodes: [] - - id: /mosaic/configure/plugins/reading-time-plugin - fullPath: /mosaic/configure/plugins/reading-time-plugin.mdx - name: ReadingTimePlugin - data: - level: 3 - link: /mosaic/configure/plugins/reading-time-plugin - childNodes: [] - - id: /mosaic/configure/plugins/ref-plugin - fullPath: /mosaic/configure/plugins/ref-plugin.mdx - name: $RefPlugin - data: - level: 3 - link: /mosaic/configure/plugins/ref-plugin - childNodes: [] - - id: /mosaic/configure/plugins/search-index-plugin - fullPath: /mosaic/configure/plugins/search-index-plugin.mdx - name: SearchIndexPlugin - data: - level: 3 - link: /mosaic/configure/plugins/search-index-plugin - childNodes: [] - - id: /mosaic/configure/plugins/shared-config-plugin - fullPath: /mosaic/configure/plugins/shared-config-plugin.mdx - name: SharedConfigPlugin - data: - level: 3 - link: /mosaic/configure/plugins/shared-config-plugin - childNodes: [] - - id: /mosaic/configure/plugins/sidebar-plugin - fullPath: /mosaic/configure/plugins/sidebar-plugin.mdx - name: SidebarPlugin - data: - level: 3 - link: /mosaic/configure/plugins/sidebar-plugin - childNodes: [] - - id: /mosaic/configure/plugins/site-map-plugin - fullPath: /mosaic/configure/plugins/site-map-plugin.mdx - name: SiteMapPlugin - data: - level: 3 - link: /mosaic/configure/plugins/site-map-plugin - childNodes: [] - - id: /mosaic/configure/plugins/tag-plugin - fullPath: /mosaic/configure/plugins/tag-plugin.mdx - name: $TagPlugin - data: - level: 3 - link: /mosaic/configure/plugins/tag-plugin - childNodes: [] - - id: /mosaic/configure/plugins/toc-plugin - fullPath: /mosaic/configure/plugins/toc-plugin.mdx - name: TableOfContentsPlugin - data: - level: 3 - link: /mosaic/configure/plugins/toc-plugin - childNodes: [] ---- -# {meta.title} - -Create a unique look and feel for your Mosaic site by customizing the CSS theme and integrating your own UI components. - -## Customize the CSS - -Adapt various design elements of your Mosaic site to create a cohesive visual theme. Refer to our guide to learn more about crafting a custom CSS theme: - -* [CSS Theme Guide](./custom-css) - -## Import Custom Components - -Incorporate your own UI components, to tailor the look and functionality of your content. This tutorial will walk you through the process of adding custom components to your site: - -* [Adding Custom Components Tutorial](./custom-components) diff --git a/packages/site/snapshots/latest/mosaic/configure/theme/shared-config.json b/packages/site/snapshots/latest/mosaic/configure/theme/shared-config.json deleted file mode 120000 index da3ba444a..000000000 --- a/packages/site/snapshots/latest/mosaic/configure/theme/shared-config.json +++ /dev/null @@ -1 +0,0 @@ -../../shared-config.json \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/example/aliases b/packages/site/snapshots/latest/mosaic/example/aliases deleted file mode 120000 index 10bfd7409..000000000 --- a/packages/site/snapshots/latest/mosaic/example/aliases +++ /dev/null @@ -1 +0,0 @@ -../author/aliases.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/fragments/content-fragment b/packages/site/snapshots/latest/mosaic/fragments/content-fragment deleted file mode 120000 index 5dec5e4d4..000000000 --- a/packages/site/snapshots/latest/mosaic/fragments/content-fragment +++ /dev/null @@ -1 +0,0 @@ -content-fragment.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/fragments/content-fragment.mdx b/packages/site/snapshots/latest/mosaic/fragments/content-fragment.mdx deleted file mode 100644 index a33140792..000000000 --- a/packages/site/snapshots/latest/mosaic/fragments/content-fragment.mdx +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: Content Fragment -sidebar: - exclude: true -lastModified: 1699883563218 -fullPath: /mosaic/fragments/content-fragment.mdx -route: /mosaic/fragments/content-fragment -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Fragments - path: /mosaic/fragments/index - id: /mosaic/fragments/index.mdx - - label: Content Fragment - path: /mosaic/fragments/content-fragment - id: /mosaic/fragments/content-fragment.mdx -readingTime: - text: 1 min read - minutes: 0.065 - time: 3900 - words: 13 -tableOfContents: [] -sidebarData: - - id: /mosaic/fragments/index - fullPath: /mosaic/fragments/index.mdx - name: Fragments - data: - level: 2 - link: /mosaic/fragments/index - childNodes: [] ---- -#### Fragment Title - -This is an example fragment of markdown content, being pulled from `../fragments/content-fragment.mdx`. diff --git a/packages/site/snapshots/latest/mosaic/fragments/index b/packages/site/snapshots/latest/mosaic/fragments/index deleted file mode 120000 index 34f13104b..000000000 --- a/packages/site/snapshots/latest/mosaic/fragments/index +++ /dev/null @@ -1 +0,0 @@ -index.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/fragments/index.mdx b/packages/site/snapshots/latest/mosaic/fragments/index.mdx deleted file mode 100644 index 82d9554a1..000000000 --- a/packages/site/snapshots/latest/mosaic/fragments/index.mdx +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Fragments -layout: DetailTechnical -lastModified: 1699883563218 -fullPath: /mosaic/fragments/index.mdx -route: /mosaic/fragments/index -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Fragments - path: /mosaic/fragments/index - id: /mosaic/fragments/index.mdx -readingTime: - text: 1 min read - minutes: 0.075 - time: 4500 - words: 15 -tableOfContents: [] -sidebarData: - - id: /mosaic/fragments/index - fullPath: /mosaic/fragments/index.mdx - name: Fragments - data: - level: 2 - link: /mosaic/fragments/index - childNodes: [] ---- -# {meta.title} - -This folder contains example fragments that are referenced and rendered in the Fragments docs page. diff --git a/packages/site/snapshots/latest/mosaic/fragments/shared-config.json b/packages/site/snapshots/latest/mosaic/fragments/shared-config.json deleted file mode 120000 index 11f2745e8..000000000 --- a/packages/site/snapshots/latest/mosaic/fragments/shared-config.json +++ /dev/null @@ -1 +0,0 @@ -../shared-config.json \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/fragments/sidebar.json b/packages/site/snapshots/latest/mosaic/fragments/sidebar.json deleted file mode 100644 index 82ae05a95..000000000 --- a/packages/site/snapshots/latest/mosaic/fragments/sidebar.json +++ /dev/null @@ -1 +0,0 @@ -{"pages":[{"id":"/mosaic/fragments/index","fullPath":"/mosaic/fragments/index.mdx","name":"Fragments","data":{"level":2,"link":"/mosaic/fragments/index"},"childNodes":[]}]} \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/fragments/tile-a b/packages/site/snapshots/latest/mosaic/fragments/tile-a deleted file mode 120000 index 7ba498d07..000000000 --- a/packages/site/snapshots/latest/mosaic/fragments/tile-a +++ /dev/null @@ -1 +0,0 @@ -tile-a.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/fragments/tile-a.mdx b/packages/site/snapshots/latest/mosaic/fragments/tile-a.mdx deleted file mode 100644 index 9508782c0..000000000 --- a/packages/site/snapshots/latest/mosaic/fragments/tile-a.mdx +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Tile A -sidebar: - exclude: true -lastModified: 1699883563218 -fullPath: /mosaic/fragments/tile-a.mdx -route: /mosaic/fragments/tile-a -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Fragments - path: /mosaic/fragments/index - id: /mosaic/fragments/index.mdx - - label: Tile A - path: /mosaic/fragments/tile-a - id: /mosaic/fragments/tile-a.mdx -readingTime: - text: 0 min read - minutes: 0 - time: 0 - words: 0 -tableOfContents: [] -sidebarData: - - id: /mosaic/fragments/index - fullPath: /mosaic/fragments/index.mdx - name: Fragments - data: - level: 2 - link: /mosaic/fragments/index - childNodes: [] ---- - diff --git a/packages/site/snapshots/latest/mosaic/fragments/tile-b b/packages/site/snapshots/latest/mosaic/fragments/tile-b deleted file mode 120000 index abc0a5baf..000000000 --- a/packages/site/snapshots/latest/mosaic/fragments/tile-b +++ /dev/null @@ -1 +0,0 @@ -tile-b.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/fragments/tile-b.mdx b/packages/site/snapshots/latest/mosaic/fragments/tile-b.mdx deleted file mode 100644 index 60ba99280..000000000 --- a/packages/site/snapshots/latest/mosaic/fragments/tile-b.mdx +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Tile B -sidebar: - exclude: true -lastModified: 1699883563218 -fullPath: /mosaic/fragments/tile-b.mdx -route: /mosaic/fragments/tile-b -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Fragments - path: /mosaic/fragments/index - id: /mosaic/fragments/index.mdx - - label: Tile B - path: /mosaic/fragments/tile-b - id: /mosaic/fragments/tile-b.mdx -readingTime: - text: 0 min read - minutes: 0 - time: 0 - words: 0 -tableOfContents: [] -sidebarData: - - id: /mosaic/fragments/index - fullPath: /mosaic/fragments/index.mdx - name: Fragments - data: - level: 2 - link: /mosaic/fragments/index - childNodes: [] ---- - diff --git a/packages/site/snapshots/latest/mosaic/getting-started/create-a-site b/packages/site/snapshots/latest/mosaic/getting-started/create-a-site deleted file mode 120000 index 625120be1..000000000 --- a/packages/site/snapshots/latest/mosaic/getting-started/create-a-site +++ /dev/null @@ -1 +0,0 @@ -create-a-site.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/getting-started/create-a-site.mdx b/packages/site/snapshots/latest/mosaic/getting-started/create-a-site.mdx deleted file mode 100644 index 026dc247a..000000000 --- a/packages/site/snapshots/latest/mosaic/getting-started/create-a-site.mdx +++ /dev/null @@ -1,145 +0,0 @@ ---- -title: Create a Site -layout: DetailTechnical -sidebar: - priority: 8 -lastModified: 1699883563218 -fullPath: /mosaic/getting-started/create-a-site.mdx -route: /mosaic/getting-started/create-a-site -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Getting Started - path: /mosaic/getting-started/index - id: /mosaic/getting-started/index.mdx - - label: Create a Site - path: /mosaic/getting-started/create-a-site - id: /mosaic/getting-started/create-a-site.mdx -readingTime: - text: 2 min read - minutes: 1.31 - time: 78600 - words: 262 -tableOfContents: - - level: 2 - id: prerequisites - text: Prerequisites - - level: 2 - id: step-1-generate-a-mosaic-site - text: 'Step 1: Generate a Mosaic site' - - level: 2 - id: step-2-serve-the-site - text: 'Step 2: Serve the site' - - level: 3 - id: set-up-git-credentials - text: Set up Git credentials - - level: 3 - id: serve-command - text: Serve command - - level: 2 - id: next-steps - text: 'Next Steps:' -navigation: - next: - title: Publish a site to AWS - route: /mosaic/getting-started/publish-site-to-aws -sidebarData: - - id: /mosaic/getting-started/index - fullPath: /mosaic/getting-started/index.mdx - name: Getting Started - priority: 10 - data: - level: 2 - link: /mosaic/getting-started/index - childNodes: [] - - id: /mosaic/getting-started/create-a-site - fullPath: /mosaic/getting-started/create-a-site.mdx - name: Create a Site - priority: 8 - data: - level: 2 - link: /mosaic/getting-started/create-a-site - childNodes: [] - - id: /mosaic/getting-started/publish-site-to-aws - fullPath: /mosaic/getting-started/publish-site-to-aws.mdx - name: Publish a site to AWS - data: - level: 2 - link: /mosaic/getting-started/publish-site-to-aws - childNodes: [] ---- -# {meta.title} - -In this guide you will learn how to generate and serve a Mosaic site. - -## Prerequisites - -To begin setting up a Mosaic site, you need to have the following software installed: - -1. Yarn v1 -2. Node.js v18 or higher - -## Step 1: Generate a Mosaic site - -Run the following command in your project directory to generate a new Mosaic site: - -```bash -npx @jpmorganchase/mosaic-create-site create -o my-sample-site -``` - -This command creates a new Mosaic site in the my-sample-site directory. - -Next, navigate to the site directory: - -```bash -cd my-sample-site -``` - -## Step 2: Serve the site - -The example site you have generated comes preconfigured with two [sources](../configure/sources/index): a remote repository and a local docs folder. Sources are used by Mosaic to pull content from disparate locations and merge them into a single virtual filesystem that can be used by a Mosaic site. - -### Set up Git credentials - -If you want the site to read from remote repositories, you need to set up an environment variable to store your Git credentials. Follow these steps: - -1. Open a terminal or command prompt. - -2. Replace `` and `` in the following commands with your actual Git username and personal access token. - -On Unix: - -```bash -export MOSAIC_DOCS_CLONE_CREDENTIALS=":" -``` - -On Windows: - -```bash -set MOSAIC_DOCS_CLONE_CREDENTIALS=":" -``` - -This sets the MOSAIC\_DOCS\_CLONE\_CREDENTIALS environment variable with your Git credentials. - -### Serve command - -Now you can serve your Mosaic site by running the following command: - -```bash -yarn serve -``` - -Access your Mosaic site from a browser using the following URLs: - -* To browse the content from your local source: http://localhost:3000/local -* To browse the content from the Mosaic Git repo source: http://localhost:3000/mosaic - -That's it! Your Mosaic site is now up and running. - -## Next Steps: - -1. [Deploy your Mosaic site to AWS or Vercel for production use.](../publish/index) -2. [Create more pages to expand your site's content.](../author/index) -3. [Configure your own sources in the mosaic.config.mjs file to pull content from different locations.](../configure/sources/index) -4. [Theme your site](../configure/theme/index) diff --git a/packages/site/snapshots/latest/mosaic/getting-started/index b/packages/site/snapshots/latest/mosaic/getting-started/index deleted file mode 120000 index 34f13104b..000000000 --- a/packages/site/snapshots/latest/mosaic/getting-started/index +++ /dev/null @@ -1 +0,0 @@ -index.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/getting-started/index.mdx b/packages/site/snapshots/latest/mosaic/getting-started/index.mdx deleted file mode 100644 index 26800986d..000000000 --- a/packages/site/snapshots/latest/mosaic/getting-started/index.mdx +++ /dev/null @@ -1,59 +0,0 @@ ---- -title: Getting Started -layout: DetailTechnical -sidebar: - priority: 10 -lastModified: 1699883563218 -fullPath: /mosaic/getting-started/index.mdx -route: /mosaic/getting-started/index -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Getting Started - path: /mosaic/getting-started/index - id: /mosaic/getting-started/index.mdx -readingTime: - text: 1 min read - minutes: 0.08 - time: 4800 - words: 16 -tableOfContents: [] -navigation: - next: - title: Create a Site - route: /mosaic/getting-started/create-a-site -sidebarData: - - id: /mosaic/getting-started/index - fullPath: /mosaic/getting-started/index.mdx - name: Getting Started - priority: 10 - data: - level: 2 - link: /mosaic/getting-started/index - childNodes: [] - - id: /mosaic/getting-started/create-a-site - fullPath: /mosaic/getting-started/create-a-site.mdx - name: Create a Site - priority: 8 - data: - level: 2 - link: /mosaic/getting-started/create-a-site - childNodes: [] - - id: /mosaic/getting-started/publish-site-to-aws - fullPath: /mosaic/getting-started/publish-site-to-aws.mdx - name: Publish a site to AWS - data: - level: 2 - link: /mosaic/getting-started/publish-site-to-aws - childNodes: [] ---- -# Getting Started with Mosaic - -Follow our step-by-step guides to quickly create and deploy your first Mosaic site. - - - - - - diff --git a/packages/site/snapshots/latest/mosaic/getting-started/publish-site-to-aws b/packages/site/snapshots/latest/mosaic/getting-started/publish-site-to-aws deleted file mode 120000 index 014235281..000000000 --- a/packages/site/snapshots/latest/mosaic/getting-started/publish-site-to-aws +++ /dev/null @@ -1 +0,0 @@ -publish-site-to-aws.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/getting-started/publish-site-to-aws.mdx b/packages/site/snapshots/latest/mosaic/getting-started/publish-site-to-aws.mdx deleted file mode 100644 index 5133e3db4..000000000 --- a/packages/site/snapshots/latest/mosaic/getting-started/publish-site-to-aws.mdx +++ /dev/null @@ -1,163 +0,0 @@ ---- -title: Publish a site to AWS -layout: DetailTechnical -lastModified: 1699883563218 -fullPath: /mosaic/getting-started/publish-site-to-aws.mdx -route: /mosaic/getting-started/publish-site-to-aws -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Getting Started - path: /mosaic/getting-started/index - id: /mosaic/getting-started/index.mdx - - label: Publish a site to AWS - path: /mosaic/getting-started/publish-site-to-aws - id: /mosaic/getting-started/publish-site-to-aws.mdx -readingTime: - text: 2 min read - minutes: 1.195 - time: 71700 - words: 239 -tableOfContents: - - level: 2 - id: step-1-generate-a-mosaic-site - text: 'Step 1: Generate a Mosaic site' - - level: 2 - id: step-2-create-a-github-repository - text: 'Step 2: Create a Github repository' - - level: 2 - id: step-3-generate-a-snapshot-of-content - text: 'Step 3: Generate a snapshot of content' - - level: 2 - id: step-4-configure-environment-for-s3 - text: 'Step 4: Configure environment for S3' - - level: 2 - id: step-5-setup-aws - text: 'Step 5: Setup AWS' - - level: 2 - id: step-7-configure-your-aws-app - text: 'Step 7: Configure your AWS app' - - level: 2 - id: step-8-upload-your-snapshot - text: 'Step 8: Upload your snapshot' -navigation: - prev: - title: Create a Site - route: /mosaic/getting-started/create-a-site -sidebarData: - - id: /mosaic/getting-started/index - fullPath: /mosaic/getting-started/index.mdx - name: Getting Started - priority: 10 - data: - level: 2 - link: /mosaic/getting-started/index - childNodes: [] - - id: /mosaic/getting-started/create-a-site - fullPath: /mosaic/getting-started/create-a-site.mdx - name: Create a Site - priority: 8 - data: - level: 2 - link: /mosaic/getting-started/create-a-site - childNodes: [] - - id: /mosaic/getting-started/publish-site-to-aws - fullPath: /mosaic/getting-started/publish-site-to-aws.mdx - name: Publish a site to AWS - data: - level: 2 - link: /mosaic/getting-started/publish-site-to-aws - childNodes: [] ---- -# {meta.title} - -Publish a site to AWS using S3 snapshots. - -## Step 1: Generate a Mosaic site - -If you have already created your Mosaic site, skip ahead to step 2. - -``` -> npx @jpmorganchase/mosaic-create-site -o my-sample-site -> cd my-sample-site -``` - -## Step 2: Create a Github repository - -``` -> git init -> git remote add origin git@github.com:username/my-sample-site.git -> git add . -> git commit -m "initial commit" -> git push origin main -``` - -## Step 3: Generate a snapshot of content - -Consider a snapshot as a directory of static content previously pulled from your content sources, which does not update itself. - -``` -> yarn gen:snapshot -``` - -## Step 4: Configure environment for S3 - -``` -> export MOSAIC_MODE="snapshot-s3" -> export MOSAIC_S3_BUCKET="" -> export MOSAIC_S3_REGION="" -> export MOSAIC_S3_ACCESS_KEY_ID=""" -> export MOSAIC_S3_SECRET_ACCESS_KEY="" -> yarn mosaic upload -S ./snapshots/latest -``` - -## Step 5: Setup AWS - -Switch to the [AWS Amplify](https://aws.amazon.com/amplify/hosting/) console and deploy your app as a SSR application by following the [AWS docs](https://docs.amplify.aws/guides/hosting/nextjs/q/platform/js/). - -Setup an S3 bucket as per the [AWS S3 docs](https://docs.aws.amazon.com/AmazonS3/latest/userguide/GetStartedWithS3.html). - -## Step 7: Configure your AWS app - -Add the environment vars to the hosted app via your console - -``` -MOSAIC_MODE="snapshot-s3" -MOSAIC_S3_BUCKET="" -MOSAIC_S3_REGION="" -MOSAIC_S3_ACCESS_KEY_ID=""" -MOSAIC_S3_SECRET_ACCESS_KEY="" -``` - -Add the following build settings - -``` -version: 1 -frontend: - phases: - preBuild: - commands: - - yarn install - - env | grep -e MOSAIC >> .env.production - build: - commands: - - yarn run build - artifacts: - baseDirectory: .next - files: - - '**/*' - cache: - paths: - - node_modules/**/* -``` - -Ensure the Node is set to 16 - -## Step 8: Upload your snapshot - -Upload your snapshot to S3 storage. - -``` -> yarn mosaic upload -S ./snapshots/latest -``` diff --git a/packages/site/snapshots/latest/mosaic/getting-started/shared-config.json b/packages/site/snapshots/latest/mosaic/getting-started/shared-config.json deleted file mode 120000 index 11f2745e8..000000000 --- a/packages/site/snapshots/latest/mosaic/getting-started/shared-config.json +++ /dev/null @@ -1 +0,0 @@ -../shared-config.json \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/getting-started/sidebar.json b/packages/site/snapshots/latest/mosaic/getting-started/sidebar.json deleted file mode 100644 index 0f886f8b5..000000000 --- a/packages/site/snapshots/latest/mosaic/getting-started/sidebar.json +++ /dev/null @@ -1 +0,0 @@ -{"pages":[{"id":"/mosaic/getting-started/index","fullPath":"/mosaic/getting-started/index.mdx","name":"Getting Started","priority":10,"data":{"level":2,"link":"/mosaic/getting-started/index"},"childNodes":[]},{"id":"/mosaic/getting-started/create-a-site","fullPath":"/mosaic/getting-started/create-a-site.mdx","name":"Create a Site","priority":8,"data":{"level":2,"link":"/mosaic/getting-started/create-a-site"},"childNodes":[]},{"id":"/mosaic/getting-started/publish-site-to-aws","fullPath":"/mosaic/getting-started/publish-site-to-aws.mdx","name":"Publish a site to AWS","data":{"level":2,"link":"/mosaic/getting-started/publish-site-to-aws"},"childNodes":[]}]} \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/index b/packages/site/snapshots/latest/mosaic/index deleted file mode 120000 index 34f13104b..000000000 --- a/packages/site/snapshots/latest/mosaic/index +++ /dev/null @@ -1 +0,0 @@ -index.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/index.mdx b/packages/site/snapshots/latest/mosaic/index.mdx deleted file mode 100644 index 4f407fad8..000000000 --- a/packages/site/snapshots/latest/mosaic/index.mdx +++ /dev/null @@ -1,65 +0,0 @@ ---- -title: Mosaic -layout: Landing -sharedConfig: - header: - homeLink: /mosaic/index - title: Mosaic (BETA) - logo: /img/favicon.png - searchNamespace: mosaic - menu: - - title: Getting Started - link: /mosaic/getting-started/index - - title: Configure - link: /mosaic/configure/index - - title: Author - link: /mosaic/author/index - - title: Publish - link: /mosaic/publish/index - footer: - description: Coming soon - title: Mosaic BETA - href: /mosaic -lastModified: 1699868456168 -fullPath: /mosaic/index.mdx -route: /mosaic/index -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx -readingTime: - text: 1 min read - minutes: 0.2 - time: 12000 - words: 40 -tableOfContents: [] ---- - - -True to its name, Mosaic brings together several concepts—including content, design and technical infrastructure—to deliver a unified website experience that is truly greater than the sum of its individual parts. - -With Mosaic, you can: - - - - Don't move your content where it does not belong. Compose content from remote data sources which - are pulled at runtime by our content aggregator. - - - - Visualize your content with your own theme, layouts and components or use the Mosaic Design - language. - - - - Extend the existing code and add your own content source types through our simple plugin - architecture. - - - - Publish your content through Server Side Rendering (SSR) or generate a snapshot of your content - and serve it as a Statically Generated Site (SGS). - - - -Creating a website has never been so easy! diff --git a/packages/site/snapshots/latest/mosaic/publish/index b/packages/site/snapshots/latest/mosaic/publish/index deleted file mode 120000 index 34f13104b..000000000 --- a/packages/site/snapshots/latest/mosaic/publish/index +++ /dev/null @@ -1 +0,0 @@ -index.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/publish/index.mdx b/packages/site/snapshots/latest/mosaic/publish/index.mdx deleted file mode 100644 index c3b9efe8e..000000000 --- a/packages/site/snapshots/latest/mosaic/publish/index.mdx +++ /dev/null @@ -1,96 +0,0 @@ ---- -title: Publish -layout: DetailTechnical -sidebar: - priority: 2 -lastModified: 1699883563219 -fullPath: /mosaic/publish/index.mdx -route: /mosaic/publish/index -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Publish - path: /mosaic/publish/index - id: /mosaic/publish/index.mdx -readingTime: - text: 1 min read - minutes: 0.755 - time: 45300 - words: 151 -tableOfContents: - - level: 2 - id: create-your-first-site - text: Create your first site -navigation: - next: - title: Publish a site to AWS - route: /mosaic/publish/publish-site-to-aws -sidebarData: - - id: /mosaic/publish/index - fullPath: /mosaic/publish/index.mdx - name: Publish - priority: 2 - data: - level: 2 - link: /mosaic/publish/index - childNodes: [] - - id: /mosaic/publish/publish-site-to-aws - fullPath: /mosaic/publish/publish-site-to-aws.mdx - name: Publish a site to AWS - data: - level: 2 - link: /mosaic/publish/publish-site-to-aws - childNodes: [] - - id: /mosaic/publish/publish-site-to-vercel - fullPath: /mosaic/publish/publish-site-to-vercel.mdx - name: Publish a site to Vercel - data: - level: 2 - link: /mosaic/publish/publish-site-to-vercel - childNodes: [] ---- -# {meta.title} - -To create your first Mosaic site, we have created a command line generator that scaffolds a *standard* site. - -A *standard* site offers - -* an out the box, working site, which showcases local and remote content sources -* a minimal set of files that can be configured with your own components, themes, layouts, sources and plugins -* an update path that enables you to update Mosaic, independently of your own configuration - -## Create your first site - -Install the Mosaic create site script. - -``` -> yarn global add @jpmorganchase/mosaic-create-site -``` - -Create a directory for your site and run the `mosaic-create-site` script. - -``` -> mkdir mosaic-sample-site -> cd mosaic-sample-site -> mosaic-create-site -f . -``` - -Define the environment variable, which enables us to access your remote repo. - -``` -> export MOSAIC_DOCS_CLONE_CREDENTIALS="" -``` - -The `MOSAIC_DOCS_CLONE_CREDENTIALS` environment variable is composed of your git username and your PAT token. -Follow these [docs](https://docs.github.com/en/enterprise-server@3.4/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token) to see how to create your own PAT token. - -Your site is ready to run. - -``` -> yarn serve -``` - -In your browser load `http://localhost:3000` - -Congratulations, you have created your first Mosaic site. diff --git a/packages/site/snapshots/latest/mosaic/publish/publish-site-to-aws b/packages/site/snapshots/latest/mosaic/publish/publish-site-to-aws deleted file mode 120000 index 014235281..000000000 --- a/packages/site/snapshots/latest/mosaic/publish/publish-site-to-aws +++ /dev/null @@ -1 +0,0 @@ -publish-site-to-aws.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/publish/publish-site-to-aws.mdx b/packages/site/snapshots/latest/mosaic/publish/publish-site-to-aws.mdx deleted file mode 100644 index e8678778c..000000000 --- a/packages/site/snapshots/latest/mosaic/publish/publish-site-to-aws.mdx +++ /dev/null @@ -1,91 +0,0 @@ ---- -title: Publish a site to AWS -layout: DetailTechnical -lastModified: 1699883563219 -fullPath: /mosaic/publish/publish-site-to-aws.mdx -route: /mosaic/publish/publish-site-to-aws -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Publish - path: /mosaic/publish/index - id: /mosaic/publish/index.mdx - - label: Publish a site to AWS - path: /mosaic/publish/publish-site-to-aws - id: /mosaic/publish/publish-site-to-aws.mdx -readingTime: - text: 1 min read - minutes: 0.52 - time: 31200 - words: 104 -tableOfContents: [] -navigation: - next: - title: Publish a site to Vercel - route: /mosaic/publish/publish-site-to-vercel -sidebarData: - - id: /mosaic/publish/index - fullPath: /mosaic/publish/index.mdx - name: Publish - priority: 2 - data: - level: 2 - link: /mosaic/publish/index - childNodes: [] - - id: /mosaic/publish/publish-site-to-aws - fullPath: /mosaic/publish/publish-site-to-aws.mdx - name: Publish a site to AWS - data: - level: 2 - link: /mosaic/publish/publish-site-to-aws - childNodes: [] - - id: /mosaic/publish/publish-site-to-vercel - fullPath: /mosaic/publish/publish-site-to-vercel.mdx - name: Publish a site to Vercel - data: - level: 2 - link: /mosaic/publish/publish-site-to-vercel - childNodes: [] ---- -# {meta.title} - -A Mosaic site is a [Next.Js](https://nextjs.org/) app. - -To publish a Next.Js App to AWS, deploy your app as a SSR application by following the [AWS docs](https://docs.amplify.aws/guides/hosting/nextjs/q/platform/js/). - -Once the basic app has been configured, add the Mosaic specifics. - -Add the environment vars to the hosted app via the Amplify console - -``` -MOSAIC_MODE="snapshot-s3" -MOSAIC_S3_BUCKET="" -MOSAIC_S3_REGION="" -MOSAIC_S3_ACCESS_KEY_ID=""" -MOSAIC_S3_SECRET_ACCESS_KEY="" -``` - -Add the following build settings - -``` -version: 1 -frontend: - phases: - preBuild: - commands: - - yarn install - - env | grep -e MOSAIC >> .env.production - build: - commands: - - yarn run build - artifacts: - baseDirectory: .next - files: - - '**/*' - cache: - paths: - - node_modules/**/* -``` - -Ensure the Node is set to 16 diff --git a/packages/site/snapshots/latest/mosaic/publish/publish-site-to-vercel b/packages/site/snapshots/latest/mosaic/publish/publish-site-to-vercel deleted file mode 120000 index 11694f655..000000000 --- a/packages/site/snapshots/latest/mosaic/publish/publish-site-to-vercel +++ /dev/null @@ -1 +0,0 @@ -publish-site-to-vercel.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/publish/publish-site-to-vercel.mdx b/packages/site/snapshots/latest/mosaic/publish/publish-site-to-vercel.mdx deleted file mode 100644 index ede4472cc..000000000 --- a/packages/site/snapshots/latest/mosaic/publish/publish-site-to-vercel.mdx +++ /dev/null @@ -1,112 +0,0 @@ ---- -title: Publish a site to Vercel -layout: DetailTechnical -lastModified: 1699883563219 -fullPath: /mosaic/publish/publish-site-to-vercel.mdx -route: /mosaic/publish/publish-site-to-vercel -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Publish - path: /mosaic/publish/index - id: /mosaic/publish/index.mdx - - label: Publish a site to Vercel - path: /mosaic/publish/publish-site-to-vercel - id: /mosaic/publish/publish-site-to-vercel.mdx -readingTime: - text: 1 min read - minutes: 0.99 - time: 59400 - words: 198 -tableOfContents: - - level: 2 - id: deployment - text: Deployment - - level: 3 - id: 1-update-config-file - text: 1. Update Config File - - level: 3 - id: 2-set-environment-variables - text: 2. Set Environment Variables - - level: 3 - id: 3-run-build-and-deploy - text: 3. Run Build and Deploy - - level: 2 - id: output-file-tracing - text: Output File Tracing -navigation: - prev: - title: Publish a site to AWS - route: /mosaic/publish/publish-site-to-aws -sidebarData: - - id: /mosaic/publish/index - fullPath: /mosaic/publish/index.mdx - name: Publish - priority: 2 - data: - level: 2 - link: /mosaic/publish/index - childNodes: [] - - id: /mosaic/publish/publish-site-to-aws - fullPath: /mosaic/publish/publish-site-to-aws.mdx - name: Publish a site to AWS - data: - level: 2 - link: /mosaic/publish/publish-site-to-aws - childNodes: [] - - id: /mosaic/publish/publish-site-to-vercel - fullPath: /mosaic/publish/publish-site-to-vercel.mdx - name: Publish a site to Vercel - data: - level: 2 - link: /mosaic/publish/publish-site-to-vercel - childNodes: [] ---- -# {meta.title} - -A Mosaic site is a [Next.Js](https://nextjs.org/) app. - -To publish a Next.Js App to Vercel, refer to the [Vercel docs](https://nextjs.org/learn/basics/deploying-nextjs-app/deploy). - -## Deployment - -As the [vercel platform](https://vercel.com/) hosts static content you will need to deploy a mosaic snapshot. There is no option to run mosaic in [active mode](../configure/modes/active). - -### 1. Update Config File - -Add the following to the mosaic config file used by your site: - -``` - deployment: { mode: 'snapshot-file', platform: 'vercel' } -``` - -### 2. Set Environment Variables - -Set 2 [environment variables](https://vercel.com/docs/concepts/deployments/environments#environment-variables) in the vercel dashboard. - -| Variable Name | Value | -| ------------------- | ----------------- | -| MOSAIC\_MODE | snapshot-file | -| MOSAIC\_SNAPSHOT\_DIR | snapshots/latest. | - -### 3. Run Build and Deploy - -The `build` command used by vercel must run `yarn build` followed by `yarn deploy` - -The `deploy` command is needed to workaround an [output file tracing](#output-file-tracing) problem. - -Example: - -``` -yarn build && yarn deploy -``` - -## Output File Tracing - -[Output File Tracing](https://nextjs.org/docs/advanced-features/output-file-tracing) is a feature of Next.js that uses static analysis -to determine what files are needed to deploy a production version of an application. - -Due to the architecture of mosaic, snapshot files can be ignored by this process and therefore excluded from the build artifacts deployed by vercel. - -If you are deploying your site to the [vercel platform](https://vercel.com/) then the mosaic site has a `deploy` command that will update the nextjs output trace to include the snapshot files. diff --git a/packages/site/snapshots/latest/mosaic/publish/shared-config.json b/packages/site/snapshots/latest/mosaic/publish/shared-config.json deleted file mode 120000 index 11f2745e8..000000000 --- a/packages/site/snapshots/latest/mosaic/publish/shared-config.json +++ /dev/null @@ -1 +0,0 @@ -../shared-config.json \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/publish/sidebar.json b/packages/site/snapshots/latest/mosaic/publish/sidebar.json deleted file mode 100644 index 3c4dd5878..000000000 --- a/packages/site/snapshots/latest/mosaic/publish/sidebar.json +++ /dev/null @@ -1 +0,0 @@ -{"pages":[{"id":"/mosaic/publish/index","fullPath":"/mosaic/publish/index.mdx","name":"Publish","priority":2,"data":{"level":2,"link":"/mosaic/publish/index"},"childNodes":[]},{"id":"/mosaic/publish/publish-site-to-aws","fullPath":"/mosaic/publish/publish-site-to-aws.mdx","name":"Publish a site to AWS","data":{"level":2,"link":"/mosaic/publish/publish-site-to-aws"},"childNodes":[]},{"id":"/mosaic/publish/publish-site-to-vercel","fullPath":"/mosaic/publish/publish-site-to-vercel.mdx","name":"Publish a site to Vercel","data":{"level":2,"link":"/mosaic/publish/publish-site-to-vercel"},"childNodes":[]}]} \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/shared-config.json b/packages/site/snapshots/latest/mosaic/shared-config.json deleted file mode 100644 index 0cb2e712a..000000000 --- a/packages/site/snapshots/latest/mosaic/shared-config.json +++ /dev/null @@ -1 +0,0 @@ -{"config":{"header":{"homeLink":"/mosaic/index","title":"Mosaic (BETA)","logo":"/img/favicon.png","searchNamespace":"mosaic","menu":[{"title":"Getting Started","link":"/mosaic/getting-started/index"},{"title":"Configure","link":"/mosaic/configure/index"},{"title":"Author","link":"/mosaic/author/index"},{"title":"Publish","link":"/mosaic/publish/index"}]},"footer":{"description":"Coming soon","title":"Mosaic BETA","href":"/mosaic"}}} \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/test/aliases/index b/packages/site/snapshots/latest/mosaic/test/aliases/index deleted file mode 120000 index 34f13104b..000000000 --- a/packages/site/snapshots/latest/mosaic/test/aliases/index +++ /dev/null @@ -1 +0,0 @@ -index.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/test/aliases/index.mdx b/packages/site/snapshots/latest/mosaic/test/aliases/index.mdx deleted file mode 100644 index cee7213d7..000000000 --- a/packages/site/snapshots/latest/mosaic/test/aliases/index.mdx +++ /dev/null @@ -1,142 +0,0 @@ ---- -title: Aliases Test -layout: FullWidth -lastModified: 1699883563219 -fullPath: /mosaic/test/aliases/index.mdx -route: /mosaic/test/aliases/index -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Test - path: /mosaic/test/index - id: /mosaic/test/index.mdx - - label: Aliases Test - path: /mosaic/test/aliases/index - id: /mosaic/test/aliases/index.mdx -readingTime: - text: 1 min read - minutes: 0.035 - time: 2100 - words: 7 -tableOfContents: [] -navigation: - prev: - title: Refs Data - route: /mosaic/test/refs/data - next: - title: Tags Test - route: /mosaic/test/tags/index -sidebarData: - - id: /mosaic/test/index - fullPath: /mosaic/test/index.mdx - name: Test - priority: 3 - data: - level: 2 - link: /mosaic/test/index - childNodes: [] - - id: /mosaic/test/layouts/index - fullPath: /mosaic/test/layouts/index.mdx - name: Layouts - priority: 3 - data: - level: 3 - link: /mosaic/test/layouts/index - childNodes: - - id: /mosaic/test/layouts/detail-highlight - fullPath: /mosaic/test/layouts/detail-highlight.mdx - name: Detail Highlight Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-highlight - childNodes: [] - - id: /mosaic/test/layouts/detail-overview - fullPath: /mosaic/test/layouts/detail-overview.mdx - name: Detail Overview Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-overview - childNodes: [] - - id: /mosaic/test/layouts/detail-technical - fullPath: /mosaic/test/layouts/detail-technical.mdx - name: Detail Technical Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-technical - childNodes: [] - - id: /mosaic/test/layouts/edit - fullPath: /mosaic/test/layouts/edit.mdx - name: Edit Layout - data: - level: 3 - link: /mosaic/test/layouts/edit - childNodes: [] - - id: /mosaic/test/layouts/full-width - fullPath: /mosaic/test/layouts/full-width.mdx - name: Full Width Layout - data: - level: 3 - link: /mosaic/test/layouts/full-width - childNodes: [] - - id: /mosaic/test/layouts/landing - fullPath: /mosaic/test/layouts/landing.mdx - name: Landing Layout Test Page - data: - level: 3 - link: /mosaic/test/layouts/landing - childNodes: [] - - id: /mosaic/test/layouts/newsletter - fullPath: /mosaic/test/layouts/newsletter.mdx - name: Newsletter Test Page - data: - level: 3 - link: /mosaic/test/layouts/newsletter - childNodes: [] - - id: /mosaic/test/layouts/product-discover - fullPath: /mosaic/test/layouts/product-discover.mdx - name: Product Discover Test Page - data: - level: 3 - link: /mosaic/test/layouts/product-discover - childNodes: [] - - id: /mosaic/test/layouts/product-preview - fullPath: /mosaic/test/layouts/product-preview.mdx - name: Product Preview Test Page - data: - level: 3 - link: /mosaic/test/layouts/product-preview - childNodes: [] - - id: /mosaic/test/refs/index - fullPath: /mosaic/test/refs/index.mdx - name: Refs Test - priority: 3 - data: - level: 3 - link: /mosaic/test/refs/index - childNodes: - - id: /mosaic/test/refs/data - fullPath: /mosaic/test/refs/data.mdx - name: Refs Data - data: - level: 3 - link: /mosaic/test/refs/data - childNodes: [] - - id: /mosaic/test/aliases/index - fullPath: /mosaic/test/aliases/index.mdx - name: Aliases Test - data: - level: 3 - link: /mosaic/test/aliases/index - childNodes: [] - - id: /mosaic/test/tags/index - fullPath: /mosaic/test/tags/index.mdx - name: Tags Test - data: - level: 3 - link: /mosaic/test/tags/index - childNodes: [] ---- -# {meta.title} - -This page is the alias test page. diff --git a/packages/site/snapshots/latest/mosaic/test/aliases/shared-config.json b/packages/site/snapshots/latest/mosaic/test/aliases/shared-config.json deleted file mode 120000 index da3ba444a..000000000 --- a/packages/site/snapshots/latest/mosaic/test/aliases/shared-config.json +++ /dev/null @@ -1 +0,0 @@ -../../shared-config.json \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/test/example b/packages/site/snapshots/latest/mosaic/test/example deleted file mode 120000 index 7e447f1a7..000000000 --- a/packages/site/snapshots/latest/mosaic/test/example +++ /dev/null @@ -1 +0,0 @@ -aliases/index.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/test/index b/packages/site/snapshots/latest/mosaic/test/index deleted file mode 120000 index 34f13104b..000000000 --- a/packages/site/snapshots/latest/mosaic/test/index +++ /dev/null @@ -1 +0,0 @@ -index.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/test/index.mdx b/packages/site/snapshots/latest/mosaic/test/index.mdx deleted file mode 100644 index 18d3a0c52..000000000 --- a/packages/site/snapshots/latest/mosaic/test/index.mdx +++ /dev/null @@ -1,138 +0,0 @@ ---- -title: Test -layout: DetailTechnical -sidebar: - priority: 3 -lastModified: 1699883563219 -fullPath: /mosaic/test/index.mdx -route: /mosaic/test/index -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Test - path: /mosaic/test/index - id: /mosaic/test/index.mdx -readingTime: - text: 1 min read - minutes: 0.02 - time: 1200 - words: 4 -tableOfContents: [] -navigation: - next: - title: Layouts - route: /mosaic/test/layouts/index -sidebarData: - - id: /mosaic/test/index - fullPath: /mosaic/test/index.mdx - name: Test - priority: 3 - data: - level: 2 - link: /mosaic/test/index - childNodes: [] - - id: /mosaic/test/layouts/index - fullPath: /mosaic/test/layouts/index.mdx - name: Layouts - priority: 3 - data: - level: 3 - link: /mosaic/test/layouts/index - childNodes: - - id: /mosaic/test/layouts/detail-highlight - fullPath: /mosaic/test/layouts/detail-highlight.mdx - name: Detail Highlight Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-highlight - childNodes: [] - - id: /mosaic/test/layouts/detail-overview - fullPath: /mosaic/test/layouts/detail-overview.mdx - name: Detail Overview Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-overview - childNodes: [] - - id: /mosaic/test/layouts/detail-technical - fullPath: /mosaic/test/layouts/detail-technical.mdx - name: Detail Technical Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-technical - childNodes: [] - - id: /mosaic/test/layouts/edit - fullPath: /mosaic/test/layouts/edit.mdx - name: Edit Layout - data: - level: 3 - link: /mosaic/test/layouts/edit - childNodes: [] - - id: /mosaic/test/layouts/full-width - fullPath: /mosaic/test/layouts/full-width.mdx - name: Full Width Layout - data: - level: 3 - link: /mosaic/test/layouts/full-width - childNodes: [] - - id: /mosaic/test/layouts/landing - fullPath: /mosaic/test/layouts/landing.mdx - name: Landing Layout Test Page - data: - level: 3 - link: /mosaic/test/layouts/landing - childNodes: [] - - id: /mosaic/test/layouts/newsletter - fullPath: /mosaic/test/layouts/newsletter.mdx - name: Newsletter Test Page - data: - level: 3 - link: /mosaic/test/layouts/newsletter - childNodes: [] - - id: /mosaic/test/layouts/product-discover - fullPath: /mosaic/test/layouts/product-discover.mdx - name: Product Discover Test Page - data: - level: 3 - link: /mosaic/test/layouts/product-discover - childNodes: [] - - id: /mosaic/test/layouts/product-preview - fullPath: /mosaic/test/layouts/product-preview.mdx - name: Product Preview Test Page - data: - level: 3 - link: /mosaic/test/layouts/product-preview - childNodes: [] - - id: /mosaic/test/refs/index - fullPath: /mosaic/test/refs/index.mdx - name: Refs Test - priority: 3 - data: - level: 3 - link: /mosaic/test/refs/index - childNodes: - - id: /mosaic/test/refs/data - fullPath: /mosaic/test/refs/data.mdx - name: Refs Data - data: - level: 3 - link: /mosaic/test/refs/data - childNodes: [] - - id: /mosaic/test/aliases/index - fullPath: /mosaic/test/aliases/index.mdx - name: Aliases Test - data: - level: 3 - link: /mosaic/test/aliases/index - childNodes: [] - - id: /mosaic/test/tags/index - fullPath: /mosaic/test/tags/index.mdx - name: Tags Test - data: - level: 3 - link: /mosaic/test/tags/index - childNodes: [] ---- -# {meta.title} - -Pages for e2e testing. diff --git a/packages/site/snapshots/latest/mosaic/test/layouts/detail-highlight b/packages/site/snapshots/latest/mosaic/test/layouts/detail-highlight deleted file mode 120000 index cd722d86e..000000000 --- a/packages/site/snapshots/latest/mosaic/test/layouts/detail-highlight +++ /dev/null @@ -1 +0,0 @@ -detail-highlight.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/test/layouts/detail-highlight.mdx b/packages/site/snapshots/latest/mosaic/test/layouts/detail-highlight.mdx deleted file mode 100644 index 54949c216..000000000 --- a/packages/site/snapshots/latest/mosaic/test/layouts/detail-highlight.mdx +++ /dev/null @@ -1,204 +0,0 @@ ---- -title: Detail Highlight Test Page -layout: DetailHighlight -frameOverrides: &ref_0 - header: - homeLink: /mosaic/index - title: Mosaic (BETA) - logo: /img/favicon.png - searchNamespace: mosaic - menu: - - title: Docs - link: /mosaic/docs/index - - title: Quick Start - link: /mosaic/quick-start/index - footer: - description: Footer Content - title: Detail Highlight Layout Footer - href: /mosaic -breadcrumbs: - - label: Breadcrumb 1 - path: /mosaic/index.mdx - id: /mosaic/index.mdx - - label: Breadcrumb 2 - path: /mosaic/index.mdx - id: /mosaic/index.mdx - - label: Breadcrumb 3 - path: /mosaic/index.mdx - id: /mosaic/index.mdx -navigation: - prev: - title: Layouts - route: /mosaic/test/layouts/index - next: - title: Detail Overview Test Page - route: /mosaic/test/layouts/detail-overview -lastModified: 1699883563220 -fullPath: /mosaic/test/layouts/detail-highlight.mdx -route: /mosaic/test/layouts/detail-highlight -sharedConfig: *ref_0 -readingTime: - text: 2 min read - minutes: 1.725 - time: 103500 - words: 345 -tableOfContents: - - level: 2 - id: detail-highlight-test-page - text: Detail Highlight Test Page - - level: 2 - id: heading-1 - text: Heading 1 - - level: 2 - id: heading-2 - text: Heading 2 - - level: 3 - id: heading-3 - text: Heading 3 - - level: 2 - id: heading-4 - text: Heading 4 -sidebarData: - - id: /mosaic/test/index - fullPath: /mosaic/test/index.mdx - name: Test - priority: 3 - data: - level: 2 - link: /mosaic/test/index - childNodes: [] - - id: /mosaic/test/layouts/index - fullPath: /mosaic/test/layouts/index.mdx - name: Layouts - priority: 3 - data: - level: 3 - link: /mosaic/test/layouts/index - childNodes: - - id: /mosaic/test/layouts/detail-highlight - fullPath: /mosaic/test/layouts/detail-highlight.mdx - name: Detail Highlight Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-highlight - childNodes: [] - - id: /mosaic/test/layouts/detail-overview - fullPath: /mosaic/test/layouts/detail-overview.mdx - name: Detail Overview Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-overview - childNodes: [] - - id: /mosaic/test/layouts/detail-technical - fullPath: /mosaic/test/layouts/detail-technical.mdx - name: Detail Technical Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-technical - childNodes: [] - - id: /mosaic/test/layouts/edit - fullPath: /mosaic/test/layouts/edit.mdx - name: Edit Layout - data: - level: 3 - link: /mosaic/test/layouts/edit - childNodes: [] - - id: /mosaic/test/layouts/full-width - fullPath: /mosaic/test/layouts/full-width.mdx - name: Full Width Layout - data: - level: 3 - link: /mosaic/test/layouts/full-width - childNodes: [] - - id: /mosaic/test/layouts/landing - fullPath: /mosaic/test/layouts/landing.mdx - name: Landing Layout Test Page - data: - level: 3 - link: /mosaic/test/layouts/landing - childNodes: [] - - id: /mosaic/test/layouts/newsletter - fullPath: /mosaic/test/layouts/newsletter.mdx - name: Newsletter Test Page - data: - level: 3 - link: /mosaic/test/layouts/newsletter - childNodes: [] - - id: /mosaic/test/layouts/product-discover - fullPath: /mosaic/test/layouts/product-discover.mdx - name: Product Discover Test Page - data: - level: 3 - link: /mosaic/test/layouts/product-discover - childNodes: [] - - id: /mosaic/test/layouts/product-preview - fullPath: /mosaic/test/layouts/product-preview.mdx - name: Product Preview Test Page - data: - level: 3 - link: /mosaic/test/layouts/product-preview - childNodes: [] - - id: /mosaic/test/refs/index - fullPath: /mosaic/test/refs/index.mdx - name: Refs Test - priority: 3 - data: - level: 3 - link: /mosaic/test/refs/index - childNodes: - - id: /mosaic/test/refs/data - fullPath: /mosaic/test/refs/data.mdx - name: Refs Data - data: - level: 3 - link: /mosaic/test/refs/data - childNodes: [] - - id: /mosaic/test/aliases/index - fullPath: /mosaic/test/aliases/index.mdx - name: Aliases Test - data: - level: 3 - link: /mosaic/test/aliases/index - childNodes: [] - - id: /mosaic/test/tags/index - fullPath: /mosaic/test/tags/index.mdx - name: Tags Test - data: - level: 3 - link: /mosaic/test/tags/index - childNodes: [] ---- -## {meta.title} - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum - -## Heading 1 - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum - -## Heading 2 - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum - -### Heading 3 - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum - -## Heading 4 - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum diff --git a/packages/site/snapshots/latest/mosaic/test/layouts/detail-overview b/packages/site/snapshots/latest/mosaic/test/layouts/detail-overview deleted file mode 120000 index 62bd5bc1a..000000000 --- a/packages/site/snapshots/latest/mosaic/test/layouts/detail-overview +++ /dev/null @@ -1 +0,0 @@ -detail-overview.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/test/layouts/detail-overview.mdx b/packages/site/snapshots/latest/mosaic/test/layouts/detail-overview.mdx deleted file mode 100644 index 1d888a12e..000000000 --- a/packages/site/snapshots/latest/mosaic/test/layouts/detail-overview.mdx +++ /dev/null @@ -1,204 +0,0 @@ ---- -title: Detail Overview Test Page -layout: DetailOverview -frameOverrides: &ref_0 - header: - homeLink: /mosaic/index - title: Mosaic (BETA) - logo: /img/favicon.png - searchNamespace: mosaic - menu: - - title: Docs - link: /mosaic/docs/index - - title: Quick Start - link: /mosaic/quick-start/index - footer: - description: Footer Content - title: Detail Overview Layout Footer - href: /mosaic -breadcrumbs: - - label: Breadcrumb 1 - path: /mosaic/index.mdx - id: /mosaic/index.mdx - - label: Breadcrumb 2 - path: /mosaic/index.mdx - id: /mosaic/index.mdx - - label: Breadcrumb 3 - path: /mosaic/index.mdx - id: /mosaic/index.mdx -navigation: - prev: - title: Detail Highlight Test Page - route: /mosaic/test/layouts/detail-highlight - next: - title: Detail Technical Test Page - route: /mosaic/test/layouts/detail-technical -lastModified: 1699883563220 -fullPath: /mosaic/test/layouts/detail-overview.mdx -route: /mosaic/test/layouts/detail-overview -sharedConfig: *ref_0 -readingTime: - text: 2 min read - minutes: 1.725 - time: 103500 - words: 345 -tableOfContents: - - level: 2 - id: detail-overview-test-page - text: Detail Overview Test Page - - level: 2 - id: heading-1 - text: Heading 1 - - level: 2 - id: heading-2 - text: Heading 2 - - level: 3 - id: heading-3 - text: Heading 3 - - level: 2 - id: heading-4 - text: Heading 4 -sidebarData: - - id: /mosaic/test/index - fullPath: /mosaic/test/index.mdx - name: Test - priority: 3 - data: - level: 2 - link: /mosaic/test/index - childNodes: [] - - id: /mosaic/test/layouts/index - fullPath: /mosaic/test/layouts/index.mdx - name: Layouts - priority: 3 - data: - level: 3 - link: /mosaic/test/layouts/index - childNodes: - - id: /mosaic/test/layouts/detail-highlight - fullPath: /mosaic/test/layouts/detail-highlight.mdx - name: Detail Highlight Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-highlight - childNodes: [] - - id: /mosaic/test/layouts/detail-overview - fullPath: /mosaic/test/layouts/detail-overview.mdx - name: Detail Overview Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-overview - childNodes: [] - - id: /mosaic/test/layouts/detail-technical - fullPath: /mosaic/test/layouts/detail-technical.mdx - name: Detail Technical Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-technical - childNodes: [] - - id: /mosaic/test/layouts/edit - fullPath: /mosaic/test/layouts/edit.mdx - name: Edit Layout - data: - level: 3 - link: /mosaic/test/layouts/edit - childNodes: [] - - id: /mosaic/test/layouts/full-width - fullPath: /mosaic/test/layouts/full-width.mdx - name: Full Width Layout - data: - level: 3 - link: /mosaic/test/layouts/full-width - childNodes: [] - - id: /mosaic/test/layouts/landing - fullPath: /mosaic/test/layouts/landing.mdx - name: Landing Layout Test Page - data: - level: 3 - link: /mosaic/test/layouts/landing - childNodes: [] - - id: /mosaic/test/layouts/newsletter - fullPath: /mosaic/test/layouts/newsletter.mdx - name: Newsletter Test Page - data: - level: 3 - link: /mosaic/test/layouts/newsletter - childNodes: [] - - id: /mosaic/test/layouts/product-discover - fullPath: /mosaic/test/layouts/product-discover.mdx - name: Product Discover Test Page - data: - level: 3 - link: /mosaic/test/layouts/product-discover - childNodes: [] - - id: /mosaic/test/layouts/product-preview - fullPath: /mosaic/test/layouts/product-preview.mdx - name: Product Preview Test Page - data: - level: 3 - link: /mosaic/test/layouts/product-preview - childNodes: [] - - id: /mosaic/test/refs/index - fullPath: /mosaic/test/refs/index.mdx - name: Refs Test - priority: 3 - data: - level: 3 - link: /mosaic/test/refs/index - childNodes: - - id: /mosaic/test/refs/data - fullPath: /mosaic/test/refs/data.mdx - name: Refs Data - data: - level: 3 - link: /mosaic/test/refs/data - childNodes: [] - - id: /mosaic/test/aliases/index - fullPath: /mosaic/test/aliases/index.mdx - name: Aliases Test - data: - level: 3 - link: /mosaic/test/aliases/index - childNodes: [] - - id: /mosaic/test/tags/index - fullPath: /mosaic/test/tags/index.mdx - name: Tags Test - data: - level: 3 - link: /mosaic/test/tags/index - childNodes: [] ---- -## {meta.title} - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum - -## Heading 1 - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum - -## Heading 2 - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum - -### Heading 3 - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum - -## Heading 4 - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum diff --git a/packages/site/snapshots/latest/mosaic/test/layouts/detail-technical b/packages/site/snapshots/latest/mosaic/test/layouts/detail-technical deleted file mode 120000 index 8bfca1127..000000000 --- a/packages/site/snapshots/latest/mosaic/test/layouts/detail-technical +++ /dev/null @@ -1 +0,0 @@ -detail-technical.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/test/layouts/detail-technical.mdx b/packages/site/snapshots/latest/mosaic/test/layouts/detail-technical.mdx deleted file mode 100644 index 075602550..000000000 --- a/packages/site/snapshots/latest/mosaic/test/layouts/detail-technical.mdx +++ /dev/null @@ -1,204 +0,0 @@ ---- -title: Detail Technical Test Page -layout: DetailTechnical -frameOverrides: &ref_0 - header: - homeLink: /mosaic/index - title: Mosaic (BETA) - logo: /img/favicon.png - searchNamespace: mosaic - menu: - - title: Docs - link: /mosaic/docs/index - - title: Quick Start - link: /mosaic/quick-start/index - footer: - description: Footer Content - title: Detail Technical Layout Footer - href: /mosaic -breadcrumbs: - - label: Breadcrumb 1 - path: /mosaic/index.mdx - id: /mosaic/index.mdx - - label: Breadcrumb 2 - path: /mosaic/index.mdx - id: /mosaic/index.mdx - - label: Breadcrumb 3 - path: /mosaic/index.mdx - id: /mosaic/index.mdx -navigation: - prev: - title: Detail Overview Test Page - route: /mosaic/test/layouts/detail-overview - next: - title: Edit Layout - route: /mosaic/test/layouts/edit -lastModified: 1699883563220 -fullPath: /mosaic/test/layouts/detail-technical.mdx -route: /mosaic/test/layouts/detail-technical -sharedConfig: *ref_0 -readingTime: - text: 2 min read - minutes: 1.725 - time: 103500 - words: 345 -tableOfContents: - - level: 2 - id: detail-technical-test-page - text: Detail Technical Test Page - - level: 2 - id: heading-1 - text: Heading 1 - - level: 2 - id: heading-2 - text: Heading 2 - - level: 3 - id: heading-3 - text: Heading 3 - - level: 2 - id: heading-4 - text: Heading 4 -sidebarData: - - id: /mosaic/test/index - fullPath: /mosaic/test/index.mdx - name: Test - priority: 3 - data: - level: 2 - link: /mosaic/test/index - childNodes: [] - - id: /mosaic/test/layouts/index - fullPath: /mosaic/test/layouts/index.mdx - name: Layouts - priority: 3 - data: - level: 3 - link: /mosaic/test/layouts/index - childNodes: - - id: /mosaic/test/layouts/detail-highlight - fullPath: /mosaic/test/layouts/detail-highlight.mdx - name: Detail Highlight Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-highlight - childNodes: [] - - id: /mosaic/test/layouts/detail-overview - fullPath: /mosaic/test/layouts/detail-overview.mdx - name: Detail Overview Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-overview - childNodes: [] - - id: /mosaic/test/layouts/detail-technical - fullPath: /mosaic/test/layouts/detail-technical.mdx - name: Detail Technical Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-technical - childNodes: [] - - id: /mosaic/test/layouts/edit - fullPath: /mosaic/test/layouts/edit.mdx - name: Edit Layout - data: - level: 3 - link: /mosaic/test/layouts/edit - childNodes: [] - - id: /mosaic/test/layouts/full-width - fullPath: /mosaic/test/layouts/full-width.mdx - name: Full Width Layout - data: - level: 3 - link: /mosaic/test/layouts/full-width - childNodes: [] - - id: /mosaic/test/layouts/landing - fullPath: /mosaic/test/layouts/landing.mdx - name: Landing Layout Test Page - data: - level: 3 - link: /mosaic/test/layouts/landing - childNodes: [] - - id: /mosaic/test/layouts/newsletter - fullPath: /mosaic/test/layouts/newsletter.mdx - name: Newsletter Test Page - data: - level: 3 - link: /mosaic/test/layouts/newsletter - childNodes: [] - - id: /mosaic/test/layouts/product-discover - fullPath: /mosaic/test/layouts/product-discover.mdx - name: Product Discover Test Page - data: - level: 3 - link: /mosaic/test/layouts/product-discover - childNodes: [] - - id: /mosaic/test/layouts/product-preview - fullPath: /mosaic/test/layouts/product-preview.mdx - name: Product Preview Test Page - data: - level: 3 - link: /mosaic/test/layouts/product-preview - childNodes: [] - - id: /mosaic/test/refs/index - fullPath: /mosaic/test/refs/index.mdx - name: Refs Test - priority: 3 - data: - level: 3 - link: /mosaic/test/refs/index - childNodes: - - id: /mosaic/test/refs/data - fullPath: /mosaic/test/refs/data.mdx - name: Refs Data - data: - level: 3 - link: /mosaic/test/refs/data - childNodes: [] - - id: /mosaic/test/aliases/index - fullPath: /mosaic/test/aliases/index.mdx - name: Aliases Test - data: - level: 3 - link: /mosaic/test/aliases/index - childNodes: [] - - id: /mosaic/test/tags/index - fullPath: /mosaic/test/tags/index.mdx - name: Tags Test - data: - level: 3 - link: /mosaic/test/tags/index - childNodes: [] ---- -## {meta.title} - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum - -## Heading 1 - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum - -## Heading 2 - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum - -### Heading 3 - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum - -## Heading 4 - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum diff --git a/packages/site/snapshots/latest/mosaic/test/layouts/edit b/packages/site/snapshots/latest/mosaic/test/layouts/edit deleted file mode 120000 index 5175875d1..000000000 --- a/packages/site/snapshots/latest/mosaic/test/layouts/edit +++ /dev/null @@ -1 +0,0 @@ -edit.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/test/layouts/edit.mdx b/packages/site/snapshots/latest/mosaic/test/layouts/edit.mdx deleted file mode 100644 index 854a3791a..000000000 --- a/packages/site/snapshots/latest/mosaic/test/layouts/edit.mdx +++ /dev/null @@ -1,164 +0,0 @@ ---- -title: Edit Layout -layout: Edit -frameOverrides: &ref_0 - header: - homeLink: /mosaic/index - title: Mosaic (BETA) - logo: /img/favicon.png - searchNamespace: mosaic - menu: - - title: Docs - link: /mosaic/docs/index - - title: Quick Start - link: /mosaic/quick-start/index - footer: - description: Footer Content - title: Edit Layout Footer - href: /mosaic -breadcrumbs: - - label: Breadcrumb 1 - path: /mosaic/index.mdx - id: /mosaic/index.mdx - - label: Breadcrumb 2 - path: /mosaic/index.mdx - id: /mosaic/index.mdx - - label: Breadcrumb 3 - path: /mosaic/index.mdx - id: /mosaic/index.mdx -navigation: - prev: - title: Detail Technical Test Page - route: /mosaic/test/layouts/detail-technical - next: - title: Full Width Layout - route: /mosaic/test/layouts/full-width -lastModified: 1699883563220 -fullPath: /mosaic/test/layouts/edit.mdx -route: /mosaic/test/layouts/edit -sharedConfig: *ref_0 -readingTime: - text: 1 min read - minutes: 0.345 - time: 20700 - words: 69 -tableOfContents: - - level: 2 - id: edit-layout - text: Edit Layout -sidebarData: - - id: /mosaic/test/index - fullPath: /mosaic/test/index.mdx - name: Test - priority: 3 - data: - level: 2 - link: /mosaic/test/index - childNodes: [] - - id: /mosaic/test/layouts/index - fullPath: /mosaic/test/layouts/index.mdx - name: Layouts - priority: 3 - data: - level: 3 - link: /mosaic/test/layouts/index - childNodes: - - id: /mosaic/test/layouts/detail-highlight - fullPath: /mosaic/test/layouts/detail-highlight.mdx - name: Detail Highlight Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-highlight - childNodes: [] - - id: /mosaic/test/layouts/detail-overview - fullPath: /mosaic/test/layouts/detail-overview.mdx - name: Detail Overview Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-overview - childNodes: [] - - id: /mosaic/test/layouts/detail-technical - fullPath: /mosaic/test/layouts/detail-technical.mdx - name: Detail Technical Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-technical - childNodes: [] - - id: /mosaic/test/layouts/edit - fullPath: /mosaic/test/layouts/edit.mdx - name: Edit Layout - data: - level: 3 - link: /mosaic/test/layouts/edit - childNodes: [] - - id: /mosaic/test/layouts/full-width - fullPath: /mosaic/test/layouts/full-width.mdx - name: Full Width Layout - data: - level: 3 - link: /mosaic/test/layouts/full-width - childNodes: [] - - id: /mosaic/test/layouts/landing - fullPath: /mosaic/test/layouts/landing.mdx - name: Landing Layout Test Page - data: - level: 3 - link: /mosaic/test/layouts/landing - childNodes: [] - - id: /mosaic/test/layouts/newsletter - fullPath: /mosaic/test/layouts/newsletter.mdx - name: Newsletter Test Page - data: - level: 3 - link: /mosaic/test/layouts/newsletter - childNodes: [] - - id: /mosaic/test/layouts/product-discover - fullPath: /mosaic/test/layouts/product-discover.mdx - name: Product Discover Test Page - data: - level: 3 - link: /mosaic/test/layouts/product-discover - childNodes: [] - - id: /mosaic/test/layouts/product-preview - fullPath: /mosaic/test/layouts/product-preview.mdx - name: Product Preview Test Page - data: - level: 3 - link: /mosaic/test/layouts/product-preview - childNodes: [] - - id: /mosaic/test/refs/index - fullPath: /mosaic/test/refs/index.mdx - name: Refs Test - priority: 3 - data: - level: 3 - link: /mosaic/test/refs/index - childNodes: - - id: /mosaic/test/refs/data - fullPath: /mosaic/test/refs/data.mdx - name: Refs Data - data: - level: 3 - link: /mosaic/test/refs/data - childNodes: [] - - id: /mosaic/test/aliases/index - fullPath: /mosaic/test/aliases/index.mdx - name: Aliases Test - data: - level: 3 - link: /mosaic/test/aliases/index - childNodes: [] - - id: /mosaic/test/tags/index - fullPath: /mosaic/test/tags/index.mdx - name: Tags Test - data: - level: 3 - link: /mosaic/test/tags/index - childNodes: [] ---- -## {meta.title} - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum diff --git a/packages/site/snapshots/latest/mosaic/test/layouts/full-width b/packages/site/snapshots/latest/mosaic/test/layouts/full-width deleted file mode 120000 index 868f9aa51..000000000 --- a/packages/site/snapshots/latest/mosaic/test/layouts/full-width +++ /dev/null @@ -1 +0,0 @@ -full-width.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/test/layouts/full-width.mdx b/packages/site/snapshots/latest/mosaic/test/layouts/full-width.mdx deleted file mode 100644 index 8731891e4..000000000 --- a/packages/site/snapshots/latest/mosaic/test/layouts/full-width.mdx +++ /dev/null @@ -1,164 +0,0 @@ ---- -title: Full Width Layout -layout: FullWidth -frameOverrides: &ref_0 - header: - homeLink: /mosaic/index - title: Mosaic (BETA) - logo: /img/favicon.png - searchNamespace: mosaic - menu: - - title: Docs - link: /mosaic/docs/index - - title: Quick Start - link: /mosaic/quick-start/index - footer: - description: Footer Content - title: Full Width Layout Footer - href: /mosaic -breadcrumbs: - - label: Breadcrumb 1 - path: /mosaic/index.mdx - id: /mosaic/index.mdx - - label: Breadcrumb 2 - path: /mosaic/index.mdx - id: /mosaic/index.mdx - - label: Breadcrumb 3 - path: /mosaic/index.mdx - id: /mosaic/index.mdx -navigation: - prev: - title: Edit Layout - route: /mosaic/test/layouts/edit - next: - title: Landing Layout Test Page - route: /mosaic/test/layouts/landing -lastModified: 1699883563220 -fullPath: /mosaic/test/layouts/full-width.mdx -route: /mosaic/test/layouts/full-width -sharedConfig: *ref_0 -readingTime: - text: 1 min read - minutes: 0.345 - time: 20700 - words: 69 -tableOfContents: - - level: 2 - id: full-width-layout - text: Full Width Layout -sidebarData: - - id: /mosaic/test/index - fullPath: /mosaic/test/index.mdx - name: Test - priority: 3 - data: - level: 2 - link: /mosaic/test/index - childNodes: [] - - id: /mosaic/test/layouts/index - fullPath: /mosaic/test/layouts/index.mdx - name: Layouts - priority: 3 - data: - level: 3 - link: /mosaic/test/layouts/index - childNodes: - - id: /mosaic/test/layouts/detail-highlight - fullPath: /mosaic/test/layouts/detail-highlight.mdx - name: Detail Highlight Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-highlight - childNodes: [] - - id: /mosaic/test/layouts/detail-overview - fullPath: /mosaic/test/layouts/detail-overview.mdx - name: Detail Overview Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-overview - childNodes: [] - - id: /mosaic/test/layouts/detail-technical - fullPath: /mosaic/test/layouts/detail-technical.mdx - name: Detail Technical Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-technical - childNodes: [] - - id: /mosaic/test/layouts/edit - fullPath: /mosaic/test/layouts/edit.mdx - name: Edit Layout - data: - level: 3 - link: /mosaic/test/layouts/edit - childNodes: [] - - id: /mosaic/test/layouts/full-width - fullPath: /mosaic/test/layouts/full-width.mdx - name: Full Width Layout - data: - level: 3 - link: /mosaic/test/layouts/full-width - childNodes: [] - - id: /mosaic/test/layouts/landing - fullPath: /mosaic/test/layouts/landing.mdx - name: Landing Layout Test Page - data: - level: 3 - link: /mosaic/test/layouts/landing - childNodes: [] - - id: /mosaic/test/layouts/newsletter - fullPath: /mosaic/test/layouts/newsletter.mdx - name: Newsletter Test Page - data: - level: 3 - link: /mosaic/test/layouts/newsletter - childNodes: [] - - id: /mosaic/test/layouts/product-discover - fullPath: /mosaic/test/layouts/product-discover.mdx - name: Product Discover Test Page - data: - level: 3 - link: /mosaic/test/layouts/product-discover - childNodes: [] - - id: /mosaic/test/layouts/product-preview - fullPath: /mosaic/test/layouts/product-preview.mdx - name: Product Preview Test Page - data: - level: 3 - link: /mosaic/test/layouts/product-preview - childNodes: [] - - id: /mosaic/test/refs/index - fullPath: /mosaic/test/refs/index.mdx - name: Refs Test - priority: 3 - data: - level: 3 - link: /mosaic/test/refs/index - childNodes: - - id: /mosaic/test/refs/data - fullPath: /mosaic/test/refs/data.mdx - name: Refs Data - data: - level: 3 - link: /mosaic/test/refs/data - childNodes: [] - - id: /mosaic/test/aliases/index - fullPath: /mosaic/test/aliases/index.mdx - name: Aliases Test - data: - level: 3 - link: /mosaic/test/aliases/index - childNodes: [] - - id: /mosaic/test/tags/index - fullPath: /mosaic/test/tags/index.mdx - name: Tags Test - data: - level: 3 - link: /mosaic/test/tags/index - childNodes: [] ---- -## {meta.title} - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum diff --git a/packages/site/snapshots/latest/mosaic/test/layouts/index b/packages/site/snapshots/latest/mosaic/test/layouts/index deleted file mode 120000 index 34f13104b..000000000 --- a/packages/site/snapshots/latest/mosaic/test/layouts/index +++ /dev/null @@ -1 +0,0 @@ -index.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/test/layouts/index.mdx b/packages/site/snapshots/latest/mosaic/test/layouts/index.mdx deleted file mode 100644 index cc7eefab5..000000000 --- a/packages/site/snapshots/latest/mosaic/test/layouts/index.mdx +++ /dev/null @@ -1,141 +0,0 @@ ---- -title: Layouts -layout: DetailTechnical -sidebar: - priority: 3 -lastModified: 1699883563220 -fullPath: /mosaic/test/layouts/index.mdx -route: /mosaic/test/layouts/index -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Test - path: /mosaic/test/index - id: /mosaic/test/index.mdx - - label: Layouts - path: /mosaic/test/layouts/index - id: /mosaic/test/layouts/index.mdx -readingTime: - text: 1 min read - minutes: 0.03 - time: 1800 - words: 6 -tableOfContents: [] -navigation: - next: - title: Detail Highlight Test Page - route: /mosaic/test/layouts/detail-highlight -sidebarData: - - id: /mosaic/test/index - fullPath: /mosaic/test/index.mdx - name: Test - priority: 3 - data: - level: 2 - link: /mosaic/test/index - childNodes: [] - - id: /mosaic/test/layouts/index - fullPath: /mosaic/test/layouts/index.mdx - name: Layouts - priority: 3 - data: - level: 3 - link: /mosaic/test/layouts/index - childNodes: - - id: /mosaic/test/layouts/detail-highlight - fullPath: /mosaic/test/layouts/detail-highlight.mdx - name: Detail Highlight Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-highlight - childNodes: [] - - id: /mosaic/test/layouts/detail-overview - fullPath: /mosaic/test/layouts/detail-overview.mdx - name: Detail Overview Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-overview - childNodes: [] - - id: /mosaic/test/layouts/detail-technical - fullPath: /mosaic/test/layouts/detail-technical.mdx - name: Detail Technical Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-technical - childNodes: [] - - id: /mosaic/test/layouts/edit - fullPath: /mosaic/test/layouts/edit.mdx - name: Edit Layout - data: - level: 3 - link: /mosaic/test/layouts/edit - childNodes: [] - - id: /mosaic/test/layouts/full-width - fullPath: /mosaic/test/layouts/full-width.mdx - name: Full Width Layout - data: - level: 3 - link: /mosaic/test/layouts/full-width - childNodes: [] - - id: /mosaic/test/layouts/landing - fullPath: /mosaic/test/layouts/landing.mdx - name: Landing Layout Test Page - data: - level: 3 - link: /mosaic/test/layouts/landing - childNodes: [] - - id: /mosaic/test/layouts/newsletter - fullPath: /mosaic/test/layouts/newsletter.mdx - name: Newsletter Test Page - data: - level: 3 - link: /mosaic/test/layouts/newsletter - childNodes: [] - - id: /mosaic/test/layouts/product-discover - fullPath: /mosaic/test/layouts/product-discover.mdx - name: Product Discover Test Page - data: - level: 3 - link: /mosaic/test/layouts/product-discover - childNodes: [] - - id: /mosaic/test/layouts/product-preview - fullPath: /mosaic/test/layouts/product-preview.mdx - name: Product Preview Test Page - data: - level: 3 - link: /mosaic/test/layouts/product-preview - childNodes: [] - - id: /mosaic/test/refs/index - fullPath: /mosaic/test/refs/index.mdx - name: Refs Test - priority: 3 - data: - level: 3 - link: /mosaic/test/refs/index - childNodes: - - id: /mosaic/test/refs/data - fullPath: /mosaic/test/refs/data.mdx - name: Refs Data - data: - level: 3 - link: /mosaic/test/refs/data - childNodes: [] - - id: /mosaic/test/aliases/index - fullPath: /mosaic/test/aliases/index.mdx - name: Aliases Test - data: - level: 3 - link: /mosaic/test/aliases/index - childNodes: [] - - id: /mosaic/test/tags/index - fullPath: /mosaic/test/tags/index.mdx - name: Tags Test - data: - level: 3 - link: /mosaic/test/tags/index - childNodes: [] ---- -# {meta.title} - -Pages for e2e testing of layouts. diff --git a/packages/site/snapshots/latest/mosaic/test/layouts/landing b/packages/site/snapshots/latest/mosaic/test/layouts/landing deleted file mode 120000 index 534837507..000000000 --- a/packages/site/snapshots/latest/mosaic/test/layouts/landing +++ /dev/null @@ -1 +0,0 @@ -landing.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/test/layouts/landing.mdx b/packages/site/snapshots/latest/mosaic/test/layouts/landing.mdx deleted file mode 100644 index cb583d9e0..000000000 --- a/packages/site/snapshots/latest/mosaic/test/layouts/landing.mdx +++ /dev/null @@ -1,187 +0,0 @@ ---- -title: Landing Layout Test Page -layout: Landing -frameOverrides: &ref_0 - header: - homeLink: /mosaic/index - title: Mosaic (BETA) - logo: /img/favicon.png - searchNamespace: mosaic - menu: - - title: Docs - link: /mosaic/docs/index - - title: Quick Start - link: /mosaic/quick-start/index - footer: - description: Footer Content - title: Landing Layout Footer - href: /mosaic -lastModified: 1699883563221 -fullPath: /mosaic/test/layouts/landing.mdx -route: /mosaic/test/layouts/landing -sharedConfig: *ref_0 -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Test - path: /mosaic/test/index - id: /mosaic/test/index.mdx - - label: Layouts - path: /mosaic/test/layouts/index - id: /mosaic/test/layouts/index.mdx - - label: Landing Layout Test Page - path: /mosaic/test/layouts/landing - id: /mosaic/test/layouts/landing.mdx -readingTime: - text: 2 min read - minutes: 1.705 - time: 102300 - words: 341 -tableOfContents: - - level: 2 - id: landing-layout-test-page - text: Landing Layout Test Page -navigation: - prev: - title: Full Width Layout - route: /mosaic/test/layouts/full-width - next: - title: Newsletter Test Page - route: /mosaic/test/layouts/newsletter -sidebarData: - - id: /mosaic/test/index - fullPath: /mosaic/test/index.mdx - name: Test - priority: 3 - data: - level: 2 - link: /mosaic/test/index - childNodes: [] - - id: /mosaic/test/layouts/index - fullPath: /mosaic/test/layouts/index.mdx - name: Layouts - priority: 3 - data: - level: 3 - link: /mosaic/test/layouts/index - childNodes: - - id: /mosaic/test/layouts/detail-highlight - fullPath: /mosaic/test/layouts/detail-highlight.mdx - name: Detail Highlight Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-highlight - childNodes: [] - - id: /mosaic/test/layouts/detail-overview - fullPath: /mosaic/test/layouts/detail-overview.mdx - name: Detail Overview Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-overview - childNodes: [] - - id: /mosaic/test/layouts/detail-technical - fullPath: /mosaic/test/layouts/detail-technical.mdx - name: Detail Technical Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-technical - childNodes: [] - - id: /mosaic/test/layouts/edit - fullPath: /mosaic/test/layouts/edit.mdx - name: Edit Layout - data: - level: 3 - link: /mosaic/test/layouts/edit - childNodes: [] - - id: /mosaic/test/layouts/full-width - fullPath: /mosaic/test/layouts/full-width.mdx - name: Full Width Layout - data: - level: 3 - link: /mosaic/test/layouts/full-width - childNodes: [] - - id: /mosaic/test/layouts/landing - fullPath: /mosaic/test/layouts/landing.mdx - name: Landing Layout Test Page - data: - level: 3 - link: /mosaic/test/layouts/landing - childNodes: [] - - id: /mosaic/test/layouts/newsletter - fullPath: /mosaic/test/layouts/newsletter.mdx - name: Newsletter Test Page - data: - level: 3 - link: /mosaic/test/layouts/newsletter - childNodes: [] - - id: /mosaic/test/layouts/product-discover - fullPath: /mosaic/test/layouts/product-discover.mdx - name: Product Discover Test Page - data: - level: 3 - link: /mosaic/test/layouts/product-discover - childNodes: [] - - id: /mosaic/test/layouts/product-preview - fullPath: /mosaic/test/layouts/product-preview.mdx - name: Product Preview Test Page - data: - level: 3 - link: /mosaic/test/layouts/product-preview - childNodes: [] - - id: /mosaic/test/refs/index - fullPath: /mosaic/test/refs/index.mdx - name: Refs Test - priority: 3 - data: - level: 3 - link: /mosaic/test/refs/index - childNodes: - - id: /mosaic/test/refs/data - fullPath: /mosaic/test/refs/data.mdx - name: Refs Data - data: - level: 3 - link: /mosaic/test/refs/data - childNodes: [] - - id: /mosaic/test/aliases/index - fullPath: /mosaic/test/aliases/index.mdx - name: Aliases Test - data: - level: 3 - link: /mosaic/test/aliases/index - childNodes: [] - - id: /mosaic/test/tags/index - fullPath: /mosaic/test/tags/index.mdx - name: Tags Test - data: - level: 3 - link: /mosaic/test/tags/index - childNodes: [] ---- -## {meta.title} - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum diff --git a/packages/site/snapshots/latest/mosaic/test/layouts/newsletter b/packages/site/snapshots/latest/mosaic/test/layouts/newsletter deleted file mode 120000 index f099cfe0b..000000000 --- a/packages/site/snapshots/latest/mosaic/test/layouts/newsletter +++ /dev/null @@ -1 +0,0 @@ -newsletter.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/test/layouts/newsletter.mdx b/packages/site/snapshots/latest/mosaic/test/layouts/newsletter.mdx deleted file mode 100644 index 42a0e9ae9..000000000 --- a/packages/site/snapshots/latest/mosaic/test/layouts/newsletter.mdx +++ /dev/null @@ -1,204 +0,0 @@ ---- -title: Newsletter Test Page -layout: Newsletter -frameOverrides: &ref_0 - header: - homeLink: /mosaic/index - title: Mosaic (BETA) - logo: /img/favicon.png - searchNamespace: mosaic - menu: - - title: Docs - link: /mosaic/docs/index - - title: Quick Start - link: /mosaic/quick-start/index - footer: - description: Footer Content - title: Newsletter Layout Footer - href: /mosaic -breadcrumbs: - - label: Breadcrumb 1 - path: /mosaic/index.mdx - id: /mosaic/index.mdx - - label: Breadcrumb 2 - path: /mosaic/index.mdx - id: /mosaic/index.mdx - - label: Breadcrumb 3 - path: /mosaic/index.mdx - id: /mosaic/index.mdx -navigation: - prev: - title: Landing Layout Test Page - route: /mosaic/test/layouts/landing - next: - title: Product Discover Test Page - route: /mosaic/test/layouts/product-discover -lastModified: 1699883563221 -fullPath: /mosaic/test/layouts/newsletter.mdx -route: /mosaic/test/layouts/newsletter -sharedConfig: *ref_0 -readingTime: - text: 2 min read - minutes: 1.725 - time: 103500 - words: 345 -tableOfContents: - - level: 2 - id: newsletter-test-page - text: Newsletter Test Page - - level: 2 - id: heading-1 - text: Heading 1 - - level: 2 - id: heading-2 - text: Heading 2 - - level: 3 - id: heading-3 - text: Heading 3 - - level: 2 - id: heading-4 - text: Heading 4 -sidebarData: - - id: /mosaic/test/index - fullPath: /mosaic/test/index.mdx - name: Test - priority: 3 - data: - level: 2 - link: /mosaic/test/index - childNodes: [] - - id: /mosaic/test/layouts/index - fullPath: /mosaic/test/layouts/index.mdx - name: Layouts - priority: 3 - data: - level: 3 - link: /mosaic/test/layouts/index - childNodes: - - id: /mosaic/test/layouts/detail-highlight - fullPath: /mosaic/test/layouts/detail-highlight.mdx - name: Detail Highlight Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-highlight - childNodes: [] - - id: /mosaic/test/layouts/detail-overview - fullPath: /mosaic/test/layouts/detail-overview.mdx - name: Detail Overview Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-overview - childNodes: [] - - id: /mosaic/test/layouts/detail-technical - fullPath: /mosaic/test/layouts/detail-technical.mdx - name: Detail Technical Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-technical - childNodes: [] - - id: /mosaic/test/layouts/edit - fullPath: /mosaic/test/layouts/edit.mdx - name: Edit Layout - data: - level: 3 - link: /mosaic/test/layouts/edit - childNodes: [] - - id: /mosaic/test/layouts/full-width - fullPath: /mosaic/test/layouts/full-width.mdx - name: Full Width Layout - data: - level: 3 - link: /mosaic/test/layouts/full-width - childNodes: [] - - id: /mosaic/test/layouts/landing - fullPath: /mosaic/test/layouts/landing.mdx - name: Landing Layout Test Page - data: - level: 3 - link: /mosaic/test/layouts/landing - childNodes: [] - - id: /mosaic/test/layouts/newsletter - fullPath: /mosaic/test/layouts/newsletter.mdx - name: Newsletter Test Page - data: - level: 3 - link: /mosaic/test/layouts/newsletter - childNodes: [] - - id: /mosaic/test/layouts/product-discover - fullPath: /mosaic/test/layouts/product-discover.mdx - name: Product Discover Test Page - data: - level: 3 - link: /mosaic/test/layouts/product-discover - childNodes: [] - - id: /mosaic/test/layouts/product-preview - fullPath: /mosaic/test/layouts/product-preview.mdx - name: Product Preview Test Page - data: - level: 3 - link: /mosaic/test/layouts/product-preview - childNodes: [] - - id: /mosaic/test/refs/index - fullPath: /mosaic/test/refs/index.mdx - name: Refs Test - priority: 3 - data: - level: 3 - link: /mosaic/test/refs/index - childNodes: - - id: /mosaic/test/refs/data - fullPath: /mosaic/test/refs/data.mdx - name: Refs Data - data: - level: 3 - link: /mosaic/test/refs/data - childNodes: [] - - id: /mosaic/test/aliases/index - fullPath: /mosaic/test/aliases/index.mdx - name: Aliases Test - data: - level: 3 - link: /mosaic/test/aliases/index - childNodes: [] - - id: /mosaic/test/tags/index - fullPath: /mosaic/test/tags/index.mdx - name: Tags Test - data: - level: 3 - link: /mosaic/test/tags/index - childNodes: [] ---- -## {meta.title} - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum - -## Heading 1 - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum - -## Heading 2 - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum - -### Heading 3 - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum - -## Heading 4 - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum diff --git a/packages/site/snapshots/latest/mosaic/test/layouts/product-discover b/packages/site/snapshots/latest/mosaic/test/layouts/product-discover deleted file mode 120000 index 508e3923d..000000000 --- a/packages/site/snapshots/latest/mosaic/test/layouts/product-discover +++ /dev/null @@ -1 +0,0 @@ -product-discover.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/test/layouts/product-discover.mdx b/packages/site/snapshots/latest/mosaic/test/layouts/product-discover.mdx deleted file mode 100644 index bc48f77ae..000000000 --- a/packages/site/snapshots/latest/mosaic/test/layouts/product-discover.mdx +++ /dev/null @@ -1,204 +0,0 @@ ---- -title: Product Discover Test Page -layout: ProductDiscover -frameOverrides: &ref_0 - header: - homeLink: /mosaic/index - title: Mosaic (BETA) - logo: /img/favicon.png - searchNamespace: mosaic - menu: - - title: Docs - link: /mosaic/docs/index - - title: Quick Start - link: /mosaic/quick-start/index - footer: - description: Footer Content - title: Product Discover Layout Footer - href: /mosaic -breadcrumbs: - - label: Breadcrumb 1 - path: /mosaic/index.mdx - id: /mosaic/index.mdx - - label: Breadcrumb 2 - path: /mosaic/index.mdx - id: /mosaic/index.mdx - - label: Breadcrumb 3 - path: /mosaic/index.mdx - id: /mosaic/index.mdx -navigation: - prev: - title: Newsletter Test Page - route: /mosaic/test/layouts/newsletter - next: - title: Product Preview Test Page - route: /mosaic/test/layouts/product-preview -lastModified: 1699883563221 -fullPath: /mosaic/test/layouts/product-discover.mdx -route: /mosaic/test/layouts/product-discover -sharedConfig: *ref_0 -readingTime: - text: 2 min read - minutes: 1.725 - time: 103500 - words: 345 -tableOfContents: - - level: 2 - id: product-discover-test-page - text: Product Discover Test Page - - level: 2 - id: heading-1 - text: Heading 1 - - level: 2 - id: heading-2 - text: Heading 2 - - level: 3 - id: heading-3 - text: Heading 3 - - level: 2 - id: heading-4 - text: Heading 4 -sidebarData: - - id: /mosaic/test/index - fullPath: /mosaic/test/index.mdx - name: Test - priority: 3 - data: - level: 2 - link: /mosaic/test/index - childNodes: [] - - id: /mosaic/test/layouts/index - fullPath: /mosaic/test/layouts/index.mdx - name: Layouts - priority: 3 - data: - level: 3 - link: /mosaic/test/layouts/index - childNodes: - - id: /mosaic/test/layouts/detail-highlight - fullPath: /mosaic/test/layouts/detail-highlight.mdx - name: Detail Highlight Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-highlight - childNodes: [] - - id: /mosaic/test/layouts/detail-overview - fullPath: /mosaic/test/layouts/detail-overview.mdx - name: Detail Overview Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-overview - childNodes: [] - - id: /mosaic/test/layouts/detail-technical - fullPath: /mosaic/test/layouts/detail-technical.mdx - name: Detail Technical Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-technical - childNodes: [] - - id: /mosaic/test/layouts/edit - fullPath: /mosaic/test/layouts/edit.mdx - name: Edit Layout - data: - level: 3 - link: /mosaic/test/layouts/edit - childNodes: [] - - id: /mosaic/test/layouts/full-width - fullPath: /mosaic/test/layouts/full-width.mdx - name: Full Width Layout - data: - level: 3 - link: /mosaic/test/layouts/full-width - childNodes: [] - - id: /mosaic/test/layouts/landing - fullPath: /mosaic/test/layouts/landing.mdx - name: Landing Layout Test Page - data: - level: 3 - link: /mosaic/test/layouts/landing - childNodes: [] - - id: /mosaic/test/layouts/newsletter - fullPath: /mosaic/test/layouts/newsletter.mdx - name: Newsletter Test Page - data: - level: 3 - link: /mosaic/test/layouts/newsletter - childNodes: [] - - id: /mosaic/test/layouts/product-discover - fullPath: /mosaic/test/layouts/product-discover.mdx - name: Product Discover Test Page - data: - level: 3 - link: /mosaic/test/layouts/product-discover - childNodes: [] - - id: /mosaic/test/layouts/product-preview - fullPath: /mosaic/test/layouts/product-preview.mdx - name: Product Preview Test Page - data: - level: 3 - link: /mosaic/test/layouts/product-preview - childNodes: [] - - id: /mosaic/test/refs/index - fullPath: /mosaic/test/refs/index.mdx - name: Refs Test - priority: 3 - data: - level: 3 - link: /mosaic/test/refs/index - childNodes: - - id: /mosaic/test/refs/data - fullPath: /mosaic/test/refs/data.mdx - name: Refs Data - data: - level: 3 - link: /mosaic/test/refs/data - childNodes: [] - - id: /mosaic/test/aliases/index - fullPath: /mosaic/test/aliases/index.mdx - name: Aliases Test - data: - level: 3 - link: /mosaic/test/aliases/index - childNodes: [] - - id: /mosaic/test/tags/index - fullPath: /mosaic/test/tags/index.mdx - name: Tags Test - data: - level: 3 - link: /mosaic/test/tags/index - childNodes: [] ---- -## {meta.title} - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum - -## Heading 1 - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum - -## Heading 2 - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum - -### Heading 3 - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum - -## Heading 4 - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum diff --git a/packages/site/snapshots/latest/mosaic/test/layouts/product-preview b/packages/site/snapshots/latest/mosaic/test/layouts/product-preview deleted file mode 120000 index 4509da9b3..000000000 --- a/packages/site/snapshots/latest/mosaic/test/layouts/product-preview +++ /dev/null @@ -1 +0,0 @@ -product-preview.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/test/layouts/product-preview.mdx b/packages/site/snapshots/latest/mosaic/test/layouts/product-preview.mdx deleted file mode 100644 index 8477df3d1..000000000 --- a/packages/site/snapshots/latest/mosaic/test/layouts/product-preview.mdx +++ /dev/null @@ -1,204 +0,0 @@ ---- -title: Product Preview Test Page -layout: ProductDiscover -frameOverrides: &ref_0 - header: - homeLink: /mosaic/index - title: Mosaic (BETA) - logo: /img/favicon.png - searchNamespace: mosaic - menu: - - title: Docs - link: /mosaic/docs/index - - title: Quick Start - link: /mosaic/quick-start/index - footer: - description: Footer Content - title: Product Preview Layout Footer - href: /mosaic -breadcrumbs: - - label: Breadcrumb 1 - path: /mosaic/index.mdx - id: /mosaic/index.mdx - - label: Breadcrumb 2 - path: /mosaic/index.mdx - id: /mosaic/index.mdx - - label: Breadcrumb 3 - path: /mosaic/index.mdx - id: /mosaic/index.mdx -lastModified: 1699883563221 -fullPath: /mosaic/test/layouts/product-preview.mdx -route: /mosaic/test/layouts/product-preview -sharedConfig: *ref_0 -readingTime: - text: 2 min read - minutes: 1.725 - time: 103500 - words: 345 -tableOfContents: - - level: 2 - id: product-preview-test-page - text: Product Preview Test Page - - level: 2 - id: heading-1 - text: Heading 1 - - level: 2 - id: heading-2 - text: Heading 2 - - level: 3 - id: heading-3 - text: Heading 3 - - level: 2 - id: heading-4 - text: Heading 4 -navigation: - prev: - title: Product Discover Test Page - route: /mosaic/test/layouts/product-discover - next: - title: Refs Test - route: /mosaic/test/refs/index -sidebarData: - - id: /mosaic/test/index - fullPath: /mosaic/test/index.mdx - name: Test - priority: 3 - data: - level: 2 - link: /mosaic/test/index - childNodes: [] - - id: /mosaic/test/layouts/index - fullPath: /mosaic/test/layouts/index.mdx - name: Layouts - priority: 3 - data: - level: 3 - link: /mosaic/test/layouts/index - childNodes: - - id: /mosaic/test/layouts/detail-highlight - fullPath: /mosaic/test/layouts/detail-highlight.mdx - name: Detail Highlight Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-highlight - childNodes: [] - - id: /mosaic/test/layouts/detail-overview - fullPath: /mosaic/test/layouts/detail-overview.mdx - name: Detail Overview Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-overview - childNodes: [] - - id: /mosaic/test/layouts/detail-technical - fullPath: /mosaic/test/layouts/detail-technical.mdx - name: Detail Technical Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-technical - childNodes: [] - - id: /mosaic/test/layouts/edit - fullPath: /mosaic/test/layouts/edit.mdx - name: Edit Layout - data: - level: 3 - link: /mosaic/test/layouts/edit - childNodes: [] - - id: /mosaic/test/layouts/full-width - fullPath: /mosaic/test/layouts/full-width.mdx - name: Full Width Layout - data: - level: 3 - link: /mosaic/test/layouts/full-width - childNodes: [] - - id: /mosaic/test/layouts/landing - fullPath: /mosaic/test/layouts/landing.mdx - name: Landing Layout Test Page - data: - level: 3 - link: /mosaic/test/layouts/landing - childNodes: [] - - id: /mosaic/test/layouts/newsletter - fullPath: /mosaic/test/layouts/newsletter.mdx - name: Newsletter Test Page - data: - level: 3 - link: /mosaic/test/layouts/newsletter - childNodes: [] - - id: /mosaic/test/layouts/product-discover - fullPath: /mosaic/test/layouts/product-discover.mdx - name: Product Discover Test Page - data: - level: 3 - link: /mosaic/test/layouts/product-discover - childNodes: [] - - id: /mosaic/test/layouts/product-preview - fullPath: /mosaic/test/layouts/product-preview.mdx - name: Product Preview Test Page - data: - level: 3 - link: /mosaic/test/layouts/product-preview - childNodes: [] - - id: /mosaic/test/refs/index - fullPath: /mosaic/test/refs/index.mdx - name: Refs Test - priority: 3 - data: - level: 3 - link: /mosaic/test/refs/index - childNodes: - - id: /mosaic/test/refs/data - fullPath: /mosaic/test/refs/data.mdx - name: Refs Data - data: - level: 3 - link: /mosaic/test/refs/data - childNodes: [] - - id: /mosaic/test/aliases/index - fullPath: /mosaic/test/aliases/index.mdx - name: Aliases Test - data: - level: 3 - link: /mosaic/test/aliases/index - childNodes: [] - - id: /mosaic/test/tags/index - fullPath: /mosaic/test/tags/index.mdx - name: Tags Test - data: - level: 3 - link: /mosaic/test/tags/index - childNodes: [] ---- -## {meta.title} - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum - -## Heading 1 - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum - -## Heading 2 - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum - -### Heading 3 - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum - -## Heading 4 - -Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. -Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. -Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum diff --git a/packages/site/snapshots/latest/mosaic/test/layouts/shared-config.json b/packages/site/snapshots/latest/mosaic/test/layouts/shared-config.json deleted file mode 120000 index da3ba444a..000000000 --- a/packages/site/snapshots/latest/mosaic/test/layouts/shared-config.json +++ /dev/null @@ -1 +0,0 @@ -../../shared-config.json \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/test/refs/data b/packages/site/snapshots/latest/mosaic/test/refs/data deleted file mode 120000 index 98533d4e4..000000000 --- a/packages/site/snapshots/latest/mosaic/test/refs/data +++ /dev/null @@ -1 +0,0 @@ -data.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/test/refs/data.mdx b/packages/site/snapshots/latest/mosaic/test/refs/data.mdx deleted file mode 100644 index 611215fad..000000000 --- a/packages/site/snapshots/latest/mosaic/test/refs/data.mdx +++ /dev/null @@ -1,143 +0,0 @@ ---- -title: Refs Data -data: - randomValue: 100 -lastModified: 1699883563222 -fullPath: /mosaic/test/refs/data.mdx -route: /mosaic/test/refs/data -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Test - path: /mosaic/test/index - id: /mosaic/test/index.mdx - - label: Refs Test - path: /mosaic/test/refs/index - id: /mosaic/test/refs/index.mdx - - label: Refs Data - path: /mosaic/test/refs/data - id: /mosaic/test/refs/data.mdx -readingTime: - text: 0 min read - minutes: 0 - time: 0 - words: 0 -navigation: - prev: - title: Refs Test - route: /mosaic/test/refs/index - next: - title: Aliases Test - route: /mosaic/test/aliases/index -sidebarData: - - id: /mosaic/test/index - fullPath: /mosaic/test/index.mdx - name: Test - priority: 3 - data: - level: 2 - link: /mosaic/test/index - childNodes: [] - - id: /mosaic/test/layouts/index - fullPath: /mosaic/test/layouts/index.mdx - name: Layouts - priority: 3 - data: - level: 3 - link: /mosaic/test/layouts/index - childNodes: - - id: /mosaic/test/layouts/detail-highlight - fullPath: /mosaic/test/layouts/detail-highlight.mdx - name: Detail Highlight Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-highlight - childNodes: [] - - id: /mosaic/test/layouts/detail-overview - fullPath: /mosaic/test/layouts/detail-overview.mdx - name: Detail Overview Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-overview - childNodes: [] - - id: /mosaic/test/layouts/detail-technical - fullPath: /mosaic/test/layouts/detail-technical.mdx - name: Detail Technical Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-technical - childNodes: [] - - id: /mosaic/test/layouts/edit - fullPath: /mosaic/test/layouts/edit.mdx - name: Edit Layout - data: - level: 3 - link: /mosaic/test/layouts/edit - childNodes: [] - - id: /mosaic/test/layouts/full-width - fullPath: /mosaic/test/layouts/full-width.mdx - name: Full Width Layout - data: - level: 3 - link: /mosaic/test/layouts/full-width - childNodes: [] - - id: /mosaic/test/layouts/landing - fullPath: /mosaic/test/layouts/landing.mdx - name: Landing Layout Test Page - data: - level: 3 - link: /mosaic/test/layouts/landing - childNodes: [] - - id: /mosaic/test/layouts/newsletter - fullPath: /mosaic/test/layouts/newsletter.mdx - name: Newsletter Test Page - data: - level: 3 - link: /mosaic/test/layouts/newsletter - childNodes: [] - - id: /mosaic/test/layouts/product-discover - fullPath: /mosaic/test/layouts/product-discover.mdx - name: Product Discover Test Page - data: - level: 3 - link: /mosaic/test/layouts/product-discover - childNodes: [] - - id: /mosaic/test/layouts/product-preview - fullPath: /mosaic/test/layouts/product-preview.mdx - name: Product Preview Test Page - data: - level: 3 - link: /mosaic/test/layouts/product-preview - childNodes: [] - - id: /mosaic/test/refs/index - fullPath: /mosaic/test/refs/index.mdx - name: Refs Test - priority: 3 - data: - level: 3 - link: /mosaic/test/refs/index - childNodes: - - id: /mosaic/test/refs/data - fullPath: /mosaic/test/refs/data.mdx - name: Refs Data - data: - level: 3 - link: /mosaic/test/refs/data - childNodes: [] - - id: /mosaic/test/aliases/index - fullPath: /mosaic/test/aliases/index.mdx - name: Aliases Test - data: - level: 3 - link: /mosaic/test/aliases/index - childNodes: [] - - id: /mosaic/test/tags/index - fullPath: /mosaic/test/tags/index.mdx - name: Tags Test - data: - level: 3 - link: /mosaic/test/tags/index - childNodes: [] ---- - diff --git a/packages/site/snapshots/latest/mosaic/test/refs/index b/packages/site/snapshots/latest/mosaic/test/refs/index deleted file mode 120000 index 34f13104b..000000000 --- a/packages/site/snapshots/latest/mosaic/test/refs/index +++ /dev/null @@ -1 +0,0 @@ -index.mdx \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/test/refs/index.mdx b/packages/site/snapshots/latest/mosaic/test/refs/index.mdx deleted file mode 100644 index b9c7ff838..000000000 --- a/packages/site/snapshots/latest/mosaic/test/refs/index.mdx +++ /dev/null @@ -1,149 +0,0 @@ ---- -title: Refs Test -layout: FullWidth -sidebar: - priority: 3 -data: - other: 100 - sidebarPriority: 3 -lastModified: 1699883563222 -fullPath: /mosaic/test/refs/index.mdx -route: /mosaic/test/refs/index -breadcrumbs: - - label: Mosaic - path: /mosaic/index - id: /mosaic/index.mdx - - label: Test - path: /mosaic/test/index - id: /mosaic/test/index.mdx - - label: Refs Test - path: /mosaic/test/refs/index - id: /mosaic/test/refs/index.mdx -readingTime: - text: 1 min read - minutes: 0.05 - time: 3000 - words: 10 -tableOfContents: [] -navigation: - prev: - title: Product Preview Test Page - route: /mosaic/test/layouts/product-preview - next: - title: Refs Data - route: /mosaic/test/refs/data -sidebarData: - - id: /mosaic/test/index - fullPath: /mosaic/test/index.mdx - name: Test - priority: 3 - data: - level: 2 - link: /mosaic/test/index - childNodes: [] - - id: /mosaic/test/layouts/index - fullPath: /mosaic/test/layouts/index.mdx - name: Layouts - priority: 3 - data: - level: 3 - link: /mosaic/test/layouts/index - childNodes: - - id: /mosaic/test/layouts/detail-highlight - fullPath: /mosaic/test/layouts/detail-highlight.mdx - name: Detail Highlight Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-highlight - childNodes: [] - - id: /mosaic/test/layouts/detail-overview - fullPath: /mosaic/test/layouts/detail-overview.mdx - name: Detail Overview Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-overview - childNodes: [] - - id: /mosaic/test/layouts/detail-technical - fullPath: /mosaic/test/layouts/detail-technical.mdx - name: Detail Technical Test Page - data: - level: 3 - link: /mosaic/test/layouts/detail-technical - childNodes: [] - - id: /mosaic/test/layouts/edit - fullPath: /mosaic/test/layouts/edit.mdx - name: Edit Layout - data: - level: 3 - link: /mosaic/test/layouts/edit - childNodes: [] - - id: /mosaic/test/layouts/full-width - fullPath: /mosaic/test/layouts/full-width.mdx - name: Full Width Layout - data: - level: 3 - link: /mosaic/test/layouts/full-width - childNodes: [] - - id: /mosaic/test/layouts/landing - fullPath: /mosaic/test/layouts/landing.mdx - name: Landing Layout Test Page - data: - level: 3 - link: /mosaic/test/layouts/landing - childNodes: [] - - id: /mosaic/test/layouts/newsletter - fullPath: /mosaic/test/layouts/newsletter.mdx - name: Newsletter Test Page - data: - level: 3 - link: /mosaic/test/layouts/newsletter - childNodes: [] - - id: /mosaic/test/layouts/product-discover - fullPath: /mosaic/test/layouts/product-discover.mdx - name: Product Discover Test Page - data: - level: 3 - link: /mosaic/test/layouts/product-discover - childNodes: [] - - id: /mosaic/test/layouts/product-preview - fullPath: /mosaic/test/layouts/product-preview.mdx - name: Product Preview Test Page - data: - level: 3 - link: /mosaic/test/layouts/product-preview - childNodes: [] - - id: /mosaic/test/refs/index - fullPath: /mosaic/test/refs/index.mdx - name: Refs Test - priority: 3 - data: - level: 3 - link: /mosaic/test/refs/index - childNodes: - - id: /mosaic/test/refs/data - fullPath: /mosaic/test/refs/data.mdx - name: Refs Data - data: - level: 3 - link: /mosaic/test/refs/data - childNodes: [] - - id: /mosaic/test/aliases/index - fullPath: /mosaic/test/aliases/index.mdx - name: Aliases Test - data: - level: 3 - link: /mosaic/test/aliases/index - childNodes: [] - - id: /mosaic/test/tags/index - fullPath: /mosaic/test/tags/index.mdx - name: Tags Test - data: - level: 3 - link: /mosaic/test/tags/index - childNodes: [] ---- -# {meta.title} - -The sidebar priority is {meta.data.sidebarPriority}. - -The other page data is {meta.data.other}. diff --git a/packages/site/snapshots/latest/mosaic/test/refs/shared-config.json b/packages/site/snapshots/latest/mosaic/test/refs/shared-config.json deleted file mode 120000 index da3ba444a..000000000 --- a/packages/site/snapshots/latest/mosaic/test/refs/shared-config.json +++ /dev/null @@ -1 +0,0 @@ -../../shared-config.json \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/test/shared-config.json b/packages/site/snapshots/latest/mosaic/test/shared-config.json deleted file mode 120000 index 11f2745e8..000000000 --- a/packages/site/snapshots/latest/mosaic/test/shared-config.json +++ /dev/null @@ -1 +0,0 @@ -../shared-config.json \ No newline at end of file diff --git a/packages/site/snapshots/latest/mosaic/test/sidebar.json b/packages/site/snapshots/latest/mosaic/test/sidebar.json deleted file mode 100644 index 5a29f6f6d..000000000 --- a/packages/site/snapshots/latest/mosaic/test/sidebar.json +++ /dev/null @@ -1 +0,0 @@ -{"pages":[{"id":"/mosaic/test/index","fullPath":"/mosaic/test/index.mdx","name":"Test","priority":3,"data":{"level":2,"link":"/mosaic/test/index"},"childNodes":[]},{"id":"/mosaic/test/layouts/index","fullPath":"/mosaic/test/layouts/index.mdx","name":"Layouts","priority":3,"data":{"level":3,"link":"/mosaic/test/layouts/index"},"childNodes":[{"id":"/mosaic/test/layouts/detail-highlight","fullPath":"/mosaic/test/layouts/detail-highlight.mdx","name":"Detail Highlight Test Page","data":{"level":3,"link":"/mosaic/test/layouts/detail-highlight"},"childNodes":[]},{"id":"/mosaic/test/layouts/detail-overview","fullPath":"/mosaic/test/layouts/detail-overview.mdx","name":"Detail Overview Test Page","data":{"level":3,"link":"/mosaic/test/layouts/detail-overview"},"childNodes":[]},{"id":"/mosaic/test/layouts/detail-technical","fullPath":"/mosaic/test/layouts/detail-technical.mdx","name":"Detail Technical Test Page","data":{"level":3,"link":"/mosaic/test/layouts/detail-technical"},"childNodes":[]},{"id":"/mosaic/test/layouts/edit","fullPath":"/mosaic/test/layouts/edit.mdx","name":"Edit Layout","data":{"level":3,"link":"/mosaic/test/layouts/edit"},"childNodes":[]},{"id":"/mosaic/test/layouts/full-width","fullPath":"/mosaic/test/layouts/full-width.mdx","name":"Full Width Layout","data":{"level":3,"link":"/mosaic/test/layouts/full-width"},"childNodes":[]},{"id":"/mosaic/test/layouts/landing","fullPath":"/mosaic/test/layouts/landing.mdx","name":"Landing Layout Test Page","data":{"level":3,"link":"/mosaic/test/layouts/landing"},"childNodes":[]},{"id":"/mosaic/test/layouts/newsletter","fullPath":"/mosaic/test/layouts/newsletter.mdx","name":"Newsletter Test Page","data":{"level":3,"link":"/mosaic/test/layouts/newsletter"},"childNodes":[]},{"id":"/mosaic/test/layouts/product-discover","fullPath":"/mosaic/test/layouts/product-discover.mdx","name":"Product Discover Test Page","data":{"level":3,"link":"/mosaic/test/layouts/product-discover"},"childNodes":[]},{"id":"/mosaic/test/layouts/product-preview","fullPath":"/mosaic/test/layouts/product-preview.mdx","name":"Product Preview Test Page","data":{"level":3,"link":"/mosaic/test/layouts/product-preview"},"childNodes":[]}]},{"id":"/mosaic/test/refs/index","fullPath":"/mosaic/test/refs/index.mdx","name":"Refs Test","priority":3,"data":{"level":3,"link":"/mosaic/test/refs/index"},"childNodes":[{"id":"/mosaic/test/refs/data","fullPath":"/mosaic/test/refs/data.mdx","name":"Refs Data","data":{"level":3,"link":"/mosaic/test/refs/data"},"childNodes":[]}]},{"id":"/mosaic/test/aliases/index","fullPath":"/mosaic/test/aliases/index.mdx","name":"Aliases Test","data":{"level":3,"link":"/mosaic/test/aliases/index"},"childNodes":[]},{"id":"/mosaic/test/tags/index","fullPath":"/mosaic/test/tags/index.mdx","name":"Tags Test","data":{"level":3,"link":"/mosaic/test/tags/index"},"childNodes":[]}]} \ No newline at end of file diff --git a/packages/site/snapshots/latest/search-data.json b/packages/site/snapshots/latest/search-data.json deleted file mode 100644 index 98a08017a..000000000 --- a/packages/site/snapshots/latest/search-data.json +++ /dev/null @@ -1 +0,0 @@ -[{"title":"Mosaic","route":"/mosaic/index","content":["True to its name, Mosaic brings together several concepts—including content, design and technical infrastructure—to deliver a unified website experience that is truly greater than the sum of its individual parts.","With Mosaic, you can:","Don't move your content where it does not belong. ","Compose content from remote data sources which\n","are pulled at runtime by our content aggregator.","Visualize your content with your own theme, layouts and components or use the Mosaic Design\n","language.","Extend the existing code and add your own content source types through our simple plugin\n","architecture.","Publish your content through Server Side Rendering (SSR) or generate a snapshot of your content\n","and serve it as a Statically Generated Site (SGS).","Creating a website has never been so easy!"]},{"title":"Aliases","route":"/mosaic/author/aliases","content":["Aliases are virtual 'symlinks' of pages, allowing one page to take on one or more other routes.\n","This is not the same as copying the page, it is a primitive filesystem link which is resolved by Mosaic.","Use Cases","Aliases are great for linking to an old route if you've moved a page to a new place.\n","They can also be used to create short hand links to pages or to 'clone' a copy of a page into\n","another section of the site where it may be relevant.","Example","This is the frontmatter for this page:","---\n","title: Aliases\n","layout: DetailTechnical\n","aliases:\n"," - /mosaic/example/aliases\n","---","Try accessing this page from ","/mosaic/example/aliases"]},{"title":"Fragments","route":"/mosaic/author/fragments","content":["Fragments, also known as content fragments, are powerful tools that allow you to incorporate content from other pages into your documentation. ","By creating an MDX file and using the ","generic directives"," syntax ",", you can easily render the fragment in another file, providing modularity and reusability to your content.","Use Cases","Fragments offer various use cases, such as:","Consistent Content",": Use fragments to maintain consistent content across multiple pages. ","For instance, if you have a table or a tile that appears on multiple pages, you can create a fragment for it and include it in all relevant files. ","This ensures that any updates made to the fragment automatically reflect across the entire documentation.","Reusable Components",": Fragments enable the creation of reusable components or sections. ","You can define a complex or commonly used section once and then include it in multiple pages as needed. ","This approach saves time and effort, as you only need to update the fragment file to propagate changes throughout your documentation.","Modular Documentation",": With fragments, you can break down your documentation into smaller, manageable pieces. ","Each fragment represents a specific topic or section, allowing you to organize and structure your content more efficiently. ","This modular approach simplifies maintenance and makes it easier to navigate and update your documentation.","Usage","Firstly, enable the Fragment Plugin by adding the following to your plugins in ",".","{\n"," modulePath: '@jpmorganchase/mosaic-plugins/FragmentPlugin',\n"," options: {}\n","}","To include a fragment in your content, follow these steps:","Create an MDX file for the fragment you want to reuse. ","Remember to set the sidebar property of your fragment's frontmatter to exclude: true if you don't want the fragment to appear in the vertical navigation menu.","---\n","title: Fragment Title\n","sidebar:\n"," exclude: true\n","---","In the target file where you want to include the fragment, use the remark directive syntax ",".","Markdown Content Example","This is the contents of a fragment located at ",":","---\n","title: Content Fragment\n","sidebar:\n"," exclude: true\n","---\n","\n","#### Fragment Title\n","\n","This is an example fragment of markdown content, being pulled from `../fragments/content-fragment.mdx`.\n","The below code snippet will render the content from the content-fragment.mdx file in your target file:",":fragment{src=\"../fragments/content-fragment.mdx\"}","Example output:",":fragment","Component Example","Here is another example, where the fragment files each contain a "," component.",":fragment{src=\"../fragments/tile-a.mdx\"} :fragment{src=\"../fragments/tile-b.mdx\"}","The above code will render the content from tile-a.mdx and tile-b.mdx files, demonstrated below:",":fragment"," :fragment"]},{"title":"Frontmatter","route":"/mosaic/author/frontmatter","content":["Frontmatter",", also known as page metadata, is a powerful feature that allows easy configuration of a page and Mosaic site components e.g. the sidebar.","Frontmatter is written in yaml syntax and is found at the top of a page between 2 sets of 3 dashes: ",".","Example page yaml","---\n","title: Page Title\n","layout: DetailTechnical\n","sidebar:\n"," priority: 4\n","---\n","\n","// frontmatter is closed and now comes page content\n","# Page Title\n","\n","This is some content.\n","Accessing Frontmatter in content","With the syntax below it is possible to directly reference frontmatter inside content using curly brackets and the "," object.","You can think of "," as a JSON object that holds all the frontmatter of a page and when the Mosaic "," encounters the curly brackets then the value in the frontmatter will be resolved.","{meta.title}\n","{meta.description}\n","{meta.someValueYouHaveAddedToTheFrontmatter}","This is very common to see Mosaic pages that reference the title as shown below:","---\n","title: Title\n","---\n","\n","# {meta.title}","Plugins & Frontmatter","Mosaic plugins can also embed their output into page frontmatter in 2 different ways:","a property is directly added to the page object","a JSON file is generated and referenced using a ","ref","Adding a property to the page","A plugin can add a property to a page simply by extending the page object it receives in the "," lifecycle event:","async function $afterSource(pages) {\n"," for (const page of pages) {\n"," page.newProperty = 'Hello'\n"," }\n"," return pages;\n","}","You could use this property in the page content using ","JSON File","Let's take a look at the ",".","The purpose of this plugin is to crawl the page hierarchy to find the closest "," found in any parent page's frontmatter.","Finds all index pages among the source docs","Deserialises those pages so it can read the frontmatter and content of the page","If a property called "," in the page frontmatter is found a new file named shared-config.json is created","Adds a ref named "," to the shared config file that points to the shared config of the index page","import type { Page, Plugin as PluginType } from '@jpmorganchase/mosaic-types';\n","import { flatten } from 'lodash-es';\n","import path from 'path';\n","\n","function createFileGlob(url, pageExtensions) {\n","if (pageExtensions.length === 1) {\n","return `${url}${pageExtensions[0]}`;\n","}\n","return `${url}{${pageExtensions.join(',')}}`;\n","}\n","\n","interface SharedConfigPluginPage extends Page {\n","sharedConfig?: string;\n","}\n","\n","interface SharedConfigPluginOptions {\n","filename: string;\n","}\n","\n","const SharedConfigPlugin: PluginType = {\n","async $beforeSend(\n"," mutableFilesystem,\n"," { config, serialiser, ignorePages, pageExtensions },\n"," options\n"," ) {\n"," const pagePaths = await mutableFilesystem.promises.glob(\n"," createFileGlob('**/index', pageExtensions),\n"," {\n"," ignore: [options.filename, ...flatten(ignorePages.map(ignore => [ignore, `**/${ignore}`]))],\n","cwd: '/'\n","}\n",");\n","\n"," for (const pagePath of pagePaths) {\n"," const sharedConfigFile = path.join(path.dirname(String(pagePath)), options.filename);\n","\n"," const page = await serialiser.deserialise(\n"," String(pagePath),\n"," await mutableFilesystem.promises.readFile(String(pagePath))\n"," );\n"," if (page.sharedConfig) {\n"," config.setRef(sharedConfigFile, ['config', '$ref'], `${String(pagePath)}#/sharedConfig`);\n"," await mutableFilesystem.promises.writeFile(sharedConfigFile, '{}');\n"," } else {\n"," const baseDir = path.posix.resolve(path.dirname(String(pagePath)), '..","/');\n"," config.setAliases(path.join(baseDir, options.filename), [sharedConfigFile]);\n"," }\n"," }\n","\n","}\n","};\n","\n","export default SharedConfigPlugin;\n"]},{"title":"Author","route":"/mosaic/author/index","content":["Here you will learn how to author documentation using markdown, Mosaic components and page templates"]},{"title":"Markdown Syntax","route":"/mosaic/author/markdown-syntax","content":["Out of the box, Mosaic supports documents written in ","MDX"," which allows React components to be embedded within the ","basic syntax"," outlined in the original Markdown design document.","In addition to the basic markdown syntax, the MDX processor used by Mosaic has been configured to support additional markdown syntax and features:","GitHub flavored markdown (gfm)","Frontmatter","Mosaic Standard Components","All components that comprise the "," export from "," package are available to use out of the box in your documents.","This includes components for all standard markdown syntax and additional components like "," and ",".","Referencing Frontmatter","Frontmatter values can be embedded into the page using the "," object. ","See ","frontmatter"," for more information.","Configuring Supported components","TODO"]},{"title":"Refs","route":"/mosaic/author/refs","content":["Refs are a very powerful feature of Mosaic documents that use ","JSON References"," to reference\n","a property from the page frontmatter or frontmatter of other pages.","The key concept is that of a JSON pointer which takes the form ","A","#","B"," where:","A"," is the relative path from the current schema to a target schema. ","If A is empty, the reference is to a type or property in the same schema, an in-schema reference. ","Otherwise, the reference is to a different schema, a cross-schema reference.","B"," is the complete path from the root of the schema to a type or property in the schema. ","If # in not included or B is empty, the reference is to an entire schema.","To translate this for our purposes:","A"," is the relative path to a file in the filesystem.","B"," is the path to a property in the frontmatter of the file.","It's probably better explained with examples...","Local refs (In-schema reference)","It is possible to reference a page's own frontmatter to avoid duplication:","---\n","title: Refs\n","layout: DetailTechnical\n","sidebar:\n"," priority: 3\n","data:\n"," sidebarPriority:\n"," $ref: '#/sidebar/priority'\n","---","This page you are reading right now has a sidebar priority of ",".","The value of "," comes from "," in the frontmatter.","Notice that because we don't specify a path before the "," in the ref we need to put the whole\n","value inside quotes.","Remote Refs (Cross-schema reference)","It is possible to reference frontmatter of other pages. ","Again this helps avoid duplication but the real power is using refs to build the data model. ","See ","advanced"," for more information.","The ","index"," page of the Author section has this frontmatter:","---\n","title: Author\n","layout: DetailTechnical\n","sidebar:\n"," priority: 3\n","data:\n"," exampleRefData: Hello from Author page\n","---","This page you are currently looking at is referencing the "," in it's frontmatter like this:","---\n","title: Refs\n","layout: DetailTechnical\n","sidebar:\n"," priority: 3\n","data:\n"," authorRef:\n"," $ref: ./#/data/exampleRefData\n","---","I can then use the data and embed it in this page like this:","{meta.data.authorRef}","And here it is: ","Notice that we did not need to put "," in the ref since index pages are resolved\n","automatically.","Advanced","You have had a taste of the power and want to know more? ","OK, lets reference and then list out all the mosaic modes:","The Modes ","index"," page has this frontmatter:","---\n","title: Modes of operation\n","layout: DetailTechnical\n","sidebar:\n"," priority: 4\n","data:\n"," modes:\n"," $ref: ./*#/title\n","---","The ref here is essentially using a wildcard (the *) to grab the "," property from the frontmatter of every page in the modes folder.","We can reference that data just like before:","---\n","title: Refs\n","layout: DetailTechnical\n","sidebar:\n"," priority: 3\n","data:\n"," modes:\n"," $ref: ../configure/modes#/data/modes\n","---","Output","With the code below, the referenced data can be embedded in a page.","
      \n"," {meta.data.modes.map(mode => (\n","
    • {mode}
    • \n"," ))}\n","
    ","Output with Mosaic Components","You can use Mosaic components with referenced data as well. ","Below we are using the "," and "," components.","\n"," {meta.data.modes.map(mode => (\n"," \n"," ))}\n","","Setting Refs using Plugins","Mosaic plugins can create new refs, create new ","global"," refs and see existing refs created by the page or other plugins. ","This is achieved using a special "," property available in the plugin helpers.","Create new refs","Use the "," function from the helpers provided to plugin lifecycle events. ","You need to provide","The file/fullpath to write the ref to","The path to the ptoperty where the ref will be applied","The value of the ref, which can use wildcards","For example, the following would add a property to pages named ",". ","The value is the title of all pages in the ","same"," directory as the current page"," async $afterSource(pages, { config }) {\n"," for (const page of pages) {\n"," config.setRef(page.fullPath, ['titles', '$ref'], `**#/title`);\n"," }\n"," return pages;\n"," }","When setting the property path the last string must be "," otherwise you're not creating a ref\n","that will be resolved by the RefPlugin.","Existing refs","To view refs that already exist you can use ",". ","For example to see all refs for a page:"," config.data.refs[fullPathToPage]","Create global refs","Global refs are similar to regular refs except they do not pre-resolve. ","This means they are resolved when the referenced file is read and the global mosaic filesystem, made up of multiple sources, is used rather than the filesystem of a single source."]},{"title":"Sidebar Configuration","route":"/mosaic/author/sidebars","content":["Sidebar data is generated by the the ","Sidebar Plugin"," which by default uses alphabetical ordering of page names to order the sidebar.","Sidebar frontmatter","A page can add a "," property to its ","frontmatter"," to change the ordering of a sidebar and what title is used for a page in the sidebar.","To rearrange pages in the sidebar or to apply a different label to a page you can specify the following in the page frontmatter:","Sidebar label","By default the ","title"," of a page is used in the sidebar as the label but this can be changed to another label using page frontmatter.","---\n","title: Sidebar Configuration\n","layout: DetailTechnical\n","sidebar:\n"," label: A New Label\n","---","Sidebar priority","Sidebar priority is a number used to sort the sidebar. ","Higher the priority pages appear first in the sidebar ordering.","---\n","title: Sidebar Configuration\n","layout: DetailTechnical\n","sidebar:\n"," priority: 10\n","---","Sidebar Sort Configuration","Sidebar sort configuration allows the sidebar to be sorted using a more sophisticated approach and only needs to be applied to the "," page of the directory you want to sort.","Priority takes precedence over sort configuration so it can be used to override the sort\n","configuration if required.","You must add the sidebar sort configuration to the "," property of an ","index"," page e.g.,","sharedConfig:\n"," sidebar:\n"," sort:\n"," field: data/title\n"," dataType: string\n"," arrange: desc","The properties of the sort configuration are described in the table below:","| Property | Description | Required |\n","| -------- | ------------------------------------------------------------------------------------------ | -------- |\n","| field | the path, separated by ",", used to find the value in page frontmatter you wish to sort by | Yes |\n","| dataType | is the type of the value. ","Can be a "," or "," or ",". ","| Yes |\n","| arrange | "," or "," order | yes |","Newsletters Example","Let's say you have a ","Newsletters"," directory and each page in the directory represents a newsletter. ","You wish to sort the newsletter sidebar by publication date in descending order (newest first).","One way to do this is to edit each page and add a "," which is manually incremented every time a news newsletter is added. ","Alternatively you can add the following sort configuration to the newsletters index page:","sharedConfig:\n"," sidebar:\n"," sort:\n"," field: data/publicationDate\n"," dataType: date\n"," arrange: desc","This will use the "," property in each newsletter to sort the newsletters in the sidebar. ","The publication date is converted to a "," by the Sidebar Plugin to ensure accurate ordering. ","There is now no need to increment a priority when a new newsletter is added.","Example newsletter page frontmatter:","---\n","title: Newsletter 01 Jan 2023\n","description: Newsletter 01 Jan 2023\n","data:\n"," title:\n"," $ref: '#/title'\n"," link: /newsletters/2023-01-01\n"," publicationDate: '2023-01-01'\n","---"]},{"title":"Tags","route":"/mosaic/author/tags","content":["Tags are very similar to ","Refs"," with one very important distinction: Tags work ","across multiple sources",".","In Mosaic, each source has it's own filesystem which are then merged together to form a union of all source filesystems. ","It is in this union filesystem that tags are applied and not to the individual source filesystem that the tag was defined on.","Tags are slower to apply than refs. ","Multiple sources need to run and update before tagged data\n","will be resolved. ","If possible, stick to refs and only use tags when dealing with multiple sources.","Tagging a page","To tag a page, add a "," property to the page frontmatter. ","For example, the Product A page is tagged with \"in-stock\":","---\n","title: Product A\n","description: Mosaic Product A\n","layout: ProductDiscover\n","tags:\n"," - in-stock\n","data:\n"," name:\n"," $ref: '#/title'\n","---"," is always an array","Subscribing to a tag","To subscribe to a tag, use the "," property. ","For example, the Products page has subscribed to the "," property of pages tagged with ",".","---\n","title: Products\n","data:\n"," in-stock:\n"," $tag: in-stock#/data\n","---","A "," can provide a path to a specific piece of metadata on tagged pages, just like a ref.","Example","This page has subscribed to "," and "," tags and is displaying them using 2 Mosaic "," components.","Both the Product A and Product B pages are part of a different source than this page.","In Stock","Out of Stock"]},{"title":"UI Components","route":"/mosaic/author/ui-components","content":["Todo..."]},{"title":"Configure","route":"/mosaic/configure/index","content":["Mosaic is a tool which retrieves, formats and combines documentation pages from any number of different external sources (such as GitHub repositories, local disks or REST endpoints), into a single filesystem for you to use in your websites."]},{"title":"Content Fragment","route":"/mosaic/fragments/content-fragment","content":["Fragment Title","This is an example fragment of markdown content, being pulled from ","."]},{"title":"Fragments","route":"/mosaic/fragments/index","content":["This folder contains example fragments that are referenced and rendered in the Fragments docs page."]},{"title":"Tile A","route":"/mosaic/fragments/tile-a","content":[]},{"title":"Tile B","route":"/mosaic/fragments/tile-b","content":[]},{"title":"Create a Site","route":"/mosaic/getting-started/create-a-site","content":["In this guide you will learn how to generate and serve a Mosaic site.","Prerequisites","To begin setting up a Mosaic site, you need to have the following software installed:","Yarn v1","Node.js v18 or higher","Step 1: Generate a Mosaic site","Run the following command in your project directory to generate a new Mosaic site:","npx @jpmorganchase/mosaic-create-site create -o my-sample-site","This command creates a new Mosaic site in the my-sample-site directory.","Next, navigate to the site directory:","cd my-sample-site","Step 2: Serve the site","The example site you have generated comes preconfigured with two ","sources",": a remote repository and a local docs folder. ","Sources are used by Mosaic to pull content from disparate locations and merge them into a single virtual filesystem that can be used by a Mosaic site.","Set up Git credentials","If you want the site to read from remote repositories, you need to set up an environment variable to store your Git credentials. ","Follow these steps:","Open a terminal or command prompt.","Replace "," and "," in the following commands with your actual Git username and personal access token.","On Unix:","export MOSAIC_DOCS_CLONE_CREDENTIALS=\":\"","On Windows:","set MOSAIC_DOCS_CLONE_CREDENTIALS=\":\"","This sets the MOSAIC_DOCS_CLONE_CREDENTIALS environment variable with your Git credentials.","Serve command","Now you can serve your Mosaic site by running the following command:","yarn serve","Access your Mosaic site from a browser using the following URLs:","To browse the content from your local source: http://localhost:3000/local","To browse the content from the Mosaic Git repo source: http://localhost:3000/mosaic","That's it! ","Your Mosaic site is now up and running.","Next Steps:","Deploy your Mosaic site to AWS or Vercel for production use.","Create more pages to expand your site's content.","Configure your own sources in the mosaic.config.mjs file to pull content from different locations.","Theme your site"]},{"title":"Getting Started","route":"/mosaic/getting-started/index","content":["Getting Started with Mosaic","Follow our step-by-step guides to quickly create and deploy your first Mosaic site."]},{"title":"Publish a site to AWS","route":"/mosaic/getting-started/publish-site-to-aws","content":["Publish a site to AWS using S3 snapshots.","Step 1: Generate a Mosaic site","If you have already created your Mosaic site, skip ahead to step 2.","> npx @jpmorganchase/mosaic-create-site -o my-sample-site\n","> cd my-sample-site","Step 2: Create a Github repository","> git init\n","> git remote add origin git@github.com:username/my-sample-site.git\n","> git add .\n","> git commit -m \"initial commit\"\n","> git push origin main","Step 3: Generate a snapshot of content","Consider a snapshot as a directory of static content previously pulled from your content sources, which does not update itself.","> yarn gen:snapshot","Step 4: Configure environment for S3","> export MOSAIC_MODE=\"snapshot-s3\"\n","> export MOSAIC_S3_BUCKET=\"\"\n","> export MOSAIC_S3_REGION=\"\"\n","> export MOSAIC_S3_ACCESS_KEY_ID=\"\"\"\n","> export MOSAIC_S3_SECRET_ACCESS_KEY=\"\"\n","> yarn mosaic upload -S ./snapshots/latest","Step 5: Setup AWS","Switch to the ","AWS Amplify"," console and deploy your app as a SSR application by following the ","AWS docs",".","Setup an S3 bucket as per the ","AWS S3 docs",".","Step 7: Configure your AWS app","Add the environment vars to the hosted app via your console","MOSAIC_MODE=\"snapshot-s3\"\n","MOSAIC_S3_BUCKET=\"\"\n","MOSAIC_S3_REGION=\"\"\n","MOSAIC_S3_ACCESS_KEY_ID=\"\"\"\n","MOSAIC_S3_SECRET_ACCESS_KEY=\"\"","Add the following build settings","version: 1\n","frontend:\n"," phases:\n"," preBuild:\n"," commands:\n"," - yarn install\n"," - env | grep -e MOSAIC >> .env.production\n"," build:\n"," commands:\n"," - yarn run build\n"," artifacts:\n"," baseDirectory: .next\n"," files:\n"," - '**/*'\n"," cache:\n"," paths:\n"," - node_modules/**/*","Ensure the Node is set to 16","Step 8: Upload your snapshot","Upload your snapshot to S3 storage.","> yarn mosaic upload -S ./snapshots/latest"]},{"title":"Publish","route":"/mosaic/publish/index","content":["To create your first Mosaic site, we have created a command line generator that scaffolds a ","standard"," site.","A ","standard"," site offers","an out the box, working site, which showcases local and remote content sources","a minimal set of files that can be configured with your own components, themes, layouts, sources and plugins","an update path that enables you to update Mosaic, independently of your own configuration","Create your first site","Install the Mosaic create site script.","> yarn global add @jpmorganchase/mosaic-create-site","Create a directory for your site and run the "," script.","> mkdir mosaic-sample-site\n","> cd mosaic-sample-site\n","> mosaic-create-site -f .","Define the environment variable, which enables us to access your remote repo.","> export MOSAIC_DOCS_CLONE_CREDENTIALS=\"\"","The "," environment variable is composed of your git username and your PAT token.\n","Follow these ","docs"," to see how to create your own PAT token.","Your site is ready to run.","> yarn serve","In your browser load ","Congratulations, you have created your first Mosaic site."]},{"title":"Publish a site to AWS","route":"/mosaic/publish/publish-site-to-aws","content":["A Mosaic site is a ","Next.Js"," app.","To publish a Next.Js App to AWS, deploy your app as a SSR application by following the ","AWS docs",".","Once the basic app has been configured, add the Mosaic specifics.","Add the environment vars to the hosted app via the Amplify console","MOSAIC_MODE=\"snapshot-s3\"\n","MOSAIC_S3_BUCKET=\"\"\n","MOSAIC_S3_REGION=\"\"\n","MOSAIC_S3_ACCESS_KEY_ID=\"\"\"\n","MOSAIC_S3_SECRET_ACCESS_KEY=\"\"","Add the following build settings","version: 1\n","frontend:\n"," phases:\n"," preBuild:\n"," commands:\n"," - yarn install\n"," - env | grep -e MOSAIC >> .env.production\n"," build:\n"," commands:\n"," - yarn run build\n"," artifacts:\n"," baseDirectory: .next\n"," files:\n"," - '**/*'\n"," cache:\n"," paths:\n"," - node_modules/**/*","Ensure the Node is set to 16"]},{"title":"Publish a site to Vercel","route":"/mosaic/publish/publish-site-to-vercel","content":["A Mosaic site is a ","Next.Js"," app.","To publish a Next.Js App to Vercel, refer to the ","Vercel docs",".","Deployment","As the ","vercel platform"," hosts static content you will need to deploy a mosaic snapshot. ","There is no option to run mosaic in ","active mode",".","1. ","Update Config File","Add the following to the mosaic config file used by your site:"," deployment: { mode: 'snapshot-file', platform: 'vercel' }","2. ","Set Environment Variables","Set 2 ","environment variables"," in the vercel dashboard.","| Variable Name | Value |\n","| ------------------- | ----------------- |\n","| MOSAIC_MODE | snapshot-file |\n","| MOSAIC_SNAPSHOT_DIR | snapshots/latest. ","|","3. ","Run Build and Deploy","The "," command used by vercel must run "," followed by ","The "," command is needed to workaround an ","output file tracing"," problem.","Example:","yarn build && yarn deploy","Output File Tracing","Output File Tracing"," is a feature of Next.js that uses static analysis\n","to determine what files are needed to deploy a production version of an application.","Due to the architecture of mosaic, snapshot files can be ignored by this process and therefore excluded from the build artifacts deployed by vercel.","If you are deploying your site to the ","vercel platform"," then the mosaic site has a "," command that will update the nextjs output trace to include the snapshot files."]},{"title":"Test","route":"/mosaic/test/index","content":["Pages for e2e testing."]},{"title":"Admin","route":"/mosaic/configure/admin/index","content":["There are several admin urls exposed by Mosaic that provide an insight into how the filesystem has been configured and a way to remotely manage sources.","Endpoints","| Endpoint | Method | Description | Params |\n","| -------------------------- | ------ | -------------------------------------------- | ---------------------- |\n","| "," | GET | Returns the JSON from the Mosaic config file | n/a |\n","| "," | GET | Returns the entire mosaic filesystem as JSON | n/a |\n","| "," | GET | Returns a collection of active sources | n/a |\n","| "," | POST | Adds the source | definition & isPreview |\n","| "," | PUT | Stops the source with the provided name | name |\n","| "," | PUT | Restarts the source with the provided name | name |"]},{"title":"Detail Highlight","route":"/mosaic/configure/layouts/detail-highlight","content":["Layout: Detail Highlight","Initialize with "," in your page's frontmatter.","This layout is used to promote, share insights, and statistics for a line of business.","This layout should be used for pages with only one level of nesting, therefore, pagination is not eligible for this\n","layout.","Page geometry"]},{"title":"Detail Overview","route":"/mosaic/configure/layouts/detail-overview","content":["Layout: Detail Overview","Initialize with "," in your page's frontmatter.","This layout is used to present an overview of expected documentation, statisitics, and ability to\n","navigate to more documents.","Avoid making this page too long. ","If it gets too long, we recommend the ","Detail Technical"," template.","Page geometry","Other Layouts","Detail Highlight","Detail Technical","Landing","Product Discover","Product Preview","Filler content","Eiusmod veniam adipisicing est magna id sunt occaecat minim adipisicing ad do pariatur id aliqua.\n","Officia officia deserunt consequat ullamco irure. ","Excepteur deserunt esse occaecat ex aute. ","Duis do\n","do in incididunt cupidatat dolore veniam magna aliquip voluptate laborum. ","Non irure magna amet\n","ullamco culpa esse dolore nostrud. ","Id ea id ipsum incididunt do velit aliquip fugiat do non\n","consequat.","A sub heading","Deserunt sunt pariatur mollit dolor eiusmod. ","Anim sunt officia cillum anim. ","Laborum ullamco\n","consectetur elit dolore quis laborum. ","Eiusmod cillum amet veniam sunt Lorem reprehenderit commodo.\n","Cupidatat cillum ea consequat anim. ","Duis voluptate nulla veniam labore quis tempor.","Commodo reprehenderit excepteur amet aliquip cillum veniam ad. ","Ullamco proident deserunt laboris\n","duis laborum consequat laboris est eu enim nulla. ","Mollit velit consectetur ea aliqua consectetur\n","mollit eu ex deserunt. ","Aute excepteur exercitation esse proident excepteur Lorem. ","Quis cillum\n","occaecat sint voluptate incididunt ea ipsum incididunt duis sint magna magna fugiat.","Third-level heading","Ea do magna aute proident nulla cupidatat esse consectetur anim eu esse. ","Consectetur est voluptate\n","excepteur non dolore consequat fugiat deserunt. ","Est nostrud est ea irure reprehenderit commodo\n","nostrud nulla tempor ipsum tempor sit id exercitation. ","Sunt reprehenderit officia anim id quis\n","pariatur velit cillum incididunt officia sunt. ","Ullamco ipsum cillum minim deserunt eiusmod nostrud\n","irure et nulla laborum ipsum ipsum incididunt. ","Voluptate reprehenderit in occaecat ipsum nulla\n","excepteur excepteur mollit laboris id ad laborum do. ","Qui in laborum nostrud quis occaecat proident\n","ipsum tempor laborum consequat id ut velit occaecat.Aliquip quis qui ullamco ipsum exercitation\n","exercitation excepteur ea ex. ","Proident elit incididunt incididunt ad adipisicing quis deserunt sint\n","laboris deserunt ipsum culpa est. ","Id do ex duis Lorem exercitation amet reprehenderit. ","Voluptate qui\n","tempor qui sit minim sit qui ea id dolor excepteur. ","Laborum elit excepteur enim sunt consequat\n","officia cillum. ","Do ea occaecat ut voluptate ea proident duis minim ad pariatur dolore magna enim\n","duis. ","Sit aliqua aliqua ea mollit enim cupidatat proident incididunt. ","Eu dolore sit non incididunt.\n","Mollit reprehenderit sunt sunt cillum labore velit exercitation officia aliqua ea adipisicing do ea.\n","Commodo et fugiat velit dolore consectetur.","Amet dolore deserunt in ut amet officia exercitation sint excepteur voluptate proident tempor enim\n","est. ","Culpa proident tempor in voluptate laboris sunt consectetur sit cillum excepteur culpa enim\n","velit laboris. ","Pariatur elit amet nostrud tempor nostrud ea. ","Exercitation do aliquip nisi amet id.\n","Lorem labore incididunt sit sit veniam tempor do consectetur do culpa qui.","Id sint deserunt laborum mollit id excepteur","mollit excepteur labore labore dolor. ","Sit cupidatat nostrud ad consequat amet excepteur id sunt\n","labore adipisicing non irure. ","Fugiat exercitation laborum officia minim duis dolor do officia Lorem\n","cillum excepteur. ","Sint elit mollit duis sit ad commodo.","Cillum amet irure ut tempor tempor culpa dolore sint.","Lorem qui ipsum reprehenderit est incididunt duis exercitation ea duis fugiat. ","Consectetur enim id\n","sunt exercitation et dolore ea proident sunt excepteur fugiat dolor. ","Veniam proident dolore irure\n","incididunt deserunt pariatur quis. ","Incididunt ea elit deserunt occaecat eiusmod velit fugiat eiusmod\n","dolor eiusmod ullamco. ","Fugiat fugiat eiusmod occaecat nulla consequat pariatur.","Aliquip non cupidatat irure magna et fugiat sunt amet ex est excepteur irure quis. ","Non culpa magna\n","nisi enim eu nulla esse laborum amet ipsum. ","Eu consectetur labore do id occaecat adipisicing."]},{"title":"Detail Technical","route":"/mosaic/configure/layouts/detail-technical","content":["Layout: Detail Technical","Initialize with "," in your page's frontmatter.","This layout is used for longer, technical, detailed content about the product.","This layout shows less marketing-type visuals and more visual of diagrams, screenshots, and code\n","snippets.","This page can be short or very lengthy.","Page geometry","Other Layouts","Detail Highlight","Detail Overview","Landing","Product Discover","Product Preview","Filler content","Eiusmod veniam adipisicing est magna id sunt occaecat minim adipisicing ad do pariatur id aliqua.\n","Officia officia deserunt consequat ullamco irure. ","Excepteur deserunt esse occaecat ex aute. ","Duis do\n","do in incididunt cupidatat dolore veniam magna aliquip voluptate laborum. ","Non irure magna amet\n","ullamco culpa esse dolore nostrud. ","Id ea id ipsum incididunt do velit aliquip fugiat do non\n","consequat.","A sub heading","Deserunt sunt pariatur mollit dolor eiusmod. ","Anim sunt officia cillum anim. ","Laborum ullamco\n","consectetur elit dolore quis laborum. ","Eiusmod cillum amet veniam sunt Lorem reprehenderit commodo.\n","Cupidatat cillum ea consequat anim. ","Duis voluptate nulla veniam labore quis tempor.","Commodo reprehenderit excepteur amet aliquip cillum veniam ad. ","Ullamco proident deserunt laboris\n","duis laborum consequat laboris est eu enim nulla. ","Mollit velit consectetur ea aliqua consectetur\n","mollit eu ex deserunt. ","Aute excepteur exercitation esse proident excepteur Lorem. ","Quis cillum\n","occaecat sint voluptate incididunt ea ipsum incididunt duis sint magna magna fugiat.","Third-level heading","Ea do magna aute proident nulla cupidatat esse consectetur anim eu esse. ","Consectetur est voluptate\n","excepteur non dolore consequat fugiat deserunt. ","Est nostrud est ea irure reprehenderit commodo\n","nostrud nulla tempor ipsum tempor sit id exercitation. ","Sunt reprehenderit officia anim id quis\n","pariatur velit cillum incididunt officia sunt. ","Ullamco ipsum cillum minim deserunt eiusmod nostrud\n","irure et nulla laborum ipsum ipsum incididunt. ","Voluptate reprehenderit in occaecat ipsum nulla\n","excepteur excepteur mollit laboris id ad laborum do. ","Qui in laborum nostrud quis occaecat proident\n","ipsum tempor laborum consequat id ut velit occaecat.Aliquip quis qui ullamco ipsum exercitation\n","exercitation excepteur ea ex. ","Proident elit incididunt incididunt ad adipisicing quis deserunt sint\n","laboris deserunt ipsum culpa est. ","Id do ex duis Lorem exercitation amet reprehenderit. ","Voluptate qui\n","tempor qui sit minim sit qui ea id dolor excepteur. ","Laborum elit excepteur enim sunt consequat\n","officia cillum. ","Do ea occaecat ut voluptate ea proident duis minim ad pariatur dolore magna enim\n","duis. ","Sit aliqua aliqua ea mollit enim cupidatat proident incididunt. ","Eu dolore sit non incididunt.\n","Mollit reprehenderit sunt sunt cillum labore velit exercitation officia aliqua ea adipisicing do ea.\n","Commodo et fugiat velit dolore consectetur.","Amet dolore deserunt in ut amet officia exercitation sint excepteur voluptate proident tempor enim\n","est. ","Culpa proident tempor in voluptate laboris sunt consectetur sit cillum excepteur culpa enim\n","velit laboris. ","Pariatur elit amet nostrud tempor nostrud ea. ","Exercitation do aliquip nisi amet id.\n","Lorem labore incididunt sit sit veniam tempor do consectetur do culpa qui.","Id sint deserunt laborum mollit id excepteur","mollit excepteur labore labore dolor. ","Sit cupidatat nostrud ad consequat amet excepteur id sunt\n","labore adipisicing non irure. ","Fugiat exercitation laborum officia minim duis dolor do officia Lorem\n","cillum excepteur. ","Sint elit mollit duis sit ad commodo.","Cillum amet irure ut tempor tempor culpa dolore sint.","Lorem qui ipsum reprehenderit est incididunt duis exercitation ea duis fugiat. ","Consectetur enim id\n","sunt exercitation et dolore ea proident sunt excepteur fugiat dolor. ","Veniam proident dolore irure\n","incididunt deserunt pariatur quis. ","Incididunt ea elit deserunt occaecat eiusmod velit fugiat eiusmod\n","dolor eiusmod ullamco. ","Fugiat fugiat eiusmod occaecat nulla consequat pariatur.","Aliquip non cupidatat irure magna et fugiat sunt amet ex est excepteur irure quis. ","Non culpa magna\n","nisi enim eu nulla esse laborum amet ipsum. ","Eu consectetur labore do id occaecat adipisicing."]},{"title":"Layouts","route":"/mosaic/configure/layouts/index","content":["Todo..."]},{"title":"Landing Layout","route":"/mosaic/configure/layouts/landing","content":["Layout: Landing","Initialize with "," in your page's frontmatter.","Use this layout as a landing page to show large branded visuals, and high-level content about the\n","line of business.","Set the tone and voice for your LOB’s experience.","Use components that support your content with places to insert visuals, share any stats or an\n","introduction of LOB’s story.","Use heading styles to show the grouping of content of a section.","Page geometry"]},{"title":"Product Discover Layout","route":"/mosaic/configure/layouts/product-discover","content":["Layout: Product Discover","Initialize with "," in your page's frontmatter.","Use this layout to introduce a product feature with a description and large visual.","This layout is use for marketing and discovery content.","Page geometry"]},{"title":"Product Preview Layout","route":"/mosaic/configure/layouts/product-preview","content":["Layout: Product Preview","Initialize with "," in your page's frontmatter.","This layout has been used to introduce a product and showcase their suite of product offerings.","Use heading styles to show the grouping of content of a section.","Page geometry"]},{"title":"Active mode","route":"/mosaic/configure/modes/active","content":["In "," mode content can be ","pulled"," from heterogeneous data sources and normalized via plugins, to the configured components/theme.\n","As your content changes, the site will ","re-pull"," the content and update your site in real-time.","The standard generated site comes with 2 sources to demonstrate, how 'active' mode work.","a local source, which loads content from ","a remote source, which loads content from a ","sample Github repository","Configuring your content sources","All content is composed together within a ","namespace",".","A ","namespace"," is the scope for aggregated content, represented by the root path.\n","e.g Our sample docs are aggregated into a ","namespace"," called "," and served by the user journey ","Mosaic doc sources are defined by a file called ","Here is how that might look for a standard site.","Pull your local content","To tryout local content creation, add a file called","The load ","Each directory should contain an "," which is the default page, when a page is loaded without a path","Now create other pages and subdirectories and explore how Mosaic, builds your user-journeys from your fileset.","Pull your remote content","To tryout remote content creation, your standard site comes pre-configured to load our Mosaic sample docs.","Edit the "," and change your "," and "," to pull content from other repos."]},{"title":"Modes of operation","route":"/mosaic/configure/modes/index","content":["Mosaic can operate in 3 different modes","Active updates","In ","active"," mode, content updates in real-time.","active"," mode content is pulled at configured intervals in real-time, as defined by ",".","Read the ","active"," configuration docs.","Static content","Consider a snapshot as a directory of static content previously pulled from your content sources, which does not update itself.","In a snapshot mode, the snapshot does update itself.","File based snapshots","In "," mode, immutable snapshots of content are loaded at startup from the local file-system.","Read the ","snapshot-file"," configuration docs.","S3 based snapshots","In "," mode, snapshots of content are loaded at startup from a remote S3 bucket.","Read the ","snapshot-s3"," configuration docs."]},{"title":"Snapshot file mode","route":"/mosaic/configure/modes/snapshot-file","content":["In "," mode a local immutable snapshot can be loaded by the site. ","Typically, the snapshot and the site are\n","deployed together and upon startup the site can load the snapshot from the local file-system.","To use "," mode","export MOSAIC_MODE=\"snapshot-file\"\n","export MOSAIC_SNAPSHOT_DIR=\"./snapshot/latest\"","Generating a snapshot","To generate a snapshot, run","yarn gen:snapshot","Commit the snapshot to your Git repo and push the site+snapshot to your Git repo, within the same branch."]},{"title":"Snapshot AWS/S3 mode","route":"/mosaic/configure/modes/snapshot-s3","content":["In "," mode a snapshot can be loaded from a pre-configured AWS S3 bucket.","To use "," mode","> export MOSAIC_MODE=\"snapshot-s3\"\n","> MOSAIC_S3_BUCKET=\"\"\n","> MOSAIC_S3_REGION=\"\"\n","> MOSAIC_S3_ACCESS_KEY_ID=\"\"\n","> MOSAIC_S3_SECRET_ACCESS_KEY=\"\"","Generating a snapshot","To generate a snapshot, run","yarn gen:snapshot","Uploading a snapshot to S3","To upload a snapshot to S3, define the required environment variables and run","yarn mosaic upload -S "]},{"title":"$AliasPlugin","route":"/mosaic/configure/plugins/alias-plugin","content":["The "," is what powers the ","aliases"," feature of Mosaic.","It does this by scrapes "," from page metadata and also applies all aliases stored in ","Other plugins can use "," to apply new aliases, as long as they call it before this plugin has reaches the "," lifecycle event.","This plugin is added to the plugins collection by Mosaic itself so users do ","not"," need to include it in their own mosaic config file.","Priority","This plugin runs with a priority of -1 so it runs ","after"," most other plugins."]},{"title":"BreadcrumbsPlugin","route":"/mosaic/configure/plugins/breadcrumbs-plugin","content":["The "," is responsible for generating the data needed to show breadcrumbs navigation on pages. ","It then appends this data to a "," property in the page metadata.","Should a page already have a "," property in it's metadata then it is respected and not overwritten.","If a page has a "," property in it's metadata then this is used as the label for the breadcrumb, otherwise the page "," is used.","When the "," is traversing up directories, it needs to know what page in the directory represents the ","breadcrumb"," for that directory. ","It is recommended to use the "," page for this but the page to use is a configurable option of the breadcrumbs plugin.","Priority","This plugin runs with no special priority.","Options","| Property | Description |\n","| ------------- | ------------------------------------------------ |\n","| indexPageName | The page name to use for \"directory\" breadcrumbs |","Adding to Mosaic","This plugin is included in the mosaic config shipped by the Mosaic standard generator. ","So if you use the below import in your "," file then the breadcrumbs plugin is included already:","import mosaicConfig from '@jpmorganchase/mosaic-standard-generator/dist/fs.config.js';","To add it yourself, add the following to the "," collection:","plugins: [\n"," {\n"," modulePath: '@jpmorganchase/mosaic-plugins/BreadcrumbsPlugin',\n"," options: {\n"," indexPageName: 'index.mdx'\n"," }\n"," }\n"," // other plugins\n","];"]},{"title":"BrokenLinksPlugin","route":"/mosaic/configure/plugins/broken-links-plugin","content":["The "," will identify any broken links in pages Mosaic has pulled into it's filesystem by making use of the ","check-links"," package.","It can identify broken links between the pages themselves and external links that pages link out to.","What this plugin is really checking is \"liveness\" of a link.","alive if the URL is reachable (2XX status code)","dead if the URL is not reachable","invalid if the URL was parsed as invalid or used an unsupported protocol","Links may be \"alive\", but the ","content"," of the linked page may not be what you want so continue\n","to check links show what you expect.","Priority","This plugin runs with no special priority.","Options","| Property | Description |\n","| ------------- | --------------------------------------------------------------------------------------------------------------------------------- |\n","| baseUrl | This is used to calculate the full url for links between pages. ","It should be the url Mosaic is running on |\n","| proxyEndpoint | If you are behind a corporate proxy, external link checking will not work unless you specify the proxy endpoint using this option |","Adding to Mosaic","This plugin is ","not"," included in the mosaic config shipped by the Mosaic standard generator so it must be added manually to the "," collection:","plugins: [\n"," {\n"," modulePath: '@jpmorganchase/mosaic-plugins/BrokenLinksPlugin',\n"," priority: -1,\n"," // Exclude this plugin in builds\n"," runTimeOnly: true,\n"," options: {\n"," baseUrl: process.env.MOSAIC_ACTIVE_MODE_URL || 'http://localhost:8080',\n"," proxyEndpoint: 'http://some-proxy-url'\n"," }\n"," }\n"," // other plugins\n","];","This plugin needs to be a "," plugin because it needs Mosaic to be running in order to\n","make requests to all of the page links.","Example Output","When a link is found to be broken, you will see the following output in the console:","@jpmorganchase/mosaic-site:serve: 8080 [Mosaic] Broken links found in /local/docs/publish-site-to-vercel.mdx\n","@jpmorganchase/mosaic-site:serve: 8080 Link to https://nextjs.org/davie is dead {\n","@jpmorganchase/mosaic-site:serve: 8080 type: 'link',\n","@jpmorganchase/mosaic-site:serve: 8080 title: null,\n","@jpmorganchase/mosaic-site:serve: 8080 url: 'https://nextjs.org/davie',\n","@jpmorganchase/mosaic-site:serve: 8080 children: [ { type: 'text', value: 'Next.Js', position: [Object] } ],\n","@jpmorganchase/mosaic-site:serve: 8080 position: {\n","@jpmorganchase/mosaic-site:serve: 8080 start: { line: 4, column: 20, offset: 36 },\n","@jpmorganchase/mosaic-site:serve: 8080 end: { line: 4, column: 55, offset: 71 }\n","@jpmorganchase/mosaic-site:serve: 8080 }\n","@jpmorganchase/mosaic-site:serve: 8080 }"]},{"title":"$CodeModPlugin","route":"/mosaic/configure/plugins/codemod-plugin","content":["Todo"]},{"title":"Plugins","route":"/mosaic/configure/plugins/index","content":["Mosaic Plugins are ","lifecycle-based"," hooks that are called on ","every"," source at different stages. ","You will never need to invoke a lifecycle method directly as their execution is managed by a plugin runner.","Plugins enable Mosaic to have a lightweight and flexible, modular architecture by encapsulating features and functionality as plugins.","Installation","Configuration","Plugins are added to the "," collection of the mosaic config file. ","Like ","sources",", plugins have an options property that can be used to provide plugin specific configuration.","| Property | Description | Required |\n","| --------------- | -------------------------------------------------------------------------- | -------- |\n","| modulePath | The path to the installed plugin module | Yes |\n","| disabled | Exclude this plugin completely. ","Defaults to false | No |\n","| runtimeOnly | Exclude this plugin when generating a snapshot. ","Defaults to false | No |\n","| previewDisabled | Exclude this plugin for \"preview\" sources | No |\n","| allowMultiple | Allow multiple instances of this plugin to run. ","| No |\n","| priority | The importance of this plugin. ","Plugins with the highest priority run first | No |\n","| options | Collection of other configuration values | No |"," plugins: [\n"," {\n"," modulePath: '@jpmorganchase/mosaic-plugins/PagesWithoutFileExtPlugin',\n"," options: {},\n"," priority: 1\n"," },\n"," {\n"," modulePath: '@jpmorganchase/mosaic-plugins/SidebarPlugin',\n"," options: {}\n"," },\n"," {\n"," modulePath: '@jpmorganchase/mosaic-plugins/ReadingTimePlugin',\n"," options: {}\n"," }\n","],","There is no need to import the plugin module directly. ","As long as the plugin is installed, Mosaic\n","will be able to import it using the built-in plugin loader.","Default Plugins","The following plugins are always included by Mosaic, regardless of whether they are present in the plugins collection of the Mosaic config file:","$TagPlugin","$AliasPlugin","$CodeModPlugin","$RefPlugin","Plugin errors","Should a plugin fail, the failure will ","not"," cause a source to close or for any other plugin to not run.","Instead plugin errors are tracked by Mosaic and can be viewed in the "," property available on each source listed by the list sources ","admin API",".","Plugin errors will be split by lifecycle event and only the lifecycle events used by the loaded plugins used will be shown.","Multiple Instances","By default, Mosaic will only run one instance of a plugin.","It may be the case that you wish to run the same plugin twice with a slightly different config. ","To do this, you must have 2 instances listed in the plugins collection and they ","both"," must set the "," option to ",".","For example, the config below runs the ","SidebarPlugin"," twice:","plugins: [\n"," {\n"," modulePath: '@jpmorganchase/mosaic-plugins/SidebarPlugin',\n"," options: { rootDirGlob: 'products/product-a' },\n"," allowMultiple: true\n"," },\n"," {\n"," modulePath: '@jpmorganchase/mosaic-plugins/SidebarPlugin',\n"," options: { rootDirGlob: '*/!(","product-a)/*' },\n"," allowMultiple: true\n"," }\n"," // other plugins\n","];"]},{"title":"LazyPagePlugin","route":"/mosaic/configure/plugins/lazy-page-plugin","content":["The "," attempts to reduce the size of the Mosaic filesystem in memory by moving page metadata and content to disk.","It then adds a hook, so that when a page is requested the data is loaded from disk and combined with what is already in the Mosaic filesystem.","It must be the very last to run so that it can strip off metadata and content after other plugins\n","have finished with them.","Priority","This plugin runs with a priority of -2. ","Needs to be the last to run for biggest impact.","Options","| Property | Description |\n","| -------- | ------------------------------------------------------------------------------ |\n","| cacheDir | The directory to store the cache. ","Defaults to "," |","Adding to Mosaic","This plugin is included in the mosaic config shipped by the Mosaic standard generator. ","So if you use the below import in your "," file then the plugin is included already:","import mosaicConfig from '@jpmorganchase/mosaic-standard-generator/dist/fs.config.js';","To add it yourself, add the following to the "," collection:","plugins: [\n"," {\n"," modulePath: '@jpmorganchase/mosaic-plugins/LazyPagePlugin',\n"," // This plugin must be the very last to run, so it can strip off metadata and content after the other\n"," // plugins are done with them\n"," priority: -2,\n"," // Exclude this plugin in builds\n"," runTimeOnly: true,\n"," options: {\n"," cacheDir: '.tmp/.pull-docs-last-page-plugin-cache'\n"," }\n"," }\n"," // other plugins\n","];","This plugin needs to be a "," plugin because the goal is to reduce the in-memory\n","filesystem size."]},{"title":"PagesWithoutFileExtPlugin","route":"/mosaic/configure/plugins/pages-wthout-extensions-plugin","content":["The "," plugin creates ","aliases"," without the file extension for every page in the Mosaic filesystem.\n","This allows pages to be retrieved from the filesystem without specifying the extension e.g., ",".","The plugin also modifies the "," metadata property of a page to point to the shorter alias.","Priority","This plugin runs with a priority of 1. ","It must run after the ","$AliasPlugin",".","Adding to Mosaic","This plugin is included in the mosaic config shipped by the Mosaic standard generator. ","So if you use the below import in your "," file then the plugin is included already:","import mosaicConfig from '@jpmorganchase/mosaic-standard-generator/dist/fs.config.js';","To add it yourself, add the following to the "," collection:","plugins: [\n"," {\n"," modulePath: '@jpmorganchase/mosaic-plugins/PagesWithoutFileExtPlugin',\n"," options: {},\n"," priority: 1\n"," }\n"," // other plugins\n","];"]},{"title":"PublicAssetsPlugin","route":"/mosaic/configure/plugins/public-assets-plugin","content":["The "," is responsible for finding \"assets\" in the Mosaic filesystem and copying them to another directory.","Typical usecase is for copying "," and "," to the public directory of a Next.js site as these are considered ","static assets"," for Next.js.","Priority","This plugin runs with no special priority.","Options","| Property | Description |\n","| --------- | ----------------------------------------------------------- |\n","| outputDir | The directory to copy the assets to. ","Defaults to "," |\n","| assets | A collection of filenames to copy to the outputDir |","Adding to Mosaic","This plugin is ","not"," included in the mosaic config shipped by the Mosaic standard generator so it must be added manually to the "," collection:","plugins: [\n"," {\n"," modulePath: '@jpmorganchase/mosaic-plugins/PublicAssetsPlugin',\n"," priority: -1,\n"," options: {\n"," outputDir: './public',\n"," assets: ['sitemap.xml', 'search-data.json']\n"," }\n"," }\n"," // other plugins\n","];"]},{"title":"ReadingTimePlugin","route":"/mosaic/configure/plugins/reading-time-plugin","content":["The "," generates an estimation of how long a page written in MDX will take to read and adds the "," property to the metadata of a page.","Priority","This plugin runs with no special priority.","Adding to Mosaic","This plugin is included in the mosaic config shipped by the Mosaic standard generator. ","So if you use the below import in your "," file then the plugin is included already:","import mosaicConfig from '@jpmorganchase/mosaic-standard-generator/dist/fs.config.js';","To add it yourself, add the following to the "," collection:","plugins: [\n"," {\n"," modulePath: '@jpmorganchase/mosaic-plugins/ReadingTimePlugin',\n"," options: {}\n"," }\n"," // other plugins\n","];"]},{"title":"$RefPlugin","route":"/mosaic/configure/plugins/ref-plugin","content":["The "," powers the ","refs"," feature of Mosaic.","The plugin scrapes "," properties from page metadata and also applies all refs stored in ",".","Other plugins can use "," to apply new refs, as long as they call it before this plugin has reaches ",".","Priority","This plugin runs with a priority of -1 so it runs ","after"," most other plugins."]},{"title":"SearchIndexPlugin","route":"/mosaic/configure/plugins/search-index-plugin","content":["The "," is responsible for generating the search index and configuration information for ","Fuse.js"," which is the matching engine powering the client-side search functionality of Mosaic sites.","It outputs 3 files:","Full Search Index - ","Condensed Search Index - ","Search Configuration - ","Full Search Index","On a Mosaic site, the full index is fetched after a page has loaded, thus removing the chance of a huge index slowing down first-load.","Practically, the full index should load in the background before a user searches for something, but should a search be initiated before that (e.g., slow-internet) then the condensed version of the search index is available.","Condensed Search Data","Search Index plugin creates a \"condensed\" version of the search index that only includes the "," and "," for each page. ","This is the \"Minimum Viable Index\" to provide somewhat useable search results client-side while the main search index is loaded in the background.","Search Configuration","Any ","options"," that need to be passed to Fuse.js.","Search relevancy configuration","| Property | Description |\n","| ---------------- | ----------------------------------------------------- |\n","| includeScore | https://www.fusejs.io/api/options.html#includescore |\n","| includeMatches | https://www.fusejs.io/api/options.html#includematches |\n","| maxPatternLength | TODO |\n","| ignoreLocation | https://www.fusejs.io/api/options.html#ignorelocation |\n","| threshold | https://www.fusejs.io/api/options.html#threshold |\n","| keys | https://www.fusejs.io/api/options.html#keys |","Priority","This plugin runs with no special priority.","Options","| Property | Description |\n","| ------------- | --------------------------------------------------- |\n","| maxLineLength | TODO |\n","| maxLineCount | TODO |\n","| keys | https://www.fusejs.io/api/options.html#keys |\n","| relevancy | ","search relevancy"," |","Adding to Mosaic","This plugin is included in the mosaic config shipped by the Mosaic standard generator. ","So if you use the below import in your "," file then the plugin is included already:","import mosaicConfig from '@jpmorganchase/mosaic-standard-generator/dist/fs.config.js';","To add it yourself, add the following to the "," collection:","plugins: [\n"," {\n"," modulePath: '@jpmorganchase/mosaic-plugins/SearchIndexPlugin',\n"," previewDisabled: true,\n"," options: { maxLineLength: 240, maxLineCount: 240 }\n"," }\n"," // other plugins\n","];","It's usually a good idea to mark this plugin as disabled for preview sources otherwise the pages\n","from the preview will appear in search results."]},{"title":"SharedConfigPlugin","route":"/mosaic/configure/plugins/shared-config-plugin","content":["The "," crawls the page hierarchy to find the closest "," metadata from any parent index's page metadata. ","It then exports a JSON file into each directory with the merged config for that level.","Shared config is typically the place where the following is configured for a Mosaic site:","App Header configuration including site name and main navigation","Footer information","Help links for the left sidebar area","Namespace Shared Configs","Consider 2 sources the share the same ","namespace"," \"product-docs\":","Source A - multiple product directories and main product index page. ","The index page specifies "," metadata.","Source B - pages relevant to a single product. ","Index page does ","not"," have any "," metadata.","Let's also assume that the pages from Source B would also naturally \"fit\" within the pages of Source B (e.g. inside a products directory).","In this scenario, the "," will attempt to copy the shared config file from Source A into the root directory of Source B allowing the Source B pages to use the Source A "," as though it were a product sourced directly from Source A.","Priority","This plugin runs with a priority of 3.","Options","| Property | Description |\n","| -------- | ---------------------------------------------- |\n","| filename | the name of the JSON file output by the plugin |","Adding to Mosaic","This plugin is included in the mosaic config shipped by the Mosaic standard generator. ","So if you use the below import in your "," file then the plugin is included already:","import mosaicConfig from '@jpmorganchase/mosaic-standard-generator/dist/fs.config.js';","To add it yourself, add the following to the "," collection:","plugins: [\n"," {\n"," modulePath: '@jpmorganchase/mosaic-plugins/SharedConfigPlugin',\n"," options: {\n"," filename: 'shared-config.json'\n"," },\n"," priority: 3\n"," }\n"," // other plugins\n","];"]},{"title":"SidebarPlugin","route":"/mosaic/configure/plugins/sidebar-plugin","content":["The "," generates the necessary page metadata needed for the vertical navigation shown on some Mosaic pages.","The output from the plugin is added to a "," metadata property of the page.","Configuration","The "," is used to determine the \"root\" directories of the sidebar. ","So for example:"," - generate sidebar data for the pages that are 3 directories deep in the filesystem hierarchy"," - same as above but ignore the product-a directory"," - generate a sidebar just for product-b in the products directory","To rearrange pages in the sidebar or to apply a different label to a page you can ","configure the sidebar"," using page frontmatter.","Priority","This plugin runs with a priority of 3.","Options","| Property | Description |\n","| ----------- | ----------------------------------------------------------------------------- |\n","| filename | filename of the sidebar json, linked to each related page via ref |\n","| rootDirGlob | Glob pattern for matching directories which should be the root of the sidebar |","Adding to Mosaic","This plugin is included in the mosaic config shipped by the Mosaic standard generator. ","So if you use the below import in your "," file then the plugin is included already:","import mosaicConfig from '@jpmorganchase/mosaic-standard-generator/dist/fs.config.js';","To add it yourself, add the following to the "," collection:","plugins: [\n"," {\n"," modulePath: '@jpmorganchase/mosaic-plugins/SidebarPlugin',\n"," options: { rootDirGlob: '*/*/*' }\n"," }\n"," // other plugins\n","];"]},{"title":"SiteMapPlugin","route":"/mosaic/configure/plugins/site-map-plugin","content":["The "," generates a ","sitemap"," using the pages in the Mosaic filesystem that adheres to the ","sitemaps XML schema",".","The output of the plugin is a file is named ",".","Priority","This plugin runs with no special priority.","Options","| Property | Description |\n","| -------- | --------------------------------------------------------------------------------------------------- |\n","| siteUrl | The site URL. ","Used as the prefix for loc entries in the sitemap as these must start with a protocol |","Adding to Mosaic","This plugin is included in the mosaic config shipped by the Mosaic standard generator. ","So if you use the below import in your "," file then the plugin is included already:","import mosaicConfig from '@jpmorganchase/mosaic-standard-generator/dist/fs.config.js';","To add it yourself, add the following to the "," collection:","plugins: [\n"," {\n"," modulePath: '@jpmorganchase/mosaic-plugins/SiteMapPlugin',\n"," previewDisabled: true,\n"," options: { siteUrl: process.env.SITE_URL || 'http://localhost:3000' }\n"," }\n"," // other plugins\n","];"]},{"title":"$TagPlugin","route":"/mosaic/configure/plugins/tag-plugin","content":["The "," powers the tags feature of Mosaic.","This plugin scrapes "," from page metadata and also applies all aliases stored in ",".","Tags ultimately resolve down into ","refs",", but are different from normal refs, in that they are applied to the\n","union filesystem (all merged filesystems), not to the individual source filesystem that they were defined on. ","This can be thought of as a ","global ref",".","Other plugins can use "," and modify the "," property, to apply new global refs, as long as\n","they do so before this plugin has reaches ",".","Priority","This plugin runs with no special priority but it must run before both the "," and the ",".","Example use case - Products Page","Let's assume there is a products page on your site and each product is shown as a tile. ","The information for each product tile is sourced from multiple Mosaic sources. ","How can tags be used to reference the product data needed for each tile on the products page?","The product page should add a "," metadata prop to its frontmatter:","---\n","title: Products\n","description: Product index\n","layout: ProductPreview\n","data:\n"," items:\n"," $tag: product#/data\n","---","The tag shown in the example above is saying populate "," of the Products index page with the "," metadata property of pages tagged with ",".","A tagged product page needs to have a "," property which is a collection of tags and one of these needs to be ",". ","This will allow the "," to correctly associate the product page to the product index page. ","It will also need a "," property because thats the property our product index page wants to use for the tiles.","---\n","title: Product A\n","description: My Product description\n","layout: ProductDiscover\n","tags:\n"," - product\n","data:\n"," name:\n"," $ref: '#/title'\n"," date: 2023/02/07\n"," action: Product Overview\n"," description:\n"," $ref: '#/description'\n"," link: /products/a/index\n","---","---\n","title: Product B\n","description: My Product description\n","layout: ProductDiscover\n","tags:\n"," - product\n","data:\n"," name:\n"," $ref: '#/title'\n"," date: 2023/02/07\n"," action: Product Overview\n"," description:\n"," $ref: '#/description'\n"," link: /products/b/index\n","---"]},{"title":"TableOfContentsPlugin","route":"/mosaic/configure/plugins/toc-plugin","content":["The "," generates a Table of Contents for each page in the Mosaic filesystem using the headings on the page.","Heading ranks are used to determine which page headings should be included in the Table of Contents:","| Heading Element (markdown syntax) | Rank |\n","| --------------------------------- | ---- |\n","| h1 (#) | 1 |\n","| h2 (##) | 2 |\n","| h3 (###) | 3 |\n","| h4 (####) | 4 |\n","| h5 (#####) | 5 |\n","| h6 (######) | 6 |","The plugin output is added to a "," metadata property of a page.","Priority","This plugin runs with no special priority.","Options","| Property | Description |\n","| -------- | ----------------------------- |\n","| minRank | The minimum page heading rank |\n","| maxRank | The maximum page heading rank |","Adding to Mosaic","This plugin is included in the mosaic config shipped by the Mosaic standard generator. ","So if you use the below import in your "," file then the plugin is included already:","import mosaicConfig from '@jpmorganchase/mosaic-standard-generator/dist/fs.config.js';","To add it yourself, add the following to the "," collection:","plugins: [\n"," {\n"," modulePath: '@jpmorganchase/mosaic-plugins/TableOfContentsPlugin',\n"," options: {\n"," minRank: 2,\n"," maxRank: 3\n"," }\n"," }\n"," // other plugins\n","];"]},{"title":"Git Repo Source","route":"/mosaic/configure/sources/git-repo-source","content":["The Git Repo Source is used to pull content from a remote git repository e.g. github.","Installation","Credentials and Access tokens","To successfully clone the git repo, the source definition must include credentials that have sufficient permissions to clone the repository.","We recommend storing a ","personal access token"," in an environment variable and using the environment variable in the source definition.","This keeps credentials out of code where they may be accidentally exposed to third parties.","Example","export MOSAIC_DOCS_CLONE_CREDENTIALS=\":\",","Configuration","| Property | Description | Required |\n","| ------------------- | -------------------------------------------------------------------------------- | -------- |\n","| modulePath | The path to the installed module (@jpmorganchase/mosaic-source-git-repo) | Yes |\n","| namespace | The scope for this source. ","| Yes |\n","| disabled | When true, content from this source is not used | No |\n","| options.credentials | Collection of URLS to make requests | Yes |\n","| options.prefixDir | The root path used in the content URL | Yes |\n","| options.subfolder | The name of the folder within the cloned repo containing the docs | Yes |\n","| options.repo | The repo URL | Yes |\n","| options.branch | The branch or tag to clone | Yes |\n","| options.extensions | Collection of file extensions that the source will look for inside the subfolder | Yes |\n","| options.remote | The name of the git remote to use. ","Defaults to origin. ","| Yes |","Example Git Repo Source Definition","\n"," {\n"," modulePath: '@jpmorganchase/mosaic-source-git-repo',\n"," namespace: 'mosaic',\n"," options: {\n"," credentials: process.env.MOSAIC_DOCS_CLONE_CREDENTIALS,\n"," prefixDir: 'mosaic',\n"," subfolder: 'docs',\n"," repo: 'https://github.com/jpmorganchase/mosaic.git',\n"," branch: 'main',\n"," extensions: ['.mdx'],\n"," remote: 'origin'\n"," }\n"," }\n"]},{"title":"HTTP Source","route":"/mosaic/configure/sources/http-source","content":["The HTTP Source is used to pull content over HTTP.","Multiple endpoints can be specified and the source will combine and transform the response from each into a single collection of pages.","Installation","Configuration","| Property | Description | Required |\n","| ------------------------------------------ | ----------------------------------------------------------------------------- | -------- |\n","| modulePath | The path to the installed module (@jpmorganchase/mosaic-source-http) | Yes |\n","| namespace | The scope for this source | Yes |\n","| disabled | When true, content from this source is not used | No |\n","| options.endpoints | Collection of URLS to make requests | Yes |\n","| options.prefixDir | The root path used in the content URL | Yes |\n","| options.transformResponseToPagesModulePath | The path of the module used to transform endpoint responses into Mosaic pages | Yes |\n","| options.checkIntervalMins | Number of minutes to wait between requests. ","Defaults to 5 minutes | No |\n","| options.initialDelayMs | Number of milliseconds to wait for making initial request. ","Defaults to 1000 | No |","Example HTTP Source Definition"," {\n"," modulePath: '@jpmorganchase/mosaic-source-http',\n"," namespace: 'my-namespace',\n"," options: {\n"," prefixDir: 'docs',\n"," endpoints: [\n"," 'https://api.data.com/blah',\n"," 'https://api.data.com/hello'\n"," ],\n"," transformResponseToPagesModulePath: '@scope/transformer-package'\n"," }\n"," }"]},{"title":"Sources","route":"/mosaic/configure/sources/index","content":["Sources are what Mosaic uses to pull content from disparate locations and merge into a single virtual filesystem that can be used by a Mosaic Site.","Depending on the ","mode"," used, sources can update periodically ensuring that new content is made available automatically.","Source Definitions","Source Definitions are specified in the "," collection of a mosaic config file.","Each source uses a ","zod schema"," to validate the provided JSON to ensure that all required information for the source to pull content has been provided.","A source definition at a minimum needs to provide the module path of the source and the ","namespace"," that it will use. ","A namespace is not unique across sources though it is common that each source has a different namespace.","Lastly, the options field can be used as a bucket for configuration values needed to configure the source e.g. credentials.","Users are free to add any property as a source option but please read the ","gotchas","\n","first regarding the allowed ","values",".","Example Local Folder Source Definition"," /**\n"," * Demonstrates a local file-system source, in this case a relative path to where the\n"," * site was generated.\n"," * Access from your browser as http://localhost:3000/local\n"," */\n"," {\n"," modulePath: '@jpmorganchase/mosaic-source-local-folder',\n"," namespace: 'local', // each site has it's own namespace, think of this as your content's uid\n"," options: {\n"," rootDir: '..","/../docs', // relative path to content\n"," prefixDir: 'local', // root path used for namespace\n"," extensions: ['.mdx'] // extensions of content which should be pulled\n"," }\n"," }","Source Namespace","A Source Namespace is a scoping mechanism for Mosaic sources used to filter the content loaded by Mosaic. ","By default all sources specified in the mosaic config file are loaded.","sources: [\n"," {\n"," namespace: 'my-namespace',\n"," modulePath: '@jpmorganchase/mosaic-source-local-folder'\n"," }\n","];","The following command will ensure mosaic only loads sources with the "," scope.","yarn mosaic serve -c ''./mosaic.config.mjs' -p 8080 --scope \"local\"","Source Schedules","Source schedules define how often sources pull in content that exists remotely and if a failed source is retried. ","More information can be found ","here","Source Types","Out of the box, Mosaic provides 3 source \"types\":","Local Folder","Git Repo Source","HTTP Source","Sources must expose an observable interface so it is possible to compose sources together e.g. the Git Repo source uses the Local Folder source internally to watch the cloned folder for changes.","Watching for Updates","When running in ","active mode",", Mosaic will watch for any changes to the source content and if a change is detected, will initiate a pull of that new content.","How often to check for updates and how updates are triggered are a matter for the source to handle. ","Mosaic simply responds when a source emits new content.","Source Worker Thread","Sources are executed inside their own worker thread to ensure that the main thread is not overloaded. ","It is here that a local virtual filesystem for the source is created and where several of the ","Plugin Lifecycle"," events are triggered.","Gotchas","A service worker thread uses ","postMessage"," to communicate with the main thread and vice-versa.","This is important because it limits what values can be provided in the source definition to those that can be processed by the ","Structured Clone Algorithm","."]},{"title":"Local Folder Source","route":"/mosaic/configure/sources/local-folder-source","content":["The Local Folder Source is used to pull content from a folder located on the same machine as Mosaic is running.","It is common to use this source when running mosaic locally.","Installation","Configuration","| Property | Description | Required |\n","| ------------------ | ------------------------------------------------------------------------------ | -------- |\n","| modulePath | The path to the installed module (@jpmorganchase/mosaic-source-local-folder) | Yes |\n","| namespace | The scope for this source | Yes |\n","| disabled | When true, content from this source is not used | No |\n","| options.rootDir | The top level directory content will be pulled from | Yes |\n","| options.prefixDir | The root path used in the content URL | Yes |\n","| options.extensions | Collection of file extensions that the source will look for inside the rootDir | Yes |","Example Local Folder Source Definition","{\n"," modulePath: '@jpmorganchase/mosaic-source-local-folder',\n"," namespace: 'local', // each site has it's own namespace, think of this as your content's uid\n"," options: {\n"," rootDir: '..","/../docs', // relative path to content\n"," prefixDir: 'local', // root path used for namespace\n"," extensions: ['.mdx'] // extensions of content which should be pulled\n"," }\n","}","This source will look for content with the \".mdx\" extension in a \"docs\" directory 2 levels up from the Mosaic working directory. ","That content is included in the \"local\" namespace and available from a route that is prefixed with \"local\".","So if you had a file, "," then you would be able to view it at ","."]},{"title":"Source Schedules","route":"/mosaic/configure/sources/schedules","content":["A source schedule defines how often a source initiates a content pull and what to do when there is a failure.","A schedule can be specified for each source in the source definition, but should a source not provide a schedule it will inherit the \"global\" schedule.","Configuration","| Property | Description | Required | Default |\n","| ----------------- | -------------------------------------------------------------------------------------- | -------- | ------- |\n","| checkIntervalMins | The length of time in minutes before triggering a content refresh | Yes | 30 mins |\n","| initialDelayMs | Startup delay for the source. ","| Yes | 1000 ms |\n","| retryEnabled | When true, failures will trigger another content pull | No | true |\n","| retryDelayMins | The interval between retries. ","This will rise exponentially on every failure. ","| No | 5 |\n","| maxRetries | Maximum number of retry attempts | No | 100 |\n","| resetOnSuccess | If true, when a source recovers and emits pages it's retry counter is returned to zero | No | true |","Global Schedule","The global schedule applies to all sources that do ","not"," provide their own schedule. ","It can be configured as a top-level property of the Mosaic config file."," schedule: {\n"," checkIntervalMins: 60,\n"," initialDelayMs: 1000,\n"," retryDelayMins: 15,\n"," maxRetries: 20\n"," }","Example","Given the config file below:"," schedule: {\n"," checkIntervalMins: 30,\n"," initialDelayMs: 1000,\n"," retryDelayMins: 5,\n"," maxRetries: 10\n"," },\n"," sources: [\n"," {\n"," modulePath: '@jpmorganchase/mosaic-source-git-repo',\n"," namespace: 'sourceA',\n"," options: {\n"," credentials: 'credentials',\n"," prefixDir: 'sourceA',\n"," subfolder: 'docs',\n"," repo: 'source-a-repo-url',\n"," branch: 'develop',\n"," extensions: ['.mdx'],\n"," remote: 'origin'\n"," }\n"," },\n"," {\n"," modulePath: '@jpmorganchase/mosaic-source-git-repo',\n"," namespace: 'sourceB',\n"," schedule:{\n"," checkIntervalMins: 60,\n"," initialDelayMs: 5000,\n"," retryDelayMins: 30,\n"," maxRetries: 50\n"," }\n"," options: {\n"," credentials: 'credentials',\n"," prefixDir: 'sourceB',\n"," subfolder: 'docs',\n"," repo: 'source-b-repo-url',\n"," branch: 'develop',\n"," extensions: ['.mdx'],\n"," remote: 'origin'\n"," }\n"," }\n"," ]","Source A will inherit the global schedule so it will:","Start after a 1 second delay","Pull content every 30 minutes","Retry a failed content pull after an initial 5 minute delay","Retry 10 times and if still unsuccessful, closing","Source B has its own schedule so it will:","Start after a 5 second delay","Pull content every 60 minutes","Retry a failed content pull after an initial 30 minute delay","Retry 50 times and if still unsuccessful, closing","Retry Strategy","The retry strategy that Mosaic employs is ","Exponential Backoff",". ","This is a common strategy for networking applications that aims to prevent retries from causing more harm than good.","For example, given a source schedule that has a 1 minute retry delay and will retry a maximum of 3 times then the total time spent retrying is 7 minutes:","1 minute delay then 1st retry","2 minute delay then 2nd retry","4 minute delay then 3rd (and final) retry","Total delay: 1 + 2 + 4 = 7 minutes","As you can see, the delay between retries is growing exponentially giving the content source more time to recover after each retry."]},{"title":"Custom Components","route":"/mosaic/configure/theme/custom-components","content":["Learn how to add your own custom components to your Mosaic site.","Create Components Folder","To start, create a "," folder under "," where you'll store your custom components.","src/\n","└── components/","In this tutorial, we will create a custom "," component.","Create Card Component","Inside the "," folder, create a "," folder, which will contain your React "," component. ","The "," folder should include "," and "," files as shown in the structure below:","├── src/\n","│ ├── components/\n","│ │ └── card/\n","│ │ ├── index.tsx\n","│ │ └── card.module.css","Card Component: index.tsx","Create your "," component within the "," file:","import React from 'react';\n","import styles from './card.module.css';\n","\n","type CardProps = {\n"," title: string;\n"," content: string;\n","};\n","\n","export const Card: React.FC = ({ title, content }) => {\n"," return (\n","
    \n","

    {title}

    \n","

    {content}

    \n","
    \n"," );\n","};","Card Component: card.module.css","Define your component styles in the "," file:",".card {\n"," background-color: #f5f5f5;\n"," border: 1px solid #ccc;\n"," border-radius: 4px;\n"," box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n"," padding: 16px;\n"," transition: box-shadow 0.2s ease-in-out;\n","}\n","\n",".card:hover {\n"," box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);\n","}\n","\n",".card h2 {\n"," color: #333;\n"," font-size: 24px;\n"," margin-bottom: 8px;\n","}\n","\n",".card p {\n"," color: #666;\n"," font-size: 16px;\n"," line-height: 1.5;\n","}","In this example, we use a CSS file, but you can use whichever styling approach you prefer, such as ","vanilla extract",".","To export your "," component, create an "," file in the "," folder:","export * from './card';","Your final folder structure should look like this:","├── src/\n","│ ├── components/\n","│ │ ├── card/\n","│ │ │ ├── index.tsx\n","│ │ │ └── card.module.css\n","│ │ ├── index.ts","Import Custom Card Component","To use your custom "," component, import it into your site's "," file. ","Add the following line to your imports:","import * as myComponents from '../components';","Replace this line:","const components = mosaicComponents;","with:","const components = {\n"," ...mosaicComponents,\n"," ...myComponents\n","};","This will add your custom components to the site, and any custom components in "," will override the corresponding ones in ",". ","The spread operator (",") merges both "," and "," objects, giving priority to "," when there is a naming conflict.","Use Your Custom Card Component","Now you're ready to use your custom "," component. ","Build and run your site, and add the "," component to an MDX file in your "," folder or another source:","","You can create and add more custom components to your Mosaic site by following the same process."]},{"title":"Custom CSS","route":"/mosaic/configure/theme/custom-css","content":["You can customize the look and feel of your Mosaic site by creating cusotm CSS files. ","Here is a step-by-step guide to help you create your own CSS theme.","Create a CSS folder","To get started, create a folder named \"css\" in the \"src\" folder of your Mosaic project.","src/\n","└── css/","Create your theme","Inside the \"css\" folder, create a folder named \"global\". ","This is where you will add your custom styles.","src/\n","└── css/\n"," ├── global/\n"," ├── index.css","Create an \"index.css\" file inside the \"css\" folder. ","This file will import your custom styles.","@import './global/';","Inside your global folder, create a separate CSS file for each part of your site that you want to customize. ","For instance, if you want to change the text styling, create a \"text.css\" file inside the \"global\" folder. ","Here is an example of how your \"text.css\" file could look like:","h1 {\n"," /* Set custom font size and weight */\n"," font-size: /* insert value */ ;\n"," font-weight: /* insert value */ ;\n","}\n","\n","h2 {\n"," font-size: /* insert value */ ;\n"," font-weight: /* insert value */ ;\n","}\n","\n","h3 {\n"," font-size: /* insert value */ ;\n"," font-weight: /* insert value */ ;\n","}\n","\n","h4 {\n"," font-size: /* insert value */ ;\n"," font-weight: /* insert value */ ;\n","}\n","\n","h5 {\n"," font-size: /* insert value */ ;\n"," font-weight: /* insert value */ ;\n","}\n","\n","h6 {\n"," font-size: /* insert value */ ;\n"," font-weight: /* insert value */ ;\n","}\n","\n","p {\n"," font-size: /* insert value */ ;\n"," line-height: /* insert value */ ;\n","}","You can add as many CSS files as you need, depending on how much you want to customize your site.","Create an \"index.css\" file inside the \"global\" folder. ","This file will import your custom styles, in this example we are importing our \"text.css\" file.","@import './text.css';","Your \"css\" folder should now look like this:","src/\n","└── css/\n"," ├── global/\n"," │ ├── text.css\n"," │ ├── index.css\n"," ├── index.css","Import your custom CSS into your site","To apply your custom styles to your Mosaic site, open your \"_app.tsx\" file and add the following line to the bottom of your imports:","import '../css/index.css';","Congratulations! ","You have successfully applied your custom CSS styles to your site. ","This example demonstrated how to create text styles, but you can use the same approach to customize other aspects of your site as well."]},{"title":"Theming Your Site","route":"/mosaic/configure/theme/index","content":["Create a unique look and feel for your Mosaic site by customizing the CSS theme and integrating your own UI components.","Customize the CSS","Adapt various design elements of your Mosaic site to create a cohesive visual theme. ","Refer to our guide to learn more about crafting a custom CSS theme:","CSS Theme Guide","Import Custom Components","Incorporate your own UI components, to tailor the look and functionality of your content. ","This tutorial will walk you through the process of adding custom components to your site:","Adding Custom Components Tutorial"]},{"title":"Aliases Test","route":"/mosaic/test/aliases/index","content":["This page is the alias test page."]},{"title":"Detail Highlight Test Page","route":"/mosaic/test/layouts/detail-highlight","content":["Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum","Heading 1","Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum","Heading 2","Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum","Heading 3","Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum","Heading 4","Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum"]},{"title":"Detail Overview Test Page","route":"/mosaic/test/layouts/detail-overview","content":["Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum","Heading 1","Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum","Heading 2","Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum","Heading 3","Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum","Heading 4","Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum"]},{"title":"Detail Technical Test Page","route":"/mosaic/test/layouts/detail-technical","content":["Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum","Heading 1","Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum","Heading 2","Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum","Heading 3","Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum","Heading 4","Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum"]},{"title":"Edit Layout","route":"/mosaic/test/layouts/edit","content":["Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum"]},{"title":"Full Width Layout","route":"/mosaic/test/layouts/full-width","content":["Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum"]},{"title":"Layouts","route":"/mosaic/test/layouts/index","content":["Pages for e2e testing of layouts."]},{"title":"Landing Layout Test Page","route":"/mosaic/test/layouts/landing","content":["Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum","Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum","Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum","Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum","Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum"]},{"title":"Newsletter Test Page","route":"/mosaic/test/layouts/newsletter","content":["Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum","Heading 1","Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum","Heading 2","Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum","Heading 3","Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum","Heading 4","Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum"]},{"title":"Product Discover Test Page","route":"/mosaic/test/layouts/product-discover","content":["Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum","Heading 1","Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum","Heading 2","Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum","Heading 3","Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum","Heading 4","Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum"]},{"title":"Product Preview Test Page","route":"/mosaic/test/layouts/product-preview","content":["Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum","Heading 1","Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum","Heading 2","Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum","Heading 3","Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum","Heading 4","Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\n","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum"]},{"title":"Refs Data","route":"/mosaic/test/refs/data","content":[]},{"title":"Refs Test","route":"/mosaic/test/refs/index","content":["The sidebar priority is ",".","The other page data is ","."]},{"title":"Tags Test","route":"/mosaic/test/tags/index","content":["In Stock","Out of Stock"]},{"title":"$afterSource","route":"/mosaic/configure/plugins/lifecycle/after-source","content":["The first lifecycle event to trigger after receiving pages from a source and runs in a child process.\n","The pages can safely be mutated and will be reflected in the final filesystem that gets generated.\n","It ","must"," return a collection of pages.","The "," lifecycle event is called with:","pages - the collection of pages emitted by the source","helpers - an object with useful methods","options - the options specified for the plugin in the mosaic config file","Helpers","The helpers provided with this lifecycle event are listed in the table below.","| Property | Description |\n","| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |\n","| serialiser | A matching "," for serialising/deserialising pages when reading/writing to the filesystem |\n","| config | A mutable object for sharing data with other lifecycle phases of all plugins for this source (including in the main thread) in this plugin |\n","| pageExtensions | A collection of pageExtensions the source is using |\n","| ignorePages | A collection of page globs that are to be ignored for this source |\n","| namespace | The namespace of the source running the plugin |","Example - Log out all page routes","async function $afterSource(pages, { config, ignorePages, pageExtensions }) {\n"," for (const page of pages) {\n"," console.log(page.route);\n"," }\n"," return pages;\n","}"]},{"title":"afterUpdate","route":"/mosaic/configure/plugins/lifecycle/after-update","content":["The third lifecycle event to trigger overall and the first to trigger inside the main Mosaic process.","Calls after the filesystem and symlinks have been reconstructed due to a change to the current source pages. ","Pages will ","not"," be cached when read at this stage, to allow for reading content and writing a new copy of it without the cached version taking effect.\n","This method is safe to use with lazy loading, as the filesystem should return the full page when read.","The "," lifecycle event is called with:","mutableFilesystem - Mutable filesystem instance with all of this source's pages inside (and symlinks re-applied)","helpers - an object with useful methods","options - the options specified for the plugin in the mosaic config file","Helpers","The helpers provided with this lifecycle event are listed in the table below.","| Property | Description |\n","| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n","| serialiser | A matching "," for serialising/deserialising pages when reading/writing to the filesystem |\n","| config | An immutable object for reading data from other lifecycle phases of all plugins for this source in the child process for this plugin. ","Shared only with this source. ","|\n","| globalConfig | An immutable object for reading data from other lifecycle phases of all plugins. ","Shared across all sources. ","|\n","| sharedFilesystem | Mutable filesystem instance independent of any sources. ","Useful for global pages, like sitemaps |\n","| globalFilesystem | Immutable union filesystem instance with all source's pages (and symlinks applied) |\n","| pageExtensions | A collection of pageExtensions the source is using |\n","| ignorePages | A collection of page globs that are to be ignored for this source |\n","| namespace | The namespace of the source running the plugin |"]},{"title":"$beforeSend","route":"/mosaic/configure/plugins/lifecycle/before-send","content":["The second lifecycle event to trigger and does so after a filesystem has been built up from the source pages.","It is the last lifecycle event to run in a source child process before the filesystem is sent to the main Mosaic process and should ","not"," return a value.","The "," lifecycle event is called with:","mutableFilesystem - Mutable virtual filesystem instance with all of this source's pages inside (and symlinks applied)","helpers - an object with useful methods","options - the options specified for the plugin in the mosaic config file","Helpers","The helpers provided with this lifecycle event are listed in the table below.","| Property | Description |\n","| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |\n","| serialiser | A matching "," for serialising/deserialising pages when reading/writing to the filesystem |\n","| config | A mutable object for sharing data with other lifecycle phases of all plugins for this source (including in the main thread) in this plugin |\n","| pageExtensions | A collection of pageExtensions the source is using |\n","| ignorePages | A collection of page globs that are to be ignored for this source |\n","| namespace | The namespace of the source running the plugin |"]},{"title":"Lifecycle Events","route":"/mosaic/configure/plugins/lifecycle/index","content":["Plugin lifecycle","The plugin lifecycle is triggered when a source emits content.","Each Mosaic source has its own worker thread and plugin lifecycle events that start with a "," will execute inside the worker thread.\n","All other lifecycle events will execute in the main Mosaic process.","The 5 lifecycle events are:","$afterSource","$beforeSend","afterUpdate","shouldClearCache","shouldUpdateNamespaceSources","Plugin methods that trigger inside the main thread should be asynchronous and highly optimised to\n","avoid holding up the main thread."]},{"title":"shouldClearCache","route":"/mosaic/configure/plugins/lifecycle/should-clear-cache","content":["The fourth lifecycle event to trigger overall and the second to trigger inside the main Mosaic process.","It is called every time ","any"," source emits new pages and should return a boolean to indicate if ","other"," sources should clear their cache in response to the source updating.","Only sources that have already run "," will call this lifecycle hook since there is no\n","cache to clear if they haven't reached that stage in the lifecycle.","The "," lifecycle event is called with:","updatedSourceFilesystem - Immutable filesystem for the source that changed i.e, not the source filesystem","helpers - an object with useful methods","options - the options specified for the plugin in the mosaic config file","Helpers","The helpers provided with this lifecycle event are listed in the table below.","| Property | Description |\n","| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n","| serialiser | A matching "," for serialising/deserialising pages when reading/writing to the filesystem |\n","| config | An immutable object for reading data from other lifecycle phases of all plugins for this source in the child process for this plugin. ","Shared only with this source. ","|\n","| globalFilesystem | Immutable union filesystem instance with all source's pages (and symlinks applied) |\n","| pageExtensions | A collection of pageExtensions the source is using |\n","| ignorePages | A collection of page globs that are to be ignored for this source |\n","| namespace | The namespace of the source running the plugin |"]},{"title":"shouldUpdateNamespaceSources","route":"/mosaic/configure/plugins/lifecycle/should-update-namespace-sources","content":["The fifth lifecycle event to trigger overall and the third to trigger inside the main Mosaic process.","It is called every time ","any"," source emits new pages and should return a boolean to indicate if ","other sources that share the same ","source namespace"," should re-run ",".","The "," lifecycle event is called with:","updatedSourceFilesystem - Immutable filesystem for the source that changed i.e, not the source filesystem","helpers - an object with useful methods","options - the options specified for the plugin in the mosaic config file","Helpers","The helpers provided with this lifecycle event are listed in the table below.","| Property | Description |\n","| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n","| serialiser | A matching "," for serialising/deserialising pages when reading/writing to the filesystem |\n","| config | An immutable object for reading data from other lifecycle phases of all plugins for this source in the child process for this plugin. ","Shared only with this source. ","|\n","| globalFilesystem | Immutable union filesystem instance with all source's pages (and symlinks applied) |\n","| pageExtensions | A collection of pageExtensions the source is using |\n","| ignorePages | A collection of page globs that are to be ignored for this source |\n","| namespace | The namespace of the source running the plugin |"]},{"title":"Product A","route":"/mosaic/products/producta","content":[]},{"title":"Product B","route":"/mosaic/products/productb","content":[]}] \ No newline at end of file diff --git a/packages/site/snapshots/latest/sitemap.xml b/packages/site/snapshots/latest/sitemap.xml deleted file mode 100644 index df566a0c8..000000000 --- a/packages/site/snapshots/latest/sitemap.xml +++ /dev/null @@ -1,393 +0,0 @@ - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/products/producta - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/products/productb - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/author/fragments - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/author/frontmatter - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/author/index - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/author/markdown-syntax - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/author/refs - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/author/sidebars - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/author/tags - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/author/ui-components - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/index - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/fragments/content-fragment - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/fragments/index - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/fragments/tile-a - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/fragments/tile-b - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/getting-started/create-a-site - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/getting-started/index - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/getting-started/publish-site-to-aws - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/publish/index - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/publish/publish-site-to-aws - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/publish/publish-site-to-vercel - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/test/index - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/admin/index - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/layouts/detail-highlight - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/layouts/detail-overview - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/layouts/detail-technical - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/layouts/index - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/layouts/landing - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/layouts/product-discover - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/layouts/product-preview - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/modes/active - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/modes/index - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/modes/snapshot-file - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/modes/snapshot-s3 - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/plugins/alias-plugin - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/plugins/breadcrumbs-plugin - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/plugins/broken-links-plugin - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/plugins/codemod-plugin - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/plugins/index - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/plugins/lazy-page-plugin - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/plugins/pages-wthout-extensions-plugin - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/plugins/public-assets-plugin - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/plugins/reading-time-plugin - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/plugins/ref-plugin - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/plugins/search-index-plugin - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/plugins/shared-config-plugin - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/plugins/sidebar-plugin - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/plugins/site-map-plugin - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/plugins/tag-plugin - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/plugins/toc-plugin - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/sources/git-repo-source - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/sources/http-source - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/sources/index - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/sources/local-folder-source - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/sources/schedules - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/theme/custom-components - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/theme/custom-css - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/theme/index - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/test/aliases/index - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/test/layouts/detail-highlight - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/test/layouts/detail-overview - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/test/layouts/detail-technical - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/test/layouts/edit - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/test/layouts/full-width - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/test/layouts/index - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/test/layouts/landing - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/test/layouts/newsletter - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/test/layouts/product-discover - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/test/layouts/product-preview - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/test/refs/data - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/test/refs/index - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/test/tags/index - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/plugins/lifecycle/after-source - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/plugins/lifecycle/after-update - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/plugins/lifecycle/before-send - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/plugins/lifecycle/index - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/plugins/lifecycle/should-clear-cache - weekly - 0.5 - - - https://mosaic-mosaic-dev-team.vercel.app/mosaic/configure/plugins/lifecycle/should-update-namespace-sources - weekly - 0.5 - - - \ No newline at end of file diff --git a/packages/site/src/app/[...slug]/Body.tsx b/packages/site/src/app/[...slug]/Body.tsx new file mode 100644 index 000000000..8cde19182 --- /dev/null +++ b/packages/site/src/app/[...slug]/Body.tsx @@ -0,0 +1,34 @@ +'use client'; + +import { Editor, useContentEditor } from '@jpmorganchase/mosaic-content-editor-plugin'; +import { SiteState } from '@jpmorganchase/mosaic-loaders'; +import { useSession } from 'next-auth/react'; +import type { ReactNode } from 'react'; +import type { PreviewAction } from '@jpmorganchase/mosaic-site-components-next'; + +export interface BodyProps { + children?: ReactNode; + meta: Partial; + source: string; + previewAction: PreviewAction; +} + +export function Body({ children, source, meta, previewAction }: BodyProps) { + const { pageState } = useContentEditor(); + const { data: session } = useSession(); + + if (pageState !== 'VIEW' && session !== null) { + return ( + + {children} + + ); + } + return children; +} diff --git a/packages/site/src/app/[...slug]/View.tsx b/packages/site/src/app/[...slug]/View.tsx new file mode 100644 index 000000000..ba5f2df43 --- /dev/null +++ b/packages/site/src/app/[...slug]/View.tsx @@ -0,0 +1,23 @@ +'use client'; + +import { useContentEditor } from '@jpmorganchase/mosaic-content-editor-plugin'; +import { layouts } from '@jpmorganchase/mosaic-layouts'; +import { SiteState } from '@jpmorganchase/mosaic-loaders'; +import { ReactNode } from 'react'; + +function getLayoutComponent(layout = 'DetailTechnical') { + return layouts?.[layout]; +} + +export interface ViewProps { + children?: ReactNode; + layout: Partial['layout']; +} + +export function View({ children, layout, ...rest }) { + const { pageState } = useContentEditor(); + + const LayoutComponent = pageState === 'VIEW' ? getLayoutComponent(layout) : layouts?.Edit; + + return {children}; +} diff --git a/packages/site/src/app/[...slug]/error.tsx b/packages/site/src/app/[...slug]/error.tsx new file mode 100644 index 000000000..e5b186f14 --- /dev/null +++ b/packages/site/src/app/[...slug]/error.tsx @@ -0,0 +1,22 @@ +'use client'; + +import { useEffect } from 'react'; +import { Button } from '@jpmorganchase/mosaic-components'; +import { Page500 } from '@jpmorganchase/mosaic-site-components'; + +export default function Error({ error, reset }: { error: Error; reset: () => void }) { + useEffect(() => console.error(error), [error]); + + return ( + + + + ); +} diff --git a/packages/site/src/app/[...slug]/layout.tsx b/packages/site/src/app/[...slug]/layout.tsx new file mode 100644 index 000000000..21fbf295f --- /dev/null +++ b/packages/site/src/app/[...slug]/layout.tsx @@ -0,0 +1,57 @@ +import classnames from 'clsx'; +import { SessionProvider, ThemeProvider } from '@jpmorganchase/mosaic-site-components'; +import { + AppHeader, + Breadcrumbs, + Footer, + DocPaginator, + Sidebar, + TableOfContents +} from '@jpmorganchase/mosaic-site-components-next'; +import { themeClassName } from '@jpmorganchase/mosaic-theme'; +import { loadPage, LoadPageError, LoaderData } from '@jpmorganchase/mosaic-loaders'; +import { notFound } from 'next/navigation'; +import { LayoutBase } from '@jpmorganchase/mosaic-layouts'; +import fontClassNames from '../fonts'; +import { View } from './View'; + +export default async function Layout({ params: { slug }, children }) { + const route = `/${slug.join('/')}`; + let metadata: LoaderData = {}; + try { + const { data = {} } = await loadPage(route); + metadata = data; + } catch (error) { + const loadPageError = error as LoadPageError; + if (loadPageError.statusCode === 404) { + notFound(); + } else { + throw error; + } + } + + return ( + + + }> + } + DocPaginatorComponent={ + + } + PrimarySidebarComponent={} + SecondarySidebarComponent={} + > + + {children} + + + + + ); +} diff --git a/packages/site/src/app/[...slug]/page.tsx b/packages/site/src/app/[...slug]/page.tsx new file mode 100644 index 000000000..c38adc4bd --- /dev/null +++ b/packages/site/src/app/[...slug]/page.tsx @@ -0,0 +1,48 @@ +import { Suspense } from 'react'; +import { Metadata } from 'next'; +import { loadPage } from '@jpmorganchase/mosaic-loaders'; + +import { type PreviewAction, preview } from '@jpmorganchase/mosaic-site-components-next'; +import { MDXContent, mdxComponents } from '@jpmorganchase/mosaic-site-components-next'; + +import { Body } from './Body'; + +const previewAction: PreviewAction = async options => { + 'use server'; + + return preview({ ...options, components: mdxComponents }); +}; + +export default async function Page({ params: { slug } }) { + const route = `/${slug.join('/')}`; + const { source = '', data = {} } = await loadPage(route); + + return ( + + + + + + ); +} + +export async function generateStaticParams() { + const generateStaticParamsURL = process.env.GENERATE_STATIC_PARAMS_URL; + if (generateStaticParamsURL) { + const pages = await fetch(generateStaticParamsURL).then(res => res.json()); + return pages.map(({ route }) => ({ + slug: route.substring(1).split('/') + })); + } + return []; +} + +export async function generateMetadata({ params: { slug } }): Promise { + const route = `/${slug.join('/')}`; + const { data = {} } = await loadPage(route); + + return { + title: data.title, + description: data.description + }; +} diff --git a/packages/site/src/app/error.tsx b/packages/site/src/app/error.tsx new file mode 100644 index 000000000..cd0660909 --- /dev/null +++ b/packages/site/src/app/error.tsx @@ -0,0 +1,29 @@ +'use client'; + +import { useEffect } from 'react'; +import classnames from 'classnames'; +import { Page500, SessionProvider, ThemeProvider } from '@jpmorganchase/mosaic-site-components'; +import { Button } from '@jpmorganchase/mosaic-components'; +import { themeClassName } from '@jpmorganchase/mosaic-theme'; + +import fontClassNames from './fonts'; + +export default function Error({ error, reset }: { error: Error; reset: () => void }) { + useEffect(() => console.error(error), [error]); + return ( + + + + + + + + ); +} diff --git a/packages/site/src/app/favicon.ico b/packages/site/src/app/favicon.ico new file mode 100644 index 000000000..b4c425b32 Binary files /dev/null and b/packages/site/src/app/favicon.ico differ diff --git a/packages/site/src/app/fonts.ts b/packages/site/src/app/fonts.ts new file mode 100644 index 000000000..31f862db5 --- /dev/null +++ b/packages/site/src/app/fonts.ts @@ -0,0 +1,16 @@ +import { Open_Sans, PT_Mono } from 'next/font/google'; + +const ptMono = PT_Mono({ + weight: '400', + display: 'swap', + subsets: ['latin'], + variable: '--salt-typography-fontFamily:' +}); +const openSans = Open_Sans({ + subsets: ['latin'], + variable: '--salt-typography-fontFamily-code', + display: 'swap' +}); + +const fonts = [ptMono.variable, openSans.variable]; +export default fonts; diff --git a/packages/site/src/app/layout.tsx b/packages/site/src/app/layout.tsx new file mode 100644 index 000000000..0b5820b1d --- /dev/null +++ b/packages/site/src/app/layout.tsx @@ -0,0 +1,23 @@ +import { Metadata } from 'next'; + +import '@jpmorganchase/mosaic-site-preset-styles/index.css'; +import { StoreProvider } from '@jpmorganchase/mosaic-store'; +import { Link, Image } from '@jpmorganchase/mosaic-site-components'; + +export const metadata: Metadata = { + title: 'Mosaic' +}; + +export default async function RootLayout({ children }) { + return ( + + +
    + + {children} + +
    + + + ); +} diff --git a/packages/site/src/app/not-found.tsx b/packages/site/src/app/not-found.tsx new file mode 100644 index 000000000..a0563c540 --- /dev/null +++ b/packages/site/src/app/not-found.tsx @@ -0,0 +1,18 @@ +import classnames from 'classnames'; +import { SessionProvider, ThemeProvider, Page404 } from '@jpmorganchase/mosaic-site-components'; +import { themeClassName } from '@jpmorganchase/mosaic-theme'; + +import fontClassNames from './fonts'; + +export default async function NotFound() { + return ( + + + + + + ); +} diff --git a/packages/site/src/pages/[...route].tsx b/packages/site/src/pages/[...route].tsx deleted file mode 100755 index 5a88224ad..000000000 --- a/packages/site/src/pages/[...route].tsx +++ /dev/null @@ -1,33 +0,0 @@ -import React from 'react'; -import type { GetServerSidePropsContext, GetServerSidePropsResult } from 'next'; -import { Body } from '@jpmorganchase/mosaic-site-components'; -import { - createMiddlewareRunner, - MiddlewareResult, - middlewarePresets -} from '@jpmorganchase/mosaic-site-middleware'; - -import type { MyAppProps, MyMiddlewareProps } from '../types/mosaic'; - -/** - * Extend props passed to MyApp by adding your own middleware ('withMyExampleMiddleware') functions. - * - const middlewareRunner = createMiddlewareRunner({}, - [ - ...middlewarePresets, - [withMyExampleMiddleware, { someProp: 20000 }] - ] - ); - */ -const middlewareRunner = createMiddlewareRunner({}, middlewarePresets); - -export async function getServerSideProps( - context: GetServerSidePropsContext -): Promise>>> { - const props = await middlewareRunner(context, {}); - return props; -} - -/** MyApp will be passed MyAppProps which is created by combining the result of all props created by Middleware */ -const MyApp = props => ; -export default MyApp; diff --git a/packages/site/src/pages/_app.tsx b/packages/site/src/pages/_app.tsx deleted file mode 100755 index 533842e6f..000000000 --- a/packages/site/src/pages/_app.tsx +++ /dev/null @@ -1,59 +0,0 @@ -import { AppProps } from 'next/app'; -import Head from 'next/head'; -import { PT_Mono, Open_Sans } from 'next/font/google'; -import { - BaseUrlProvider, - Image, - Link, - Metadata, - components as mosaicComponents -} from '@jpmorganchase/mosaic-site-components'; -import { ImageProvider, LinkProvider, ThemeProvider } from '@jpmorganchase/mosaic-components'; -import { useCreateStore, StoreProvider } from '@jpmorganchase/mosaic-store'; -import { LayoutProvider, layouts as mosaicLayouts } from '@jpmorganchase/mosaic-layouts'; -import { themeClassName } from '@jpmorganchase/mosaic-theme'; -import '@jpmorganchase/mosaic-site-preset-styles/index.css'; -import { SessionProvider } from 'next-auth/react'; -import classnames from 'clsx'; - -import { MyAppProps } from '../types/mosaic'; - -const ptMono = PT_Mono({ - weight: '400', - variable: '--salt-typography-fontFamily-code', - display: 'swap', - subsets: ['latin'] -}); -const openSans = Open_Sans({ - subsets: ['latin'], - variable: '--salt-typography-fontFamily', - display: 'swap' -}); - -const components = mosaicComponents; -const layoutComponents = mosaicLayouts; - -export default function MyApp({ Component, pageProps = {} }: AppProps) { - const { searchIndex, searchConfig, sharedConfig, source } = pageProps; - const frontmatter = source?.frontmatter || {}; - const storeProps = { sharedConfig, searchIndex, searchConfig, ...frontmatter }; - const createStore = useCreateStore(storeProps); - return ( - - - - - - - - - - - - - - - - - ); -} diff --git a/packages/site/src/pages/_document.tsx b/packages/site/src/pages/_document.tsx deleted file mode 100644 index f269951e6..000000000 --- a/packages/site/src/pages/_document.tsx +++ /dev/null @@ -1,8 +0,0 @@ -import { Document } from '@jpmorganchase/mosaic-site-components'; - -export default class CustomisableDocument extends Document { - /** - * Refer to https://nextjs.org/docs/advanced-features/custom-document#customizing-renderpage - * to customize - */ -} diff --git a/packages/site/src/pages/api/content/preview.ts b/packages/site/src/pages/api/content/preview.ts deleted file mode 100644 index b01889f4e..000000000 --- a/packages/site/src/pages/api/content/preview.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { compileMDX } from '@jpmorganchase/mosaic-site-middleware'; -import type { NextApiRequest, NextApiResponse } from 'next'; - -function getErrorMessage(error: unknown) { - if (error instanceof Error) return error.message; - return String(error); -} - -export default async function handler(req: NextApiRequest, res: NextApiResponse) { - try { - const { body } = req; - let compiledMdx; - try { - if (body.mode === 'markdown') { - compiledMdx = await compileMDX(body.text, false /** don't parse frontmatter */); - } - } catch (ex: unknown) { - return res - .status(200) - .json({ source: null, error: 'compilation error', exception: getErrorMessage(ex) }); - } - return res.status(200).json({ source: compiledMdx }); - } catch (ex) { - return res.status(500).send(getErrorMessage(ex)); - } -} diff --git a/packages/site/src/pages/index.tsx b/packages/site/src/pages/index.tsx deleted file mode 100644 index da034d318..000000000 --- a/packages/site/src/pages/index.tsx +++ /dev/null @@ -1,21 +0,0 @@ -export default function ContentIndex() { - throw new Error('This should never render.'); -} - -export const getServerSideProps = async function getServerSideProps() { - try { - return { - redirect: { - permanent: true, - destination: '/mosaic/' - } - }; - } catch (e: any) { - if (e.status === 404) { - throw new Error( - `No homepage found for this route. Cannot redirect to the correct destination.\n\n${e.statusText}` - ); - } - throw e; - } -}; diff --git a/packages/site/src/types/mosaic.ts b/packages/site/src/types/mosaic.ts deleted file mode 100644 index f00d1b4c6..000000000 --- a/packages/site/src/types/mosaic.ts +++ /dev/null @@ -1,25 +0,0 @@ -import type { MosaicAppProps, MiddlewarePresetsProps } from '@jpmorganchase/mosaic-site-middleware'; - -/** - * In this file, define each of your own Middleware props, which combine together into MyAppProps - * - * Define the props returned by your middleware - * - * export interface ExampleMiddlewareProps { - * someProp?: string; - * } - * - * Insert the options you want to pass to your middleware (optional) - * - * export interface ExampleMiddlewareOptions { - * someOption: number; - * } - * - * Then compose all your own Middleware props with the default MosaicAppProps - * - * export interface MyAppProps extends MosaicAppProps {}; - */ - -export declare type MyMiddlewareProps = MiddlewarePresetsProps /* & ExampleMiddlewareOptions */; - -export type MyAppProps = MosaicAppProps['props']; diff --git a/packages/site/tsconfig.json b/packages/site/tsconfig.json index 3f6d8f8b3..fd5a46583 100644 --- a/packages/site/tsconfig.json +++ b/packages/site/tsconfig.json @@ -6,7 +6,7 @@ "esModuleInterop": true, "moduleResolution": "Node", "isolatedModules": true, - "sourceMap": true, + "sourceMap": false, "declaration": true, "allowJs": false, "strict": true, @@ -17,7 +17,6 @@ "noFallthroughCasesInSwitch": true, "skipLibCheck": true, "baseUrl": ".", - "rootDir": "./src", "outDir": "./dist", "tsBuildInfoFile": "./dist/tsconfig.tsbuildinfo", "forceConsistentCasingInFileNames": true, @@ -26,8 +25,13 @@ "resolveJsonModule": true, "noImplicitAny": false, "jsx": "preserve", - "module": "esnext" + "module": "esnext", + "plugins": [ + { + "name": "next" + } + ] }, - "include": ["src"], - "exclude": ["node_modules", "dist/**/*"] + "include": ["src", ".next/types/**/*.ts"], + "exclude": ["node_modules"] } diff --git a/packages/source-git-repo/src/Repo.ts b/packages/source-git-repo/src/Repo.ts index 8194de441..661ba2d46 100644 --- a/packages/source-git-repo/src/Repo.ts +++ b/packages/source-git-repo/src/Repo.ts @@ -202,7 +202,7 @@ export default class Repo { ) { const updatedFilesGen = updatedFilesGenerator(this, disableAutoPullChanges); - let intervalId: NodeJS.Timer | null = setInterval(async () => { + let intervalId: NodeJS.Timeout | null = setInterval(async () => { try { if (this.#cloned) { const { value: updatedFiles } = await updatedFilesGen.next(); diff --git a/packages/standard-generator/package.json b/packages/standard-generator/package.json index 17090e2bf..477d6445e 100644 --- a/packages/standard-generator/package.json +++ b/packages/standard-generator/package.json @@ -11,10 +11,10 @@ }, "main": "./dist/index.js", "scripts": { - "build": "node ./scripts/bundle.js", + "build": "node ./scripts/bundle.mjs", "clean": "npx del-cli 'dist/**' && find . -type d -empty -delete", "lint": "eslint --ignore-pattern \"**/__tests__/**\"", - "watch": "node ./scripts/bundle.js watch" + "watch": "node ./scripts/bundle.mjs watch" }, "files": [ "dist", diff --git a/packages/standard-generator/scripts/bundle.js b/packages/standard-generator/scripts/bundle.mjs similarity index 54% rename from packages/standard-generator/scripts/bundle.js rename to packages/standard-generator/scripts/bundle.mjs index f5ed10f97..9f03d5743 100644 --- a/packages/standard-generator/scripts/bundle.js +++ b/packages/standard-generator/scripts/bundle.mjs @@ -1,21 +1,12 @@ -const fs = require('fs-extra'); -const esbuild = require('esbuild'); +import fs from 'fs-extra'; +import esbuild from 'esbuild'; const args = process.argv.slice(2); const watchEnabled = args[0] === 'watch'; const packageName = process.env.npm_package_name; -const watchConfig = watchEnabled - ? { - onRebuild(error, result) { - if (error) console.error(`watch build failed for ${packageName}:`, error); - else console.log(`watch build succeeded for ${packageName}:`, result); - } - } - : false; - try { - esbuild.build({ + const context = await esbuild.context({ entryPoints: ['src/fs.config.js', 'src/generator.config.js', 'src/generator.js'], bundle: false, outdir: 'dist', @@ -23,16 +14,26 @@ try { format: 'cjs', plugins: [ { - name: 'copy-additional-files', + name: 'on-end', setup(build) { - build.onEnd(() => { - fs.copySync('./src/templates', './dist/templates', { overwrite: true }); + build.onEnd(({ errors = [] }) => { + if (errors.length) { + console.error(`build failed for ${packageName}:`, errors); + } else { + console.log(`build succeeded for ${packageName}:`); + fs.copySync('./src/templates', './dist/templates', { overwrite: true }); + } }); } } - ], - watch: watchConfig + ] }); + await context.rebuild(); + if (watchEnabled) { + await context.watch(); + } + await context.serve(); + context.dispose(); } catch (e) { if (e.errors && e.errors.length > 0) { console.group(`!!!!!!! ${packageName} build errors !!!!!!!`); @@ -45,5 +46,5 @@ try { console.error(e.warnings); console.groupEnd(); } - return process.exit(1); + process.exit(1); } diff --git a/packages/standard-generator/src/templates/next.config.js.hbs b/packages/standard-generator/src/templates/next.config.js.hbs index d8a8fbfff..2b58e9fba 100755 --- a/packages/standard-generator/src/templates/next.config.js.hbs +++ b/packages/standard-generator/src/templates/next.config.js.hbs @@ -10,7 +10,6 @@ module.exports = { '@jpmorganchase/mosaic-layouts', '@jpmorganchase/mosaic-open-api-component', '@jpmorganchase/mosaic-site-components', - '@jpmorganchase/mosaic-site-middleware', '@jpmorganchase/mosaic-theme', '@jpmorganchase/mosaic-store' ], diff --git a/packages/standard-generator/src/templates/package.json.hbs b/packages/standard-generator/src/templates/package.json.hbs index c513c8903..206657165 100644 --- a/packages/standard-generator/src/templates/package.json.hbs +++ b/packages/standard-generator/src/templates/package.json.hbs @@ -22,16 +22,16 @@ {{{ printDependencies dependencies }}} "@philpl/buble": "^0.19.7", "@types/react": "^18.0.26", - "next": "^13.4.1", + "next": "^14.0.0", "next-auth": "^4.24.5" }, "devDependencies": { - "@next/eslint-plugin-next": "12.3.1", + "@next/eslint-plugin-next": "^14.0.0", "@types/node" : "^16.0.0", "concurrently": "^7.1.0", "cross-env": "^7.0.3", "dotenv-load": "^2.0.1", - "eslint-config-next": "^12.3.1", + "eslint-config-next": "^14.0.0", "react": "^18.2.0", "react-dom": "^18.2.0" } diff --git a/packages/store/package.json b/packages/store/package.json index ba6d1ca24..34c338fc6 100644 --- a/packages/store/package.json +++ b/packages/store/package.json @@ -22,22 +22,22 @@ }, "scripts": { "build": "npm-run-all --parallel build:*", - "build:bundle": "node ../../scripts/bundle.js", + "build:bundle": "node ../../scripts/bundle.mjs", "build:types": "tsc", "clean": "npx del-cli 'dist/**' && find . -type d -empty -delete", "lint": "eslint --ignore-pattern \"**/__tests__/**\"", - "dev": "node ../../scripts/bundle.js watch" + "dev": "node ../../scripts/bundle.mjs watch" }, "devDependencies": { "@testing-library/react": "^13.4.0", "del-cli": "^4.0.1", - "typescript": "^4.8.3" + "typescript": "^5.2.2" }, "dependencies": { - "zustand": "^4.1.1" + "zustand": "^4.4.7" }, "peerDependencies": { - "@types/react": "^18.0.26", + "@types/react": "^18.2.46", "react": "^18.2.0", "react-dom": "^18.2.0" } diff --git a/packages/store/src/StoreContext.ts b/packages/store/src/StoreContext.ts new file mode 100644 index 000000000..693ba9a81 --- /dev/null +++ b/packages/store/src/StoreContext.ts @@ -0,0 +1,5 @@ +import { createContext } from 'react'; +import { type StoreApi } from 'zustand'; +import { StoreState } from './store'; + +export const StoreContext = createContext | null>(null); diff --git a/packages/store/src/StoreProvider.tsx b/packages/store/src/StoreProvider.tsx new file mode 100644 index 000000000..a24d3fe81 --- /dev/null +++ b/packages/store/src/StoreProvider.tsx @@ -0,0 +1,21 @@ +import React, { useEffect, useRef } from 'react'; + +import { StoreContext } from './StoreContext'; +import { InitialStoreState, createStore } from './store'; + +interface StoreProviderProps extends InitialStoreState { + children?: React.ReactNode; +} + +export const StoreProvider = ({ children, ...restProps }: StoreProviderProps) => { + const storeRef = useRef | null>(null); + if (!storeRef.current) { + storeRef.current = createStore({ ...restProps }); + } + + useEffect(() => { + storeRef.current?.persist.rehydrate(); + }, []); + + return {children}; +}; diff --git a/packages/store/src/__tests__/store.test.ts b/packages/store/src/__tests__/store.test.ts index c3c1a2c38..50990e5b7 100644 --- a/packages/store/src/__tests__/store.test.ts +++ b/packages/store/src/__tests__/store.test.ts @@ -1,210 +1,22 @@ -import { renderHook } from '@testing-library/react'; - -import { createWrapper } from './test-utils/utils'; -import { initializeStore, SiteState, useCreateStore, useStore } from '../store'; - -function getStateToVerify(currentState: SiteState) { - let { actions, ...stateToVerify } = currentState; - return stateToVerify; -} - -describe('GIVEN the store initializer', () => { - describe('WHEN no other state is provided', () => { - test('THEN the store api provides the initial default state', () => { - const storeApi = initializeStore(); - expect(getStateToVerify(storeApi.getState())).toEqual({ - breadcrumbs: [], - navigation: {}, - sidebarData: [], - tableOfContents: [], - searchIndex: [], - searchConfig: {}, - sharedConfig: {}, - description: undefined, - layout: undefined, - route: undefined, - title: undefined, - colorMode: 'light' - }); - }); - }); - - describe('WHEN additional state is preloaded', () => { - test('THEN the store api provides the initial default state plus the preloaded state', () => { - const state = { - description: 'description', - layout: 'layout', - route: 'route', - title: 'title' - }; - - const storeApi = initializeStore(state); - expect(getStateToVerify(storeApi.getState())).toEqual({ - breadcrumbs: [], - navigation: {}, - searchIndex: [], - searchConfig: {}, - sidebarData: [], - tableOfContents: [], - sharedConfig: {}, - colorMode: 'light', - - ...state - }); - }); - }); -}); - -describe('GIVEN the `useCreateStore` hook', () => { - describe('WHEN executed on the client', () => { - test('THEN the store content is replaced', () => { - const state = { layout: 'layout', description: 'des' }; - const { result, rerender } = renderHook(() => useCreateStore(state)); - let currentState = result.current().getState(); - - expect(getStateToVerify(currentState)).toEqual({ - breadcrumbs: [], - navigation: {}, - searchIndex: [], - searchConfig: {}, - sidebarData: [], - tableOfContents: [], - sharedConfig: {}, - colorMode: 'light', - ...state, - route: undefined, - title: undefined - }); - - // update the state and rerender - state.layout = 'new'; - state.description = 'description'; - rerender(); - - currentState = result.current().getState(); - expect(getStateToVerify(currentState)).toEqual({ - breadcrumbs: [], - navigation: {}, - sidebarData: [], - searchIndex: [], - searchConfig: {}, - tableOfContents: [], - sharedConfig: {}, - colorMode: 'light', - description: 'description', - layout: 'new', - route: undefined, - title: undefined - }); - }); - test('THEN defaults applied when page props do not include default state', () => { - const state: { layout?: string; description: string } = { - layout: 'layout', - description: 'des' +import { InitialSiteState, createStore } from '../store'; + +describe('GIVEN the createStore function', () => { + describe('WHEN custom initial state is provided', () => { + test('THEN it overrides the default initial state', () => { + const MyImageComponent = () => 'custom image'; + const MyLinkComponent = () => 'custom link'; + const initialState: InitialSiteState = { + colorMode: 'dark', + LinkComponent: MyLinkComponent, + ImageComponent: MyImageComponent }; - const { result, rerender } = renderHook(() => useCreateStore(state)); - let currentState = result.current().getState(); - - expect(getStateToVerify(currentState)).toEqual({ - breadcrumbs: [], - navigation: {}, - searchIndex: [], - searchConfig: {}, - sidebarData: [], - tableOfContents: [], - sharedConfig: {}, - colorMode: 'light', - ...state, - route: undefined, - title: undefined - }); - - /** - * we use delete here because the idea is that the page does not indicate a layout IN ANY WAY - * This is different from the page saying my layout is undefined - */ - delete state.layout; - state.description = 'description'; - rerender(); - - currentState = result.current().getState(); - expect(getStateToVerify(currentState)).toEqual({ - breadcrumbs: [], - navigation: {}, - sidebarData: [], - searchIndex: [], - searchConfig: {}, - tableOfContents: [], - sharedConfig: {}, - colorMode: 'light', - description: 'description', - layout: undefined, - route: undefined, - title: undefined - }); - }); - }); - - describe('WHEN executed on the server', () => { - test('THEN the store is always reinitialized', () => { - const state = { layout: 'layout', description: 'des' }; - const { result, rerender } = renderHook(() => useCreateStore(state, true)); - let currentState = result.current().getState(); - - expect(getStateToVerify(currentState)).toEqual({ - breadcrumbs: [], - navigation: {}, - searchIndex: [], - searchConfig: {}, - sidebarData: [], - tableOfContents: [], - sharedConfig: {}, - colorMode: 'light', - ...state, - route: undefined, - title: undefined - }); - // update the state and rerender - state.layout = 'new'; - state.description = 'description'; - rerender(); - - currentState = result.current().getState(); - - expect(getStateToVerify(currentState)).toEqual({ - breadcrumbs: [], - navigation: {}, - sidebarData: [], - searchIndex: [], - searchConfig: {}, - tableOfContents: [], - sharedConfig: {}, - colorMode: 'light', - description: 'description', - layout: 'new', - route: undefined, - title: undefined - }); - }); - }); -}); - -describe('GIVEN the `useStore` hook', () => { - describe('WHEN a selector is provided', () => { - test('THEN the hook applies the selector and returns the selected state', () => { - const { result } = renderHook(() => useStore(state => state.title), { - wrapper: createWrapper({ title: 'title' }) - }); - expect(result.current).toEqual('title'); - }); - }); + const store = createStore(initialState); + const state = store.getState(); - describe('WHEN rendered outside of the StoreContext', () => { - test('THEN the hook throws an error', () => { - expect(() => renderHook(() => useStore(state => state.title))).toThrowError( - 'Missing StoreProvider in the tree' - ); + expect(state.colorMode).toEqual(initialState.colorMode); + expect(state.LinkComponent).toEqual(initialState.LinkComponent); + expect(state.ImageComponent).toEqual(initialState.ImageComponent); }); }); }); diff --git a/packages/store/src/__tests__/test-utils/utils.tsx b/packages/store/src/__tests__/test-utils/utils.tsx deleted file mode 100644 index b15d8a6ad..000000000 --- a/packages/store/src/__tests__/test-utils/utils.tsx +++ /dev/null @@ -1,26 +0,0 @@ -import React from 'react'; -import { render } from '@testing-library/react'; - -import { useCreateStore, StoreProvider } from '../../store'; -import type { SiteState } from '../../store'; - -export function renderWithStore(ui: React.ReactElement) { - const { rerender, ...result } = render({ui}); - return { - ...result, - rerender: (rerenderUi: React.ReactElement) => rerender({rerenderUi}) - }; -} - -export function createWrapper(state?: Partial) { - return ({ children }: { children?: React.ReactNode }) => {children}; -} - -/** - * - * @param state: initial state for the site store - */ -const Store: React.FC<{ state?: Partial }> = ({ children, state = {} }) => { - const createStore = useCreateStore(state); - return {children}; -}; diff --git a/packages/store/src/__tests__/useAppHeader.test.ts b/packages/store/src/__tests__/useAppHeader.test.ts deleted file mode 100644 index 4dc7734a3..000000000 --- a/packages/store/src/__tests__/useAppHeader.test.ts +++ /dev/null @@ -1,157 +0,0 @@ -import { renderHook } from '@testing-library/react'; - -import { createWrapper } from './test-utils/utils'; -import { useAppHeader } from '../useAppHeader'; -import { SiteState } from '../store'; - -const header: SiteState['sharedConfig']['header'] = { - homeLink: '/mosaic', - logo: '/some/url', - title: 'Digital Platform mosaic', - menu: [ - { - title: 'Products', - link: '/mosaic/products' - }, - { - title: 'Case Studies', - link: '/mosaic/case-studies' - }, - { - title: 'Docs & Tools', - links: [ - { - title: 'Docs', - link: '/mosaic/docs' - }, - { - title: 'APIs', - link: '/mosaic/apis' - }, - { - title: 'Start Your Project', - link: '/apps/app-registry' - } - ] - }, - { - title: 'Community Updates', - links: [ - { - title: 'Newsletters', - link: '/mosaic/newsletters' - }, - { - title: 'Blog', - link: ' http://www.example.com/blog' - }, - { - title: 'Podcasts', - link: '/mosaic/podcasts' - }, - { - title: 'Release Notes', - link: '/mosaic/release-notes' - }, - { - title: 'Operating Model', - link: ' http://www.example.com/release-notes' - } - ] - }, - { - title: 'Support', - links: [ - { - title: 'Contact', - link: '/mosaic/support' - }, - { - title: 'Contributing', - link: '/mosaic/support/contributing' - }, - { - title: 'Incidents & RCAs', - link: '/mosaic/support/rcas' - }, - { - title: 'Runbooks', - link: '/mosaic/support/runbooks' - }, - { - title: 'Site', - link: '/mosaic/site' - } - ] - } - ] -}; - -const invalidMenuHeader: SiteState['sharedConfig']['header'] = { - homeLink: '/mosaic', - logo: '/some/url', - title: 'Mosaic', - menu: [ - { - title: 'Products', - // @ts-ignore - href: '/mosaic/products' - } - ] -}; - -const state: Partial = { - sharedConfig: { header } -}; - -const inValidMenuState: Partial = { - sharedConfig: { header: invalidMenuHeader } -}; - -describe('GIVEN the `useAppHeader` hook', () => { - describe('WHEN there are no header props in the store', () => { - test('THEN the hook returns undefined', () => { - const { result } = renderHook(() => useAppHeader(), { - wrapper: createWrapper() - }); - expect(result.current).toBeUndefined(); - }); - }); - - describe('WHEN there are header props in the store', () => { - test('THEN the hook returns a homelink, logo and a title', () => { - const { result } = renderHook(() => useAppHeader(), { - wrapper: createWrapper({ ...state }) - }); - expect(result.current?.homeLink).toEqual(header.homeLink); - expect(result.current?.logo).toEqual(header.logo); - expect(result.current?.title).toEqual(header.title); - expect(result.current?.menu.length).toEqual(5); - }); - test('AND THEN the menu items have been assigned a type', () => { - const { result } = renderHook(() => useAppHeader(), { - wrapper: createWrapper({ ...state }) - }); - expect(result.current?.menu.length).toEqual(5); - expect(result.current?.menu[0].type).toEqual('link'); - expect(result.current?.menu[3].type).toEqual('menu'); - }); - - describe('AND WHEN invalid menu items are provided', () => { - let consoleError; - beforeAll(() => { - consoleError = jest.spyOn(console, 'error').mockImplementation(() => {}); - }); - afterAll(() => { - jest.restoreAllMocks(); - }); - test('THEN no menu items are returned', () => { - const { result } = renderHook(() => useAppHeader(), { - wrapper: createWrapper({ ...inValidMenuState }) - }); - expect(result.current?.menu.length).toEqual(0); - expect(consoleError).toHaveBeenCalledTimes(1); - }); - }); - }); -}); diff --git a/packages/store/src/__tests__/useBreadcrumbs.test.ts b/packages/store/src/__tests__/useBreadcrumbs.test.ts deleted file mode 100644 index 3de3a1bb9..000000000 --- a/packages/store/src/__tests__/useBreadcrumbs.test.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { renderHook } from '@testing-library/react'; - -import { createWrapper } from './test-utils/utils'; -import { type Breadcrumb, useBreadcrumbs } from '../useBreadcrumbs'; - -const breadcrumbs: Breadcrumb[] = [ - { label: 'Home', path: '/home', hidden: false, id: '1' }, - { label: 'Docs', path: '/docs', hidden: false, id: '2' }, - { label: 'Products', path: '/products', hidden: false, id: '3' } -]; - -describe('GIVEN the `useBreadcrumbs` hook', () => { - describe('WHEN there are NO breadcrumbs are in the store', () => { - test('THEN the hook returns an empty collection', () => { - const { result } = renderHook(() => useBreadcrumbs(), { - wrapper: createWrapper() - }); - expect(result.current.breadcrumbs).toEqual([]); - expect(result.current.enabled).toEqual(false); - }); - }); - - describe('WHEN there are breadcrumbs are in the store', () => { - test('THEN the hook returns those breadcrumbs', () => { - const { result } = renderHook(() => useBreadcrumbs(), { - wrapper: createWrapper({ breadcrumbs }) - }); - expect(result.current.breadcrumbs.length).toEqual(3); - expect(result.current.enabled).toEqual(true); - }); - }); - - describe('WHEN there are breadcrumbs are in the store', () => { - test('THEN enabled is false if there are not enough breadcrumbs', () => { - const { result } = renderHook(() => useBreadcrumbs(10), { - wrapper: createWrapper({ breadcrumbs }) - }); - expect(result.current.breadcrumbs.length).toEqual(3); - expect(result.current.enabled).toEqual(false); - }); - }); -}); diff --git a/packages/store/src/__tests__/useColorMode.test.ts b/packages/store/src/__tests__/useColorMode.test.ts index b002d740c..7c1a49025 100644 --- a/packages/store/src/__tests__/useColorMode.test.ts +++ b/packages/store/src/__tests__/useColorMode.test.ts @@ -1,5 +1,5 @@ -import { renderHook } from '@testing-library/react'; -import { createWrapper } from './test-utils/utils'; +import { act, renderHook } from '@testing-library/react'; +import { createWrapper } from './utils/utils'; import { useColorMode } from '../useColorMode'; describe('GIVEN the `useColorMode` hook', () => { @@ -7,6 +7,25 @@ describe('GIVEN the `useColorMode` hook', () => { const { result } = renderHook(() => useColorMode(), { wrapper: createWrapper() }); - expect(result.current).toEqual('light'); + expect(result.current.colorMode).toEqual('light'); + }); + + describe('AND WHEN the setColorMode action is used', () => { + test('THEN colorMode is updated', () => { + const storeWrapper = createWrapper(); + + const { result: useColorModeResult, rerender } = renderHook(() => useColorMode(), { + wrapper: storeWrapper + }); + + expect(useColorModeResult.current.colorMode).toEqual('light'); + const { setColorMode } = useColorModeResult.current; + + act(() => { + setColorMode('dark'); + rerender(); + }); + expect(useColorModeResult.current.colorMode).toEqual('dark'); + }); }); }); diff --git a/packages/store/src/__tests__/useFooter.test.ts b/packages/store/src/__tests__/useFooter.test.ts deleted file mode 100644 index 88c8ddd06..000000000 --- a/packages/store/src/__tests__/useFooter.test.ts +++ /dev/null @@ -1,64 +0,0 @@ -import { renderHook } from '@testing-library/react'; - -import { createWrapper } from './test-utils/utils'; -import { useFooter } from '../useFooter'; -import { SiteState } from '../store'; - -const footer: SiteState['sharedConfig']['footer'] = { - description: 'Sign up to stay on top of new developments and solutions.', - title: 'Subscribe to our Newsletter', - href: 'http://a.link.com', - label: 'Sign Up', - helpLinks: { - stackoverflowLabel: 'View our Stack Overflow', - stackoverflowUrl: 'https://stack.com', - symphonyLabel: 'Chat on Symphony', - symphonyUrl: 'symphony://a_stream' - } -}; - -const invalidMenuHeader: SiteState['sharedConfig']['header'] = { - homeLink: '/developer', - logo: '/some/url', - title: 'Digital Platform Developer', - menu: [ - { - title: 'Products', - // @ts-ignore - href: '/developer/products' - } - ] -}; - -const state: Partial = { - sharedConfig: { footer } -}; - -describe('GIVEN the `useFooter` hook', () => { - describe('WHEN there are no footer props in the store', () => { - test('THEN the hook returns undefined', () => { - const { result } = renderHook(() => useFooter(), { - wrapper: createWrapper() - }); - expect(result.current).toBeUndefined(); - }); - }); - - describe('WHEN there are footer props in the store', () => { - test('THEN the footer props are returned', () => { - const { result } = renderHook(() => useFooter(), { - wrapper: createWrapper({ ...state }) - }); - expect(result.current?.description).toEqual(footer.description); - expect(result.current?.title).toEqual(footer.title); - expect(result.current?.href).toEqual(footer.href); - expect(result.current?.label).toEqual(footer.label); - expect(result.current?.helpLinks.stackoverflowLabel).toEqual( - footer.helpLinks.stackoverflowLabel - ); - expect(result.current?.helpLinks.stackoverflowUrl).toEqual(footer.helpLinks.stackoverflowUrl); - expect(result.current?.helpLinks.symphonyLabel).toEqual(footer.helpLinks.symphonyLabel); - expect(result.current?.helpLinks.symphonyUrl).toEqual(footer.helpLinks.symphonyUrl); - }); - }); -}); diff --git a/packages/store/src/__tests__/useImageComponent.test.ts b/packages/store/src/__tests__/useImageComponent.test.ts new file mode 100644 index 000000000..abb4e4c49 --- /dev/null +++ b/packages/store/src/__tests__/useImageComponent.test.ts @@ -0,0 +1,26 @@ +import { renderHook } from '@testing-library/react'; + +import { createWrapper } from './utils/utils'; +import { useImageComponent } from '../useImageComponent'; + +describe('GIVEN the `useImageComponent` hook', () => { + describe('WHEN a user does **not** provide an ImageComponent', () => { + test('THEN the img element is returned', () => { + const { result } = renderHook(() => useImageComponent(), { + wrapper: createWrapper() + }); + expect(result.current).toEqual('img'); + }); + }); + + describe('WHEN a user does provide a ImageComponent', () => { + test('THEN the hook returns the layout', () => { + const myImageComponent = () => 'hi'; + + const { result } = renderHook(() => useImageComponent(), { + wrapper: createWrapper({ ImageComponent: myImageComponent }) + }); + expect(result.current).toEqual(myImageComponent); + }); + }); +}); diff --git a/packages/store/src/__tests__/useLayout.test.ts b/packages/store/src/__tests__/useLayout.test.ts deleted file mode 100644 index 770ec7d30..000000000 --- a/packages/store/src/__tests__/useLayout.test.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { renderHook } from '@testing-library/react'; - -import { createWrapper } from './test-utils/utils'; -import { useLayout } from '../useLayout'; - -describe('GIVEN the `useLayout` hook', () => { - describe('WHEN there is no layout in the store', () => { - test('THEN the hook returns undefined', () => { - const { result } = renderHook(() => useLayout(), { - wrapper: createWrapper() - }); - expect(result.current.layout).toBeUndefined(); - }); - }); - - describe('WHEN there is a layout in the store', () => { - test('THEN the hook returns the layout', () => { - const { result } = renderHook(() => useLayout(), { - wrapper: createWrapper({ layout: 'LayoutName' }) - }); - expect(result.current.layout).toEqual('LayoutName'); - }); - }); -}); diff --git a/packages/store/src/__tests__/useLinkComponent.test.ts b/packages/store/src/__tests__/useLinkComponent.test.ts new file mode 100644 index 000000000..52b785cb1 --- /dev/null +++ b/packages/store/src/__tests__/useLinkComponent.test.ts @@ -0,0 +1,26 @@ +import { renderHook } from '@testing-library/react'; + +import { createWrapper } from './utils/utils'; +import { useLinkComponent } from '../useLinkComponent'; + +describe('GIVEN the `useLinkComponent` hook', () => { + describe('WHEN a user does **not** provide a LinkComponent', () => { + test('THEN the anchor element is returned', () => { + const { result } = renderHook(() => useLinkComponent(), { + wrapper: createWrapper() + }); + expect(result.current).toEqual('a'); + }); + }); + + describe('WHEN a user does provide a LinkComponent', () => { + test('THEN the hook returns the layout', () => { + const myLinkComponent = () => 'hi'; + + const { result } = renderHook(() => useLinkComponent(), { + wrapper: createWrapper({ LinkComponent: myLinkComponent }) + }); + expect(result.current).toEqual(myLinkComponent); + }); + }); +}); diff --git a/packages/store/src/__tests__/useMeta.test.ts b/packages/store/src/__tests__/useMeta.test.ts deleted file mode 100644 index bd923eb51..000000000 --- a/packages/store/src/__tests__/useMeta.test.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { renderHook } from '@testing-library/react'; - -import { createWrapper } from './test-utils/utils'; -import { useMeta } from '../useMeta'; -import { Breadcrumb } from '../types'; - -const breadcrumbs: Breadcrumb[] = [ - { label: 'Home', path: '/home', hidden: false, id: '1' }, - { label: 'Docs', path: '/docs', hidden: false, id: '2' }, - { label: 'Products', path: '/products', hidden: false, id: '3' } -]; - -describe('GIVEN the `useMeta` hook', () => { - describe('WHEN there is no metadata in the store', () => { - test('THEN the hook returns no metadata', () => { - const { result } = renderHook(() => useMeta(), { - wrapper: createWrapper() - }); - expect(result.current.meta.breadcrumbs).toEqual([]); - expect(result.current.meta.description).toBeUndefined(); - expect(result.current.meta.title).toBeUndefined(); - }); - }); - - describe('WHEN there is metadata in the store', () => { - test('THEN the hook returns the metadata', () => { - const { result } = renderHook(() => useMeta(), { - wrapper: createWrapper({ breadcrumbs, title: 'A Title', description: 'A Description' }) - }); - expect(result.current.meta.breadcrumbs).toEqual(breadcrumbs); - expect(result.current.meta.title).toEqual('A Title'); - expect(result.current.meta.description).toEqual('A Description'); - }); - }); -}); diff --git a/packages/store/src/__tests__/useRoute.test.ts b/packages/store/src/__tests__/useRoute.test.ts deleted file mode 100644 index a8b47d358..000000000 --- a/packages/store/src/__tests__/useRoute.test.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { renderHook } from '@testing-library/react'; - -import { createWrapper } from './test-utils/utils'; -import { useRoute } from '../useRoute'; - -describe('GIVEN the `useRoute` hook', () => { - describe('WHEN there is no route in the store', () => { - test('THEN the hook returns no route', () => { - const { result } = renderHook(() => useRoute(), { - wrapper: createWrapper() - }); - expect(result.current.route).toBeUndefined(); - }); - }); - - describe('WHEN there is a route in the store', () => { - test('THEN the hook returns the route', () => { - const { result } = renderHook(() => useRoute(), { - wrapper: createWrapper({ route: 'a/route/to/a/page' }) - }); - expect(result.current.route).toEqual('a/route/to/a/page'); - }); - }); -}); diff --git a/packages/store/src/__tests__/useSearchIndex.test.ts b/packages/store/src/__tests__/useSearchIndex.test.ts deleted file mode 100644 index 1d91d86a9..000000000 --- a/packages/store/src/__tests__/useSearchIndex.test.ts +++ /dev/null @@ -1,86 +0,0 @@ -import { renderHook } from '@testing-library/react'; - -import { createWrapper } from './test-utils/utils'; -import { useSearchIndex } from '../useSearchIndex'; -import { SiteState } from '../store'; - -const index: SiteState['searchIndex'] = [ - { - title: 'Test item title', - content: ['test item content sentence 1', 'test item content sentence 2'], - route: 'test/page/route' - }, - { - title: 'Second test item title', - content: [ - 'Laborum deserunt laboris in quis dolor est laboris incididunt exercitation sunt voluptate.', - 'Nisi amet cupidatat ut laborum Lorem eu qui fugiat ad.' - ], - route: 'second/test/page/route' - } -]; - -const config: SiteState['searchConfig'] = { - includeScore: false, - includeMatches: true, - maxPatternLength: 240, - ignoreLocation: true, - threshold: 0.3, - keys: ['title', 'content'] -}; - -const state: Partial = { - searchIndex: index, - searchConfig: config -}; - -describe('GIVEN the useSearchIndex hook', () => { - describe('WHEN there is no search index in the store', () => { - test('THEN searchEnabled is set to false', () => { - const { result } = renderHook(() => useSearchIndex(), { - wrapper: createWrapper() - }); - expect(result.current.searchEnabled).toBe(false); - }); - test('AND searchIndex is set to an empty array', () => { - const { result } = renderHook(() => useSearchIndex(), { - wrapper: createWrapper() - }); - expect(Array.isArray(result.current.searchIndex)).toBe(true); - expect(result.current.searchIndex.length).toBe(0); - }); - test('AND searchConfig is set to an empty object', () => { - const { result } = renderHook(() => useSearchIndex(), { - wrapper: createWrapper() - }); - expect(typeof result.current.searchConfig).toBe('object'); - expect(Object.keys(result.current.searchConfig).length).toBe(0); - }); - }); - - describe('WHEN there is a search index in the store', () => { - test('THEN searchEnabled is set to true', () => { - const { result } = renderHook(() => useSearchIndex(), { - wrapper: createWrapper({ ...state }) - }); - expect(result.current.searchEnabled).toBe(true); - }); - test('AND searchIndex contains the index', () => { - const { result } = renderHook(() => useSearchIndex(), { - wrapper: createWrapper({ ...state }) - }); - expect(Array.isArray(result.current.searchIndex)).toBe(true); - expect(result.current.searchIndex.length).toBe(index.length); - }); - test('AND searchIndex contains the search config', () => { - const { result } = renderHook(() => useSearchIndex(), { - wrapper: createWrapper({ ...state }) - }); - expect(typeof result.current.searchConfig).toBe('object'); - expect(Object.keys(result.current.searchConfig).length).toBe(Object.keys(config).length); - expect(result.current.searchConfig.ignoreLocation).toBe(true); - expect(result.current.searchConfig.maxPatternLength).toBe(240); - expect(result.current.searchConfig.keys).toEqual(['title', 'content']); - }); - }); -}); diff --git a/packages/store/src/__tests__/useStore.test.ts b/packages/store/src/__tests__/useStore.test.ts new file mode 100644 index 000000000..ef347362f --- /dev/null +++ b/packages/store/src/__tests__/useStore.test.ts @@ -0,0 +1,28 @@ +import { renderHook } from '@testing-library/react'; + +import { createWrapper } from './utils/utils'; +import { useStore } from '../useStore'; + +const consoleErrorMock = jest.spyOn(console, 'error').mockImplementation(); + +describe('GIVEN the `useStore` hook', () => { + describe('WHEN a selector is provided', () => { + test('THEN the hook applies the selector and returns the selected state', () => { + const { result } = renderHook(() => useStore(state => state.colorMode), { + wrapper: createWrapper({ colorMode: 'dark' }) + }); + expect(result.current).toEqual('dark'); + }); + }); + + describe('WHEN rendered outside of the StoreContext', () => { + afterAll(() => { + consoleErrorMock.mockRestore(); + }); + test('THEN the hook throws an error', () => { + expect(() => renderHook(() => useStore(state => state.colorMode))).toThrowError( + 'Missing StoreProvider in the tree' + ); + }); + }); +}); diff --git a/packages/store/src/__tests__/useStoreActions.test.ts b/packages/store/src/__tests__/useStoreActions.test.ts deleted file mode 100644 index 90b7e4f86..000000000 --- a/packages/store/src/__tests__/useStoreActions.test.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { renderHook, act } from '@testing-library/react'; -import { createWrapper } from './test-utils/utils'; -import { useStoreActions } from '../useStoreActions'; -import { useColorMode } from '../useColorMode'; - -describe('GIVEN the `useStoreActions` hook', () => { - test('THEN there is a setColorMode action', () => { - const { result } = renderHook(() => useStoreActions(), { - wrapper: createWrapper() - }); - expect(result.current.setColorMode).not.toBeUndefined(); - }); - - describe('AND WHEN the setColorMode action is used', () => { - test('THEN colorMode is updated', () => { - const { result: useStoreActionsResult } = renderHook(() => useStoreActions(), { - wrapper: createWrapper() - }); - - const { result: useColorModeResult, rerender } = renderHook(() => useColorMode(), { - wrapper: createWrapper() - }); - - expect(useColorModeResult.current).toEqual('light'); - - const { setColorMode } = useStoreActionsResult.current; - - act(() => { - setColorMode('dark'); - rerender(); - }); - expect(useColorModeResult.current).toEqual('dark'); - }); - }); -}); diff --git a/packages/store/src/__tests__/useTableOfContents.test.ts b/packages/store/src/__tests__/useTableOfContents.test.ts deleted file mode 100644 index 59508f0bf..000000000 --- a/packages/store/src/__tests__/useTableOfContents.test.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { renderHook } from '@testing-library/react'; - -import { createWrapper } from './test-utils/utils'; -import { useTableOfContents } from '../useTableOfContents'; -import type { TableOfContentsItem } from '../types/tableOfContents'; - -const tableOfContents: TableOfContentsItem[] = [ - { level: 2, id: 'what-is-analytics', text: 'What is Analytics' }, - { level: 2, id: 'what-is-our-goal', text: 'What is our goal?' }, - { level: 2, id: 'benefits-of-using-our-service', text: 'Benefits of using our Service' }, - { level: 2, id: 'useful-go-links', text: 'Useful Go links' } -]; - -describe('GIVEN the `useTableOfContents` hook', () => { - describe('WHEN there is NO table of contents in the store', () => { - test('THEN the hook returns an empty collection', () => { - const { result } = renderHook(() => useTableOfContents(), { - wrapper: createWrapper() - }); - expect(result.current.tableOfContents).toEqual([]); - }); - }); - - describe('WHEN table of contents is in the store', () => { - test('THEN the hook returns the tabel of contents', () => { - const { result } = renderHook(() => useTableOfContents(), { - wrapper: createWrapper({ tableOfContents }) - }); - expect(result.current.tableOfContents.length).toEqual(4); - }); - }); -}); diff --git a/packages/store/src/__tests__/utils/utils.tsx b/packages/store/src/__tests__/utils/utils.tsx new file mode 100644 index 000000000..e6ef1b665 --- /dev/null +++ b/packages/store/src/__tests__/utils/utils.tsx @@ -0,0 +1,15 @@ +import React from 'react'; +import { render } from '@testing-library/react'; + +import { StoreProvider } from '../../StoreProvider'; +import type { SiteState } from '../../store'; + +export function renderWithStore(ui: React.ReactElement) { + return render({ui}); +} + +export function createWrapper(state?: Partial) { + return ({ children }: { children?: React.ReactNode }) => ( + {children} + ); +} diff --git a/packages/store/src/index.ts b/packages/store/src/index.ts index 5b6326dcb..0270bd7d7 100644 --- a/packages/store/src/index.ts +++ b/packages/store/src/index.ts @@ -1,14 +1,9 @@ +'use client'; + +export * from './StoreProvider'; +export * from './StoreContext'; export * from './store'; -export * from './useAppHeader'; -export * from './useBreadcrumbs'; +export * from './useStore'; export * from './useColorMode'; -export * from './useLayout'; -export * from './useMeta'; -export * from './useNavigation'; -export * from './useRoute'; -export * from './useSearchIndex'; -export * from './useSidebar'; -export * from './useTableOfContents'; -export * from './useFooter'; -export * from './useStoreActions'; -export * from './types'; +export * from './useLinkComponent'; +export * from './useImageComponent'; diff --git a/packages/store/src/store.ts b/packages/store/src/store.ts index 950728fb6..4053b0f45 100644 --- a/packages/store/src/store.ts +++ b/packages/store/src/store.ts @@ -1,140 +1,47 @@ -import { useLayoutEffect, createContext, useContext } from 'react'; -import { createStore, StoreApi, useStore as useZustandStore } from 'zustand'; +import type { ElementType } from 'react'; +import { createStore as createZustandStore } from 'zustand'; import { devtools, persist } from 'zustand/middleware'; -import type { BreadcrumbsSlice } from './types/breadcrumbs'; -import type { SearchIndexSlice } from './types/searchIndex'; -import type { SharedConfigSlice } from './types/sharedConfig'; -import type { LayoutSlice } from './types/layout'; -import type { NavigationSlice } from './types/navigation'; -import type { SidebarSlice } from './types/sidebar'; -import type { TableOfContentsSlice } from './types/tableOfContents'; -import type { ColorMode } from './types/colorMode'; +import type { ColorMode } from './useColorMode'; -let store: StoreApi; - -export type SiteState = BreadcrumbsSlice & - LayoutSlice & - SidebarSlice & - TableOfContentsSlice & - NavigationSlice & - SearchIndexSlice & - SharedConfigSlice & { - /** Page metadata description, used by search */ - description?: string; - /** Page route */ - route?: string; - /** Page title */ - title?: string; - colorMode: ColorMode; - actions: { - setColorMode: (colorMode: ColorMode) => void; - }; +export type StoreState = { + colorMode: ColorMode; + ImageComponent: ElementType; + LinkComponent: ElementType; + actions: { + setColorMode: (colorMode: ColorMode) => void; }; +}; -type PeristedStoreState = Pick; -type DefaultSiteState = Omit; +type PeristedStoreState = Pick; +export type DefaultStoreState = Omit; +export type InitialStoreState = Partial; -function getDefaultInitialState(): DefaultSiteState { +function getDefaultInitialState(initialState?: InitialStoreState): DefaultStoreState { return { - breadcrumbs: [], - sidebarData: [], - tableOfContents: [], - navigation: {}, - searchIndex: [], - searchConfig: {}, - sharedConfig: {}, - description: undefined, - layout: undefined, - route: undefined, - title: undefined, - colorMode: 'light' + colorMode: initialState?.colorMode || 'light', + ImageComponent: initialState?.ImageComponent || 'img', + LinkComponent: initialState?.LinkComponent || 'a' }; } -const StoreContext = createContext(undefined); -const StoreProvider = StoreContext.Provider; - const storeMiddlewares = stateCreatorFn => devtools( - persist(stateCreatorFn, { + persist(stateCreatorFn, { name: 'mosaic-theme-pref', - partialize: (state: SiteState) => ({ + skipHydration: true, + partialize: (state: StoreState) => ({ colorMode: state.colorMode }) }) ); -const initializeStore = (preloadedState: Partial = {}) => { - const mosaicStore = createStore( +export const createStore = (initialState?: InitialStoreState) => + createZustandStore( storeMiddlewares(set => ({ - ...getDefaultInitialState(), - ...preloadedState, + ...getDefaultInitialState(initialState), actions: { setColorMode: (colorMode: ColorMode) => set({ colorMode }) } })) ); - return mosaicStore; -}; - -function useCreateStore(serverInitialState: Partial, isSSR = false) { - // Server side code: For SSR & SSG, always use a new store. - if (typeof window === 'undefined' || isSSR) { - return () => initializeStore(serverInitialState); - } - // End of server side code - - // Client side code: - // Next.js always re-uses same store regardless of whether page is a SSR or SSG or CSR type. - const isReusingStore = Boolean(store); - store = store ?? initializeStore(serverInitialState); - - // When next.js re-renders _app while re-using an older store, then replace current state with - // the new state (in the next render cycle). - // (Why next render cycle? Because react cannot re-render while a render is already in progress. - // i.e. we cannot do a setState() as that will initiate a re-render) - // - // eslint complaining "React Hooks must be called in the exact same order in every component render" - // is ignorable as this code runs in same order in a given environment (i.e. client or server) - useLayoutEffect(() => { - // serverInitialState is undefined for CSR pages. It is up to you if you want to reset - // states on CSR page navigation or not. I have chosen not to, but if you choose to, - // then add `serverInitialState = getDefaultInitialState()` here. - if (serverInitialState && isReusingStore) { - // recombine the page props with the initial state so that if page props are missing something then the default gets applied - const pageState = { ...getDefaultInitialState(), ...serverInitialState }; - const { colorMode, actions, ...restStoreState } = store.getState(); - - store.setState( - { - // re-use functions from existing store - ...restStoreState, - // but reset all other properties. - ...pageState, - colorMode, - actions - }, - true // replace states, rather than shallow merging - ); - } - }); - - return () => store; -} - -/** - * Hook providing access to state stored in the site store - */ -function useStore( - selector: (state: SiteState) => T, - equalityFn?: (left: T, right: T) => boolean -): T { - const storeFromContext = useContext(StoreContext); - if (!storeFromContext) { - throw new Error('Missing StoreProvider in the tree'); - } - return useZustandStore(storeFromContext, selector, equalityFn); -} - -export { useCreateStore, StoreProvider, useStore, initializeStore }; diff --git a/packages/store/src/types/colorMode.ts b/packages/store/src/types/colorMode.ts deleted file mode 100644 index 3a5ba7146..000000000 --- a/packages/store/src/types/colorMode.ts +++ /dev/null @@ -1,4 +0,0 @@ -export const lightMode = 'light'; -export const darkMode = 'dark'; - -export type ColorMode = typeof lightMode | typeof darkMode; diff --git a/packages/store/src/types/index.ts b/packages/store/src/types/index.ts deleted file mode 100644 index 4fe2e9576..000000000 --- a/packages/store/src/types/index.ts +++ /dev/null @@ -1,12 +0,0 @@ -export * from './appHeader'; -export * from './breadcrumbs'; -export * from './footer'; -export * from './helpLinks'; -export * from './layout'; -export * from './meta'; -export * from './navigation'; -export * from './route'; -export * from './searchIndex'; -export * from './sharedConfig'; -export * from './sidebar'; -export * from './tableOfContents'; diff --git a/packages/store/src/types/layout.ts b/packages/store/src/types/layout.ts deleted file mode 100644 index 93b220e0e..000000000 --- a/packages/store/src/types/layout.ts +++ /dev/null @@ -1,7 +0,0 @@ -/** - * [[`LayoutSlice`]] specifies the page's anatomy - */ -export type LayoutSlice = { - /** Layout name that will define the page's anatomy */ - layout?: string; -}; diff --git a/packages/store/src/types/meta.ts b/packages/store/src/types/meta.ts deleted file mode 100644 index 28737478f..000000000 --- a/packages/store/src/types/meta.ts +++ /dev/null @@ -1,13 +0,0 @@ -import type { Breadcrumb } from './breadcrumbs'; - -/** - * [[`MetaSlice`]] specifies the page's head metadata - */ -export type MetaSlice = { - /** Page description */ - description?: string; - /** Page breadcrumbs */ - breadcrumbs?: Breadcrumb[]; - /** Page title */ - title?: string; -}; diff --git a/packages/store/src/types/route.ts b/packages/store/src/types/route.ts deleted file mode 100644 index 494db5362..000000000 --- a/packages/store/src/types/route.ts +++ /dev/null @@ -1,7 +0,0 @@ -/** - * [[`RouteSlice`]] specifies the page's route - */ -export type RouteSlice = { - /** Current page route */ - route?: string; -}; diff --git a/packages/store/src/useAppHeader.ts b/packages/store/src/useAppHeader.ts deleted file mode 100644 index 05479025a..000000000 --- a/packages/store/src/useAppHeader.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { useStore } from './store'; -import { MenuItemType } from './types'; -import type { - AppHeaderSlice, - AppHeaderMenuLinkItem, - AppHeaderMenuLinksItem, - MenuLinkItem, - MenuLinksItem -} from './types'; - -function isMenu(menu: MenuLinkItem | MenuLinksItem): menu is MenuLinksItem { - return (menu as MenuLinksItem).links !== undefined; -} -function isMenuLink(menu: MenuLinkItem | MenuLinksItem): menu is MenuLinkItem { - return (menu as MenuLinkItem).link !== undefined; -} - -export type AppHeaderMenu = Array; - -export interface AppHeader extends Omit { - menu: AppHeaderMenu; -} - -export function useAppHeader(): AppHeader | undefined { - const appHeader = useStore(state => state.sharedConfig?.header); - if (!appHeader) { - return undefined; - } - const typedMenu: AppHeaderMenu = appHeader.menu.reduce((result, menu) => { - if (isMenu(menu)) { - const linksItem: AppHeaderMenuLinksItem = { ...menu, type: MenuItemType.MENU }; - return [...result, linksItem]; - } - if (isMenuLink(menu)) { - const linkItem: AppHeaderMenuLinkItem = { ...menu, type: MenuItemType.LINK }; - return [...result, linkItem]; - } - console.error('Unknown menu type passed to useAppHeader, ignoring', menu); - return result; - }, []); - - return { - ...appHeader, - menu: typedMenu - }; -} diff --git a/packages/store/src/useBreadcrumbs.ts b/packages/store/src/useBreadcrumbs.ts deleted file mode 100644 index d402cf37a..000000000 --- a/packages/store/src/useBreadcrumbs.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { useStore } from './store'; - -export type { Breadcrumb } from './types'; - -export function useBreadcrumbs(minCrumbs = 1) { - const breadcrumbs = useStore(state => state.breadcrumbs); - return { - breadcrumbs: breadcrumbs || [], - enabled: breadcrumbs?.length > minCrumbs - }; -} diff --git a/packages/store/src/useColorMode.ts b/packages/store/src/useColorMode.ts index 66c34926f..bcf0f8420 100644 --- a/packages/store/src/useColorMode.ts +++ b/packages/store/src/useColorMode.ts @@ -1,8 +1,15 @@ -import { useStore } from './store'; +import { useStore } from './useStore'; -import { ColorMode } from './types/colorMode'; +export const lightMode = 'light'; +export const darkMode = 'dark'; -export function useColorMode(): ColorMode { - const colorMode = useStore(state => state.colorMode); - return colorMode; +export type ColorMode = typeof lightMode | typeof darkMode; +export type SetColorMode = (colorMode: ColorMode) => void; + +export function useColorMode(): { colorMode: ColorMode; setColorMode: SetColorMode } { + const result = useStore(state => ({ + colorMode: state.colorMode, + setColorMode: state.actions.setColorMode + })); + return result; } diff --git a/packages/store/src/useFooter.ts b/packages/store/src/useFooter.ts deleted file mode 100644 index da4e36fbc..000000000 --- a/packages/store/src/useFooter.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { useStore } from './store'; -import type { FooterSlice } from './types'; - -type Footer = FooterSlice | undefined; - -export function useFooter(): Footer { - const footer = useStore(state => state.sharedConfig?.footer); - - return footer; -} diff --git a/packages/store/src/useImageComponent.ts b/packages/store/src/useImageComponent.ts new file mode 100644 index 000000000..96582b7be --- /dev/null +++ b/packages/store/src/useImageComponent.ts @@ -0,0 +1,7 @@ +import { ElementType } from 'react'; +import { useStore } from './useStore'; + +export function useImageComponent(): ElementType { + const component = useStore(state => state.ImageComponent); + return component; +} diff --git a/packages/store/src/useLayout.ts b/packages/store/src/useLayout.ts deleted file mode 100644 index 5c284cd85..000000000 --- a/packages/store/src/useLayout.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { useStore } from './store'; -import type { LayoutSlice } from './types'; - -type Layout = LayoutSlice; - -export function useLayout(): Layout { - const layout = useStore(state => state.layout); - return { layout }; -} diff --git a/packages/store/src/useLinkComponent.ts b/packages/store/src/useLinkComponent.ts new file mode 100644 index 000000000..b1e234a91 --- /dev/null +++ b/packages/store/src/useLinkComponent.ts @@ -0,0 +1,7 @@ +import { ElementType } from 'react'; +import { useStore } from './useStore'; + +export function useLinkComponent(): ElementType { + const component = useStore(state => state.LinkComponent); + return component; +} diff --git a/packages/store/src/useMeta.ts b/packages/store/src/useMeta.ts deleted file mode 100644 index 5b3746f04..000000000 --- a/packages/store/src/useMeta.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { useStore } from './store'; -import type { MetaSlice } from './types'; - -export type Meta = { - meta: MetaSlice; -}; - -export function useMeta(): Meta { - const meta = useStore(state => ({ - description: state.description, - breadcrumbs: state.breadcrumbs, - title: state.title - })); - return { - meta - }; -} diff --git a/packages/store/src/useNavigation.ts b/packages/store/src/useNavigation.ts deleted file mode 100644 index cd54fdac2..000000000 --- a/packages/store/src/useNavigation.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { useStore } from './store'; -import type { Navigation } from './types'; - -export function useNavigation(): Navigation { - const { next, prev } = useStore(state => state.navigation) || {}; - return { - next, - prev - }; -} diff --git a/packages/store/src/useRoute.ts b/packages/store/src/useRoute.ts deleted file mode 100644 index d67286e50..000000000 --- a/packages/store/src/useRoute.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { useStore } from './store'; -import type { RouteSlice } from './types'; - -export function useRoute(): RouteSlice { - const route = useStore(state => state.route); - return { - route - }; -} diff --git a/packages/store/src/useSearchIndex.ts b/packages/store/src/useSearchIndex.ts deleted file mode 100644 index 1f81fc9a3..000000000 --- a/packages/store/src/useSearchIndex.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { useStore } from './store'; - -export type { SearchIndexSlice } from './types'; - -export function useSearchIndex() { - const searchIndex = useStore(state => state.searchIndex); - const searchConfig = useStore(state => state.searchConfig); - - const searchEnabled = - searchConfig !== undefined && searchIndex !== undefined && searchIndex.length > 0; - - return { - searchEnabled, - searchIndex: searchEnabled ? searchIndex : [], - searchConfig: searchEnabled ? searchConfig : {} - }; -} diff --git a/packages/store/src/useSidebar.ts b/packages/store/src/useSidebar.ts deleted file mode 100644 index 07280f513..000000000 --- a/packages/store/src/useSidebar.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { useStore } from './store'; -import { useBreadcrumbs } from './useBreadcrumbs'; -import { useRoute } from './useRoute'; -import type { Breadcrumb } from './types'; - -export function useSidebar() { - const menu = useStore(state => state.sidebarData) || []; - const { route } = useRoute(); - const { breadcrumbs } = useBreadcrumbs(); - return { - menu, - selectedNodeId: route, - expandedNodeIds: getIds(breadcrumbs) - }; -} -function getIds(breadcrumbs: Breadcrumb[]) { - return new Set(breadcrumbs.map(({ id }) => id.substr(0, id.lastIndexOf('.')))); -} diff --git a/packages/store/src/useStore.ts b/packages/store/src/useStore.ts new file mode 100644 index 000000000..4549280dd --- /dev/null +++ b/packages/store/src/useStore.ts @@ -0,0 +1,16 @@ +import { useContext } from 'react'; +import { useStore as useZustandStore } from 'zustand'; + +import { StoreState } from './store'; +import { StoreContext } from './StoreContext'; + +/** + * Hook providing access to state stored in the site store + */ +export function useStore(selector: (state: StoreState) => T): T { + const storeFromContext = useContext(StoreContext); + if (!storeFromContext) { + throw new Error('Missing StoreProvider in the tree'); + } + return useZustandStore(storeFromContext, selector); +} diff --git a/packages/store/src/useStoreActions.ts b/packages/store/src/useStoreActions.ts deleted file mode 100644 index 0230d6c0b..000000000 --- a/packages/store/src/useStoreActions.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { useStore } from './store'; -export const useStoreActions = () => useStore(state => state.actions); diff --git a/packages/store/src/useTableOfContents.ts b/packages/store/src/useTableOfContents.ts deleted file mode 100644 index 959da2c01..000000000 --- a/packages/store/src/useTableOfContents.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { useStore } from './store'; - -export function useTableOfContents() { - const tableOfContents = useStore(state => state.tableOfContents) || []; - return { - tableOfContents - }; -} diff --git a/packages/theme/package.json b/packages/theme/package.json index d6e55832a..9b9d708e6 100644 --- a/packages/theme/package.json +++ b/packages/theme/package.json @@ -28,28 +28,28 @@ ], "scripts": { "build": "npm-run-all --parallel build:*", - "build:bundle": "node ./scripts/bundle.js", + "build:bundle": "node ./scripts/bundle.mjs", "build:types": "tsc", "clean": "npx del-cli 'dist/**' && find . -type d -empty -delete", "lint": "eslint --ignore-pattern \"**/__tests__/**\"", - "dev": "node ./scripts/bundle.js watch" + "dev": "node ./scripts/bundle.mjs watch" }, "devDependencies": { "@vanilla-extract/esbuild-plugin": "^2.0.0", - "esbuild": "0.14.35", - "typescript": "^4.8.3", + "esbuild": "0.19.11", + "typescript": "^5.2.2", "fast-glob": "^3.2.7" }, "dependencies": { - "@salt-ds/icons": "^1.7.0", - "@vanilla-extract/css": "^1.6.0", - "@vanilla-extract/css-utils": "^0.1.1", - "@vanilla-extract/sprinkles": "^1.3.0", - "@vanilla-extract/recipes": "^0.2.1", + "@salt-ds/icons": "^1.9.1", + "@vanilla-extract/css": "^1.14.0", + "@vanilla-extract/css-utils": "^0.1.3", + "@vanilla-extract/sprinkles": "^1.6.1", + "@vanilla-extract/recipes": "^0.5.1", "fast-deep-equal": "^3.1.3" }, "peerDependencies": { - "@types/react": "^18.0.26", + "@types/react": "^18.2.46", "react": "^18.2.0", "react-dom": "^18.2.0" } diff --git a/packages/theme/scripts/bundle.js b/packages/theme/scripts/bundle.js deleted file mode 100644 index 2b1ec406a..000000000 --- a/packages/theme/scripts/bundle.js +++ /dev/null @@ -1,80 +0,0 @@ -const path = require('path'); -const esbuild = require('esbuild'); -const { vanillaExtractPlugin } = require('@vanilla-extract/esbuild-plugin'); -const glob = require('fast-glob'); - -const publicImageResolver = require('./publicImageResolver'); -const saltIconNames = require('./saltIconNames'); - -const args = process.argv.slice(2); -const watchEnabled = args[0] === 'watch'; -const packageName = process.env.npm_package_name; - -const watchConfig = watchEnabled - ? { - onRebuild(error, result) { - if (error) console.error(`watch build failed for ${packageName}:`, error); - else console.log(`watch build succeeded for ${packageName}:`, result); - } - } - : false; - -const entries = glob.sync(['src/index.ts', 'src/**/index.ts'], { - dot: true -}); - -esbuild - .build({ - entryPoints: glob.sync(['../../node_modules/@salt-ds/icons/dist-es/components/*.js']), - bundle: false, - outdir: 'dist', - plugins: [saltIconNames] - }) - .catch(e => { - if (e.errors && e.errors.length > 0) { - console.group(`!!!!!!! ${packageName} build errors !!!!!!!`); - console.error(e.errors); - console.groupEnd(); - } - - if (e.warnings && e.warnings.length > 0) { - console.group(`!!!!!!! ${packageName} build warnings !!!!!!!`); - console.error(e.warnings); - console.groupEnd(); - } - return process.exit(1); - }); - -esbuild - .build({ - entryPoints: entries, - loader: { - '.jpg': 'dataurl', - '.png': 'dataurl', - '.svg': 'text' - }, - outdir: 'dist', - bundle: true, - splitting: true, - sourcemap: false, - minify: true, - format: 'esm', - target: ['esnext'], - external: ['react', 'react-dom'], - plugins: [publicImageResolver, vanillaExtractPlugin()], - watch: watchConfig - }) - .catch(e => { - if (e.errors && e.errors.length > 0) { - console.group(`!!!!!!! ${packageName} build errors !!!!!!!`); - console.error(e.errors); - console.groupEnd(); - } - - if (e.warnings && e.warnings.length > 0) { - console.group(`!!!!!!! ${packageName} build warnings !!!!!!!`); - console.error(e.warnings); - console.groupEnd(); - } - return process.exit(1); - }); diff --git a/packages/theme/scripts/bundle.mjs b/packages/theme/scripts/bundle.mjs new file mode 100644 index 000000000..994ea17e4 --- /dev/null +++ b/packages/theme/scripts/bundle.mjs @@ -0,0 +1,73 @@ +import glob from 'fast-glob'; +import esbuild from 'esbuild'; +import { nodeExternalsPlugin } from 'esbuild-node-externals'; +import { vanillaExtractPlugin } from '@vanilla-extract/esbuild-plugin'; +import publicImageResolverPlugin from './publicImageResolver.js'; + +const args = process.argv.slice(2); +const watchEnabled = args[0] === 'watch'; +const packageName = process.env.npm_package_name; + +const buildEndPlugin = () => ({ + name: 'on-end', + setup(build) { + build.onEnd(({ errors = [] }) => { + if (errors.length) { + console.error(`🛠️ - failed for: ${packageName} ❌`, errors); + } else if (watchEnabled) { + console.log(`🛠️ - succeeded for: ${packageName} ✅, 👀 for changes...`); + } else { + console.log(`🛠️ - succeeded for: ${packageName} ✅`); + } + }); + } +}); + +const entries = glob.sync(['src/index.ts', 'src/baseline/index.ts', 'src/salt/index.ts'], { + dot: true +}); + +const esbuildConfig = { + entryPoints: entries, + loader: { + '.jpg': 'dataurl', + '.png': 'dataurl', + '.svg': 'text' + }, + outdir: './dist', + bundle: true, + sourcemap: true, + splitting: true, + minify: true, + format: 'esm', + target: ['es2022'], + plugins: [ + nodeExternalsPlugin(), + vanillaExtractPlugin({}), + buildEndPlugin(), + publicImageResolverPlugin + ], + external: ['react', 'react-dom', 'next/*', '@jpmorganchase/mosaic-*'] +}; + +try { + if (watchEnabled) { + const context = await esbuild.context(esbuildConfig); + await context.watch(); + } else { + await esbuild.build(esbuildConfig); + } +} catch (e) { + if (e.errors && e.errors.length > 0) { + console.group(`!!!!!!! ${packageName} build errors !!!!!!!`); + console.error(e.errors); + console.groupEnd(); + } + + if (e.warnings && e.warnings.length > 0) { + console.group(`!!!!!!! ${packageName} build warnings !!!!!!!`); + console.error(e.warnings); + console.groupEnd(); + } + process.exit(1); +} diff --git a/packages/theme/src/baseline/baseline.css.ts b/packages/theme/src/baseline/baseline.css.ts index 70ca00d05..3c95e9404 100644 --- a/packages/theme/src/baseline/baseline.css.ts +++ b/packages/theme/src/baseline/baseline.css.ts @@ -1,5 +1,5 @@ import { globalStyle } from '@vanilla-extract/css'; -import { ssrClassName } from '../index'; +import { config } from '../config'; globalStyle('html, body', { fontFamily: 'Open Sans', @@ -16,7 +16,7 @@ globalStyle('*', { boxSizing: 'border-box' }); -globalStyle('p,h1, h2, h3, h4, h5, h6, ul, ol, li, pre', { +globalStyle('p,h1, h2, h3, h4, h5, h6, ul, ol, li, pre, figure', { margin: 0, fontFamily: 'inherit' }); @@ -41,6 +41,6 @@ globalStyle('li > p', { display: 'inline' }); -globalStyle(`.${ssrClassName} svg, .${ssrClassName} img`, { +globalStyle(`.${config.ssrClassName} svg, .${config.ssrClassName} img`, { display: 'none' }); diff --git a/packages/theme/src/color/callout.css.ts b/packages/theme/src/color/callout.css.ts index 781e52916..eaf3227ff 100644 --- a/packages/theme/src/color/callout.css.ts +++ b/packages/theme/src/color/callout.css.ts @@ -1,6 +1,5 @@ import { defineProperties, createSprinkles } from '@vanilla-extract/sprinkles'; import { recipe, RecipeVariants } from '@vanilla-extract/recipes'; - import { vars } from '../vars.css'; import { lightModeConditions } from './lightMode'; @@ -54,41 +53,3 @@ export const calloutColor = recipe({ } }); export type CalloutColorVariants = RecipeVariants; - -export const calloutBackgroundColor = recipe({ - variants: { - variant: { - note: calloutColorSprinkles({ - backgroundColor: { - lightMode: vars.color.light.callout.note, - darkMode: vars.color.dark.callout.note - } - }), - important: calloutColorSprinkles({ - backgroundColor: { - lightMode: vars.color.light.callout.important, - darkMode: vars.color.dark.callout.important - } - }), - tip: calloutColorSprinkles({ - backgroundColor: { - lightMode: vars.color.light.callout.tip, - darkMode: vars.color.dark.callout.tip - } - }), - caution: calloutColorSprinkles({ - backgroundColor: { - lightMode: vars.color.light.callout.caution, - darkMode: vars.color.dark.callout.caution - } - }), - warning: calloutColorSprinkles({ - backgroundColor: { - lightMode: vars.color.light.callout.warning, - darkMode: vars.color.dark.callout.warning - } - }) - } - } -}); -export type CalloutBackgroundColorVariants = RecipeVariants; diff --git a/packages/theme/src/config.ts b/packages/theme/src/config.ts index e26ec3047..936321e4c 100644 --- a/packages/theme/src/config.ts +++ b/packages/theme/src/config.ts @@ -1,7 +1,8 @@ /** Some values we want to make available to the JS code, rather than via CSS vars */ export const config = { appHeader: { height: 44 }, - main: { width: 1128, wideWidth: 1440 } + main: { width: 1128, wideWidth: 1440 }, + ssrClassName: 'mosaic-ssr' }; export type ThemeConfig = typeof config; diff --git a/packages/theme/src/gutter/index.css.ts b/packages/theme/src/gutter/index.css.ts new file mode 100644 index 000000000..65226c873 --- /dev/null +++ b/packages/theme/src/gutter/index.css.ts @@ -0,0 +1,23 @@ +import { recipe, RecipeVariants } from '@vanilla-extract/recipes'; +import { calc } from '@vanilla-extract/css-utils'; + +import { vars } from '../vars.css'; + +export const gutterElement = recipe({ + variants: { + variant: { + anchor: { + marginLeft: vars.space.horizontal.anchor + }, + accent: { + marginLeft: vars.space.horizontal.gutter, + paddingLeft: calc(vars.space.horizontal.gutter) + .multiply(-1) + .subtract(vars.border.width.thick) + .toString() + } + } + } +}); + +export type GutterElementVariants = RecipeVariants; diff --git a/packages/theme/src/icon/index.ts b/packages/theme/src/icon/index.ts deleted file mode 100644 index 838008a0b..000000000 --- a/packages/theme/src/icon/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './icons'; diff --git a/packages/theme/src/index.ts b/packages/theme/src/index.ts index 8821dbec6..6069fee22 100644 --- a/packages/theme/src/index.ts +++ b/packages/theme/src/index.ts @@ -11,7 +11,6 @@ import { import { shadow } from './shadow'; import { vars } from './vars.css'; -export const ssrClassName = 'mosaic-ssr'; export { themeClassName, vars } from './vars.css'; export * from './animation'; export * from './blockquote'; @@ -22,11 +21,12 @@ export * from './componentExample'; export * from './config'; export * from './feature'; export * from './grid'; +export * from './gutter/index.css'; export * from './hero'; -export * from './icon'; export * from './impact'; export * from './link'; export * from './list'; +export * from './pre/index.css'; export * from './responsive'; export * from './shadow'; export * from './sidebar'; diff --git a/packages/theme/src/pre/index.css.ts b/packages/theme/src/pre/index.css.ts new file mode 100644 index 000000000..7e3503621 --- /dev/null +++ b/packages/theme/src/pre/index.css.ts @@ -0,0 +1,11 @@ +import { globalStyle } from '@vanilla-extract/css'; +import { spaceVars } from '../responsive/vars.css'; + +globalStyle('pre', { + overflowX: 'auto', + padding: `${spaceVars.vertical.x2} ${spaceVars.horizontal.none}` +}); + +globalStyle('pre [data-line]', { + overflowX: 'auto' +}); diff --git a/packages/theme/src/responsive/responsive.css.ts b/packages/theme/src/responsive/responsive.css.ts index 1e0a03637..462387c4b 100644 --- a/packages/theme/src/responsive/responsive.css.ts +++ b/packages/theme/src/responsive/responsive.css.ts @@ -1,9 +1,7 @@ import { defineProperties, createSprinkles } from '@vanilla-extract/sprinkles'; -import { recipe, RecipeVariants } from '@vanilla-extract/recipes'; -import { calc } from '@vanilla-extract/css-utils'; import { breakpoint } from './breakpoint'; -import { vars } from '../vars.css'; +import { spaceVars } from './vars.css'; export const responsiveConditions = { mobile: { '@media': `screen and (min-width: ${breakpoint.mobile}px)` }, @@ -12,114 +10,46 @@ export const responsiveConditions = { desktop: { '@media': `screen and (min-width: ${breakpoint.desktop}px)` } }; -export const marginProperties = defineProperties({ - conditions: responsiveConditions, - defaultCondition: 'mobile', - responsiveArray: ['mobile', 'tablet', 'web', 'desktop'], - properties: { - marginTop: vars.space.vertical, - marginRight: vars.space.horizontal, - marginBottom: vars.space.vertical, - marginLeft: vars.space.horizontal - }, - shorthands: { - margin: ['marginTop', 'marginBottom', 'marginLeft', 'marginRight'], - marginX: ['marginLeft', 'marginRight'], - marginY: ['marginTop', 'marginBottom'] - } -}); - -export const paddingProperties = defineProperties({ - conditions: responsiveConditions, - defaultCondition: 'mobile', - responsiveArray: ['mobile', 'tablet', 'web', 'desktop'], - properties: { - paddingTop: vars.space.vertical, - paddingRight: vars.space.horizontal, - paddingBottom: vars.space.vertical, - paddingLeft: vars.space.horizontal - }, - shorthands: { - padding: ['paddingTop', 'paddingBottom', 'paddingLeft', 'paddingRight'], - paddingX: ['paddingLeft', 'paddingRight'], - paddingY: ['paddingTop', 'paddingBottom'] - } -}); - -export const positionProperties = defineProperties({ - conditions: responsiveConditions, - defaultCondition: 'mobile', - responsiveArray: ['mobile', 'tablet', 'web', 'desktop'], - properties: { - top: vars.space.vertical, - right: vars.space.horizontal, - bottom: vars.space.vertical, - left: vars.space.horizontal - } -}); - export const responsiveProperties = defineProperties({ conditions: responsiveConditions, defaultCondition: 'mobile', responsiveArray: ['mobile', 'tablet', 'web', 'desktop'], properties: { + // margin + marginTop: spaceVars.vertical, + marginRight: spaceVars.horizontal, + marginBottom: spaceVars.vertical, + marginLeft: spaceVars.horizontal, + // padding + paddingTop: spaceVars.vertical, + paddingRight: spaceVars.horizontal, + paddingBottom: spaceVars.vertical, + paddingLeft: spaceVars.horizontal, + // position + top: spaceVars.vertical, + right: spaceVars.horizontal, + bottom: spaceVars.vertical, + left: spaceVars.horizontal, + // flexbox display: ['none', 'flex', 'initial', 'inherit'], flexDirection: ['row', 'row-reverse', 'column', 'column-reverse'], flexWrap: ['wrap', 'nowrap'], - width: ['100%'] - } -}); - -export const gapProperties = defineProperties({ - conditions: responsiveConditions, - defaultCondition: 'mobile', - responsiveArray: ['mobile', 'tablet', 'web', 'desktop'], - properties: { - columnGap: vars.space.horizontal, - rowGap: vars.space.vertical + width: ['100%'], + // gap + columnGap: spaceVars.horizontal, + rowGap: spaceVars.vertical }, shorthands: { + margin: ['marginTop', 'marginBottom', 'marginLeft', 'marginRight'], + marginX: ['marginLeft', 'marginRight'], + marginY: ['marginTop', 'marginBottom'], + padding: ['paddingTop', 'paddingBottom', 'paddingLeft', 'paddingRight'], + paddingX: ['paddingLeft', 'paddingRight'], + paddingY: ['paddingTop', 'paddingBottom'], gap: ['columnGap', 'rowGap'] } }); -export const marginSprinkles = createSprinkles(marginProperties); -export type MarginSprinkles = Parameters[0]; - -export const paddingSprinkles = createSprinkles(paddingProperties); -export type PaddingSprinkles = Parameters[0]; - -export const positioningSprinkles = createSprinkles(positionProperties); -export type PositioningSprinkles = Parameters[0]; - -export const gapSprinkles = createSprinkles(gapProperties); -export type GapSprinkles = Parameters[0]; - -export const responsiveSprinkles = createSprinkles( - marginProperties, - paddingProperties, - positionProperties, - responsiveProperties, - gapProperties -); +export const responsiveSprinkles = createSprinkles(responsiveProperties); export type ResponsiveSprinkles = Parameters[0]; - -export const gutterElement = recipe({ - variants: { - variant: { - anchor: { - marginLeft: vars.space.horizontal.anchor - }, - accent: { - marginLeft: vars.space.horizontal.gutter, - paddingLeft: calc(vars.space.horizontal.gutter) - .multiply(-1) - .subtract(vars.border.width.thick) - .toString() - } - } - } -}); - -export type GutterElementVariants = RecipeVariants; diff --git a/packages/theme/src/typography/action.css.ts b/packages/theme/src/typography/action.css.ts index d25bba1e8..81d9d79cb 100644 --- a/packages/theme/src/typography/action.css.ts +++ b/packages/theme/src/typography/action.css.ts @@ -1,8 +1,10 @@ import { defineProperties, createSprinkles } from '@vanilla-extract/sprinkles'; import { recipe, RecipeVariants } from '@vanilla-extract/recipes'; -import { marginProperties, paddingProperties, responsiveSprinkles } from '../responsive'; -import { vars } from '../vars.css'; +import { responsiveSprinkles } from '../responsive'; +import { fontSizeVars, fontWeightVars } from './vars.css'; + +const vars = { fontSize: fontSizeVars, fontWeight: fontWeightVars }; const actionProperties = defineProperties({ properties: { @@ -31,11 +33,7 @@ const actionProperties = defineProperties({ } }); -export const actionSprinkles = createSprinkles( - actionProperties, - marginProperties, - paddingProperties -); +export const actionSprinkles = createSprinkles(actionProperties); export type ActionSprinkles = Parameters[0]; diff --git a/packages/theme/src/typography/amount.css.ts b/packages/theme/src/typography/amount.css.ts index 61d274d04..de2c9efb2 100644 --- a/packages/theme/src/typography/amount.css.ts +++ b/packages/theme/src/typography/amount.css.ts @@ -1,8 +1,10 @@ import { defineProperties, createSprinkles } from '@vanilla-extract/sprinkles'; import { recipe, RecipeVariants } from '@vanilla-extract/recipes'; -import { vars } from '../vars.css'; -import { marginProperties, paddingProperties, responsiveSprinkles } from '../responsive'; +import { fontSizeVars, fontWeightVars } from './vars.css'; +import { responsiveSprinkles } from '../responsive'; + +const vars = { fontSize: fontSizeVars, fontWeight: fontWeightVars }; const amountProperties = defineProperties({ properties: { @@ -20,11 +22,7 @@ const amountProperties = defineProperties({ } }); -export const amountSprinkles = createSprinkles( - amountProperties, - marginProperties, - paddingProperties -); +export const amountSprinkles = createSprinkles(amountProperties); export type AmountSprinkles = Parameters[0]; diff --git a/packages/theme/src/typography/caption.css.ts b/packages/theme/src/typography/caption.css.ts index daa4cca68..7acc8d843 100644 --- a/packages/theme/src/typography/caption.css.ts +++ b/packages/theme/src/typography/caption.css.ts @@ -1,8 +1,10 @@ import { defineProperties, createSprinkles } from '@vanilla-extract/sprinkles'; import { recipe, RecipeVariants } from '@vanilla-extract/recipes'; -import { marginProperties, paddingProperties, responsiveSprinkles } from '../responsive'; -import { vars } from '../vars.css'; +import { responsiveSprinkles } from '../responsive'; +import { fontSizeVars, fontWeightVars } from './vars.css'; + +const vars = { fontSize: fontSizeVars, fontWeight: fontWeightVars }; const captionProperties = defineProperties({ properties: { @@ -29,11 +31,7 @@ const captionProperties = defineProperties({ } }); -export const captionSprinkles = createSprinkles( - captionProperties, - marginProperties, - paddingProperties -); +export const captionSprinkles = createSprinkles(captionProperties); export type CaptionSprinkles = Parameters[0]; diff --git a/packages/theme/src/typography/code.css.ts b/packages/theme/src/typography/code.css.ts index 1e4f84afa..193e6e578 100644 --- a/packages/theme/src/typography/code.css.ts +++ b/packages/theme/src/typography/code.css.ts @@ -1,9 +1,12 @@ -import { style } from '@vanilla-extract/css'; +import { style, globalStyle } from '@vanilla-extract/css'; import { recipe, RecipeVariants } from '@vanilla-extract/recipes'; -import { vars } from '../vars.css'; -import { backgroundColor, foregroundColor } from '../color'; +import { spaceVars } from '../responsive/vars.css'; import { neutralBorder } from '../border'; +import { fontSizeVars, fontWeightVars } from './vars.css'; +import { lightMode, darkMode, backgroundColor } from '../color'; + +const vars = { fontSize: fontSizeVars, fontWeight: fontWeightVars }; export const code = recipe({ variants: { @@ -11,19 +14,19 @@ export const code = recipe({ variant: { regular: style([ { + fontFamily: 'var(--salt-typography-fontFamily-code)', fontSize: vars.fontSize.s70, - paddingLeft: vars.space.horizontal.x2, - paddingRight: vars.space.horizontal.x2, - whiteSpace: 'nowrap', + paddingLeft: spaceVars.horizontal.x2, + paddingRight: spaceVars.horizontal.x2, + whiteSpace: 'pre-wrap', selectors: { ['code.&']: { fontWeight: vars.fontWeight.light } } }, - neutralBorder({ variant: 'low', borderWidth: 'thin' }), backgroundColor({ variant: 'emphasis' }), - foregroundColor({ variant: 'mid' }) + neutralBorder({ variant: 'low', borderWidth: 'thin' }) ]) } }, @@ -32,3 +35,23 @@ export const code = recipe({ } }); export type CodeVariants = RecipeVariants; + +/** + * Apply correct colors in light/dark mode + * https://rehype-pretty-code.netlify.app/#multiple-themes-dark-and-light-mode + */ +globalStyle( + `${lightMode} code[data-theme*=" "], + ${lightMode} code[data-theme*=" "] span`, + { + color: 'var(--shiki-light)' + } +); + +globalStyle( + `${darkMode} code[data-theme*=" "], + ${darkMode} code[data-theme*=" "] span`, + { + color: 'var(--shiki-dark)' + } +); diff --git a/packages/theme/src/typography/eyebrow.css.ts b/packages/theme/src/typography/eyebrow.css.ts index 1fd19ae0a..885e02cbc 100644 --- a/packages/theme/src/typography/eyebrow.css.ts +++ b/packages/theme/src/typography/eyebrow.css.ts @@ -1,8 +1,10 @@ import { defineProperties, createSprinkles } from '@vanilla-extract/sprinkles'; import { recipe, RecipeVariants } from '@vanilla-extract/recipes'; -import { vars } from '../vars.css'; -import { marginProperties, paddingProperties, responsiveSprinkles } from '../responsive'; +import { responsiveSprinkles } from '../responsive'; +import { fontSizeVars, fontWeightVars } from './vars.css'; + +const vars = { fontSize: fontSizeVars, fontWeight: fontWeightVars }; const eyebrowProperties = defineProperties({ properties: { @@ -20,11 +22,7 @@ const eyebrowProperties = defineProperties({ } }); -export const eyebrowSprinkles = createSprinkles( - eyebrowProperties, - marginProperties, - paddingProperties -); +export const eyebrowSprinkles = createSprinkles(eyebrowProperties); export type EyebrowSprinkles = Parameters[0]; diff --git a/packages/theme/src/typography/heading.css.ts b/packages/theme/src/typography/heading.css.ts index db7b148fa..a713d1f4a 100644 --- a/packages/theme/src/typography/heading.css.ts +++ b/packages/theme/src/typography/heading.css.ts @@ -1,13 +1,11 @@ import { defineProperties, createSprinkles } from '@vanilla-extract/sprinkles'; import { recipe, RecipeVariants } from '@vanilla-extract/recipes'; -import { vars } from '../vars.css'; -import { - marginProperties, - paddingProperties, - responsiveConditions, - responsiveSprinkles -} from '../responsive'; +import { spaceVars } from '../responsive/vars.css'; +import { responsiveConditions, responsiveSprinkles } from '../responsive'; +import { fontSizeVars, fontWeightVars } from './vars.css'; + +const vars = { fontSize: fontSizeVars, fontWeight: fontWeightVars }; const headingProperties = defineProperties({ conditions: responsiveConditions, @@ -39,11 +37,7 @@ const headingProperties = defineProperties({ } }); -export const headingSprinkles = createSprinkles( - headingProperties, - marginProperties, - paddingProperties -); +export const headingSprinkles = createSprinkles(headingProperties); export type HeadingSprinkles = Parameters[0]; @@ -110,7 +104,7 @@ export const heading = recipe({ context: 'markdown' }, style: { - marginTop: vars.space.vertical.none + marginTop: spaceVars.vertical.none } }, { @@ -119,7 +113,7 @@ export const heading = recipe({ context: 'markdown' }, style: { - marginTop: vars.space.vertical.none + marginTop: spaceVars.vertical.none } }, { @@ -128,7 +122,7 @@ export const heading = recipe({ context: 'markdown' }, style: { - marginTop: vars.space.vertical.x13 + marginTop: spaceVars.vertical.x13 } }, { @@ -137,7 +131,7 @@ export const heading = recipe({ context: 'markdown' }, style: { - marginTop: vars.space.vertical.x10 + marginTop: spaceVars.vertical.x10 } }, { @@ -146,7 +140,7 @@ export const heading = recipe({ context: 'markdown' }, style: { - marginTop: vars.space.vertical.x10 + marginTop: spaceVars.vertical.x10 } } ], diff --git a/packages/theme/src/typography/paragraph.css.ts b/packages/theme/src/typography/paragraph.css.ts index 405f38212..3f41c558f 100644 --- a/packages/theme/src/typography/paragraph.css.ts +++ b/packages/theme/src/typography/paragraph.css.ts @@ -1,8 +1,10 @@ import { defineProperties, createSprinkles } from '@vanilla-extract/sprinkles'; import { recipe, RecipeVariants } from '@vanilla-extract/recipes'; -import { vars } from '../vars.css'; -import { marginProperties, paddingProperties, responsiveSprinkles } from '../responsive'; +import { responsiveSprinkles } from '../responsive'; +import { fontSizeVars, fontWeightVars } from './vars.css'; + +const vars = { fontSize: fontSizeVars, fontWeight: fontWeightVars }; const paragraphProperties = defineProperties({ properties: { @@ -29,11 +31,7 @@ const paragraphProperties = defineProperties({ } }); -export const paragraphSprinkles = createSprinkles( - paragraphProperties, - marginProperties, - paddingProperties -); +export const paragraphSprinkles = createSprinkles(paragraphProperties); export type ParagraphSprinkles = Parameters[0]; diff --git a/packages/theme/src/typography/subtitle.css.ts b/packages/theme/src/typography/subtitle.css.ts index d44e991cd..e46b15832 100644 --- a/packages/theme/src/typography/subtitle.css.ts +++ b/packages/theme/src/typography/subtitle.css.ts @@ -1,8 +1,10 @@ import { defineProperties, createSprinkles } from '@vanilla-extract/sprinkles'; import { recipe, RecipeVariants } from '@vanilla-extract/recipes'; -import { vars } from '../vars.css'; -import { marginProperties, paddingProperties, responsiveSprinkles } from '../responsive'; +import { responsiveSprinkles } from '../responsive'; +import { fontSizeVars, fontWeightVars } from './vars.css'; + +const vars = { fontSize: fontSizeVars, fontWeight: fontWeightVars }; const subtitleProperties = defineProperties({ properties: { @@ -25,11 +27,7 @@ const subtitleProperties = defineProperties({ } }); -export const subtitleSprinkles = createSprinkles( - subtitleProperties, - marginProperties, - paddingProperties -); +export const subtitleSprinkles = createSprinkles(subtitleProperties); export type SubtitleSprinkles = Parameters[0]; diff --git a/packages/theme/src/typography/watermark.css.ts b/packages/theme/src/typography/watermark.css.ts index a2573acf7..9d4cc7803 100644 --- a/packages/theme/src/typography/watermark.css.ts +++ b/packages/theme/src/typography/watermark.css.ts @@ -2,9 +2,12 @@ import { style } from '@vanilla-extract/css'; import { defineProperties, createSprinkles } from '@vanilla-extract/sprinkles'; import { recipe, RecipeVariants } from '@vanilla-extract/recipes'; -import { vars } from '../vars.css'; -import { marginProperties, paddingProperties, responsiveSprinkles } from '../responsive'; +import { responsiveSprinkles } from '../responsive'; import { opacity } from '../opacity'; +import { fontSizeVars, fontWeightVars } from './vars.css'; +import { colorVars } from '../color/vars.css'; + +const vars = { fontSize: fontSizeVars, fontWeight: fontWeightVars }; const watermarkProperties = defineProperties({ properties: { @@ -22,11 +25,7 @@ const watermarkProperties = defineProperties({ } }); -export const watermarkSprinkles = createSprinkles( - watermarkProperties, - marginProperties, - paddingProperties -); +export const watermarkSprinkles = createSprinkles(watermarkProperties); export type WatermarkSprinkles = Parameters[0]; @@ -38,7 +37,7 @@ export const watermark = recipe({ selectors: { '&:before': { content: 'open-quote', - color: vars.color.unknown, + color: colorVars.unknown, fontSize: '3em', position: 'absolute', left: '0.25em', diff --git a/packages/types/src/Mode.ts b/packages/types/src/Mode.ts deleted file mode 100644 index f2bae09d9..000000000 --- a/packages/types/src/Mode.ts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Mosaic mode dictates how content is loaded - * - * `active` - * In this mode, content is pulled from configured data sources and updates in real-time. - * After content is updated, Mosaic plugins create an enhanced, in-memory file object, representing the content - * - * `snapshot-file` - * In this mode, previously created snapshot files are loaded from a local directory. - * - * `snapshot-s3` - * In this mode, previously created snapshot files are loaded from an S3 bucket. - * - * (A snapshot is an immutable/persisted copy of `active` content, created separately) - */ -export type MosaicMode = 'active' | 'snapshot-file' | 'snapshot-s3'; diff --git a/packages/store/src/types/appHeader.ts b/packages/types/src/appHeader.ts similarity index 91% rename from packages/store/src/types/appHeader.ts rename to packages/types/src/appHeader.ts index 9d5db6006..926a7a52a 100644 --- a/packages/store/src/types/appHeader.ts +++ b/packages/types/src/appHeader.ts @@ -1,4 +1,4 @@ -import { SearchIndexSlice } from './searchIndex'; +import type { SearchConfig, SearchIndex } from './searchIndex.js'; /** * [[`MenuItemType`]] defines the type of App header Menu items @@ -76,5 +76,8 @@ export type AppHeaderSlice = { /** Search namespace, suffix used on env variable `process.env.SEARCH_ENDPOINT` to filter search results to a specific namespace. */ searchNamespace?: string; /** Search index, created by SearchIndexPlugin */ - searchIndex?: SearchIndexSlice; + searchIndex?: { + searchIndex?: SearchIndex; + searchConfig?: SearchConfig; + }; }; diff --git a/packages/store/src/types/breadcrumbs.ts b/packages/types/src/breadcrumbs.ts similarity index 61% rename from packages/store/src/types/breadcrumbs.ts rename to packages/types/src/breadcrumbs.ts index 8365db4a1..ac5fc04f7 100644 --- a/packages/store/src/types/breadcrumbs.ts +++ b/packages/types/src/breadcrumbs.ts @@ -11,11 +11,3 @@ export type Breadcrumb = { /** Breadcrumb label */ label: string; }; - -/** - * [[`BreadcrumbsSlice`]] is the associated [[`Breadcrumb`]] items - */ -export type BreadcrumbsSlice = { - /** Path described in breadcrumbs */ - breadcrumbs: Breadcrumb[]; -}; diff --git a/packages/store/src/types/footer.ts b/packages/types/src/footer.ts similarity index 87% rename from packages/store/src/types/footer.ts rename to packages/types/src/footer.ts index 0cd90f400..da0051f7a 100644 --- a/packages/store/src/types/footer.ts +++ b/packages/types/src/footer.ts @@ -1,4 +1,4 @@ -import { HelpLinks } from './helpLinks'; +import { HelpLinks } from './helpLinks.js'; /** * [[`FooterSlice`]] specifies the footer props diff --git a/packages/store/src/types/helpLinks.ts b/packages/types/src/helpLinks.ts similarity index 100% rename from packages/store/src/types/helpLinks.ts rename to packages/types/src/helpLinks.ts diff --git a/packages/types/src/index.ts b/packages/types/src/index.ts index aed4209a7..f4fcc21eb 100644 --- a/packages/types/src/index.ts +++ b/packages/types/src/index.ts @@ -7,6 +7,15 @@ import type { SourceSchedule } from '@jpmorganchase/mosaic-schemas'; +export * from './tableOfContents.js'; +export * from './navigation.js'; +export * from './breadcrumbs.js'; +export * from './sidebar.js'; +export * from './helpLinks.js'; +export * from './appHeader.js'; +export * from './footer.js'; +export * from './sharedConfig.js'; +export * from './searchIndex.js'; export * from './Content.js'; export * from './IFileAccess.js'; export * from './Meta.js'; @@ -17,7 +26,6 @@ export * from './Serialiser.js'; export * from './Source.js'; export * from './Volume.js'; export * from './WorkerData.js'; -export * from './Mode.js'; export * from './Session.js'; export * from './SourceWorkflow.js'; diff --git a/packages/store/src/types/navigation.ts b/packages/types/src/navigation.ts similarity index 85% rename from packages/store/src/types/navigation.ts rename to packages/types/src/navigation.ts index 4bfee7f96..bbb4ee44d 100644 --- a/packages/store/src/types/navigation.ts +++ b/packages/types/src/navigation.ts @@ -17,7 +17,3 @@ export type Navigation = { /** previous page in sequence */ prev?: NavigationLink; }; - -export type NavigationSlice = { - navigation?: Navigation; -}; diff --git a/packages/store/src/types/searchIndex.ts b/packages/types/src/searchIndex.ts similarity index 78% rename from packages/store/src/types/searchIndex.ts rename to packages/types/src/searchIndex.ts index 3085cb167..4d20f93a0 100644 --- a/packages/store/src/types/searchIndex.ts +++ b/packages/types/src/searchIndex.ts @@ -14,8 +14,3 @@ export type SearchConfig = { threshold?: number; keys?: string[] | { name: string; weight: number }[]; }; - -export type SearchIndexSlice = { - searchIndex?: SearchIndex; - searchConfig?: SearchConfig; -}; diff --git a/packages/store/src/types/sharedConfig.ts b/packages/types/src/sharedConfig.ts similarity index 54% rename from packages/store/src/types/sharedConfig.ts rename to packages/types/src/sharedConfig.ts index 2f3fd8daa..d5d70572d 100644 --- a/packages/store/src/types/sharedConfig.ts +++ b/packages/types/src/sharedConfig.ts @@ -1,5 +1,5 @@ -import type { AppHeaderSlice } from './appHeader'; -import type { FooterSlice } from './footer'; +import type { AppHeaderSlice } from './appHeader.js'; +import type { FooterSlice } from './footer.js'; export type SharedConfig = { /** Footer props */ @@ -9,7 +9,3 @@ export type SharedConfig = { /** Sidebar props */ sidebar?: Pick; }; - -export type SharedConfigSlice = { - sharedConfig?: SharedConfig; -}; diff --git a/packages/store/src/types/sidebar.ts b/packages/types/src/sidebar.ts similarity index 73% rename from packages/store/src/types/sidebar.ts rename to packages/types/src/sidebar.ts index 81b5cdaca..77486fe45 100644 --- a/packages/store/src/types/sidebar.ts +++ b/packages/types/src/sidebar.ts @@ -15,10 +15,3 @@ export type SidebarItem = { /** Whether the item is hidden */ hidden: boolean; }; -/** - * [[`SidebarSlice`]] specifies sidebar content - */ -export type SidebarSlice = { - /** Sidebar items */ - sidebarData: SidebarItem[]; -}; diff --git a/packages/store/src/types/tableOfContents.ts b/packages/types/src/tableOfContents.ts similarity index 100% rename from packages/store/src/types/tableOfContents.ts rename to packages/types/src/tableOfContents.ts diff --git a/scripts/bundle.js b/scripts/bundle.js deleted file mode 100644 index d40094b59..000000000 --- a/scripts/bundle.js +++ /dev/null @@ -1,64 +0,0 @@ -const esbuild = require('esbuild'); -const glob = require('fast-glob'); -const { nodeExternalsPlugin } = require('esbuild-node-externals'); -const { vanillaExtractPlugin } = require('@vanilla-extract/esbuild-plugin'); - -const args = process.argv.slice(2); -const watchEnabled = args[0] === 'watch'; -const packageName = process.env.npm_package_name; - -const watchConfig = watchEnabled - ? { - onRebuild(error, result) { - if (error) console.error(`watch build failed for ${packageName}:`, error); - else console.log(`watch build succeeded for ${packageName}:`, result); - } - } - : false; - -esbuild - .build({ - entryPoints: glob.sync(['src/**/*.ts?(x)', 'src/*.ts?(x)'], { - ignore: ['**/__tests__', 'src/labs'] - }), - loader: { - '.jpg': 'dataurl', - '.png': 'dataurl', - '.svg': 'text' - }, - outdir: './dist', - bundle: true, - sourcemap: false, - splitting: true, - minify: true, - format: 'esm', - target: ['es2022'], - plugins: [nodeExternalsPlugin(), vanillaExtractPlugin({})], - external: [ - 'react', - 'react-dom', - 'next/*', - '@jpmorganchase/mosaic-components', - '@jpmorganchase/mosaic-components-lab', - '@jpmorganchase/mosaic-open-api-component', - '@jpmorganchase/mosaic-content-editor-plugin', - '@jpmorganchase/mosaic-site-components', - '@jpmorganchase/mosaic-layouts', - '@jpmorganchase/mosaic-store' - ], - watch: watchConfig - }) - .catch(e => { - if (e.errors && e.errors.length > 0) { - console.group(`!!!!!!! ${packageName} build errors !!!!!!!`); - console.error(e.errors); - console.groupEnd(); - } - - if (e.warnings && e.warnings.length > 0) { - console.group(`!!!!!!! ${packageName} build warnings !!!!!!!`); - console.error(e.warnings); - console.groupEnd(); - } - return process.exit(1); - }); diff --git a/scripts/bundle.mjs b/scripts/bundle.mjs new file mode 100644 index 000000000..d68cd1911 --- /dev/null +++ b/scripts/bundle.mjs @@ -0,0 +1,69 @@ +import * as esbuild from 'esbuild'; +import glob from 'fast-glob'; +import { nodeExternalsPlugin } from 'esbuild-node-externals'; +import { vanillaExtractPlugin } from '@vanilla-extract/esbuild-plugin'; + +const args = process.argv.slice(2); +const watchEnabled = args[0] === 'watch'; +const packageName = process.env.npm_package_name; + +const buildEndPlugin = () => ({ + name: 'on-end', + setup(build) { + build.onEnd(({ errors = [] }) => { + if (errors.length) { + console.error(`🛠️ - failed for: ${packageName} ❌`, errors); + } else if (watchEnabled) { + console.log(`🛠️ - succeeded for: ${packageName} ✅, 👀 for changes...`); + } else { + console.log(`🛠️ - succeeded for: ${packageName} ✅`); + } + }); + } +}); + +const esbuildConfig = { + entryPoints: glob.sync(['src/**/*.ts?(x)', 'src/*.ts?(x)'], { + ignore: ['**/__tests__'] + }), + loader: { + '.jpg': 'dataurl', + '.png': 'dataurl', + '.svg': 'text' + }, + outdir: './dist', + bundle: true, + sourcemap: true, + splitting: true, + minify: true, + format: 'esm', + target: ['es2022'], + plugins: [ + nodeExternalsPlugin({ allowList: ['swagger-ui-react/swagger-ui.css'] }), + vanillaExtractPlugin({}), + buildEndPlugin() + ], + external: ['react', 'react-dom', 'next/*', '@jpmorganchase/mosaic-*'] +}; + +try { + if (watchEnabled) { + const context = await esbuild.context(esbuildConfig); + await context.watch(); + } else { + await esbuild.build(esbuildConfig); + } +} catch (e) { + if (e.errors && e.errors.length > 0) { + console.group(`!!!!!!! ${packageName} build errors !!!!!!!`); + console.error(e.errors); + console.groupEnd(); + } + + if (e.warnings && e.warnings.length > 0) { + console.group(`!!!!!!! ${packageName} build warnings !!!!!!!`); + console.error(e.warnings); + console.groupEnd(); + } + process.exit(1); +} diff --git a/scripts/jest/jest.config.base.js b/scripts/jest/jest.config.base.js index 6ffb295ae..6396b0b97 100644 --- a/scripts/jest/jest.config.base.js +++ b/scripts/jest/jest.config.base.js @@ -11,7 +11,7 @@ module.exports = { statements: 1 } }, - coveragePathIgnorePatterns: ['/node_modules/', '/dist/.*\\.(ts|js)$', '/__tests__/test-utils/'], + coveragePathIgnorePatterns: ['/node_modules/', '/dist/.*\\.(ts|js)$', '/__tests__/utils/'], testRegex: '(/__tests__/.+\\.test)\\.(js|ts)x?$', transform: { '^.+\\.(t|j)sx?$': ['@swc/jest'] diff --git a/tsconfig.bundle.json b/tsconfig.bundle.json index 3d2d1d6e2..aec647f40 100644 --- a/tsconfig.bundle.json +++ b/tsconfig.bundle.json @@ -2,7 +2,8 @@ "extends": "./tsconfig", "compilerOptions": { "lib": ["es2022", "DOM", "DOM.iterable"], - "jsx": "react", + "jsx": "react-jsx", + "module": "ESNext", "moduleResolution": "node", "noImplicitAny": false, "emitDeclarationOnly": true, diff --git a/tsconfig.json b/tsconfig.json index cff240f66..3d4f7fd25 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,11 +1,11 @@ { "compilerOptions": { "allowSyntheticDefaultImports": true, - "module": "es2022", + "module": "NodeNext", "target": "es2022", "lib": ["es2022"], "esModuleInterop": true, - "moduleResolution": "Node16", + "moduleResolution": "NodeNext", "isolatedModules": true, "sourceMap": true, "declaration": true, diff --git a/turbo.json b/turbo.json index 9145b1d9c..c497d88e2 100644 --- a/turbo.json +++ b/turbo.json @@ -52,11 +52,8 @@ "//#gen:site": { "cache": false }, - "//#gen:snapshot": { - "outputs": ["./packages/site/public/snapshots/[0-9]*/**"] - }, - "gen:snapshot": { - "outputs": ["./packages/site/public/snapshots/latest/**"] + "export:static": { + "cache": false }, "lint": {}, "lint:fix": {}, @@ -65,6 +62,10 @@ "serve": { "outputs": [] }, + "//#serve:static": {}, + "serve:static": { + "outputs": [] + }, "//#serve:rig": {}, "serve:rig": { "outputs": [] diff --git a/yarn.lock b/yarn.lock index 64f498feb..6eb699928 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,10 +2,15 @@ # yarn lockfile v1 +"@aashutoshrathi/word-wrap@^1.2.3": + version "1.2.6" + resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" + integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== + "@adobe/css-tools@^4.0.1": - version "4.3.2" - resolved "https://registry.yarnpkg.com/@adobe/css-tools/-/css-tools-4.3.2.tgz#a6abc715fb6884851fca9dad37fc34739a04fd11" - integrity sha512-DA5a1C0gD/pLOvhv33YMrbf2FK3oUzwNl9oOJqE4XVjuEtt6XIakRcsd7eLiOSPkp1kTRQGICTA8cKra/vFbjw== + version "4.0.1" + resolved "https://registry.yarnpkg.com/@adobe/css-tools/-/css-tools-4.0.1.tgz#b38b444ad3aa5fedbb15f2f746dcd934226a12dd" + integrity sha512-+u76oB43nOHrF4DDWRLWDCtci7f3QJoEBigemIdIeTi1ODqjx6Tad9NCVnPRwewWlKkVab5PlK8DCtPTyX7S8g== "@ampproject/remapping@^2.1.0": version "2.2.0" @@ -15,10 +20,18 @@ "@jridgewell/gen-mapping" "^0.1.0" "@jridgewell/trace-mapping" "^0.3.9" +"@ampproject/remapping@^2.2.0": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" + integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg== + dependencies: + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" + "@apidevtools/json-schema-ref-parser@^10.1.0": version "10.1.0" resolved "https://registry.yarnpkg.com/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-10.1.0.tgz#bf54494039a56fa7f77fed17dc6f01dfde50f64c" - integrity sha512-3e+viyMuXdrcK8v5pvP+SDoAQ77FH6OyRmuK48SZKmdHJRFm87RsSs8qm6kP39a/pOPURByJw+OXzQIqcfmKtA== + integrity sha1-v1RJQDmlb6f3f+0X3G8B395Q9kw= dependencies: "@jsdevtools/ono" "^7.1.3" "@types/json-schema" "^7.0.11" @@ -29,7 +42,7 @@ "@aws-crypto/crc32@3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@aws-crypto/crc32/-/crc32-3.0.0.tgz#07300eca214409c33e3ff769cd5697b57fdd38fa" - integrity sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA== + integrity sha1-BzAOyiFECcM+P/dpzVaXtX/dOPo= dependencies: "@aws-crypto/util" "^3.0.0" "@aws-sdk/types" "^3.222.0" @@ -38,7 +51,7 @@ "@aws-crypto/crc32c@3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@aws-crypto/crc32c/-/crc32c-3.0.0.tgz#016c92da559ef638a84a245eecb75c3e97cb664f" - integrity sha512-ENNPPManmnVJ4BTXlOjAgD7URidbAznURqD0KvfREyc4o20DPYdEldU1f5cQ7Jbj0CJJSPaMIk/9ZshdB3210w== + integrity sha1-AWyS2lWe9jioSiRe7LdcPpfLZk8= dependencies: "@aws-crypto/util" "^3.0.0" "@aws-sdk/types" "^3.222.0" @@ -47,14 +60,14 @@ "@aws-crypto/ie11-detection@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@aws-crypto/ie11-detection/-/ie11-detection-3.0.0.tgz#640ae66b4ec3395cee6a8e94ebcd9f80c24cd688" - integrity sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q== + integrity sha1-ZArma07DOVzuao6U682fgMJM1og= dependencies: tslib "^1.11.1" "@aws-crypto/sha1-browser@3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@aws-crypto/sha1-browser/-/sha1-browser-3.0.0.tgz#f9083c00782b24714f528b1a1fef2174002266a3" - integrity sha512-NJth5c997GLHs6nOYTzFKTbYdMNA6/1XlKVgnZoaZcQ7z7UJlOgj2JdbHE8tiYLS3fzXNCguct77SPGat2raSw== + integrity sha1-+Qg8AHgrJHFPUosaH+8hdAAiZqM= dependencies: "@aws-crypto/ie11-detection" "^3.0.0" "@aws-crypto/supports-web-crypto" "^3.0.0" @@ -67,7 +80,7 @@ "@aws-crypto/sha256-browser@3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-browser/-/sha256-browser-3.0.0.tgz#05f160138ab893f1c6ba5be57cfd108f05827766" - integrity sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ== + integrity sha1-BfFgE4q4k/HGulvlfP0QjwWCd2Y= dependencies: "@aws-crypto/ie11-detection" "^3.0.0" "@aws-crypto/sha256-js" "^3.0.0" @@ -81,7 +94,7 @@ "@aws-crypto/sha256-js@3.0.0", "@aws-crypto/sha256-js@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz#f06b84d550d25521e60d2a0e2a90139341e007c2" - integrity sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ== + integrity sha1-8GuE1VDSVSHmDSoOKpATk0HgB8I= dependencies: "@aws-crypto/util" "^3.0.0" "@aws-sdk/types" "^3.222.0" @@ -90,895 +103,500 @@ "@aws-crypto/supports-web-crypto@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@aws-crypto/supports-web-crypto/-/supports-web-crypto-3.0.0.tgz#5d1bf825afa8072af2717c3e455f35cda0103ec2" - integrity sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg== + integrity sha1-XRv4Ja+oByrycXw+RV81zaAQPsI= dependencies: tslib "^1.11.1" "@aws-crypto/util@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@aws-crypto/util/-/util-3.0.0.tgz#1c7ca90c29293f0883468ad48117937f0fe5bfb0" - integrity sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w== + integrity sha1-HHypDCkpPwiDRorUgReTfw/lv7A= dependencies: "@aws-sdk/types" "^3.222.0" "@aws-sdk/util-utf8-browser" "^3.0.0" tslib "^1.11.1" -"@aws-sdk/abort-controller@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/abort-controller/-/abort-controller-3.357.0.tgz#5c5336d18b97781d0b940700375d825f9e20d9be" - integrity sha512-nQYDJon87quPwt2JZJwUN2GFKJnvE5kWb6tZP4xb5biSGUKBqDQo06oYed7yokatCuCMouIXV462aN0fWODtOw== - dependencies: - "@aws-sdk/types" "3.357.0" - tslib "^2.5.0" - -"@aws-sdk/chunked-blob-reader@3.310.0": - version "3.310.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/chunked-blob-reader/-/chunked-blob-reader-3.310.0.tgz#2ada1b024a2745c2fe7e869606fab781325f981e" - integrity sha512-CrJS3exo4mWaLnWxfCH+w88Ou0IcAZSIkk4QbmxiHl/5Dq705OLoxf4385MVyExpqpeVJYOYQ2WaD8i/pQZ2fg== - dependencies: - tslib "^2.5.0" - -"@aws-sdk/client-s3@^3.256.0", "@aws-sdk/client-s3@^3.359.0": - version "3.359.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-s3/-/client-s3-3.359.0.tgz#af7c04b2749ed0095f5de4680c9b69852b30d3e2" - integrity sha512-Z/RRzM1o1uX0zs0ieBdaEIn9X5Jwl6Bk/fnTPmuWDHmgJUjv7OQ9Oa7BV4azBAW6JNQ6XW1SdJrrfsOdblJ8QA== +"@aws-sdk/client-s3@^3.359.0": + version "3.374.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-s3/-/client-s3-3.374.0.tgz#d5428ace90a24717bb35d59ff9db04ab94af5767" + integrity sha1-1UKKzpCiRxe7NdWf+dsEq5SvV2c= dependencies: "@aws-crypto/sha1-browser" "3.0.0" "@aws-crypto/sha256-browser" "3.0.0" "@aws-crypto/sha256-js" "3.0.0" - "@aws-sdk/client-sts" "3.359.0" - "@aws-sdk/config-resolver" "3.357.0" - "@aws-sdk/credential-provider-node" "3.358.0" - "@aws-sdk/eventstream-serde-browser" "3.357.0" - "@aws-sdk/eventstream-serde-config-resolver" "3.357.0" - "@aws-sdk/eventstream-serde-node" "3.357.0" - "@aws-sdk/fetch-http-handler" "3.357.0" - "@aws-sdk/hash-blob-browser" "3.357.0" - "@aws-sdk/hash-node" "3.357.0" - "@aws-sdk/hash-stream-node" "3.357.0" - "@aws-sdk/invalid-dependency" "3.357.0" - "@aws-sdk/md5-js" "3.357.0" - "@aws-sdk/middleware-bucket-endpoint" "3.357.0" - "@aws-sdk/middleware-content-length" "3.357.0" - "@aws-sdk/middleware-endpoint" "3.357.0" - "@aws-sdk/middleware-expect-continue" "3.357.0" - "@aws-sdk/middleware-flexible-checksums" "3.357.0" - "@aws-sdk/middleware-host-header" "3.357.0" - "@aws-sdk/middleware-location-constraint" "3.357.0" - "@aws-sdk/middleware-logger" "3.357.0" - "@aws-sdk/middleware-recursion-detection" "3.357.0" - "@aws-sdk/middleware-retry" "3.357.0" - "@aws-sdk/middleware-sdk-s3" "3.357.0" - "@aws-sdk/middleware-serde" "3.357.0" - "@aws-sdk/middleware-signing" "3.357.0" - "@aws-sdk/middleware-ssec" "3.357.0" - "@aws-sdk/middleware-stack" "3.357.0" - "@aws-sdk/middleware-user-agent" "3.357.0" - "@aws-sdk/node-config-provider" "3.357.0" - "@aws-sdk/node-http-handler" "3.357.0" - "@aws-sdk/signature-v4-multi-region" "3.357.0" - "@aws-sdk/smithy-client" "3.358.0" - "@aws-sdk/types" "3.357.0" - "@aws-sdk/url-parser" "3.357.0" - "@aws-sdk/util-base64" "3.310.0" - "@aws-sdk/util-body-length-browser" "3.310.0" - "@aws-sdk/util-body-length-node" "3.310.0" - "@aws-sdk/util-defaults-mode-browser" "3.358.0" - "@aws-sdk/util-defaults-mode-node" "3.358.0" - "@aws-sdk/util-endpoints" "3.357.0" - "@aws-sdk/util-retry" "3.357.0" - "@aws-sdk/util-stream" "3.358.0" - "@aws-sdk/util-user-agent-browser" "3.357.0" - "@aws-sdk/util-user-agent-node" "3.357.0" - "@aws-sdk/util-utf8" "3.310.0" - "@aws-sdk/util-waiter" "3.357.0" + "@aws-sdk/client-sts" "3.370.0" + "@aws-sdk/credential-provider-node" "3.370.0" + "@aws-sdk/hash-stream-node" "3.374.0" + "@aws-sdk/middleware-bucket-endpoint" "3.370.0" + "@aws-sdk/middleware-expect-continue" "3.370.0" + "@aws-sdk/middleware-flexible-checksums" "3.374.0" + "@aws-sdk/middleware-host-header" "3.370.0" + "@aws-sdk/middleware-location-constraint" "3.370.0" + "@aws-sdk/middleware-logger" "3.370.0" + "@aws-sdk/middleware-recursion-detection" "3.370.0" + "@aws-sdk/middleware-sdk-s3" "3.370.0" + "@aws-sdk/middleware-signing" "3.370.0" + "@aws-sdk/middleware-ssec" "3.370.0" + "@aws-sdk/middleware-user-agent" "3.370.0" + "@aws-sdk/signature-v4-multi-region" "3.370.0" + "@aws-sdk/types" "3.370.0" + "@aws-sdk/util-endpoints" "3.370.0" + "@aws-sdk/util-user-agent-browser" "3.370.0" + "@aws-sdk/util-user-agent-node" "3.370.0" "@aws-sdk/xml-builder" "3.310.0" - "@smithy/protocol-http" "^1.0.1" - "@smithy/types" "^1.0.0" + "@smithy/config-resolver" "^1.0.1" + "@smithy/eventstream-serde-browser" "^1.0.1" + "@smithy/eventstream-serde-config-resolver" "^1.0.1" + "@smithy/eventstream-serde-node" "^1.0.1" + "@smithy/fetch-http-handler" "^1.0.1" + "@smithy/hash-blob-browser" "^1.0.1" + "@smithy/hash-node" "^1.0.1" + "@smithy/invalid-dependency" "^1.0.1" + "@smithy/md5-js" "^1.0.1" + "@smithy/middleware-content-length" "^1.0.1" + "@smithy/middleware-endpoint" "^1.0.2" + "@smithy/middleware-retry" "^1.0.3" + "@smithy/middleware-serde" "^1.0.1" + "@smithy/middleware-stack" "^1.0.1" + "@smithy/node-config-provider" "^1.0.1" + "@smithy/node-http-handler" "^1.0.2" + "@smithy/protocol-http" "^1.1.0" + "@smithy/smithy-client" "^1.0.3" + "@smithy/types" "^1.1.0" + "@smithy/url-parser" "^1.0.1" + "@smithy/util-base64" "^1.0.1" + "@smithy/util-body-length-browser" "^1.0.1" + "@smithy/util-body-length-node" "^1.0.1" + "@smithy/util-defaults-mode-browser" "^1.0.1" + "@smithy/util-defaults-mode-node" "^1.0.1" + "@smithy/util-retry" "^1.0.3" + "@smithy/util-stream" "^1.0.1" + "@smithy/util-utf8" "^1.0.1" + "@smithy/util-waiter" "^1.0.1" fast-xml-parser "4.2.5" tslib "^2.5.0" -"@aws-sdk/client-sso-oidc@3.358.0": - version "3.358.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.358.0.tgz#0b55c9fe1428419fdddc79653479d5448068d508" - integrity sha512-Gy09fSlhJdGbr8rNNR8EdLaUynB1B34nw8kN1aFT4CdAnjFKxTainqG6Aq4vx64TbMDMhvMYWpNAluvq7UHVhw== +"@aws-sdk/client-sso-oidc@3.370.0": + version "3.370.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.370.0.tgz#db03c04cb6a23888dc60016eb67505a41ede410b" + integrity sha1-2wPATLaiOIjcYAFutnUFpB7eQQs= dependencies: "@aws-crypto/sha256-browser" "3.0.0" "@aws-crypto/sha256-js" "3.0.0" - "@aws-sdk/config-resolver" "3.357.0" - "@aws-sdk/fetch-http-handler" "3.357.0" - "@aws-sdk/hash-node" "3.357.0" - "@aws-sdk/invalid-dependency" "3.357.0" - "@aws-sdk/middleware-content-length" "3.357.0" - "@aws-sdk/middleware-endpoint" "3.357.0" - "@aws-sdk/middleware-host-header" "3.357.0" - "@aws-sdk/middleware-logger" "3.357.0" - "@aws-sdk/middleware-recursion-detection" "3.357.0" - "@aws-sdk/middleware-retry" "3.357.0" - "@aws-sdk/middleware-serde" "3.357.0" - "@aws-sdk/middleware-stack" "3.357.0" - "@aws-sdk/middleware-user-agent" "3.357.0" - "@aws-sdk/node-config-provider" "3.357.0" - "@aws-sdk/node-http-handler" "3.357.0" - "@aws-sdk/smithy-client" "3.358.0" - "@aws-sdk/types" "3.357.0" - "@aws-sdk/url-parser" "3.357.0" - "@aws-sdk/util-base64" "3.310.0" - "@aws-sdk/util-body-length-browser" "3.310.0" - "@aws-sdk/util-body-length-node" "3.310.0" - "@aws-sdk/util-defaults-mode-browser" "3.358.0" - "@aws-sdk/util-defaults-mode-node" "3.358.0" - "@aws-sdk/util-endpoints" "3.357.0" - "@aws-sdk/util-retry" "3.357.0" - "@aws-sdk/util-user-agent-browser" "3.357.0" - "@aws-sdk/util-user-agent-node" "3.357.0" - "@aws-sdk/util-utf8" "3.310.0" - "@smithy/protocol-http" "^1.0.1" - "@smithy/types" "^1.0.0" + "@aws-sdk/middleware-host-header" "3.370.0" + "@aws-sdk/middleware-logger" "3.370.0" + "@aws-sdk/middleware-recursion-detection" "3.370.0" + "@aws-sdk/middleware-user-agent" "3.370.0" + "@aws-sdk/types" "3.370.0" + "@aws-sdk/util-endpoints" "3.370.0" + "@aws-sdk/util-user-agent-browser" "3.370.0" + "@aws-sdk/util-user-agent-node" "3.370.0" + "@smithy/config-resolver" "^1.0.1" + "@smithy/fetch-http-handler" "^1.0.1" + "@smithy/hash-node" "^1.0.1" + "@smithy/invalid-dependency" "^1.0.1" + "@smithy/middleware-content-length" "^1.0.1" + "@smithy/middleware-endpoint" "^1.0.2" + "@smithy/middleware-retry" "^1.0.3" + "@smithy/middleware-serde" "^1.0.1" + "@smithy/middleware-stack" "^1.0.1" + "@smithy/node-config-provider" "^1.0.1" + "@smithy/node-http-handler" "^1.0.2" + "@smithy/protocol-http" "^1.1.0" + "@smithy/smithy-client" "^1.0.3" + "@smithy/types" "^1.1.0" + "@smithy/url-parser" "^1.0.1" + "@smithy/util-base64" "^1.0.1" + "@smithy/util-body-length-browser" "^1.0.1" + "@smithy/util-body-length-node" "^1.0.1" + "@smithy/util-defaults-mode-browser" "^1.0.1" + "@smithy/util-defaults-mode-node" "^1.0.1" + "@smithy/util-retry" "^1.0.3" + "@smithy/util-utf8" "^1.0.1" tslib "^2.5.0" -"@aws-sdk/client-sso@3.358.0": - version "3.358.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.358.0.tgz#5471a3176bf4caf0a1dbdeb2d9ab88417f16426c" - integrity sha512-Kc9IsoPIHJfkjDuStyItwQAOpnxw/I9xfF3vvukeN9vkXcRiWeMDhEXACN4L1AYFlU9FHQSRdNwpYTIz7OrD2A== +"@aws-sdk/client-sso@3.370.0": + version "3.370.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.370.0.tgz#68aea97ecb2e5e6c817dfd3a1dd9fa4e09ff6e1c" + integrity sha1-aK6pfssuXmyBff06Hdn6Tgn/bhw= dependencies: "@aws-crypto/sha256-browser" "3.0.0" "@aws-crypto/sha256-js" "3.0.0" - "@aws-sdk/config-resolver" "3.357.0" - "@aws-sdk/fetch-http-handler" "3.357.0" - "@aws-sdk/hash-node" "3.357.0" - "@aws-sdk/invalid-dependency" "3.357.0" - "@aws-sdk/middleware-content-length" "3.357.0" - "@aws-sdk/middleware-endpoint" "3.357.0" - "@aws-sdk/middleware-host-header" "3.357.0" - "@aws-sdk/middleware-logger" "3.357.0" - "@aws-sdk/middleware-recursion-detection" "3.357.0" - "@aws-sdk/middleware-retry" "3.357.0" - "@aws-sdk/middleware-serde" "3.357.0" - "@aws-sdk/middleware-stack" "3.357.0" - "@aws-sdk/middleware-user-agent" "3.357.0" - "@aws-sdk/node-config-provider" "3.357.0" - "@aws-sdk/node-http-handler" "3.357.0" - "@aws-sdk/smithy-client" "3.358.0" - "@aws-sdk/types" "3.357.0" - "@aws-sdk/url-parser" "3.357.0" - "@aws-sdk/util-base64" "3.310.0" - "@aws-sdk/util-body-length-browser" "3.310.0" - "@aws-sdk/util-body-length-node" "3.310.0" - "@aws-sdk/util-defaults-mode-browser" "3.358.0" - "@aws-sdk/util-defaults-mode-node" "3.358.0" - "@aws-sdk/util-endpoints" "3.357.0" - "@aws-sdk/util-retry" "3.357.0" - "@aws-sdk/util-user-agent-browser" "3.357.0" - "@aws-sdk/util-user-agent-node" "3.357.0" - "@aws-sdk/util-utf8" "3.310.0" - "@smithy/protocol-http" "^1.0.1" - "@smithy/types" "^1.0.0" + "@aws-sdk/middleware-host-header" "3.370.0" + "@aws-sdk/middleware-logger" "3.370.0" + "@aws-sdk/middleware-recursion-detection" "3.370.0" + "@aws-sdk/middleware-user-agent" "3.370.0" + "@aws-sdk/types" "3.370.0" + "@aws-sdk/util-endpoints" "3.370.0" + "@aws-sdk/util-user-agent-browser" "3.370.0" + "@aws-sdk/util-user-agent-node" "3.370.0" + "@smithy/config-resolver" "^1.0.1" + "@smithy/fetch-http-handler" "^1.0.1" + "@smithy/hash-node" "^1.0.1" + "@smithy/invalid-dependency" "^1.0.1" + "@smithy/middleware-content-length" "^1.0.1" + "@smithy/middleware-endpoint" "^1.0.2" + "@smithy/middleware-retry" "^1.0.3" + "@smithy/middleware-serde" "^1.0.1" + "@smithy/middleware-stack" "^1.0.1" + "@smithy/node-config-provider" "^1.0.1" + "@smithy/node-http-handler" "^1.0.2" + "@smithy/protocol-http" "^1.1.0" + "@smithy/smithy-client" "^1.0.3" + "@smithy/types" "^1.1.0" + "@smithy/url-parser" "^1.0.1" + "@smithy/util-base64" "^1.0.1" + "@smithy/util-body-length-browser" "^1.0.1" + "@smithy/util-body-length-node" "^1.0.1" + "@smithy/util-defaults-mode-browser" "^1.0.1" + "@smithy/util-defaults-mode-node" "^1.0.1" + "@smithy/util-retry" "^1.0.3" + "@smithy/util-utf8" "^1.0.1" tslib "^2.5.0" -"@aws-sdk/client-sts@3.359.0": - version "3.359.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-sts/-/client-sts-3.359.0.tgz#a216e9f1950c8ff82b4604800c3dd47b4d8ceea5" - integrity sha512-zpyui8hXvEUvq8MwzZsm51ni0intvPjtV8dgx10nVJnm605nqrLlAMGqQ1S/UxO7CVmhqWbh5dnGHEc//UJlsw== +"@aws-sdk/client-sts@3.370.0": + version "3.370.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sts/-/client-sts-3.370.0.tgz#65879fa35b396035dcab446c782056ef768f48af" + integrity sha1-ZYefo1s5YDXcq0RseCBW73aPSK8= dependencies: "@aws-crypto/sha256-browser" "3.0.0" "@aws-crypto/sha256-js" "3.0.0" - "@aws-sdk/config-resolver" "3.357.0" - "@aws-sdk/credential-provider-node" "3.358.0" - "@aws-sdk/fetch-http-handler" "3.357.0" - "@aws-sdk/hash-node" "3.357.0" - "@aws-sdk/invalid-dependency" "3.357.0" - "@aws-sdk/middleware-content-length" "3.357.0" - "@aws-sdk/middleware-endpoint" "3.357.0" - "@aws-sdk/middleware-host-header" "3.357.0" - "@aws-sdk/middleware-logger" "3.357.0" - "@aws-sdk/middleware-recursion-detection" "3.357.0" - "@aws-sdk/middleware-retry" "3.357.0" - "@aws-sdk/middleware-sdk-sts" "3.357.0" - "@aws-sdk/middleware-serde" "3.357.0" - "@aws-sdk/middleware-signing" "3.357.0" - "@aws-sdk/middleware-stack" "3.357.0" - "@aws-sdk/middleware-user-agent" "3.357.0" - "@aws-sdk/node-config-provider" "3.357.0" - "@aws-sdk/node-http-handler" "3.357.0" - "@aws-sdk/smithy-client" "3.358.0" - "@aws-sdk/types" "3.357.0" - "@aws-sdk/url-parser" "3.357.0" - "@aws-sdk/util-base64" "3.310.0" - "@aws-sdk/util-body-length-browser" "3.310.0" - "@aws-sdk/util-body-length-node" "3.310.0" - "@aws-sdk/util-defaults-mode-browser" "3.358.0" - "@aws-sdk/util-defaults-mode-node" "3.358.0" - "@aws-sdk/util-endpoints" "3.357.0" - "@aws-sdk/util-retry" "3.357.0" - "@aws-sdk/util-user-agent-browser" "3.357.0" - "@aws-sdk/util-user-agent-node" "3.357.0" - "@aws-sdk/util-utf8" "3.310.0" - "@smithy/protocol-http" "^1.0.1" - "@smithy/types" "^1.0.0" + "@aws-sdk/credential-provider-node" "3.370.0" + "@aws-sdk/middleware-host-header" "3.370.0" + "@aws-sdk/middleware-logger" "3.370.0" + "@aws-sdk/middleware-recursion-detection" "3.370.0" + "@aws-sdk/middleware-sdk-sts" "3.370.0" + "@aws-sdk/middleware-signing" "3.370.0" + "@aws-sdk/middleware-user-agent" "3.370.0" + "@aws-sdk/types" "3.370.0" + "@aws-sdk/util-endpoints" "3.370.0" + "@aws-sdk/util-user-agent-browser" "3.370.0" + "@aws-sdk/util-user-agent-node" "3.370.0" + "@smithy/config-resolver" "^1.0.1" + "@smithy/fetch-http-handler" "^1.0.1" + "@smithy/hash-node" "^1.0.1" + "@smithy/invalid-dependency" "^1.0.1" + "@smithy/middleware-content-length" "^1.0.1" + "@smithy/middleware-endpoint" "^1.0.2" + "@smithy/middleware-retry" "^1.0.3" + "@smithy/middleware-serde" "^1.0.1" + "@smithy/middleware-stack" "^1.0.1" + "@smithy/node-config-provider" "^1.0.1" + "@smithy/node-http-handler" "^1.0.2" + "@smithy/protocol-http" "^1.1.0" + "@smithy/smithy-client" "^1.0.3" + "@smithy/types" "^1.1.0" + "@smithy/url-parser" "^1.0.1" + "@smithy/util-base64" "^1.0.1" + "@smithy/util-body-length-browser" "^1.0.1" + "@smithy/util-body-length-node" "^1.0.1" + "@smithy/util-defaults-mode-browser" "^1.0.1" + "@smithy/util-defaults-mode-node" "^1.0.1" + "@smithy/util-retry" "^1.0.3" + "@smithy/util-utf8" "^1.0.1" fast-xml-parser "4.2.5" tslib "^2.5.0" -"@aws-sdk/config-resolver@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/config-resolver/-/config-resolver-3.357.0.tgz#7672b3f446ed64025d1763efea0289f7f49833a1" - integrity sha512-cukfg0nX7Tzx/xFyH5F4Eyb8DA1ITCGtSQv4vnEjgUop+bkzckuGLKEeBcBhyZY+aw+2C9CVwIHwIMhRm0ul5w== - dependencies: - "@aws-sdk/types" "3.357.0" - "@aws-sdk/util-config-provider" "3.310.0" - "@aws-sdk/util-middleware" "3.357.0" - tslib "^2.5.0" - -"@aws-sdk/credential-provider-env@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.357.0.tgz#9746b9f958f490db5b1502d36cba7da43da460cb" - integrity sha512-UOecwfqvXgJVqhfWSZ2S44v2Nq2oceW0PQVQp0JAa9opc2rxSVIfyOhPr0yMoPmpyNcP22rgeg6ce70KULYwiA== - dependencies: - "@aws-sdk/property-provider" "3.357.0" - "@aws-sdk/types" "3.357.0" - tslib "^2.5.0" - -"@aws-sdk/credential-provider-imds@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.357.0.tgz#6b5317c79e15a059a2f71623ec673bea03af04f6" - integrity sha512-upw/bfsl7/WydT6gM0lBuR4Ipp4fzYm/E3ObFr0Mg5OkgVPt5ZJE+eeFTvwCpDdBSTKs4JfrK6/iEK8A23Q1jQ== - dependencies: - "@aws-sdk/node-config-provider" "3.357.0" - "@aws-sdk/property-provider" "3.357.0" - "@aws-sdk/types" "3.357.0" - "@aws-sdk/url-parser" "3.357.0" - tslib "^2.5.0" - -"@aws-sdk/credential-provider-ini@3.358.0": - version "3.358.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.358.0.tgz#2078b73cc5678a14fdff914b12b89d6d0f476aa0" - integrity sha512-Blmw4bhGxpaYvPmrbRKAltqnNDDSf6ZegNqJasc5OWvAlHJNvB/hYPmyQN0oFy79BXn7PbBip1QaLWaEhJvpAA== - dependencies: - "@aws-sdk/credential-provider-env" "3.357.0" - "@aws-sdk/credential-provider-imds" "3.357.0" - "@aws-sdk/credential-provider-process" "3.357.0" - "@aws-sdk/credential-provider-sso" "3.358.0" - "@aws-sdk/credential-provider-web-identity" "3.357.0" - "@aws-sdk/property-provider" "3.357.0" - "@aws-sdk/shared-ini-file-loader" "3.357.0" - "@aws-sdk/types" "3.357.0" - tslib "^2.5.0" - -"@aws-sdk/credential-provider-node@3.358.0": - version "3.358.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.358.0.tgz#ff7bbc29cadd9350f9681c6635076156b420242d" - integrity sha512-iLjyRNOT0ycdLqkzXNW+V2zibVljkLjL8j45FpK6mNrAwc/Ynr7EYuRRp5OuRiiYDO3ZoneAxpBJQ5SqmK2Jfg== - dependencies: - "@aws-sdk/credential-provider-env" "3.357.0" - "@aws-sdk/credential-provider-imds" "3.357.0" - "@aws-sdk/credential-provider-ini" "3.358.0" - "@aws-sdk/credential-provider-process" "3.357.0" - "@aws-sdk/credential-provider-sso" "3.358.0" - "@aws-sdk/credential-provider-web-identity" "3.357.0" - "@aws-sdk/property-provider" "3.357.0" - "@aws-sdk/shared-ini-file-loader" "3.357.0" - "@aws-sdk/types" "3.357.0" - tslib "^2.5.0" - -"@aws-sdk/credential-provider-process@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.357.0.tgz#5e661bd4431a171ee862bb60ff0054d11dea150a" - integrity sha512-qFWWilFPsc2hR7O0KIhwcE78w+pVIK+uQR6MQMfdRyxUndgiuCorJwVjedc3yZtmnoELHF34j+m8whTBXv9E7Q== - dependencies: - "@aws-sdk/property-provider" "3.357.0" - "@aws-sdk/shared-ini-file-loader" "3.357.0" - "@aws-sdk/types" "3.357.0" - tslib "^2.5.0" - -"@aws-sdk/credential-provider-sso@3.358.0": - version "3.358.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.358.0.tgz#4598ad2fc5aa34b6467bbdf35a12566b4ce02439" - integrity sha512-hKu5NshKohSDoHaXKyeCW88J8dBt4TMljrL+WswTMifuThO9ptyMq4PCdl4z7CNjIq6zo3ftc/uNf8TY7Ga8+w== - dependencies: - "@aws-sdk/client-sso" "3.358.0" - "@aws-sdk/property-provider" "3.357.0" - "@aws-sdk/shared-ini-file-loader" "3.357.0" - "@aws-sdk/token-providers" "3.358.0" - "@aws-sdk/types" "3.357.0" - tslib "^2.5.0" - -"@aws-sdk/credential-provider-web-identity@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.357.0.tgz#32765fc53779d84c078d20e4e1585b8fedfcf61f" - integrity sha512-0KRRAFrXy5HJe2vqnCWCoCS+fQw7IoIj3KQsuURJMW4F+ifisxCgEsh3brJ2LQlN4ElWTRJhlrDHNZ/pd61D4w== - dependencies: - "@aws-sdk/property-provider" "3.357.0" - "@aws-sdk/types" "3.357.0" - tslib "^2.5.0" - -"@aws-sdk/eventstream-codec@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-codec/-/eventstream-codec-3.357.0.tgz#32b6f0d97f3ea6e479e0d59c0a9b625faf3f887b" - integrity sha512-bqenTHG6GH6aCk/Il+ooWXVVAZuc8lOgVEy9bE2hI49oVqT8zSuXxQB+w1WWyZoAOPcelsjayB1wfPub8VDBxQ== - dependencies: - "@aws-crypto/crc32" "3.0.0" - "@aws-sdk/types" "3.357.0" - "@aws-sdk/util-hex-encoding" "3.310.0" - tslib "^2.5.0" - -"@aws-sdk/eventstream-serde-browser@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-browser/-/eventstream-serde-browser-3.357.0.tgz#fc2074bb7a9d8a358b9e0fb601924094af33c133" - integrity sha512-hBabtmwuspVHGSKnUccDiSIbg+IVoBThx6wYt6i4edbWAITHF3ADVKXy7icV400CAyG0XTZgxjE6FKpiDxj9rQ== - dependencies: - "@aws-sdk/eventstream-serde-universal" "3.357.0" - "@aws-sdk/types" "3.357.0" - tslib "^2.5.0" - -"@aws-sdk/eventstream-serde-config-resolver@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.357.0.tgz#d5db248a17fb22bc95d3088b7d840a065f015251" - integrity sha512-E6rwk+1KFXhKmJ+v7JW5Uyyda1yN5XRVupCnCrtFsHFmhVGQxFacoUZIee3bfuCpC58dLSyESggxGpUd3XOSsw== - dependencies: - "@aws-sdk/types" "3.357.0" - tslib "^2.5.0" - -"@aws-sdk/eventstream-serde-node@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-node/-/eventstream-serde-node-3.357.0.tgz#4fc79eea9eb85c173f44ad8e37550231e81cf144" - integrity sha512-boXDy+JWcPfHc9OIKV6I4Bh2XrLcg+eac+/LldNZFcDIB33/gHIM2CJw8u565Iebdz1NKEkP/QPPZbk2y+abPA== +"@aws-sdk/credential-provider-env@3.370.0": + version "3.370.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.370.0.tgz#edd507a88b36b967da048255f4a478ad92d1c5aa" + integrity sha1-7dUHqIs2uWfaBIJV9KR4rZLRxao= dependencies: - "@aws-sdk/eventstream-serde-universal" "3.357.0" - "@aws-sdk/types" "3.357.0" - tslib "^2.5.0" - -"@aws-sdk/eventstream-serde-universal@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/eventstream-serde-universal/-/eventstream-serde-universal-3.357.0.tgz#b83fb0bbc9623eb3e5a698cb3bfd1b8c502fd351" - integrity sha512-9/Wcdxx38XQAturqOAGYNCaLOzFVnW+xwxd4af9eNOfZfZ5PP5PRKBIpvKDsN26e3l4f3GodHx7MS1WB7BBc2w== - dependencies: - "@aws-sdk/eventstream-codec" "3.357.0" - "@aws-sdk/types" "3.357.0" - tslib "^2.5.0" - -"@aws-sdk/fetch-http-handler@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.357.0.tgz#8b33b8cefe036fd932b694242893ef3db1a74f02" - integrity sha512-5sPloTO8y8fAnS/6/Sfp/aVoL9zuhzkLdWBORNzMazdynVNEzWKWCPZ27RQpgkaCDHiXjqUY4kfuFXAGkvFfDQ== - dependencies: - "@aws-sdk/protocol-http" "3.357.0" - "@aws-sdk/querystring-builder" "3.357.0" - "@aws-sdk/types" "3.357.0" - "@aws-sdk/util-base64" "3.310.0" + "@aws-sdk/types" "3.370.0" + "@smithy/property-provider" "^1.0.1" + "@smithy/types" "^1.1.0" tslib "^2.5.0" -"@aws-sdk/hash-blob-browser@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/hash-blob-browser/-/hash-blob-browser-3.357.0.tgz#e507929499fe0fe128664b67cd26f63f16ed4d25" - integrity sha512-RDd6UgrGHDmleTnXM9LRSSVa69euSAG2mlNhZMEDWk3OFseXVYqBDaqroVbQ01rM2UAe8MeBFchlV9OmxuVgvw== - dependencies: - "@aws-sdk/chunked-blob-reader" "3.310.0" - "@aws-sdk/types" "3.357.0" +"@aws-sdk/credential-provider-ini@3.370.0": + version "3.370.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.370.0.tgz#4e569b8054b4fba2f0a0a7fa88af84b1f8d78c0b" + integrity sha1-TlabgFS0+6LwoKf6iK+EsfjXjAs= + dependencies: + "@aws-sdk/credential-provider-env" "3.370.0" + "@aws-sdk/credential-provider-process" "3.370.0" + "@aws-sdk/credential-provider-sso" "3.370.0" + "@aws-sdk/credential-provider-web-identity" "3.370.0" + "@aws-sdk/types" "3.370.0" + "@smithy/credential-provider-imds" "^1.0.1" + "@smithy/property-provider" "^1.0.1" + "@smithy/shared-ini-file-loader" "^1.0.1" + "@smithy/types" "^1.1.0" tslib "^2.5.0" -"@aws-sdk/hash-node@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/hash-node/-/hash-node-3.357.0.tgz#70666b0d6a49191cf33ef32b235c33b242de36ce" - integrity sha512-fq3LS9AxHKb7dTZkm6iM1TrGk6XOTZz96iEZPME1+vjiSEXGWuebHt87q92n+KozVGRypn9MId3lHOPBBjygNQ== - dependencies: - "@aws-sdk/types" "3.357.0" - "@aws-sdk/util-buffer-from" "3.310.0" - "@aws-sdk/util-utf8" "3.310.0" +"@aws-sdk/credential-provider-node@3.370.0": + version "3.370.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.370.0.tgz#74605644ccbd9e8237223318a7955f4ab2ff0d86" + integrity sha1-dGBWRMy9noI3IjMYp5VfSrL/DYY= + dependencies: + "@aws-sdk/credential-provider-env" "3.370.0" + "@aws-sdk/credential-provider-ini" "3.370.0" + "@aws-sdk/credential-provider-process" "3.370.0" + "@aws-sdk/credential-provider-sso" "3.370.0" + "@aws-sdk/credential-provider-web-identity" "3.370.0" + "@aws-sdk/types" "3.370.0" + "@smithy/credential-provider-imds" "^1.0.1" + "@smithy/property-provider" "^1.0.1" + "@smithy/shared-ini-file-loader" "^1.0.1" + "@smithy/types" "^1.1.0" tslib "^2.5.0" -"@aws-sdk/hash-stream-node@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/hash-stream-node/-/hash-stream-node-3.357.0.tgz#a78c6d1ae1c78cb52854311bad50988e8fc12142" - integrity sha512-KZjN1VAw1KHNp+xKVOWBGS+MpaYQTjZFD5f+7QQqW4TfbAkFFwIAEYIHq5Q8Gw+jVh0h61OrV/LyW3J2PVzc+w== +"@aws-sdk/credential-provider-process@3.370.0": + version "3.370.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.370.0.tgz#f7b94d2ccfda3b067cb23ea832b10c692c831855" + integrity sha1-97lNLM/aOwZ8sj6oMrEMaSyDGFU= dependencies: - "@aws-sdk/types" "3.357.0" - "@aws-sdk/util-utf8" "3.310.0" + "@aws-sdk/types" "3.370.0" + "@smithy/property-provider" "^1.0.1" + "@smithy/shared-ini-file-loader" "^1.0.1" + "@smithy/types" "^1.1.0" tslib "^2.5.0" -"@aws-sdk/invalid-dependency@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/invalid-dependency/-/invalid-dependency-3.357.0.tgz#4e86c689a6b0c4d0fe43ba335218d67e9aa652a6" - integrity sha512-HnCYZczf0VdyxMVMMxmA3QJAyyPSFbcMtZzgKbxVTWTG7GKpQe0psWZu/7O2Nk31mKg6vEUdiP1FylqLBsgMOA== +"@aws-sdk/credential-provider-sso@3.370.0": + version "3.370.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.370.0.tgz#4c57f93d73f198d7e1e53fbfcdf72c053bc9c682" + integrity sha1-TFf5PXPxmNfh5T+/zfcsBTvJxoI= dependencies: - "@aws-sdk/types" "3.357.0" + "@aws-sdk/client-sso" "3.370.0" + "@aws-sdk/token-providers" "3.370.0" + "@aws-sdk/types" "3.370.0" + "@smithy/property-provider" "^1.0.1" + "@smithy/shared-ini-file-loader" "^1.0.1" + "@smithy/types" "^1.1.0" tslib "^2.5.0" -"@aws-sdk/is-array-buffer@3.310.0": - version "3.310.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/is-array-buffer/-/is-array-buffer-3.310.0.tgz#f87a79f1b858c88744f07e8d8d0a791df204017e" - integrity sha512-urnbcCR+h9NWUnmOtet/s4ghvzsidFmspfhYaHAmSRdy9yDjdjBJMFjjsn85A1ODUktztm+cVncXjQ38WCMjMQ== +"@aws-sdk/credential-provider-web-identity@3.370.0": + version "3.370.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.370.0.tgz#c5831bb656bea1fe3b300e495e19a33bc90f4d84" + integrity sha1-xYMbtla+of47MA5JXhmjO8kPTYQ= dependencies: + "@aws-sdk/types" "3.370.0" + "@smithy/property-provider" "^1.0.1" + "@smithy/types" "^1.1.0" tslib "^2.5.0" -"@aws-sdk/md5-js@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/md5-js/-/md5-js-3.357.0.tgz#61853f562e71af0ec58aeede7883de122177ed55" - integrity sha512-to42sFAL7KgV/X9X40LLfEaNMHMGQL6/7mPMVCL/W2BZf3zw5OTl3lAaNyjXA+gO5Uo4lFEiQKAQVKNbr8b8Nw== +"@aws-sdk/hash-stream-node@3.374.0": + version "3.374.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/hash-stream-node/-/hash-stream-node-3.374.0.tgz#d98c3d73f4ad2677acfff2d84a8b394a10c00763" + integrity sha1-2Yw9c/StJnes//LYSos5ShDAB2M= dependencies: - "@aws-sdk/types" "3.357.0" - "@aws-sdk/util-utf8" "3.310.0" + "@smithy/hash-stream-node" "^1.0.1" tslib "^2.5.0" -"@aws-sdk/middleware-bucket-endpoint@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.357.0.tgz#9d19ba4a7971c5302e32d024e477755a1f6185ff" - integrity sha512-ep2T0FJXRDl6nffLqiVZUYfDocZ3B72wvHeozckkLVRX0TK91WEpzv4Zz2vdeBp6CGkM3g8oGjbb6ZqllUZ6TA== +"@aws-sdk/middleware-bucket-endpoint@3.370.0": + version "3.370.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.370.0.tgz#965a0ea2323b719703d1dec76a4e7b39d5a7463f" + integrity sha1-lloOojI7cZcD0d7Hak57OdWnRj8= dependencies: - "@aws-sdk/protocol-http" "3.357.0" - "@aws-sdk/types" "3.357.0" + "@aws-sdk/types" "3.370.0" "@aws-sdk/util-arn-parser" "3.310.0" - "@aws-sdk/util-config-provider" "3.310.0" - tslib "^2.5.0" - -"@aws-sdk/middleware-content-length@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-content-length/-/middleware-content-length-3.357.0.tgz#eafad2db1816cb5d91cd1e090211f040f29bbdaa" - integrity sha512-zQOFEyzOXAgN4M54tYNWGxKxnyzY0WwYDTFzh9riJRmxN1hTEKHUKmze4nILIf5rkQmOG4kTf1qmfazjkvZAhw== - dependencies: - "@aws-sdk/protocol-http" "3.357.0" - "@aws-sdk/types" "3.357.0" - tslib "^2.5.0" - -"@aws-sdk/middleware-endpoint@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-endpoint/-/middleware-endpoint-3.357.0.tgz#bc94bbf55339aa5220011f4ae8e03a7966ce28be" - integrity sha512-ScJi0SL8X/Lyi0Fp5blg0QN/Z6PoRwV/ZJXd8dQkXSznkbSvJHfqPP0xk/w3GcQ1TKsu5YEPfeYy8ejcq+7Pgg== - dependencies: - "@aws-sdk/middleware-serde" "3.357.0" - "@aws-sdk/types" "3.357.0" - "@aws-sdk/url-parser" "3.357.0" - "@aws-sdk/util-middleware" "3.357.0" + "@smithy/protocol-http" "^1.1.0" + "@smithy/types" "^1.1.0" + "@smithy/util-config-provider" "^1.0.1" tslib "^2.5.0" -"@aws-sdk/middleware-expect-continue@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.357.0.tgz#c392c4f31300695158070223f1e337c7503aca92" - integrity sha512-KeizuiiDmdLeAbiNsJt/rZENY5iJo4wCTl7h81htDC60wSwVwFG03IdgvZlFH6jktYRh4mUDD/6Oljme6yPNxw== +"@aws-sdk/middleware-expect-continue@3.370.0": + version "3.370.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.370.0.tgz#5eb7c7e65fc345ef31bcecb37522550cd12cd29a" + integrity sha1-XrfH5l/DRe8xvOyzdSJVDNEs0po= dependencies: - "@aws-sdk/protocol-http" "3.357.0" - "@aws-sdk/types" "3.357.0" + "@aws-sdk/types" "3.370.0" + "@smithy/protocol-http" "^1.1.0" + "@smithy/types" "^1.1.0" tslib "^2.5.0" -"@aws-sdk/middleware-flexible-checksums@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.357.0.tgz#957a383dc66942e63493d2ba182ee775e8139507" - integrity sha512-NNQ/iPN6YyzqgVaV8AeYQMZ8y1OmUW27vmt0R66UUw5H5THGc6X9QXoKfie7OHn80Qv1S8P5jw8z5MpvDtjSnQ== +"@aws-sdk/middleware-flexible-checksums@3.374.0": + version "3.374.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.374.0.tgz#2ba2c0d3982a7ad277269e7fa0634fe2c9122255" + integrity sha1-K6LA05gqetJ3Jp5/oGNP4skSIlU= dependencies: "@aws-crypto/crc32" "3.0.0" "@aws-crypto/crc32c" "3.0.0" - "@aws-sdk/is-array-buffer" "3.310.0" - "@aws-sdk/protocol-http" "3.357.0" - "@aws-sdk/types" "3.357.0" - "@aws-sdk/util-utf8" "3.310.0" - tslib "^2.5.0" - -"@aws-sdk/middleware-host-header@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.357.0.tgz#9d4f803fc7d9b1f5582a62844b1d841b3c849fe0" - integrity sha512-HuGLcP7JP1qJ5wGT9GSlEknDaTSnOzHY4T6IPFuvFjAy3PvY5siQNm6+VRqdVS+n6/kzpL3JP5sAVM3aoxHT6Q== - dependencies: - "@aws-sdk/protocol-http" "3.357.0" - "@aws-sdk/types" "3.357.0" + "@aws-sdk/types" "3.370.0" + "@smithy/is-array-buffer" "^1.0.1" + "@smithy/protocol-http" "^1.1.0" + "@smithy/types" "^1.1.0" + "@smithy/util-utf8" "^1.0.1" tslib "^2.5.0" -"@aws-sdk/middleware-location-constraint@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.357.0.tgz#b147973f70c82cf06d3bafcf32b6b826203bcb69" - integrity sha512-4IsIHhwZ2/o7yjLI1XtGMkJ442cbIN5/NtI/Ml0G5UHYviUm8sqvH2vldFBMK5bPuVdk6GpqXpy6wYc9rLJj2w== +"@aws-sdk/middleware-host-header@3.370.0": + version "3.370.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.370.0.tgz#645472416efd16b22a66b0aa1d52f48cf5699feb" + integrity sha1-ZFRyQW79FrIqZrCqHVL0jPVpn+s= dependencies: - "@aws-sdk/types" "3.357.0" + "@aws-sdk/types" "3.370.0" + "@smithy/protocol-http" "^1.1.0" + "@smithy/types" "^1.1.0" tslib "^2.5.0" -"@aws-sdk/middleware-logger@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-logger/-/middleware-logger-3.357.0.tgz#851a44a934ad8f33465ae4665a6c07ac967a8bbb" - integrity sha512-dncT3tr+lZ9+duZo52rASgO6AKVwRcsc2/T93gmaYVrJqI6WWAwQ7yML5s72l9ZjQ5LZ+4jjrgtlufavAS0eCg== +"@aws-sdk/middleware-location-constraint@3.370.0": + version "3.370.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.370.0.tgz#aa12d98a4cd8705dbda2642aac386a7b023ae651" + integrity sha1-qhLZikzYcF29omQqrDhqewI65lE= dependencies: - "@aws-sdk/types" "3.357.0" + "@aws-sdk/types" "3.370.0" + "@smithy/types" "^1.1.0" tslib "^2.5.0" -"@aws-sdk/middleware-recursion-detection@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.357.0.tgz#2d7a8cf43f1299c1ff1e113988bd801e7f527401" - integrity sha512-AXC54IeDS3jC1dbbkYHML4STvBPcKZ4IJTWdjEK1RCOgqXd0Ze1cE1e21wyj1tM6prF03zLyvpBd+3TS++nqfA== +"@aws-sdk/middleware-logger@3.370.0": + version "3.370.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-logger/-/middleware-logger-3.370.0.tgz#c9f694d7e1dd47b5e6e8eab94793fc1e272b1e26" + integrity sha1-yfaU1+HdR7Xm6Oq5R5P8HicrHiY= dependencies: - "@aws-sdk/protocol-http" "3.357.0" - "@aws-sdk/types" "3.357.0" + "@aws-sdk/types" "3.370.0" + "@smithy/types" "^1.1.0" tslib "^2.5.0" -"@aws-sdk/middleware-retry@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-retry/-/middleware-retry-3.357.0.tgz#6dfbd4ddc62c415b6b6de16d3a37ad4d69c8a10c" - integrity sha512-ZCbXCYv3nglQqwREYxxpclrnR9MYPAnHlLcC8e9PbApqxGnaZdhoywxoqbgqT3hf/RM7kput4vEHDl1fyymcRQ== +"@aws-sdk/middleware-recursion-detection@3.370.0": + version "3.370.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.370.0.tgz#e5e8fd1d2ff1ade91135295dabcaa81c311ce00b" + integrity sha1-5ej9HS/xrekRNSldq8qoHDEc4As= dependencies: - "@aws-sdk/protocol-http" "3.357.0" - "@aws-sdk/service-error-classification" "3.357.0" - "@aws-sdk/types" "3.357.0" - "@aws-sdk/util-middleware" "3.357.0" - "@aws-sdk/util-retry" "3.357.0" + "@aws-sdk/types" "3.370.0" + "@smithy/protocol-http" "^1.1.0" + "@smithy/types" "^1.1.0" tslib "^2.5.0" - uuid "^8.3.2" -"@aws-sdk/middleware-sdk-s3@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.357.0.tgz#3962e60183930b497599357f42f531578544eb18" - integrity sha512-EFQaPD8SoXcK7RiEOZz0zIX9owQW6txu8vrOOVva9xMts36z/3E7b4FVsgEJ53Ixa1x38ddPJxp4U8EIaf+pvQ== +"@aws-sdk/middleware-sdk-s3@3.370.0": + version "3.370.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.370.0.tgz#4ff48cba4da0465077230c8bdd8a117654aff9bb" + integrity sha1-T/SMuk2gRlB3IwyL3YoRdlSv+bs= dependencies: - "@aws-sdk/protocol-http" "3.357.0" - "@aws-sdk/types" "3.357.0" + "@aws-sdk/types" "3.370.0" "@aws-sdk/util-arn-parser" "3.310.0" + "@smithy/protocol-http" "^1.1.0" + "@smithy/types" "^1.1.0" tslib "^2.5.0" -"@aws-sdk/middleware-sdk-sts@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.357.0.tgz#8f9be3db8f4fd8563baf66925ee326f579b6ae4d" - integrity sha512-Ng2VjLrPiL02QOcs1qs9jG2boO4Gn+v3VIbOJLG4zXcfbSq55iIWtlmr2ljfw9vP5aLhWtcODfmKHS5Bp+019Q== - dependencies: - "@aws-sdk/middleware-signing" "3.357.0" - "@aws-sdk/types" "3.357.0" - tslib "^2.5.0" - -"@aws-sdk/middleware-serde@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-serde/-/middleware-serde-3.357.0.tgz#2614031c81981580bce4bee502985e28e51dadb2" - integrity sha512-bGI4kYuuEsFjlANbyJLyy4AovETnyf/SukgLOG7Qjbua+ZGuzvRhMsk21mBKKGrnsTO4PmtieJo6xClThGAN8g== - dependencies: - "@aws-sdk/types" "3.357.0" - tslib "^2.5.0" - -"@aws-sdk/middleware-signing@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-signing/-/middleware-signing-3.357.0.tgz#9aee1ad571b092ad0bbd63e0b551ffb575220688" - integrity sha512-yB9ewEqI6Fw1OrmKFrUypbCqN5ijk06UGPochybamMuPxxkwMT3bnrm7eezsCA+TZbJyKhpffpyobwuv+xGNrA== - dependencies: - "@aws-sdk/property-provider" "3.357.0" - "@aws-sdk/protocol-http" "3.357.0" - "@aws-sdk/signature-v4" "3.357.0" - "@aws-sdk/types" "3.357.0" - "@aws-sdk/util-middleware" "3.357.0" - tslib "^2.5.0" - -"@aws-sdk/middleware-ssec@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-ssec/-/middleware-ssec-3.357.0.tgz#c99b9b457cfaee32796110b324d2d5056c86b4df" - integrity sha512-uE3nNvJclcY7SgGoOgDCUgfc7ElXQmWVpks8AZzAjJj7bG5j6Bv3FOOYtGtvtxUzTHaOdn+yQwjssV1cZ6GTQw== - dependencies: - "@aws-sdk/types" "3.357.0" - tslib "^2.5.0" - -"@aws-sdk/middleware-stack@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-stack/-/middleware-stack-3.357.0.tgz#51f181691e8c76694b6583561ba0a0a14472506c" - integrity sha512-nNV+jfwGwmbOGZujAY/U8AW3EbVlxa9DJDLz3TPp/39o6Vu5KEzHJyDDNreo2k9V/TMvV+nOzHafufgPdagv7w== - dependencies: - tslib "^2.5.0" - -"@aws-sdk/middleware-user-agent@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.357.0.tgz#d4d27549bbcfdc03f5a8db74435a345b05b40373" - integrity sha512-M/CsAXjGblZS4rEbMb0Dn9IXbfq4EjVaTHBfvuILU/dKRppWvjnm2lRtqCZ+LIT3ATbAjA3/dY7dWsjxQWwijA== - dependencies: - "@aws-sdk/protocol-http" "3.357.0" - "@aws-sdk/types" "3.357.0" - "@aws-sdk/util-endpoints" "3.357.0" - tslib "^2.5.0" - -"@aws-sdk/node-config-provider@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/node-config-provider/-/node-config-provider-3.357.0.tgz#2e47aa36e5efae89b65c79b8c27180d3d8a2d901" - integrity sha512-kwBIzKCaW3UWqLdELhy7TcN8itNMOjbzga530nalFILMvn2IxrkdKQhNgxGBXy6QK6kCOtH6OmcrG3/oZkLwig== - dependencies: - "@aws-sdk/property-provider" "3.357.0" - "@aws-sdk/shared-ini-file-loader" "3.357.0" - "@aws-sdk/types" "3.357.0" - tslib "^2.5.0" - -"@aws-sdk/node-http-handler@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/node-http-handler/-/node-http-handler-3.357.0.tgz#ff4861eaad9bddcb2cc9d8fc7cb05dc8e273b0fa" - integrity sha512-uoab4xIJux+Q9hQ9A/vWEAjojtBQ0U4K7xEQVa0BXEv7MHH5zv51H+VtrelU1Ed6hsHq4Sx0bxBMFpbbWhNyjA== - dependencies: - "@aws-sdk/abort-controller" "3.357.0" - "@aws-sdk/protocol-http" "3.357.0" - "@aws-sdk/querystring-builder" "3.357.0" - "@aws-sdk/types" "3.357.0" - tslib "^2.5.0" - -"@aws-sdk/property-provider@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/property-provider/-/property-provider-3.357.0.tgz#4c1639c2d52aefab4040c2247c126c11b19d8be9" - integrity sha512-im4W0u8WaYxG7J7ko4Xl3OEzK3Mrm1Rz6/txTGe6hTIHlyUISu1ekOQJXK6XYPqNMn8v1G3BiQREoRXUEJFbHg== - dependencies: - "@aws-sdk/types" "3.357.0" - tslib "^2.5.0" - -"@aws-sdk/protocol-http@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/protocol-http/-/protocol-http-3.357.0.tgz#cd47413d6c1ed2d27bc30c7e9da3b262c8804cf4" - integrity sha512-w1JHiI50VEea7duDeAspUiKJmmdIQblvRyjVMOqWA6FIQAyDVuEiPX7/MdQr0ScxhtRQxHbP0I4MFyl7ctRQvA== - dependencies: - "@aws-sdk/types" "3.357.0" - tslib "^2.5.0" - -"@aws-sdk/querystring-builder@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/querystring-builder/-/querystring-builder-3.357.0.tgz#0d4627620eba4d3cc523c2e1da88dfa561617599" - integrity sha512-aQcicqB6Y2cNaXPPwunz612a01SMiQQPsdz632F/3Lzn0ua82BJKobHOtaiTUlmVJ5Q4/EAeNfwZgL7tTUNtDQ== - dependencies: - "@aws-sdk/types" "3.357.0" - "@aws-sdk/util-uri-escape" "3.310.0" - tslib "^2.5.0" - -"@aws-sdk/querystring-parser@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/querystring-parser/-/querystring-parser-3.357.0.tgz#6dfeb42930b2241cda43646d7c1d16ca886c78af" - integrity sha512-Svvq+atRNP9s2VxiklcUNgCzmt3T5kfs7X2C+yjmxHvOQTPjLNaNGbfC/vhjOK7aoXw0h+lBac48r5ymx1PbQA== +"@aws-sdk/middleware-sdk-sts@3.370.0": + version "3.370.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.370.0.tgz#0599a624fe5cabe75cd7d9e7420927b102356fa2" + integrity sha1-BZmmJP5cq+dc19nnQgknsQI1b6I= dependencies: - "@aws-sdk/types" "3.357.0" + "@aws-sdk/middleware-signing" "3.370.0" + "@aws-sdk/types" "3.370.0" + "@smithy/types" "^1.1.0" tslib "^2.5.0" -"@aws-sdk/service-error-classification@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/service-error-classification/-/service-error-classification-3.357.0.tgz#1c6f6e436997a1886d55cfec6d4796129b789076" - integrity sha512-VuXeL4g5vKO9HjgCZlxmH8Uv1FcqUSjmbPpQkbNtYIDck6u0qzM0rG+n0/1EjyQbPSr3MhW/pkWs5nx2Nljlyg== - -"@aws-sdk/shared-ini-file-loader@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.357.0.tgz#af503df79e05bb9ee0e5d689319c9b52cefe1801" - integrity sha512-ceyqM4XxQe0Plb/oQAD2t1UOV2Iy4PFe1oAGM8dfJzYrRKu7zvMwru7/WaB3NYq+/mIY6RU+jjhRmjQ3GySVqA== +"@aws-sdk/middleware-signing@3.370.0": + version "3.370.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-signing/-/middleware-signing-3.370.0.tgz#c094026251faa17a24f61630d56152f7b073e6cf" + integrity sha1-wJQCYlH6oXok9hYw1WFS97Bz5s8= dependencies: - "@aws-sdk/types" "3.357.0" + "@aws-sdk/types" "3.370.0" + "@smithy/property-provider" "^1.0.1" + "@smithy/protocol-http" "^1.1.0" + "@smithy/signature-v4" "^1.0.1" + "@smithy/types" "^1.1.0" + "@smithy/util-middleware" "^1.0.1" tslib "^2.5.0" -"@aws-sdk/signature-v4-multi-region@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.357.0.tgz#100c573029e2b30a65634090e55be4beb50e16a1" - integrity sha512-eyO3GibYLNCPZ/YxM/ZVDh1fTMKvIUj4fpVo0bxQTKNlqNkVumAIOVLoH5um1A9FN7nDdz+40a7jwYSPlkxW6A== +"@aws-sdk/middleware-ssec@3.370.0": + version "3.370.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-ssec/-/middleware-ssec-3.370.0.tgz#e7b6f7b6fba23c64cfc9c7ceed12613d6694f1cc" + integrity sha1-57b3tvuiPGTPycfO7RJhPWaU8cw= dependencies: - "@aws-sdk/protocol-http" "3.357.0" - "@aws-sdk/signature-v4" "3.357.0" - "@aws-sdk/types" "3.357.0" - tslib "^2.5.0" - -"@aws-sdk/signature-v4@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4/-/signature-v4-3.357.0.tgz#31093e87fda10bee92b6b2784cdba9af9af89e7d" - integrity sha512-itt4/Jh9FqnzK30qIjXFBvM4J7zN4S/AAqsRMnaX7U4f/MV+1YxQHmzimpdMnsCXXs2jqFqKVRu6DewxJ3nbxg== - dependencies: - "@aws-sdk/eventstream-codec" "3.357.0" - "@aws-sdk/is-array-buffer" "3.310.0" - "@aws-sdk/types" "3.357.0" - "@aws-sdk/util-hex-encoding" "3.310.0" - "@aws-sdk/util-middleware" "3.357.0" - "@aws-sdk/util-uri-escape" "3.310.0" - "@aws-sdk/util-utf8" "3.310.0" + "@aws-sdk/types" "3.370.0" + "@smithy/types" "^1.1.0" tslib "^2.5.0" -"@aws-sdk/smithy-client@3.358.0": - version "3.358.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/smithy-client/-/smithy-client-3.358.0.tgz#58353892fb832c10890bf0ebe49830af82f8eebc" - integrity sha512-oqctxWb9yAqCh4ENwUkt9MC01l5uKoy+QCiSUUhQ76k7R3lyGOge9ycyRyoKl+oZWvEpnjZevXQFqEfGzkL7bA== +"@aws-sdk/middleware-user-agent@3.370.0": + version "3.370.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.370.0.tgz#a2bf71baf6407654811a02e4d276a2eec3996fdb" + integrity sha1-or9xuvZAdlSBGgLk0nai7sOZb9s= dependencies: - "@aws-sdk/middleware-stack" "3.357.0" - "@aws-sdk/types" "3.357.0" - "@aws-sdk/util-stream" "3.358.0" - "@smithy/types" "^1.0.0" + "@aws-sdk/types" "3.370.0" + "@aws-sdk/util-endpoints" "3.370.0" + "@smithy/protocol-http" "^1.1.0" + "@smithy/types" "^1.1.0" tslib "^2.5.0" -"@aws-sdk/token-providers@3.358.0": - version "3.358.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/token-providers/-/token-providers-3.358.0.tgz#a4ade4f1edb67307011414df19abb4677a138395" - integrity sha512-vATKNCwNhCSo2LzvtkIzW9Yp2/aKNR032VPtIWlDtWGGFhkzGi4FPS0VTdfefxz4rqPWfBz53mh54d9xylsWVw== +"@aws-sdk/signature-v4-multi-region@3.370.0": + version "3.370.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.370.0.tgz#1a6eee2c9a197ca3d48fcf9bfaa326e8990c6042" + integrity sha1-Gm7uLJoZfKPUj8+b+qMm6JkMYEI= dependencies: - "@aws-sdk/client-sso-oidc" "3.358.0" - "@aws-sdk/property-provider" "3.357.0" - "@aws-sdk/shared-ini-file-loader" "3.357.0" - "@aws-sdk/types" "3.357.0" + "@aws-sdk/types" "3.370.0" + "@smithy/protocol-http" "^1.1.0" + "@smithy/signature-v4" "^1.0.1" + "@smithy/types" "^1.1.0" tslib "^2.5.0" -"@aws-sdk/types@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.357.0.tgz#8491da71a4291cc2661c26a75089e86532b6a3b5" - integrity sha512-/riCRaXg3p71BeWnShrai0y0QTdXcouPSM0Cn1olZbzTf7s71aLEewrc96qFrL70XhY4XvnxMpqQh+r43XIL3g== +"@aws-sdk/token-providers@3.370.0": + version "3.370.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/token-providers/-/token-providers-3.370.0.tgz#e5229f2d116887c90ec103e024583be05c1f506c" + integrity sha1-5SKfLRFoh8kOwQPgJFg74FwfUGw= dependencies: + "@aws-sdk/client-sso-oidc" "3.370.0" + "@aws-sdk/types" "3.370.0" + "@smithy/property-provider" "^1.0.1" + "@smithy/shared-ini-file-loader" "^1.0.1" + "@smithy/types" "^1.1.0" tslib "^2.5.0" -"@aws-sdk/types@^3.222.0": - version "3.254.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.254.0.tgz#760b4a876efa2edcec191dd8b18b989fa717a42e" - integrity sha512-xDEDk6ZAGFO0URPgB6R2mvQANYlojHLjLC9zzOzl07F+uqYS30yZDIg4UFcqPt/x48v7mxlKZpbaZgYI2ZLgGA== - dependencies: - tslib "^2.3.1" - -"@aws-sdk/url-parser@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/url-parser/-/url-parser-3.357.0.tgz#1b197f252d008e201d1e301c8024bed770ef0b2c" - integrity sha512-fAaU6cFsaAba01lCRsRJiYR/LfXvX2wudyEyutBVglE4dWSoSeu3QJNxImIzTBULfbiFhz59++NQ1JUVx88IVg== +"@aws-sdk/types@3.370.0", "@aws-sdk/types@^3.222.0": + version "3.370.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.370.0.tgz#79e0e4927529c957b5c5c2a00f7590a76784a5e4" + integrity sha1-eeDkknUpyVe1xcKgD3WQp2eEpeQ= dependencies: - "@aws-sdk/querystring-parser" "3.357.0" - "@aws-sdk/types" "3.357.0" + "@smithy/types" "^1.1.0" tslib "^2.5.0" "@aws-sdk/util-arn-parser@3.310.0": version "3.310.0" resolved "https://registry.yarnpkg.com/@aws-sdk/util-arn-parser/-/util-arn-parser-3.310.0.tgz#861ff8810851be52a320ec9e4786f15b5fc74fba" - integrity sha512-jL8509owp/xB9+Or0pvn3Fe+b94qfklc2yPowZZIFAkFcCSIdkIglz18cPDWnYAcy9JGewpMS1COXKIUhZkJsA== - dependencies: - tslib "^2.5.0" - -"@aws-sdk/util-base64@3.310.0": - version "3.310.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-base64/-/util-base64-3.310.0.tgz#d0fd49aff358c5a6e771d0001c63b1f97acbe34c" - integrity sha512-v3+HBKQvqgdzcbL+pFswlx5HQsd9L6ZTlyPVL2LS9nNXnCcR3XgGz9jRskikRUuUvUXtkSG1J88GAOnJ/apTPg== - dependencies: - "@aws-sdk/util-buffer-from" "3.310.0" - tslib "^2.5.0" - -"@aws-sdk/util-body-length-browser@3.310.0": - version "3.310.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.310.0.tgz#3fca9d2f73c058edf1907e4a1d99a392fdd23eca" - integrity sha512-sxsC3lPBGfpHtNTUoGXMQXLwjmR0zVpx0rSvzTPAuoVILVsp5AU/w5FphNPxD5OVIjNbZv9KsKTuvNTiZjDp9g== - dependencies: - tslib "^2.5.0" - -"@aws-sdk/util-body-length-node@3.310.0": - version "3.310.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-body-length-node/-/util-body-length-node-3.310.0.tgz#4846ae72834ab0636f29f89fc1878520f6543fed" - integrity sha512-2tqGXdyKhyA6w4zz7UPoS8Ip+7sayOg9BwHNidiGm2ikbDxm1YrCfYXvCBdwaJxa4hJfRVz+aL9e+d3GqPI9pQ== - dependencies: - tslib "^2.5.0" - -"@aws-sdk/util-buffer-from@3.310.0": - version "3.310.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-buffer-from/-/util-buffer-from-3.310.0.tgz#7a72cb965984d3c6a7e256ae6cf1621f52e54a57" - integrity sha512-i6LVeXFtGih5Zs8enLrt+ExXY92QV25jtEnTKHsmlFqFAuL3VBeod6boeMXkN2p9lbSVVQ1sAOOYZOHYbYkntw== - dependencies: - "@aws-sdk/is-array-buffer" "3.310.0" - tslib "^2.5.0" - -"@aws-sdk/util-config-provider@3.310.0": - version "3.310.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-config-provider/-/util-config-provider-3.310.0.tgz#ff21f73d4774cfd7bd16ae56f905828600dda95f" - integrity sha512-xIBaYo8dwiojCw8vnUcIL4Z5tyfb1v3yjqyJKJWV/dqKUFOOS0U591plmXbM+M/QkXyML3ypon1f8+BoaDExrg== - dependencies: - tslib "^2.5.0" - -"@aws-sdk/util-defaults-mode-browser@3.358.0": - version "3.358.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.358.0.tgz#c80f4b87aaf657ccf40ff39913dd1b06087eae9f" - integrity sha512-KGfw64wRL/gROLD4Gatda8cUsaNKNhSnx+yDDcG2WkFlFfLr6FHvTijpRxvIM2Jau2ZhcdGzbegLjsFxviTJAA== - dependencies: - "@aws-sdk/property-provider" "3.357.0" - "@aws-sdk/types" "3.357.0" - bowser "^2.11.0" - tslib "^2.5.0" - -"@aws-sdk/util-defaults-mode-node@3.358.0": - version "3.358.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.358.0.tgz#bcbfcc2c38dcf0e29519de93a6cad7b8360be820" - integrity sha512-2C5on0yppDS0xGpFkHRqfrG9TeTq6ive1hPX1V8UCkiI/TBQYl88XCKCKct8zTcejyK9klZUDGI8QQTan2UWkw== + integrity sha1-hh/4gQhRvlKjIOyeR4bxW1/HT7o= dependencies: - "@aws-sdk/config-resolver" "3.357.0" - "@aws-sdk/credential-provider-imds" "3.357.0" - "@aws-sdk/node-config-provider" "3.357.0" - "@aws-sdk/property-provider" "3.357.0" - "@aws-sdk/types" "3.357.0" tslib "^2.5.0" -"@aws-sdk/util-endpoints@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-endpoints/-/util-endpoints-3.357.0.tgz#eaa7b4481bbd9fc8f13412b308ba4129d8fa2004" - integrity sha512-XHKyS5JClT9su9hDif715jpZiWHQF9gKZXER8tW0gOizU3R9cyWc9EsJ2BRhFNhi7nt/JF/CLUEc5qDx3ETbUw== - dependencies: - "@aws-sdk/types" "3.357.0" - tslib "^2.5.0" - -"@aws-sdk/util-hex-encoding@3.310.0": - version "3.310.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.310.0.tgz#19294c78986c90ae33f04491487863dc1d33bd87" - integrity sha512-sVN7mcCCDSJ67pI1ZMtk84SKGqyix6/0A1Ab163YKn+lFBQRMKexleZzpYzNGxYzmQS6VanP/cfU7NiLQOaSfA== +"@aws-sdk/util-endpoints@3.370.0": + version "3.370.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-endpoints/-/util-endpoints-3.370.0.tgz#bf1f4653c3afc89d4e79aa4895dd3dffbb56c930" + integrity sha1-vx9GU8OvyJ1OeapIld09/7tWyTA= dependencies: + "@aws-sdk/types" "3.370.0" tslib "^2.5.0" "@aws-sdk/util-locate-window@^3.0.0": - version "3.208.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-locate-window/-/util-locate-window-3.208.0.tgz#0f598fc238a1256e4bcb64d01459f03a922dd4c3" - integrity sha512-iua1A2+P7JJEDHVgvXrRJSvsnzG7stYSGQnBVphIUlemwl6nN5D+QrgbjECtrbxRz8asYFHSzhdhECqN+tFiBg== - dependencies: - tslib "^2.3.1" - -"@aws-sdk/util-middleware@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-middleware/-/util-middleware-3.357.0.tgz#1ba478dde5df4e53b231ec6651b8d44c9187f66d" - integrity sha512-pV1krjZs7BdahZBfsCJMatE8kcor7GFsBOWrQgQDm9T0We5b5xPpOO2vxAD0RytBpY8Ky2ELs/+qXMv7l5fWIA== - dependencies: - tslib "^2.5.0" - -"@aws-sdk/util-retry@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-retry/-/util-retry-3.357.0.tgz#25e12e2882b2bbc5a6531c1d9344cb0c93103b3b" - integrity sha512-SUqYJE9msbuOVq+vnUy+t0LH7XuYNFz66dSF8q6tedsbJK4j8tgya0I1Ct3m06ynGrXDJMaj39I7AXCyW9bjtw== - dependencies: - "@aws-sdk/service-error-classification" "3.357.0" - tslib "^2.5.0" - -"@aws-sdk/util-stream@3.358.0": - version "3.358.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-stream/-/util-stream-3.358.0.tgz#5daf9072f4a4535664de6d0bdbe26470eb856595" - integrity sha512-zUhpjxAXV2+0eALlTU6uXRYMs10XYpcYzl3NtLRe4wWgnrOOOZnF/t5LQDoKXOfaMdzwZ+i90+PYr+6JQ58+7g== - dependencies: - "@aws-sdk/fetch-http-handler" "3.357.0" - "@aws-sdk/node-http-handler" "3.357.0" - "@aws-sdk/types" "3.357.0" - "@aws-sdk/util-base64" "3.310.0" - "@aws-sdk/util-buffer-from" "3.310.0" - "@aws-sdk/util-hex-encoding" "3.310.0" - "@aws-sdk/util-utf8" "3.310.0" - tslib "^2.5.0" - -"@aws-sdk/util-uri-escape@3.310.0": version "3.310.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-uri-escape/-/util-uri-escape-3.310.0.tgz#9f942f09a715d8278875013a416295746b6085ba" - integrity sha512-drzt+aB2qo2LgtDoiy/3sVG8w63cgLkqFIa2NFlGpUgHFWTXkqtbgf4L5QdjRGKWhmZsnqkbtL7vkSWEcYDJ4Q== + resolved "https://registry.yarnpkg.com/@aws-sdk/util-locate-window/-/util-locate-window-3.310.0.tgz#b071baf050301adee89051032bd4139bba32cc40" + integrity sha1-sHG68FAwGt7okFEDK9QTm7oyzEA= dependencies: tslib "^2.5.0" -"@aws-sdk/util-user-agent-browser@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.357.0.tgz#21c3e6c1a3d610dd279952d3ce00909775019be5" - integrity sha512-JHaWlNIUkPNvXkqeDOrqFzAlAgdwZK5mZw7FQnCRvf8tdSogpGZSkuyb9Z6rLD9gC40Srbc2nepO1cFpeMsDkA== +"@aws-sdk/util-user-agent-browser@3.370.0": + version "3.370.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.370.0.tgz#df144f5f1a65578842b79d49555c754a531d85f0" + integrity sha1-3xRPXxplV4hCt51JVVx1SlMdhfA= dependencies: - "@aws-sdk/types" "3.357.0" + "@aws-sdk/types" "3.370.0" + "@smithy/types" "^1.1.0" bowser "^2.11.0" tslib "^2.5.0" -"@aws-sdk/util-user-agent-node@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.357.0.tgz#a656cebce558b602e753e45a3b8174dc7c0f1fcf" - integrity sha512-RdpQoaJWQvcS99TVgSbT451iGrlH4qpWUWFA9U1IRhxOSsmC1hz8ME7xc8nci9SREx/ZlfT3ai6LpoAzAtIEMA== +"@aws-sdk/util-user-agent-node@3.370.0": + version "3.370.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.370.0.tgz#96d8420b42cbebd498de8b94886340d11c97a34b" + integrity sha1-lthCC0LL69SY3ouUiGNA0RyXo0s= dependencies: - "@aws-sdk/node-config-provider" "3.357.0" - "@aws-sdk/types" "3.357.0" + "@aws-sdk/types" "3.370.0" + "@smithy/node-config-provider" "^1.0.1" + "@smithy/types" "^1.1.0" tslib "^2.5.0" "@aws-sdk/util-utf8-browser@^3.0.0": - version "3.188.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.188.0.tgz#484762bd600401350e148277731d6744a4a92225" - integrity sha512-jt627x0+jE+Ydr9NwkFstg3cUvgWh56qdaqAMDsqgRlKD21md/6G226z/Qxl7lb1VEW2LlmCx43ai/37Qwcj2Q== + version "3.259.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz#3275a6f5eb334f96ca76635b961d3c50259fd9ff" + integrity sha1-MnWm9eszT5bKdmNblh08UCWf2f8= dependencies: tslib "^2.3.1" -"@aws-sdk/util-utf8@3.310.0": - version "3.310.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-utf8/-/util-utf8-3.310.0.tgz#4a7b9dcebb88e830d3811aeb21e9a6df4273afb4" - integrity sha512-DnLfFT8uCO22uOJc0pt0DsSNau1GTisngBCDw8jQuWT5CqogMJu4b/uXmwEqfj8B3GX6Xsz8zOd6JpRlPftQoA== - dependencies: - "@aws-sdk/util-buffer-from" "3.310.0" - tslib "^2.5.0" - -"@aws-sdk/util-waiter@3.357.0": - version "3.357.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-waiter/-/util-waiter-3.357.0.tgz#31fdaf289ed60a633178b39e3b258f9b42a1cbe3" - integrity sha512-jQQGA5G8bm0JP5C4U85VzMpkFHdeeT7fOSUncXLG9Sh8Ambzi4XTud8m5/dA7aNJkvPwZeIF9QdgWCOzpkp1xA== - dependencies: - "@aws-sdk/abort-controller" "3.357.0" - "@aws-sdk/types" "3.357.0" - tslib "^2.5.0" - "@aws-sdk/xml-builder@3.310.0": version "3.310.0" resolved "https://registry.yarnpkg.com/@aws-sdk/xml-builder/-/xml-builder-3.310.0.tgz#f0236f2103b438d16117e0939a6305ad69b7ff76" - integrity sha512-TqELu4mOuSIKQCqj63fGVs86Yh+vBx5nHRpWKNUNhB2nPTpfbziTs5c1X358be3peVWA4wPxW7Nt53KIg1tnNw== + integrity sha1-8CNvIQO0ONFhF+CTmmMFrWm3/3Y= dependencies: tslib "^2.5.0" -"@babel/code-frame@7.12.11": - version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" - integrity sha1-9K1DWqJj25NbjxDyxVLSP7cWpj8= - dependencies: - "@babel/highlight" "^7.10.4" - "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" @@ -1001,6 +619,14 @@ "@babel/highlight" "^7.22.13" chalk "^2.4.2" +"@babel/code-frame@^7.23.5": + version "7.23.5" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.23.5.tgz#9009b69a8c602293476ad598ff53e4562e15c244" + integrity sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA== + dependencies: + "@babel/highlight" "^7.23.4" + chalk "^2.4.2" + "@babel/compat-data@^7.17.10": version "7.17.10" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.10.tgz#711dc726a492dfc8be8220028b1b92482362baab" @@ -1016,6 +642,11 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.20.5.tgz#86f172690b093373a933223b4745deeb6049e733" integrity sha512-KZXo2t10+/jxmkhNXc7pZTqRvSOIvVv/+lJwHS+B2rErwOyjuVRh60yVpb7liQ1U5t7lLJ1bz+t8tSypUZdm0g== +"@babel/compat-data@^7.23.5": + version "7.23.5" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.23.5.tgz#ffb878728bb6bdcb6f4510aa51b1be9afb8cfd98" + integrity sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw== + "@babel/core@^7.11.6": version "7.19.3" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.19.3.tgz#2519f62a51458f43b682d61583c3810e7dcee64c" @@ -1079,6 +710,27 @@ json5 "^2.2.1" semver "^6.3.0" +"@babel/core@^7.20.7": + version "7.23.7" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.7.tgz#4d8016e06a14b5f92530a13ed0561730b5c6483f" + integrity sha512-+UpDgowcmqe36d4NwqvKsyPMlOLNGMsfMmQ5WGCu+siCe3t3dfe9njrzGfdN4qq+bcNUt0+Vw6haRxBOycs4dw== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.23.5" + "@babel/generator" "^7.23.6" + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helpers" "^7.23.7" + "@babel/parser" "^7.23.6" + "@babel/template" "^7.22.15" + "@babel/traverse" "^7.23.7" + "@babel/types" "^7.23.6" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + "@babel/generator@^7.18.2": version "7.18.2" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.2.tgz#33873d6f89b21efe2da63fe554460f3df1c5880d" @@ -1097,6 +749,16 @@ "@jridgewell/gen-mapping" "^0.3.2" jsesc "^2.5.1" +"@babel/generator@^7.19.4": + version "7.23.5" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.5.tgz#17d0a1ea6b62f351d281350a5f80b87a810c4755" + integrity sha512-BPssCHrBD+0YrxviOa3QzpqwhNIXKEtOa2jQrm4FlmkC2apYgRnQcmPWiGZDlGxiNtltnUFolMe8497Esry+jA== + dependencies: + "@babel/types" "^7.23.5" + "@jridgewell/gen-mapping" "^0.3.2" + "@jridgewell/trace-mapping" "^0.3.17" + jsesc "^2.5.1" + "@babel/generator@^7.20.5": version "7.20.5" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.20.5.tgz#cb25abee3178adf58d6814b68517c62bdbfdda95" @@ -1116,12 +778,15 @@ "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" -"@babel/helper-annotate-as-pure@^7.16.0": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb" - integrity sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA== +"@babel/generator@^7.23.6": + version "7.23.6" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.6.tgz#9e1fca4811c77a10580d17d26b57b036133f3c2e" + integrity sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw== dependencies: - "@babel/types" "^7.18.6" + "@babel/types" "^7.23.6" + "@jridgewell/gen-mapping" "^0.3.2" + "@jridgewell/trace-mapping" "^0.3.17" + jsesc "^2.5.1" "@babel/helper-compilation-targets@^7.18.2": version "7.18.2" @@ -1153,6 +818,17 @@ browserslist "^4.21.3" semver "^6.3.0" +"@babel/helper-compilation-targets@^7.23.6": + version "7.23.6" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz#4d79069b16cbcf1461289eccfbbd81501ae39991" + integrity sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ== + dependencies: + "@babel/compat-data" "^7.23.5" + "@babel/helper-validator-option" "^7.23.5" + browserslist "^4.22.2" + lru-cache "^5.1.1" + semver "^6.3.1" + "@babel/helper-environment-visitor@^7.16.7": version "7.18.2" resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.2.tgz#8a6d2dedb53f6bf248e31b4baf38739ee4a637bd" @@ -1168,7 +844,7 @@ resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== -"@babel/helper-function-name@^7.23.0": +"@babel/helper-function-name@^7.19.0", "@babel/helper-function-name@^7.23.0": version "7.23.0" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== @@ -1176,26 +852,33 @@ "@babel/template" "^7.22.15" "@babel/types" "^7.23.0" -"@babel/helper-hoist-variables@^7.22.5": +"@babel/helper-hoist-variables@^7.18.6", "@babel/helper-hoist-variables@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== dependencies: "@babel/types" "^7.22.5" -"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.16.0", "@babel/helper-module-imports@^7.18.6": +"@babel/helper-module-imports@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437" + integrity sha1-JWEqgJGpmXBEYciiItDv7F0JFDc= + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-module-imports@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== dependencies: "@babel/types" "^7.18.6" -"@babel/helper-module-imports@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437" - integrity sha1-JWEqgJGpmXBEYciiItDv7F0JFDc= +"@babel/helper-module-imports@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0" + integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w== dependencies: - "@babel/types" "^7.16.7" + "@babel/types" "^7.22.15" "@babel/helper-module-transforms@^7.18.0": version "7.18.0" @@ -1239,6 +922,17 @@ "@babel/traverse" "^7.20.1" "@babel/types" "^7.20.2" +"@babel/helper-module-transforms@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz#d7d12c3c5d30af5b3c0fcab2a6d5217773e2d0f1" + integrity sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-simple-access" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/helper-validator-identifier" "^7.22.20" + "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.8.0": version "7.17.12" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.17.12.tgz#86c2347da5acbf5583ba0a10aed4c9bf9da9cf96" @@ -1254,6 +948,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz#d1b9000752b18d0877cff85a5c376ce5c3121629" integrity sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ== +"@babel/helper-plugin-utils@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" + integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== + "@babel/helper-simple-access@^7.17.7": version "7.18.2" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.18.2.tgz#4dc473c2169ac3a1c9f4a51cfcd091d1c36fcff9" @@ -1275,6 +974,13 @@ dependencies: "@babel/types" "^7.20.2" +"@babel/helper-simple-access@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de" + integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w== + dependencies: + "@babel/types" "^7.22.5" + "@babel/helper-split-export-declaration@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b" @@ -1306,6 +1012,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f" integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw== +"@babel/helper-string-parser@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz#9478c707febcbbe1ddb38a3d91a2e054ae622d83" + integrity sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ== + "@babel/helper-validator-identifier@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" @@ -1331,6 +1042,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz#bf0d2b5a509b1f336099e4ff36e1a63aa5db4db8" integrity sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw== +"@babel/helper-validator-option@^7.23.5": + version "7.23.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307" + integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== + "@babel/helpers@^7.18.2": version "7.18.2" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.18.2.tgz#970d74f0deadc3f5a938bfa250738eb4ac889384" @@ -1358,7 +1074,16 @@ "@babel/traverse" "^7.20.5" "@babel/types" "^7.20.5" -"@babel/highlight@^7.10.4", "@babel/highlight@^7.16.7": +"@babel/helpers@^7.23.7": + version "7.23.8" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.8.tgz#fc6b2d65b16847fd50adddbd4232c76378959e34" + integrity sha512-KDqYz4PiOWvDFrdHLPhKtCThtIcKVy6avWD2oG4GEvyQ+XDZwHD4YQd+H2vNMnq2rkdxsDkU82T+Vk8U/WXHRQ== + dependencies: + "@babel/template" "^7.22.15" + "@babel/traverse" "^7.23.7" + "@babel/types" "^7.23.6" + +"@babel/highlight@^7.16.7": version "7.17.12" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.17.12.tgz#257de56ee5afbd20451ac0a75686b6b404257351" integrity sha1-JX3lbuWvvSBFGsCnVoa2tAQlc1E= @@ -1385,6 +1110,15 @@ chalk "^2.4.2" js-tokens "^4.0.0" +"@babel/highlight@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.23.4.tgz#edaadf4d8232e1a961432db785091207ead0621b" + integrity sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A== + dependencies: + "@babel/helper-validator-identifier" "^7.22.20" + chalk "^2.4.2" + js-tokens "^4.0.0" + "@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.18.0": version "7.18.4" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.4.tgz#6774231779dd700e0af29f6ad8d479582d7ce5ef" @@ -1395,6 +1129,11 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.19.4.tgz#03c4339d2b8971eb3beca5252bafd9b9f79db3dc" integrity sha512-qpVT7gtuOLjWeDTKLkJ6sryqLliBaFpAtGeqw5cs5giLldvh+Ch0plqnUMKoVAUS6ZEueQQiZV+p5pxtPitEsA== +"@babel/parser@^7.19.4": + version "7.23.5" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.5.tgz#37dee97c4752af148e1d38c34b856b2507660563" + integrity sha512-hOOqoiNXrmGdFbhgCzu6GiURxUgM27Xwd/aPuu8RfHEZPBzL1Z54okAHAQjXfcQNwvrlkAmAp4SlRTZ45vlthQ== + "@babel/parser@^7.20.5": version "7.20.5" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.5.tgz#7f3c7335fe417665d929f34ae5dceae4c04015e8" @@ -1405,6 +1144,11 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.0.tgz#da950e622420bf96ca0d0f2909cdddac3acd8719" integrity sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw== +"@babel/parser@^7.23.6": + version "7.23.6" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.6.tgz#ba1c9e512bda72a47e285ae42aff9d2a635a9e3b" + integrity sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ== + "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" @@ -1503,6 +1247,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.19.0" +"@babel/plugin-syntax-typescript@^7.20.0": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz#24f460c85dbbc983cd2b9c4994178bcc01df958f" + integrity sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-typescript@^7.7.2": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.18.6.tgz#1c09cd25795c7c2b8a4ba9ae49394576d4133285" @@ -1519,17 +1270,46 @@ regenerator-runtime "^0.13.10" "@babel/runtime-corejs3@^7.20.13", "@babel/runtime-corejs3@^7.20.7", "@babel/runtime-corejs3@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.22.5.tgz#bbc769b48edb2bdfd404b65ad1fc3952bf33e3c2" - integrity sha512-TNPDN6aBFaUox2Lu+H/Y1dKKQgr4ucz/FGyCz67RVYLsBpVpUFf1dDngzg+Od8aqbrqwyztkaZjtWCZEUOT8zA== + version "7.22.6" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.22.6.tgz#e8e625eb3db29491e0326b3aeb9929c43b270ae4" + integrity sha1-6OYl6z2ylJHgMms665kpxDsnCuQ= + dependencies: + core-js-pure "^3.30.2" + regenerator-runtime "^0.13.11" + +"@babel/runtime-corejs3@^7.22.15", "@babel/runtime-corejs3@^7.23.7": + version "7.23.8" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.23.8.tgz#b8aa3d47570bdd08fed77fdfd69542118af0df26" + integrity sha1-uKo9R1cL3Qj+13/f1pVCEYrw3yY= dependencies: core-js-pure "^3.30.2" + regenerator-runtime "^0.14.0" + +"@babel/runtime@^7.0.0", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.4", "@babel/runtime@^7.12.5", "@babel/runtime@^7.15.4", "@babel/runtime@^7.18.3", "@babel/runtime@^7.18.9", "@babel/runtime@^7.20.13", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.21.0.tgz#5b55c9d394e5fcf304909a8b00c07dc217b56673" + integrity sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw== + dependencies: + regenerator-runtime "^0.13.11" + +"@babel/runtime@^7.1.2": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.15.tgz#38f46494ccf6cf020bd4eed7124b425e83e523b8" + integrity sha1-OPRklMz2zwIL1O7XEktCXoPlI7g= + dependencies: + regenerator-runtime "^0.14.0" + +"@babel/runtime@^7.12.1": + version "7.22.6" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.6.tgz#57d64b9ae3cff1d67eb067ae117dac087f5bd438" + integrity sha1-V9ZLmuPP8dZ+sGeuEX2sCH9b1Dg= + dependencies: regenerator-runtime "^0.13.11" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.4", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.15.4", "@babel/runtime@^7.18.3", "@babel/runtime@^7.18.9", "@babel/runtime@^7.20.13", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.10.tgz#ae3e9631fd947cb7e3610d3e9d8fef5f76696682" - integrity sha512-21t/fkKLMZI4pqP2wlmsQAWnYW1PDyKyyUV4vCi+B25ydmdaYTKXPwCj0BzSUnZf4seIiYvSA3jcZ3gdsMFkLQ== +"@babel/runtime@^7.20.7": + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.2.tgz#062b0ac103261d68a966c4c7baf2ae3e62ec3885" + integrity sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg== dependencies: regenerator-runtime "^0.14.0" @@ -1560,7 +1340,7 @@ "@babel/parser" "^7.22.15" "@babel/types" "^7.22.15" -"@babel/traverse@^7.18.0", "@babel/traverse@^7.18.2", "@babel/traverse@^7.19.0", "@babel/traverse@^7.19.3", "@babel/traverse@^7.19.4", "@babel/traverse@^7.20.1", "@babel/traverse@^7.20.5", "@babel/traverse@^7.4.5", "@babel/traverse@^7.7.2": +"@babel/traverse@^7.18.0", "@babel/traverse@^7.18.2": version "7.23.2" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.2.tgz#329c7a06735e144a506bdb2cad0268b7f46f4ad8" integrity sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw== @@ -1576,6 +1356,54 @@ debug "^4.1.0" globals "^11.1.0" +"@babel/traverse@^7.19.0", "@babel/traverse@^7.19.3", "@babel/traverse@^7.19.4", "@babel/traverse@^7.7.2": + version "7.19.4" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.19.4.tgz#f117820e18b1e59448a6c1fa9d0ff08f7ac459a8" + integrity sha512-w3K1i+V5u2aJUOXBFFC5pveFLmtq1s3qcdDNC2qRI6WPBQIDaKFqXxDEqDO/h1dQ3HjsZoZMyIy6jGLq0xtw+g== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.19.4" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.19.0" + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/parser" "^7.19.4" + "@babel/types" "^7.19.4" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/traverse@^7.20.1", "@babel/traverse@^7.20.5": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.20.5.tgz#78eb244bea8270fdda1ef9af22a5d5e5b7e57133" + integrity sha512-WM5ZNN3JITQIq9tFZaw1ojLU3WgWdtkxnhM1AegMS+PvHjkM5IXjmYEGY7yukz5XS4sJyEf2VzWjI8uAavhxBQ== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.20.5" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.19.0" + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/parser" "^7.20.5" + "@babel/types" "^7.20.5" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/traverse@^7.23.7": + version "7.23.7" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.7.tgz#9a7bf285c928cb99b5ead19c3b1ce5b310c9c305" + integrity sha512-tY3mM8rH9jM0YHFGyfC0/xf+SB5eKUu7HPj7/k3fpi9dAlsMc5YbQvDi0Sh2QTPXqMhyaAtzAr807TIyfQrmyg== + dependencies: + "@babel/code-frame" "^7.23.5" + "@babel/generator" "^7.23.6" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/parser" "^7.23.6" + "@babel/types" "^7.23.6" + debug "^4.3.1" + globals "^11.1.0" + "@babel/types@^7.0.0", "@babel/types@^7.16.7", "@babel/types@^7.18.0", "@babel/types@^7.18.2", "@babel/types@^7.3.0", "@babel/types@^7.3.3": version "7.18.4" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.4.tgz#27eae9b9fd18e9dccc3f9d6ad051336f307be354" @@ -1611,12 +1439,30 @@ "@babel/helper-validator-identifier" "^7.22.20" to-fast-properties "^2.0.0" +"@babel/types@^7.23.5": + version "7.23.5" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.5.tgz#48d730a00c95109fa4393352705954d74fb5b602" + integrity sha512-ON5kSOJwVO6xXVRTvOI0eOnWe7VdUcIpsovGo9U/Br4Ie4UVFQTboO2cYnDhAGU6Fp+UxSiT+pMft0SMHfuq6w== + dependencies: + "@babel/helper-string-parser" "^7.23.4" + "@babel/helper-validator-identifier" "^7.22.20" + to-fast-properties "^2.0.0" + +"@babel/types@^7.23.6": + version "7.23.6" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.6.tgz#be33fdb151e1f5a56877d704492c240fc71c7ccd" + integrity sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg== + dependencies: + "@babel/helper-string-parser" "^7.23.4" + "@babel/helper-validator-identifier" "^7.22.20" + to-fast-properties "^2.0.0" + "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha1-daLotRy3WKdVPWgEpZMteqznXDk= -"@braintree/sanitize-url@=6.0.2", "@braintree/sanitize-url@^6.0.0": +"@braintree/sanitize-url@=6.0.2", "@braintree/sanitize-url@=7.0.0", "@braintree/sanitize-url@^6.0.0": version "6.0.2" resolved "https://registry.yarnpkg.com/@braintree/sanitize-url/-/sanitize-url-6.0.2.tgz#6110f918d273fe2af8ea1c4398a88774bb9fc12f" integrity sha512-Tbsj02wXCbqGmzdnXNk0SOF19ChhRU70BsroIi4Pm6Ehp56in6vch94mfbdQ17DozxkL3BAVjbZ4Qc1a0HFRAg== @@ -1820,6 +1666,16 @@ human-id "^1.0.2" prettier "^2.7.1" +"@daviereid/next-mdx-remote@^4.4.2": + version "4.4.2" + resolved "https://registry.yarnpkg.com/@daviereid/next-mdx-remote/-/next-mdx-remote-4.4.2.tgz#eb3ae1ecc4f9e6f321e56dd364776cfd45956fa8" + integrity sha512-uhQ8PpQSySd3Jw2vI0FvAJ0u+d/XlUJwdeT4clIWjNuuYqQ0sMwtFxwjuO1m1k/m0X01NoI5v/DYxiY569EneQ== + dependencies: + "@mdx-js/mdx" "^3.0.0" + "@mdx-js/react" "^3.0.0" + vfile "^6.0.0" + vfile-matter "^5.0.0" + "@emotion/babel-plugin@^11.10.5": version "11.10.5" resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.10.5.tgz#65fa6e1790ddc9e23cc22658a4c5dea423c55c3c" @@ -1854,7 +1710,7 @@ resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.9.0.tgz#c5153d50401ee3c027a57a177bc269b16d889cb7" integrity sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ== -"@emotion/is-prop-valid@^1.1.0", "@emotion/is-prop-valid@^1.2.0": +"@emotion/is-prop-valid@^1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz#7f2d35c97891669f7e276eb71c83376a5dc44c83" integrity sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg== @@ -1891,104 +1747,479 @@ "@emotion/utils" "^1.2.0" csstype "^3.0.2" -"@emotion/sheet@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.2.1.tgz#0767e0305230e894897cadb6c8df2c51e61a6c2c" - integrity sha512-zxRBwl93sHMsOj4zs+OslQKg/uhF38MB+OMKoCrVuS0nyTkqnau+BM3WGEoOptg9Oz45T/aIGs1qbVAsEFo3nA== +"@emotion/sheet@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.2.1.tgz#0767e0305230e894897cadb6c8df2c51e61a6c2c" + integrity sha512-zxRBwl93sHMsOj4zs+OslQKg/uhF38MB+OMKoCrVuS0nyTkqnau+BM3WGEoOptg9Oz45T/aIGs1qbVAsEFo3nA== + +"@emotion/styled@^11.10.5": + version "11.10.5" + resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-11.10.5.tgz#1fe7bf941b0909802cb826457e362444e7e96a79" + integrity sha512-8EP6dD7dMkdku2foLoruPCNkRevzdcBaY6q0l0OsbyJK+x8D9HWjX27ARiSIKNF634hY9Zdoedh8bJCiva8yZw== + dependencies: + "@babel/runtime" "^7.18.3" + "@emotion/babel-plugin" "^11.10.5" + "@emotion/is-prop-valid" "^1.2.0" + "@emotion/serialize" "^1.1.1" + "@emotion/use-insertion-effect-with-fallbacks" "^1.0.0" + "@emotion/utils" "^1.2.0" + +"@emotion/unitless@^0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.8.0.tgz#a4a36e9cbdc6903737cd20d38033241e1b8833db" + integrity sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw== + +"@emotion/use-insertion-effect-with-fallbacks@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.0.tgz#ffadaec35dbb7885bd54de3fa267ab2f860294df" + integrity sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A== + +"@emotion/utils@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.2.0.tgz#9716eaccbc6b5ded2ea5a90d65562609aab0f561" + integrity sha512-sn3WH53Kzpw8oQ5mgMmIzzyAaH2ZqFEbozVVBSYp538E06OSE6ytOp7pRAjNQR+Q/orwqdQYJSe2m3hCOeznkw== + +"@emotion/weak-memoize@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.3.0.tgz#ea89004119dc42db2e1dba0f97d553f7372f6fcb" + integrity sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg== + +"@esbuild/aix-ppc64@0.19.11": + version "0.19.11" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.19.11.tgz#2acd20be6d4f0458bc8c784103495ff24f13b1d3" + integrity sha512-FnzU0LyE3ySQk7UntJO4+qIiQgI7KoODnZg5xzXIrFJlKd2P2gwHsHY4927xj9y5PJmJSzULiUCWmv7iWnNa7g== + +"@esbuild/android-arm64@0.17.6": + version "0.17.6" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.17.6.tgz#b11bd4e4d031bb320c93c83c137797b2be5b403b" + integrity sha512-YnYSCceN/dUzUr5kdtUzB+wZprCafuD89Hs0Aqv9QSdwhYQybhXTaSTcrl6X/aWThn1a/j0eEpUBGOE7269REg== + +"@esbuild/android-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz#984b4f9c8d0377443cc2dfcef266d02244593622" + integrity sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ== + +"@esbuild/android-arm64@0.19.11": + version "0.19.11" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.19.11.tgz#b45d000017385c9051a4f03e17078abb935be220" + integrity sha512-aiu7K/5JnLj//KOnOfEZ0D90obUkRzDMyqd/wNAUQ34m4YUPVhRZpnqKV9uqDGxT7cToSDnIHsGooyIczu9T+Q== + +"@esbuild/android-arm@0.17.6": + version "0.17.6" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.17.6.tgz#ac6b5674da2149997f6306b3314dae59bbe0ac26" + integrity sha512-bSC9YVUjADDy1gae8RrioINU6e1lCkg3VGVwm0QQ2E1CWcC4gnMce9+B6RpxuSsrsXsk1yojn7sp1fnG8erE2g== + +"@esbuild/android-arm@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.18.20.tgz#fedb265bc3a589c84cc11f810804f234947c3682" + integrity sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw== + +"@esbuild/android-arm@0.19.11": + version "0.19.11" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.19.11.tgz#f46f55414e1c3614ac682b29977792131238164c" + integrity sha512-5OVapq0ClabvKvQ58Bws8+wkLCV+Rxg7tUVbo9xu034Nm536QTII4YzhaFriQ7rMrorfnFKUsArD2lqKbFY4vw== + +"@esbuild/android-x64@0.17.6": + version "0.17.6" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.17.6.tgz#18c48bf949046638fc209409ff684c6bb35a5462" + integrity sha512-MVcYcgSO7pfu/x34uX9u2QIZHmXAB7dEiLQC5bBl5Ryqtpj9lT2sg3gNDEsrPEmimSJW2FXIaxqSQ501YLDsZQ== + +"@esbuild/android-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.18.20.tgz#35cf419c4cfc8babe8893d296cd990e9e9f756f2" + integrity sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg== + +"@esbuild/android-x64@0.19.11": + version "0.19.11" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.19.11.tgz#bfc01e91740b82011ef503c48f548950824922b2" + integrity sha512-eccxjlfGw43WYoY9QgB82SgGgDbibcqyDTlk3l3C0jOVHKxrjdc9CTwDUQd0vkvYg5um0OH+GpxYvp39r+IPOg== + +"@esbuild/darwin-arm64@0.17.6": + version "0.17.6" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.17.6.tgz#b3fe19af1e4afc849a07c06318124e9c041e0646" + integrity sha512-bsDRvlbKMQMt6Wl08nHtFz++yoZHsyTOxnjfB2Q95gato+Yi4WnRl13oC2/PJJA9yLCoRv9gqT/EYX0/zDsyMA== + +"@esbuild/darwin-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz#08172cbeccf95fbc383399a7f39cfbddaeb0d7c1" + integrity sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA== + +"@esbuild/darwin-arm64@0.19.11": + version "0.19.11" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.19.11.tgz#533fb7f5a08c37121d82c66198263dcc1bed29bf" + integrity sha512-ETp87DRWuSt9KdDVkqSoKoLFHYTrkyz2+65fj9nfXsaV3bMhTCjtQfw3y+um88vGRKRiF7erPrh/ZuIdLUIVxQ== + +"@esbuild/darwin-x64@0.17.6": + version "0.17.6" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.17.6.tgz#f4dacd1ab21e17b355635c2bba6a31eba26ba569" + integrity sha512-xh2A5oPrYRfMFz74QXIQTQo8uA+hYzGWJFoeTE8EvoZGHb+idyV4ATaukaUvnnxJiauhs/fPx3vYhU4wiGfosg== + +"@esbuild/darwin-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz#d70d5790d8bf475556b67d0f8b7c5bdff053d85d" + integrity sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ== + +"@esbuild/darwin-x64@0.19.11": + version "0.19.11" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.19.11.tgz#62f3819eff7e4ddc656b7c6815a31cf9a1e7d98e" + integrity sha512-fkFUiS6IUK9WYUO/+22omwetaSNl5/A8giXvQlcinLIjVkxwTLSktbF5f/kJMftM2MJp9+fXqZ5ezS7+SALp4g== + +"@esbuild/freebsd-arm64@0.17.6": + version "0.17.6" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.6.tgz#ea4531aeda70b17cbe0e77b0c5c36298053855b4" + integrity sha512-EnUwjRc1inT4ccZh4pB3v1cIhohE2S4YXlt1OvI7sw/+pD+dIE4smwekZlEPIwY6PhU6oDWwITrQQm5S2/iZgg== + +"@esbuild/freebsd-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz#98755cd12707f93f210e2494d6a4b51b96977f54" + integrity sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw== + +"@esbuild/freebsd-arm64@0.19.11": + version "0.19.11" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.11.tgz#d478b4195aa3ca44160272dab85ef8baf4175b4a" + integrity sha512-lhoSp5K6bxKRNdXUtHoNc5HhbXVCS8V0iZmDvyWvYq9S5WSfTIHU2UGjcGt7UeS6iEYp9eeymIl5mJBn0yiuxA== + +"@esbuild/freebsd-x64@0.17.6": + version "0.17.6" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.17.6.tgz#1896170b3c9f63c5e08efdc1f8abc8b1ed7af29f" + integrity sha512-Uh3HLWGzH6FwpviUcLMKPCbZUAFzv67Wj5MTwK6jn89b576SR2IbEp+tqUHTr8DIl0iDmBAf51MVaP7pw6PY5Q== + +"@esbuild/freebsd-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz#c1eb2bff03915f87c29cece4c1a7fa1f423b066e" + integrity sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ== + +"@esbuild/freebsd-x64@0.19.11": + version "0.19.11" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.19.11.tgz#7bdcc1917409178257ca6a1a27fe06e797ec18a2" + integrity sha512-JkUqn44AffGXitVI6/AbQdoYAq0TEullFdqcMY/PCUZ36xJ9ZJRtQabzMA+Vi7r78+25ZIBosLTOKnUXBSi1Kw== + +"@esbuild/linux-arm64@0.17.6": + version "0.17.6" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.17.6.tgz#967dfb951c6b2de6f2af82e96e25d63747f75079" + integrity sha512-bUR58IFOMJX523aDVozswnlp5yry7+0cRLCXDsxnUeQYJik1DukMY+apBsLOZJblpH+K7ox7YrKrHmJoWqVR9w== + +"@esbuild/linux-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz#bad4238bd8f4fc25b5a021280c770ab5fc3a02a0" + integrity sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA== + +"@esbuild/linux-arm64@0.19.11": + version "0.19.11" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.19.11.tgz#58ad4ff11685fcc735d7ff4ca759ab18fcfe4545" + integrity sha512-LneLg3ypEeveBSMuoa0kwMpCGmpu8XQUh+mL8XXwoYZ6Be2qBnVtcDI5azSvh7vioMDhoJFZzp9GWp9IWpYoUg== + +"@esbuild/linux-arm@0.17.6": + version "0.17.6" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.17.6.tgz#097a0ee2be39fed3f37ea0e587052961e3bcc110" + integrity sha512-7YdGiurNt7lqO0Bf/U9/arrPWPqdPqcV6JCZda4LZgEn+PTQ5SMEI4MGR52Bfn3+d6bNEGcWFzlIxiQdS48YUw== + +"@esbuild/linux-arm@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz#3e617c61f33508a27150ee417543c8ab5acc73b0" + integrity sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg== + +"@esbuild/linux-arm@0.19.11": + version "0.19.11" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.19.11.tgz#ce82246d873b5534d34de1e5c1b33026f35e60e3" + integrity sha512-3CRkr9+vCV2XJbjwgzjPtO8T0SZUmRZla+UL1jw+XqHZPkPgZiyWvbDvl9rqAN8Zl7qJF0O/9ycMtjU67HN9/Q== + +"@esbuild/linux-ia32@0.17.6": + version "0.17.6" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.17.6.tgz#a38a789d0ed157495a6b5b4469ec7868b59e5278" + integrity sha512-ujp8uoQCM9FRcbDfkqECoARsLnLfCUhKARTP56TFPog8ie9JG83D5GVKjQ6yVrEVdMie1djH86fm98eY3quQkQ== + +"@esbuild/linux-ia32@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz#699391cccba9aee6019b7f9892eb99219f1570a7" + integrity sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA== + +"@esbuild/linux-ia32@0.19.11": + version "0.19.11" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.19.11.tgz#cbae1f313209affc74b80f4390c4c35c6ab83fa4" + integrity sha512-caHy++CsD8Bgq2V5CodbJjFPEiDPq8JJmBdeyZ8GWVQMjRD0sU548nNdwPNvKjVpamYYVL40AORekgfIubwHoA== + +"@esbuild/linux-loong64@0.17.6": + version "0.17.6" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.17.6.tgz#ae3983d0fb4057883c8246f57d2518c2af7cf2ad" + integrity sha512-y2NX1+X/Nt+izj9bLoiaYB9YXT/LoaQFYvCkVD77G/4F+/yuVXYCWz4SE9yr5CBMbOxOfBcy/xFL4LlOeNlzYQ== + +"@esbuild/linux-loong64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz#e6fccb7aac178dd2ffb9860465ac89d7f23b977d" + integrity sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg== + +"@esbuild/linux-loong64@0.19.11": + version "0.19.11" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.19.11.tgz#5f32aead1c3ec8f4cccdb7ed08b166224d4e9121" + integrity sha512-ppZSSLVpPrwHccvC6nQVZaSHlFsvCQyjnvirnVjbKSHuE5N24Yl8F3UwYUUR1UEPaFObGD2tSvVKbvR+uT1Nrg== + +"@esbuild/linux-mips64el@0.17.6": + version "0.17.6" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.17.6.tgz#15fbbe04648d944ec660ee5797febdf09a9bd6af" + integrity sha512-09AXKB1HDOzXD+j3FdXCiL/MWmZP0Ex9eR8DLMBVcHorrWJxWmY8Nms2Nm41iRM64WVx7bA/JVHMv081iP2kUA== + +"@esbuild/linux-mips64el@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz#eeff3a937de9c2310de30622a957ad1bd9183231" + integrity sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ== + +"@esbuild/linux-mips64el@0.19.11": + version "0.19.11" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.19.11.tgz#38eecf1cbb8c36a616261de858b3c10d03419af9" + integrity sha512-B5x9j0OgjG+v1dF2DkH34lr+7Gmv0kzX6/V0afF41FkPMMqaQ77pH7CrhWeR22aEeHKaeZVtZ6yFwlxOKPVFyg== + +"@esbuild/linux-ppc64@0.17.6": + version "0.17.6" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.17.6.tgz#38210094e8e1a971f2d1fd8e48462cc65f15ef19" + integrity sha512-AmLhMzkM8JuqTIOhxnX4ubh0XWJIznEynRnZAVdA2mMKE6FAfwT2TWKTwdqMG+qEaeyDPtfNoZRpJbD4ZBv0Tg== + +"@esbuild/linux-ppc64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz#2f7156bde20b01527993e6881435ad79ba9599fb" + integrity sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA== + +"@esbuild/linux-ppc64@0.19.11": + version "0.19.11" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.19.11.tgz#9c5725a94e6ec15b93195e5a6afb821628afd912" + integrity sha512-MHrZYLeCG8vXblMetWyttkdVRjQlQUb/oMgBNurVEnhj4YWOr4G5lmBfZjHYQHHN0g6yDmCAQRR8MUHldvvRDA== + +"@esbuild/linux-riscv64@0.17.6": + version "0.17.6" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.17.6.tgz#bc3c66d5578c3b9951a6ed68763f2a6856827e4a" + integrity sha512-Y4Ri62PfavhLQhFbqucysHOmRamlTVK10zPWlqjNbj2XMea+BOs4w6ASKwQwAiqf9ZqcY9Ab7NOU4wIgpxwoSQ== + +"@esbuild/linux-riscv64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz#6628389f210123d8b4743045af8caa7d4ddfc7a6" + integrity sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A== + +"@esbuild/linux-riscv64@0.19.11": + version "0.19.11" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.19.11.tgz#2dc4486d474a2a62bbe5870522a9a600e2acb916" + integrity sha512-f3DY++t94uVg141dozDu4CCUkYW+09rWtaWfnb3bqe4w5NqmZd6nPVBm+qbz7WaHZCoqXqHz5p6CM6qv3qnSSQ== + +"@esbuild/linux-s390x@0.17.6": + version "0.17.6" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.17.6.tgz#d7ba7af59285f63cfce6e5b7f82a946f3e6d67fc" + integrity sha512-SPUiz4fDbnNEm3JSdUW8pBJ/vkop3M1YwZAVwvdwlFLoJwKEZ9L98l3tzeyMzq27CyepDQ3Qgoba44StgbiN5Q== + +"@esbuild/linux-s390x@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz#255e81fb289b101026131858ab99fba63dcf0071" + integrity sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ== + +"@esbuild/linux-s390x@0.19.11": + version "0.19.11" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.19.11.tgz#4ad8567df48f7dd4c71ec5b1753b6f37561a65a8" + integrity sha512-A5xdUoyWJHMMlcSMcPGVLzYzpcY8QP1RtYzX5/bS4dvjBGVxdhuiYyFwp7z74ocV7WDc0n1harxmpq2ePOjI0Q== + +"@esbuild/linux-x64@0.17.6": + version "0.17.6" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.17.6.tgz#ba51f8760a9b9370a2530f98964be5f09d90fed0" + integrity sha512-a3yHLmOodHrzuNgdpB7peFGPx1iJ2x6m+uDvhP2CKdr2CwOaqEFMeSqYAHU7hG+RjCq8r2NFujcd/YsEsFgTGw== + +"@esbuild/linux-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz#c7690b3417af318a9b6f96df3031a8865176d338" + integrity sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w== + +"@esbuild/linux-x64@0.19.11": + version "0.19.11" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.19.11.tgz#b7390c4d5184f203ebe7ddaedf073df82a658766" + integrity sha512-grbyMlVCvJSfxFQUndw5mCtWs5LO1gUlwP4CDi4iJBbVpZcqLVT29FxgGuBJGSzyOxotFG4LoO5X+M1350zmPA== + +"@esbuild/netbsd-x64@0.17.6": + version "0.17.6" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.17.6.tgz#e84d6b6fdde0261602c1e56edbb9e2cb07c211b9" + integrity sha512-EanJqcU/4uZIBreTrnbnre2DXgXSa+Gjap7ifRfllpmyAU7YMvaXmljdArptTHmjrkkKm9BK6GH5D5Yo+p6y5A== + +"@esbuild/netbsd-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz#30e8cd8a3dded63975e2df2438ca109601ebe0d1" + integrity sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A== + +"@esbuild/netbsd-x64@0.19.11": + version "0.19.11" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.19.11.tgz#d633c09492a1721377f3bccedb2d821b911e813d" + integrity sha512-13jvrQZJc3P230OhU8xgwUnDeuC/9egsjTkXN49b3GcS5BKvJqZn86aGM8W9pd14Kd+u7HuFBMVtrNGhh6fHEQ== + +"@esbuild/openbsd-x64@0.17.6": + version "0.17.6" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.17.6.tgz#cf4b9fb80ce6d280a673d54a731d9c661f88b083" + integrity sha512-xaxeSunhQRsTNGFanoOkkLtnmMn5QbA0qBhNet/XLVsc+OVkpIWPHcr3zTW2gxVU5YOHFbIHR9ODuaUdNza2Vw== + +"@esbuild/openbsd-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz#7812af31b205055874c8082ea9cf9ab0da6217ae" + integrity sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg== + +"@esbuild/openbsd-x64@0.19.11": + version "0.19.11" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.19.11.tgz#17388c76e2f01125bf831a68c03a7ffccb65d1a2" + integrity sha512-ysyOGZuTp6SNKPE11INDUeFVVQFrhcNDVUgSQVDzqsqX38DjhPEPATpid04LCoUr2WXhQTEZ8ct/EgJCUDpyNw== + +"@esbuild/sunos-x64@0.17.6": + version "0.17.6" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.17.6.tgz#a6838e246079b24d962b9dcb8d208a3785210a73" + integrity sha512-gnMnMPg5pfMkZvhHee21KbKdc6W3GR8/JuE0Da1kjwpK6oiFU3nqfHuVPgUX2rsOx9N2SadSQTIYV1CIjYG+xw== + +"@esbuild/sunos-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz#d5c275c3b4e73c9b0ecd38d1ca62c020f887ab9d" + integrity sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ== + +"@esbuild/sunos-x64@0.19.11": + version "0.19.11" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.19.11.tgz#e320636f00bb9f4fdf3a80e548cb743370d41767" + integrity sha512-Hf+Sad9nVwvtxy4DXCZQqLpgmRTQqyFyhT3bZ4F2XlJCjxGmRFF0Shwn9rzhOYRB61w9VMXUkxlBy56dk9JJiQ== + +"@esbuild/win32-arm64@0.17.6": + version "0.17.6" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.17.6.tgz#ace0186e904d109ea4123317a3ba35befe83ac21" + integrity sha512-G95n7vP1UnGJPsVdKXllAJPtqjMvFYbN20e8RK8LVLhlTiSOH1sd7+Gt7rm70xiG+I5tM58nYgwWrLs6I1jHqg== + +"@esbuild/win32-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz#73bc7f5a9f8a77805f357fab97f290d0e4820ac9" + integrity sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg== -"@emotion/styled@^11.10.5": - version "11.10.5" - resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-11.10.5.tgz#1fe7bf941b0909802cb826457e362444e7e96a79" - integrity sha512-8EP6dD7dMkdku2foLoruPCNkRevzdcBaY6q0l0OsbyJK+x8D9HWjX27ARiSIKNF634hY9Zdoedh8bJCiva8yZw== - dependencies: - "@babel/runtime" "^7.18.3" - "@emotion/babel-plugin" "^11.10.5" - "@emotion/is-prop-valid" "^1.2.0" - "@emotion/serialize" "^1.1.1" - "@emotion/use-insertion-effect-with-fallbacks" "^1.0.0" - "@emotion/utils" "^1.2.0" +"@esbuild/win32-arm64@0.19.11": + version "0.19.11" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.19.11.tgz#c778b45a496e90b6fc373e2a2bb072f1441fe0ee" + integrity sha512-0P58Sbi0LctOMOQbpEOvOL44Ne0sqbS0XWHMvvrg6NE5jQ1xguCSSw9jQeUk2lfrXYsKDdOe6K+oZiwKPilYPQ== -"@emotion/stylis@^0.8.4": - version "0.8.5" - resolved "https://registry.yarnpkg.com/@emotion/stylis/-/stylis-0.8.5.tgz#deacb389bd6ee77d1e7fcaccce9e16c5c7e78e04" - integrity sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ== +"@esbuild/win32-ia32@0.17.6": + version "0.17.6" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.17.6.tgz#7fb3f6d4143e283a7f7dffc98a6baf31bb365c7e" + integrity sha512-96yEFzLhq5bv9jJo5JhTs1gI+1cKQ83cUpyxHuGqXVwQtY5Eq54ZEsKs8veKtiKwlrNimtckHEkj4mRh4pPjsg== -"@emotion/unitless@^0.7.4": - version "0.7.5" - resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed" - integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== +"@esbuild/win32-ia32@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz#ec93cbf0ef1085cc12e71e0d661d20569ff42102" + integrity sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g== -"@emotion/unitless@^0.8.0": - version "0.8.0" - resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.8.0.tgz#a4a36e9cbdc6903737cd20d38033241e1b8833db" - integrity sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw== +"@esbuild/win32-ia32@0.19.11": + version "0.19.11" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.19.11.tgz#481a65fee2e5cce74ec44823e6b09ecedcc5194c" + integrity sha512-6YOrWS+sDJDmshdBIQU+Uoyh7pQKrdykdefC1avn76ss5c+RN6gut3LZA4E2cH5xUEp5/cA0+YxRaVtRAb0xBg== -"@emotion/use-insertion-effect-with-fallbacks@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.0.tgz#ffadaec35dbb7885bd54de3fa267ab2f860294df" - integrity sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A== +"@esbuild/win32-x64@0.17.6": + version "0.17.6" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.17.6.tgz#563ff4277f1230a006472664fa9278a83dd124da" + integrity sha512-n6d8MOyUrNp6G4VSpRcgjs5xj4A91svJSaiwLIDWVWEsZtpN5FA9NlBbZHDmAJc2e8e6SF4tkBD3HAvPF+7igA== -"@emotion/utils@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.2.0.tgz#9716eaccbc6b5ded2ea5a90d65562609aab0f561" - integrity sha512-sn3WH53Kzpw8oQ5mgMmIzzyAaH2ZqFEbozVVBSYp538E06OSE6ytOp7pRAjNQR+Q/orwqdQYJSe2m3hCOeznkw== +"@esbuild/win32-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz#786c5f41f043b07afb1af37683d7c33668858f6d" + integrity sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ== -"@emotion/weak-memoize@^0.3.0": - version "0.3.0" - resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.3.0.tgz#ea89004119dc42db2e1dba0f97d553f7372f6fcb" - integrity sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg== +"@esbuild/win32-x64@0.19.11": + version "0.19.11" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.19.11.tgz#a5d300008960bb39677c46bf16f53ec70d8dee04" + integrity sha512-vfkhltrjCAb603XaFhqhAF4LGDi2M4OrCRrFusyQ+iTLQ/o60QQXxc9cZC/FFpihBI9N1Grn6SMKVJ4KP7Fuiw== + +"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": + version "4.4.0" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" + integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== + dependencies: + eslint-visitor-keys "^3.3.0" -"@eslint/eslintrc@^0.4.3": - version "0.4.3" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c" - integrity sha1-nkKYHvA1vrPdSa3ResuW6P9vOUw= +"@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1": + version "4.9.1" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.9.1.tgz#449dfa81a57a1d755b09aa58d826c1262e4283b4" + integrity sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA== + +"@eslint/eslintrc@^2.1.2": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.2.tgz#c6936b4b328c64496692f76944e755738be62396" + integrity sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g== dependencies: ajv "^6.12.4" - debug "^4.1.1" - espree "^7.3.0" - globals "^13.9.0" - ignore "^4.0.6" + debug "^4.3.2" + espree "^9.6.0" + globals "^13.19.0" + ignore "^5.2.0" import-fresh "^3.2.1" - js-yaml "^3.13.1" - minimatch "^3.0.4" + js-yaml "^4.1.0" + minimatch "^3.1.2" strip-json-comments "^3.1.1" +"@eslint/js@8.51.0": + version "8.51.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.51.0.tgz#6d419c240cfb2b66da37df230f7e7eef801c32fa" + integrity sha512-HxjQ8Qn+4SI3/AFv6sOrDB+g6PpUTDwSJiQqOrnneEk8L71161srI9gjzzZvYVbzHiVg/BvcH95+cK/zfIt4pg== + +"@fastify/accept-negotiator@^1.0.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@fastify/accept-negotiator/-/accept-negotiator-1.1.0.tgz#c1c66b3b771c09742a54dd5bc87c582f6b0630ff" + integrity sha1-wcZrO3ccCXQqVN1byHxYL2sGMP8= + "@fastify/ajv-compiler@^3.5.0": version "3.5.0" resolved "https://registry.yarnpkg.com/@fastify/ajv-compiler/-/ajv-compiler-3.5.0.tgz#459bff00fefbf86c96ec30e62e933d2379e46670" - integrity sha512-ebbEtlI7dxXF5ziNdr05mOY8NnDiPB1XvAlLHctRt/Rc+C3LCOVW5imUVX+mhvUhnNzmPBHewUkOFgGlCxgdAA== + integrity sha1-RZv/AP77+GyW7DDmLpM9I3nkZnA= dependencies: ajv "^8.11.0" ajv-formats "^2.1.1" fast-uri "^2.0.0" +"@fastify/busboy@^2.0.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@fastify/busboy/-/busboy-2.1.0.tgz#0709e9f4cb252351c609c6e6d8d6779a8d25edff" + integrity sha1-Bwnp9MslI1HGCcbm2NZ3mo0l7f8= + "@fastify/deepmerge@^1.0.0": version "1.3.0" resolved "https://registry.yarnpkg.com/@fastify/deepmerge/-/deepmerge-1.3.0.tgz#8116858108f0c7d9fd460d05a7d637a13fe3239a" - integrity sha512-J8TOSBq3SoZbDhM9+R/u77hP93gz/rajSA+K2kGyijPpORPWUXHUpTaleoj+92As0S9uPRP7Oi8IqMf0u+ro6A== + integrity sha1-gRaFgQjwx9n9Rg0Fp9Y3oT/jI5o= "@fastify/error@^3.2.0": - version "3.3.0" - resolved "https://registry.yarnpkg.com/@fastify/error/-/error-3.3.0.tgz#eba790082e1144bfc8def0c2c8ef350064bc537b" - integrity sha512-dj7vjIn1Ar8sVXj2yAXiMNCJDmS9MQ9XMlIecX2dIzzhjSHCyKo4DdXjXMs7wKW2kj6yvVRSpuQjOZ3YLrh56w== + version "3.4.0" + resolved "https://registry.yarnpkg.com/@fastify/error/-/error-3.4.0.tgz#30df6601f4edce57a05ec5caaa90a28025a8554a" + integrity sha1-MN9mAfTtzlegXsXKqpCigCWoVUo= "@fastify/fast-json-stringify-compiler@^4.3.0": version "4.3.0" resolved "https://registry.yarnpkg.com/@fastify/fast-json-stringify-compiler/-/fast-json-stringify-compiler-4.3.0.tgz#5df89fa4d1592cbb8780f78998355feb471646d5" - integrity sha512-aZAXGYo6m22Fk1zZzEUKBvut/CIIQe/BapEORnxiD5Qr0kPHqqI69NtEMCme74h+at72sPhbkb4ZrLd1W3KRLA== + integrity sha1-XfifpNFZLLuHgPeJmDVf60cWRtU= dependencies: fast-json-stringify "^5.7.0" "@fastify/middie@^8.3.0": version "8.3.0" resolved "https://registry.yarnpkg.com/@fastify/middie/-/middie-8.3.0.tgz#1325e9e4373c98d69366d1e38211337dee1b9ccd" - integrity sha512-h+zBxCzMlkEkh4fM7pZaSGzqS7P9M0Z6rXnWPdUEPfe7x1BCj++wEk/pQ5jpyYY4pF8AknFqb77n7uwh8HdxEA== + integrity sha1-EyXp5Dc8mNaTZtHjghEzfe4bnM0= dependencies: "@fastify/error" "^3.2.0" fastify-plugin "^4.0.0" path-to-regexp "^6.1.0" reusify "^1.0.4" +"@fastify/send@^2.0.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@fastify/send/-/send-2.1.0.tgz#1aa269ccb4b0940a2dadd1f844443b15d8224ea0" + integrity sha1-GqJpzLSwlAotrdH4REQ7FdgiTqA= + dependencies: + "@lukeed/ms" "^2.0.1" + escape-html "~1.0.3" + fast-decode-uri-component "^1.0.1" + http-errors "2.0.0" + mime "^3.0.0" + +"@fastify/static@^6.11.2": + version "6.11.2" + resolved "https://registry.yarnpkg.com/@fastify/static/-/static-6.11.2.tgz#1fe40c40daf055a28d29db807b459fcff431d9b6" + integrity sha1-H+QMQNrwVaKNKduAe0Wfz/Qx2bY= + dependencies: + "@fastify/accept-negotiator" "^1.0.0" + "@fastify/send" "^2.0.0" + content-disposition "^0.5.3" + fastify-plugin "^4.0.0" + glob "^8.0.1" + p-limit "^3.1.0" + "@fastify/websocket@^8.2.0": version "8.2.0" resolved "https://registry.yarnpkg.com/@fastify/websocket/-/websocket-8.2.0.tgz#2f5785a88e8188bff9cc17821d5d3d09458a6714" @@ -2025,67 +2256,67 @@ aria-hidden "^1.1.3" tabbable "^6.0.1" -"@fluentui/keyboard-keys@^9.0.3": - version "9.0.3" - resolved "https://registry.yarnpkg.com/@fluentui/keyboard-keys/-/keyboard-keys-9.0.3.tgz#e7ab9592b38466a071994a43edfc84bfe830ae79" - integrity sha512-40KBVJ9HzsvmPL3rwYaAvxCacNS0xnTmOt6TLxxrAVgVrZ1X7DLgd8OGFZcWROs0dhHdCk2D51bl4nK8Q1r3mQ== +"@fluentui/keyboard-keys@^9.0.4": + version "9.0.4" + resolved "https://registry.yarnpkg.com/@fluentui/keyboard-keys/-/keyboard-keys-9.0.4.tgz#486d94ae3908f44fd11ebb496ca3e4b31163f32e" + integrity sha1-SG2UrjkI9E/RHrtJbKPksxFj8y4= dependencies: - "@swc/helpers" "^0.4.14" + "@swc/helpers" "^0.5.1" -"@fluentui/priority-overflow@^9.1.3": - version "9.1.3" - resolved "https://registry.yarnpkg.com/@fluentui/priority-overflow/-/priority-overflow-9.1.3.tgz#430ab8054160ad4c61c8ff814a3143969bedd9e5" - integrity sha512-enc0HxrnXfRqKectOZ+LWBbYjN1vpENKnbSuyh2SeDwW8JpRC+oMsCHyRcf43hXZbAqllr60HggnQc6gvqJPRg== +"@fluentui/priority-overflow@^9.1.5": + version "9.1.5" + resolved "https://registry.yarnpkg.com/@fluentui/priority-overflow/-/priority-overflow-9.1.5.tgz#1cab1cc9baac1048d67b702649f9b662a1b9968e" + integrity sha1-HKscybqsEEjWe3AmSfm2YqG5lo4= dependencies: - "@swc/helpers" "^0.4.14" + "@swc/helpers" "^0.5.1" -"@fluentui/react-context-selector@^9.1.27": - version "9.1.27" - resolved "https://registry.yarnpkg.com/@fluentui/react-context-selector/-/react-context-selector-9.1.27.tgz#eff469598e7cbcfc7f7aab39365d5741c0fdd7f0" - integrity sha512-l6YypPlNQRtGkavDJTXqdZbQCpS69L7/1mx8GU5aqzcWYyfUyfP4Y0lPpgXjlm1dvHnz/5k6gprEB0dWkfCpxA== +"@fluentui/react-context-selector@^9.1.34": + version "9.1.34" + resolved "https://registry.yarnpkg.com/@fluentui/react-context-selector/-/react-context-selector-9.1.34.tgz#85a2711be17cf56cc2ee32764c4c5d50b3e02e7e" + integrity sha1-haJxG+F89WzC7jJ2TExdULPgLn4= dependencies: - "@fluentui/react-utilities" "^9.11.0" - "@swc/helpers" "^0.4.14" + "@fluentui/react-utilities" "^9.13.3" + "@swc/helpers" "^0.5.1" "@fluentui/react-overflow@^9.0.19": - version "9.0.26" - resolved "https://registry.yarnpkg.com/@fluentui/react-overflow/-/react-overflow-9.0.26.tgz#240f3f231e7776dae030d86c75f13e1024f13a98" - integrity sha512-TB0x+gvDKHFQj/GpZldvFJ3QuFWoygd4cZuiKFUTU00i2C/WCLN37nGJ8/JxTP4+JeSIV/jYmkE8+be7rP/TLw== - dependencies: - "@fluentui/priority-overflow" "^9.1.3" - "@fluentui/react-context-selector" "^9.1.27" - "@fluentui/react-theme" "^9.1.11" - "@fluentui/react-utilities" "^9.11.0" + version "9.0.33" + resolved "https://registry.yarnpkg.com/@fluentui/react-overflow/-/react-overflow-9.0.33.tgz#9c282e1c150208ad11e0f08c6c64e56294012a32" + integrity sha1-nCguHBUCCK0R4PCMbGTlYpQBKjI= + dependencies: + "@fluentui/priority-overflow" "^9.1.5" + "@fluentui/react-context-selector" "^9.1.34" + "@fluentui/react-theme" "^9.1.12" + "@fluentui/react-utilities" "^9.13.3" "@griffel/react" "^1.5.14" - "@swc/helpers" "^0.4.14" + "@swc/helpers" "^0.5.1" -"@fluentui/react-theme@^9.1.11": - version "9.1.11" - resolved "https://registry.yarnpkg.com/@fluentui/react-theme/-/react-theme-9.1.11.tgz#58afe321998ac13615307d47d7f6150d5b825d9e" - integrity sha512-4rjYtMONBB1KZ4AdhuT7QVc4OZ2tMlhuk8BtqNrlX9C4C7NzsEWvKfuIX05e9yCBKnOeVuscsIUfGr7zJvhwdA== +"@fluentui/react-theme@^9.1.12": + version "9.1.12" + resolved "https://registry.yarnpkg.com/@fluentui/react-theme/-/react-theme-9.1.12.tgz#f38da07a04eb80adf79ff85679effab9bcd88dc4" + integrity sha1-842gegTrgK33n/hWee/6ubzYjcQ= dependencies: - "@fluentui/tokens" "1.0.0-alpha.8" - "@swc/helpers" "^0.4.14" + "@fluentui/tokens" "1.0.0-alpha.9" + "@swc/helpers" "^0.5.1" -"@fluentui/react-utilities@^9.11.0": - version "9.11.0" - resolved "https://registry.yarnpkg.com/@fluentui/react-utilities/-/react-utilities-9.11.0.tgz#926eea60175698c696b1d96e9c467303b4cf9a09" - integrity sha512-+lK8OU7jX5QFNfvMPwekQk9NPStETi3rHknb7S9oSEhXAnKFvH7L8Jp9LD+/CCeKrbkoGUX4t8AyDgBhtgx40g== +"@fluentui/react-utilities@^9.13.3": + version "9.13.3" + resolved "https://registry.yarnpkg.com/@fluentui/react-utilities/-/react-utilities-9.13.3.tgz#3c7c5037a0e50e4c7f6bdd85e5d8f853fb27d087" + integrity sha1-PHxQN6DlDkx/a92F5dj4U/sn0Ic= dependencies: - "@fluentui/keyboard-keys" "^9.0.3" - "@swc/helpers" "^0.4.14" + "@fluentui/keyboard-keys" "^9.0.4" + "@swc/helpers" "^0.5.1" -"@fluentui/tokens@1.0.0-alpha.8": - version "1.0.0-alpha.8" - resolved "https://registry.yarnpkg.com/@fluentui/tokens/-/tokens-1.0.0-alpha.8.tgz#83463604a8eb114bc977cf220105cb0f36af9fd3" - integrity sha512-4n3/DRdD0MzojsOLJterivLdnzsrIuVy+z5LMPuG2gxzbx06E19XJgZU9tqlqCFESJ/xUFREL6dQKEluw1c0Kw== +"@fluentui/tokens@1.0.0-alpha.9": + version "1.0.0-alpha.9" + resolved "https://registry.yarnpkg.com/@fluentui/tokens/-/tokens-1.0.0-alpha.9.tgz#cf9cf2675eb7e57b6986331d8eff72b677128a30" + integrity sha1-z5zyZ1635XtphjMdjv9ytncSijA= dependencies: - "@swc/helpers" "^0.4.14" + "@swc/helpers" "^0.5.1" "@griffel/core@^1.14.1": version "1.14.1" resolved "https://registry.yarnpkg.com/@griffel/core/-/core-1.14.1.tgz#1efe8f5cd5c4b348636264061c3a6cf4040b08f4" - integrity sha512-KQ6yueap1zff9TJrn7MdfSAHDMDVP6Ec97gnpCi4NOeKiyCyT13MwPCmkkK0o/poaV1f9MdHhUTQZCpK0QtxzQ== + integrity sha1-Hv6PXNXEs0hjYmQGHDps9AQLCPQ= dependencies: "@emotion/hash" "^0.9.0" "@griffel/style-types" "^1.0.1" @@ -2097,7 +2328,7 @@ "@griffel/react@^1.5.14": version "1.5.14" resolved "https://registry.yarnpkg.com/@griffel/react/-/react-1.5.14.tgz#ea58ebd82007d421d16da49b7e57eccba391d609" - integrity sha512-/x6cy6xMtpow1r+Zrw/hMKHwo+imFAgKaZ3A/+M8GyT3L9AFxK1Kyg4JvARPjLBAn9Q2q5dkCr78jOguuVSScg== + integrity sha1-6ljr2CAH1CHRbaSbflfsy6OR1gk= dependencies: "@griffel/core" "^1.14.1" tslib "^2.1.0" @@ -2105,23 +2336,28 @@ "@griffel/style-types@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@griffel/style-types/-/style-types-1.0.1.tgz#4e7bca38d54c7371114309a5697869099a693e84" - integrity sha512-nhVryiNHhoBt5L93tfDYGoE4KtWvhBvY7y1yR1n6WKpRjasgw3GI2pBwiMiVt68bycnyvXIvcJjJTr0QM22VLQ== + integrity sha1-TnvKONVMc3ERQwmlaXhpCZppPoQ= dependencies: csstype "^3.1.2" -"@humanwhocodes/config-array@^0.5.0": - version "0.5.0" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" - integrity sha1-FAeWfUxu7Nc4j4Os8er00Mbljvk= +"@humanwhocodes/config-array@^0.11.11": + version "0.11.11" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.11.tgz#88a04c570dbbc7dd943e4712429c3df09bc32844" + integrity sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA== dependencies: - "@humanwhocodes/object-schema" "^1.2.0" + "@humanwhocodes/object-schema" "^1.2.1" debug "^4.1.1" - minimatch "^3.0.4" + minimatch "^3.0.5" + +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== -"@humanwhocodes/object-schema@^1.2.0": +"@humanwhocodes/object-schema@^1.2.1": version "1.2.1" resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" - integrity sha1-tSBSnsIdjllFoYUd/Rwy6U45/0U= + integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== "@icons/material@^0.2.4": version "0.2.4" @@ -2629,6 +2865,11 @@ dependencies: "@lexical/offset" "0.11.1" +"@lukeed/ms@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@lukeed/ms/-/ms-2.0.1.tgz#3c2bbc258affd9cc0e0cc7828477383c73afa6ee" + integrity sha1-PCu8JYr/2cwODMeChHc4PHOvpu4= + "@manypkg/find-root@^1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@manypkg/find-root/-/find-root-1.1.0.tgz#a62d8ed1cd7e7d4c11d9d52a8397460b5d4ad29f" @@ -2651,36 +2892,41 @@ globby "^11.0.0" read-yaml-file "^1.1.0" -"@mdx-js/mdx@^2.2.1": - version "2.2.1" - resolved "https://registry.yarnpkg.com/@mdx-js/mdx/-/mdx-2.2.1.tgz#611af1b68135c94eb467eb07e006fa1d8eebe029" - integrity sha512-hZ3ex7exYLJn6FfReq8yTvA6TE53uW9UHJQM9IlSauOuS55J9y8RtA7W+dzp6Yrzr00/U1sd7q+Wf61q6SfiTQ== +"@mdx-js/mdx@^3.0.0": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@mdx-js/mdx/-/mdx-3.0.1.tgz#617bd2629ae561fdca1bb88e3badd947f5a82191" + integrity sha512-eIQ4QTrOWyL3LWEe/bu6Taqzq2HQvHcyTMaOrI95P2/LmJE7AsfPfgJGuFLPVqBUE1BC1rik3VIhU+s9u72arA== dependencies: + "@types/estree" "^1.0.0" "@types/estree-jsx" "^1.0.0" + "@types/hast" "^3.0.0" "@types/mdx" "^2.0.0" - estree-util-build-jsx "^2.0.0" - estree-util-is-identifier-name "^2.0.0" - estree-util-to-js "^1.1.0" + collapse-white-space "^2.0.0" + devlop "^1.0.0" + estree-util-build-jsx "^3.0.0" + estree-util-is-identifier-name "^3.0.0" + estree-util-to-js "^2.0.0" estree-walker "^3.0.0" - hast-util-to-estree "^2.0.0" - markdown-extensions "^1.0.0" + hast-util-to-estree "^3.0.0" + hast-util-to-jsx-runtime "^2.0.0" + markdown-extensions "^2.0.0" periscopic "^3.0.0" - remark-mdx "^2.0.0" - remark-parse "^10.0.0" - remark-rehype "^10.0.0" - unified "^10.0.0" - unist-util-position-from-estree "^1.0.0" - unist-util-stringify-position "^3.0.0" - unist-util-visit "^4.0.0" - vfile "^5.0.0" + remark-mdx "^3.0.0" + remark-parse "^11.0.0" + remark-rehype "^11.0.0" + source-map "^0.7.0" + unified "^11.0.0" + unist-util-position-from-estree "^2.0.0" + unist-util-stringify-position "^4.0.0" + unist-util-visit "^5.0.0" + vfile "^6.0.0" -"@mdx-js/react@^2.2.1": - version "2.2.1" - resolved "https://registry.yarnpkg.com/@mdx-js/react/-/react-2.2.1.tgz#5a70592418d52b1b01538c37e795034601c96ec5" - integrity sha512-YdXcMcEnqZhzql98RNrqYo9cEhTTesBiCclEtoiQUbJwx87q9453GTapYU6kJ8ZZ2ek1Vp25SiAXEFy5O/eAPw== +"@mdx-js/react@^3.0.0": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@mdx-js/react/-/react-3.0.1.tgz#997a19b3a5b783d936c75ae7c47cfe62f967f746" + integrity sha512-9ZrPIU4MGf6et1m1ov3zKf+q9+deetI51zprKB1D/z3NOb+rUxxtEl3mCjW5wTGh6VhRdwPueh1oRzi6ezkA8A== dependencies: "@types/mdx" "^2.0.0" - "@types/react" ">=16" "@mswjs/cookies@^0.2.2": version "0.2.2" @@ -2704,69 +2950,76 @@ strict-event-emitter "^0.2.4" web-encoding "^1.1.5" -"@next/env@13.4.1": - version "13.4.1" - resolved "https://registry.yarnpkg.com/@next/env/-/env-13.4.1.tgz#57322da2630b6bb6d7204577b0a18f6f9324db0c" - integrity sha512-eD6WCBMFjLFooLM19SIhSkWBHtaFrZFfg2Cxnyl3vS3DAdFRfnx5TY2RxlkuKXdIRCC0ySbtK9JXXt8qLCqzZg== +"@next/bundle-analyzer@14.0.0": + version "14.0.0" + resolved "https://registry.yarnpkg.com/@next/bundle-analyzer/-/bundle-analyzer-14.0.0.tgz#40b1681ec9958cb17da44a81584ffefc70d1e70f" + integrity sha512-a1Wbs0eXCMj30vxTfaGEO4DP3NjrqN+ge6rMhKZ43VtsXEjiVX95d7XFr7VkNps9lvlkofBF54RnIHhTJ2Ls0Q== + dependencies: + webpack-bundle-analyzer "4.7.0" + +"@next/env@14.2.3": + version "14.2.3" + resolved "https://registry.yarnpkg.com/@next/env/-/env-14.2.3.tgz#d6def29d1c763c0afb397343a15a82e7d92353a0" + integrity sha512-W7fd7IbkfmeeY2gXrzJYDx8D2lWKbVoTIj1o1ScPHNzvp30s1AuoEFSdr39bC5sjxJaxTtq3OTCZboNp0lNWHA== -"@next/eslint-plugin-next@12.3.1": - version "12.3.1" - resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-12.3.1.tgz#b821f27b0f175954d8d18e5d323fce040ecc79a6" - integrity sha512-sw+lTf6r6P0j+g/n9y4qdWWI2syPqZx+uc0+B/fRENqfR3KpSid6MIKqc9gNwGhJASazEQ5b3w8h4cAET213jw== +"@next/eslint-plugin-next@14.0.0", "@next/eslint-plugin-next@^14.0.0": + version "14.0.0" + resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-14.0.0.tgz#b299e61292b8abede7ecb37499feb817385801e6" + integrity sha512-Ye37nNI09V3yt7pzuzSQtwlvuJ2CGzFszHXkcTHHZgNr7EhTMFLipn3VSJChy+e5+ahTdNApPphc3qCPUsn10A== dependencies: glob "7.1.7" -"@next/eslint-plugin-next@12.3.4": - version "12.3.4" - resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-12.3.4.tgz#e7dc00e2e89ed361f111d687b8534483ec15518b" - integrity sha512-BFwj8ykJY+zc1/jWANsDprDIu2MgwPOIKxNVnrKvPs+f5TPegrVnem8uScND+1veT4B7F6VeqgaNLFW1Hzl9Og== +"@next/mdx@^14.0.0": + version "14.0.3" + resolved "https://registry.yarnpkg.com/@next/mdx/-/mdx-14.0.3.tgz#2b6727e36e06d688ff8417486855dc63c6320326" + integrity sha512-RhiANppBndB7ELjPc3SEdEywLWgsy69Vj1bJtfDWqCl8yIVX9aps1D7kwby1pBAweHvZVpiI91Xu/78citVQrQ== dependencies: - glob "7.1.7" + source-map "^0.7.0" -"@next/swc-darwin-arm64@13.4.1": - version "13.4.1" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.4.1.tgz#3748040d2dd0d89d3cdcc897f96aeda5130eed8f" - integrity sha512-eF8ARHtYfnoYtDa6xFHriUKA/Mfj/cCbmKb3NofeKhMccs65G6/loZ15a6wYCCx4rPAd6x4t1WmVYtri7EdeBg== - -"@next/swc-darwin-x64@13.4.1": - version "13.4.1" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-13.4.1.tgz#c59fc270005f17e04eb7eab4fd68793d0e3409a4" - integrity sha512-7cmDgF9tGWTgn5Gw+vP17miJbH4wcraMHDCOHTYWkO/VeKT73dUWG23TNRLfgtCNSPgH4V5B4uLHoZTanx9bAw== - -"@next/swc-linux-arm64-gnu@13.4.1": - version "13.4.1" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.4.1.tgz#1aef371bcef5d832d7f7e3aec3e68cfb98282393" - integrity sha512-qwJqmCri2ie8aTtE5gjTSr8S6O8B67KCYgVZhv9gKH44yvc/zXbAY8u23QGULsYOyh1islWE5sWfQNLOj9iryg== - -"@next/swc-linux-arm64-musl@13.4.1": - version "13.4.1" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.4.1.tgz#2522927cb0af6918405a49f5a1d1687d6847f3ec" - integrity sha512-qcC54tWNGDv/VVIFkazxhqH1Bnagjfs4enzELVRlUOoJPD2BGJTPI7z08pQPbbgxLtRiu8gl2mXvpB8WlOkMeA== - -"@next/swc-linux-x64-gnu@13.4.1": - version "13.4.1" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.4.1.tgz#5ec9418a35510048a5ceb79ed300463e1a9b312d" - integrity sha512-9TeWFlpLsBosZ+tsm/rWBaMwt5It9tPH8m3nawZqFUUrZyGRfGcI67js774vtx0k3rL9qbyY6+3pw9BCVpaYUA== - -"@next/swc-linux-x64-musl@13.4.1": - version "13.4.1" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.4.1.tgz#3478b9c89b75c1d0e7def9f35a9a77cb15d1a115" - integrity sha512-sNDGaWmSqTS4QRUzw61wl4mVPeSqNIr1OOjLlQTRuyInxMxtqImRqdvzDvFTlDfdeUMU/DZhWGYoHrXLlZXe6A== - -"@next/swc-win32-arm64-msvc@13.4.1": - version "13.4.1" - resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.4.1.tgz#efe53d48ff51d2485eabb910ab7caee78425fc01" - integrity sha512-+CXZC7u1iXdLRudecoUYbhbsXpglYv8KFYsFxKBPn7kg+bk7eJo738wAA4jXIl8grTF2mPdmO93JOQym+BlYGA== - -"@next/swc-win32-ia32-msvc@13.4.1": - version "13.4.1" - resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.4.1.tgz#952cdf1c53df46a90d5151d99310195d2c384e55" - integrity sha512-vIoXVVc7UYO68VwVMDKwJC2+HqAZQtCYiVlApyKEeIPIQpz2gpufzGxk1z3/gwrJt/kJ5CDZjlhYDCzd3hdz+g== - -"@next/swc-win32-x64-msvc@13.4.1": - version "13.4.1" - resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.4.1.tgz#447b7dcee5f5d4824cdff331a4ec34b13d0b449d" - integrity sha512-n8V5ImLQZibKTu10UUdI3nIeTLkliEXe628qxqW9v8My3BAH2a7H0SaCqkV2OgqFnn8sG1wxKYw9/SNJ632kSA== +"@next/swc-darwin-arm64@14.2.3": + version "14.2.3" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.3.tgz#db1a05eb88c0224089b815ad10ac128ec79c2cdb" + integrity sha512-3pEYo/RaGqPP0YzwnlmPN2puaF2WMLM3apt5jLW2fFdXD9+pqcoTzRk+iZsf8ta7+quAe4Q6Ms0nR0SFGFdS1A== + +"@next/swc-darwin-x64@14.2.3": + version "14.2.3" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.3.tgz#a3f8af05b5f9a52ac3082e66ac29e125ab1d7b9c" + integrity sha512-6adp7waE6P1TYFSXpY366xwsOnEXM+y1kgRpjSRVI2CBDOcbRjsJ67Z6EgKIqWIue52d2q/Mx8g9MszARj8IEA== + +"@next/swc-linux-arm64-gnu@14.2.3": + version "14.2.3" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.3.tgz#4e63f43879285b52554bfd39e6e0cc78a9b27bbf" + integrity sha512-cuzCE/1G0ZSnTAHJPUT1rPgQx1w5tzSX7POXSLaS7w2nIUJUD+e25QoXD/hMfxbsT9rslEXugWypJMILBj/QsA== + +"@next/swc-linux-arm64-musl@14.2.3": + version "14.2.3" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.3.tgz#ebdaed26214448b1e6f2c3e8b3cd29bfba387990" + integrity sha512-0D4/oMM2Y9Ta3nGuCcQN8jjJjmDPYpHX9OJzqk42NZGJocU2MqhBq5tWkJrUQOQY9N+In9xOdymzapM09GeiZw== + +"@next/swc-linux-x64-gnu@14.2.3": + version "14.2.3" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.3.tgz#19e3bcc137c3b582a1ab867106817e5c90a20593" + integrity sha512-ENPiNnBNDInBLyUU5ii8PMQh+4XLr4pG51tOp6aJ9xqFQ2iRI6IH0Ds2yJkAzNV1CfyagcyzPfROMViS2wOZ9w== + +"@next/swc-linux-x64-musl@14.2.3": + version "14.2.3" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.3.tgz#794a539b98e064169cf0ff7741b2a4fb16adec7d" + integrity sha512-BTAbq0LnCbF5MtoM7I/9UeUu/8ZBY0i8SFjUMCbPDOLv+un67e2JgyN4pmgfXBwy/I+RHu8q+k+MCkDN6P9ViQ== + +"@next/swc-win32-arm64-msvc@14.2.3": + version "14.2.3" + resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.3.tgz#eda9fa0fbf1ff9113e87ac2668ee67ce9e5add5a" + integrity sha512-AEHIw/dhAMLNFJFJIJIyOFDzrzI5bAjI9J26gbO5xhAKHYTZ9Or04BesFPXiAYXDNdrwTP2dQceYA4dL1geu8A== + +"@next/swc-win32-ia32-msvc@14.2.3": + version "14.2.3" + resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.3.tgz#7c1190e3f640ab16580c6bdbd7d0e766b9920457" + integrity sha512-vga40n1q6aYb0CLrM+eEmisfKCR45ixQYXuBXxOOmmoV8sYST9k7E3US32FsY+CkkF7NtzdcebiFT4CHuMSyZw== + +"@next/swc-win32-x64-msvc@14.2.3": + version "14.2.3" + resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.3.tgz#2be4e39ee25bfbd85be78eea17c0e7751dc4323c" + integrity sha512-Q1/zm43RWynxrO7lW4ehciQVj+5ePBhOK+/K2P7pLFX3JaJ/IZVC69SHidrmZSOkqz7ECIOhhy7XhAFG4JYyHA== "@nodelib/fs.scandir@2.1.5": version "2.1.5" @@ -2781,7 +3034,7 @@ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" integrity sha1-W9Jir5Tp0lvR5xsF3u1Eh2oiLos= -"@nodelib/fs.walk@^1.2.3": +"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": version "1.2.8" resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" integrity sha1-6Vc36LtnRt3t9pxVaVNJTxlv5po= @@ -2824,47 +3077,52 @@ optionalDependencies: fsevents "2.3.2" +"@polka/url@^1.0.0-next.20": + version "1.0.0-next.24" + resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.24.tgz#58601079e11784d20f82d0585865bb42305c4df3" + integrity sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ== + "@popperjs/core@^2.11.6": version "2.11.6" resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.6.tgz#cee20bd55e68a1720bdab363ecf0c821ded4cd45" integrity sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw== -"@rushstack/eslint-patch@^1.1.3": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.2.0.tgz#8be36a1f66f3265389e90b5f9c9962146758f728" - integrity sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg== +"@rushstack/eslint-patch@^1.3.3": + version "1.5.1" + resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.5.1.tgz#5f1b518ec5fa54437c0b7c4a821546c64fed6922" + integrity sha512-6i/8UoL0P5y4leBIGzvkZdS85RDMG9y1ihZzmTZQ5LdHUYmZ7pKFoj8X0236s3lusPs1Fa5HTQUpwI+UfTcmeA== -"@salt-ds/core@^1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@salt-ds/core/-/core-1.11.0.tgz#9a5be6dd9625cd9cbb0910172a69041c4418de1b" - integrity sha512-YAFQMYLZCAeuyCfbJgpXiXOPHprEEWHRnpA8OXJ60KdGx6NZduAkoj+UqcSYJTeFVoLLTpYvKkW968ND8wWW9g== +"@salt-ds/core@^1.13.3": + version "1.13.3" + resolved "https://registry.yarnpkg.com/@salt-ds/core/-/core-1.13.3.tgz#f57ba2fdd5927782338ec2ed7250d5d403783e3b" + integrity sha512-C/i3b74fNC87+dLqZlmvotLQIIlacV3tmZyBXW0njUtrhnHKnQ5X8lP2d5p3Y8P7xSSt9iRNs0dbpS91WDKmBw== dependencies: "@floating-ui/react" "^0.23.0" - "@salt-ds/icons" "^1.7.0" - "@salt-ds/styles" "^0.1.2" + "@salt-ds/icons" "^1.9.1" + "@salt-ds/styles" "^0.2.1" "@salt-ds/window" "^0.1.1" clsx "^2.0.0" -"@salt-ds/icons@^1.7.0": - version "1.7.0" - resolved "https://registry.yarnpkg.com/@salt-ds/icons/-/icons-1.7.0.tgz#9f8b58bc8522ff6829f8755ecb92c183dc997e9b" - integrity sha512-0bWmra5BE+SGfg22XByjAEK6RfYTX5qOWgj5EzbOcq0TnlhAXhNzGzfqlaWwylASWORDaYpNgqsJa2Q5/4ZXGw== +"@salt-ds/icons@^1.9.1": + version "1.9.1" + resolved "https://registry.yarnpkg.com/@salt-ds/icons/-/icons-1.9.1.tgz#f3b8902d41d6b2e316d1cecc9e9f649c65458c1f" + integrity sha512-ck1tL+vmBFUziFKB973pVLcLLvZIh5N1gDwS1dwm9DRKefXSS0ZtaB4KjrYvw/7LhVG8rqrcwtCSmvqo/3M4rg== dependencies: - "@salt-ds/styles" "^0.1.1" + "@salt-ds/styles" "^0.2.1" "@salt-ds/window" "^0.1.1" clsx "^2.0.0" -"@salt-ds/lab@1.0.0-alpha.20": - version "1.0.0-alpha.20" - resolved "https://registry.yarnpkg.com/@salt-ds/lab/-/lab-1.0.0-alpha.20.tgz#8aa96f4219e0bddf319896c18e474c43878f6edf" - integrity sha512-ZaaddYU3ewxMTG3KlKGwuFL3IWTmxV+mFMgHGRjF4bs/3ifbzNIhVYDjgQQ669b3dbwBMxWjLp8k/CyK8/j3Xg== +"@salt-ds/lab@1.0.0-alpha.25": + version "1.0.0-alpha.25" + resolved "https://registry.yarnpkg.com/@salt-ds/lab/-/lab-1.0.0-alpha.25.tgz#9c7b217c658b12dad3f99ba6d8bd5c3a76ae33df" + integrity sha512-aczoT/3HozevnNCguxXBz/FY8hBjjLiN5taFkVfRXScLcl1HLWPOC7YPBs+X+rKpKGO0qO+zeGKuQAwYKC6fCQ== dependencies: "@floating-ui/react" "^0.23.0" "@fluentui/react-overflow" "^9.0.19" "@internationalized/date" "^3.0.0" - "@salt-ds/core" "^1.11.0" - "@salt-ds/icons" "^1.7.0" - "@salt-ds/styles" "^0.1.2" + "@salt-ds/core" "^1.13.3" + "@salt-ds/icons" "^1.9.1" + "@salt-ds/styles" "^0.2.1" "@salt-ds/window" "^0.1.1" "@types/react-window" "^1.8.2" aria-hidden "^1.1.1" @@ -2879,25 +3137,25 @@ rifm "^0.12.0" tinycolor2 "^1.4.2" -"@salt-ds/styles@^0.1.1": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@salt-ds/styles/-/styles-0.1.1.tgz#94ad206fab56cc2675a664661bdd6e67aae7c230" - integrity sha512-fgMNZMaMf6a/FhhjjrfUpPvkxf68b7ludyQSqSwEoWXbQenuWvqPw+JHuzwRubmJGcOAG4WBy259kgZqeRFPAA== - -"@salt-ds/styles@^0.1.2": - version "0.1.2" - resolved "https://registry.yarnpkg.com/@salt-ds/styles/-/styles-0.1.2.tgz#1d2d30ea9a239621513ca004750818edae341230" - integrity sha512-2p2iQxzvhthM/swlYfYxlKaGWXYOfDt6YN9MJkBZsWhHznmSUunPHdHBD2m8goc2nFwNs/rQgxOlZhxM7Q5/yQ== +"@salt-ds/styles@^0.2.1": + version "0.2.1" + resolved "https://registry.yarnpkg.com/@salt-ds/styles/-/styles-0.2.1.tgz#d6fc1bee5a8d3931cba4ec8baa14f1ad3d7582a4" + integrity sha512-/GYQLY+ILzGyd2/KndCmoEfLw/t3pcYwihJn3ofe4yd6nhLYHPkvl4TXXzq6NnfD3NHmQWnWh3jQicLsYcvdXg== -"@salt-ds/theme@^1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@salt-ds/theme/-/theme-1.9.0.tgz#b8e7e7dadfe7c1377239e393cdd6f8e0182107cf" - integrity sha512-nkX/zBvv6hvfHVUFObNYWugg48n4KydG0b6TXNKwZLk/1ByHWyCNGCMB8IfJyXsqv8wyq4LWvdbhgMVYR1QgCQ== +"@salt-ds/theme@^1.10.1": + version "1.10.1" + resolved "https://registry.yarnpkg.com/@salt-ds/theme/-/theme-1.10.1.tgz#5cba92a5748ff122fbe0fe2a428b0ada3b39d2f7" + integrity sha512-Z/rlf6+SIdkPXXpx/xC+y2EArrJEk+BIjRon0MTB3kQAfqPySuRQd6RMafjbal7JXRhD9DNhH03E8s9rWCrsKg== "@salt-ds/window@^0.1.1": version "0.1.1" resolved "https://registry.yarnpkg.com/@salt-ds/window/-/window-0.1.1.tgz#1c26ab1b3e7457d271b2dd8a58bfbb423aee2cbe" - integrity sha512-DKVRbu7YeHdqFECGhC4W3KOF1eWCyGkFyZUEUNZyK4bvPLK1NI8z5JoxGU70dLVsFgjhk4wj3i1MmAVhdXu4lA== + integrity sha1-HCarGz50V9Jxst2KWL+7QjruLL4= + +"@shikijs/core@1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@shikijs/core/-/core-1.1.1.tgz#0268aaf411f382aee9b3092253af73469e5ae7cd" + integrity sha512-WSHuW0i4W04+UZgim378oxHBAp4S5X3hVI2zXh+t5v2fx2u/7QXz9VNisoOD/CA4O9Lc6Zs97TrKiDbWyZua6Q== "@sinclair/typebox@^0.24.1": version "0.24.44" @@ -2909,67 +3167,451 @@ resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-5.3.0.tgz#0ec9264cf54a527671d990eb874e030b55b70dcc" integrity sha512-CX6t4SYQ37lzxicAqsBtxA3OseeoVrh9cSJ5PFYam0GksYlupRfy1A+Q4aYD3zvcfECLc0zO2u+ZnR2UYKvCrw== -"@sinonjs/commons@^1.7.0": - version "1.8.3" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.3.tgz#3802ddd21a50a949b6721ddd72da36e67e7f1b2d" - integrity sha1-OALd0hpQqUm2ch3dcto25n5/Gy0= +"@sinonjs/commons@^1.7.0": + version "1.8.3" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.3.tgz#3802ddd21a50a949b6721ddd72da36e67e7f1b2d" + integrity sha1-OALd0hpQqUm2ch3dcto25n5/Gy0= + dependencies: + type-detect "4.0.8" + +"@sinonjs/fake-timers@^9.1.2": + version "9.1.2" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz#4eaab737fab77332ab132d396a3c0d364bd0ea8c" + integrity sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw== + dependencies: + "@sinonjs/commons" "^1.7.0" + +"@smithy/abort-controller@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/abort-controller/-/abort-controller-1.0.2.tgz#74caac052ecea15c5460438272ad8d43a6ccbc53" + integrity sha1-dMqsBS7OoVxUYEOCcq2NQ6bMvFM= + dependencies: + "@smithy/types" "^1.1.1" + tslib "^2.5.0" + +"@smithy/chunked-blob-reader-native@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-1.0.2.tgz#c6045b30f37824b4648ee8d06d68b2e8df400460" + integrity sha1-xgRbMPN4JLRkjujQbWiy6N9ABGA= + dependencies: + "@smithy/util-base64" "^1.0.2" + tslib "^2.5.0" + +"@smithy/chunked-blob-reader@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/chunked-blob-reader/-/chunked-blob-reader-1.0.2.tgz#be1d2c91a4430de371207c5f143228d4cd671eb0" + integrity sha1-vh0skaRDDeNxIHxfFDIo1M1nHrA= + dependencies: + tslib "^2.5.0" + +"@smithy/config-resolver@^1.0.1", "@smithy/config-resolver@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/config-resolver/-/config-resolver-1.0.2.tgz#d4f556a44292b41b5c067662a4bd5049dea40e35" + integrity sha1-1PVWpEKStBtcBnZipL1QSd6kDjU= + dependencies: + "@smithy/types" "^1.1.1" + "@smithy/util-config-provider" "^1.0.2" + "@smithy/util-middleware" "^1.0.2" + tslib "^2.5.0" + +"@smithy/credential-provider-imds@^1.0.1", "@smithy/credential-provider-imds@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/credential-provider-imds/-/credential-provider-imds-1.0.2.tgz#7aa797c0d95448eb3dccb988b40e62db8989576f" + integrity sha1-eqeXwNlUSOs9zLmItA5i24mJV28= + dependencies: + "@smithy/node-config-provider" "^1.0.2" + "@smithy/property-provider" "^1.0.2" + "@smithy/types" "^1.1.1" + "@smithy/url-parser" "^1.0.2" + tslib "^2.5.0" + +"@smithy/eventstream-codec@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-codec/-/eventstream-codec-1.0.2.tgz#06d1b6e2510cb2475a39b3a20b0c75e751917c59" + integrity sha1-BtG24lEMskdaObOiCwx151GRfFk= + dependencies: + "@aws-crypto/crc32" "3.0.0" + "@smithy/types" "^1.1.1" + "@smithy/util-hex-encoding" "^1.0.2" + tslib "^2.5.0" + +"@smithy/eventstream-serde-browser@^1.0.1": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-1.0.2.tgz#2f6c9de876ca5e3f35388df9cfa31aeb4281ac76" + integrity sha1-L2yd6HbKXj81OI35z6Ma60KBrHY= + dependencies: + "@smithy/eventstream-serde-universal" "^1.0.2" + "@smithy/types" "^1.1.1" + tslib "^2.5.0" + +"@smithy/eventstream-serde-config-resolver@^1.0.1": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-1.0.2.tgz#37a55970c31f3e4a38d66933ab14398351553daf" + integrity sha1-N6VZcMMfPko41mkzqxQ5g1FVPa8= + dependencies: + "@smithy/types" "^1.1.1" + tslib "^2.5.0" + +"@smithy/eventstream-serde-node@^1.0.1": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-node/-/eventstream-serde-node-1.0.2.tgz#1c8ba86f70ecdad19c3a25b48b0f9a03799c2a0d" + integrity sha1-HIuob3Ds2tGcOiW0iw+aA3mcKg0= + dependencies: + "@smithy/eventstream-serde-universal" "^1.0.2" + "@smithy/types" "^1.1.1" + tslib "^2.5.0" + +"@smithy/eventstream-serde-universal@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-1.0.2.tgz#66c1ccc639cb64049291200bcda476b26875fd8e" + integrity sha1-ZsHMxjnLZASSkSALzaR2smh1/Y4= + dependencies: + "@smithy/eventstream-codec" "^1.0.2" + "@smithy/types" "^1.1.1" + tslib "^2.5.0" + +"@smithy/fetch-http-handler@^1.0.1", "@smithy/fetch-http-handler@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/fetch-http-handler/-/fetch-http-handler-1.0.2.tgz#4186ee6451de22e867f43c05236dcff43eca6e91" + integrity sha1-QYbuZFHeIuhn9DwFI23P9D7KbpE= + dependencies: + "@smithy/protocol-http" "^1.1.1" + "@smithy/querystring-builder" "^1.0.2" + "@smithy/types" "^1.1.1" + "@smithy/util-base64" "^1.0.2" + tslib "^2.5.0" + +"@smithy/hash-blob-browser@^1.0.1": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/hash-blob-browser/-/hash-blob-browser-1.0.2.tgz#c23b4a85540bdc3aea0e26e9fda8983b2a6006de" + integrity sha1-wjtKhVQL3DrqDibp/aiYOypgBt4= + dependencies: + "@smithy/chunked-blob-reader" "^1.0.2" + "@smithy/chunked-blob-reader-native" "^1.0.2" + "@smithy/types" "^1.1.1" + tslib "^2.5.0" + +"@smithy/hash-node@^1.0.1": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/hash-node/-/hash-node-1.0.2.tgz#dc65203a348d29e45c493ead3e772e4f7dfb5bc0" + integrity sha1-3GUgOjSNKeRcST6tPncuT337W8A= + dependencies: + "@smithy/types" "^1.1.1" + "@smithy/util-buffer-from" "^1.0.2" + "@smithy/util-utf8" "^1.0.2" + tslib "^2.5.0" + +"@smithy/hash-stream-node@^1.0.1": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/hash-stream-node/-/hash-stream-node-1.0.2.tgz#36083c7519f0f7e6e720da8838882ff9a65da31a" + integrity sha1-Ngg8dRnw9+bnINqIOIgv+aZdoxo= + dependencies: + "@smithy/types" "^1.1.1" + "@smithy/util-utf8" "^1.0.2" + tslib "^2.5.0" + +"@smithy/invalid-dependency@^1.0.1": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/invalid-dependency/-/invalid-dependency-1.0.2.tgz#0a9d82d1a14e5bdbdc0bd2cef5f457c85a942920" + integrity sha1-Cp2C0aFOW9vcC9LO9fRXyFqUKSA= + dependencies: + "@smithy/types" "^1.1.1" + tslib "^2.5.0" + +"@smithy/is-array-buffer@^1.0.1", "@smithy/is-array-buffer@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/is-array-buffer/-/is-array-buffer-1.0.2.tgz#224702a2364d698f0a36ecb2c240c0c9541ecfb6" + integrity sha1-IkcCojZNaY8KNuyywkDAyVQez7Y= + dependencies: + tslib "^2.5.0" + +"@smithy/md5-js@^1.0.1": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/md5-js/-/md5-js-1.0.2.tgz#bbcbdfc7afc3497ce74b1cb84026999753a813fb" + integrity sha1-u8vfx6/DSXznSxy4QCaZl1OoE/s= + dependencies: + "@smithy/types" "^1.1.1" + "@smithy/util-utf8" "^1.0.2" + tslib "^2.5.0" + +"@smithy/middleware-content-length@^1.0.1": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/middleware-content-length/-/middleware-content-length-1.0.2.tgz#63099f8d01b3419b65e21cfd07b0c2ef47d1f473" + integrity sha1-YwmfjQGzQZtl4hz9B7DC70fR9HM= + dependencies: + "@smithy/protocol-http" "^1.1.1" + "@smithy/types" "^1.1.1" + tslib "^2.5.0" + +"@smithy/middleware-endpoint@^1.0.2": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@smithy/middleware-endpoint/-/middleware-endpoint-1.0.3.tgz#ff4b1c0a83eb8d8b8d3937f434a95efbbf43e1cd" + integrity sha1-/0scCoPrjYuNOTf0NKle+79D4c0= + dependencies: + "@smithy/middleware-serde" "^1.0.2" + "@smithy/types" "^1.1.1" + "@smithy/url-parser" "^1.0.2" + "@smithy/util-middleware" "^1.0.2" + tslib "^2.5.0" + +"@smithy/middleware-retry@^1.0.3": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@smithy/middleware-retry/-/middleware-retry-1.0.4.tgz#8e9de0713dac7f7af405477d46bd4525ca7b9ea8" + integrity sha1-jp3gcT2sf3r0BUd9Rr1FJcp7nqg= + dependencies: + "@smithy/protocol-http" "^1.1.1" + "@smithy/service-error-classification" "^1.0.3" + "@smithy/types" "^1.1.1" + "@smithy/util-middleware" "^1.0.2" + "@smithy/util-retry" "^1.0.4" + tslib "^2.5.0" + uuid "^8.3.2" + +"@smithy/middleware-serde@^1.0.1", "@smithy/middleware-serde@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/middleware-serde/-/middleware-serde-1.0.2.tgz#87b3a0211602ae991d9b756893eb6bf2e3e5f711" + integrity sha1-h7OgIRYCrpkdm3Vok+tr8uPl9xE= + dependencies: + "@smithy/types" "^1.1.1" + tslib "^2.5.0" + +"@smithy/middleware-stack@^1.0.1", "@smithy/middleware-stack@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/middleware-stack/-/middleware-stack-1.0.2.tgz#d241082bf3cb315c749dda57e233039a9aed804e" + integrity sha1-0kEIK/PLMVx0ndpX4jMDmprtgE4= + dependencies: + tslib "^2.5.0" + +"@smithy/node-config-provider@^1.0.1", "@smithy/node-config-provider@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/node-config-provider/-/node-config-provider-1.0.2.tgz#2d391b96a9e10072e7e0a3698427400f4ef17ec4" + integrity sha1-LTkblqnhAHLn4KNphCdAD07xfsQ= + dependencies: + "@smithy/property-provider" "^1.0.2" + "@smithy/shared-ini-file-loader" "^1.0.2" + "@smithy/types" "^1.1.1" + tslib "^2.5.0" + +"@smithy/node-http-handler@^1.0.2", "@smithy/node-http-handler@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@smithy/node-http-handler/-/node-http-handler-1.0.3.tgz#89b556ca2bdcce7a994a9da1ea265094d76d4791" + integrity sha1-ibVWyivcznqZSp2h6iZQlNdtR5E= + dependencies: + "@smithy/abort-controller" "^1.0.2" + "@smithy/protocol-http" "^1.1.1" + "@smithy/querystring-builder" "^1.0.2" + "@smithy/types" "^1.1.1" + tslib "^2.5.0" + +"@smithy/property-provider@^1.0.1", "@smithy/property-provider@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/property-provider/-/property-provider-1.0.2.tgz#f99f104cbd6576c9aca9f56cb72819b4a65208e1" + integrity sha1-+Z8QTL1ldsmsqfVstygZtKZSCOE= + dependencies: + "@smithy/types" "^1.1.1" + tslib "^2.5.0" + +"@smithy/protocol-http@^1.1.0", "@smithy/protocol-http@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@smithy/protocol-http/-/protocol-http-1.1.1.tgz#10977cf71631eed4f5ad1845408920238d52cdba" + integrity sha1-EJd89xYx7tT1rRhFQIkgI41Szbo= + dependencies: + "@smithy/types" "^1.1.1" + tslib "^2.5.0" + +"@smithy/querystring-builder@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/querystring-builder/-/querystring-builder-1.0.2.tgz#ce861f6cbd14792c83aa19b4967a19923bd0706e" + integrity sha1-zoYfbL0UeSyDqhm0lnoZkjvQcG4= + dependencies: + "@smithy/types" "^1.1.1" + "@smithy/util-uri-escape" "^1.0.2" + tslib "^2.5.0" + +"@smithy/querystring-parser@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/querystring-parser/-/querystring-parser-1.0.2.tgz#559d09c46b21e6fbda71e95deda4bcd8a46bdecc" + integrity sha1-VZ0JxGsh5vvaceld7aS82KRr3sw= + dependencies: + "@smithy/types" "^1.1.1" + tslib "^2.5.0" + +"@smithy/service-error-classification@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@smithy/service-error-classification/-/service-error-classification-1.0.3.tgz#c620c1562610d3351985eb6dd04262ca2657ae67" + integrity sha1-xiDBViYQ0zUZhett0EJiyiZXrmc= + +"@smithy/shared-ini-file-loader@^1.0.1", "@smithy/shared-ini-file-loader@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-1.0.2.tgz#c6e79991d87925bd18e0adae00c97da6c8ecae1e" + integrity sha1-xueZkdh5Jb0Y4K2uAMl9psjsrh4= + dependencies: + "@smithy/types" "^1.1.1" + tslib "^2.5.0" + +"@smithy/signature-v4@^1.0.1": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/signature-v4/-/signature-v4-1.0.2.tgz#3a7b10ac66c337b404aa061e5f268f0550729680" + integrity sha1-OnsQrGbDN7QEqgYeXyaPBVByloA= + dependencies: + "@smithy/eventstream-codec" "^1.0.2" + "@smithy/is-array-buffer" "^1.0.2" + "@smithy/types" "^1.1.1" + "@smithy/util-hex-encoding" "^1.0.2" + "@smithy/util-middleware" "^1.0.2" + "@smithy/util-uri-escape" "^1.0.2" + "@smithy/util-utf8" "^1.0.2" + tslib "^2.5.0" + +"@smithy/smithy-client@^1.0.3": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@smithy/smithy-client/-/smithy-client-1.0.4.tgz#96d03d123d117a637c679a79bb8eae96e3857bd9" + integrity sha1-ltA9Ej0RemN8Z5p5u46uluOFe9k= + dependencies: + "@smithy/middleware-stack" "^1.0.2" + "@smithy/types" "^1.1.1" + "@smithy/util-stream" "^1.0.2" + tslib "^2.5.0" + +"@smithy/types@^1.1.0", "@smithy/types@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@smithy/types/-/types-1.1.1.tgz#949394a22e13e7077471bae0d18c146e5f62c456" + integrity sha1-lJOUoi4T5wd0cbrg0YwUbl9ixFY= + dependencies: + tslib "^2.5.0" + +"@smithy/url-parser@^1.0.1", "@smithy/url-parser@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/url-parser/-/url-parser-1.0.2.tgz#fb59be6f2283399443d9e7afe08ebf63b3c266bb" + integrity sha1-+1m+byKDOZRD2eev4I6/Y7PCZrs= + dependencies: + "@smithy/querystring-parser" "^1.0.2" + "@smithy/types" "^1.1.1" + tslib "^2.5.0" + +"@smithy/util-base64@^1.0.1", "@smithy/util-base64@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/util-base64/-/util-base64-1.0.2.tgz#6cdd5a9356dafad3c531123c12cd77d674762da0" + integrity sha1-bN1ak1ba+tPFMRI8Es131nR2LaA= + dependencies: + "@smithy/util-buffer-from" "^1.0.2" + tslib "^2.5.0" + +"@smithy/util-body-length-browser@^1.0.1": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/util-body-length-browser/-/util-body-length-browser-1.0.2.tgz#4a9a49497634b5f25ab5ff73f1a8498010b0024a" + integrity sha1-SppJSXY0tfJatf9z8ahJgBCwAko= + dependencies: + tslib "^2.5.0" + +"@smithy/util-body-length-node@^1.0.1": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/util-body-length-node/-/util-body-length-node-1.0.2.tgz#bc4969022f7d9ffcb239d626d80a85138e986df6" + integrity sha1-vElpAi99n/yyOdYm2AqFE46YbfY= + dependencies: + tslib "^2.5.0" + +"@smithy/util-buffer-from@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/util-buffer-from/-/util-buffer-from-1.0.2.tgz#27e19573d721962bd2443f23d4edadb8206b2cb5" + integrity sha1-J+GVc9chlivSRD8j1O2tuCBrLLU= dependencies: - type-detect "4.0.8" + "@smithy/is-array-buffer" "^1.0.2" + tslib "^2.5.0" -"@sinonjs/commons@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-2.0.0.tgz#fd4ca5b063554307e8327b4564bd56d3b73924a3" - integrity sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg== +"@smithy/util-config-provider@^1.0.1", "@smithy/util-config-provider@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/util-config-provider/-/util-config-provider-1.0.2.tgz#4d2e867df1cc7b4010d1278bd5767ce1b679dae9" + integrity sha1-TS6GffHMe0AQ0SeL1XZ84bZ52uk= dependencies: - type-detect "4.0.8" + tslib "^2.5.0" -"@sinonjs/fake-timers@^10.0.2": - version "10.0.2" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-10.0.2.tgz#d10549ed1f423d80639c528b6c7f5a1017747d0c" - integrity sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw== +"@smithy/util-defaults-mode-browser@^1.0.1": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-1.0.2.tgz#31ad7b9bce7e38fd57f4a370ee416373b4fbd432" + integrity sha1-Ma17m85+OP1X9KNw7kFjc7T71DI= dependencies: - "@sinonjs/commons" "^2.0.0" + "@smithy/property-provider" "^1.0.2" + "@smithy/types" "^1.1.1" + bowser "^2.11.0" + tslib "^2.5.0" -"@sinonjs/fake-timers@^9.1.2": - version "9.1.2" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz#4eaab737fab77332ab132d396a3c0d364bd0ea8c" - integrity sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw== +"@smithy/util-defaults-mode-node@^1.0.1": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-1.0.2.tgz#b295fe2a18568c1e21a85b6557e2b769452b4d95" + integrity sha1-spX+KhhWjB4hqFtlV+K3aUUrTZU= + dependencies: + "@smithy/config-resolver" "^1.0.2" + "@smithy/credential-provider-imds" "^1.0.2" + "@smithy/node-config-provider" "^1.0.2" + "@smithy/property-provider" "^1.0.2" + "@smithy/types" "^1.1.1" + tslib "^2.5.0" + +"@smithy/util-hex-encoding@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/util-hex-encoding/-/util-hex-encoding-1.0.2.tgz#5b9f2162f2a59b2d2aa39992bd2c7f65b6616ab6" + integrity sha1-W58hYvKlmy0qo5mSvSx/ZbZharY= dependencies: - "@sinonjs/commons" "^1.7.0" + tslib "^2.5.0" -"@sinonjs/samsam@^7.0.1": - version "7.0.1" - resolved "https://registry.yarnpkg.com/@sinonjs/samsam/-/samsam-7.0.1.tgz#5b5fa31c554636f78308439d220986b9523fc51f" - integrity sha512-zsAk2Jkiq89mhZovB2LLOdTCxJF4hqqTToGP0ASWlhp4I1hqOjcfmZGafXntCN7MDC6yySH0mFHrYtHceOeLmw== +"@smithy/util-middleware@^1.0.1", "@smithy/util-middleware@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/util-middleware/-/util-middleware-1.0.2.tgz#c3d4c7a6cd31bde33901e54abd7700c8ca73dab3" + integrity sha1-w9THps0xveM5AeVKvXcAyMpz2rM= dependencies: - "@sinonjs/commons" "^2.0.0" - lodash.get "^4.4.2" - type-detect "^4.0.8" + tslib "^2.5.0" -"@sinonjs/text-encoding@^0.7.1": - version "0.7.2" - resolved "https://registry.yarnpkg.com/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz#5981a8db18b56ba38ef0efb7d995b12aa7b51918" - integrity sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ== +"@smithy/util-retry@^1.0.3", "@smithy/util-retry@^1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@smithy/util-retry/-/util-retry-1.0.4.tgz#9d95df3884981414163d5f780d38e3529384d9ad" + integrity sha1-nZXfOISYFBQWPV94DTjjUpOE2a0= + dependencies: + "@smithy/service-error-classification" "^1.0.3" + tslib "^2.5.0" -"@smithy/protocol-http@^1.0.1": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@smithy/protocol-http/-/protocol-http-1.1.0.tgz#caf22e01cb825d7490a4915e03d6fa64954ff535" - integrity sha512-H5y/kZOqfJSqRkwtcAoVbqONmhdXwSgYNJ1Glk5Ry8qlhVVy5qUzD9EklaCH8/XLnoCsLO/F/Giee8MIvaBRkg== +"@smithy/util-stream@^1.0.1", "@smithy/util-stream@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/util-stream/-/util-stream-1.0.2.tgz#2d33aa5168e51d1dd7937c32a09c8334d2da44d9" + integrity sha1-LTOqUWjlHR3Xk3wyoJyDNNLaRNk= + dependencies: + "@smithy/fetch-http-handler" "^1.0.2" + "@smithy/node-http-handler" "^1.0.3" + "@smithy/types" "^1.1.1" + "@smithy/util-base64" "^1.0.2" + "@smithy/util-buffer-from" "^1.0.2" + "@smithy/util-hex-encoding" "^1.0.2" + "@smithy/util-utf8" "^1.0.2" + tslib "^2.5.0" + +"@smithy/util-uri-escape@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/util-uri-escape/-/util-uri-escape-1.0.2.tgz#c69a5423c9baa7a045a79372320bd40a437ac756" + integrity sha1-xppUI8m6p6BFp5NyMgvUCkN6x1Y= dependencies: - "@smithy/types" "^1.1.0" tslib "^2.5.0" -"@smithy/types@^1.0.0", "@smithy/types@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@smithy/types/-/types-1.1.0.tgz#f30a23202c97634cca5c1ac955a9bf149c955226" - integrity sha512-KzmvisMmuwD2jZXuC9e65JrgsZM97y5NpDU7g347oB+Q+xQLU6hQZ5zFNNbEfwwOJHoOvEVTna+dk1h/lW7alw== +"@smithy/util-utf8@^1.0.1", "@smithy/util-utf8@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/util-utf8/-/util-utf8-1.0.2.tgz#b34c27b4efbe4f0edb6560b6d4f743088302671f" + integrity sha1-s0wntO++Tw7bZWC21PdDCIMCZx8= + dependencies: + "@smithy/util-buffer-from" "^1.0.2" + tslib "^2.5.0" + +"@smithy/util-waiter@^1.0.1": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/util-waiter/-/util-waiter-1.0.2.tgz#3b1498a2d4b92e78eafacc8c76f314e30eb7a5e9" + integrity sha1-OxSYotS5Lnjq+syMdvMU4w63pek= dependencies: + "@smithy/abort-controller" "^1.0.2" + "@smithy/types" "^1.1.1" tslib "^2.5.0" "@swagger-api/apidom-ast@^0.70.0": version "0.70.0" resolved "https://registry.yarnpkg.com/@swagger-api/apidom-ast/-/apidom-ast-0.70.0.tgz#8665af62ab8b6b02c7851429d2fe15dc4780e188" - integrity sha512-zQ1RUkXjx5NPYv1bmkoXwlQi7oJC7DJqYi0syTQKswJZDbOkHCwz8cDP/YystOEOL+yyIN7i5EQBIHfy5yAMmA== + integrity sha1-hmWvYquLawLHhRQp0v4V3EeA4Yg= dependencies: "@babel/runtime-corejs3" "^7.20.7" "@types/ramda" "~0.29.1" @@ -2978,10 +3620,23 @@ stampit "^4.3.2" unraw "^2.0.1" +"@swagger-api/apidom-ast@^0.92.0": + version "0.92.0" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-ast/-/apidom-ast-0.92.0.tgz#58faf1bbc88fa161cabe40fa16bd837f3570fd28" + integrity sha1-WPrxu8iPoWHKvkD6Fr2DfzVw/Sg= + dependencies: + "@babel/runtime-corejs3" "^7.20.7" + "@swagger-api/apidom-error" "^0.92.0" + "@types/ramda" "~0.29.6" + ramda "~0.29.1" + ramda-adjunct "^4.1.1" + stampit "^4.3.2" + unraw "^3.0.0" + "@swagger-api/apidom-core@>=0.70.1 <1.0.0", "@swagger-api/apidom-core@^0.70.1": version "0.70.1" resolved "https://registry.yarnpkg.com/@swagger-api/apidom-core/-/apidom-core-0.70.1.tgz#7982e46da071a3bc7560ffee3c1590f1f176861a" - integrity sha512-doE6escw5LYVxIp5/lfdeNC8jF39JohKeYQ/YuH5wbo5T06uy8nZ3VxcjPHymmQmLlHdEegUIiirp7dSZFZlIg== + integrity sha1-eYLkbaBxo7x1YP/uPBWQ8fF2hho= dependencies: "@babel/runtime-corejs3" "^7.20.7" "@swagger-api/apidom-ast" "^0.70.0" @@ -2992,10 +3647,32 @@ short-unique-id "^4.4.4" stampit "^4.3.2" +"@swagger-api/apidom-core@>=0.90.0 <1.0.0", "@swagger-api/apidom-core@^0.92.0": + version "0.92.0" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-core/-/apidom-core-0.92.0.tgz#44bb5d58f0a551ec7529617df10a23093eac2a06" + integrity sha1-RLtdWPClUex1KWF98QojCT6sKgY= + dependencies: + "@babel/runtime-corejs3" "^7.20.7" + "@swagger-api/apidom-ast" "^0.92.0" + "@swagger-api/apidom-error" "^0.92.0" + "@types/ramda" "~0.29.6" + minim "~0.23.8" + ramda "~0.29.1" + ramda-adjunct "^4.1.1" + short-unique-id "^5.0.2" + stampit "^4.3.2" + +"@swagger-api/apidom-error@>=0.90.0 <1.0.0", "@swagger-api/apidom-error@^0.92.0": + version "0.92.0" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-error/-/apidom-error-0.92.0.tgz#a5e93e98f689cf346b9d3d12ea31e20bb67376b1" + integrity sha1-pek+mPaJzzRrnT0S6jHiC7ZzdrE= + dependencies: + "@babel/runtime-corejs3" "^7.20.7" + "@swagger-api/apidom-json-pointer@>=0.70.1 <1.0.0", "@swagger-api/apidom-json-pointer@^0.70.1": version "0.70.1" resolved "https://registry.yarnpkg.com/@swagger-api/apidom-json-pointer/-/apidom-json-pointer-0.70.1.tgz#bcf72aa550bf06471fca01eca708bdcaf625cf43" - integrity sha512-9NyeflCD0Vy8rce3Eag/Xdu2SGF4nr/mnQ6/vb4VbV9pID12z6EbBWvF9p9l0/sRdA6IePj39B3uBLcPl5b4Dg== + integrity sha1-vPcqpVC/BkcfygHspwi9yvYlz0M= dependencies: "@babel/runtime-corejs3" "^7.20.7" "@swagger-api/apidom-core" "^0.70.1" @@ -3003,10 +3680,22 @@ ramda "~0.29.0" ramda-adjunct "^4.0.0" +"@swagger-api/apidom-json-pointer@>=0.90.0 <1.0.0", "@swagger-api/apidom-json-pointer@^0.92.0": + version "0.92.0" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-json-pointer/-/apidom-json-pointer-0.92.0.tgz#68188d7e1ae2988b9a8c0107e7201b9545a77764" + integrity sha1-aBiNfhrimIuajAEH5yAblUWnd2Q= + dependencies: + "@babel/runtime-corejs3" "^7.20.7" + "@swagger-api/apidom-core" "^0.92.0" + "@swagger-api/apidom-error" "^0.92.0" + "@types/ramda" "~0.29.6" + ramda "~0.29.1" + ramda-adjunct "^4.0.0" + "@swagger-api/apidom-ns-api-design-systems@^0.70.3": version "0.70.3" resolved "https://registry.yarnpkg.com/@swagger-api/apidom-ns-api-design-systems/-/apidom-ns-api-design-systems-0.70.3.tgz#dc72c042f76633887f0abdff614842e0623e2e14" - integrity sha512-61qffrU0AX/7DxaQ6eFz+gSChlI/6dRU8YaBi4N38ZrwaMkRm/ksy8VWUoMcs2qHrqWh8vBijnpKBXi9JHNGKA== + integrity sha1-3HLAQvdmM4h/Cr3/YUhC4GI+LhQ= dependencies: "@babel/runtime-corejs3" "^7.20.7" "@swagger-api/apidom-core" "^0.70.1" @@ -3016,10 +3705,24 @@ ramda-adjunct "^4.0.0" stampit "^4.3.2" +"@swagger-api/apidom-ns-api-design-systems@^0.92.0": + version "0.92.0" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-ns-api-design-systems/-/apidom-ns-api-design-systems-0.92.0.tgz#b99dc79b96a9b444e20ccb45aec49b0aa16e8996" + integrity sha1-uZ3Hm5aptETiDMtFrsSbCqFuiZY= + dependencies: + "@babel/runtime-corejs3" "^7.20.7" + "@swagger-api/apidom-core" "^0.92.0" + "@swagger-api/apidom-error" "^0.92.0" + "@swagger-api/apidom-ns-openapi-3-1" "^0.92.0" + "@types/ramda" "~0.29.6" + ramda "~0.29.1" + ramda-adjunct "^4.1.1" + stampit "^4.3.2" + "@swagger-api/apidom-ns-asyncapi-2@^0.70.3": version "0.70.3" resolved "https://registry.yarnpkg.com/@swagger-api/apidom-ns-asyncapi-2/-/apidom-ns-asyncapi-2-0.70.3.tgz#8cda28a72ee560c3fac3fdf3d488d875e5a823d7" - integrity sha512-Z2xhws7MfclZ2IzFjsfohpRueTZBde6x0GGtWC3dmgq506IhYpA+cpGYUpGHgwzdwLJOzLdwXnafuuXIoVkvJw== + integrity sha1-jNoopy7lYMP6w/3z1IjYdeWoI9c= dependencies: "@babel/runtime-corejs3" "^7.20.7" "@swagger-api/apidom-core" "^0.70.1" @@ -3029,10 +3732,23 @@ ramda-adjunct "^4.0.0" stampit "^4.3.2" +"@swagger-api/apidom-ns-asyncapi-2@^0.92.0": + version "0.92.0" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-ns-asyncapi-2/-/apidom-ns-asyncapi-2-0.92.0.tgz#872fc6ef5548bacb88b3c3550ac7350e12830331" + integrity sha1-hy/G71VIusuIs8NVCsc1DhKDAzE= + dependencies: + "@babel/runtime-corejs3" "^7.20.7" + "@swagger-api/apidom-core" "^0.92.0" + "@swagger-api/apidom-ns-json-schema-draft-7" "^0.92.0" + "@types/ramda" "~0.29.6" + ramda "~0.29.1" + ramda-adjunct "^4.1.1" + stampit "^4.3.2" + "@swagger-api/apidom-ns-json-schema-draft-4@^0.70.3": version "0.70.3" resolved "https://registry.yarnpkg.com/@swagger-api/apidom-ns-json-schema-draft-4/-/apidom-ns-json-schema-draft-4-0.70.3.tgz#5ac39828ac14fb4d547374069c41f8321e3390bb" - integrity sha512-y/WJTQCzm59p8wVPb034AcydzgXNEOVdh+S/OGuHJ+HYUFmVT5NWvBGWC7Ikc9ixXN0v585dzq1QvE2T7H0ZfQ== + integrity sha1-WsOYKKwU+01Uc3QGnEH4Mh4zkLs= dependencies: "@babel/runtime-corejs3" "^7.20.7" "@swagger-api/apidom-ast" "^0.70.0" @@ -3042,10 +3758,23 @@ ramda-adjunct "^4.0.0" stampit "^4.3.2" +"@swagger-api/apidom-ns-json-schema-draft-4@^0.92.0": + version "0.92.0" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-ns-json-schema-draft-4/-/apidom-ns-json-schema-draft-4-0.92.0.tgz#11c6fede3eef005efe8b5c9d61001d24916b7633" + integrity sha1-Ecb+3j7vAF7+i1ydYQAdJJFrdjM= + dependencies: + "@babel/runtime-corejs3" "^7.20.7" + "@swagger-api/apidom-ast" "^0.92.0" + "@swagger-api/apidom-core" "^0.92.0" + "@types/ramda" "~0.29.6" + ramda "~0.29.1" + ramda-adjunct "^4.1.1" + stampit "^4.3.2" + "@swagger-api/apidom-ns-json-schema-draft-6@^0.70.3": version "0.70.3" resolved "https://registry.yarnpkg.com/@swagger-api/apidom-ns-json-schema-draft-6/-/apidom-ns-json-schema-draft-6-0.70.3.tgz#97ab3cbc45258500d893980c056517d689da2ba2" - integrity sha512-6u6fB9LIM3z+K9miAAWsOT13LOCQc5G0d/lkRSpVSendvgAWpOCEx1BSgiIoURwkcBl2FB46vYyXefolxTOK7w== + integrity sha1-l6s8vEUlhQDYk5gMBWUX1onaK6I= dependencies: "@babel/runtime-corejs3" "^7.20.7" "@swagger-api/apidom-core" "^0.70.1" @@ -3055,10 +3784,24 @@ ramda-adjunct "^4.0.0" stampit "^4.3.2" +"@swagger-api/apidom-ns-json-schema-draft-6@^0.92.0": + version "0.92.0" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-ns-json-schema-draft-6/-/apidom-ns-json-schema-draft-6-0.92.0.tgz#59c37e8064c72b5e88939d71b6abd6a8312a94c4" + integrity sha1-WcN+gGTHK16Ik51xtqvWqDEqlMQ= + dependencies: + "@babel/runtime-corejs3" "^7.20.7" + "@swagger-api/apidom-core" "^0.92.0" + "@swagger-api/apidom-error" "^0.92.0" + "@swagger-api/apidom-ns-json-schema-draft-4" "^0.92.0" + "@types/ramda" "~0.29.6" + ramda "~0.29.1" + ramda-adjunct "^4.1.1" + stampit "^4.3.2" + "@swagger-api/apidom-ns-json-schema-draft-7@^0.70.3": version "0.70.3" resolved "https://registry.yarnpkg.com/@swagger-api/apidom-ns-json-schema-draft-7/-/apidom-ns-json-schema-draft-7-0.70.3.tgz#6e1b27b7b7fe6611715b44efd753c775d3b070fc" - integrity sha512-fVTxhfuHieXyEL4BwoQidXNGAkXjO9N8QekfUpdYDKLxs7Sq80itPZxlq/fbagomS+Q1n5LYfB5h2n5lLOGJDQ== + integrity sha1-bhsnt7f+ZhFxW0Tv11PHddOwcPw= dependencies: "@babel/runtime-corejs3" "^7.20.7" "@swagger-api/apidom-core" "^0.70.1" @@ -3068,10 +3811,38 @@ ramda-adjunct "^4.0.0" stampit "^4.3.2" +"@swagger-api/apidom-ns-json-schema-draft-7@^0.92.0": + version "0.92.0" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-ns-json-schema-draft-7/-/apidom-ns-json-schema-draft-7-0.92.0.tgz#7d833b1b8b968aa16c8313a8594ed8b309758d3f" + integrity sha1-fYM7G4uWiqFsgxOoWU7Yswl1jT8= + dependencies: + "@babel/runtime-corejs3" "^7.20.7" + "@swagger-api/apidom-core" "^0.92.0" + "@swagger-api/apidom-error" "^0.92.0" + "@swagger-api/apidom-ns-json-schema-draft-6" "^0.92.0" + "@types/ramda" "~0.29.6" + ramda "~0.29.1" + ramda-adjunct "^4.1.1" + stampit "^4.3.2" + +"@swagger-api/apidom-ns-openapi-2@^0.92.0": + version "0.92.0" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-ns-openapi-2/-/apidom-ns-openapi-2-0.92.0.tgz#b61cc851f21fc14fcc58fef15a0bea0ab57b87e6" + integrity sha1-thzIUfIfwU/MWP7xWgvqCrV7h+Y= + dependencies: + "@babel/runtime-corejs3" "^7.20.7" + "@swagger-api/apidom-core" "^0.92.0" + "@swagger-api/apidom-error" "^0.92.0" + "@swagger-api/apidom-ns-json-schema-draft-4" "^0.92.0" + "@types/ramda" "~0.29.6" + ramda "~0.29.1" + ramda-adjunct "^4.1.1" + stampit "^4.3.2" + "@swagger-api/apidom-ns-openapi-3-0@^0.70.3": version "0.70.3" resolved "https://registry.yarnpkg.com/@swagger-api/apidom-ns-openapi-3-0/-/apidom-ns-openapi-3-0-0.70.3.tgz#5d5594accb1ae856c3aa5c357e526c8458eb3568" - integrity sha512-ci5GNSf1cA/Xc2/1Kjlo2u78McevOYsH6+weEPW4JlHa3hMJyi6dlw16yHBRl7lzdxiO0D64+r0JVX0bOBhqyw== + integrity sha1-XVWUrMsa6FbDqlw1flJshFjrNWg= dependencies: "@babel/runtime-corejs3" "^7.20.7" "@swagger-api/apidom-core" "^0.70.1" @@ -3081,10 +3852,24 @@ ramda-adjunct "^4.0.0" stampit "^4.3.2" +"@swagger-api/apidom-ns-openapi-3-0@^0.92.0": + version "0.92.0" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-ns-openapi-3-0/-/apidom-ns-openapi-3-0-0.92.0.tgz#f8e9a62cc06e758a7d3b8cc8b030c28f5457281a" + integrity sha1-+OmmLMBudYp9O4zIsDDCj1RXKBo= + dependencies: + "@babel/runtime-corejs3" "^7.20.7" + "@swagger-api/apidom-core" "^0.92.0" + "@swagger-api/apidom-error" "^0.92.0" + "@swagger-api/apidom-ns-json-schema-draft-4" "^0.92.0" + "@types/ramda" "~0.29.6" + ramda "~0.29.1" + ramda-adjunct "^4.1.1" + stampit "^4.3.2" + "@swagger-api/apidom-ns-openapi-3-1@>=0.70.2 <1.0.0", "@swagger-api/apidom-ns-openapi-3-1@^0.70.3": version "0.70.3" resolved "https://registry.yarnpkg.com/@swagger-api/apidom-ns-openapi-3-1/-/apidom-ns-openapi-3-1-0.70.3.tgz#411d4233eb7ae9250cdc366d6d8f31a9c246ed1a" - integrity sha512-/AwVei3FJeC4wAnmNMywyK8zjKiP8CzuuA58G9xqWk2asOH2qjppYjaFAE6BeJ7of7juR5+BvdQg1wXYz8sutA== + integrity sha1-QR1CM+t66SUM3DZtbY8xqcJG7Ro= dependencies: "@babel/runtime-corejs3" "^7.20.7" "@swagger-api/apidom-ast" "^0.70.0" @@ -3095,10 +3880,37 @@ ramda-adjunct "^4.0.0" stampit "^4.3.2" +"@swagger-api/apidom-ns-openapi-3-1@>=0.90.0 <1.0.0", "@swagger-api/apidom-ns-openapi-3-1@^0.92.0": + version "0.92.0" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-ns-openapi-3-1/-/apidom-ns-openapi-3-1-0.92.0.tgz#3a393c9c56672471233198079a1e15354629dfdd" + integrity sha1-Ojk8nFZnJHEjMZgHmh4VNUYp390= + dependencies: + "@babel/runtime-corejs3" "^7.20.7" + "@swagger-api/apidom-ast" "^0.92.0" + "@swagger-api/apidom-core" "^0.92.0" + "@swagger-api/apidom-ns-openapi-3-0" "^0.92.0" + "@types/ramda" "~0.29.6" + ramda "~0.29.1" + ramda-adjunct "^4.1.1" + stampit "^4.3.2" + +"@swagger-api/apidom-ns-workflows-1@^0.92.0": + version "0.92.0" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-ns-workflows-1/-/apidom-ns-workflows-1-0.92.0.tgz#8ee3d51bd0014fcf8dfc0b58ba03d97b8427b9c3" + integrity sha1-juPVG9ABT8+N/AtYugPZe4QnucM= + dependencies: + "@babel/runtime-corejs3" "^7.20.7" + "@swagger-api/apidom-core" "^0.92.0" + "@swagger-api/apidom-ns-openapi-3-1" "^0.92.0" + "@types/ramda" "~0.29.6" + ramda "~0.29.1" + ramda-adjunct "^4.1.1" + stampit "^4.3.2" + "@swagger-api/apidom-parser-adapter-api-design-systems-json@^0.70.4": version "0.70.4" resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-api-design-systems-json/-/apidom-parser-adapter-api-design-systems-json-0.70.4.tgz#612350a9a48269305cff3e0c56725605c252cdbc" - integrity sha512-xo7mr8/UgVpqe1AMUbNPRnXM3CDgvIXktz7y1abAbRjJ/qhBWsRHBeqf8KQBJjKfJc58i+yMnDXC8hapZplHeA== + integrity sha1-YSNQqaSCaTBc/z4MVnJWBcJSzbw= dependencies: "@babel/runtime-corejs3" "^7.20.7" "@swagger-api/apidom-core" "^0.70.1" @@ -3108,10 +3920,23 @@ ramda "~0.29.0" ramda-adjunct "^4.0.0" +"@swagger-api/apidom-parser-adapter-api-design-systems-json@^0.92.0": + version "0.92.0" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-api-design-systems-json/-/apidom-parser-adapter-api-design-systems-json-0.92.0.tgz#9437cae4c06dc8933345830ff1d055eaea314cda" + integrity sha1-lDfK5MBtyJMzRYMP8dBV6uoxTNo= + dependencies: + "@babel/runtime-corejs3" "^7.20.7" + "@swagger-api/apidom-core" "^0.92.0" + "@swagger-api/apidom-ns-api-design-systems" "^0.92.0" + "@swagger-api/apidom-parser-adapter-json" "^0.92.0" + "@types/ramda" "~0.29.6" + ramda "~0.29.1" + ramda-adjunct "^4.0.0" + "@swagger-api/apidom-parser-adapter-api-design-systems-yaml@^0.70.3": version "0.70.3" resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-api-design-systems-yaml/-/apidom-parser-adapter-api-design-systems-yaml-0.70.3.tgz#6ed0cebc67914ba5796c3692e0ef888995bb2b6d" - integrity sha512-DJJjwv3KuL5hnMfQgpD7S2tbwxalyTsjkaFF6uxcIMJRr9hdKKNDkvJkel/r56FE2pp9WCBhP6Wm1JK6PGI3Pg== + integrity sha1-btDOvGeRS6V5bDaS4O+IiZW7K20= dependencies: "@babel/runtime-corejs3" "^7.20.7" "@swagger-api/apidom-core" "^0.70.1" @@ -3121,10 +3946,23 @@ ramda "~0.29.0" ramda-adjunct "^4.0.0" +"@swagger-api/apidom-parser-adapter-api-design-systems-yaml@^0.92.0": + version "0.92.0" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-api-design-systems-yaml/-/apidom-parser-adapter-api-design-systems-yaml-0.92.0.tgz#72d97d3cef6d30c30a7de61dbdd67321b1913d59" + integrity sha1-ctl9PO9tMMMKfeYdvdZzIbGRPVk= + dependencies: + "@babel/runtime-corejs3" "^7.20.7" + "@swagger-api/apidom-core" "^0.92.0" + "@swagger-api/apidom-ns-api-design-systems" "^0.92.0" + "@swagger-api/apidom-parser-adapter-yaml-1-2" "^0.92.0" + "@types/ramda" "~0.29.6" + ramda "~0.29.1" + ramda-adjunct "^4.0.0" + "@swagger-api/apidom-parser-adapter-asyncapi-json-2@^0.70.4": version "0.70.4" resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-asyncapi-json-2/-/apidom-parser-adapter-asyncapi-json-2-0.70.4.tgz#245fb13af319303cab2d7f1fdefe787ef5177d94" - integrity sha512-eaqQ/93xxVFM+138AL2z5jODyXJlpf5RNRXrE/HaG3PWLB+a7CN9eCy+czP1E6VgC0Wia1kuYf/Bx9aIgNQ6sQ== + integrity sha1-JF+xOvMZMDyrLX8f3v54fvUXfZQ= dependencies: "@babel/runtime-corejs3" "^7.20.7" "@swagger-api/apidom-core" "^0.70.1" @@ -3134,10 +3972,23 @@ ramda "~0.29.0" ramda-adjunct "^4.0.0" +"@swagger-api/apidom-parser-adapter-asyncapi-json-2@^0.92.0": + version "0.92.0" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-asyncapi-json-2/-/apidom-parser-adapter-asyncapi-json-2-0.92.0.tgz#4996bc69e9f7e17a9f4d1b8316429d5373043918" + integrity sha1-SZa8aen34XqfTRuDFkKdU3MEORg= + dependencies: + "@babel/runtime-corejs3" "^7.20.7" + "@swagger-api/apidom-core" "^0.92.0" + "@swagger-api/apidom-ns-asyncapi-2" "^0.92.0" + "@swagger-api/apidom-parser-adapter-json" "^0.92.0" + "@types/ramda" "~0.29.6" + ramda "~0.29.1" + ramda-adjunct "^4.0.0" + "@swagger-api/apidom-parser-adapter-asyncapi-yaml-2@^0.70.3": version "0.70.3" resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-asyncapi-yaml-2/-/apidom-parser-adapter-asyncapi-yaml-2-0.70.3.tgz#654c5243c2700309c4a9bc6be13085057513f1dc" - integrity sha512-UQxxPoxWcgp9laW8kOdzd7991/wgYJ2b7lb3XBhmVydRbPM1AD5L3G/zM5ItVBQZIZ398kDX/mfGTKAJr5pJrA== + integrity sha1-ZUxSQ8JwAwnEqbxr4TCFBXUT8dw= dependencies: "@babel/runtime-corejs3" "^7.20.7" "@swagger-api/apidom-core" "^0.70.1" @@ -3147,10 +3998,23 @@ ramda "~0.29.0" ramda-adjunct "^4.0.0" +"@swagger-api/apidom-parser-adapter-asyncapi-yaml-2@^0.92.0": + version "0.92.0" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-asyncapi-yaml-2/-/apidom-parser-adapter-asyncapi-yaml-2-0.92.0.tgz#29eef57f3632570cdd4d8e8ba0b22fc8e046c44c" + integrity sha1-Ke71fzYyVwzdTY6LoLIvyOBGxEw= + dependencies: + "@babel/runtime-corejs3" "^7.20.7" + "@swagger-api/apidom-core" "^0.92.0" + "@swagger-api/apidom-ns-asyncapi-2" "^0.92.0" + "@swagger-api/apidom-parser-adapter-yaml-1-2" "^0.92.0" + "@types/ramda" "~0.29.6" + ramda "~0.29.1" + ramda-adjunct "^4.0.0" + "@swagger-api/apidom-parser-adapter-json@^0.70.4": version "0.70.4" resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-json/-/apidom-parser-adapter-json-0.70.4.tgz#8b08640088f19f38a3374aaa7d1dd56be36d0cfd" - integrity sha512-Clr4VHocpdDi/bQ4ZSuhN3Ak3g8oLjKtCqjQO34YDrFrKPD2twznALBdVjIHa9D+g5YJYkAQ+5wOrK5uvo/5lQ== + integrity sha1-iwhkAIjxnzijN0qqfR3Va+NtDP0= dependencies: "@babel/runtime-corejs3" "^7.20.7" "@swagger-api/apidom-ast" "^0.70.0" @@ -3163,10 +4027,39 @@ tree-sitter-json "=0.20.0" web-tree-sitter "=0.20.3" +"@swagger-api/apidom-parser-adapter-json@^0.92.0": + version "0.92.0" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-json/-/apidom-parser-adapter-json-0.92.0.tgz#52af0254d3c27f601d6bee5af7f6e78c2b15f939" + integrity sha1-Uq8CVNPCf2Ada+5a9/bnjCsV+Tk= + dependencies: + "@babel/runtime-corejs3" "^7.20.7" + "@swagger-api/apidom-ast" "^0.92.0" + "@swagger-api/apidom-core" "^0.92.0" + "@swagger-api/apidom-error" "^0.92.0" + "@types/ramda" "~0.29.6" + ramda "~0.29.1" + ramda-adjunct "^4.1.1" + tree-sitter "=0.20.4" + tree-sitter-json "=0.20.1" + web-tree-sitter "=0.20.3" + +"@swagger-api/apidom-parser-adapter-openapi-json-2@^0.92.0": + version "0.92.0" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-openapi-json-2/-/apidom-parser-adapter-openapi-json-2-0.92.0.tgz#ccaac1c6129f284aad40d6ff75a2559cbd3bcd73" + integrity sha1-zKrBxhKfKEqtQNb/daJVnL07zXM= + dependencies: + "@babel/runtime-corejs3" "^7.20.7" + "@swagger-api/apidom-core" "^0.92.0" + "@swagger-api/apidom-ns-openapi-2" "^0.92.0" + "@swagger-api/apidom-parser-adapter-json" "^0.92.0" + "@types/ramda" "~0.29.6" + ramda "~0.29.1" + ramda-adjunct "^4.0.0" + "@swagger-api/apidom-parser-adapter-openapi-json-3-0@^0.70.4": version "0.70.4" resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-openapi-json-3-0/-/apidom-parser-adapter-openapi-json-3-0-0.70.4.tgz#96504e559d976f53926d80a5d458e59bc7b5bfe0" - integrity sha512-VfSR/TkB7rN5qAm6nGBrJzGuwhvFH03wojPVtjQEUUlDfmiFK0Snhdzq/65qK8WxSYidIBVgWHEreYif28AhBQ== + integrity sha1-llBOVZ2Xb1OSbYCl1Fjlm8e1v+A= dependencies: "@babel/runtime-corejs3" "^7.20.7" "@swagger-api/apidom-core" "^0.70.1" @@ -3176,10 +4069,23 @@ ramda "~0.29.0" ramda-adjunct "^4.0.0" +"@swagger-api/apidom-parser-adapter-openapi-json-3-0@^0.92.0": + version "0.92.0" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-openapi-json-3-0/-/apidom-parser-adapter-openapi-json-3-0-0.92.0.tgz#7115ba14ee1fd303ae0d40f6ee813c14bcd69819" + integrity sha1-cRW6FO4f0wOuDUD27oE8FLzWmBk= + dependencies: + "@babel/runtime-corejs3" "^7.20.7" + "@swagger-api/apidom-core" "^0.92.0" + "@swagger-api/apidom-ns-openapi-3-0" "^0.92.0" + "@swagger-api/apidom-parser-adapter-json" "^0.92.0" + "@types/ramda" "~0.29.6" + ramda "~0.29.1" + ramda-adjunct "^4.0.0" + "@swagger-api/apidom-parser-adapter-openapi-json-3-1@^0.70.4": version "0.70.4" resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-openapi-json-3-1/-/apidom-parser-adapter-openapi-json-3-1-0.70.4.tgz#a51e8df9842bc0988b089501f4e73dc079933b07" - integrity sha512-XB5owOAI7YtRi7lD1R5vI3zFn7EbjKn/FkSMjC0m4CfienX9f9EkromSWE5i5dQGpCfkpHp/iOJ00xODly1nUQ== + integrity sha1-pR6N+YQrwJiLCJUB9Oc9wHmTOwc= dependencies: "@babel/runtime-corejs3" "^7.20.7" "@swagger-api/apidom-core" "^0.70.1" @@ -3189,10 +4095,36 @@ ramda "~0.29.0" ramda-adjunct "^4.0.0" +"@swagger-api/apidom-parser-adapter-openapi-json-3-1@^0.92.0": + version "0.92.0" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-openapi-json-3-1/-/apidom-parser-adapter-openapi-json-3-1-0.92.0.tgz#f72ef7ddd55bd692d856e056795ee338ce0769e4" + integrity sha1-9y733dVb1pLYVuBWeV7jOM4HaeQ= + dependencies: + "@babel/runtime-corejs3" "^7.20.7" + "@swagger-api/apidom-core" "^0.92.0" + "@swagger-api/apidom-ns-openapi-3-1" "^0.92.0" + "@swagger-api/apidom-parser-adapter-json" "^0.92.0" + "@types/ramda" "~0.29.6" + ramda "~0.29.1" + ramda-adjunct "^4.0.0" + +"@swagger-api/apidom-parser-adapter-openapi-yaml-2@^0.92.0": + version "0.92.0" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-openapi-yaml-2/-/apidom-parser-adapter-openapi-yaml-2-0.92.0.tgz#66449fcfc680ccd59c9d1023f407529b27f7e247" + integrity sha1-ZkSfz8aAzNWcnRAj9AdSmyf34kc= + dependencies: + "@babel/runtime-corejs3" "^7.20.7" + "@swagger-api/apidom-core" "^0.92.0" + "@swagger-api/apidom-ns-openapi-2" "^0.92.0" + "@swagger-api/apidom-parser-adapter-yaml-1-2" "^0.92.0" + "@types/ramda" "~0.29.6" + ramda "~0.29.1" + ramda-adjunct "^4.0.0" + "@swagger-api/apidom-parser-adapter-openapi-yaml-3-0@^0.70.3": version "0.70.3" resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-openapi-yaml-3-0/-/apidom-parser-adapter-openapi-yaml-3-0-0.70.3.tgz#9cfbcaae9c02f0c53f38619f97f8c28c98d1eeb6" - integrity sha512-4vkN+jy4HKYQJc0M7sVD4pqT5n2a7nIwswtHujdMVR2YXXY8RTzBg4DO28qVUoAWUsE0C8Tp+hopDPeCtpYduA== + integrity sha1-nPvKrpwC8MU/OGGfl/jCjJjR7rY= dependencies: "@babel/runtime-corejs3" "^7.20.7" "@swagger-api/apidom-core" "^0.70.1" @@ -3202,10 +4134,23 @@ ramda "~0.29.0" ramda-adjunct "^4.0.0" +"@swagger-api/apidom-parser-adapter-openapi-yaml-3-0@^0.92.0": + version "0.92.0" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-openapi-yaml-3-0/-/apidom-parser-adapter-openapi-yaml-3-0-0.92.0.tgz#233ea2e347943c98cb0961ed025f16f6fe8f40f4" + integrity sha1-Iz6i40eUPJjLCWHtAl8W9v6PQPQ= + dependencies: + "@babel/runtime-corejs3" "^7.20.7" + "@swagger-api/apidom-core" "^0.92.0" + "@swagger-api/apidom-ns-openapi-3-0" "^0.92.0" + "@swagger-api/apidom-parser-adapter-yaml-1-2" "^0.92.0" + "@types/ramda" "~0.29.6" + ramda "~0.29.1" + ramda-adjunct "^4.0.0" + "@swagger-api/apidom-parser-adapter-openapi-yaml-3-1@^0.70.3": version "0.70.3" resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-openapi-yaml-3-1/-/apidom-parser-adapter-openapi-yaml-3-1-0.70.3.tgz#1ebd92b90e06e1c39f5b9e9777f06f95fc87ca2c" - integrity sha512-4xoyOYrG3YBdr/mjNLzDAIdOxFSYR0gh3lRx3/IVkwmhp0rSVrGdD2hFtgoVrj2MiKR60SUbzcnCXJ4MLVmUbQ== + integrity sha1-Hr2SuQ4G4cOfW56Xd/BvlfyHyiw= dependencies: "@babel/runtime-corejs3" "^7.20.7" "@swagger-api/apidom-core" "^0.70.1" @@ -3215,10 +4160,49 @@ ramda "~0.29.0" ramda-adjunct "^4.0.0" +"@swagger-api/apidom-parser-adapter-openapi-yaml-3-1@^0.92.0": + version "0.92.0" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-openapi-yaml-3-1/-/apidom-parser-adapter-openapi-yaml-3-1-0.92.0.tgz#96a4a4f3baeaf2349043ba8bb2b4b5a22717a26b" + integrity sha1-lqSk87rq8jSQQ7qLsrS1oicXoms= + dependencies: + "@babel/runtime-corejs3" "^7.20.7" + "@swagger-api/apidom-core" "^0.92.0" + "@swagger-api/apidom-ns-openapi-3-1" "^0.92.0" + "@swagger-api/apidom-parser-adapter-yaml-1-2" "^0.92.0" + "@types/ramda" "~0.29.6" + ramda "~0.29.1" + ramda-adjunct "^4.0.0" + +"@swagger-api/apidom-parser-adapter-workflows-json-1@^0.92.0": + version "0.92.0" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-workflows-json-1/-/apidom-parser-adapter-workflows-json-1-0.92.0.tgz#e31454a5b5a6ec38281a8aa4aeaf430b8fd61db7" + integrity sha1-4xRUpbWm7DgoGoqkrq9DC4/WHbc= + dependencies: + "@babel/runtime-corejs3" "^7.20.7" + "@swagger-api/apidom-core" "^0.92.0" + "@swagger-api/apidom-ns-workflows-1" "^0.92.0" + "@swagger-api/apidom-parser-adapter-json" "^0.92.0" + "@types/ramda" "~0.29.6" + ramda "~0.29.1" + ramda-adjunct "^4.0.0" + +"@swagger-api/apidom-parser-adapter-workflows-yaml-1@^0.92.0": + version "0.92.0" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-workflows-yaml-1/-/apidom-parser-adapter-workflows-yaml-1-0.92.0.tgz#c4bde8ebf67f1a7bde3998145830dfa6b81ce245" + integrity sha1-xL3o6/Z/GnveOZgUWDDfprgc4kU= + dependencies: + "@babel/runtime-corejs3" "^7.20.7" + "@swagger-api/apidom-core" "^0.92.0" + "@swagger-api/apidom-ns-workflows-1" "^0.92.0" + "@swagger-api/apidom-parser-adapter-yaml-1-2" "^0.92.0" + "@types/ramda" "~0.29.6" + ramda "~0.29.1" + ramda-adjunct "^4.0.0" + "@swagger-api/apidom-parser-adapter-yaml-1-2@^0.70.3": version "0.70.3" resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-yaml-1-2/-/apidom-parser-adapter-yaml-1-2-0.70.3.tgz#a8436c5dc10279f84fe92e5eaeb0798288f4be49" - integrity sha512-e+lGfUfduduIT+nyJtxDFXLqoulvz2sWB9vt+4gmq/SMc0uvFBEcffAeBUOPw4J3d4pMux2eRRzA29YF7/lXng== + integrity sha1-qENsXcECefhP6S5errB5goj0vkk= dependencies: "@babel/runtime-corejs3" "^7.20.7" "@swagger-api/apidom-ast" "^0.70.0" @@ -3231,10 +4215,26 @@ tree-sitter-yaml "=0.5.0" web-tree-sitter "=0.20.3" +"@swagger-api/apidom-parser-adapter-yaml-1-2@^0.92.0": + version "0.92.0" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-parser-adapter-yaml-1-2/-/apidom-parser-adapter-yaml-1-2-0.92.0.tgz#52cf595aa07289a4eadd1850e58d796e0ff0c59e" + integrity sha1-Us9ZWqByiaTq3RhQ5Y15bg/wxZ4= + dependencies: + "@babel/runtime-corejs3" "^7.20.7" + "@swagger-api/apidom-ast" "^0.92.0" + "@swagger-api/apidom-core" "^0.92.0" + "@swagger-api/apidom-error" "^0.92.0" + "@types/ramda" "~0.29.6" + ramda "~0.29.1" + ramda-adjunct "^4.1.1" + tree-sitter "=0.20.4" + tree-sitter-yaml "=0.5.0" + web-tree-sitter "=0.20.3" + "@swagger-api/apidom-reference@>=0.70.2 <1.0.0": version "0.70.4" resolved "https://registry.yarnpkg.com/@swagger-api/apidom-reference/-/apidom-reference-0.70.4.tgz#5579b8528b0cf80ecf4b60a669032d96c3dee4b9" - integrity sha512-+jrDtbJc7zVqHumyDu1rGXZD3BwrD8qu+FaC7+9iZThU2GAEOs4VvTcCkPQLfVtpIrv1fPvNkzean27MJZxpkw== + integrity sha1-VXm4UosM+A7PS2CmaQMtlsPe5Lk= dependencies: "@babel/runtime-corejs3" "^7.20.7" "@swagger-api/apidom-core" "^0.70.1" @@ -3261,6 +4261,43 @@ "@swagger-api/apidom-parser-adapter-openapi-yaml-3-1" "^0.70.3" "@swagger-api/apidom-parser-adapter-yaml-1-2" "^0.70.3" +"@swagger-api/apidom-reference@>=0.90.0 <1.0.0": + version "0.92.0" + resolved "https://registry.yarnpkg.com/@swagger-api/apidom-reference/-/apidom-reference-0.92.0.tgz#11054a13e438bf15736200c6826cae845c12e465" + integrity sha1-EQVKE+Q4vxVzYgDGgmyuhFwS5GU= + dependencies: + "@babel/runtime-corejs3" "^7.20.7" + "@swagger-api/apidom-core" "^0.92.0" + "@types/ramda" "~0.29.6" + axios "^1.4.0" + minimatch "^7.4.3" + process "^0.11.10" + ramda "~0.29.1" + ramda-adjunct "^4.1.1" + stampit "^4.3.2" + optionalDependencies: + "@swagger-api/apidom-error" "^0.92.0" + "@swagger-api/apidom-json-pointer" "^0.92.0" + "@swagger-api/apidom-ns-asyncapi-2" "^0.92.0" + "@swagger-api/apidom-ns-openapi-2" "^0.92.0" + "@swagger-api/apidom-ns-openapi-3-0" "^0.92.0" + "@swagger-api/apidom-ns-openapi-3-1" "^0.92.0" + "@swagger-api/apidom-ns-workflows-1" "^0.92.0" + "@swagger-api/apidom-parser-adapter-api-design-systems-json" "^0.92.0" + "@swagger-api/apidom-parser-adapter-api-design-systems-yaml" "^0.92.0" + "@swagger-api/apidom-parser-adapter-asyncapi-json-2" "^0.92.0" + "@swagger-api/apidom-parser-adapter-asyncapi-yaml-2" "^0.92.0" + "@swagger-api/apidom-parser-adapter-json" "^0.92.0" + "@swagger-api/apidom-parser-adapter-openapi-json-2" "^0.92.0" + "@swagger-api/apidom-parser-adapter-openapi-json-3-0" "^0.92.0" + "@swagger-api/apidom-parser-adapter-openapi-json-3-1" "^0.92.0" + "@swagger-api/apidom-parser-adapter-openapi-yaml-2" "^0.92.0" + "@swagger-api/apidom-parser-adapter-openapi-yaml-3-0" "^0.92.0" + "@swagger-api/apidom-parser-adapter-openapi-yaml-3-1" "^0.92.0" + "@swagger-api/apidom-parser-adapter-workflows-json-1" "^0.92.0" + "@swagger-api/apidom-parser-adapter-workflows-yaml-1" "^0.92.0" + "@swagger-api/apidom-parser-adapter-yaml-1-2" "^0.92.0" + "@swc/core-darwin-arm64@1.3.20": version "1.3.20" resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.20.tgz#e713ed63ef7b8096fb820b7cbd5aa776e824431f" @@ -3327,11 +4364,17 @@ "@swc/core-win32-ia32-msvc" "1.3.20" "@swc/core-win32-x64-msvc" "1.3.20" -"@swc/helpers@0.5.1": - version "0.5.1" - resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.1.tgz#e9031491aa3f26bfcc974a67f48bd456c8a5357a" - integrity sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg== +"@swc/counter@^0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@swc/counter/-/counter-0.1.3.tgz#cc7463bd02949611c6329596fccd2b0ec782b0e9" + integrity sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ== + +"@swc/helpers@0.5.5": + version "0.5.5" + resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.5.tgz#12689df71bfc9b21c4f4ca00ae55f2f16c8b77c0" + integrity sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A== dependencies: + "@swc/counter" "^0.1.3" tslib "^2.4.0" "@swc/helpers@^0.4.14": @@ -3341,6 +4384,13 @@ dependencies: tslib "^2.4.0" +"@swc/helpers@^0.5.1": + version "0.5.2" + resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.2.tgz#85ea0c76450b61ad7d10a37050289eded783c27d" + integrity sha1-heoMdkULYa19EKNwUCie3teDwn0= + dependencies: + tslib "^2.4.0" + "@swc/jest@^0.2.22": version "0.2.23" resolved "https://registry.yarnpkg.com/@swc/jest/-/jest-0.2.23.tgz#0b7499d5927faaa090c5b7a4a0e35122968fef30" @@ -3449,13 +4499,6 @@ dependencies: "@babel/types" "^7.3.0" -"@types/buble@^0.20.0": - version "0.20.1" - resolved "https://registry.yarnpkg.com/@types/buble/-/buble-0.20.1.tgz#cba009801fd417b0d2eb8fa6824b537842e05803" - integrity sha512-itmN3lGSTvXg9IImY5j290H+n0B3PpZST6AgEfJJDXfaMx2cdJJZro3/Ay+bZZdIAa25Z5rnoo9rHiPCbANZoQ== - dependencies: - magic-string "^0.25.0" - "@types/cookie@^0.4.1": version "0.4.1" resolved "https://registry.yarnpkg.com/@types/cookie/-/cookie-0.4.1.tgz#bfd02c1f2224567676c1545199f87c3a861d878d" @@ -3506,10 +4549,24 @@ dependencies: "@types/unist" "*" +"@types/hast@^3.0.0": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/hast/-/hast-3.0.3.tgz#7f75e6b43bc3f90316046a287d9ad3888309f7e1" + integrity sha512-2fYGlaDy/qyLlhidX42wAH0KBi2TCjKMH8CHmBXgRlJ3Y+OXTiqsPQ6IWarZKwF1JoUcAJdPogv1d4b0COTpmQ== + dependencies: + "@types/unist" "*" + +"@types/hast@^3.0.4": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@types/hast/-/hast-3.0.4.tgz#1d6b39993b82cea6ad783945b0508c25903e15aa" + integrity sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ== + dependencies: + "@types/unist" "*" + "@types/hoist-non-react-statics@*", "@types/hoist-non-react-statics@^3.3.1": version "3.3.1" resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz#1124aafe5118cb591977aeb1ceaaed1070eb039f" - integrity sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA== + integrity sha1-ESSq/lEYy1kZd66xzqrtEHDrA58= dependencies: "@types/react" "*" hoist-non-react-statics "^3.3.0" @@ -3573,11 +4630,6 @@ resolved "https://registry.yarnpkg.com/@types/js-levenshtein/-/js-levenshtein-1.1.1.tgz#ba05426a43f9e4e30b631941e0aa17bf0c890ed5" integrity sha512-qC4bCqYGy1y/NP7dDVr7KJarn+PbX1nSpwA7JXdu0HxT3QYjO8MJ+cntENtHFVy2dRAyBV23OZ6MxsW1AM1L8g== -"@types/js-yaml@^4.0.0": - version "4.0.5" - resolved "https://registry.yarnpkg.com/@types/js-yaml/-/js-yaml-4.0.5.tgz#738dd390a6ecc5442f35e7f03fa1431353f7e138" - integrity sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA== - "@types/jsdom@^20.0.0": version "20.0.1" resolved "https://registry.yarnpkg.com/@types/jsdom/-/jsdom-20.0.1.tgz#07c14bc19bd2f918c1929541cdaacae894744808" @@ -3590,12 +4642,12 @@ "@types/json-schema@^7.0.11": version "7.0.12" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.12.tgz#d70faba7039d5fca54c83c7dbab41051d2b6f6cb" - integrity sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA== + integrity sha1-1w+rpwOdX8pUyDx9urQQUdK29ss= -"@types/json-schema@^7.0.9": - version "7.0.11" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" - integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== +"@types/json-schema@^7.0.12": + version "7.0.13" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.13.tgz#02c24f4363176d2d18fc8b70b9f3c54aba178a85" + integrity sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ== "@types/json5@^0.0.29": version "0.0.29" @@ -3612,7 +4664,7 @@ "@types/lodash.clonedeep@^4.5.7": version "4.5.7" resolved "https://registry.yarnpkg.com/@types/lodash.clonedeep/-/lodash.clonedeep-4.5.7.tgz#0e119f582ed6f9e6b373c04a644651763214f197" - integrity sha512-ccNqkPptFIXrpVqUECi60/DFxjNKsfoQxSQsgcBJCX/fuX1wgyQieojkcWH/KpE3xzLoWN/2k+ZeGqIN3paSvw== + integrity sha1-DhGfWC7W+eazc8BKZEZRdjIU8Zc= dependencies: "@types/lodash" "*" @@ -3633,6 +4685,13 @@ dependencies: "@types/unist" "*" +"@types/mdast@^4.0.0": + version "4.0.3" + resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-4.0.3.tgz#1e011ff013566e919a4232d1701ad30d70cab333" + integrity sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg== + dependencies: + "@types/unist" "*" + "@types/mdx@^2.0.0": version "2.0.3" resolved "https://registry.yarnpkg.com/@types/mdx/-/mdx-2.0.3.tgz#43fd32414f17fcbeced3578109a6edd877a2d96e" @@ -3671,10 +4730,15 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-16.18.11.tgz#cbb15c12ca7c16c85a72b6bdc4d4b01151bb3cae" integrity sha512-3oJbGBUWuS6ahSnEq1eN2XrCyf4YsWI8OyCvo7c64zQJNplk3mO84t53o8lfTk+2ji59g5ycfc6qQ3fdHliHuA== -"@types/node@^17.0.24": - version "17.0.45" - resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.45.tgz#2c0fafd78705e7a18b7906b5201a522719dc5190" - integrity sha1-LA+v14cF56GLeQa1IBpSJxncUZA= +"@types/node@^18.0.0": + version "18.18.4" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.18.4.tgz#519fef47a13cf869be290c20fc6ae9b7fe887aa7" + integrity sha512-t3rNFBgJRugIhackit2mVcLfF6IRc0JE4oeizPQL8Zrm8n2WY/0wOdpOPhdtG0V9Q2TlW/axbF1MJ6z+Yj/kKQ== + +"@types/node@^18.15.3": + version "18.16.18" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.16.18.tgz#85da09bafb66d4bc14f7c899185336d0c1736390" + integrity sha512-/aNaQZD0+iSBAGnvvN2Cx92HqE5sZCPZtx2TsK+4nvV23fFe09jVDvpArXr2j9DnYlzuU9WuoykDDc6wqvpNcw== "@types/node@^18.7.19": version "18.11.10" @@ -3704,14 +4768,21 @@ "@types/ramda@~0.29.1": version "0.29.3" resolved "https://registry.yarnpkg.com/@types/ramda/-/ramda-0.29.3.tgz#6e4d4066df900a3456cf402bcef9b78b6990a754" - integrity sha512-Yh/RHkjN0ru6LVhSQtTkCRo6HXkfL9trot/2elzM/yXLJmbLm2v6kJc8yftTnwv1zvUob6TEtqI2cYjdqG3U0Q== + integrity sha1-bk1AZt+QCjRWz0Arzvm3i2mQp1Q= dependencies: types-ramda "^0.29.4" -"@types/react-dom@^18.0.0": - version "18.0.10" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.0.10.tgz#3b66dec56aa0f16a6cc26da9e9ca96c35c0b4352" - integrity sha512-E42GW/JA4Qv15wQdqJq8DL4JhNpB3prJgjgapN3qJT9K2zO5IIAQh4VXvCEDupoqAwnz0cY4RlXeC/ajX5SFHg== +"@types/ramda@~0.29.6": + version "0.29.10" + resolved "https://registry.yarnpkg.com/@types/ramda/-/ramda-0.29.10.tgz#2584b268f9e0dd71ed4e5432b095186eb24a1f8f" + integrity sha1-JYSyaPng3XHtTlQysJUYbrJKH48= + dependencies: + types-ramda "^0.29.7" + +"@types/react-dom@^18.0.0", "@types/react-dom@^18.2.18": + version "18.2.18" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.2.18.tgz#16946e6cd43971256d874bc3d0a72074bb8571dd" + integrity sha1-FpRubNQ5cSVth0vD0KcgdLuFcd0= dependencies: "@types/react" "*" @@ -3722,10 +4793,10 @@ dependencies: "@types/react" "*" -"@types/react@*", "@types/react@>=16", "@types/react@^18.0.26": - version "18.0.26" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.26.tgz#8ad59fc01fef8eaf5c74f4ea392621749f0b7917" - integrity sha512-hCR3PJQsAIXyxhTNSiDFY//LhnMZWpNNr5etoCqx/iUfGc5gXWtQR2Phl908jVR6uPXacojQWTg4qRpkxTuGug== +"@types/react@*", "@types/react@^18.2.46": + version "18.2.46" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.46.tgz#f04d6c528f8f136ea66333bc66abcae46e2680df" + integrity sha512-nNCvVBcZlvX4NU1nRRNV/mFl1nNRuTuslAJglQsq+8ldXe5Xv0Wd2f7WTE3jOxhLH2BFfiZGC6GCp+kHQbgG+w== dependencies: "@types/prop-types" "*" "@types/scheduler" "*" @@ -3741,6 +4812,11 @@ resolved "https://registry.yarnpkg.com/@types/semver/-/semver-6.2.3.tgz#5798ecf1bec94eaa64db39ee52808ec0693315aa" integrity sha512-KQf+QAMWKMrtBMsB8/24w53tEsxllMj6TuA80TT/5igJalLI/zm0L3oXRbIAl4Ohfc85gyHX/jhMwsVkmhLU4A== +"@types/semver@^7.5.0": + version "7.5.3" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.3.tgz#9a726e116beb26c24f1ccd6850201e1246122e04" + integrity sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw== + "@types/set-cookie-parser@^2.4.0": version "2.4.2" resolved "https://registry.yarnpkg.com/@types/set-cookie-parser/-/set-cookie-parser-2.4.2.tgz#b6a955219b54151bfebd4521170723df5e13caad" @@ -3748,18 +4824,6 @@ dependencies: "@types/node" "*" -"@types/sinon@^10.0.10": - version "10.0.13" - resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-10.0.13.tgz#60a7a87a70d9372d0b7b38cc03e825f46981fb83" - integrity sha512-UVjDqJblVNQYvVNUsj0PuYYw0ELRmgt1Nt5Vk0pT5f16ROGfcKJY8o1HVuMOJOpD727RrGB9EGvoaTQE5tgxZQ== - dependencies: - "@types/sinonjs__fake-timers" "*" - -"@types/sinonjs__fake-timers@*": - version "8.1.2" - resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.2.tgz#bf2e02a3dbd4aecaf95942ecd99b7402e03fad5e" - integrity sha512-9GcLXF0/v3t80caGs5p2rRfkB+a8VBGLJZVih6CNFkx8IZ994wiKKLSRs9nuFwk1HevWs/1mnUmkApGrSGsShA== - "@types/stack-utils@^2.0.0": version "2.0.1" resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" @@ -3782,7 +4846,7 @@ "@types/swagger-ui-react@^4.18.0": version "4.18.0" resolved "https://registry.yarnpkg.com/@types/swagger-ui-react/-/swagger-ui-react-4.18.0.tgz#6668a7f44c825f9dbd46e3ecb8a9a40f745ce861" - integrity sha512-XtvFXmj46Zibe89tFQwSQknrq1NxEtOep2rZuxth7K88tyPEP00FnoA6H7ATYhocAEA4XUWaNHNFWFRl1KX8aQ== + integrity sha1-Zmin9EyCX529RuPsuKmkD3Rc6GE= dependencies: "@types/react" "*" @@ -3805,15 +4869,20 @@ resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.2.tgz#6286b4c7228d58ab7866d19716f3696e03a09397" integrity sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw== -"@types/unist@*", "@types/unist@^2.0.0", "@types/unist@^2.0.2", "@types/unist@^2.0.3": +"@types/unist@*", "@types/unist@^2.0.0": version "2.0.6" resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.6.tgz#250a7b16c3b91f672a24552ec64678eeb1d3a08d" integrity sha1-JQp7FsO5H2cqJFUuxkZ47rHToI0= +"@types/unist@^3.0.0": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/unist/-/unist-3.0.2.tgz#6dd61e43ef60b34086287f83683a5c1b2dc53d20" + integrity sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ== + "@types/use-sync-external-store@^0.0.3": version "0.0.3" resolved "https://registry.yarnpkg.com/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz#b6725d5f4af24ace33b36fafd295136e75509f43" - integrity sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA== + integrity sha1-tnJdX0rySs4zs2+v0pUTbnVQn0M= "@types/uuid@^8.3.4": version "8.3.4" @@ -3846,129 +4915,95 @@ dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@5.38.0": - version "5.38.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.38.0.tgz#ac919a199548861012e8c1fb2ec4899ac2bc22ae" - integrity sha512-GgHi/GNuUbTOeoJiEANi0oI6fF3gBQc3bGFYj40nnAPCbhrtEDf2rjBmefFadweBmO1Du1YovHeDP2h5JLhtTQ== +"@typescript-eslint/eslint-plugin@^6.7.4": + version "6.7.5" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.7.5.tgz#f4024b9f63593d0c2b5bd6e4ca027e6f30934d4f" + integrity sha512-JhtAwTRhOUcP96D0Y6KYnwig/MRQbOoLGXTON2+LlyB/N35SP9j1boai2zzwXb7ypKELXMx3DVk9UTaEq1vHEw== dependencies: - "@typescript-eslint/scope-manager" "5.38.0" - "@typescript-eslint/type-utils" "5.38.0" - "@typescript-eslint/utils" "5.38.0" - debug "^4.3.4" - ignore "^5.2.0" - regexpp "^3.2.0" - semver "^7.3.7" - tsutils "^3.21.0" - -"@typescript-eslint/parser@5.38.0": - version "5.38.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.38.0.tgz#5a59a1ff41a7b43aacd1bb2db54f6bf1c02b2ff8" - integrity sha512-/F63giJGLDr0ms1Cr8utDAxP2SPiglaD6V+pCOcG35P2jCqdfR7uuEhz1GIC3oy4hkUF8xA1XSXmd9hOh/a5EA== - dependencies: - "@typescript-eslint/scope-manager" "5.38.0" - "@typescript-eslint/types" "5.38.0" - "@typescript-eslint/typescript-estree" "5.38.0" + "@eslint-community/regexpp" "^4.5.1" + "@typescript-eslint/scope-manager" "6.7.5" + "@typescript-eslint/type-utils" "6.7.5" + "@typescript-eslint/utils" "6.7.5" + "@typescript-eslint/visitor-keys" "6.7.5" debug "^4.3.4" - -"@typescript-eslint/parser@^5.21.0": - version "5.48.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.48.2.tgz#c9edef2a0922d26a37dba03be20c5fff378313b3" - integrity sha512-38zMsKsG2sIuM5Oi/olurGwYJXzmtdsHhn5mI/pQogP+BjYVkK5iRazCQ8RGS0V+YLk282uWElN70zAAUmaYHw== - dependencies: - "@typescript-eslint/scope-manager" "5.48.2" - "@typescript-eslint/types" "5.48.2" - "@typescript-eslint/typescript-estree" "5.48.2" + graphemer "^1.4.0" + ignore "^5.2.4" + natural-compare "^1.4.0" + semver "^7.5.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/parser@^5.4.2 || ^6.0.0", "@typescript-eslint/parser@^6.7.4": + version "6.7.5" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.7.5.tgz#8d7ca3d1fbd9d5a58cc4d30b2aa797a760137886" + integrity sha512-bIZVSGx2UME/lmhLcjdVc7ePBwn7CLqKarUBL4me1C5feOd663liTGjMBGVcGr+BhnSLeP4SgwdvNnnkbIdkCw== + dependencies: + "@typescript-eslint/scope-manager" "6.7.5" + "@typescript-eslint/types" "6.7.5" + "@typescript-eslint/typescript-estree" "6.7.5" + "@typescript-eslint/visitor-keys" "6.7.5" debug "^4.3.4" -"@typescript-eslint/scope-manager@5.38.0": - version "5.38.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.38.0.tgz#8f0927024b6b24e28671352c93b393a810ab4553" - integrity sha512-ByhHIuNyKD9giwkkLqzezZ9y5bALW8VNY6xXcP+VxoH4JBDKjU5WNnsiD4HJdglHECdV+lyaxhvQjTUbRboiTA== +"@typescript-eslint/scope-manager@6.7.5": + version "6.7.5" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.7.5.tgz#1cf33b991043886cd67f4f3600b8e122fc14e711" + integrity sha512-GAlk3eQIwWOJeb9F7MKQ6Jbah/vx1zETSDw8likab/eFcqkjSD7BI75SDAeC5N2L0MmConMoPvTsmkrg71+B1A== dependencies: - "@typescript-eslint/types" "5.38.0" - "@typescript-eslint/visitor-keys" "5.38.0" + "@typescript-eslint/types" "6.7.5" + "@typescript-eslint/visitor-keys" "6.7.5" -"@typescript-eslint/scope-manager@5.48.2": - version "5.48.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.48.2.tgz#bb7676cb78f1e94921eaab637a4b5d596f838abc" - integrity sha512-zEUFfonQid5KRDKoI3O+uP1GnrFd4tIHlvs+sTJXiWuypUWMuDaottkJuR612wQfOkjYbsaskSIURV9xo4f+Fw== +"@typescript-eslint/type-utils@6.7.5": + version "6.7.5" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.7.5.tgz#0a65949ec16588d8956f6d967f7d9c84ddb2d72a" + integrity sha512-Gs0qos5wqxnQrvpYv+pf3XfcRXW6jiAn9zE/K+DlmYf6FcpxeNYN0AIETaPR7rHO4K2UY+D0CIbDP9Ut0U4m1g== dependencies: - "@typescript-eslint/types" "5.48.2" - "@typescript-eslint/visitor-keys" "5.48.2" - -"@typescript-eslint/type-utils@5.38.0": - version "5.38.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.38.0.tgz#c8b7f681da825fcfc66ff2b63d70693880496876" - integrity sha512-iZq5USgybUcj/lfnbuelJ0j3K9dbs1I3RICAJY9NZZpDgBYXmuUlYQGzftpQA9wC8cKgtS6DASTvF3HrXwwozA== - dependencies: - "@typescript-eslint/typescript-estree" "5.38.0" - "@typescript-eslint/utils" "5.38.0" + "@typescript-eslint/typescript-estree" "6.7.5" + "@typescript-eslint/utils" "6.7.5" debug "^4.3.4" - tsutils "^3.21.0" - -"@typescript-eslint/types@5.38.0": - version "5.38.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.38.0.tgz#8cd15825e4874354e31800dcac321d07548b8a5f" - integrity sha512-HHu4yMjJ7i3Cb+8NUuRCdOGu2VMkfmKyIJsOr9PfkBVYLYrtMCK/Ap50Rpov+iKpxDTfnqvDbuPLgBE5FwUNfA== - -"@typescript-eslint/types@5.48.2": - version "5.48.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.48.2.tgz#635706abb1ec164137f92148f06f794438c97b8e" - integrity sha512-hE7dA77xxu7ByBc6KCzikgfRyBCTst6dZQpwaTy25iMYOnbNljDT4hjhrGEJJ0QoMjrfqrx+j1l1B9/LtKeuqA== + ts-api-utils "^1.0.1" -"@typescript-eslint/typescript-estree@5.38.0": - version "5.38.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.38.0.tgz#89f86b2279815c6fb7f57d68cf9b813f0dc25d98" - integrity sha512-6P0RuphkR+UuV7Avv7MU3hFoWaGcrgOdi8eTe1NwhMp2/GjUJoODBTRWzlHpZh6lFOaPmSvgxGlROa0Sg5Zbyg== - dependencies: - "@typescript-eslint/types" "5.38.0" - "@typescript-eslint/visitor-keys" "5.38.0" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - semver "^7.3.7" - tsutils "^3.21.0" +"@typescript-eslint/types@6.7.5": + version "6.7.5" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.7.5.tgz#4571320fb9cf669de9a95d9849f922c3af809790" + integrity sha512-WboQBlOXtdj1tDFPyIthpKrUb+kZf2VroLZhxKa/VlwLlLyqv/PwUNgL30BlTVZV1Wu4Asu2mMYPqarSO4L5ZQ== -"@typescript-eslint/typescript-estree@5.48.2": - version "5.48.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.48.2.tgz#6e206b462942b32383582a6c9251c05021cc21b0" - integrity sha512-bibvD3z6ilnoVxUBFEgkO0k0aFvUc4Cttt0dAreEr+nrAHhWzkO83PEVVuieK3DqcgL6VAK5dkzK8XUVja5Zcg== +"@typescript-eslint/typescript-estree@6.7.5": + version "6.7.5" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.7.5.tgz#4578de1a26e9f24950f029a4f00d1bfe41f15a39" + integrity sha512-NhJiJ4KdtwBIxrKl0BqG1Ur+uw7FiOnOThcYx9DpOGJ/Abc9z2xNzLeirCG02Ig3vkvrc2qFLmYSSsaITbKjlg== dependencies: - "@typescript-eslint/types" "5.48.2" - "@typescript-eslint/visitor-keys" "5.48.2" + "@typescript-eslint/types" "6.7.5" + "@typescript-eslint/visitor-keys" "6.7.5" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" - semver "^7.3.7" - tsutils "^3.21.0" - -"@typescript-eslint/utils@5.38.0": - version "5.38.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.38.0.tgz#5b31f4896471818153790700eb02ac869a1543f4" - integrity sha512-6sdeYaBgk9Fh7N2unEXGz+D+som2QCQGPAf1SxrkEr+Z32gMreQ0rparXTNGRRfYUWk/JzbGdcM8NSSd6oqnTA== - dependencies: - "@types/json-schema" "^7.0.9" - "@typescript-eslint/scope-manager" "5.38.0" - "@typescript-eslint/types" "5.38.0" - "@typescript-eslint/typescript-estree" "5.38.0" - eslint-scope "^5.1.1" - eslint-utils "^3.0.0" - -"@typescript-eslint/visitor-keys@5.38.0": - version "5.38.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.38.0.tgz#60591ca3bf78aa12b25002c0993d067c00887e34" - integrity sha512-MxnrdIyArnTi+XyFLR+kt/uNAcdOnmT+879os7qDRI+EYySR4crXJq9BXPfRzzLGq0wgxkwidrCJ9WCAoacm1w== - dependencies: - "@typescript-eslint/types" "5.38.0" - eslint-visitor-keys "^3.3.0" - -"@typescript-eslint/visitor-keys@5.48.2": - version "5.48.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.48.2.tgz#c247582a0bcce467461d7b696513bf9455000060" - integrity sha512-z9njZLSkwmjFWUelGEwEbdf4NwKvfHxvGC0OcGN1Hp/XNDIcJ7D5DpPNPv6x6/mFvc1tQHsaWmpD/a4gOvvCJQ== - dependencies: - "@typescript-eslint/types" "5.48.2" - eslint-visitor-keys "^3.3.0" + semver "^7.5.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/utils@6.7.5": + version "6.7.5" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.7.5.tgz#ab847b53d6b65e029314b8247c2336843dba81ab" + integrity sha512-pfRRrH20thJbzPPlPc4j0UNGvH1PjPlhlCMq4Yx7EGjV7lvEeGX0U6MJYe8+SyFutWgSHsdbJ3BXzZccYggezA== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + "@types/json-schema" "^7.0.12" + "@types/semver" "^7.5.0" + "@typescript-eslint/scope-manager" "6.7.5" + "@typescript-eslint/types" "6.7.5" + "@typescript-eslint/typescript-estree" "6.7.5" + semver "^7.5.4" + +"@typescript-eslint/visitor-keys@6.7.5": + version "6.7.5" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.5.tgz#84c68d6ceb5b12d5246b918b84f2b79affd6c2f1" + integrity sha512-3MaWdDZtLlsexZzDSdQWsFQ9l9nL8B80Z4fImSpyllFC/KLqWQRdEcB+gGGO+N3Q2uL40EsG66wZLsohPxNXvg== + dependencies: + "@typescript-eslint/types" "6.7.5" + eslint-visitor-keys "^3.4.1" + +"@ungap/structured-clone@^1.0.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" + integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== "@vanilla-extract/babel-plugin-debug-ids@^1.0.0": version "1.0.0" @@ -3977,12 +5012,36 @@ dependencies: "@babel/core" "^7.13.10" -"@vanilla-extract/css-utils@^0.1.1": +"@vanilla-extract/babel-plugin-debug-ids@^1.0.2": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@vanilla-extract/babel-plugin-debug-ids/-/babel-plugin-debug-ids-1.0.3.tgz#ce07190343b51ed658b385bdce1e79952a4e8526" + integrity sha512-vm4jYu1xhSa6ofQ9AhIpR3DkAp4c+eoR1Rpm8/TQI4DmWbmGbOjYRcqV0aWsfaIlNhN4kFuxFMKBNN9oG6iRzA== + dependencies: + "@babel/core" "^7.20.7" + +"@vanilla-extract/css-utils@^0.1.3": version "0.1.3" resolved "https://registry.yarnpkg.com/@vanilla-extract/css-utils/-/css-utils-0.1.3.tgz#cadeb6bc563547b20e9b903647d8b334d3a79ef8" integrity sha512-PZAcHROlgtCUGI2y0JntdNwvPwCNyeVnkQu6KTYKdmxBbK3w72XJUmLFYapfaFfgami4I9CTLnrJTPdtmS3gpw== -"@vanilla-extract/css@^1.6.0", "@vanilla-extract/css@^1.9.2": +"@vanilla-extract/css@^1.14.0": + version "1.14.0" + resolved "https://registry.yarnpkg.com/@vanilla-extract/css/-/css-1.14.0.tgz#45fab9c04d893e3e363cf2cde7559d21233b7f63" + integrity sha512-rYfm7JciWZ8PFzBM/HDiE2GLnKI3xJ6/vdmVJ5BSgcCZ5CxRlM9Cjqclni9lGzF3eMOijnUhCd/KV8TOzyzbMA== + dependencies: + "@emotion/hash" "^0.9.0" + "@vanilla-extract/private" "^1.0.3" + chalk "^4.1.1" + css-what "^6.1.0" + cssesc "^3.0.0" + csstype "^3.0.7" + deep-object-diff "^1.1.9" + deepmerge "^4.2.2" + media-query-parser "^2.0.2" + modern-ahocorasick "^1.0.0" + outdent "^0.8.0" + +"@vanilla-extract/css@^1.9.2": version "1.9.2" resolved "https://registry.yarnpkg.com/@vanilla-extract/css/-/css-1.9.2.tgz#2c4bcc58f3c7441a1d041083c76bf5c3e2c77675" integrity sha512-CE5+R89LOl9XG5dRwEIvVyl/YcS2GkqjdE/XnGJ+p7Fp6Exu08fifv7tY87XxFeCIRAbc9psM+h4lF+wC3Y0fg== @@ -3999,13 +5058,20 @@ media-query-parser "^2.0.2" outdent "^0.8.0" -"@vanilla-extract/esbuild-plugin@^2.0.0", "@vanilla-extract/esbuild-plugin@^2.0.2": +"@vanilla-extract/esbuild-plugin@^2.0.0": version "2.2.0" resolved "https://registry.yarnpkg.com/@vanilla-extract/esbuild-plugin/-/esbuild-plugin-2.2.0.tgz#ea430cf5cced84477ed1fd167ce9dc31b14accad" integrity sha512-WlnSbqD2/7OryWj1JEef9a5nLpWbv828J4cOBGqi5G1kAo0e8aKTT3+pLhFmDU0bdnpPYVw1lBz+xJrxT/FQQA== dependencies: "@vanilla-extract/integration" "^6.0.0" +"@vanilla-extract/esbuild-plugin@^2.3.1": + version "2.3.1" + resolved "https://registry.yarnpkg.com/@vanilla-extract/esbuild-plugin/-/esbuild-plugin-2.3.1.tgz#00ae4b06c222076bc6d2e5589ba7fcc08d6ea86c" + integrity sha512-HBCDVfUuQrzRuv+1sx54R2crdXd03V0UDDZjvJB2PwLfXqVJsYEENcHfMwYoM1xGVm5x6KzhbeGLnBDZIlhceQ== + dependencies: + "@vanilla-extract/integration" "^6.2.0" + "@vanilla-extract/integration@^6.0.0": version "6.0.1" resolved "https://registry.yarnpkg.com/@vanilla-extract/integration/-/integration-6.0.1.tgz#bd2493cad9b94d62b3e409562a89e70675b2325b" @@ -4022,20 +5088,39 @@ lodash "^4.17.21" outdent "^0.8.0" +"@vanilla-extract/integration@^6.2.0": + version "6.2.4" + resolved "https://registry.yarnpkg.com/@vanilla-extract/integration/-/integration-6.2.4.tgz#bd8a5ec0916051c1ef5fb66d8484a5cad8d8c58d" + integrity sha512-+AfymNMVq9sEUe0OJpdCokmPZg4Zi6CqKaW/PnUOfDwEn53ighHOMOBl5hAgxYR8Kiz9NG43Bn00mkjWlFi+ng== + dependencies: + "@babel/core" "^7.20.7" + "@babel/plugin-syntax-typescript" "^7.20.0" + "@vanilla-extract/babel-plugin-debug-ids" "^1.0.2" + "@vanilla-extract/css" "^1.14.0" + esbuild "0.17.6" + eval "0.1.8" + find-up "^5.0.0" + javascript-stringify "^2.0.1" + lodash "^4.17.21" + mlly "^1.1.0" + outdent "^0.8.0" + vite "^4.1.4" + vite-node "^0.28.5" + "@vanilla-extract/private@^1.0.3": version "1.0.3" resolved "https://registry.yarnpkg.com/@vanilla-extract/private/-/private-1.0.3.tgz#7ec72bc2ff6fe51f9d650f962e8d1989b073690f" integrity sha512-17kVyLq3ePTKOkveHxXuIJZtGYs+cSoev7BlP+Lf4916qfDhk/HBjvlYDe8egrea7LNPHKwSZJK/bzZC+Q6AwQ== -"@vanilla-extract/recipes@^0.2.1": - version "0.2.5" - resolved "https://registry.yarnpkg.com/@vanilla-extract/recipes/-/recipes-0.2.5.tgz#40314b6db7319707303cccfb2c7200d919c313a8" - integrity sha512-OWXUUiFJdswD3+Xg8f8avuw/vAHZRFS4oHqFeoV1TcO8cfbDQ0zmkreBHvyspoJU+qsyWK48yPHKSptqNRPy9Q== +"@vanilla-extract/recipes@^0.5.1": + version "0.5.1" + resolved "https://registry.yarnpkg.com/@vanilla-extract/recipes/-/recipes-0.5.1.tgz#617d1a0375af60835341770397810317d2f61998" + integrity sha512-7dCuBgPQQ/89siQ0w2lkfjgkmToPUUDzFlHf5DRmt9ykiiycfA52tmPJ2RI/mr7jXi7U/vEN2aGP9QJSXEpGlA== -"@vanilla-extract/sprinkles@^1.3.0": - version "1.5.1" - resolved "https://registry.yarnpkg.com/@vanilla-extract/sprinkles/-/sprinkles-1.5.1.tgz#3e226e99c597af8bfeafc8f76a7a720b210a29cf" - integrity sha512-xPYpeEZEC1mhiPqWCBPGdIHkpFaaQIbaAfG9W2JyIW0byqTP7CoaxdYNMPjhZuoV5lkTI14SJg8Bt+fZqmV5yQ== +"@vanilla-extract/sprinkles@^1.6.1": + version "1.6.1" + resolved "https://registry.yarnpkg.com/@vanilla-extract/sprinkles/-/sprinkles-1.6.1.tgz#2c8a832757a0d8104dc6bd5d961db2c70d1dbdcb" + integrity sha512-N/RGKwGAAidBupZ436RpuweRQHEFGU+mvAqBo8PRMAjJEmHoPDttV8RObaMLrJHWLqvX+XUMinHUnD0hFRQISw== "@vcarl/remark-headings@^0.1.0": version "0.1.0" @@ -4068,14 +5153,14 @@ abab@^2.0.6: abort-controller@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" - integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== + integrity sha1-6vVNU7YrrkE46AnKIlyEOabvs5I= dependencies: event-target-shim "^5.0.0" abstract-logging@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/abstract-logging/-/abstract-logging-2.0.1.tgz#6b0c371df212db7129b57d2e7fcf282b8bf1c839" - integrity sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA== + integrity sha1-aww3HfIS23EptX0uf88oK4vxyDk= acorn-class-fields@^0.2.1: version "0.2.1" @@ -4095,16 +5180,21 @@ acorn-globals@^7.0.0: acorn "^8.1.0" acorn-walk "^8.0.2" -acorn-jsx@^5.0.0, acorn-jsx@^5.3.1: +acorn-jsx@^5.0.0: version "5.3.1" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" integrity sha1-/IZh4Rt6wVOcR9v+oucrOvNNJns= -acorn-jsx@^5.0.1: +acorn-jsx@^5.0.1, acorn-jsx@^5.3.2: version "5.3.2" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== +acorn-walk@^8.0.0: + version "8.3.1" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.1.tgz#2f10f5b69329d90ae18c58bf1fa8fccd8b959a43" + integrity sha512-TgUZgYvqZprrl7YldZNoa9OciCAyZR+Ejm9eXzKCmjsF5IKp/wgQ7Z/ZpjpGTIUPwrHQIcYeI8qDh4PsEwxMbw== + acorn-walk@^8.0.2: version "8.2.0" resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" @@ -4115,16 +5205,21 @@ acorn@^6.1.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== -acorn@^7.4.0: - version "7.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" - integrity sha1-/q7SVZc9LndVW4PbwIhRpsY1IPo= - acorn@^8.0.0, acorn@^8.1.0, acorn@^8.8.1: version "8.8.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.1.tgz#0a3f9cbecc4ec3bea6f0a80b66ae8dd2da250b73" integrity sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA== +acorn@^8.0.4, acorn@^8.10.0: + version "8.11.3" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" + integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== + +acorn@^8.9.0: + version "8.10.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5" + integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== + agent-base@6: version "6.0.2" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" @@ -4156,11 +5251,11 @@ ahocorasick@1.0.2: ajv-formats@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" - integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== + integrity sha1-bmaUAGWet0lzu/LjMycYCgmWtSA= dependencies: ajv "^8.0.0" -ajv@^6.10.0, ajv@^6.12.4: +ajv@^6.12.4: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha1-uvWmLoArB9l3A0WG+MO69a3ybfQ= @@ -4173,17 +5268,7 @@ ajv@^6.10.0, ajv@^6.12.4: ajv@^8.0.0, ajv@^8.10.0, ajv@^8.11.0: version "8.12.0" resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" - integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== - dependencies: - fast-deep-equal "^3.1.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.2.2" - -ajv@^8.0.1: - version "8.11.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.11.0.tgz#977e91dd96ca669f54a11e23e378e33b884a565f" - integrity sha1-l36R3ZbKZp9UoR4j43jjO4hKVl8= + integrity sha1-0aBScyPiL1NWLFZ8AJkVd9++GdE= dependencies: fast-deep-equal "^3.1.1" json-schema-traverse "^1.0.0" @@ -4247,7 +5332,7 @@ anymatch@^3.0.3, anymatch@~3.1.2: archy@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" - integrity sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw== + integrity sha1-+cjBN1fMHde8N5rHeyxipcKGjEA= arg@^4.1.0: version "4.1.3" @@ -4288,6 +5373,21 @@ aria-query@^5.0.0: dependencies: deep-equal "^2.0.5" +aria-query@^5.1.3: + version "5.3.0" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.3.0.tgz#650c569e41ad90b51b3d7df5e5eed1c7549c103e" + integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A== + dependencies: + dequal "^2.0.3" + +array-buffer-byte-length@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz#fabe8bc193fea865f317fe7807085ee0dee5aead" + integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A== + dependencies: + call-bind "^1.0.2" + is-array-buffer "^3.0.1" + array-includes@^3.1.4, array-includes@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.5.tgz#2c320010db8d31031fd2a5f6b3bbd4b1aad31bdb" @@ -4315,6 +5415,17 @@ array-union@^2.1.0: resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha1-t5hCCtvrHego2ErNii4j0+/oXo0= +array.prototype.findlastindex@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz#b37598438f97b579166940814e2c0493a4f50207" + integrity sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + get-intrinsic "^1.2.1" + array.prototype.flat@^1.2.3, array.prototype.flat@^1.2.5: version "1.3.0" resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz#0b0c1567bf57b38b56b4c97b8aa72ab45e4adc7b" @@ -4325,14 +5436,14 @@ array.prototype.flat@^1.2.3, array.prototype.flat@^1.2.5: es-abstract "^1.19.2" es-shim-unscopables "^1.0.0" -array.prototype.flatmap@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz#a7e8ed4225f4788a70cd910abcf0791e76a5534f" - integrity sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg== +array.prototype.flat@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#1476217df8cff17d72ee8f3ba06738db5b387d18" + integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" es-shim-unscopables "^1.0.0" array.prototype.flatmap@^1.3.1: @@ -4356,6 +5467,19 @@ array.prototype.tosorted@^1.1.1: es-shim-unscopables "^1.0.0" get-intrinsic "^1.1.3" +arraybuffer.prototype.slice@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz#98bd561953e3e74bb34938e77647179dfe6e9f12" + integrity sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw== + dependencies: + array-buffer-byte-length "^1.0.0" + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + is-array-buffer "^3.0.2" + is-shared-array-buffer "^1.0.2" + arrify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" @@ -4376,6 +5500,13 @@ astring@^1.8.0: resolved "https://registry.yarnpkg.com/astring/-/astring-1.8.3.tgz#1a0ae738c7cc558f8e5ddc8e3120636f5cebcb85" integrity sha512-sRpyiNrx2dEYIMmUXprS8nlpRg2Drs8m9ElX9vVEXaCB4XEAJhKfs7IcX0IwShjuOAjLR6wzIrgoptz1n19i1A== +asynciterator.prototype@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz#8c5df0514936cdd133604dfcc9d3fb93f09b2b62" + integrity sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg== + dependencies: + has-symbols "^1.0.3" + asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -4389,7 +5520,7 @@ at-least-node@^1.0.0: atomic-sleep@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/atomic-sleep/-/atomic-sleep-1.0.0.tgz#eb85b77a601fc932cfe432c5acd364a9e2c9075b" - integrity sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ== + integrity sha1-64W3emAfyTLP5DLFrNNkqeLJB1s= attr-accept@^2.0.0: version "2.2.2" @@ -4411,30 +5542,26 @@ available-typed-arrays@^1.0.5: avvio@^8.2.1: version "8.2.1" resolved "https://registry.yarnpkg.com/avvio/-/avvio-8.2.1.tgz#b5a482729847abb84d5aadce06511c04a0a62f82" - integrity sha512-TAlMYvOuwGyLK3PfBb5WKBXZmXz2fVCgv23d6zZFdle/q3gPjmxBaeuC0pY0Dzs5PWMSgfqqEZkrye19GlDTgw== + integrity sha1-taSCcphHq7hNWq3OBlEcBKCmL4I= dependencies: archy "^1.0.0" debug "^4.0.0" fastq "^1.6.1" -aws-sdk-client-mock@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/aws-sdk-client-mock/-/aws-sdk-client-mock-2.0.1.tgz#c37ec569fa88688d8d88d7a7f028af26d6d2086e" - integrity sha512-Ib/AnI8ZdoIxOBbKSs28TUwJb7FI/AYVYn48PcXx6guk5fBs4GZJJEc+Ci9aImRtVmgO6jHN/6Etz17fr6j3qw== - dependencies: - "@types/sinon" "^10.0.10" - sinon "^14.0.2" - tslib "^2.1.0" - axe-core@^4.4.3: version "4.5.0" resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.5.0.tgz#6efe2ecdba205fcc9d7ddb3d48c2cf630f70eb5e" integrity sha512-4+rr8eQ7+XXS5nZrKcMO/AikHL0hVqy+lHWAnE3xdHl+aguag8SOQ6eEqLexwLNWgXIMfunGuD3ON1/6Kyet0A== +axe-core@^4.6.2: + version "4.8.2" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.8.2.tgz#2f6f3cde40935825cf4465e3c1c9e77b240ff6ae" + integrity sha512-/dlp0fxyM3R8YW7MFzaHWXrf4zzbr0vaYb23VBFCl83R7nWNPg/yaQw2Dc8jzCMmDVLhSdzH8MjrsuIUuvX+6g== + axios@^1.4.0: - version "1.6.1" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.6.1.tgz#76550d644bf0a2d469a01f9244db6753208397d7" - integrity sha512-vfBmhDpKafglh0EldBEbVuoe7DyAavGSLWhuSm5ZSEKQnHhBf0xAAwybbNH1IkrJNGnS/VG4I5yxig1pCEXE4g== + version "1.4.0" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.4.0.tgz#38a7bf1224cd308de271146038b551d725f0be1f" + integrity sha1-OKe/EiTNMI3icRRgOLVR1yXwvh8= dependencies: follow-redirects "^1.15.0" form-data "^4.0.0" @@ -4445,6 +5572,13 @@ axobject-query@^2.2.0: resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== +axobject-query@^3.1.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-3.2.1.tgz#39c378a6e3b06ca679f29138151e45b2b32da62a" + integrity sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg== + dependencies: + dequal "^2.0.3" + babel-jest@^29.3.1: version "29.3.1" resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.3.1.tgz#05c83e0d128cd48c453eea851482a38782249f44" @@ -4488,22 +5622,6 @@ babel-plugin-macros@^3.1.0: cosmiconfig "^7.0.0" resolve "^1.19.0" -"babel-plugin-styled-components@>= 1.12.0": - version "2.0.7" - resolved "https://registry.yarnpkg.com/babel-plugin-styled-components/-/babel-plugin-styled-components-2.0.7.tgz#c81ef34b713f9da2b7d3f5550df0d1e19e798086" - integrity sha512-i7YhvPgVqRKfoQ66toiZ06jPNA3p6ierpfUuEWxNF+fV27Uv5gxBkf8KZLHUCc1nFA9j6+80pYoIpqCeyW3/bA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.16.0" - "@babel/helper-module-imports" "^7.16.0" - babel-plugin-syntax-jsx "^6.18.0" - lodash "^4.17.11" - picomatch "^2.3.0" - -babel-plugin-syntax-jsx@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" - integrity sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw== - babel-preset-current-node-syntax@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" @@ -4530,11 +5648,6 @@ babel-preset-jest@^29.2.0: babel-plugin-jest-hoist "^29.2.0" babel-preset-current-node-syntax "^1.0.0" -bail@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/bail/-/bail-1.0.5.tgz#b6fa133404a392cbc1f8c4bf63f5953351e7a776" - integrity sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ== - bail@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/bail/-/bail-2.0.2.tgz#d26f5cd8fe5d6f832a31517b9f7c356040ba6d5d" @@ -4565,7 +5678,7 @@ binary-extensions@^2.0.0: bl@^4.0.3, bl@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" - integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== + integrity sha1-RRU1JkGCvsL7vIOmKrmM8R2fezo= dependencies: buffer "^5.5.0" inherits "^2.0.4" @@ -4574,7 +5687,7 @@ bl@^4.0.3, bl@^4.1.0: bowser@^2.11.0: version "2.11.0" resolved "https://registry.yarnpkg.com/bowser/-/bowser-2.11.0.tgz#5ca3c35757a7aa5771500c70a73a9f91ef420a8f" - integrity sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA== + integrity sha1-XKPDV1enqldxUAxwpzqfke9CCo8= brace-expansion@^1.1.7: version "1.1.11" @@ -4587,7 +5700,7 @@ brace-expansion@^1.1.7: brace-expansion@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" - integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + integrity sha1-HtxFng8MVISG7Pn8mfIiE2S5oK4= dependencies: balanced-match "^1.0.0" @@ -4626,6 +5739,16 @@ browserslist@^4.21.3: node-releases "^2.0.6" update-browserslist-db "^1.0.9" +browserslist@^4.22.2: + version "4.22.2" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.2.tgz#704c4943072bd81ea18997f3bd2180e89c77874b" + integrity sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A== + dependencies: + caniuse-lite "^1.0.30001565" + electron-to-chromium "^1.4.601" + node-releases "^2.0.14" + update-browserslist-db "^1.0.13" + bser@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" @@ -4633,18 +5756,6 @@ bser@2.1.1: dependencies: node-int64 "^0.4.0" -buble@0.19.6: - version "0.19.6" - resolved "https://registry.yarnpkg.com/buble/-/buble-0.19.6.tgz#915909b6bd5b11ee03b1c885ec914a8b974d34d3" - integrity sha512-9kViM6nJA1Q548Jrd06x0geh+BG2ru2+RMDkIHHgJY/8AcyCs34lTHwra9BX7YdPrZXd5aarkpr/SY8bmPgPdg== - dependencies: - chalk "^2.4.1" - magic-string "^0.25.1" - minimist "^1.2.0" - os-homedir "^1.0.1" - regexpu-core "^4.2.0" - vlq "^1.0.0" - buffer-from@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" @@ -4661,7 +5772,7 @@ buffer@^5.5.0: buffer@^6.0.3: version "6.0.3" resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" - integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== + integrity sha1-Ks5XhFnMj74qcKqo9S7mO2p0xsY= dependencies: base64-js "^1.3.1" ieee754 "^1.2.1" @@ -4673,6 +5784,11 @@ busboy@1.6.0: dependencies: streamsearch "^1.1.0" +cac@^6.7.14: + version "6.7.14" + resolved "https://registry.yarnpkg.com/cac/-/cac-6.7.14.tgz#804e1e6f506ee363cb0e3ccbb09cad5dd9870959" + integrity sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ== + cacheable-lookup@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz#3476a8215d046e5a3202a9209dd13fec1f933a27" @@ -4699,6 +5815,15 @@ call-bind@^1.0.0, call-bind@^1.0.2: function-bind "^1.1.1" get-intrinsic "^1.0.2" +call-bind@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513" + integrity sha1-b6K3hFzg6km/TYue9kcnosLi5RM= + dependencies: + function-bind "^1.1.2" + get-intrinsic "^1.2.1" + set-function-length "^1.1.1" + callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" @@ -4741,20 +5866,20 @@ camelcase@^6.2.0, camelcase@^6.3.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== -camelize@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.1.tgz#89b7e16884056331a35d6b5ad064332c91daa6c3" - integrity sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ== - caniuse-lite@^1.0.30001332, caniuse-lite@^1.0.30001400: version "1.0.30001436" resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001436.tgz" integrity sha512-ZmWkKsnC2ifEPoWUvSAIGyOYwT+keAaaWPHiQ9DfMqS1t6tfuyFYoWR78TeZtznkEQ64+vGXH9cZrElwR2Mrxg== -caniuse-lite@^1.0.30001406: - version "1.0.30001434" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001434.tgz#ec1ec1cfb0a93a34a0600d37903853030520a4e5" - integrity sha512-aOBHrLmTQw//WFa2rcF1If9fa3ypkC1wzqqiKHgfdrXTWcU8C4gKVZT77eQAPWN1APys3+uQ0Df07rKauXGEYA== +caniuse-lite@^1.0.30001565: + version "1.0.30001576" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001576.tgz#893be772cf8ee6056d6c1e2d07df365b9ec0a5c4" + integrity sha512-ff5BdakGe2P3SQsMsiqmt1Lc8221NR1VzHj5jXN5vBny9A6fpze94HiVV/n7XRosOlsShJcvMv5mdnpjOGCEgg== + +caniuse-lite@^1.0.30001579: + version "1.0.30001617" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001617.tgz#809bc25f3f5027ceb33142a7d6c40759d7a901eb" + integrity sha512-mLyjzNI9I+Pix8zwcrpxEbGlfqOkF9kM3ptzmKNw5tizSyYwMe+nGLTqMK9cO+0E+Bh6TsBxNAaHWEM8xwSsmA== capital-case@^1.0.4: version "1.0.4" @@ -4900,7 +6025,7 @@ chokidar@^3.4.2, chokidar@^3.5.3: chownr@^1.1.1: version "1.1.4" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + integrity sha1-b8nXtC0ypYNZYzdmbn0ICE2izGs= ci-info@^3.1.0, ci-info@^3.2.0: version "3.5.0" @@ -4922,6 +6047,11 @@ classnames@^2.2.5, classnames@^2.3.1, classnames@^2.3.2: resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.2.tgz#351d813bf0137fcc6a76a16b88208d2560a0d924" integrity sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw== +classnames@^2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.5.1.tgz#ba774c614be0f016da105c858e7159eae8e7687b" + integrity sha1-undMYUvg8BbaEFyFjnFZ6ujnaHs= + clean-stack@^2.0.0: version "2.2.0" resolved "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" @@ -4967,7 +6097,7 @@ cli-width@^3.0.0: resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== -client-only@0.0.1: +client-only@0.0.1, client-only@^0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/client-only/-/client-only-0.0.1.tgz#38bba5d403c41ab150bff64a95c85013cf73bca1" integrity sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA== @@ -5012,13 +6142,18 @@ clone@^1.0.2: clsx@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/clsx/-/clsx-2.0.0.tgz#12658f3fd98fafe62075595a5c30e43d18f3d00b" - integrity sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q== + integrity sha1-EmWPP9mPr+YgdVlaXDDkPRjz0As= co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= +collapse-white-space@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-2.1.0.tgz#640257174f9f42c740b40f3b55ee752924feefca" + integrity sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw== + collect-v8-coverage@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" @@ -5070,21 +6205,11 @@ comma-separated-tokens@^2.0.0: resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz#4e89c9458acb61bc8fef19f4529973b2392839ee" integrity sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg== -commander@7, commander@^9.3.0, commander@^9.4.0, commander@^9.4.1: +commander@7, commander@^7.2.0, commander@^9.3.0, commander@^9.4.0, commander@^9.4.1: version "9.4.1" resolved "https://registry.yarnpkg.com/commander/-/commander-9.4.1.tgz#d1dd8f2ce6faf93147295c0df13c7c21141cfbdd" integrity sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw== -component-props@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/component-props/-/component-props-1.1.1.tgz#f9b7df9b9927b6e6d97c9bd272aa867670f34944" - integrity sha512-69pIRJs9fCCHRqCz3390YF2LV1Lu6iEMZ5zuVqqUn+G20V9BNXlMs0cWawWeW9g4Ynmg29JmkG6R7/lUJoGd1Q== - -component-xor@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/component-xor/-/component-xor-0.0.4.tgz#c55d83ccc1b94cd5089a4e93fa7891c7263e59aa" - integrity sha512-ZIt6sla8gfo+AFVRZoZOertcnD5LJaY2T9CKE2j13NJxQt/mUafD69Bl7/Y4AnpI2LGjiXH7cOfJDx/n2G9edA== - compute-scroll-into-view@^3.0.0: version "3.0.3" resolved "https://registry.yarnpkg.com/compute-scroll-into-view/-/compute-scroll-into-view-3.0.3.tgz#c418900a5c56e2b04b885b54995df164535962b1" @@ -5123,6 +6248,13 @@ constant-case@^3.0.4: tslib "^2.0.3" upper-case "^2.0.2" +content-disposition@^0.5.3: + version "0.5.4" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + integrity sha1-i4K076yCUSoCuwsdzsnSxejrW/4= + dependencies: + safe-buffer "5.2.1" + convert-source-map@^1.5.0: version "1.9.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" @@ -5155,6 +6287,11 @@ cookie@^0.5.0, cookie@~0.5.0: resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" integrity sha1-0fXXGt7GVYxY84mYfDZqpH6ZT4s= +cookie@~0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.6.0.tgz#2798b04b071b0ecbff0dbb62a505a8efa4e19051" + integrity sha1-J5iwSwcbDsv/DbtipQWo76ThkFE= + copy-to-clipboard@^3.3.1: version "3.3.3" resolved "https://registry.yarnpkg.com/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz#55ac43a1db8ae639a4bd99511c148cdd1b83a1b0" @@ -5168,14 +6305,9 @@ core-js-pure@^3.25.1: integrity sha512-LiN6fylpVBVwT8twhhluD9TzXmZQQsr2I2eIKtWNbZI1XMfBT7CV18itaN6RA7EtQd/SDdRx/wzvAShX2HvhQA== core-js-pure@^3.30.2: - version "3.31.0" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.31.0.tgz#052fd9e82fbaaf86457f5db1fadcd06f15966ff2" - integrity sha512-/AnE9Y4OsJZicCzIe97JP5XoPKQJfTuEG43aEVLFJGOJpyqELod+pE6LEl63DfG1Mp8wX97LDaDpy1GmLEUxlg== - -core-js@^3.14.0: - version "3.26.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.26.1.tgz#7a9816dabd9ee846c1c0fe0e8fcad68f3709134e" - integrity sha512-21491RRQVzUn0GGM9Z1Jrpr6PNPxPi+Za8OM9q4tksTSnlbXXGKK1nXNg/QvwFYettXvSX6zWKCtHHfjN4puyA== + version "3.31.1" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.31.1.tgz#73d154958881873bc19381df80bddb20c8d0cdb5" + integrity sha1-c9FUlYiBhzvBk4HfgL3bIMjQzbU= cors@^2.8.5: version "2.8.5" @@ -5249,25 +6381,16 @@ crypt@0.0.2: resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b" integrity sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs= -css-color-keywords@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/css-color-keywords/-/css-color-keywords-1.0.0.tgz#fea2616dc676b2962686b3af8dbdbe180b244e05" - integrity sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg== - -css-to-react-native@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/css-to-react-native/-/css-to-react-native-3.0.0.tgz#62dbe678072a824a689bcfee011fc96e02a7d756" - integrity sha512-Ro1yETZA813eoyUp2GDBhG2j+YggidUmzO1/v9eYBKR2EHVEniE2MI/NqpTQ954BMpTPZFsGNPm46qFB9dpaPQ== - dependencies: - camelize "^1.0.0" - css-color-keywords "^1.0.0" - postcss-value-parser "^4.0.2" - css-what@^5.0.1: version "5.1.0" resolved "https://registry.yarnpkg.com/css-what/-/css-what-5.1.0.tgz#3f7b707aadf633baf62c2ceb8579b545bb40f7fe" integrity sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw== +css-what@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" + integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== + css.escape@1.5.1, css.escape@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb" @@ -5303,7 +6426,7 @@ csstype@^3.0.2, csstype@^3.0.7: csstype@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" - integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== + integrity sha1-HUv51XLxHBQDHwQ24cELwfVx9Qs= csv-generate@^3.4.3: version "3.4.3" @@ -5601,7 +6724,7 @@ date-fns@^2.16.1: resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.28.0.tgz#9570d656f5fc13143e50c975a3b6bbeb46cd08b2" integrity sha1-lXDWVvX8ExQ+UMl1o7a760bNCLI= -debug@4, debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.3, debug@^4.3.4: +debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha1-Exn2V5NX8jONMzfSzdSRS7XcyGU= @@ -5695,7 +6818,7 @@ deep-is@^0.1.3, deep-is@~0.1.3: resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" integrity sha1-pvLc5hL63S7x9Rm3NVHxfoUZmDE= -deep-object-diff@^1.1.0: +deep-object-diff@^1.1.0, deep-object-diff@^1.1.9: version "1.1.9" resolved "https://registry.yarnpkg.com/deep-object-diff/-/deep-object-diff-1.1.9.tgz#6df7ef035ad6a0caa44479c536ed7b02570f4595" integrity sha512-Rn+RuwkmkDwCi2/oXOFS9Gsr5lJZu/yTGpK7wAaAIE75CC+LCGEZHpY6VQJa/RoJcrmaA/docWJZvYohlNkWPA== @@ -5713,7 +6836,7 @@ deepmerge@^4.2.2: deepmerge@^4.3.1, deepmerge@~4.3.0: version "4.3.1" resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" - integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== + integrity sha1-RLXyFHzTsA1LVhN2hZZvJv0l3Uo= defaults@^1.0.3: version "1.0.4" @@ -5727,6 +6850,24 @@ defer-to-connect@^2.0.1: resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== +define-data-property@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.0.tgz#0db13540704e1d8d479a0656cf781267531b9451" + integrity sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g== + dependencies: + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + +define-data-property@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3" + integrity sha1-w1980KsJiDSA0SrFyyE3FVh4ALM= + dependencies: + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + define-properties@^1.1.3, define-properties@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1" @@ -5735,6 +6876,15 @@ define-properties@^1.1.3, define-properties@^1.1.4: has-property-descriptors "^1.0.0" object-keys "^1.1.1" +define-properties@^1.2.0, define-properties@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" + integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== + dependencies: + define-data-property "^1.0.1" + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + del-cli@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/del-cli/-/del-cli-4.0.1.tgz#2303ccaa45708ee8c6211568344cf87336abf30a" @@ -5769,11 +6919,21 @@ delayed-stream@~1.0.0: resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== +depd@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + dequal@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.2.tgz#85ca22025e3a87e65ef75a7a437b35284a7e319d" integrity sha1-hcoiAl46h+Ze91p6Q3s1KEp+MZ0= +dequal@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" + integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== + detect-indent@^6.0.0: version "6.1.0" resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.1.0.tgz#592485ebbbf6b3b1ab2be175c8393d04ca0d57e6" @@ -5782,13 +6942,20 @@ detect-indent@^6.0.0: detect-libc@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.1.tgz#e1897aa88fa6ad197862937fbc0441ef352ee0cd" - integrity sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w== + integrity sha1-4Yl6qI+mrRl4YpN/vARB7zUu4M0= detect-newline@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" integrity sha1-V29d/GOuGhkv8ZLYrTr2MImRtlE= +devlop@^1.0.0, devlop@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/devlop/-/devlop-1.1.0.tgz#4db7c2ca4dc6e0e834c30be70c94bbc976dc7018" + integrity sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA== + dependencies: + dequal "^2.0.0" + diff-sequences@^29.0.0: version "29.0.0" resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.0.0.tgz#bae49972ef3933556bcb0800b72e8579d19d9e4f" @@ -5804,11 +6971,6 @@ diff@^4.0.1: resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" integrity sha1-YPOuy4nV+uUgwRqhnvwruYKq3n0= -diff@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-5.1.0.tgz#bc52d298c5ea8df9194800224445ed43ffc87e40" - integrity sha1-vFLSmMXqjfkZSAAiREXtQ//IfkA= - dir-glob@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" @@ -5843,14 +7005,6 @@ dom-helpers@^5.0.1: "@babel/runtime" "^7.8.7" csstype "^3.0.2" -dom-iterator@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/dom-iterator/-/dom-iterator-1.0.0.tgz#9c09899846ec41c2d257adc4d6015e4759ef05ad" - integrity sha512-7dsMOQI07EMU98gQM8NSB3GsAiIeBYIPKpnxR3c9xOvdvBjChAcOM0iJ222I3p5xyiZO9e5oggkNaCusuTdYig== - dependencies: - component-props "1.1.1" - component-xor "0.0.4" - domexception@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/domexception/-/domexception-4.0.0.tgz#4ad1be56ccadc86fc76d033353999a8037d03673" @@ -5866,7 +7020,12 @@ dompurify@2.4.1: dompurify@=3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-3.0.3.tgz#4b115d15a091ddc96f232bcef668550a2f6f1430" - integrity sha512-axQ9zieHLnAnHh0sfAamKYiqXMJAVwu+LM/alQ7WDagoWessyWvMSFyW65CqF3owufNu8HBcE4cM2Vflu7YWcQ== + integrity sha1-SxFdFaCR3clvIyvO9mhVCi9vFDA= + +dompurify@=3.0.6: + version "3.0.6" + resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-3.0.6.tgz#925ebd576d54a9531b5d76f0a5bef32548351dae" + integrity sha1-kl69V21UqVMbXXbwpb7zJUg1Ha4= dot-case@^3.0.4: version "3.0.4" @@ -5900,6 +7059,11 @@ drange@^1.0.2: resolved "https://registry.yarnpkg.com/drange/-/drange-1.1.1.tgz#b2aecec2aab82fcef11dbbd7b9e32b83f8f6c0b8" integrity sha512-pYxfDYpued//QpnLIm4Avk7rsNtAtQkUES2cwAYSvD/wd2pKD71gN2Ebj3e7klzXwjocvE8c5vx/1fxwpqmSxA== +duplexer@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" + integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== + eastasianwidth@^0.2.0: version "0.2.0" resolved "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" @@ -5915,11 +7079,21 @@ electron-to-chromium@^1.4.251: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.277.tgz#6dc3d9724a0a19b7ab155bf8e37967357a081dc5" integrity sha512-Ej4VyUfGdVY5D2J5WHAVNqrEFBKgeNcX7p/bBQU4x/VKwvnyEvGd62NEkIK3lykLEe9Cg4MCcoWAa+u97o0u/A== +electron-to-chromium@^1.4.601: + version "1.4.628" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.628.tgz#97cefa4b2356d981875f19639885e4fc50ce6e82" + integrity sha512-2k7t5PHvLsufpP6Zwk0nof62yLOsCf032wZx7/q0mv8gwlXjhcxI3lz6f0jBr0GrnWKcm3burXzI3t5IrcdUxw== + emittery@^0.13.1: version "0.13.1" resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== +emoji-regex@^10.2.1: + version "10.3.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-10.3.0.tgz#76998b9268409eb3dae3de989254d456e70cfe23" + integrity sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw== + emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" @@ -5933,11 +7107,19 @@ emoji-regex@^9.2.2: end-of-stream@^1.1.0, end-of-stream@^1.4.1: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + integrity sha1-WuZKX0UFe682JuwU2gyl5LJDHrA= dependencies: once "^1.4.0" -enquirer@^2.3.0, enquirer@^2.3.5: +enhanced-resolve@^5.12.0: + version "5.15.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz#1af946c7d93603eb88e9896cee4904dc012e9c35" + integrity sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg== + dependencies: + graceful-fs "^4.2.4" + tapable "^2.2.0" + +enquirer@^2.3.0: version "2.3.6" resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== @@ -6015,6 +7197,51 @@ es-abstract@^1.20.4: string.prototype.trimstart "^1.0.5" unbox-primitive "^1.0.2" +es-abstract@^1.22.1: + version "1.22.2" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.2.tgz#90f7282d91d0ad577f505e423e52d4c1d93c1b8a" + integrity sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA== + dependencies: + array-buffer-byte-length "^1.0.0" + arraybuffer.prototype.slice "^1.0.2" + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + es-set-tostringtag "^2.0.1" + es-to-primitive "^1.2.1" + function.prototype.name "^1.1.6" + get-intrinsic "^1.2.1" + get-symbol-description "^1.0.0" + globalthis "^1.0.3" + gopd "^1.0.1" + has "^1.0.3" + has-property-descriptors "^1.0.0" + has-proto "^1.0.1" + has-symbols "^1.0.3" + internal-slot "^1.0.5" + is-array-buffer "^3.0.2" + is-callable "^1.2.7" + is-negative-zero "^2.0.2" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + is-string "^1.0.7" + is-typed-array "^1.1.12" + is-weakref "^1.0.2" + object-inspect "^1.12.3" + object-keys "^1.1.1" + object.assign "^4.1.4" + regexp.prototype.flags "^1.5.1" + safe-array-concat "^1.0.1" + safe-regex-test "^1.0.0" + string.prototype.trim "^1.2.8" + string.prototype.trimend "^1.0.7" + string.prototype.trimstart "^1.0.7" + typed-array-buffer "^1.0.0" + typed-array-byte-length "^1.0.0" + typed-array-byte-offset "^1.0.0" + typed-array-length "^1.0.4" + unbox-primitive "^1.0.2" + which-typed-array "^1.1.11" + es-get-iterator@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.2.tgz#9234c54aba713486d7ebde0220864af5e2b283f7" @@ -6029,6 +7256,35 @@ es-get-iterator@^1.1.2: is-string "^1.0.5" isarray "^2.0.5" +es-iterator-helpers@^1.0.12: + version "1.0.15" + resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz#bd81d275ac766431d19305923707c3efd9f1ae40" + integrity sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g== + dependencies: + asynciterator.prototype "^1.0.0" + call-bind "^1.0.2" + define-properties "^1.2.1" + es-abstract "^1.22.1" + es-set-tostringtag "^2.0.1" + function-bind "^1.1.1" + get-intrinsic "^1.2.1" + globalthis "^1.0.3" + has-property-descriptors "^1.0.0" + has-proto "^1.0.1" + has-symbols "^1.0.3" + internal-slot "^1.0.5" + iterator.prototype "^1.1.2" + safe-array-concat "^1.0.1" + +es-set-tostringtag@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8" + integrity sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg== + dependencies: + get-intrinsic "^1.1.3" + has "^1.0.3" + has-tostringtag "^1.0.0" + es-shim-unscopables@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" @@ -6045,150 +7301,114 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" -esbuild-android-64@0.14.35: - version "0.14.35" - resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.14.35.tgz#b72b194d264afeb79217b69f228ef856e7914206" - integrity sha512-R11Eu5NDc5YpbmpXSczxnwrqIsaslE08I+gf/QUVxiuPid5DLQHRWKnkPiSXUgQGPZVjn4aASsAdq8L4uhcyXQ== - -esbuild-android-arm64@0.14.35: - version "0.14.35" - resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.35.tgz#b05b7055baef71e7e790c46daf7783c4cc2cef6a" - integrity sha512-fOjTdzEvZer2+5xNWP2bUmpWccuHQBm/aPoTqoiLiS3VErvxOpbY2808UUEHHxRJucRxMUxHi+apKUpdj8NBjA== - -esbuild-darwin-64@0.14.35: - version "0.14.35" - resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.35.tgz#b648713752f794afa8af80fe74f4620cf9ba2e48" - integrity sha512-cN7ejc3Q0+5hFYXSLKd7GfnrY3hEjx/QxYUiU5f8KEJpH1CJsQEl69ALS5WYYrPrlgKHGKusRVKOkK1x20fe6g== - -esbuild-darwin-arm64@0.14.35: - version "0.14.35" - resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.35.tgz#964c8ac93a65441fe17049bf09983b39a163571e" - integrity sha512-x4AK8UY14p2AYQNXQ5hd0HNnmcmBjd6bpFkmPmtrm8Khh/HT96JfVa06bYFute25aUOTHgWv5kU/k+JrqDTO2A== - -esbuild-freebsd-64@0.14.35: - version "0.14.35" - resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.35.tgz#6b9941dd0e1594d7e19af14b9b5104f699f4999a" - integrity sha512-S83TQ+LgeQt9n9sc7LVELBlpRzaSWGaMvPHtE/91AxEKBuqx47RhuII60LVUzwfOMXHbgroOuSMqA1D2C+vuxQ== - -esbuild-freebsd-arm64@0.14.35: - version "0.14.35" - resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.35.tgz#da1cd9c11274b3f7f4820cafeb6370d88a08fd16" - integrity sha512-D7NDa9ZquQkgz6nwH/HJ1E9wvcb4EEWw7L+uY7jGG4N7Z2Y/wWxQ5dH207gp0TsRCXuE9cYN5HfnHwgav7zAdw== - -esbuild-linux-32@0.14.35: - version "0.14.35" - resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.14.35.tgz#1c5a12d94a190e229dd0a0a73d6fed7b9676c08c" - integrity sha512-0/bt6wQzZmBYv+NY9r7OHxPzs5H4ktz0UK/x7iUs5pAEnj+NkdR/uCzhYVFgNRIO/b22O5P0Vs9LIcj0Z5Uc9A== - -esbuild-linux-64@0.14.35: - version "0.14.35" - resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.14.35.tgz#90d0192e2455bc64ce3f62359acdfc1ee34ea188" - integrity sha512-50FLXlOdEfyc9NFR9lavX3W75zJNi5FTEU25EZY87MQlHlUqmoSfd/0BaO2xefcZK9XV7lTPZ+b8Wj/jFRMB2A== - -esbuild-linux-arm64@0.14.35: - version "0.14.35" - resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.35.tgz#69920874ffe7a4dcf6382d217cb15fe798c321aa" - integrity sha512-Kknr+jl0dNVTyuUTczfaXlsmuGKPBZsNNDuUnLMEDi6Y6bi8ccC4QE4nwUDtkGyB1elr6BQYvb78wYhtfPVLew== - -esbuild-linux-arm@0.14.35: - version "0.14.35" - resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.35.tgz#a637e65f0a618bd2a092a831c6320880d90c03af" - integrity sha512-VIH+bxbk7NM0ZSAeFHOdFWsdVIw2RnrZEG340yFlf7PI9DLUkn0m5+Q8mgZiIZW29VBtpCQ7aiieFo+ZykhoUA== - -esbuild-linux-mips64le@0.14.35: - version "0.14.35" - resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.35.tgz#144941551c20138d536946650f761561dfe3db91" - integrity sha512-urTrLRUAbH3e91vu3/20Sc+qCvokgB4gepHk41AkS/nnM1PBSdRl8SKP3TkRXaJjb4LRGu6I2JAxLOmQWGzo/g== - -esbuild-linux-ppc64le@0.14.35: - version "0.14.35" - resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.35.tgz#6a0c90494d482576cc7b86733c2f4a5044e384ed" - integrity sha512-B98j5OMZQHTw/MnjOQgxYDt+sJfLmvHSI6GhCcf55l11voyyR66SYTBFiz4RvEB1F8V6TQTpHwFhBWo/p5Fq8w== - -esbuild-linux-riscv64@0.14.35: - version "0.14.35" - resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.35.tgz#56564eb9c4f3b210ff1146ef50315f688b62d88f" - integrity sha512-SP41XnWjMOK0WcaXKzfcGr0jA5vMoXu36Oe/SeHrdRrffuHr5/5IboLqCKCQeGAjoGRPSgSLTKB7T8ENXQpgCg== - -esbuild-linux-s390x@0.14.35: - version "0.14.35" - resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.35.tgz#ef0060e29be1460260733728b4e1be04d72aaff0" - integrity sha512-H0K7+0i0crGrXul8q0RlOdatputTj299JGSvyhXXSMNCTqNd5hd8JOONS2Fbbgrv2Hu9bwkP57g8X94V8GeyMA== - -esbuild-netbsd-64@0.14.35: - version "0.14.35" - resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.35.tgz#164c8b80ac35a5234d0b16f0257ff17b9a39cd6e" - integrity sha512-Z+DdBPbSWlOgFdXDhpyqDBTy5NKtTjSFwXfjs95BROJYXFu+ciF85bT10Olg3/EywvDDdpfSeGh+ExeOQ3fugA== - -esbuild-node-externals@^1.0.2: - version "1.5.0" - resolved "https://registry.yarnpkg.com/esbuild-node-externals/-/esbuild-node-externals-1.5.0.tgz#56674e3d102efeb704e931574b1866cf1f79c7b8" - integrity sha512-9394Ne2t2Z243BWeNBRkXEYVMOVbQuzp7XSkASZTOQs0GSXDuno5aH5OmzEXc6GMuln5zJjpkZpgwUPW0uRKgw== - dependencies: - find-up "5.0.0" - tslib "2.3.1" - -esbuild-openbsd-64@0.14.35: - version "0.14.35" - resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.35.tgz#aff91d9fd21155bedc530225156737c89bf27821" - integrity sha512-uNWRf9p69irg4X2yZ5M5GrPi7+F54+DsmYKBXGTIImtyanSAy0nEH6ejmHD2/uypPrlKFf+U746bMwZFIxy5zw== - -esbuild-sunos-64@0.14.35: - version "0.14.35" - resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.35.tgz#07c3ee0dcdc9c9dba11b48ed25ebef439f9fc635" - integrity sha512-WwAS084DuK2AHe+9z0DGbLbv3Cf9H4H7YsBhS7sBIIZ9iY2r0Oikrw11p1VSPDXjgtB/6AYIckJDCRAFEX07rQ== - -esbuild-windows-32@0.14.35: - version "0.14.35" - resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.14.35.tgz#494e548ede75cbfdf3e316333a9138386bf55f70" - integrity sha512-XQgY0pLopKMuRvNsMlc4RuN8wKku4w/LGGhonYEOxibVx/aNMl6vS0P0xbZoUpej4EP8Gras0JihAxigvPqaiA== - -esbuild-windows-64@0.14.35: - version "0.14.35" - resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.14.35.tgz#902ac455e5b22dd4ababb0ad1ece8683628557d2" - integrity sha512-7PaFQb5QDNWQGNmbXBNHewuXq5iDtgTjT3ILif3oGeMd9IVD2hvQ6Twc3s3NDqj5NJFZL1ZK+l9WZ8BZidv7Vw== - -esbuild-windows-arm64@0.14.35: - version "0.14.35" - resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.35.tgz#cbe4c64fe3d387b1f60dc103a568c2af97c26bd9" - integrity sha512-TxVKDkjlRxoCJQpCYS7FbHA249WdCfWKhLhNYk6PtT0CQmD7Ogp51MG7Plx57/jtxE9/aZVOcAf3igGKyGijHw== - -esbuild@0.14.35: - version "0.14.35" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.14.35.tgz#6061df12cab96c9ce66203ea0dc9196f1e71ddc8" - integrity sha512-0aeHPwXVVUUo9qOWnu/zILmTexFYE+RJ3o4owjbEUIJuBhLUgL4wBuS94++4+t7sykSABsNyyMZEAZ2r+1qZ4A== +esbuild-node-externals@^1.12.0: + version "1.12.0" + resolved "https://registry.yarnpkg.com/esbuild-node-externals/-/esbuild-node-externals-1.12.0.tgz#9ae364f332f7ca59cd5f7d6b888946ce56a5e496" + integrity sha512-0rQM4N9QZwnLetzkUCOHj7Dj+YkD2IlHJIO/+3bb/AOAyDPG4D4tSTdli4QjrXRfPIffS5zAUrhxSbeyqmXhAg== + dependencies: + find-up "^5.0.0" + tslib "^2.4.1" + +esbuild@0.17.6: + version "0.17.6" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.17.6.tgz#bbccd4433629deb6e0a83860b3b61da120ba4e01" + integrity sha512-TKFRp9TxrJDdRWfSsSERKEovm6v30iHnrjlcGhLBOtReE28Yp1VSBRfO3GTaOFMoxsNerx4TjrhzSuma9ha83Q== + optionalDependencies: + "@esbuild/android-arm" "0.17.6" + "@esbuild/android-arm64" "0.17.6" + "@esbuild/android-x64" "0.17.6" + "@esbuild/darwin-arm64" "0.17.6" + "@esbuild/darwin-x64" "0.17.6" + "@esbuild/freebsd-arm64" "0.17.6" + "@esbuild/freebsd-x64" "0.17.6" + "@esbuild/linux-arm" "0.17.6" + "@esbuild/linux-arm64" "0.17.6" + "@esbuild/linux-ia32" "0.17.6" + "@esbuild/linux-loong64" "0.17.6" + "@esbuild/linux-mips64el" "0.17.6" + "@esbuild/linux-ppc64" "0.17.6" + "@esbuild/linux-riscv64" "0.17.6" + "@esbuild/linux-s390x" "0.17.6" + "@esbuild/linux-x64" "0.17.6" + "@esbuild/netbsd-x64" "0.17.6" + "@esbuild/openbsd-x64" "0.17.6" + "@esbuild/sunos-x64" "0.17.6" + "@esbuild/win32-arm64" "0.17.6" + "@esbuild/win32-ia32" "0.17.6" + "@esbuild/win32-x64" "0.17.6" + +esbuild@0.19.11, esbuild@^0.19.11: + version "0.19.11" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.19.11.tgz#4a02dca031e768b5556606e1b468fe72e3325d96" + integrity sha512-HJ96Hev2hX/6i5cDVwcqiJBBtuo9+FeIJOtZ9W1kA5M6AMJRHUZlpYZ1/SbEwtO0ioNAW8rUooVpC/WehY2SfA== optionalDependencies: - esbuild-android-64 "0.14.35" - esbuild-android-arm64 "0.14.35" - esbuild-darwin-64 "0.14.35" - esbuild-darwin-arm64 "0.14.35" - esbuild-freebsd-64 "0.14.35" - esbuild-freebsd-arm64 "0.14.35" - esbuild-linux-32 "0.14.35" - esbuild-linux-64 "0.14.35" - esbuild-linux-arm "0.14.35" - esbuild-linux-arm64 "0.14.35" - esbuild-linux-mips64le "0.14.35" - esbuild-linux-ppc64le "0.14.35" - esbuild-linux-riscv64 "0.14.35" - esbuild-linux-s390x "0.14.35" - esbuild-netbsd-64 "0.14.35" - esbuild-openbsd-64 "0.14.35" - esbuild-sunos-64 "0.14.35" - esbuild-windows-32 "0.14.35" - esbuild-windows-64 "0.14.35" - esbuild-windows-arm64 "0.14.35" + "@esbuild/aix-ppc64" "0.19.11" + "@esbuild/android-arm" "0.19.11" + "@esbuild/android-arm64" "0.19.11" + "@esbuild/android-x64" "0.19.11" + "@esbuild/darwin-arm64" "0.19.11" + "@esbuild/darwin-x64" "0.19.11" + "@esbuild/freebsd-arm64" "0.19.11" + "@esbuild/freebsd-x64" "0.19.11" + "@esbuild/linux-arm" "0.19.11" + "@esbuild/linux-arm64" "0.19.11" + "@esbuild/linux-ia32" "0.19.11" + "@esbuild/linux-loong64" "0.19.11" + "@esbuild/linux-mips64el" "0.19.11" + "@esbuild/linux-ppc64" "0.19.11" + "@esbuild/linux-riscv64" "0.19.11" + "@esbuild/linux-s390x" "0.19.11" + "@esbuild/linux-x64" "0.19.11" + "@esbuild/netbsd-x64" "0.19.11" + "@esbuild/openbsd-x64" "0.19.11" + "@esbuild/sunos-x64" "0.19.11" + "@esbuild/win32-arm64" "0.19.11" + "@esbuild/win32-ia32" "0.19.11" + "@esbuild/win32-x64" "0.19.11" esbuild@^0.11.16: version "0.11.23" resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.11.23.tgz#c42534f632e165120671d64db67883634333b4b8" integrity sha512-iaiZZ9vUF5wJV8ob1tl+5aJTrwDczlvGP0JoMmnpC2B0ppiMCu8n8gmy5ZTGl5bcG081XBVn+U+jP+mPFm5T5Q== +esbuild@^0.18.10: + version "0.18.20" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.18.20.tgz#4709f5a34801b43b799ab7d6d82f7284a9b7a7a6" + integrity sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA== + optionalDependencies: + "@esbuild/android-arm" "0.18.20" + "@esbuild/android-arm64" "0.18.20" + "@esbuild/android-x64" "0.18.20" + "@esbuild/darwin-arm64" "0.18.20" + "@esbuild/darwin-x64" "0.18.20" + "@esbuild/freebsd-arm64" "0.18.20" + "@esbuild/freebsd-x64" "0.18.20" + "@esbuild/linux-arm" "0.18.20" + "@esbuild/linux-arm64" "0.18.20" + "@esbuild/linux-ia32" "0.18.20" + "@esbuild/linux-loong64" "0.18.20" + "@esbuild/linux-mips64el" "0.18.20" + "@esbuild/linux-ppc64" "0.18.20" + "@esbuild/linux-riscv64" "0.18.20" + "@esbuild/linux-s390x" "0.18.20" + "@esbuild/linux-x64" "0.18.20" + "@esbuild/netbsd-x64" "0.18.20" + "@esbuild/openbsd-x64" "0.18.20" + "@esbuild/sunos-x64" "0.18.20" + "@esbuild/win32-arm64" "0.18.20" + "@esbuild/win32-ia32" "0.18.20" + "@esbuild/win32-x64" "0.18.20" + escalade@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" integrity sha1-2M/ccACWXFoBdLSoLqpcBVJ0LkA= +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== + escape-string-regexp@5.0.0, escape-string-regexp@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz#4683126b500b61762f2dbebace1806e8be31b1c8" @@ -6247,20 +7467,20 @@ eslint-config-airbnb@^19.0.4: object.assign "^4.1.2" object.entries "^1.1.5" -eslint-config-next@^12.3.1: - version "12.3.4" - resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-12.3.4.tgz#3d4d9e74b919b879c4cc79c61bdc388fb2b964ee" - integrity sha512-WuT3gvgi7Bwz00AOmKGhOeqnyA5P29Cdyr0iVjLyfDbk+FANQKcOjFUTZIdyYfe5Tq1x4TGcmoe4CwctGvFjHQ== +eslint-config-next@^14.0.0: + version "14.0.0" + resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-14.0.0.tgz#c896867c8f08dab65205fb3b4bcc5d9ab8646d08" + integrity sha512-jtXeE+/pGQ3h9n11QyyuPN50kO13GO5XvjU5ZRq6W+XTpOMjyobWmK2s7aowy0FtzA49krJzYzEU9s1RMwoJ6g== dependencies: - "@next/eslint-plugin-next" "12.3.4" - "@rushstack/eslint-patch" "^1.1.3" - "@typescript-eslint/parser" "^5.21.0" + "@next/eslint-plugin-next" "14.0.0" + "@rushstack/eslint-patch" "^1.3.3" + "@typescript-eslint/parser" "^5.4.2 || ^6.0.0" eslint-import-resolver-node "^0.3.6" - eslint-import-resolver-typescript "^2.7.1" - eslint-plugin-import "^2.26.0" - eslint-plugin-jsx-a11y "^6.5.1" - eslint-plugin-react "^7.31.7" - eslint-plugin-react-hooks "^4.5.0" + eslint-import-resolver-typescript "^3.5.2" + eslint-plugin-import "^2.28.1" + eslint-plugin-jsx-a11y "^6.7.1" + eslint-plugin-react "^7.33.2" + eslint-plugin-react-hooks "^4.5.0 || 5.0.0-canary-7118f5dd7-20230705" eslint-config-prettier@^8.5.0: version "8.5.0" @@ -6275,16 +7495,27 @@ eslint-import-resolver-node@^0.3.6: debug "^3.2.7" resolve "^1.20.0" -eslint-import-resolver-typescript@^2.7.1: - version "2.7.1" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-2.7.1.tgz#a90a4a1c80da8d632df25994c4c5fdcdd02b8751" - integrity sha512-00UbgGwV8bSgUv34igBDbTOtKhqoRMy9bFjNehT40bXg6585PNIct8HhXZ0SybqB9rWtXj9crcku8ndDn/gIqQ== +eslint-import-resolver-node@^0.3.7: + version "0.3.9" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac" + integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== + dependencies: + debug "^3.2.7" + is-core-module "^2.13.0" + resolve "^1.22.4" + +eslint-import-resolver-typescript@^3.5.2: + version "3.6.1" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.1.tgz#7b983680edd3f1c5bce1a5829ae0bc2d57fe9efa" + integrity sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg== dependencies: debug "^4.3.4" - glob "^7.2.0" + enhanced-resolve "^5.12.0" + eslint-module-utils "^2.7.4" + fast-glob "^3.3.1" + get-tsconfig "^4.5.0" + is-core-module "^2.11.0" is-glob "^4.0.3" - resolve "^1.22.0" - tsconfig-paths "^3.14.1" eslint-module-utils@^2.7.3: version "2.7.4" @@ -6293,6 +7524,13 @@ eslint-module-utils@^2.7.3: dependencies: debug "^3.2.7" +eslint-module-utils@^2.7.4, eslint-module-utils@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz#e439fee65fc33f6bba630ff621efc38ec0375c49" + integrity sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw== + dependencies: + debug "^3.2.7" + eslint-plugin-eslint-comments@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-3.2.0.tgz#9e1cd7b4413526abb313933071d7aba05ca12ffa" @@ -6320,6 +7558,29 @@ eslint-plugin-import@^2.26.0: resolve "^1.22.0" tsconfig-paths "^3.14.1" +eslint-plugin-import@^2.28.1: + version "2.28.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.28.1.tgz#63b8b5b3c409bfc75ebaf8fb206b07ab435482c4" + integrity sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A== + dependencies: + array-includes "^3.1.6" + array.prototype.findlastindex "^1.2.2" + array.prototype.flat "^1.3.1" + array.prototype.flatmap "^1.3.1" + debug "^3.2.7" + doctrine "^2.1.0" + eslint-import-resolver-node "^0.3.7" + eslint-module-utils "^2.8.0" + has "^1.0.3" + is-core-module "^2.13.0" + is-glob "^4.0.3" + minimatch "^3.1.2" + object.fromentries "^2.0.6" + object.groupby "^1.0.0" + object.values "^1.1.6" + semver "^6.3.1" + tsconfig-paths "^3.14.2" + eslint-plugin-jsx-a11y@^6.5.1: version "6.6.1" resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.6.1.tgz#93736fc91b83fdc38cc8d115deedfc3091aef1ff" @@ -6339,6 +7600,28 @@ eslint-plugin-jsx-a11y@^6.5.1: minimatch "^3.1.2" semver "^6.3.0" +eslint-plugin-jsx-a11y@^6.7.1: + version "6.7.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.7.1.tgz#fca5e02d115f48c9a597a6894d5bcec2f7a76976" + integrity sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA== + dependencies: + "@babel/runtime" "^7.20.7" + aria-query "^5.1.3" + array-includes "^3.1.6" + array.prototype.flatmap "^1.3.1" + ast-types-flow "^0.0.7" + axe-core "^4.6.2" + axobject-query "^3.1.1" + damerau-levenshtein "^1.0.8" + emoji-regex "^9.2.2" + has "^1.0.3" + jsx-ast-utils "^3.3.3" + language-tags "=1.0.5" + minimatch "^3.1.2" + object.entries "^1.1.6" + object.fromentries "^2.0.6" + semver "^6.3.0" + eslint-plugin-prettier@^4.2.1: version "4.2.1" resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz#651cbb88b1dab98bfd42f017a12fa6b2d993f94b" @@ -6351,40 +7634,21 @@ eslint-plugin-promise@^6.0.1: resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz#269a3e2772f62875661220631bd4dafcb4083816" integrity sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig== -eslint-plugin-react-hooks@^4.3.0, eslint-plugin-react-hooks@^4.5.0: +eslint-plugin-react-hooks@^4.3.0, "eslint-plugin-react-hooks@^4.5.0 || 5.0.0-canary-7118f5dd7-20230705": version "4.6.0" resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3" integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== -eslint-plugin-react@7.31.8: - version "7.31.8" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.31.8.tgz#3a4f80c10be1bcbc8197be9e8b641b2a3ef219bf" - integrity sha512-5lBTZmgQmARLLSYiwI71tiGVTLUuqXantZM6vlSY39OaDSV0M7+32K5DnLkmFrwTe+Ksz0ffuLUC91RUviVZfw== - dependencies: - array-includes "^3.1.5" - array.prototype.flatmap "^1.3.0" - doctrine "^2.1.0" - estraverse "^5.3.0" - jsx-ast-utils "^2.4.1 || ^3.0.0" - minimatch "^3.1.2" - object.entries "^1.1.5" - object.fromentries "^2.0.5" - object.hasown "^1.1.1" - object.values "^1.1.5" - prop-types "^15.8.1" - resolve "^2.0.0-next.3" - semver "^6.3.0" - string.prototype.matchall "^4.0.7" - -eslint-plugin-react@^7.31.7: - version "7.32.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.32.1.tgz#88cdeb4065da8ca0b64e1274404f53a0f9890200" - integrity sha512-vOjdgyd0ZHBXNsmvU+785xY8Bfe57EFbTYYk8XrROzWpr9QBvpjITvAXt9xqcE6+8cjR/g1+mfumPToxsl1www== +eslint-plugin-react@^7.33.2: + version "7.33.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz#69ee09443ffc583927eafe86ffebb470ee737608" + integrity sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw== dependencies: array-includes "^3.1.6" array.prototype.flatmap "^1.3.1" array.prototype.tosorted "^1.1.1" doctrine "^2.1.0" + es-iterator-helpers "^1.0.12" estraverse "^5.3.0" jsx-ast-utils "^2.4.1 || ^3.0.0" minimatch "^3.1.2" @@ -6394,110 +7658,88 @@ eslint-plugin-react@^7.31.7: object.values "^1.1.6" prop-types "^15.8.1" resolve "^2.0.0-next.4" - semver "^6.3.0" + semver "^6.3.1" string.prototype.matchall "^4.0.8" -eslint-scope@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha1-54blmmbLkrP2wfsNUIqrF0hI9Iw= +eslint-scope@^7.2.2: + version "7.2.2" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" + integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== dependencies: esrecurse "^4.3.0" - estraverse "^4.1.1" - -eslint-utils@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" - integrity sha1-0t5eA0JOcH3BDHQGjd7a5wh0Gyc= - dependencies: - eslint-visitor-keys "^1.1.0" - -eslint-utils@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" - integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== - dependencies: - eslint-visitor-keys "^2.0.0" - -eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" - integrity sha1-MOvR73wv3/AcOk8VEESvJfqwUj4= - -eslint-visitor-keys@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" - integrity sha1-9lMoJZMFknOSyTjtROsKXJsr0wM= + estraverse "^5.2.0" eslint-visitor-keys@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== -eslint@^7.23.0: - version "7.32.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d" - integrity sha1-xtMooUvj+wjI0dIeEsAv23oqgS0= - dependencies: - "@babel/code-frame" "7.12.11" - "@eslint/eslintrc" "^0.4.3" - "@humanwhocodes/config-array" "^0.5.0" - ajv "^6.10.0" +eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== + +eslint@^8.51.0: + version "8.51.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.51.0.tgz#4a82dae60d209ac89a5cff1604fea978ba4950f3" + integrity sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.6.1" + "@eslint/eslintrc" "^2.1.2" + "@eslint/js" "8.51.0" + "@humanwhocodes/config-array" "^0.11.11" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" + ajv "^6.12.4" chalk "^4.0.0" cross-spawn "^7.0.2" - debug "^4.0.1" + debug "^4.3.2" 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" + eslint-scope "^7.2.2" + eslint-visitor-keys "^3.4.3" + espree "^9.6.1" + esquery "^1.4.2" 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" + find-up "^5.0.0" + glob-parent "^6.0.2" + globals "^13.19.0" + graphemer "^1.4.0" + ignore "^5.2.0" imurmurhash "^0.1.4" is-glob "^4.0.0" - js-yaml "^3.13.1" + is-path-inside "^3.0.3" + js-yaml "^4.1.0" json-stable-stringify-without-jsonify "^1.0.1" levn "^0.4.1" lodash.merge "^4.6.2" - minimatch "^3.0.4" + minimatch "^3.1.2" 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" + optionator "^0.9.3" + strip-ansi "^6.0.1" text-table "^0.2.0" - v8-compile-cache "^2.0.3" -espree@^7.3.0, espree@^7.3.1: - version "7.3.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" - integrity sha1-8t8zC3Usb1UBn4vYm3ZgA5wbu7Y= +espree@^9.6.0, espree@^9.6.1: + version "9.6.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" + integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== dependencies: - acorn "^7.4.0" - acorn-jsx "^5.3.1" - eslint-visitor-keys "^1.3.0" + acorn "^8.9.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.4.1" esprima@^4.0.0, esprima@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha1-E7BM2z5sXRnfkatph6hpVhmwqnE= -esquery@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" - integrity sha1-IUj/w4uC6McFff7UhCWz5h8PJKU= +esquery@^1.4.2: + version "1.5.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" + integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== dependencies: estraverse "^5.1.0" @@ -6508,53 +7750,49 @@ esrecurse@^4.3.0: dependencies: estraverse "^5.2.0" -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha1-OYrT88WiSUi+dyXoPRGn3ijNvR0= - estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" integrity sha1-LupSkHAvJquP5TcDcP+GyWXSESM= -estree-util-attach-comments@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/estree-util-attach-comments/-/estree-util-attach-comments-2.1.0.tgz#47d69900588bcbc6bf58c3798803ec5f1f3008de" - integrity sha512-rJz6I4L0GaXYtHpoMScgDIwM0/Vwbu5shbMeER596rB2D1EWF6+Gj0e0UKzJPZrpoOc87+Q2kgVFHfjAymIqmw== +estree-util-attach-comments@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/estree-util-attach-comments/-/estree-util-attach-comments-3.0.0.tgz#344bde6a64c8a31d15231e5ee9e297566a691c2d" + integrity sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw== dependencies: "@types/estree" "^1.0.0" -estree-util-build-jsx@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/estree-util-build-jsx/-/estree-util-build-jsx-2.2.0.tgz#d4307bbeee28c14eb4d63b75c9aad28fa61d84f5" - integrity sha512-apsfRxF9uLrqosApvHVtYZjISPvTJ+lBiIydpC+9wE6cF6ssbhnjyQLqaIjgzGxvC2Hbmec1M7g91PoBayYoQQ== +estree-util-build-jsx@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/estree-util-build-jsx/-/estree-util-build-jsx-3.0.1.tgz#b6d0bced1dcc4f06f25cf0ceda2b2dcaf98168f1" + integrity sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ== dependencies: "@types/estree-jsx" "^1.0.0" - estree-util-is-identifier-name "^2.0.0" + devlop "^1.0.0" + estree-util-is-identifier-name "^3.0.0" estree-walker "^3.0.0" -estree-util-is-identifier-name@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/estree-util-is-identifier-name/-/estree-util-is-identifier-name-2.0.1.tgz#cf07867f42705892718d9d89eb2d85eaa8f0fcb5" - integrity sha512-rxZj1GkQhY4x1j/CSnybK9cGuMFQYFPLq0iNyopqf14aOVLFtMv7Esika+ObJWPWiOHuMOAHz3YkWoLYYRnzWQ== +estree-util-is-identifier-name@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz#0b5ef4c4ff13508b34dcd01ecfa945f61fce5dbd" + integrity sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg== -estree-util-to-js@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/estree-util-to-js/-/estree-util-to-js-1.1.0.tgz#3bd9bb86354063537cc3d81259be2f0d4c3af39f" - integrity sha512-490lbfCcpLk+ofK6HCgqDfYs4KAfq6QVvDw3+Bm1YoKRgiOjKiKYGAVQE1uwh7zVxBgWhqp4FDtp5SqunpUk1A== +estree-util-to-js@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/estree-util-to-js/-/estree-util-to-js-2.0.0.tgz#10a6fb924814e6abb62becf0d2bc4dea51d04f17" + integrity sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg== dependencies: "@types/estree-jsx" "^1.0.0" astring "^1.8.0" source-map "^0.7.0" -estree-util-visit@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/estree-util-visit/-/estree-util-visit-1.2.0.tgz#aa0311a9c2f2aa56e9ae5e8b9d87eac14e4ec8f8" - integrity sha512-wdsoqhWueuJKsh5hqLw3j8lwFqNStm92VcwtAOAny8g/KS/l5Y8RISjR4k5W6skCj3Nirag/WUCMS0Nfy3sgsg== +estree-util-visit@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/estree-util-visit/-/estree-util-visit-2.0.0.tgz#13a9a9f40ff50ed0c022f831ddf4b58d05446feb" + integrity sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww== dependencies: "@types/estree-jsx" "^1.0.0" - "@types/unist" "^2.0.0" + "@types/unist" "^3.0.0" estree-walker@^3.0.0: version "3.0.1" @@ -6573,6 +7811,14 @@ eval@0.1.6: dependencies: require-like ">= 0.1.1" +eval@0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/eval/-/eval-0.1.8.tgz#2b903473b8cc1d1989b83a1e7923f883eb357f85" + integrity sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw== + dependencies: + "@types/node" "*" + require-like ">= 0.1.1" + event-target-polyfill@^0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/event-target-polyfill/-/event-target-polyfill-0.0.3.tgz#ed373295f3b257774b5d75afb2599331d9f3406c" @@ -6581,7 +7827,7 @@ event-target-polyfill@^0.0.3: event-target-shim@^5.0.0: version "5.0.1" resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" - integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== + integrity sha1-XU0+vflYPWOlMzzi3rdICrKwV4k= events@^3.3.0: version "3.3.0" @@ -6626,7 +7872,7 @@ exit@^0.1.2: expand-template@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c" - integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== + integrity sha1-bhSz/O4POmNA7LV9LokYaSBSpHw= expect@^29.0.0: version "29.1.2" @@ -6686,12 +7932,12 @@ external-editor@^3.0.3, external-editor@^3.1.0: fast-content-type-parse@^1.0.0, fast-content-type-parse@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/fast-content-type-parse/-/fast-content-type-parse-1.1.0.tgz#4087162bf5af3294d4726ff29b334f72e3a1092c" - integrity sha512-fBHHqSTFLVnR61C+gltJuE5GkVQMV0S2nqUO8TJ+5Z3qAKG8vAx4FKai1s5jq/inV1+sREynIWSuQ6HgoSXpDQ== + integrity sha1-QIcWK/WvMpTUcm/ymzNPcuOhCSw= fast-decode-uri-component@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/fast-decode-uri-component/-/fast-decode-uri-component-1.0.1.tgz#46f8b6c22b30ff7a81357d4f59abfae938202543" - integrity sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg== + integrity sha1-Rvi2wisw/3qBNX1PWav66TggJUM= fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" @@ -6725,6 +7971,17 @@ fast-glob@^3.2.11, fast-glob@^3.2.12, fast-glob@^3.2.7: merge2 "^1.3.0" micromatch "^4.0.4" +fast-glob@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4" + integrity sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + fast-json-patch@^3.0.0-1: version "3.1.1" resolved "https://registry.yarnpkg.com/fast-json-patch/-/fast-json-patch-3.1.1.tgz#85064ea1b1ebf97a3f7ad01e23f9337e72c66947" @@ -6738,7 +7995,7 @@ fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: fast-json-stringify@^5.7.0: version "5.8.0" resolved "https://registry.yarnpkg.com/fast-json-stringify/-/fast-json-stringify-5.8.0.tgz#b229ed01ac5f92f3b82001a916c31324652f46d7" - integrity sha512-VVwK8CFMSALIvt14U8AvrSzQAwN/0vaVRiFFUVlpnXSnDGrSkOAO5MtzyN8oQNjLd5AqTW5OZRgyjoNuAuR3jQ== + integrity sha1-sintAaxfkvO4IAGpFsMTJGUvRtc= dependencies: "@fastify/deepmerge" "^1.0.0" ajv "^8.10.0" @@ -6755,36 +8012,36 @@ fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: fast-querystring@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/fast-querystring/-/fast-querystring-1.1.2.tgz#a6d24937b4fc6f791b4ee31dcb6f53aeafb89f53" - integrity sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg== + integrity sha1-ptJJN7T8b3kbTuMdy29Trq+4n1M= dependencies: fast-decode-uri-component "^1.0.1" fast-redact@^3.1.1: version "3.3.0" resolved "https://registry.yarnpkg.com/fast-redact/-/fast-redact-3.3.0.tgz#7c83ce3a7be4898241a46560d51de10f653f7634" - integrity sha512-6T5V1QK1u4oF+ATxs1lWUmlEk6P2T9HqJG3e2DnHOdVgZy2rFJBoEnrIedcTXlkAHU/zKC+7KETJ+KGGKwxgMQ== + integrity sha1-fIPOOnvkiYJBpGVg1R3hD2U/djQ= fast-uri@^2.0.0, fast-uri@^2.1.0: version "2.2.0" resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-2.2.0.tgz#519a0f849bef714aad10e9753d69d8f758f7445a" - integrity sha512-cIusKBIt/R/oI6z/1nyfe2FvGKVTohVRfvkOhvx0nCEW+xf5NoCXjAHcWp93uOUBchzYcsvPlrapAdX1uW+YGg== + integrity sha1-UZoPhJvvcUqtEOl1PWnY91j3RFo= fast-xml-parser@4.2.5: version "4.2.5" resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.2.5.tgz#a6747a09296a6cb34f2ae634019bf1738f3b421f" - integrity sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g== + integrity sha1-pnR6CSlqbLNPKuY0AZvxc487Qh8= dependencies: strnum "^1.0.5" fastify-plugin@^4.0.0, fastify-plugin@^4.5.1: version "4.5.1" resolved "https://registry.yarnpkg.com/fastify-plugin/-/fastify-plugin-4.5.1.tgz#44dc6a3cc2cce0988bc09e13f160120bbd91dbee" - integrity sha512-stRHYGeuqpEZTL1Ef0Ovr2ltazUT9g844X5z/zEBFLG8RYlpDiOCIG+ATvYEp+/zmc7sN29mcIMp8gvYplYPIQ== + integrity sha1-RNxqPMLM4JiLwJ4T8WASC72R2+4= fastify@^4.23.2: version "4.23.2" resolved "https://registry.yarnpkg.com/fastify/-/fastify-4.23.2.tgz#7072f04b544540d2523afb4a54d4095d187f5444" - integrity sha512-WFSxsHES115svC7NrerNqZwwM0UOxbC/P6toT9LRHgAAFvG7o2AN5W+H4ihCtOGuYXjZf4z+2jXC89rVEoPWOA== + integrity sha1-cHLwS1RFQNJSOvtKVNQJXRh/VEQ= dependencies: "@fastify/ajv-compiler" "^3.5.0" "@fastify/error" "^3.2.0" @@ -6813,7 +8070,7 @@ fastq@^1.6.0: fastq@^1.6.1: version "1.15.0" resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" - integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== + integrity sha1-0E0HxqKmj+RZn+qNLhA6k3+uazo= dependencies: reusify "^1.0.4" @@ -6855,24 +8112,16 @@ fill-range@^7.0.1: find-my-way@^7.6.0: version "7.6.2" resolved "https://registry.yarnpkg.com/find-my-way/-/find-my-way-7.6.2.tgz#4dd40200d3536aeef5c7342b10028e04cf79146c" - integrity sha512-0OjHn1b1nCX3eVbm9ByeEHiscPYiHLfhei1wOUU9qffQkk98wE0Lo8VrVYfSGMgnSnDh86DxedduAnBf4nwUEw== + integrity sha1-TdQCANNTau71xzQrEAKOBM95FGw= dependencies: fast-deep-equal "^3.1.3" fast-querystring "^1.0.0" safe-regex2 "^2.0.0" -find-root@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" - integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== - -find-up@5.0.0, find-up@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== - dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" +find-root@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" + integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" @@ -6882,6 +8131,14 @@ find-up@^4.0.0, find-up@^4.1.0: locate-path "^5.0.0" path-exists "^4.0.0" +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + find-yarn-workspace-root2@1.2.16: version "1.2.16" resolved "https://registry.yarnpkg.com/find-yarn-workspace-root2/-/find-yarn-workspace-root2-1.2.16.tgz#60287009dd2f324f59646bdb4b7610a6b301c2a9" @@ -6911,9 +8168,9 @@ flatted@^3.1.0: integrity sha1-dshYT0/IQ9tkcCpr0Eq3qL1mbaM= follow-redirects@^1.15.0: - version "1.15.4" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.4.tgz#cdc7d308bf6493126b17ea2191ea0ccf3e535adf" - integrity sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw== + version "1.15.2" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" + integrity sha1-tGCGQUS6Y/JoEJbydMTlcCbaLBM= for-each@^0.3.3: version "0.3.3" @@ -6971,7 +8228,7 @@ forwarded@0.2.0: fs-constants@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" - integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== + integrity sha1-a+Dem+mYzhavivwkSXue6bfM2a0= fs-extra@^10.1.0: version "10.1.0" @@ -7030,6 +8287,11 @@ function-bind@^1.1.1: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0= +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha1-LALYZNl/PqbIgwxGTL0Rq26rehw= + function.prototype.name@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" @@ -7040,12 +8302,17 @@ function.prototype.name@^1.1.5: es-abstract "^1.19.0" functions-have-names "^1.2.2" -functional-red-black-tree@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" - integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= +function.prototype.name@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" + integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + functions-have-names "^1.2.3" -functions-have-names@^1.2.2: +functions-have-names@^1.2.2, functions-have-names@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" integrity sha1-BAT+TuK6L2B/Dg7DyAuumUEzuDQ= @@ -7083,6 +8350,26 @@ get-intrinsic@^1.1.3: has "^1.0.3" has-symbols "^1.0.3" +get-intrinsic@^1.2.0, get-intrinsic@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.1.tgz#d295644fed4505fc9cde952c37ee12b477a83d82" + integrity sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-proto "^1.0.1" + has-symbols "^1.0.3" + +get-intrinsic@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.2.tgz#281b7622971123e1ef4b3c90fd7539306da93f3b" + integrity sha1-KBt2IpcRI+HvSzyQ/XU5MG2pPzs= + dependencies: + function-bind "^1.1.2" + has-proto "^1.0.1" + has-symbols "^1.0.3" + hasown "^2.0.0" + get-package-type@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" @@ -7101,10 +8388,17 @@ get-symbol-description@^1.0.0: call-bind "^1.0.2" get-intrinsic "^1.1.1" +get-tsconfig@^4.5.0: + version "4.7.2" + resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.7.2.tgz#0dcd6fb330391d46332f4c6c1bf89a6514c2ddce" + integrity sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A== + dependencies: + resolve-pkg-maps "^1.0.0" + github-from-package@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" - integrity sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw== + integrity sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4= github-slugger@^1.4.0: version "1.4.0" @@ -7123,6 +8417,13 @@ glob-parent@^5.1.2, glob-parent@~5.1.2: dependencies: is-glob "^4.0.1" +glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + glob@7.1.7: version "7.1.7" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" @@ -7135,7 +8436,7 @@ glob@7.1.7: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.0, glob@^7.1.3, glob@^7.1.4, glob@^7.2.0: +glob@^7.0.0, glob@^7.1.3, glob@^7.1.4: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" integrity sha1-uN8PuAK7+o6JvR2Ti04WV47UTys= @@ -7147,6 +8448,17 @@ glob@^7.0.0, glob@^7.1.3, glob@^7.1.4, glob@^7.2.0: once "^1.3.0" path-is-absolute "^1.0.0" +glob@^8.0.1: + version "8.1.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" + integrity sha1-04j2Vlk+9wjuPjRkD9+5mp/Rwz4= + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^5.0.1" + once "^1.3.0" + global-dirs@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" @@ -7159,13 +8471,20 @@ globals@^11.1.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha1-q4eVM4hooLq9hSV1gBjCp+uVxC4= -globals@^13.6.0, globals@^13.9.0: - version "13.15.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.15.0.tgz#38113218c907d2f7e98658af246cef8b77e90bac" - integrity sha1-OBEyGMkH0vfphlivJGzvi3fpC6w= +globals@^13.19.0: + version "13.23.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.23.0.tgz#ef31673c926a0976e1f61dab4dca57e0c0a8af02" + integrity sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA== dependencies: type-fest "^0.20.2" +globalthis@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" + integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== + dependencies: + define-properties "^1.1.3" + globby@^11.0.0, globby@^11.0.1, globby@^11.1.0: version "11.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" @@ -7229,15 +8548,25 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.5, graceful-fs@^4.1.6, resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" integrity sha1-FH06AG2kyjzhRyjHrvwofDZ9emw= +graceful-fs@^4.2.11: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + grapheme-splitter@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== +graphemer@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" + integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== + "graphql@^15.0.0 || ^16.0.0": - version "16.8.1" - resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.8.1.tgz#1930a965bef1170603702acdb68aedd3f3cf6f07" - integrity sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw== + version "16.6.0" + resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.6.0.tgz#c2dcffa4649db149f6282af726c8c83f1c7c5fdb" + integrity sha512-KPIBPDlW7NxrbT/eh4qPXz5FiFdL5UbaA0XUNz2Rp3Z3hqBSkbj0GVjwFDztsWVauZUWsbKHgMg++sk8UX0bkw== gray-matter@^4.0.3: version "4.0.3" @@ -7249,6 +8578,13 @@ gray-matter@^4.0.3: section-matter "^1.0.0" strip-bom-string "^1.0.0" +gzip-size@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" + integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q== + dependencies: + duplexer "^0.1.2" + handlebars@^4.4.3: version "4.7.7" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" @@ -7293,6 +8629,18 @@ has-property-descriptors@^1.0.0: dependencies: get-intrinsic "^1.1.1" +has-property-descriptors@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz#52ba30b6c5ec87fd89fa574bc1c39125c6f65340" + integrity sha1-UrowtsXsh/2J+ldLwcORJcb2U0A= + dependencies: + get-intrinsic "^1.2.2" + +has-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" + integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== + has-symbols@^1.0.1, has-symbols@^1.0.2, has-symbols@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" @@ -7312,55 +8660,164 @@ has@^1.0.3: dependencies: function-bind "^1.1.1" -hast-util-has-property@^2.0.0: +hasown@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/hast-util-has-property/-/hast-util-has-property-2.0.0.tgz#c15cd6180f3e535540739fcc9787bcffb5708cae" - integrity sha512-4Qf++8o5v14us4Muv3HRj+Er6wTNGA/N9uCaZMty4JWvyFKLdhULrv4KE1b65AthsSO9TXSZnjuxS8ecIyhb0w== + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c" + integrity sha1-9MUT1FSle3x+FlB3jeImsRcAVGw= + dependencies: + function-bind "^1.1.2" -hast-util-heading-rank@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/hast-util-heading-rank/-/hast-util-heading-rank-2.1.0.tgz#c39f34fa8330ebfec03a08b5d5019ed56122029c" - integrity sha512-w+Rw20Q/iWp2Bcnr6uTrYU6/ftZLbHKhvc8nM26VIWpDqDMlku2iXUVTeOlsdoih/UKQhY7PHQ+vZ0Aqq8bxtQ== +hast-util-from-html@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/hast-util-from-html/-/hast-util-from-html-2.0.1.tgz#9cd38ee81bf40b2607368b92a04b0905fa987488" + integrity sha512-RXQBLMl9kjKVNkJTIO6bZyb2n+cUH8LFaSSzo82jiLT6Tfc+Pt7VQCS+/h3YwG4jaNE2TA2sdJisGWR+aJrp0g== dependencies: - "@types/hast" "^2.0.0" + "@types/hast" "^3.0.0" + devlop "^1.1.0" + hast-util-from-parse5 "^8.0.0" + parse5 "^7.0.0" + vfile "^6.0.0" + vfile-message "^4.0.0" + +hast-util-from-parse5@^8.0.0: + version "8.0.1" + resolved "https://registry.yarnpkg.com/hast-util-from-parse5/-/hast-util-from-parse5-8.0.1.tgz#654a5676a41211e14ee80d1b1758c399a0327651" + integrity sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ== + dependencies: + "@types/hast" "^3.0.0" + "@types/unist" "^3.0.0" + devlop "^1.0.0" + hastscript "^8.0.0" + property-information "^6.0.0" + vfile "^6.0.0" + vfile-location "^5.0.0" + web-namespaces "^2.0.0" + +hast-util-heading-rank@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/hast-util-heading-rank/-/hast-util-heading-rank-3.0.0.tgz#2d5c6f2807a7af5c45f74e623498dd6054d2aba8" + integrity sha512-EJKb8oMUXVHcWZTDepnr+WNbfnXKFNf9duMesmr4S8SXTJBJ9M4Yok08pu9vxdJwdlGRhVumk9mEhkEvKGifwA== + dependencies: + "@types/hast" "^3.0.0" hast-util-parse-selector@^2.0.0: version "2.2.5" resolved "https://registry.yarnpkg.com/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz#d57c23f4da16ae3c63b3b6ca4616683313499c3a" integrity sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ== -hast-util-to-estree@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/hast-util-to-estree/-/hast-util-to-estree-2.1.0.tgz#aeac70aad0102ae309570907b3f56a08231d5323" - integrity sha512-Vwch1etMRmm89xGgz+voWXvVHba2iiMdGMKmaMfYt35rbVtFDq8JNwwAIvi8zHMkO6Gvqo9oTMwJTmzVRfXh4g== +hast-util-parse-selector@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz#352879fa86e25616036037dd8931fb5f34cb4a27" + integrity sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A== + dependencies: + "@types/hast" "^3.0.0" + +hast-util-raw@^9.0.0: + version "9.0.2" + resolved "https://registry.yarnpkg.com/hast-util-raw/-/hast-util-raw-9.0.2.tgz#39b4a4886bd9f0a5dd42e86d02c966c2c152884c" + integrity sha512-PldBy71wO9Uq1kyaMch9AHIghtQvIwxBUkv823pKmkTM3oV1JxtsTNYdevMxvUHqcnOAuO65JKU2+0NOxc2ksA== + dependencies: + "@types/hast" "^3.0.0" + "@types/unist" "^3.0.0" + "@ungap/structured-clone" "^1.0.0" + hast-util-from-parse5 "^8.0.0" + hast-util-to-parse5 "^8.0.0" + html-void-elements "^3.0.0" + mdast-util-to-hast "^13.0.0" + parse5 "^7.0.0" + unist-util-position "^5.0.0" + unist-util-visit "^5.0.0" + vfile "^6.0.0" + web-namespaces "^2.0.0" + zwitch "^2.0.0" + +hast-util-to-estree@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/hast-util-to-estree/-/hast-util-to-estree-3.1.0.tgz#f2afe5e869ddf0cf690c75f9fc699f3180b51b19" + integrity sha512-lfX5g6hqVh9kjS/B9E2gSkvHH4SZNiQFiqWS0x9fENzEl+8W12RqdRxX6d/Cwxi30tPQs3bIO+aolQJNp1bIyw== dependencies: "@types/estree" "^1.0.0" "@types/estree-jsx" "^1.0.0" - "@types/hast" "^2.0.0" - "@types/unist" "^2.0.0" + "@types/hast" "^3.0.0" comma-separated-tokens "^2.0.0" - estree-util-attach-comments "^2.0.0" - estree-util-is-identifier-name "^2.0.0" - hast-util-whitespace "^2.0.0" - mdast-util-mdx-expression "^1.0.0" - mdast-util-mdxjs-esm "^1.0.0" + devlop "^1.0.0" + estree-util-attach-comments "^3.0.0" + estree-util-is-identifier-name "^3.0.0" + hast-util-whitespace "^3.0.0" + mdast-util-mdx-expression "^2.0.0" + mdast-util-mdx-jsx "^3.0.0" + mdast-util-mdxjs-esm "^2.0.0" property-information "^6.0.0" space-separated-tokens "^2.0.0" - style-to-object "^0.3.0" - unist-util-position "^4.0.0" + style-to-object "^0.4.0" + unist-util-position "^5.0.0" zwitch "^2.0.0" -hast-util-to-string@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/hast-util-to-string/-/hast-util-to-string-2.0.0.tgz#b008b0a4ea472bf34dd390b7eea1018726ae152a" - integrity sha512-02AQ3vLhuH3FisaMM+i/9sm4OXGSq1UhOOCpTLLQtHdL3tZt7qil69r8M8iDkZYyC0HCFylcYoP+8IO7ddta1A== +hast-util-to-html@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/hast-util-to-html/-/hast-util-to-html-9.0.0.tgz#51c0ae2a3550b9aa988c094c4fc4e327af0dddd1" + integrity sha512-IVGhNgg7vANuUA2XKrT6sOIIPgaYZnmLx3l/CCOAK0PtgfoHrZwX7jCSYyFxHTrGmC6S9q8aQQekjp4JPZF+cw== dependencies: - "@types/hast" "^2.0.0" + "@types/hast" "^3.0.0" + "@types/unist" "^3.0.0" + ccount "^2.0.0" + comma-separated-tokens "^2.0.0" + hast-util-raw "^9.0.0" + hast-util-whitespace "^3.0.0" + html-void-elements "^3.0.0" + mdast-util-to-hast "^13.0.0" + property-information "^6.0.0" + space-separated-tokens "^2.0.0" + stringify-entities "^4.0.0" + zwitch "^2.0.4" -hast-util-whitespace@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/hast-util-whitespace/-/hast-util-whitespace-2.0.0.tgz#4fc1086467cc1ef5ba20673cb6b03cec3a970f1c" - integrity sha512-Pkw+xBHuV6xFeJprJe2BBEoDV+AvQySaz3pPDRUs5PNZEMQjpXJJueqrpcHIXxnWTcAGi/UOCgVShlkY6kLoqg== +hast-util-to-jsx-runtime@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.0.tgz#3ed27caf8dc175080117706bf7269404a0aa4f7c" + integrity sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ== + dependencies: + "@types/estree" "^1.0.0" + "@types/hast" "^3.0.0" + "@types/unist" "^3.0.0" + comma-separated-tokens "^2.0.0" + devlop "^1.0.0" + estree-util-is-identifier-name "^3.0.0" + hast-util-whitespace "^3.0.0" + mdast-util-mdx-expression "^2.0.0" + mdast-util-mdx-jsx "^3.0.0" + mdast-util-mdxjs-esm "^2.0.0" + property-information "^6.0.0" + space-separated-tokens "^2.0.0" + style-to-object "^1.0.0" + unist-util-position "^5.0.0" + vfile-message "^4.0.0" + +hast-util-to-parse5@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/hast-util-to-parse5/-/hast-util-to-parse5-8.0.0.tgz#477cd42d278d4f036bc2ea58586130f6f39ee6ed" + integrity sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw== + dependencies: + "@types/hast" "^3.0.0" + comma-separated-tokens "^2.0.0" + devlop "^1.0.0" + property-information "^6.0.0" + space-separated-tokens "^2.0.0" + web-namespaces "^2.0.0" + zwitch "^2.0.0" + +hast-util-to-string@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/hast-util-to-string/-/hast-util-to-string-3.0.0.tgz#2a131948b4b1b26461a2c8ac876e2c88d02946bd" + integrity sha512-OGkAxX1Ua3cbcW6EJ5pT/tslVb90uViVkcJ4ZZIMW/R33DX/AkcJcRrPebPwJkHYwlDHXz4aIwvAAaAdtrACFA== + dependencies: + "@types/hast" "^3.0.0" + +hast-util-whitespace@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz#7778ed9d3c92dd9e8c5c8f648a49c21fc51cb621" + integrity sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw== + dependencies: + "@types/hast" "^3.0.0" hastscript@^6.0.0: version "6.0.0" @@ -7373,6 +8830,17 @@ hastscript@^6.0.0: property-information "^5.0.0" space-separated-tokens "^1.0.0" +hastscript@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/hastscript/-/hastscript-8.0.0.tgz#4ef795ec8dee867101b9f23cc830d4baf4fd781a" + integrity sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw== + dependencies: + "@types/hast" "^3.0.0" + comma-separated-tokens "^2.0.0" + hast-util-parse-selector "^4.0.0" + property-information "^6.0.0" + space-separated-tokens "^2.0.0" + header-case@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/header-case/-/header-case-2.0.4.tgz#5a42e63b55177349cf405beb8d775acabb92c063" @@ -7391,7 +8859,7 @@ highlight.js@^10.4.1, highlight.js@~10.7.0: resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.7.3.tgz#697272e3991356e40c3cac566a74eef681756531" integrity sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A== -hoist-non-react-statics@^3.0.0, hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.1, hoist-non-react-statics@^3.3.2: +hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.1, hoist-non-react-statics@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== @@ -7422,11 +8890,27 @@ html-escaper@^2.0.0: resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" integrity sha1-39YAJ9o2o238viNiYsAKWCJoFFM= +html-void-elements@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-3.0.0.tgz#fc9dbd84af9e747249034d4d62602def6517f1d7" + integrity sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg== + http-cache-semantics@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== + dependencies: + depd "2.0.0" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" + http-proxy-agent@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" @@ -7498,22 +8982,22 @@ ieee754@^1.1.13, ieee754@^1.2.1: resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== -ignore@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" - integrity sha1-dQ49tYYgh7RzfrrIIH/9HvJ7Jfw= - ignore@^5.0.5, ignore@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" integrity sha1-bTusj6f+DUXZ+b57rC/CeVd+NFo= +ignore@^5.2.4: + version "5.2.4" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" + integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== + immutable@^3.x.x: version "3.8.2" resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.8.2.tgz#c2439951455bb39913daf281376f1530e104adf3" integrity sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg== -import-fresh@^3.0.0, import-fresh@^3.2.1: +import-fresh@^3.2.1: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" integrity sha1-NxYsJfy566oublPVtNiM4X2eDCs= @@ -7552,7 +9036,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4: +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha1-D6LGT5MpF8NDOg3tVTY6rjdBa3w= @@ -7560,13 +9044,18 @@ inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4: ini@^1.3.4, ini@~1.3.0: version "1.3.8" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" - integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + integrity sha1-op2kJbSIBvNHZ6Tvzjlyaa8oQyw= inline-style-parser@0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/inline-style-parser/-/inline-style-parser-0.1.1.tgz#ec8a3b429274e9c0a1f1c4ffa9453a7fef72cea1" integrity sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q== +inline-style-parser@0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/inline-style-parser/-/inline-style-parser-0.2.2.tgz#d498b4e6de0373458fc610ff793f6b14ebf45633" + integrity sha512-EcKzdTHVe8wFVOGEYXiW9WmJXPjqi1T+234YpJr98RiFYKHV3cdy1+3mkTE+KHTHxFFLH51SfaGOoUdW+v7ViQ== + inquirer@^8.2.0, inquirer@^8.2.2: version "8.2.5" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.2.5.tgz#d8654a7542c35a9b9e069d27e2df4858784d54f8" @@ -7597,6 +9086,15 @@ internal-slot@^1.0.3: has "^1.0.3" side-channel "^1.0.4" +internal-slot@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986" + integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ== + dependencies: + get-intrinsic "^1.2.0" + has "^1.0.3" + side-channel "^1.0.4" + "internmap@1 - 2": version "2.0.3" resolved "https://registry.yarnpkg.com/internmap/-/internmap-2.0.3.tgz#6685f23755e43c524e251d29cbc97248e3061009" @@ -7658,11 +9156,27 @@ is-arguments@^1.0.4, is-arguments@^1.1.0, is-arguments@^1.1.1: call-bind "^1.0.2" has-tostringtag "^1.0.0" +is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" + integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.0" + is-typed-array "^1.1.10" + is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= +is-async-function@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-async-function/-/is-async-function-2.0.0.tgz#8e4418efd3e5d3a6ebb0164c05ef5afb69aa9646" + integrity sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA== + dependencies: + has-tostringtag "^1.0.0" + is-bigint@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" @@ -7685,11 +9199,6 @@ is-boolean-object@^1.1.0: call-bind "^1.0.2" has-tostringtag "^1.0.0" -is-buffer@^2.0.0: - version "2.0.5" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" - integrity sha1-68JS5ADSL/jXf6CYiIIaJKZYwZE= - is-buffer@~1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" @@ -7719,6 +9228,13 @@ is-core-module@^2.11.0: dependencies: has "^1.0.3" +is-core-module@^2.13.0: + version "2.13.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.0.tgz#bb52aa6e2cbd49a30c2ba68c42bf3435ba6072db" + integrity sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ== + dependencies: + has "^1.0.3" + is-core-module@^2.5.0, is-core-module@^2.9.0: version "2.11.0" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144" @@ -7765,6 +9281,13 @@ is-extglob@^2.1.1: resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= +is-finalizationregistry@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz#c8749b65f17c133313e661b1289b95ad3dbd62e6" + integrity sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw== + dependencies: + call-bind "^1.0.2" + is-fullwidth-code-point@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" @@ -7780,7 +9303,7 @@ is-generator-fn@^2.0.0: resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" integrity sha1-fRQK3DiarzARqPKipM+m+q3/sRg= -is-generator-function@^1.0.7: +is-generator-function@^1.0.10, is-generator-function@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== @@ -7841,7 +9364,7 @@ is-path-cwd@^2.2.0: resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== -is-path-inside@^3.0.2: +is-path-inside@^3.0.2, is-path-inside@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== @@ -7851,11 +9374,6 @@ is-plain-obj@^1.1.0: resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== -is-plain-obj@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" - integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== - is-plain-obj@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-4.1.0.tgz#d65025edec3657ce032fd7db63c97883eaed71f0" @@ -7947,6 +9465,13 @@ is-typed-array@^1.1.10, is-typed-array@^1.1.3: gopd "^1.0.1" has-tostringtag "^1.0.0" +is-typed-array@^1.1.12, is-typed-array@^1.1.9: + version "1.1.12" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.12.tgz#d0bab5686ef4a76f7a73097b95470ab199c57d4a" + integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg== + dependencies: + which-typed-array "^1.1.11" + is-unicode-supported@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" @@ -7984,11 +9509,6 @@ is-wsl@^2.1.1: dependencies: is-docker "^2.0.0" -isarray@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" - integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== - isarray@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" @@ -8057,6 +9577,17 @@ istanbul-reports@^3.1.3: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" +iterator.prototype@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/iterator.prototype/-/iterator.prototype-1.1.2.tgz#5e29c8924f01916cb9335f1ff80619dcff22b0c0" + integrity sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w== + dependencies: + define-properties "^1.2.1" + get-intrinsic "^1.2.1" + has-symbols "^1.0.3" + reflect.getprototypeof "^1.0.4" + set-function-name "^2.0.1" + javascript-stringify@^2.0.1: version "2.1.0" resolved "https://registry.yarnpkg.com/javascript-stringify/-/javascript-stringify-2.1.0.tgz#27c76539be14d8bd128219a2d731b09337904e79" @@ -8517,7 +10048,7 @@ js-levenshtein@^1.1.6: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha1-GSA/tZmR35jjoocFDUZHzerzJJk= -js-yaml@=4.1.0, js-yaml@^4.0.0, js-yaml@^4.1.0: +js-yaml@=4.1.0, js-yaml@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" integrity sha1-wftl+PUBeQHN0slRhkuhhFihBgI= @@ -8604,7 +10135,17 @@ json-stable-stringify-without-jsonify@^1.0.1: resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= -json5@^1.0.1, json5@^1.0.2, json5@^2.2.1: +json-stable-stringify@^1.0.2: + version "1.1.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.1.1.tgz#52d4361b47d49168bcc4e564189a42e5a7439454" + integrity sha1-UtQ2G0fUkWi8xOVkGJpC5adDlFQ= + dependencies: + call-bind "^1.0.5" + isarray "^2.0.5" + jsonify "^0.0.1" + object-keys "^1.1.1" + +json5@^1.0.1, json5@^1.0.2, json5@^2.2.1, json5@^2.2.3: version "1.0.2" resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== @@ -8632,6 +10173,11 @@ jsonfile@^6.0.1: optionalDependencies: graceful-fs "^4.1.6" +jsonify@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.1.tgz#2aa3111dae3d34a0f151c63f3a45d995d9420978" + integrity sha1-KqMRHa49NKDxUcY/OkXZldlCCXg= + "jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.2: version "3.3.3" resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz#76b3e6e6cece5c69d49a5792c3d01bd1a0cdc7ea" @@ -8640,10 +10186,15 @@ jsonfile@^6.0.1: array-includes "^3.1.5" object.assign "^4.1.3" -just-extend@^4.0.2: - version "4.2.1" - resolved "https://registry.yarnpkg.com/just-extend/-/just-extend-4.2.1.tgz#ef5e589afb61e5d66b24eca749409a8939a8c744" - integrity sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg== +jsx-ast-utils@^3.3.3: + version "3.3.5" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz#4766bd05a8e2a11af222becd19e15575e52a853a" + integrity sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ== + dependencies: + array-includes "^3.1.6" + array.prototype.flat "^1.3.1" + object.assign "^4.1.4" + object.values "^1.1.6" jwt-decode@^3.1.2: version "3.1.2" @@ -8679,7 +10230,7 @@ kleur@^3.0.3: resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" integrity sha1-p5yezIbuHOP6YgbRIWxQHxR/wH4= -kleur@^4.0.3, kleur@^4.1.4: +kleur@^4.1.4: version "4.1.5" resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.5.tgz#95106101795f7050c6c650f350c683febddb1780" integrity sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ== @@ -8689,7 +10240,7 @@ language-subtag-registry@~0.3.2: resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz#2e1500861b2e457eba7e7ae86877cbd08fa1fd1d" integrity sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w== -language-tags@^1.0.5: +language-tags@=1.0.5, language-tags@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.5.tgz#d321dbc4da30ba8bf3024e040fa5c14661f9193a" integrity sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ== @@ -8725,7 +10276,7 @@ lexical@^0.11.1: light-my-request@^5.9.1: version "5.11.0" resolved "https://registry.yarnpkg.com/light-my-request/-/light-my-request-5.11.0.tgz#90e446c303b3a47b59df38406d5f5c2cf224f2d1" - integrity sha512-qkFCeloXCOMpmEdZ/MV91P8AT4fjwFXWaAFz3lUeStM8RcoM1ks4J/F8r1b3r6y/H4u3ACEJ1T+Gv5bopj7oDA== + integrity sha1-kORGwwOzpHtZ3zhAbV9cLPIk8tE= dependencies: cookie "^0.5.0" process-warning "^2.0.0" @@ -8816,7 +10367,7 @@ lodash-es@^4.17.15, lodash-es@^4.17.21: lodash.clonedeep@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" - integrity sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ== + integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= lodash.debounce@^4: version "4.0.8" @@ -8838,12 +10389,7 @@ lodash.startcase@^4.4.0: resolved "https://registry.yarnpkg.com/lodash.startcase/-/lodash.startcase-4.4.0.tgz#9436e34ed26093ed7ffae1936144350915d9add8" integrity sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg== -lodash.truncate@^4.4.2: - version "4.4.2" - resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" - integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= - -lodash@^4.0.1, lodash@^4.15.0, lodash@^4.17.11, lodash@^4.17.15, lodash@^4.17.21: +lodash@^4.0.1, lodash@^4.15.0, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha1-Z5WRxWTDv/quhFTPCz3zcMPWkRw= @@ -8906,6 +10452,13 @@ lru-cache@^4.0.1: pseudomap "^1.0.2" yallist "^2.1.2" +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + lru-cache@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" @@ -8918,7 +10471,7 @@ lz-string@^1.4.4: resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.4.4.tgz#c0d8eaf36059f705796e1e344811cf4c498d3a26" integrity sha512-0ckx7ZHRPqb0oUm8zNr+90mtf9DQB60H1wMCjBtfi62Kl3a7JbHob6gA2bC+xRvZoOL+1hzUK8jeuEIQE8svEQ== -magic-string@^0.25.0, magic-string@^0.25.1, magic-string@^0.25.2: +magic-string@^0.25.2: version "0.25.9" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c" integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ== @@ -8961,10 +10514,10 @@ map-obj@^4.0.0, map-obj@^4.1.0: resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.3.0.tgz#9304f906e93faae70880da102a9f1df0ea8bb05a" integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== -markdown-extensions@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/markdown-extensions/-/markdown-extensions-1.1.1.tgz#fea03b539faeaee9b4ef02a3769b455b189f7fc3" - integrity sha512-WWC0ZuMzCyDHYCasEGs4IPvLyTGftYwh6wIEOULOF0HXcqZlhwRzrK0w2VUlxWA98xnvb/jszw4ZSkJ6ADpM6Q== +markdown-extensions@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/markdown-extensions/-/markdown-extensions-2.0.0.tgz#34bebc83e9938cae16e0e017e4a9814a8330d3c4" + integrity sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q== markdown-table@^3.0.0: version "3.0.3" @@ -8985,275 +10538,215 @@ md5@*: crypt "0.0.2" is-buffer "~1.1.6" -mdast-util-definitions@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz#c5c1a84db799173b4dcf7643cda999e440c24db2" - integrity sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ== - dependencies: - unist-util-visit "^2.0.0" - -mdast-util-definitions@^5.0.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/mdast-util-definitions/-/mdast-util-definitions-5.1.1.tgz#2c1d684b28e53f84938bb06317944bee8efa79db" - integrity sha512-rQ+Gv7mHttxHOBx2dkF4HWTg+EE+UR78ptQWDylzPKaQuVGdG4HIoY3SrS/pCp80nZ04greFvXbVFHT+uf0JVQ== - dependencies: - "@types/mdast" "^3.0.0" - "@types/unist" "^2.0.0" - unist-util-visit "^4.0.0" - -mdast-util-directive@^2.0.0: - version "2.2.4" - resolved "https://registry.npmjs.org/mdast-util-directive/-/mdast-util-directive-2.2.4.tgz#e397ed699ec83938cb4a48dc1cec3ae69cbd7aa3" - integrity sha512-sK3ojFP+jpj1n7Zo5ZKvoxP1MvLyzVG63+gm40Z/qI00avzdPCYxt7RBMgofwAva9gBjbDBWVRB/i+UD+fUCzQ== - dependencies: - "@types/mdast" "^3.0.0" - "@types/unist" "^2.0.0" - mdast-util-from-markdown "^1.3.0" - mdast-util-to-markdown "^1.5.0" +mdast-util-directive@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-directive/-/mdast-util-directive-3.0.0.tgz#3fb1764e705bbdf0afb0d3f889e4404c3e82561f" + integrity sha512-JUpYOqKI4mM3sZcNxmF/ox04XYFFkNwr0CFlrQIkCwbvH0xzMCqkMqAde9wRd80VAhaUrwFwKm2nxretdT1h7Q== + dependencies: + "@types/mdast" "^4.0.0" + "@types/unist" "^3.0.0" + devlop "^1.0.0" + mdast-util-from-markdown "^2.0.0" + mdast-util-to-markdown "^2.0.0" parse-entities "^4.0.0" stringify-entities "^4.0.0" - unist-util-visit-parents "^5.1.3" + unist-util-visit-parents "^6.0.0" -mdast-util-find-and-replace@^2.0.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/mdast-util-find-and-replace/-/mdast-util-find-and-replace-2.2.2.tgz#cc2b774f7f3630da4bd592f61966fecade8b99b1" - integrity sha512-MTtdFRz/eMDHXzeK6W3dO7mXUlF82Gom4y0oOgvHhh/HXZAGvIQDUvQ0SuUx+j2tv44b8xTHOm8K/9OoRFnXKw== +mdast-util-find-and-replace@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.1.tgz#a6fc7b62f0994e973490e45262e4bc07607b04e0" + integrity sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA== dependencies: - "@types/mdast" "^3.0.0" + "@types/mdast" "^4.0.0" escape-string-regexp "^5.0.0" - unist-util-is "^5.0.0" - unist-util-visit-parents "^5.0.0" - -mdast-util-from-markdown@^0.8.0: - version "0.8.5" - resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz#d1ef2ca42bc377ecb0463a987910dae89bd9a28c" - integrity sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ== - dependencies: - "@types/mdast" "^3.0.0" - mdast-util-to-string "^2.0.0" - micromark "~2.11.0" - parse-entities "^2.0.0" - unist-util-stringify-position "^2.0.0" + unist-util-is "^6.0.0" + unist-util-visit-parents "^6.0.0" -mdast-util-from-markdown@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-1.2.0.tgz#84df2924ccc6c995dec1e2368b2b208ad0a76268" - integrity sha1-hN8pJMzGyZXeweI2iysgitCnYmg= - dependencies: - "@types/mdast" "^3.0.0" - "@types/unist" "^2.0.0" - decode-named-character-reference "^1.0.0" - mdast-util-to-string "^3.1.0" - micromark "^3.0.0" - micromark-util-decode-numeric-character-reference "^1.0.0" - micromark-util-decode-string "^1.0.0" - micromark-util-normalize-identifier "^1.0.0" - micromark-util-symbol "^1.0.0" - micromark-util-types "^1.0.0" - unist-util-stringify-position "^3.0.0" - uvu "^0.5.0" - -mdast-util-from-markdown@^1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.0.tgz#0214124154f26154a2b3f9d401155509be45e894" - integrity sha512-HN3W1gRIuN/ZW295c7zi7g9lVBllMgZE40RxCX37wrTPWXCWtpvOZdfnuK+1WNpvZje6XuJeI3Wnb4TJEUem+g== +mdast-util-from-markdown@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.0.tgz#52f14815ec291ed061f2922fd14d6689c810cb88" + integrity sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA== dependencies: - "@types/mdast" "^3.0.0" - "@types/unist" "^2.0.0" + "@types/mdast" "^4.0.0" + "@types/unist" "^3.0.0" decode-named-character-reference "^1.0.0" - mdast-util-to-string "^3.1.0" - micromark "^3.0.0" - micromark-util-decode-numeric-character-reference "^1.0.0" - micromark-util-decode-string "^1.0.0" - micromark-util-normalize-identifier "^1.0.0" - micromark-util-symbol "^1.0.0" - micromark-util-types "^1.0.0" - unist-util-stringify-position "^3.0.0" - uvu "^0.5.0" - -mdast-util-gfm-autolink-literal@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-1.0.3.tgz#67a13abe813d7eba350453a5333ae1bc0ec05c06" - integrity sha512-My8KJ57FYEy2W2LyNom4n3E7hKTuQk/0SES0u16tjA9Z3oFkF4RrC/hPAPgjlSpezsOvI8ObcXcElo92wn5IGA== + devlop "^1.0.0" + mdast-util-to-string "^4.0.0" + micromark "^4.0.0" + micromark-util-decode-numeric-character-reference "^2.0.0" + micromark-util-decode-string "^2.0.0" + micromark-util-normalize-identifier "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + unist-util-stringify-position "^4.0.0" + +mdast-util-gfm-autolink-literal@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.0.tgz#5baf35407421310a08e68c15e5d8821e8898ba2a" + integrity sha512-FyzMsduZZHSc3i0Px3PQcBT4WJY/X/RCtEJKuybiC6sjPqLv7h1yqAkmILZtuxMSsUyaLUWNp71+vQH2zqp5cg== dependencies: - "@types/mdast" "^3.0.0" + "@types/mdast" "^4.0.0" ccount "^2.0.0" - mdast-util-find-and-replace "^2.0.0" - micromark-util-character "^1.0.0" + devlop "^1.0.0" + mdast-util-find-and-replace "^3.0.0" + micromark-util-character "^2.0.0" -mdast-util-gfm-footnote@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-1.0.2.tgz#ce5e49b639c44de68d5bf5399877a14d5020424e" - integrity sha512-56D19KOGbE00uKVj3sgIykpwKL179QsVFwx/DCW0u/0+URsryacI4MAdNJl0dh+u2PSsD9FtxPFbHCzJ78qJFQ== +mdast-util-gfm-footnote@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.0.0.tgz#25a1753c7d16db8bfd53cd84fe50562bd1e6d6a9" + integrity sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ== dependencies: - "@types/mdast" "^3.0.0" - mdast-util-to-markdown "^1.3.0" - micromark-util-normalize-identifier "^1.0.0" + "@types/mdast" "^4.0.0" + devlop "^1.1.0" + mdast-util-from-markdown "^2.0.0" + mdast-util-to-markdown "^2.0.0" + micromark-util-normalize-identifier "^2.0.0" -mdast-util-gfm-strikethrough@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-1.0.3.tgz#5470eb105b483f7746b8805b9b989342085795b7" - integrity sha512-DAPhYzTYrRcXdMjUtUjKvW9z/FNAMTdU0ORyMcbmkwYNbKocDpdk+PX1L1dQgOID/+vVs1uBQ7ElrBQfZ0cuiQ== +mdast-util-gfm-strikethrough@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz#d44ef9e8ed283ac8c1165ab0d0dfd058c2764c16" + integrity sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg== dependencies: - "@types/mdast" "^3.0.0" - mdast-util-to-markdown "^1.3.0" + "@types/mdast" "^4.0.0" + mdast-util-from-markdown "^2.0.0" + mdast-util-to-markdown "^2.0.0" -mdast-util-gfm-table@^1.0.0: - version "1.0.7" - resolved "https://registry.yarnpkg.com/mdast-util-gfm-table/-/mdast-util-gfm-table-1.0.7.tgz#3552153a146379f0f9c4c1101b071d70bbed1a46" - integrity sha512-jjcpmNnQvrmN5Vx7y7lEc2iIOEytYv7rTvu+MeyAsSHTASGCCRA79Igg2uKssgOs1i1po8s3plW0sTu1wkkLGg== +mdast-util-gfm-table@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz#7a435fb6223a72b0862b33afbd712b6dae878d38" + integrity sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg== dependencies: - "@types/mdast" "^3.0.0" + "@types/mdast" "^4.0.0" + devlop "^1.0.0" markdown-table "^3.0.0" - mdast-util-from-markdown "^1.0.0" - mdast-util-to-markdown "^1.3.0" + mdast-util-from-markdown "^2.0.0" + mdast-util-to-markdown "^2.0.0" -mdast-util-gfm-task-list-item@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-1.0.2.tgz#b280fcf3b7be6fd0cc012bbe67a59831eb34097b" - integrity sha512-PFTA1gzfp1B1UaiJVyhJZA1rm0+Tzn690frc/L8vNX1Jop4STZgOE6bxUhnzdVSB+vm2GU1tIsuQcA9bxTQpMQ== +mdast-util-gfm-task-list-item@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz#e68095d2f8a4303ef24094ab642e1047b991a936" + integrity sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ== dependencies: - "@types/mdast" "^3.0.0" - mdast-util-to-markdown "^1.3.0" + "@types/mdast" "^4.0.0" + devlop "^1.0.0" + mdast-util-from-markdown "^2.0.0" + mdast-util-to-markdown "^2.0.0" -mdast-util-gfm@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/mdast-util-gfm/-/mdast-util-gfm-2.0.2.tgz#e92f4d8717d74bdba6de57ed21cc8b9552e2d0b6" - integrity sha512-qvZ608nBppZ4icQlhQQIAdc6S3Ffj9RGmzwUKUWuEICFnd1LVkN3EktF7ZHAgfcEdvZB5owU9tQgt99e2TlLjg== - dependencies: - mdast-util-from-markdown "^1.0.0" - mdast-util-gfm-autolink-literal "^1.0.0" - mdast-util-gfm-footnote "^1.0.0" - mdast-util-gfm-strikethrough "^1.0.0" - mdast-util-gfm-table "^1.0.0" - mdast-util-gfm-task-list-item "^1.0.0" - mdast-util-to-markdown "^1.0.0" - -mdast-util-mdx-expression@^1.0.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/mdast-util-mdx-expression/-/mdast-util-mdx-expression-1.3.1.tgz#2224cf0b5b150093704a3c225bd529d2de21f50f" - integrity sha512-TTb6cKyTA1RD+1su1iStZ5PAv3rFfOUKcoU5EstUpv/IZo63uDX03R8+jXjMEhcobXnNOiG6/ccekvVl4eV1zQ== +mdast-util-gfm@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-gfm/-/mdast-util-gfm-3.0.0.tgz#3f2aecc879785c3cb6a81ff3a243dc11eca61095" + integrity sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw== + dependencies: + mdast-util-from-markdown "^2.0.0" + mdast-util-gfm-autolink-literal "^2.0.0" + mdast-util-gfm-footnote "^2.0.0" + mdast-util-gfm-strikethrough "^2.0.0" + mdast-util-gfm-table "^2.0.0" + mdast-util-gfm-task-list-item "^2.0.0" + mdast-util-to-markdown "^2.0.0" + +mdast-util-mdx-expression@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.0.tgz#4968b73724d320a379110d853e943a501bfd9d87" + integrity sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw== dependencies: "@types/estree-jsx" "^1.0.0" - "@types/hast" "^2.0.0" - "@types/mdast" "^3.0.0" - mdast-util-from-markdown "^1.0.0" - mdast-util-to-markdown "^1.0.0" + "@types/hast" "^3.0.0" + "@types/mdast" "^4.0.0" + devlop "^1.0.0" + mdast-util-from-markdown "^2.0.0" + mdast-util-to-markdown "^2.0.0" -mdast-util-mdx-jsx@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-2.1.0.tgz#029f5a9c38485dbb5cf482059557ee7d788f1947" - integrity sha512-KzgzfWMhdteDkrY4mQtyvTU5bc/W4ppxhe9SzelO6QUUiwLAM+Et2Dnjjprik74a336kHdo0zKm7Tp+n6FFeRg== +mdast-util-mdx-jsx@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.0.0.tgz#f73631fa5bb7a36712ff1e9cedec0cafed03401c" + integrity sha512-XZuPPzQNBPAlaqsTTgRrcJnyFbSOBovSadFgbFu8SnuNgm+6Bdx1K+IWoitsmj6Lq6MNtI+ytOqwN70n//NaBA== dependencies: "@types/estree-jsx" "^1.0.0" - "@types/hast" "^2.0.0" - "@types/mdast" "^3.0.0" + "@types/hast" "^3.0.0" + "@types/mdast" "^4.0.0" + "@types/unist" "^3.0.0" ccount "^2.0.0" - mdast-util-to-markdown "^1.3.0" + devlop "^1.1.0" + mdast-util-from-markdown "^2.0.0" + mdast-util-to-markdown "^2.0.0" parse-entities "^4.0.0" stringify-entities "^4.0.0" - unist-util-remove-position "^4.0.0" - unist-util-stringify-position "^3.0.0" - vfile-message "^3.0.0" + unist-util-remove-position "^5.0.0" + unist-util-stringify-position "^4.0.0" + vfile-message "^4.0.0" -mdast-util-mdx@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/mdast-util-mdx/-/mdast-util-mdx-2.0.0.tgz#dd4f6c993cf27da32725e50a04874f595b7b63fb" - integrity sha512-M09lW0CcBT1VrJUaF/PYxemxxHa7SLDHdSn94Q9FhxjCQfuW7nMAWKWimTmA3OyDMSTH981NN1csW1X+HPSluw== +mdast-util-mdx@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz#792f9cf0361b46bee1fdf1ef36beac424a099c41" + integrity sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w== dependencies: - mdast-util-mdx-expression "^1.0.0" - mdast-util-mdx-jsx "^2.0.0" - mdast-util-mdxjs-esm "^1.0.0" + mdast-util-from-markdown "^2.0.0" + mdast-util-mdx-expression "^2.0.0" + mdast-util-mdx-jsx "^3.0.0" + mdast-util-mdxjs-esm "^2.0.0" + mdast-util-to-markdown "^2.0.0" -mdast-util-mdxjs-esm@^1.0.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-1.3.0.tgz#137345ef827169aeeeb6069277cd3e090830ce9a" - integrity sha512-7N5ihsOkAEGjFotIX9p/YPdl4TqUoMxL4ajNz7PbT89BqsdWJuBC9rvgt6wpbwTZqWWR0jKWqQbwsOWDBUZv4g== +mdast-util-mdxjs-esm@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz#019cfbe757ad62dd557db35a695e7314bcc9fa97" + integrity sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg== dependencies: "@types/estree-jsx" "^1.0.0" - "@types/hast" "^2.0.0" - "@types/mdast" "^3.0.0" - mdast-util-from-markdown "^1.0.0" - mdast-util-to-markdown "^1.0.0" - -mdast-util-phrasing@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-3.0.1.tgz#c7c21d0d435d7fb90956038f02e8702781f95463" - integrity sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg== - dependencies: - "@types/mdast" "^3.0.0" - unist-util-is "^5.0.0" + "@types/hast" "^3.0.0" + "@types/mdast" "^4.0.0" + devlop "^1.0.0" + mdast-util-from-markdown "^2.0.0" + mdast-util-to-markdown "^2.0.0" -mdast-util-to-hast@^10.2.0: - version "10.2.0" - resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-10.2.0.tgz#61875526a017d8857b71abc9333942700b2d3604" - integrity sha512-JoPBfJ3gBnHZ18icCwHR50orC9kNH81tiR1gs01D8Q5YpV6adHNO9nKNuFBCJQ941/32PT1a63UF/DitmS3amQ== - dependencies: - "@types/mdast" "^3.0.0" - "@types/unist" "^2.0.0" - mdast-util-definitions "^4.0.0" - mdurl "^1.0.0" - unist-builder "^2.0.0" - unist-util-generated "^1.0.0" - unist-util-position "^3.0.0" - unist-util-visit "^2.0.0" - -mdast-util-to-hast@^12.1.0: - version "12.2.4" - resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-12.2.4.tgz#34c1ef2b6cf01c27b3e3504e2c977c76f722e7e1" - integrity sha512-a21xoxSef1l8VhHxS1Dnyioz6grrJkoaCUgGzMD/7dWHvboYX3VW53esRUfB5tgTyz4Yos1n25SPcj35dJqmAg== - dependencies: - "@types/hast" "^2.0.0" - "@types/mdast" "^3.0.0" - mdast-util-definitions "^5.0.0" - micromark-util-sanitize-uri "^1.1.0" +mdast-util-phrasing@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-phrasing/-/mdast-util-phrasing-4.0.0.tgz#468cbbb277375523de807248b8ad969feb02a5c7" + integrity sha512-xadSsJayQIucJ9n053dfQwVu1kuXg7jCTdYsMK8rqzKZh52nLfSH/k0sAxE0u+pj/zKZX+o5wB+ML5mRayOxFA== + dependencies: + "@types/mdast" "^4.0.0" + unist-util-is "^6.0.0" + +mdast-util-to-hast@^13.0.0: + version "13.1.0" + resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-13.1.0.tgz#1ae54d903150a10fe04d59f03b2b95fd210b2124" + integrity sha512-/e2l/6+OdGp/FB+ctrJ9Avz71AN/GRH3oi/3KAx/kMnoUsD6q0woXlDT8lLEeViVKE7oZxE7RXzvO3T8kF2/sA== + dependencies: + "@types/hast" "^3.0.0" + "@types/mdast" "^4.0.0" + "@ungap/structured-clone" "^1.0.0" + devlop "^1.0.0" + micromark-util-sanitize-uri "^2.0.0" trim-lines "^3.0.0" - unist-builder "^3.0.0" - unist-util-generated "^2.0.0" - unist-util-position "^4.0.0" - unist-util-visit "^4.0.0" - -mdast-util-to-markdown@^1.0.0, mdast-util-to-markdown@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/mdast-util-to-markdown/-/mdast-util-to-markdown-1.3.0.tgz#38b6cdc8dc417de642a469c4fc2abdf8c931bd1e" - integrity sha1-OLbNyNxBfeZCpGnE/Cq9+MkxvR4= - dependencies: - "@types/mdast" "^3.0.0" - "@types/unist" "^2.0.0" - longest-streak "^3.0.0" - mdast-util-to-string "^3.0.0" - micromark-util-decode-string "^1.0.0" - unist-util-visit "^4.0.0" - zwitch "^2.0.0" + unist-util-position "^5.0.0" + unist-util-visit "^5.0.0" + vfile "^6.0.0" -mdast-util-to-markdown@^1.5.0: - version "1.5.0" - resolved "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-1.5.0.tgz#c13343cb3fc98621911d33b5cd42e7d0731171c6" - integrity sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A== +mdast-util-to-markdown@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.0.tgz#9813f1d6e0cdaac7c244ec8c6dabfdb2102ea2b4" + integrity sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ== dependencies: - "@types/mdast" "^3.0.0" - "@types/unist" "^2.0.0" + "@types/mdast" "^4.0.0" + "@types/unist" "^3.0.0" longest-streak "^3.0.0" - mdast-util-phrasing "^3.0.0" - mdast-util-to-string "^3.0.0" - micromark-util-decode-string "^1.0.0" - unist-util-visit "^4.0.0" + mdast-util-phrasing "^4.0.0" + mdast-util-to-string "^4.0.0" + micromark-util-decode-string "^2.0.0" + unist-util-visit "^5.0.0" zwitch "^2.0.0" -mdast-util-to-string@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz#b8cfe6a713e1091cb5b728fc48885a4767f8b97b" - integrity sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w== - -mdast-util-to-string@^3.0.0, mdast-util-to-string@^3.1.0: +mdast-util-to-string@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-3.1.0.tgz#56c506d065fbf769515235e577b5a261552d56e9" integrity sha1-VsUG0GX792lRUjXld7WiYVUtVuk= -mdurl@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" - integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4= +mdast-util-to-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz#7a5121475556a04e7eddeb67b264aae79d312814" + integrity sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg== + dependencies: + "@types/mdast" "^4.0.0" mdx-mermaid@^1.2.1: version "1.3.2" @@ -9345,400 +10838,385 @@ mermaid@9.3.0: stylis "^4.1.2" uuid "^9.0.0" -micromark-core-commonmark@^1.0.0, micromark-core-commonmark@^1.0.1: - version "1.0.6" - resolved "https://registry.yarnpkg.com/micromark-core-commonmark/-/micromark-core-commonmark-1.0.6.tgz#edff4c72e5993d93724a3c206970f5a15b0585ad" - integrity sha1-7f9McuWZPZNySjwgaXD1oVsFha0= +micromark-core-commonmark@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/micromark-core-commonmark/-/micromark-core-commonmark-2.0.0.tgz#50740201f0ee78c12a675bf3e68ffebc0bf931a3" + integrity sha512-jThOz/pVmAYUtkroV3D5c1osFXAMv9e0ypGDOIZuCeAe91/sD6BoE2Sjzt30yuXtwOYUmySOhMas/PVyh02itA== dependencies: decode-named-character-reference "^1.0.0" - micromark-factory-destination "^1.0.0" - micromark-factory-label "^1.0.0" - micromark-factory-space "^1.0.0" - micromark-factory-title "^1.0.0" - micromark-factory-whitespace "^1.0.0" - micromark-util-character "^1.0.0" - micromark-util-chunked "^1.0.0" - micromark-util-classify-character "^1.0.0" - micromark-util-html-tag-name "^1.0.0" - micromark-util-normalize-identifier "^1.0.0" - micromark-util-resolve-all "^1.0.0" - micromark-util-subtokenize "^1.0.0" - micromark-util-symbol "^1.0.0" - micromark-util-types "^1.0.1" - uvu "^0.5.0" - -micromark-extension-directive@^2.0.0: - version "2.2.0" - resolved "https://registry.npmjs.org/micromark-extension-directive/-/micromark-extension-directive-2.2.0.tgz#f2b600900c50c7b5dd06c370978157e42da4d329" - integrity sha512-LWc2mGlJlPEcESz4IHNJR/tpJfWJEEFHGM+6vgCZGXkKMXc/y8rCKB07x5ZNnafIFe0/sjt6DIIihk78/Egj5Q== - dependencies: - micromark-factory-space "^1.0.0" - micromark-factory-whitespace "^1.0.0" - micromark-util-character "^1.0.0" - micromark-util-symbol "^1.0.0" - micromark-util-types "^1.0.0" + devlop "^1.0.0" + micromark-factory-destination "^2.0.0" + micromark-factory-label "^2.0.0" + micromark-factory-space "^2.0.0" + micromark-factory-title "^2.0.0" + micromark-factory-whitespace "^2.0.0" + micromark-util-character "^2.0.0" + micromark-util-chunked "^2.0.0" + micromark-util-classify-character "^2.0.0" + micromark-util-html-tag-name "^2.0.0" + micromark-util-normalize-identifier "^2.0.0" + micromark-util-resolve-all "^2.0.0" + micromark-util-subtokenize "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-extension-directive@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/micromark-extension-directive/-/micromark-extension-directive-3.0.0.tgz#527869de497a6de9024138479091bc885dae076b" + integrity sha512-61OI07qpQrERc+0wEysLHMvoiO3s2R56x5u7glHq2Yqq6EHbH4dW25G9GfDdGCDYqA21KE6DWgNSzxSwHc2hSg== + dependencies: + devlop "^1.0.0" + micromark-factory-space "^2.0.0" + micromark-factory-whitespace "^2.0.0" + micromark-util-character "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" parse-entities "^4.0.0" - uvu "^0.5.0" - -micromark-extension-gfm-autolink-literal@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-1.0.3.tgz#dc589f9c37eaff31a175bab49f12290edcf96058" - integrity sha512-i3dmvU0htawfWED8aHMMAzAVp/F0Z+0bPh3YrbTPPL1v4YAlCZpy5rBO5p0LPYiZo0zFVkoYh7vDU7yQSiCMjg== - dependencies: - micromark-util-character "^1.0.0" - micromark-util-sanitize-uri "^1.0.0" - micromark-util-symbol "^1.0.0" - micromark-util-types "^1.0.0" - uvu "^0.5.0" -micromark-extension-gfm-footnote@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-1.0.4.tgz#cbfd8873b983e820c494498c6dac0105920818d5" - integrity sha512-E/fmPmDqLiMUP8mLJ8NbJWJ4bTw6tS+FEQS8CcuDtZpILuOb2kjLqPEeAePF1djXROHXChM/wPJw0iS4kHCcIg== - dependencies: - micromark-core-commonmark "^1.0.0" - micromark-factory-space "^1.0.0" - micromark-util-character "^1.0.0" - micromark-util-normalize-identifier "^1.0.0" - micromark-util-sanitize-uri "^1.0.0" - micromark-util-symbol "^1.0.0" - micromark-util-types "^1.0.0" - uvu "^0.5.0" - -micromark-extension-gfm-strikethrough@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-1.0.4.tgz#162232c284ffbedd8c74e59c1525bda217295e18" - integrity sha512-/vjHU/lalmjZCT5xt7CcHVJGq8sYRm80z24qAKXzaHzem/xsDYb2yLL+NNVbYvmpLx3O7SYPuGL5pzusL9CLIQ== +micromark-extension-gfm-autolink-literal@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.0.0.tgz#f1e50b42e67d441528f39a67133eddde2bbabfd9" + integrity sha512-rTHfnpt/Q7dEAK1Y5ii0W8bhfJlVJFnJMHIPisfPK3gpVNuOP0VnRl96+YJ3RYWV/P4gFeQoGKNlT3RhuvpqAg== dependencies: - micromark-util-chunked "^1.0.0" - micromark-util-classify-character "^1.0.0" - micromark-util-resolve-all "^1.0.0" - micromark-util-symbol "^1.0.0" - micromark-util-types "^1.0.0" - uvu "^0.5.0" + micromark-util-character "^2.0.0" + micromark-util-sanitize-uri "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" -micromark-extension-gfm-table@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/micromark-extension-gfm-table/-/micromark-extension-gfm-table-1.0.5.tgz#7b708b728f8dc4d95d486b9e7a2262f9cddbcbb4" - integrity sha512-xAZ8J1X9W9K3JTJTUL7G6wSKhp2ZYHrFk5qJgY/4B33scJzE2kpfRL6oiw/veJTbt7jiM/1rngLlOKPWr1G+vg== +micromark-extension-gfm-footnote@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.0.0.tgz#91afad310065a94b636ab1e9dab2c60d1aab953c" + integrity sha512-6Rzu0CYRKDv3BfLAUnZsSlzx3ak6HAoI85KTiijuKIz5UxZxbUI+pD6oHgw+6UtQuiRwnGRhzMmPRv4smcz0fg== + dependencies: + devlop "^1.0.0" + micromark-core-commonmark "^2.0.0" + micromark-factory-space "^2.0.0" + micromark-util-character "^2.0.0" + micromark-util-normalize-identifier "^2.0.0" + micromark-util-sanitize-uri "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-extension-gfm-strikethrough@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.0.0.tgz#6917db8e320da70e39ffbf97abdbff83e6783e61" + integrity sha512-c3BR1ClMp5fxxmwP6AoOY2fXO9U8uFMKs4ADD66ahLTNcwzSCyRVU4k7LPV5Nxo/VJiR4TdzxRQY2v3qIUceCw== dependencies: - micromark-factory-space "^1.0.0" - micromark-util-character "^1.0.0" - micromark-util-symbol "^1.0.0" - micromark-util-types "^1.0.0" - uvu "^0.5.0" + devlop "^1.0.0" + micromark-util-chunked "^2.0.0" + micromark-util-classify-character "^2.0.0" + micromark-util-resolve-all "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" -micromark-extension-gfm-tagfilter@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-1.0.1.tgz#fb2e303f7daf616db428bb6a26e18fda14a90a4d" - integrity sha512-Ty6psLAcAjboRa/UKUbbUcwjVAv5plxmpUTy2XC/3nJFL37eHej8jrHrRzkqcpipJliuBH30DTs7+3wqNcQUVA== +micromark-extension-gfm-table@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.0.0.tgz#2cf3fe352d9e089b7ef5fff003bdfe0da29649b7" + integrity sha512-PoHlhypg1ItIucOaHmKE8fbin3vTLpDOUg8KAr8gRCF1MOZI9Nquq2i/44wFvviM4WuxJzc3demT8Y3dkfvYrw== dependencies: - micromark-util-types "^1.0.0" + devlop "^1.0.0" + micromark-factory-space "^2.0.0" + micromark-util-character "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" -micromark-extension-gfm-task-list-item@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-1.0.3.tgz#7683641df5d4a09795f353574d7f7f66e47b7fc4" - integrity sha512-PpysK2S1Q/5VXi72IIapbi/jliaiOFzv7THH4amwXeYXLq3l1uo8/2Be0Ac1rEwK20MQEsGH2ltAZLNY2KI/0Q== +micromark-extension-gfm-tagfilter@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz#f26d8a7807b5985fba13cf61465b58ca5ff7dc57" + integrity sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg== dependencies: - micromark-factory-space "^1.0.0" - micromark-util-character "^1.0.0" - micromark-util-symbol "^1.0.0" - micromark-util-types "^1.0.0" - uvu "^0.5.0" + micromark-util-types "^2.0.0" -micromark-extension-gfm@^2.0.0: +micromark-extension-gfm-task-list-item@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/micromark-extension-gfm/-/micromark-extension-gfm-2.0.1.tgz#40f3209216127a96297c54c67f5edc7ef2d1a2a2" - integrity sha512-p2sGjajLa0iYiGQdT0oelahRYtMWvLjy8J9LOCxzIQsllMCGLbsLW+Nc+N4vi02jcRJvedVJ68cjelKIO6bpDA== - dependencies: - micromark-extension-gfm-autolink-literal "^1.0.0" - micromark-extension-gfm-footnote "^1.0.0" - micromark-extension-gfm-strikethrough "^1.0.0" - micromark-extension-gfm-table "^1.0.0" - micromark-extension-gfm-tagfilter "^1.0.0" - micromark-extension-gfm-task-list-item "^1.0.0" - micromark-util-combine-extensions "^1.0.0" - micromark-util-types "^1.0.0" - -micromark-extension-mdx-expression@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-1.0.3.tgz#cd3843573921bf55afcfff4ae0cd2e857a16dcfa" - integrity sha512-TjYtjEMszWze51NJCZmhv7MEBcgYRgb3tJeMAJ+HQCAaZHHRBaDCccqQzGizR/H4ODefP44wRTgOn2vE5I6nZA== - dependencies: - micromark-factory-mdx-expression "^1.0.0" - micromark-factory-space "^1.0.0" - micromark-util-character "^1.0.0" - micromark-util-events-to-acorn "^1.0.0" - micromark-util-symbol "^1.0.0" - micromark-util-types "^1.0.0" - uvu "^0.5.0" - -micromark-extension-mdx-jsx@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-1.0.3.tgz#9f196be5f65eb09d2a49b237a7b3398bba2999be" - integrity sha512-VfA369RdqUISF0qGgv2FfV7gGjHDfn9+Qfiv5hEwpyr1xscRj/CiVRkU7rywGFCO7JwJ5L0e7CJz60lY52+qOA== + resolved "https://registry.yarnpkg.com/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.0.1.tgz#ee8b208f1ced1eb9fb11c19a23666e59d86d4838" + integrity sha512-cY5PzGcnULaN5O7T+cOzfMoHjBW7j+T9D2sucA5d/KbsBTPcYdebm9zUd9zzdgJGCwahV+/W78Z3nbulBYVbTw== + dependencies: + devlop "^1.0.0" + micromark-factory-space "^2.0.0" + micromark-util-character "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-extension-gfm@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz#3e13376ab95dd7a5cfd0e29560dfe999657b3c5b" + integrity sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w== + dependencies: + micromark-extension-gfm-autolink-literal "^2.0.0" + micromark-extension-gfm-footnote "^2.0.0" + micromark-extension-gfm-strikethrough "^2.0.0" + micromark-extension-gfm-table "^2.0.0" + micromark-extension-gfm-tagfilter "^2.0.0" + micromark-extension-gfm-task-list-item "^2.0.0" + micromark-util-combine-extensions "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-extension-mdx-expression@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.0.tgz#1407b9ce69916cf5e03a196ad9586889df25302a" + integrity sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ== + dependencies: + "@types/estree" "^1.0.0" + devlop "^1.0.0" + micromark-factory-mdx-expression "^2.0.0" + micromark-factory-space "^2.0.0" + micromark-util-character "^2.0.0" + micromark-util-events-to-acorn "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-extension-mdx-jsx@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.0.tgz#4aba0797c25efb2366a3fd2d367c6b1c1159f4f5" + integrity sha512-uvhhss8OGuzR4/N17L1JwvmJIpPhAd8oByMawEKx6NVdBCbesjH4t+vjEp3ZXft9DwvlKSD07fCeI44/N0Vf2w== dependencies: "@types/acorn" "^4.0.0" - estree-util-is-identifier-name "^2.0.0" - micromark-factory-mdx-expression "^1.0.0" - micromark-factory-space "^1.0.0" - micromark-util-character "^1.0.0" - micromark-util-symbol "^1.0.0" - micromark-util-types "^1.0.0" - uvu "^0.5.0" - vfile-message "^3.0.0" - -micromark-extension-mdx-md@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/micromark-extension-mdx-md/-/micromark-extension-mdx-md-1.0.0.tgz#382f5df9ee3706dd120b51782a211f31f4760d22" - integrity sha512-xaRAMoSkKdqZXDAoSgp20Azm0aRQKGOl0RrS81yGu8Hr/JhMsBmfs4wR7m9kgVUIO36cMUQjNyiyDKPrsv8gOw== + "@types/estree" "^1.0.0" + devlop "^1.0.0" + estree-util-is-identifier-name "^3.0.0" + micromark-factory-mdx-expression "^2.0.0" + micromark-factory-space "^2.0.0" + micromark-util-character "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + vfile-message "^4.0.0" + +micromark-extension-mdx-md@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/micromark-extension-mdx-md/-/micromark-extension-mdx-md-2.0.0.tgz#1d252881ea35d74698423ab44917e1f5b197b92d" + integrity sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ== dependencies: - micromark-util-types "^1.0.0" + micromark-util-types "^2.0.0" -micromark-extension-mdxjs-esm@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-1.0.3.tgz#630d9dc9db2c2fd470cac8c1e7a824851267404d" - integrity sha512-2N13ol4KMoxb85rdDwTAC6uzs8lMX0zeqpcyx7FhS7PxXomOnLactu8WI8iBNXW8AVyea3KIJd/1CKnUmwrK9A== - dependencies: - micromark-core-commonmark "^1.0.0" - micromark-util-character "^1.0.0" - micromark-util-events-to-acorn "^1.0.0" - micromark-util-symbol "^1.0.0" - micromark-util-types "^1.0.0" - unist-util-position-from-estree "^1.1.0" - uvu "^0.5.0" - vfile-message "^3.0.0" - -micromark-extension-mdxjs@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/micromark-extension-mdxjs/-/micromark-extension-mdxjs-1.0.0.tgz#772644e12fc8299a33e50f59c5aa15727f6689dd" - integrity sha512-TZZRZgeHvtgm+IhtgC2+uDMR7h8eTKF0QUX9YsgoL9+bADBpBY6SiLvWqnBlLbCEevITmTqmEuY3FoxMKVs1rQ== +micromark-extension-mdxjs-esm@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-3.0.0.tgz#de21b2b045fd2059bd00d36746081de38390d54a" + integrity sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A== + dependencies: + "@types/estree" "^1.0.0" + devlop "^1.0.0" + micromark-core-commonmark "^2.0.0" + micromark-util-character "^2.0.0" + micromark-util-events-to-acorn "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + unist-util-position-from-estree "^2.0.0" + vfile-message "^4.0.0" + +micromark-extension-mdxjs@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/micromark-extension-mdxjs/-/micromark-extension-mdxjs-3.0.0.tgz#b5a2e0ed449288f3f6f6c544358159557549de18" + integrity sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ== dependencies: acorn "^8.0.0" acorn-jsx "^5.0.0" - micromark-extension-mdx-expression "^1.0.0" - micromark-extension-mdx-jsx "^1.0.0" - micromark-extension-mdx-md "^1.0.0" - micromark-extension-mdxjs-esm "^1.0.0" - micromark-util-combine-extensions "^1.0.0" - micromark-util-types "^1.0.0" - -micromark-factory-destination@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/micromark-factory-destination/-/micromark-factory-destination-1.0.0.tgz#fef1cb59ad4997c496f887b6977aa3034a5a277e" - integrity sha1-/vHLWa1Jl8SW+Ie2l3qjA0paJ34= + micromark-extension-mdx-expression "^3.0.0" + micromark-extension-mdx-jsx "^3.0.0" + micromark-extension-mdx-md "^2.0.0" + micromark-extension-mdxjs-esm "^3.0.0" + micromark-util-combine-extensions "^2.0.0" + micromark-util-types "^2.0.0" + +micromark-factory-destination@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz#857c94debd2c873cba34e0445ab26b74f6a6ec07" + integrity sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA== dependencies: - micromark-util-character "^1.0.0" - micromark-util-symbol "^1.0.0" - micromark-util-types "^1.0.0" + micromark-util-character "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" -micromark-factory-label@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/micromark-factory-label/-/micromark-factory-label-1.0.2.tgz#6be2551fa8d13542fcbbac478258fb7a20047137" - integrity sha1-a+JVH6jRNUL8u6xHglj7eiAEcTc= +micromark-factory-label@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz#17c5c2e66ce39ad6f4fc4cbf40d972f9096f726a" + integrity sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw== dependencies: - micromark-util-character "^1.0.0" - micromark-util-symbol "^1.0.0" - micromark-util-types "^1.0.0" - uvu "^0.5.0" + devlop "^1.0.0" + micromark-util-character "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" -micromark-factory-mdx-expression@^1.0.0: - version "1.0.6" - resolved "https://registry.yarnpkg.com/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-1.0.6.tgz#917e17d16e6e9c2551f3a862e6a9ebdd22056476" - integrity sha512-WRQIc78FV7KrCfjsEf/sETopbYjElh3xAmNpLkd1ODPqxEngP42eVRGbiPEQWpRV27LzqW+XVTvQAMIIRLPnNA== - dependencies: - micromark-factory-space "^1.0.0" - micromark-util-character "^1.0.0" - micromark-util-events-to-acorn "^1.0.0" - micromark-util-symbol "^1.0.0" - micromark-util-types "^1.0.0" - unist-util-position-from-estree "^1.0.0" - uvu "^0.5.0" - vfile-message "^3.0.0" - -micromark-factory-space@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/micromark-factory-space/-/micromark-factory-space-1.0.0.tgz#cebff49968f2b9616c0fcb239e96685cb9497633" - integrity sha1-zr/0mWjyuWFsD8sjnpZoXLlJdjM= +micromark-factory-mdx-expression@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.1.tgz#f2a9724ce174f1751173beb2c1f88062d3373b1b" + integrity sha512-F0ccWIUHRLRrYp5TC9ZYXmZo+p2AM13ggbsW4T0b5CRKP8KHVRB8t4pwtBgTxtjRmwrK0Irwm7vs2JOZabHZfg== + dependencies: + "@types/estree" "^1.0.0" + devlop "^1.0.0" + micromark-util-character "^2.0.0" + micromark-util-events-to-acorn "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + unist-util-position-from-estree "^2.0.0" + vfile-message "^4.0.0" + +micromark-factory-space@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz#5e7afd5929c23b96566d0e1ae018ae4fcf81d030" + integrity sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg== dependencies: - micromark-util-character "^1.0.0" - micromark-util-types "^1.0.0" + micromark-util-character "^2.0.0" + micromark-util-types "^2.0.0" -micromark-factory-title@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/micromark-factory-title/-/micromark-factory-title-1.0.2.tgz#7e09287c3748ff1693930f176e1c4a328382494f" - integrity sha1-fgkofDdI/xaTkw8XbhxKMoOCSU8= +micromark-factory-title@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz#726140fc77892af524705d689e1cf06c8a83ea95" + integrity sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A== dependencies: - micromark-factory-space "^1.0.0" - micromark-util-character "^1.0.0" - micromark-util-symbol "^1.0.0" - micromark-util-types "^1.0.0" - uvu "^0.5.0" + micromark-factory-space "^2.0.0" + micromark-util-character "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" -micromark-factory-whitespace@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/micromark-factory-whitespace/-/micromark-factory-whitespace-1.0.0.tgz#e991e043ad376c1ba52f4e49858ce0794678621c" - integrity sha1-6ZHgQ603bBulL05JhYzgeUZ4Yhw= +micromark-factory-whitespace@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz#9e92eb0f5468083381f923d9653632b3cfb5f763" + integrity sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA== dependencies: - micromark-factory-space "^1.0.0" - micromark-util-character "^1.0.0" - micromark-util-symbol "^1.0.0" - micromark-util-types "^1.0.0" + micromark-factory-space "^2.0.0" + micromark-util-character "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" -micromark-util-character@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/micromark-util-character/-/micromark-util-character-1.1.0.tgz#d97c54d5742a0d9611a68ca0cd4124331f264d86" - integrity sha1-2XxU1XQqDZYRpoygzUEkMx8mTYY= +micromark-util-character@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-character/-/micromark-util-character-2.0.1.tgz#52b824c2e2633b6fb33399d2ec78ee2a90d6b298" + integrity sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw== dependencies: - micromark-util-symbol "^1.0.0" - micromark-util-types "^1.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" -micromark-util-chunked@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/micromark-util-chunked/-/micromark-util-chunked-1.0.0.tgz#5b40d83f3d53b84c4c6bce30ed4257e9a4c79d06" - integrity sha1-W0DYPz1TuExMa84w7UJX6aTHnQY= +micromark-util-chunked@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz#e51f4db85fb203a79dbfef23fd41b2f03dc2ef89" + integrity sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg== dependencies: - micromark-util-symbol "^1.0.0" + micromark-util-symbol "^2.0.0" -micromark-util-classify-character@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/micromark-util-classify-character/-/micromark-util-classify-character-1.0.0.tgz#cbd7b447cb79ee6997dd274a46fc4eb806460a20" - integrity sha1-y9e0R8t57mmX3SdKRvxOuAZGCiA= +micromark-util-classify-character@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz#8c7537c20d0750b12df31f86e976d1d951165f34" + integrity sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw== dependencies: - micromark-util-character "^1.0.0" - micromark-util-symbol "^1.0.0" - micromark-util-types "^1.0.0" + micromark-util-character "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" -micromark-util-combine-extensions@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.0.0.tgz#91418e1e74fb893e3628b8d496085639124ff3d5" - integrity sha1-kUGOHnT7iT42KLjUlghWORJP89U= +micromark-util-combine-extensions@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz#75d6ab65c58b7403616db8d6b31315013bfb7ee5" + integrity sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ== dependencies: - micromark-util-chunked "^1.0.0" - micromark-util-types "^1.0.0" + micromark-util-chunked "^2.0.0" + micromark-util-types "^2.0.0" -micromark-util-decode-numeric-character-reference@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.0.0.tgz#dcc85f13b5bd93ff8d2868c3dba28039d490b946" - integrity sha1-3MhfE7W9k/+NKGjD26KAOdSQuUY= +micromark-util-decode-numeric-character-reference@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.1.tgz#2698bbb38f2a9ba6310e359f99fcb2b35a0d2bd5" + integrity sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ== dependencies: - micromark-util-symbol "^1.0.0" + micromark-util-symbol "^2.0.0" -micromark-util-decode-string@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/micromark-util-decode-string/-/micromark-util-decode-string-1.0.2.tgz#942252ab7a76dec2dbf089cc32505ee2bc3acf02" - integrity sha1-lCJSq3p23sLb8InMMlBe4rw6zwI= +micromark-util-decode-string@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz#7dfa3a63c45aecaa17824e656bcdb01f9737154a" + integrity sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA== dependencies: decode-named-character-reference "^1.0.0" - micromark-util-character "^1.0.0" - micromark-util-decode-numeric-character-reference "^1.0.0" - micromark-util-symbol "^1.0.0" + micromark-util-character "^2.0.0" + micromark-util-decode-numeric-character-reference "^2.0.0" + micromark-util-symbol "^2.0.0" -micromark-util-encode@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/micromark-util-encode/-/micromark-util-encode-1.0.1.tgz#2c1c22d3800870ad770ece5686ebca5920353383" - integrity sha1-LBwi04AIcK13Ds5WhuvKWSA1M4M= +micromark-util-encode@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz#0921ac7953dc3f1fd281e3d1932decfdb9382ab1" + integrity sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA== -micromark-util-events-to-acorn@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-1.2.0.tgz#65785cb77299d791bfefdc6a5213ab57ceead115" - integrity sha512-WWp3bf7xT9MppNuw3yPjpnOxa8cj5ACivEzXJKu0WwnjBYfzaBvIAT9KfeyI0Qkll+bfQtfftSwdgTH6QhTOKw== +micromark-util-events-to-acorn@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.2.tgz#4275834f5453c088bd29cd72dfbf80e3327cec07" + integrity sha512-Fk+xmBrOv9QZnEDguL9OI9/NQQp6Hz4FuQ4YmCb/5V7+9eAh1s6AYSvL20kHkD67YIg7EpE54TiSlcsf3vyZgA== dependencies: "@types/acorn" "^4.0.0" "@types/estree" "^1.0.0" - estree-util-visit "^1.0.0" - micromark-util-types "^1.0.0" - uvu "^0.5.0" - vfile-location "^4.0.0" - vfile-message "^3.0.0" - -micromark-util-html-tag-name@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.1.0.tgz#eb227118befd51f48858e879b7a419fc0df20497" - integrity sha1-6yJxGL79UfSIWOh5t6QZ/A3yBJc= - -micromark-util-normalize-identifier@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.0.0.tgz#4a3539cb8db954bbec5203952bfe8cedadae7828" - integrity sha1-SjU5y425VLvsUgOVK/6M7a2ueCg= - dependencies: - micromark-util-symbol "^1.0.0" + "@types/unist" "^3.0.0" + devlop "^1.0.0" + estree-util-visit "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" + vfile-message "^4.0.0" + +micromark-util-html-tag-name@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz#ae34b01cbe063363847670284c6255bb12138ec4" + integrity sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw== -micromark-util-resolve-all@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/micromark-util-resolve-all/-/micromark-util-resolve-all-1.0.0.tgz#a7c363f49a0162e931960c44f3127ab58f031d88" - integrity sha1-p8Nj9JoBYukxlgxE8xJ6tY8DHYg= +micromark-util-normalize-identifier@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz#91f9a4e65fe66cc80c53b35b0254ad67aa431d8b" + integrity sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w== dependencies: - micromark-util-types "^1.0.0" + micromark-util-symbol "^2.0.0" -micromark-util-sanitize-uri@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.0.0.tgz#27dc875397cd15102274c6c6da5585d34d4f12b2" - integrity sha1-J9yHU5fNFRAidMbG2lWF001PErI= +micromark-util-resolve-all@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz#189656e7e1a53d0c86a38a652b284a252389f364" + integrity sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA== dependencies: - micromark-util-character "^1.0.0" - micromark-util-encode "^1.0.0" - micromark-util-symbol "^1.0.0" + micromark-util-types "^2.0.0" -micromark-util-sanitize-uri@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.1.0.tgz#f12e07a85106b902645e0364feb07cf253a85aee" - integrity sha512-RoxtuSCX6sUNtxhbmsEFQfWzs8VN7cTctmBPvYivo98xb/kDEoTCtJQX5wyzIYEmk/lvNFTat4hL8oW0KndFpg== +micromark-util-sanitize-uri@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz#ec8fbf0258e9e6d8f13d9e4770f9be64342673de" + integrity sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw== dependencies: - micromark-util-character "^1.0.0" - micromark-util-encode "^1.0.0" - micromark-util-symbol "^1.0.0" + micromark-util-character "^2.0.0" + micromark-util-encode "^2.0.0" + micromark-util-symbol "^2.0.0" -micromark-util-subtokenize@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/micromark-util-subtokenize/-/micromark-util-subtokenize-1.0.2.tgz#ff6f1af6ac836f8bfdbf9b02f40431760ad89105" - integrity sha1-/28a9qyDb4v9v5sC9AQxdgrYkQU= +micromark-util-subtokenize@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.0.tgz#9f412442d77e0c5789ffdf42377fa8a2bcbdf581" + integrity sha512-vc93L1t+gpR3p8jxeVdaYlbV2jTYteDje19rNSS/H5dlhxUYll5Fy6vJ2cDwP8RnsXi818yGty1ayP55y3W6fg== dependencies: - micromark-util-chunked "^1.0.0" - micromark-util-symbol "^1.0.0" - micromark-util-types "^1.0.0" - uvu "^0.5.0" + devlop "^1.0.0" + micromark-util-chunked "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" -micromark-util-symbol@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/micromark-util-symbol/-/micromark-util-symbol-1.0.1.tgz#b90344db62042ce454f351cf0bebcc0a6da4920e" - integrity sha1-uQNE22IELORU81HPC+vMCm2kkg4= +micromark-util-symbol@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz#12225c8f95edf8b17254e47080ce0862d5db8044" + integrity sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw== -micromark-util-types@^1.0.0, micromark-util-types@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/micromark-util-types/-/micromark-util-types-1.0.2.tgz#f4220fdb319205812f99c40f8c87a9be83eded20" - integrity sha1-9CIP2zGSBYEvmcQPjIepvoPt7SA= +micromark-util-types@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/micromark-util-types/-/micromark-util-types-2.0.0.tgz#63b4b7ffeb35d3ecf50d1ca20e68fc7caa36d95e" + integrity sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w== -micromark@^3.0.0: - version "3.0.10" - resolved "https://registry.yarnpkg.com/micromark/-/micromark-3.0.10.tgz#1eac156f0399d42736458a14b0ca2d86190b457c" - integrity sha1-HqwVbwOZ1Cc2RYoUsMothhkLRXw= +micromark@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/micromark/-/micromark-4.0.0.tgz#84746a249ebd904d9658cfabc1e8e5f32cbc6249" + integrity sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ== dependencies: "@types/debug" "^4.0.0" debug "^4.0.0" decode-named-character-reference "^1.0.0" - micromark-core-commonmark "^1.0.1" - micromark-factory-space "^1.0.0" - micromark-util-character "^1.0.0" - micromark-util-chunked "^1.0.0" - micromark-util-combine-extensions "^1.0.0" - micromark-util-decode-numeric-character-reference "^1.0.0" - micromark-util-encode "^1.0.0" - micromark-util-normalize-identifier "^1.0.0" - micromark-util-resolve-all "^1.0.0" - micromark-util-sanitize-uri "^1.0.0" - micromark-util-subtokenize "^1.0.0" - micromark-util-symbol "^1.0.0" - micromark-util-types "^1.0.1" - uvu "^0.5.0" - -micromark@~2.11.0: - version "2.11.4" - resolved "https://registry.yarnpkg.com/micromark/-/micromark-2.11.4.tgz#d13436138eea826383e822449c9a5c50ee44665a" - integrity sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA== - dependencies: - debug "^4.0.0" - parse-entities "^2.0.0" + devlop "^1.0.0" + micromark-core-commonmark "^2.0.0" + micromark-factory-space "^2.0.0" + micromark-util-character "^2.0.0" + micromark-util-chunked "^2.0.0" + micromark-util-combine-extensions "^2.0.0" + micromark-util-decode-numeric-character-reference "^2.0.0" + micromark-util-encode "^2.0.0" + micromark-util-normalize-identifier "^2.0.0" + micromark-util-resolve-all "^2.0.0" + micromark-util-sanitize-uri "^2.0.0" + micromark-util-subtokenize "^2.0.0" + micromark-util-symbol "^2.0.0" + micromark-util-types "^2.0.0" micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: version "4.0.5" @@ -9760,6 +11238,11 @@ mime-types@^2.1.12: dependencies: mime-db "1.52.0" +mime@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-3.0.0.tgz#b374550dca3a0c18443b0c950a6a58f1931cf7a7" + integrity sha1-s3RVDco6DBhEOwyVCmpY8ZMc96c= + mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" @@ -9788,21 +11271,28 @@ min-indent@^1.0.0, min-indent@^1.0.1: minim@~0.23.8: version "0.23.8" resolved "https://registry.yarnpkg.com/minim/-/minim-0.23.8.tgz#a529837afe1654f119dfb68ce7487dd8d4866b9c" - integrity sha512-bjdr2xW1dBCMsMGGsUeqM4eFI60m94+szhxWys+B1ztIt6gWSfeGBdSVCIawezeHYLYn0j6zrsXdQS/JllBzww== + integrity sha1-pSmDev4WVPEZ37aM50h92NSGa5w= dependencies: lodash "^4.15.0" -minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: +minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha1-Gc0ZS/0+Qo8EmnCBfAONiatL41s= dependencies: brace-expansion "^1.1.7" +minimatch@^5.0.1: + version "5.1.6" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" + integrity sha1-HPy4z1Ui6mmVLNKvla4JR38SKpY= + dependencies: + brace-expansion "^2.0.1" + minimatch@^7.4.3: version "7.4.6" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-7.4.6.tgz#845d6f254d8f4a5e4fd6baf44d5f10c8448365fb" - integrity sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw== + integrity sha1-hF1vJU2PSl5P1rr0TV8QyESDZfs= dependencies: brace-expansion "^2.0.1" @@ -9823,37 +11313,52 @@ minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: minimist@^1.2.3: version "1.2.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" - integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + integrity sha1-waRk52kzAuCCoHXO4MBXdBrEdyw= mixme@^0.5.1: version "0.5.4" resolved "https://registry.yarnpkg.com/mixme/-/mixme-0.5.4.tgz#8cb3bd0cd32a513c161bf1ca99d143f0bcf2eff3" integrity sha512-3KYa4m4Vlqx98GPdOHghxSdNtTvcP8E0kkaJ5Dlh+h2DRzF7zpuVVcA8B0QpKd11YJeP9QQ7ASkKzOeu195Wzw== -mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: +mkdirp-classic@^0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.2.tgz#54c441ce4c96cd7790e10b41a87aa51068ecab2b" + integrity sha1-VMRBzkyWzXeQ4QtBqHqlEGjsqys= + +mkdirp-classic@^0.5.3: version "0.5.3" resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" - integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== + integrity sha1-+hDJEVzG2IZb4iG6R+6b7XhgERM= mkdirp@^1.0.4: version "1.0.4" resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -mock-fs@^4.14.0: - version "4.14.0" - resolved "https://registry.yarnpkg.com/mock-fs/-/mock-fs-4.14.0.tgz#ce5124d2c601421255985e6e94da80a7357b1b18" - integrity sha512-qYvlv/exQ4+svI3UOvPUpLDF0OMX5euvUH0Ny4N5QyRyhNdgAgUrVH3iUINSzEPLvx0kbo/Bp28GJKIqvE7URw== +mlly@^1.1.0, mlly@^1.2.0: + version "1.4.2" + resolved "https://registry.yarnpkg.com/mlly/-/mlly-1.4.2.tgz#7cf406aa319ff6563d25da6b36610a93f2a8007e" + integrity sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg== + dependencies: + acorn "^8.10.0" + pathe "^1.1.1" + pkg-types "^1.0.3" + ufo "^1.3.0" + +modern-ahocorasick@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/modern-ahocorasick/-/modern-ahocorasick-1.0.1.tgz#dec373444f51b5458ac05216a8ec376e126dd283" + integrity sha512-yoe+JbhTClckZ67b2itRtistFKf8yPYelHLc7e5xAwtNAXxM6wJTUx2C7QeVSJFDzKT7bCIFyBVybPMKvmB9AA== moment-mini@^2.24.0: version "2.29.4" resolved "https://registry.yarnpkg.com/moment-mini/-/moment-mini-2.29.4.tgz#cbbcdc58ce1b267506f28ea6668dbe060a32758f" integrity sha512-uhXpYwHFeiTbY9KSgPPRoo1nt8OxNVdMVoTBYHfSEKeRkIkwGpO+gERmhuhBtzfaeOyTkykSrm2+noJBgqt3Hg== -mri@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" - integrity sha1-ZyFID+wqEaSImGERWki2y+fMjws= +mrmime@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mrmime/-/mrmime-1.0.1.tgz#5f90c825fad4bdd41dc914eff5d1a8cfdaf24f27" + integrity sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw== ms@2.0.0: version "2.0.0" @@ -9896,6 +11401,31 @@ msw@^0.47.4: type-fest "^2.19.0" yargs "^17.3.1" +msw@^0.49.1: + version "0.49.3" + resolved "https://registry.yarnpkg.com/msw/-/msw-0.49.3.tgz#c4ca29eddda3e82ad9e36918dda4a7428eddd7fe" + integrity sha512-kRCbDNbNnRq5LC1H/NUceZlrPAvSrMH6Or0mirIuH69NY84xwDruPn/hkXTovIK1KwDwbk+ZdoSyJlpiekLxEA== + dependencies: + "@mswjs/cookies" "^0.2.2" + "@mswjs/interceptors" "^0.17.5" + "@open-draft/until" "^1.0.3" + "@types/cookie" "^0.4.1" + "@types/js-levenshtein" "^1.1.1" + chalk "4.1.1" + chokidar "^3.4.2" + cookie "^0.4.2" + graphql "^15.0.0 || ^16.0.0" + headers-polyfill "^3.1.0" + inquirer "^8.2.0" + is-node-process "^1.0.1" + js-levenshtein "^1.1.6" + node-fetch "^2.6.7" + outvariant "^1.3.0" + path-to-regexp "^6.2.0" + strict-event-emitter "^0.4.3" + type-fest "^2.19.0" + yargs "^17.3.1" + mute-stream@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" @@ -9904,22 +11434,32 @@ mute-stream@0.0.8: nan@^2.14.0, nan@^2.14.1, nan@^2.17.0: version "2.17.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.17.0.tgz#c0150a2368a182f033e9aa5195ec76ea41a199cb" - integrity sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ== + integrity sha1-wBUKI2ihgvAz6apRlex26kGhmcs= + +nan@^2.18.0: + version "2.18.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.18.0.tgz#26a6faae7ffbeb293a39660e88a76b82e30b7554" + integrity sha1-Jqb6rn/76yk6OWYOiKdrguMLdVQ= nanoclone@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/nanoclone/-/nanoclone-0.2.1.tgz#dd4090f8f1a110d26bb32c49ed2f5b9235209ed4" integrity sha512-wynEP02LmIbLpcYw8uBKpcfF6dmg2vcpKqxeH5UcoKEYdExslsdUA4ugFauuaeYdTB76ez6gJW8XAZ6CgkXYxA== -nanoid@^3.3.4: - version "3.3.4" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" - integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== +nanoid@^3.3.6: + version "3.3.6" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" + integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== + +nanoid@^3.3.7: + version "3.3.7" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" + integrity sha1-0MMBppG8jVTvoKIibM8/4v1la9g= napi-build-utils@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806" - integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg== + integrity sha1-sf3cCyxG44Cgt6dvmE3UfEGhOAY= natural-compare@^1.4.0: version "1.4.0" @@ -9946,60 +11486,39 @@ next-auth@^4.24.5: preact-render-to-string "^5.1.19" uuid "^8.3.2" -next-mdx-remote@^4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/next-mdx-remote/-/next-mdx-remote-4.2.1.tgz#1aee0207b029487100ef49740be210595fe04e50" - integrity sha512-PcVF1r5XTBjiNVXw0GyaIcOwQsklHo36+7ycfmtJb52TIkT0nM4Hzv4wgJwNg7+jvTbap99qWsMwdKUYR9WxAA== - dependencies: - "@mdx-js/mdx" "^2.2.1" - "@mdx-js/react" "^2.2.1" - vfile "^5.3.0" - vfile-matter "^3.0.1" - next-router-mock@^0.9.2: version "0.9.2" resolved "https://registry.yarnpkg.com/next-router-mock/-/next-router-mock-0.9.2.tgz#750341ea0bab9fa04257fb38a85bbe5c25dc19e5" integrity sha512-rh6Mq1xhZ4Y0y9Z3seHZ04k4dAKnAyRcis7q3ZUF+Xp0uBeNqPC8Ydw5DldYncN3o1sYBqRyz25F/v/kfcg0/Q== -next@^13.4.1: - version "13.4.1" - resolved "https://registry.yarnpkg.com/next/-/next-13.4.1.tgz#8d23f94c81b3f9cc8b34165ad528457e5befd726" - integrity sha512-JBw2kAIyhKDpjhEWvNVoFeIzNp9xNxg8wrthDOtMctfn3EpqGCmW0FSviNyGgOSOSn6zDaX48pmvbdf6X2W9xA== +next@^14.0.0: + version "14.2.3" + resolved "https://registry.yarnpkg.com/next/-/next-14.2.3.tgz#f117dd5d5f20c307e7b8e4f9c1c97d961008925d" + integrity sha512-dowFkFTR8v79NPJO4QsBUtxv0g9BrS/phluVpMAt2ku7H+cbcBJlopXjkWlwxrk/xGqMemr7JkGPGemPrLLX7A== dependencies: - "@next/env" "13.4.1" - "@swc/helpers" "0.5.1" + "@next/env" "14.2.3" + "@swc/helpers" "0.5.5" busboy "1.6.0" - caniuse-lite "^1.0.30001406" - postcss "8.4.14" + caniuse-lite "^1.0.30001579" + graceful-fs "^4.2.11" + postcss "8.4.31" styled-jsx "5.1.1" - zod "3.21.4" optionalDependencies: - "@next/swc-darwin-arm64" "13.4.1" - "@next/swc-darwin-x64" "13.4.1" - "@next/swc-linux-arm64-gnu" "13.4.1" - "@next/swc-linux-arm64-musl" "13.4.1" - "@next/swc-linux-x64-gnu" "13.4.1" - "@next/swc-linux-x64-musl" "13.4.1" - "@next/swc-win32-arm64-msvc" "13.4.1" - "@next/swc-win32-ia32-msvc" "13.4.1" - "@next/swc-win32-x64-msvc" "13.4.1" + "@next/swc-darwin-arm64" "14.2.3" + "@next/swc-darwin-x64" "14.2.3" + "@next/swc-linux-arm64-gnu" "14.2.3" + "@next/swc-linux-arm64-musl" "14.2.3" + "@next/swc-linux-x64-gnu" "14.2.3" + "@next/swc-linux-x64-musl" "14.2.3" + "@next/swc-win32-arm64-msvc" "14.2.3" + "@next/swc-win32-ia32-msvc" "14.2.3" + "@next/swc-win32-x64-msvc" "14.2.3" nice-try@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== -nise@^5.1.2: - version "5.1.4" - resolved "https://registry.yarnpkg.com/nise/-/nise-5.1.4.tgz#491ce7e7307d4ec546f5a659b2efe94a18b4bbc0" - integrity sha512-8+Ib8rRJ4L0o3kfmyVCL7gzrohyDe0cMFTBa2d364yIrEGMEoetznKJx899YxjybU6bL9SQkYPSBBs1gyYs8Xg== - dependencies: - "@sinonjs/commons" "^2.0.0" - "@sinonjs/fake-timers" "^10.0.2" - "@sinonjs/text-encoding" "^0.7.1" - just-extend "^4.0.2" - path-to-regexp "^1.7.0" - no-case@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" @@ -10016,10 +11535,15 @@ no-scroll@^2.1.1: node-abi@^3.3.0: version "3.45.0" resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.45.0.tgz#f568f163a3bfca5aacfce1fbeee1fa2cc98441f5" - integrity sha512-iwXuFrMAcFVi/ZoZiqq8BzAdsLw9kxDfTC0HMyjXfSL/6CSDAGD5UmR7azrAgWV1zKYq7dUUMj4owusBWKLsiQ== + integrity sha1-9WjxY6O/ylqs/OH77uH6LMmEQfU= dependencies: semver "^7.3.5" +node-abort-controller@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/node-abort-controller/-/node-abort-controller-3.1.1.tgz#a94377e964a9a37ac3976d848cb5c765833b8548" + integrity sha1-qUN36WSpo3rDl22EjLXHZYM7hUg= + node-cookie@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/node-cookie/-/node-cookie-2.1.2.tgz#4327c70e6a9bbe8c8ee86713bd9b534f655ec405" @@ -10029,11 +11553,19 @@ node-cookie@^2.1.2: cookie-signature "^1.1.0" simple-encryptor "^3.0.0" -node-domexception@1.0.0: +node-domexception@1.0.0, node-domexception@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5" integrity sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ== +node-fetch-commonjs@^3.3.1: + version "3.3.2" + resolved "https://registry.yarnpkg.com/node-fetch-commonjs/-/node-fetch-commonjs-3.3.2.tgz#0dd0fd4c4a314c5234f496ff7b5d9ce5a6c8feaa" + integrity sha1-DdD9TEoxTFI09Jb/e12c5abI/qo= + dependencies: + node-domexception "^1.0.0" + web-streams-polyfill "^3.0.3" + node-fetch@2.6.7, node-fetch@^2.6.7: version "2.6.7" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" @@ -10072,6 +11604,11 @@ node-plop@^0.31.0: title-case "^3.0.3" upper-case "^2.0.2" +node-releases@^2.0.14: + version "2.0.14" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" + integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== + node-releases@^2.0.3: version "2.0.5" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.5.tgz#280ed5bc3eba0d96ce44897d8aee478bfb3d9666" @@ -10171,6 +11708,11 @@ object-inspect@^1.12.0, object-inspect@^1.12.2, object-inspect@^1.9.0: resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea" integrity sha1-wGQfJjlFMvKKuNeWq5VOQ8AJqOo= +object-inspect@^1.12.3: + version "1.12.3" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" + integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== + object-is@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" @@ -10222,15 +11764,6 @@ object.entries@^1.1.6: define-properties "^1.1.4" es-abstract "^1.20.4" -object.fromentries@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.5.tgz#7b37b205109c21e741e605727fe8b0ad5fa08251" - integrity sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - object.fromentries@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.6.tgz#cdb04da08c539cffa912dcd368b886e0904bfa73" @@ -10240,13 +11773,15 @@ object.fromentries@^2.0.6: define-properties "^1.1.4" es-abstract "^1.20.4" -object.hasown@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.1.tgz#ad1eecc60d03f49460600430d97f23882cf592a3" - integrity sha512-LYLe4tivNQzq4JdaWW6WO3HMZZJWzkkH8fnI6EebWl0VZth2wL2Lovm74ep2/gZzlaTdV62JZHEqHQ2yVn8Q/A== +object.groupby@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.1.tgz#d41d9f3c8d6c778d9cbac86b4ee9f5af103152ee" + integrity sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ== dependencies: - define-properties "^1.1.4" - es-abstract "^1.19.5" + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" object.hasown@^1.1.2: version "1.1.2" @@ -10280,9 +11815,9 @@ oidc-token-hash@^5.0.1: integrity sha512-EvoOtz6FIEBzE+9q253HsLCVRiK/0doEJ2HCvvqMQb3dHZrP3WlJKYtJ55CRTw4jmYomzH4wkPuCj/I3ZvpKxQ== on-exit-leak-free@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/on-exit-leak-free/-/on-exit-leak-free-2.1.1.tgz#762dc7db809fa43303e64024f0ea0af54dd81294" - integrity sha512-IPTBZ175tI0sSg0ikDcCDfa5dPgcFbJgABsTHsY+Mkdm6Y2VKGuchubXSvTuu5tSPl4mqt53o3nLI74HTs8UgQ== + version "2.1.2" + resolved "https://registry.yarnpkg.com/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz#fed195c9ebddb7d9e4c3842f93f281ac8dadd3b8" + integrity sha1-/tGVyevdt9nkw4Qvk/KBrI2t07g= once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" @@ -10313,6 +11848,11 @@ open@^7.4.2: is-docker "^2.0.0" is-wsl "^2.1.1" +opener@^1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" + integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== + openid-client@^5.4.0: version "5.4.0" resolved "https://registry.yarnpkg.com/openid-client/-/openid-client-5.4.0.tgz#77f1cda14e2911446f16ea3f455fc7c405103eac" @@ -10335,17 +11875,17 @@ optionator@^0.8.1: type-check "~0.3.2" word-wrap "~1.2.3" -optionator@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" - integrity sha1-TyNqY3Pa4FZqbUPhMmZ09QwpFJk= +optionator@^0.9.3: + version "0.9.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" + integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== dependencies: + "@aashutoshrathi/word-wrap" "^1.2.3" deep-is "^0.1.3" fast-levenshtein "^2.0.6" levn "^0.4.1" prelude-ls "^1.2.1" type-check "^0.4.0" - word-wrap "^1.2.3" ora@^5.4.1: version "5.4.1" @@ -10523,6 +12063,11 @@ parse-json@^5.0.0, parse-json@^5.2.0: json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" +parse-numeric-range@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/parse-numeric-range/-/parse-numeric-range-1.3.0.tgz#7c63b61190d61e4d53a1197f0c83c47bb670ffa3" + integrity sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ== + parse5@^7.0.0, parse5@^7.1.1: version "7.1.2" resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.1.2.tgz#0736bebbfd77793823240a23b7fc5e010b7f8e32" @@ -10558,6 +12103,27 @@ patch-package@^7.0.0: tmp "^0.0.33" yaml "^2.2.2" +patch-package@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/patch-package/-/patch-package-8.0.0.tgz#d191e2f1b6e06a4624a0116bcb88edd6714ede61" + integrity sha1-0ZHi8bbgakYkoBFry4jt1nFO3mE= + dependencies: + "@yarnpkg/lockfile" "^1.1.0" + chalk "^4.1.2" + ci-info "^3.7.0" + cross-spawn "^7.0.3" + find-yarn-workspace-root "^2.0.0" + fs-extra "^9.0.0" + json-stable-stringify "^1.0.2" + klaw-sync "^6.0.0" + minimist "^1.2.6" + open "^7.4.2" + rimraf "^2.6.3" + semver "^7.5.3" + slash "^2.0.0" + tmp "^0.0.33" + yaml "^2.2.2" + path-case@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/path-case/-/path-case-3.0.4.tgz#9168645334eb942658375c56f80b4c0cb5f82c6f" @@ -10596,13 +12162,6 @@ path-parse@^1.0.7: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha1-+8EUtgykKzDZ2vWFjkvWi77bZzU= -path-to-regexp@^1.7.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a" - integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA== - dependencies: - isarray "0.0.1" - path-to-regexp@^6.1.0, path-to-regexp@^6.2.0: version "6.2.1" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-6.2.1.tgz#d54934d6798eb9e5ef14e7af7962c945906918e5" @@ -10620,6 +12179,11 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha1-hO0BwKe6OAr+CdkKjBgNzZ0DBDs= +pathe@^1.1.0, pathe@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/pathe/-/pathe-1.1.2.tgz#6c4cb47a945692e48a1ddd6e4094d170516437ec" + integrity sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ== + periscopic@^3.0.0: version "3.0.4" resolved "https://registry.yarnpkg.com/periscopic/-/periscopic-3.0.4.tgz#b3fbed0d1bc844976b977173ca2cd4a0ef4fa8d1" @@ -10633,7 +12197,7 @@ picocolors@^1.0.0: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" integrity sha1-y1vcdP8/UYkiNur3nWi8RFZKuBw= -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.0, picomatch@^2.3.1: +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha1-O6ODNzNkbZ0+SZWUbBNlpn+wekI= @@ -10661,7 +12225,7 @@ pify@^4.0.1: pino-abstract-transport@v1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/pino-abstract-transport/-/pino-abstract-transport-1.1.0.tgz#083d98f966262164504afb989bccd05f665937a8" - integrity sha512-lsleG3/2a/JIWUtf9Q5gUNErBqwIu1tUKTT3dUzaf5DySw9ra1wcqKjJjLX1VTY64Wk1eEOYsVGSaGfCK85ekA== + integrity sha1-CD2Y+WYmIWRQSvuYm8zQX2ZZN6g= dependencies: readable-stream "^4.0.0" split2 "^4.0.0" @@ -10669,12 +12233,12 @@ pino-abstract-transport@v1.1.0: pino-std-serializers@^6.0.0: version "6.2.2" resolved "https://registry.yarnpkg.com/pino-std-serializers/-/pino-std-serializers-6.2.2.tgz#d9a9b5f2b9a402486a5fc4db0a737570a860aab3" - integrity sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA== + integrity sha1-2am18rmkAkhqX8TbCnN1cKhgqrM= pino@^8.12.0: - version "8.15.3" - resolved "https://registry.yarnpkg.com/pino/-/pino-8.15.3.tgz#8d5d9b440f0218e8c03926d8f2e5bd0854c716eb" - integrity sha512-wDds1+DH8VaREe4fpLEKttGnDoLiX3KR3AP5bHsrRwEZ93y+Z/HFC03zkGSxpIGWKDHg24sloVqGcIWoLCkTLQ== + version "8.15.6" + resolved "https://registry.yarnpkg.com/pino/-/pino-8.15.6.tgz#55c361e3c4dadabbbb47543e0d3bf5759fe9c052" + integrity sha1-VcNh48Ta2ru7R1Q+DTv1dZ/pwFI= dependencies: atomic-sleep "^1.0.0" fast-redact "^3.1.1" @@ -10700,22 +12264,35 @@ pkg-dir@^4.2.0: dependencies: find-up "^4.0.0" +pkg-types@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/pkg-types/-/pkg-types-1.0.3.tgz#988b42ab19254c01614d13f4f65a2cfc7880f868" + integrity sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A== + dependencies: + jsonc-parser "^3.2.0" + mlly "^1.2.0" + pathe "^1.1.0" + playwright-core@1.33.0: version "1.33.0" resolved "https://registry.yarnpkg.com/playwright-core/-/playwright-core-1.33.0.tgz#269efe29a927cd6d144d05f3c2d2f72bd72447a1" integrity sha512-aizyPE1Cj62vAECdph1iaMILpT0WUDCq3E6rW6I+dleSbBoGbktvJtzS6VHkZ4DKNEOG9qJpiom/ZxO+S15LAw== -postcss-value-parser@^4.0.2: - version "4.2.0" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" - integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== +postcss@8.4.31: + version "8.4.31" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d" + integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ== + dependencies: + nanoid "^3.3.6" + picocolors "^1.0.0" + source-map-js "^1.0.2" -postcss@8.4.14: - version "8.4.14" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.14.tgz#ee9274d5622b4858c1007a74d76e42e56fd21caf" - integrity sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig== +postcss@^8.4.27: + version "8.4.33" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.33.tgz#1378e859c9f69bf6f638b990a0212f43e2aaa742" + integrity sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg== dependencies: - nanoid "^3.3.4" + nanoid "^3.3.7" picocolors "^1.0.0" source-map-js "^1.0.2" @@ -10734,7 +12311,7 @@ preact@^10.6.3: prebuild-install@^7.1.1: version "7.1.1" resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-7.1.1.tgz#de97d5b34a70a0c81334fd24641f2a1702352e45" - integrity sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw== + integrity sha1-3pfVs0pwoMgTNP0kZB8qFwI1LkU= dependencies: detect-libc "^2.0.0" expand-template "^2.0.3" @@ -10813,12 +12390,7 @@ pretty-format@^3.8.0: resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-3.8.0.tgz#bfbed56d5e9a776645f4b1ff7aa1a3ac4fa3c385" integrity sha512-WuxUnVtlWL1OfZFQFuqvnvs6MiAGk9UNsBostyBOB0Is9wb5uRESevA6rnl/rkksXaGX3GzZhPup5d6Vp1nFew== -prism-react-renderer@^1.1.1, prism-react-renderer@^1.2.1: - version "1.3.5" - resolved "https://registry.yarnpkg.com/prism-react-renderer/-/prism-react-renderer-1.3.5.tgz#786bb69aa6f73c32ba1ee813fbe17a0115435085" - integrity sha512-IJ+MSwBWKG+SM3b2SUfdrhC+gu01QkV2KmRQgREThBfSQRoufqRfxfHUxpG1WcaFjP+kojcFyO9Qqtpgt3qLCg== - -prismjs@^1.23.0, prismjs@^1.27.0: +prismjs@^1.27.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== @@ -10831,17 +12403,12 @@ prismjs@~1.27.0: process-warning@^2.0.0, process-warning@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/process-warning/-/process-warning-2.2.0.tgz#008ec76b579820a8e5c35d81960525ca64feb626" - integrity sha512-/1WZ8+VQjR6avWOgHeEPd7SDQmFQ1B5mC1eRXsCm5TarlNmx/wCsa5GEaxGm05BORRtyG/Ex/3xq3TuRvq57qg== + integrity sha1-AI7Ha1eYIKjlw12BlgUlymT+tiY= process@^0.11.10: version "0.11.10" resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== - -progress@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" - integrity sha1-foz42PW48jnBvGi+tOt4Vn1XLvg= + integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= promise-polyfill@^8.1.3: version "8.2.3" @@ -10856,7 +12423,7 @@ prompts@^2.0.1: kleur "^3.0.3" sisteransi "^1.0.5" -prop-types@^15.5.10, prop-types@^15.5.7, prop-types@^15.5.8, prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1: +prop-types@^15.5.10, prop-types@^15.5.7, prop-types@^15.5.8, prop-types@^15.6.2, prop-types@^15.8.1: version "15.8.1" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== @@ -10870,7 +12437,7 @@ property-expr@^2.0.4: resolved "https://registry.yarnpkg.com/property-expr/-/property-expr-2.0.5.tgz#278bdb15308ae16af3e3b9640024524f4dc02cb4" integrity sha512-IJUkICM5dP5znhCckHSv30Q4b5/JA5enCtkRHYaOVOAocnH/1BQEYTC5NMfT3AVl/iXKdr3aqQbQn9DxyWknwA== -property-information@^5.0.0, property-information@^5.3.0: +property-information@^5.0.0: version "5.6.0" resolved "https://registry.yarnpkg.com/property-information/-/property-information-5.6.0.tgz#61675545fb23002f245c6540ec46077d4da3ed69" integrity sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA== @@ -10893,7 +12460,7 @@ proxy-addr@^2.0.7: proxy-from-env@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" - integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + integrity sha1-4QLxbKNVQkhldV0sno6k8k1Yw+I= pseudomap@^1.0.2: version "1.0.2" @@ -10908,7 +12475,7 @@ psl@^1.1.33: pump@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + integrity sha1-tKIRaBW94vTh6mAjVOjHVWUQemQ= dependencies: end-of-stream "^1.1.0" once "^1.3.1" @@ -10948,7 +12515,7 @@ queue-microtask@^1.2.2: quick-format-unescaped@^4.0.3: version "4.0.4" resolved "https://registry.yarnpkg.com/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz#93ef6dd8d3453cbc7970dd614fad4c5954d6b5a7" - integrity sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg== + integrity sha1-k+9t2NNFPLx5cN1hT61MWVTWtac= quick-lru@^4.0.1: version "4.0.1" @@ -10963,12 +12530,22 @@ quick-lru@^5.1.1: ramda-adjunct@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/ramda-adjunct/-/ramda-adjunct-4.0.0.tgz#99873cc707e86207ec7e757385144b3f235b7c59" - integrity sha512-W/NiJAlZdwZ/iUkWEQQgRdH5Szqqet1WoVH9cdqDVjFbVaZHuJfJRvsxqHhvq6tZse+yVbFatLDLdVa30wBlGQ== + integrity sha1-mYc8xwfoYgfsfnVzhRRLPyNbfFk= + +ramda-adjunct@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ramda-adjunct/-/ramda-adjunct-4.1.1.tgz#085ca9a7bf19857378eff648f9852b15136dc66f" + integrity sha1-CFypp78ZhXN47/ZI+YUrFRNtxm8= ramda@~0.29.0: version "0.29.0" resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.29.0.tgz#fbbb67a740a754c8a4cbb41e2a6e0eb8507f55fb" - integrity sha512-BBea6L67bYLtdbOqfp8f58fPMqEwx0doL+pAi8TZyp2YWz8R9G8z9x75CZI8W+ftqhFHCpEX2cRnUUXK130iKA== + integrity sha1-+7tnp0CnVMiky7QeKm4OuFB/Vfs= + +ramda@~0.29.1: + version "0.29.1" + resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.29.1.tgz#408a6165b9555b7ba2fc62555804b6c5a2eca196" + integrity sha1-QIphZblVW3ui/GJVWAS2xaLsoZY= randexp@^0.5.3: version "0.5.3" @@ -10988,7 +12565,7 @@ randombytes@^2.1.0: rc@^1.2.7: version "1.2.8" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" - integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== + integrity sha1-zZJL9SAKB1uDwYjNa54hG3/A0+0= dependencies: deep-extend "^0.6.0" ini "~1.3.0" @@ -11054,7 +12631,7 @@ react-error-boundary@^3.1.4: react-error-boundary@^4.0.11: version "4.0.11" resolved "https://registry.yarnpkg.com/react-error-boundary/-/react-error-boundary-4.0.11.tgz#36bf44de7746714725a814630282fee83a7c9a1c" - integrity sha512-U13ul67aP5DOSPNSCWQ/eO0AQEYzEFkVljULQIjMV0KlffTAhxuDoBKdO0pb/JZ8mDhMKFZ9NZi0BmLGUiNphw== + integrity sha1-Nr9E3ndGcUclqBRjAoL+6Dp8mhw= dependencies: "@babel/runtime" "^7.12.5" @@ -11080,7 +12657,7 @@ react-is@^16.13.1, react-is@^16.7.0: resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha1-eJcppNw23imZ3BVt1sHZwYzqVqQ= -react-is@^17.0.0, react-is@^17.0.1: +react-is@^17.0.1: version "17.0.2" resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== @@ -11090,48 +12667,6 @@ react-is@^18.0.0: resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== -react-live@^2.2.3: - version "2.4.1" - resolved "https://registry.yarnpkg.com/react-live/-/react-live-2.4.1.tgz#65e674ff9ca9a9a95f83117acc21ffd968aca619" - integrity sha512-r+32f7oV/kBs3QZBRvaT+9vOkQW47UZrDpgwUe5FiIMOl7sdo5pmISgb7Zpj5PGHgY6XQaiXs3FEh+IWw3KbRg== - dependencies: - "@types/buble" "^0.20.0" - buble "0.19.6" - core-js "^3.14.0" - dom-iterator "^1.0.0" - prism-react-renderer "^1.2.1" - prop-types "^15.7.2" - react-simple-code-editor "^0.11.0" - unescape "^1.0.1" - -react-markdown@^6.0.2: - version "6.0.3" - resolved "https://registry.yarnpkg.com/react-markdown/-/react-markdown-6.0.3.tgz#625ec767fa321d91801129387e7d31ee0cb99254" - integrity sha512-kQbpWiMoBHnj9myLlmZG9T1JdoT/OEyHK7hqM6CqFT14MAkgWiWBUYijLyBmxbntaN6dCDicPcUhWhci1QYodg== - dependencies: - "@types/hast" "^2.0.0" - "@types/unist" "^2.0.3" - comma-separated-tokens "^1.0.0" - prop-types "^15.7.2" - property-information "^5.3.0" - react-is "^17.0.0" - remark-parse "^9.0.0" - remark-rehype "^8.0.0" - space-separated-tokens "^1.1.0" - style-to-object "^0.3.0" - unified "^9.0.0" - unist-util-visit "^2.0.0" - vfile "^4.0.0" - -react-pro-sidebar@1.0.0-alpha.7: - version "1.0.0-alpha.7" - resolved "https://registry.yarnpkg.com/react-pro-sidebar/-/react-pro-sidebar-1.0.0-alpha.7.tgz#4b6558b58c5db568a938c1d58a263eafd270c11b" - integrity sha512-6djCGLrLAHRQkdIWH7Vk1jdgYIQi2cxvEXD5tKToxwSbHaWvhe9l6pAxk9cmn9Xh1rYDxa5YEtfXLqAug5KGRg== - dependencies: - "@popperjs/core" "^2.11.6" - classnames "^2.3.2" - styled-components "^5.3.6" - react-pro-sidebar@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/react-pro-sidebar/-/react-pro-sidebar-1.0.0.tgz#c1836b06da2e4d9614c227e9276c149317f36494" @@ -11145,7 +12680,7 @@ react-pro-sidebar@^1.0.0: react-redux@^8.0.5: version "8.1.1" resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-8.1.1.tgz#8e740f3fd864a4cd0de5ba9cdc8ad39cc9e7c81a" - integrity sha512-5W0QaKtEhj+3bC0Nj0NkqkhIv8gLADH/2kYFMTHxCVqQILiWzLv6MaLuV5wJU3BQEdHKzTfcvPN0WMS6SC1oyA== + integrity sha1-jnQPP9hkpM0N5bqc3IrTnMnnyBo= dependencies: "@babel/runtime" "^7.12.1" "@types/hoist-non-react-statics" "^3.3.1" @@ -11154,6 +12689,14 @@ react-redux@^8.0.5: react-is "^18.0.0" use-sync-external-store "^1.0.0" +react-redux@^9.0.4: + version "9.1.0" + resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-9.1.0.tgz#46a46d4cfed4e534ce5452bb39ba18e1d98a8197" + integrity sha1-RqRtTP7U5TTOVFK7OboY4dmKgZc= + dependencies: + "@types/use-sync-external-store" "^0.0.3" + use-sync-external-store "^1.0.0" + react-responsive-carousel@3.2.10: version "3.2.10" resolved "https://registry.yarnpkg.com/react-responsive-carousel/-/react-responsive-carousel-3.2.10.tgz#2de13bdc131d78b8b92d3653d295a77d8c20cf2e" @@ -11163,11 +12706,6 @@ react-responsive-carousel@3.2.10: prop-types "^15.5.8" react-easy-swipe "^0.0.21" -react-simple-code-editor@^0.11.0: - version "0.11.3" - resolved "https://registry.yarnpkg.com/react-simple-code-editor/-/react-simple-code-editor-0.11.3.tgz#6e5af1c2e51588aded2c89b86e98fac144212f61" - integrity sha512-7bVI4Yd1aNCeuldErXUt8ksaAG5Fi+GZ6vp3mtFBnckKdzsQtrgkDvdwMFXIhwTGG+mUYmk5ZpMo0axSW9JBzA== - react-split@^2.0.14: version "2.0.14" resolved "https://registry.yarnpkg.com/react-split/-/react-split-2.0.14.tgz#ef198259bf43264d605f792fb3384f15f5b34432" @@ -11284,7 +12822,7 @@ read-yaml-file@^1.1.0: readable-stream@^3.1.1: version "3.6.2" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" - integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + integrity sha1-VqmzbqllwAxak+8x6xEaDxEFaWc= dependencies: inherits "^2.0.3" string_decoder "^1.1.1" @@ -11302,7 +12840,7 @@ readable-stream@^3.4.0: readable-stream@^4.0.0: version "4.4.2" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-4.4.2.tgz#e6aced27ad3b9d726d8308515b9a1b98dc1b9d13" - integrity sha512-Lk/fICSyIhodxy1IDK2HazkeGjSmezAWX2egdtJnYhtzKEsBPJowlI6F6LPb5tqIQILrMbx22S5o3GuJavPusA== + integrity sha1-5qztJ607nXJtgwhRW5obmNwbnRM= dependencies: abort-controller "^3.0.0" buffer "^6.0.3" @@ -11320,12 +12858,12 @@ readdirp@~3.6.0: reading-time@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/reading-time/-/reading-time-1.5.0.tgz#d2a7f1b6057cb2e169beaf87113cc3411b5bc5bb" - integrity sha1-0qfxtgV8suFpvq+HETzDQRtbxbs= + integrity sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg== real-require@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/real-require/-/real-require-0.2.0.tgz#209632dea1810be2ae063a6ac084fee7e33fba78" - integrity sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg== + integrity sha1-IJYy3qGBC+KuBjpqwIT+5+M/ung= rechoir@^0.6.2: version "0.6.2" @@ -11362,6 +12900,23 @@ redux@^4.1.2: dependencies: "@babel/runtime" "^7.9.2" +redux@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/redux/-/redux-5.0.1.tgz#97fa26881ce5746500125585d5642c77b6e9447b" + integrity sha1-l/omiBzldGUAElWF1WQsd7bpRHs= + +reflect.getprototypeof@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz#aaccbf41aca3821b87bb71d9dcbc7ad0ba50a3f3" + integrity sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + globalthis "^1.0.3" + which-builtin-type "^1.1.3" + refractor@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/refractor/-/refractor-3.6.0.tgz#ac318f5a0715ead790fcfb0c71f4dd83d977935a" @@ -11396,9 +12951,9 @@ regenerator-runtime@^0.13.11: regenerator-runtime@^0.14.0: version "0.14.0" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz#5e19d68eb12d486f797e15a3c6a918f7cec5eb45" - integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA== + integrity sha1-XhnWjrEtSG95fhWjxqkY987F60U= -regexp.prototype.flags@^1.4.1, regexp.prototype.flags@^1.4.3: +regexp.prototype.flags@^1.4.3: version "1.4.3" resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac" integrity sha1-h8qzD4D2ZmAYGju3v1mBqHKzZ6w= @@ -11407,12 +12962,16 @@ regexp.prototype.flags@^1.4.1, regexp.prototype.flags@^1.4.3: define-properties "^1.1.3" functions-have-names "^1.2.2" -regexpp@^3.1.0, regexpp@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" - integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== +regexp.prototype.flags@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz#90ce989138db209f81492edd734183ce99f9677e" + integrity sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + set-function-name "^2.0.0" -regexpu-core@^4.2.0, regexpu-core@^4.5.4: +regexpu-core@^4.5.4: version "4.8.0" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.8.0.tgz#e5605ba361b67b1718478501327502f4479a98f0" integrity sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg== @@ -11436,98 +12995,116 @@ regjsparser@^0.7.0: dependencies: jsesc "~0.5.0" -rehype-slug@^5.0.1: - version "5.1.0" - resolved "https://registry.yarnpkg.com/rehype-slug/-/rehype-slug-5.1.0.tgz#1f7e69be7ea1a2067bcc4cfe58e74c881d5c047e" - integrity sha512-Gf91dJoXneiorNEnn+Phx97CO7oRMrpi+6r155tTxzGuLtm+QrI4cTwCa9e1rtePdL4i9tSO58PeSS6HWfgsiw== +rehype-parse@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/rehype-parse/-/rehype-parse-9.0.0.tgz#3949faeec6f466ec57774215661e0d75469195d9" + integrity sha512-WG7nfvmWWkCR++KEkZevZb/uw41E8TsH4DsY9UxsTbIXCVGbAs4S+r8FrQ+OtH5EEQAs+5UxKC42VinkmpA1Yw== + dependencies: + "@types/hast" "^3.0.0" + hast-util-from-html "^2.0.0" + unified "^11.0.0" + +rehype-pretty-code@0.13.0: + version "0.13.0" + resolved "https://registry.yarnpkg.com/rehype-pretty-code/-/rehype-pretty-code-0.13.0.tgz#e7de5217af907b2ff32ea441827c0b7ccdfc079b" + integrity sha512-+22dz1StXlF7dlMyOySNaVxgcGhMI4BCxq0JxJJPWYGiKsI6cu5jyuIKGHXHvH18D8sv1rdKtvsY9UEfN3++SQ== + dependencies: + "@types/hast" "^3.0.4" + hast-util-to-string "^3.0.0" + parse-numeric-range "^1.3.0" + rehype-parse "^9.0.0" + unified "^11.0.4" + unist-util-visit "^5.0.0" + +rehype-slug@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/rehype-slug/-/rehype-slug-6.0.0.tgz#1d21cf7fc8a83ef874d873c15e6adaee6344eaf1" + integrity sha512-lWyvf/jwu+oS5+hL5eClVd3hNdmwM1kAC0BUvEGD19pajQMIzcNUd/k9GsfQ+FfECvX+JE+e9/btsKH0EjJT6A== dependencies: - "@types/hast" "^2.0.0" + "@types/hast" "^3.0.0" github-slugger "^2.0.0" - hast-util-has-property "^2.0.0" - hast-util-heading-rank "^2.0.0" - hast-util-to-string "^2.0.0" - unified "^10.0.0" - unist-util-visit "^4.0.0" - -remark-directive@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/remark-directive/-/remark-directive-2.0.1.tgz#1c32d9df8d839a75ba3478112d21fe883635b48e" - integrity sha512-oosbsUAkU/qmUE78anLaJePnPis4ihsE7Agp0T/oqTzvTea8pOiaYEtfInU/+xMOVTS9PN5AhGOiaIVe4GD8gw== - dependencies: - "@types/mdast" "^3.0.0" - mdast-util-directive "^2.0.0" - micromark-extension-directive "^2.0.0" - unified "^10.0.0" + hast-util-heading-rank "^3.0.0" + hast-util-to-string "^3.0.0" + unist-util-visit "^5.0.0" -remark-gfm@3.0.1, remark-gfm@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/remark-gfm/-/remark-gfm-3.0.1.tgz#0b180f095e3036545e9dddac0e8df3fa5cfee54f" - integrity sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig== +rehype-stringify@10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/rehype-stringify/-/rehype-stringify-10.0.0.tgz#2031cf6fdd0355393706f0474ec794c75e5492f2" + integrity sha512-1TX1i048LooI9QoecrXy7nGFFbFSufxVRAfc6Y9YMRAi56l+oB0zP51mLSV312uRuvVLPV1opSlJmslozR1XHQ== dependencies: - "@types/mdast" "^3.0.0" - mdast-util-gfm "^2.0.0" - micromark-extension-gfm "^2.0.0" - unified "^10.0.0" + "@types/hast" "^3.0.0" + hast-util-to-html "^9.0.0" + unified "^11.0.0" -remark-mdx@^2.0.0, remark-mdx@^2.1.5: - version "2.1.5" - resolved "https://registry.yarnpkg.com/remark-mdx/-/remark-mdx-2.1.5.tgz#69b19ec42d30a289e0663c3fc7656ebdca0a8d8e" - integrity sha512-A8vw5s+BgOa968Irt8BO7DfWJTE0Fe7Ge3hX8zzDB1DnwMZTNdK6qF2IcFao+/7nzk1vSysKcFp+3ku4vhMpaQ== +remark-directive@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/remark-directive/-/remark-directive-3.0.0.tgz#34452d951b37e6207d2e2a4f830dc33442923268" + integrity sha512-l1UyWJ6Eg1VPU7Hm/9tt0zKtReJQNOA4+iDMAxTyZNWnJnFlbS/7zhiel/rogTLQ2vMYwDzSJa4BiVNqGlqIMA== dependencies: - mdast-util-mdx "^2.0.0" - micromark-extension-mdxjs "^1.0.0" + "@types/mdast" "^4.0.0" + mdast-util-directive "^3.0.0" + micromark-extension-directive "^3.0.0" + unified "^11.0.0" -remark-parse@^10.0.0, remark-parse@^10.0.1: - version "10.0.1" - resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-10.0.1.tgz#6f60ae53edbf0cf38ea223fe643db64d112e0775" - integrity sha1-b2CuU+2/DPOOoiP+ZD22TREuB3U= +remark-gfm@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/remark-gfm/-/remark-gfm-4.0.0.tgz#aea777f0744701aa288b67d28c43565c7e8c35de" + integrity sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA== dependencies: - "@types/mdast" "^3.0.0" - mdast-util-from-markdown "^1.0.0" - unified "^10.0.0" + "@types/mdast" "^4.0.0" + mdast-util-gfm "^3.0.0" + micromark-extension-gfm "^3.0.0" + remark-parse "^11.0.0" + remark-stringify "^11.0.0" + unified "^11.0.0" -remark-parse@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-9.0.0.tgz#4d20a299665880e4f4af5d90b7c7b8a935853640" - integrity sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw== +remark-mdx@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/remark-mdx/-/remark-mdx-3.0.0.tgz#146905a3925b078970e05fc89b0e16b9cc3bfddd" + integrity sha512-O7yfjuC6ra3NHPbRVxfflafAj3LTwx3b73aBvkEFU5z4PsD6FD4vrqJAkE5iNGLz71GdjXfgRqm3SQ0h0VuE7g== dependencies: - mdast-util-from-markdown "^0.8.0" + mdast-util-mdx "^3.0.0" + micromark-extension-mdxjs "^3.0.0" -remark-rehype@^10.0.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/remark-rehype/-/remark-rehype-10.1.0.tgz#32dc99d2034c27ecaf2e0150d22a6dcccd9a6279" - integrity sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw== +remark-parse@^11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-11.0.0.tgz#aa60743fcb37ebf6b069204eb4da304e40db45a1" + integrity sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA== dependencies: - "@types/hast" "^2.0.0" - "@types/mdast" "^3.0.0" - mdast-util-to-hast "^12.1.0" - unified "^10.0.0" + "@types/mdast" "^4.0.0" + mdast-util-from-markdown "^2.0.0" + micromark-util-types "^2.0.0" + unified "^11.0.0" -remark-rehype@^8.0.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/remark-rehype/-/remark-rehype-8.1.0.tgz#610509a043484c1e697437fa5eb3fd992617c945" - integrity sha512-EbCu9kHgAxKmW1yEYjx3QafMyGY3q8noUbNUI5xyKbaFP89wbhDrKxyIQNukNYthzjNHZu6J7hwFg7hRm1svYA== +remark-rehype@11.1.0, remark-rehype@^11.0.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/remark-rehype/-/remark-rehype-11.1.0.tgz#d5f264f42bcbd4d300f030975609d01a1697ccdc" + integrity sha512-z3tJrAs2kIs1AqIIy6pzHmAHlF1hWQ+OdY4/hv+Wxe35EhyLKcajL33iUEn3ScxtFox9nUvRufR/Zre8Q08H/g== dependencies: - mdast-util-to-hast "^10.2.0" + "@types/hast" "^3.0.0" + "@types/mdast" "^4.0.0" + mdast-util-to-hast "^13.0.0" + unified "^11.0.0" + vfile "^6.0.0" -remark-stringify@^10.0.0, remark-stringify@^10.0.2: - version "10.0.2" - resolved "https://registry.yarnpkg.com/remark-stringify/-/remark-stringify-10.0.2.tgz#50414a6983f5008eb9e72eed05f980582d1f69d7" - integrity sha512-6wV3pvbPvHkbNnWB0wdDvVFHOe1hBRAx1Q/5g/EpH4RppAII6J8Gnwe7VbHuXaoKIF6LAg6ExTel/+kNqSQ7lw== +remark-stringify@^11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/remark-stringify/-/remark-stringify-11.0.0.tgz#4c5b01dd711c269df1aaae11743eb7e2e7636fd3" + integrity sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw== dependencies: - "@types/mdast" "^3.0.0" - mdast-util-to-markdown "^1.0.0" - unified "^10.0.0" + "@types/mdast" "^4.0.0" + mdast-util-to-markdown "^2.0.0" + unified "^11.0.0" -remark@^14.0.2: - version "14.0.2" - resolved "https://registry.yarnpkg.com/remark/-/remark-14.0.2.tgz#4a1833f7441a5c29e44b37bb1843fb820797b40f" - integrity sha512-A3ARm2V4BgiRXaUo5K0dRvJ1lbogrbXnhkJRmD0yw092/Yl0kOCZt1k9ZeElEwkZsWGsMumz6qL5MfNJH9nOBA== +remark@^15.0.1: + version "15.0.1" + resolved "https://registry.yarnpkg.com/remark/-/remark-15.0.1.tgz#ac7e7563260513b66426bc47f850e7aa5862c37c" + integrity sha512-Eht5w30ruCXgFmxVUSlNWQ9iiimq07URKeFS3hNc8cUWy1llX4KDWfyEDZRycMc+znsN9Ux5/tJ/BFdgdOwA3A== dependencies: - "@types/mdast" "^3.0.0" - remark-parse "^10.0.0" - remark-stringify "^10.0.0" - unified "^10.0.0" + "@types/mdast" "^4.0.0" + remark-parse "^11.0.0" + remark-stringify "^11.0.0" + unified "^11.0.0" remarkable@^2.0.1: version "2.0.1" @@ -11570,7 +13147,12 @@ requires-port@^1.0.0: reselect@^4.1.8: version "4.1.8" resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.1.8.tgz#3f5dc671ea168dccdeb3e141236f69f02eaec524" - integrity sha512-ab9EmR80F/zQTMNeneUr4cv+jSwPJgIlvEmVwLerwrWVbpLlBuls9XHzIeTFy4cegU2NHBp3va0LKOzU5qFEYQ== + integrity sha1-P13GceoWjczes+FBI29p8C6uxSQ= + +reselect@^5.0.1: + version "5.1.0" + resolved "https://registry.yarnpkg.com/reselect/-/reselect-5.1.0.tgz#c479139ab9dd91be4d9c764a7f3868210ef8cd21" + integrity sha1-xHkTmrndkb5NnHZKfzhoIQ74zSE= resize-observer-polyfill@1.5.1: version "1.5.1" @@ -11606,6 +13188,11 @@ resolve-global@^1.0.0: dependencies: global-dirs "^0.1.1" +resolve-pkg-maps@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#616b3dc2c57056b5588c31cdf4b3d64db133720f" + integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw== + resolve.exports@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.0.tgz#5ce842b94b05146c0e03076985d1d0e7e48c90c9" @@ -11638,7 +13225,16 @@ resolve@^1.19.0, resolve@^1.22.0, resolve@^1.22.1: path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" -resolve@^2.0.0-next.3, resolve@^2.0.0-next.4: +resolve@^1.22.4: + version "1.22.8" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +resolve@^2.0.0-next.4: version "2.0.0-next.4" resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.4.tgz#3d37a113d6429f496ec4752d2a2e58efb1fd4660" integrity sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ== @@ -11701,10 +13297,17 @@ robust-predicates@^3.0.0: resolved "https://registry.yarnpkg.com/robust-predicates/-/robust-predicates-3.0.1.tgz#ecde075044f7f30118682bd9fb3f123109577f9a" integrity sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g== +rollup@^3.27.1: + version "3.29.4" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.29.4.tgz#4d70c0f9834146df8705bfb69a9a19c9e1109981" + integrity sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw== + optionalDependencies: + fsevents "~2.3.2" + rtl-css-js@^1.16.1: version "1.16.1" resolved "https://registry.yarnpkg.com/rtl-css-js/-/rtl-css-js-1.16.1.tgz#4b48b4354b0ff917a30488d95100fbf7219a3e80" - integrity sha512-lRQgou1mu19e+Ya0LsTvKrVJ5TYUbqCVPAiImX3UfLTenarvPUl1QFdvu5Z3PYmHT9RCcwIfbjRQBntExyj3Zg== + integrity sha1-S0i0NUsP+RejBIjZUQD79yGaPoA= dependencies: "@babel/runtime" "^7.1.2" @@ -11739,14 +13342,17 @@ rxjs@^7.5.5: dependencies: tslib "^2.1.0" -sade@^1.7.3: - version "1.8.1" - resolved "https://registry.yarnpkg.com/sade/-/sade-1.8.1.tgz#0a78e81d658d394887be57d2a409bf703a3b2701" - integrity sha1-CnjoHWWNOUiHvlfSpAm/cDo7JwE= +safe-array-concat@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.0.1.tgz#91686a63ce3adbea14d61b14c99572a8ff84754c" + integrity sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q== dependencies: - mri "^1.1.0" + call-bind "^1.0.2" + get-intrinsic "^1.2.1" + has-symbols "^1.0.3" + isarray "^2.0.5" -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0: +safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha1-Hq+fqb2x/dTsdfWPnNtOa3gn7sY= @@ -11768,14 +13374,14 @@ safe-regex-test@^1.0.0: safe-regex2@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/safe-regex2/-/safe-regex2-2.0.0.tgz#b287524c397c7a2994470367e0185e1916b1f5b9" - integrity sha512-PaUSFsUaNNuKwkBijoAPHAK6/eM6VirvyPWlZ7BAQy4D+hCvh4B6lIG+nPdhbFfIbP+gTGBcrdsOaUs0F+ZBOQ== + integrity sha1-sodSTDl8eimURwNn4BheGRax9bk= dependencies: ret "~0.2.0" safe-stable-stringify@^2.3.1: version "2.4.3" resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz#138c84b6f6edb3db5f8ef3ef7115b8f55ccbf886" - integrity sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g== + integrity sha1-E4yEtvbts9tfjvPvcRW49VzL+IY= "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": version "2.1.2" @@ -11812,19 +13418,19 @@ section-matter@^1.0.0: secure-json-parse@^2.5.0: version "2.7.0" resolved "https://registry.yarnpkg.com/secure-json-parse/-/secure-json-parse-2.7.0.tgz#5a5f9cd6ae47df23dba3151edd06855d47e09862" - integrity sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw== + integrity sha1-Wl+c1q5H3yPboxUe3QaFXUfgmGI= "semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.6.0: version "5.7.2" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== -semver@^6.0.0, semver@^6.3.0: +semver@^6.0.0, semver@^6.3.0, semver@^6.3.1: version "6.3.1" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.2.1, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.5.0: +semver@^7.3.4, semver@^7.3.5, semver@^7.5.0, semver@^7.5.3, semver@^7.5.4: version "7.5.4" resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== @@ -11847,6 +13453,11 @@ serialize-error@^8.1.0: dependencies: type-fest "^0.20.2" +server-only@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/server-only/-/server-only-0.0.1.tgz#0f366bb6afb618c37c9255a314535dc412cd1c9e" + integrity sha512-qepMx2JxAa5jjfzxG79yPPq+8BuFToHd1hm7kI+Z4zAq1ftQiP7HcxMhDDItrbtwVeLg/cY2JnKnrcFkmiswNA== + set-blocking@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" @@ -11855,13 +13466,38 @@ set-blocking@^2.0.0: set-cookie-parser@^2.4.1: version "2.6.0" resolved "https://registry.yarnpkg.com/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz#131921e50f62ff1a66a461d7d62d7b21d5d15a51" - integrity sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ== + integrity sha1-Exkh5Q9i/xpmpGHX1i17IdXRWlE= set-cookie-parser@^2.4.6: version "2.5.1" resolved "https://registry.yarnpkg.com/set-cookie-parser/-/set-cookie-parser-2.5.1.tgz#ddd3e9a566b0e8e0862aca974a6ac0e01349430b" integrity sha512-1jeBGaKNGdEq4FgIrORu/N570dwoPYio8lSoYLWmX7sQ//0JY08Xh9o5pBcgmHQ/MbsYp/aZnOe1s1lIsbLprQ== +set-function-length@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.0.tgz#2f81dc6c16c7059bda5ab7c82c11f03a515ed8e1" + integrity sha1-L4HcbBbHBZvaWrfILBHwOlFe2OE= + dependencies: + define-data-property "^1.1.1" + function-bind "^1.1.2" + get-intrinsic "^1.2.2" + gopd "^1.0.1" + has-property-descriptors "^1.0.1" + +set-function-name@^2.0.0, set-function-name@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" + integrity sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA== + dependencies: + define-data-property "^1.0.1" + functions-have-names "^1.2.3" + has-property-descriptors "^1.0.0" + +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha1-ZsmiSnP5/CjL5msJ/tPTPcrxtCQ= + sha.js@^2.4.11: version "2.4.11" resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" @@ -11870,11 +13506,6 @@ sha.js@^2.4.11: inherits "^2.0.1" safe-buffer "^5.0.1" -shallowequal@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" - integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== - shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" @@ -11913,10 +13544,22 @@ shelljs@^0.8.5: interpret "^1.0.0" rechoir "^0.6.2" +shiki@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/shiki/-/shiki-1.1.1.tgz#6ee89e14f79f0318dcb4bbe6513382c80b5afd4f" + integrity sha512-7ksyiu01NltBvEcLq9GcguF+7RGa5lDwozjgdbiXnlkro1FtMCcrVtHUWbKuYBSOZW74gC4KlnBcgRCwK2ERAw== + dependencies: + "@shikijs/core" "1.1.1" + short-unique-id@^4.4.4: version "4.4.4" resolved "https://registry.yarnpkg.com/short-unique-id/-/short-unique-id-4.4.4.tgz#a45df68303bbd2dbb5785ed7708e891809c9cb7a" - integrity sha512-oLF1NCmtbiTWl2SqdXZQbo5KM1b7axdp0RgQLq8qCBBLoq+o3A5wmLrNM6bZIh54/a8BJ3l69kTXuxwZ+XCYuw== + integrity sha1-pF32gwO70tu1eF7XcI6JGAnJy3o= + +short-unique-id@^5.0.2: + version "5.0.3" + resolved "https://registry.yarnpkg.com/short-unique-id/-/short-unique-id-5.0.3.tgz#bc6975dc5e8b296960ff5ac91ddabbc7ddb693d9" + integrity sha1-vGl13F6LKWlg/1rJHdq7x922k9k= side-channel@^1.0.4: version "1.0.4" @@ -11935,7 +13578,7 @@ signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: simple-concat@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" - integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== + integrity sha1-9Gl2CCujXCJj8cirXt/ibEHJVS8= simple-encryptor@^3.0.0: version "3.0.0" @@ -11947,23 +13590,20 @@ simple-encryptor@^3.0.0: simple-get@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-4.0.1.tgz#4a39db549287c979d352112fa03fd99fd6bc3543" - integrity sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA== + integrity sha1-SjnbVJKHyXnTUhEvoD/Zn9a8NUM= dependencies: decompress-response "^6.0.0" once "^1.3.1" simple-concat "^1.0.0" -sinon@^14.0.2: - version "14.0.2" - resolved "https://registry.yarnpkg.com/sinon/-/sinon-14.0.2.tgz#585a81a3c7b22cf950762ac4e7c28eb8b151c46f" - integrity sha512-PDpV0ZI3ZCS3pEqx0vpNp6kzPhHrLx72wA0G+ZLaaJjLIYeE0n8INlgaohKuGy7hP0as5tbUd23QWu5U233t+w== +sirv@^1.0.7: + version "1.0.19" + resolved "https://registry.yarnpkg.com/sirv/-/sirv-1.0.19.tgz#1d73979b38c7fe91fcba49c85280daa9c2363b49" + integrity sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ== dependencies: - "@sinonjs/commons" "^2.0.0" - "@sinonjs/fake-timers" "^9.1.2" - "@sinonjs/samsam" "^7.0.1" - diff "^5.0.0" - nise "^5.1.2" - supports-color "^7.2.0" + "@polka/url" "^1.0.0-next.20" + mrmime "^1.0.0" + totalist "^1.0.0" sisteransi@^1.0.5: version "1.0.5" @@ -12032,9 +13672,9 @@ snake-case@^3.0.4: tslib "^2.0.3" sonic-boom@^3.1.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-3.4.0.tgz#8582d1385ea3bf79ca953329043bfbdbabe58eb9" - integrity sha512-zSe9QQW30nPzjkSJ0glFQO5T9lHsk39tz+2bAAwCj8CNgEG8ItZiX7Wb2ZgA8I04dwRGCcf1m3ABJa8AYm12Fw== + version "3.6.0" + resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-3.6.0.tgz#24b9b45cee54910701dc6a80025d7c621f685aac" + integrity sha1-JLm0XO5UkQcB3GqAAl18Yh9oWqw= dependencies: atomic-sleep "^1.0.0" @@ -12051,10 +13691,10 @@ source-map-support@0.5.13: buffer-from "^1.0.0" source-map "^0.6.0" -source-map-support@^0.5.17: +source-map-support@^0.5.17, source-map-support@^0.5.21: version "0.5.21" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" - integrity sha1-BP58f54e0tZiIzwoyys1ufY/bk8= + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== dependencies: buffer-from "^1.0.0" source-map "^0.6.0" @@ -12079,7 +13719,7 @@ sourcemap-codec@^1.4.8: resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== -space-separated-tokens@^1.0.0, space-separated-tokens@^1.1.0: +space-separated-tokens@^1.0.0: version "1.1.5" resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz#85f32c3d10d9682007e917414ddc5c26d1aa6899" integrity sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA== @@ -12136,7 +13776,7 @@ split.js@^1.6.0: split2@^4.0.0: version "4.2.0" resolved "https://registry.yarnpkg.com/split2/-/split2-4.2.0.tgz#c9c5920904d148bab0b9f67145f245a86aadbfa4" - integrity sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg== + integrity sha1-ycWSCQTRSLqwufZxRfJFqGqtv6Q= sprintf-js@~1.0.2: version "1.0.3" @@ -12153,9 +13793,9 @@ stack-utils@^2.0.3: stampit@^4.3.2: version "4.3.2" resolved "https://registry.yarnpkg.com/stampit/-/stampit-4.3.2.tgz#cfd3f607dd628a161ce6305621597994b4d56573" - integrity sha512-pE2org1+ZWQBnIxRPrBM2gVupkuDD0TTNIo1H6GdT/vO82NXli2z8lRE8cu/nBIHrcOCXFBAHpb9ZldrB2/qOA== + integrity sha1-z9P2B91iihYc5jBWIVl5lLTVZXM= -statuses@^2.0.0: +statuses@2.0.1, statuses@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" integrity sha1-VcsADM8dSHKL0jxoWgY5mM8aG2M= @@ -12179,6 +13819,11 @@ strict-event-emitter@^0.2.4, strict-event-emitter@^0.2.6: dependencies: events "^3.3.0" +strict-event-emitter@^0.4.3: + version "0.4.6" + resolved "https://registry.yarnpkg.com/strict-event-emitter/-/strict-event-emitter-0.4.6.tgz#ff347c8162b3e931e3ff5f02cfce6772c3b07eb3" + integrity sha512-12KWeb+wixJohmnwNFerbyiBrAlq5qJLwIt38etRtKtmmHyDSoGlIqFE9wx+4IwG0aDjI7GV8tc8ZccjWZZtTg== + string-argv@^0.3.1: version "0.3.1" resolved "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" @@ -12195,7 +13840,7 @@ string-length@^4.0.1: string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha1-JpxxF9J7Ba0uU2gwqOyJXvnG0BA= + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== dependencies: emoji-regex "^8.0.0" is-fullwidth-code-point "^3.0.0" @@ -12210,19 +13855,14 @@ string-width@^5.0.0: emoji-regex "^9.2.2" strip-ansi "^7.0.1" -string.prototype.matchall@^4.0.7: - version "4.0.7" - resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz#8e6ecb0d8a1fb1fda470d81acecb2dba057a481d" - integrity sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg== +string-width@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-6.1.0.tgz#96488d6ed23f9ad5d82d13522af9e4c4c3fd7518" + integrity sha512-k01swCJAgQmuADB0YIc+7TuatfNvTBVOoaUWJjTB9R4VJzR5vNWzf5t42ESVZFPS8xTySF7CAdV4t/aaIm3UnQ== dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - get-intrinsic "^1.1.1" - has-symbols "^1.0.3" - internal-slot "^1.0.3" - regexp.prototype.flags "^1.4.1" - side-channel "^1.0.4" + eastasianwidth "^0.2.0" + emoji-regex "^10.2.1" + strip-ansi "^7.0.1" string.prototype.matchall@^4.0.8: version "4.0.8" @@ -12247,6 +13887,15 @@ string.prototype.padend@^3.0.0: define-properties "^1.1.4" es-abstract "^1.20.4" +string.prototype.trim@^1.2.8: + version "1.2.8" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz#f9ac6f8af4bd55ddfa8895e6aea92a96395393bd" + integrity sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + string.prototype.trimend@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz#914a65baaab25fbdd4ee291ca7dde57e869cb8d0" @@ -12256,6 +13905,15 @@ string.prototype.trimend@^1.0.5: define-properties "^1.1.4" es-abstract "^1.19.5" +string.prototype.trimend@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz#1bb3afc5008661d73e2dc015cd4853732d6c471e" + integrity sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + string.prototype.trimstart@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz#5466d93ba58cfa2134839f81d7f42437e8c01fef" @@ -12265,6 +13923,15 @@ string.prototype.trimstart@^1.0.5: define-properties "^1.1.4" es-abstract "^1.19.5" +string.prototype.trimstart@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz#d4cdb44b83a4737ffbac2d406e405d43d0184298" + integrity sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + string_decoder@^1.1.1, string_decoder@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" @@ -12283,7 +13950,7 @@ stringify-entities@^4.0.0: strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha1-nibGPTD1NEPpSJSVshBdN7Z6hdk= + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== dependencies: ansi-regex "^5.0.1" @@ -12333,7 +14000,7 @@ strip-indent@^4.0.0: dependencies: min-indent "^1.0.1" -strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: +strip-json-comments@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha1-MfEoGzgyYwQ0gxwxDAHMzajL4AY= @@ -12341,35 +14008,26 @@ strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== + integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= strnum@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/strnum/-/strnum-1.0.5.tgz#5c4e829fe15ad4ff0d20c3db5ac97b73c9b072db" - integrity sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA== + integrity sha1-XE6Cn+Fa1P8NIMPbWsl7c8mwcts= -style-to-object@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-0.3.0.tgz#b1b790d205991cc783801967214979ee19a76e46" - integrity sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA== +style-to-object@^0.4.0: + version "0.4.4" + resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-0.4.4.tgz#266e3dfd56391a7eefb7770423612d043c3f33ec" + integrity sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg== dependencies: inline-style-parser "0.1.1" -styled-components@^5.3.6: - version "5.3.6" - resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-5.3.6.tgz#27753c8c27c650bee9358e343fc927966bfd00d1" - integrity sha512-hGTZquGAaTqhGWldX7hhfzjnIYBZ0IXQXkCYdvF1Sq3DsUaLx6+NTHC5Jj1ooM2F68sBiVz3lvhfwQs/S3l6qg== - dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/traverse" "^7.4.5" - "@emotion/is-prop-valid" "^1.1.0" - "@emotion/stylis" "^0.8.4" - "@emotion/unitless" "^0.7.4" - babel-plugin-styled-components ">= 1.12.0" - css-to-react-native "^3.0.0" - hoist-non-react-statics "^3.0.0" - shallowequal "^1.1.0" - supports-color "^5.5.0" +style-to-object@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-1.0.5.tgz#5e918349bc3a39eee3a804497d97fcbbf2f0d7c0" + integrity sha512-rDRwHtoDD3UMMrmZ6BzOW0naTjMsVZLIjsGleSKS/0Oz+cgCfAPRspaqJuE8rDzpKha/nEvnM0IF4seEAZUTKQ== + dependencies: + inline-style-parser "0.2.2" styled-jsx@5.1.1: version "5.1.1" @@ -12386,16 +14044,16 @@ stylis@4.1.3, stylis@^4.1.2: stylis@^4.2.0: version "4.3.0" resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.3.0.tgz#abe305a669fc3d8777e10eefcfc73ad861c5588c" - integrity sha512-E87pIogpwUsUwXw7dNyU4QDjdgVMy52m+XEOPEKUn161cCzWjjhPSQhByfd1CcNvrOLnXQ6OnnZDwnJrz/Z4YQ== + integrity sha1-q+MFpmn8PYd34Q7vz8c62GHFWIw= -supports-color@^5.3.0, supports-color@^5.5.0: +supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" integrity sha1-4uaaRKyHcveKHsCzW2id9lMO/I8= dependencies: has-flag "^3.0.0" -supports-color@^7.1.0, supports-color@^7.2.0: +supports-color@^7.1.0: version "7.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" integrity sha1-G33NyzK4E4gBs+R4umpRyqiWSNo= @@ -12422,7 +14080,7 @@ supports-preserve-symlinks-flag@^1.0.0: swagger-client@^3.19.10: version "3.19.10" resolved "https://registry.yarnpkg.com/swagger-client/-/swagger-client-3.19.10.tgz#90bff7d901d0676625d880a842b2f54d79262ece" - integrity sha512-r+uGryGdxYQf7Aa9WzK226RigDaWAutDqP903O1QFA47jnJZ5RCkaV3X8nadXkNoZRlsZv8sEKOB8UoDY99BBA== + integrity sha1-kL/32QHQZ2Yl2ICoQrL1TXkmLs4= dependencies: "@babel/runtime-corejs3" "^7.20.13" "@swagger-api/apidom-core" ">=0.70.1 <1.0.0" @@ -12442,10 +14100,32 @@ swagger-client@^3.19.10: traverse "~0.6.6" url "~0.11.0" +swagger-client@^3.25.0: + version "3.25.0" + resolved "https://registry.yarnpkg.com/swagger-client/-/swagger-client-3.25.0.tgz#c59b181bed7172475d275487e6ab8365bd3f06ec" + integrity sha1-xZsYG+1xckddJ1SH5quDZb0/Buw= + dependencies: + "@babel/runtime-corejs3" "^7.22.15" + "@swagger-api/apidom-core" ">=0.90.0 <1.0.0" + "@swagger-api/apidom-error" ">=0.90.0 <1.0.0" + "@swagger-api/apidom-json-pointer" ">=0.90.0 <1.0.0" + "@swagger-api/apidom-ns-openapi-3-1" ">=0.90.0 <1.0.0" + "@swagger-api/apidom-reference" ">=0.90.0 <1.0.0" + cookie "~0.6.0" + deepmerge "~4.3.0" + fast-json-patch "^3.0.0-1" + is-plain-object "^5.0.0" + js-yaml "^4.1.0" + node-abort-controller "^3.1.1" + node-fetch-commonjs "^3.3.1" + qs "^6.10.2" + traverse "~0.6.6" + undici "^5.24.0" + swagger-ui-react@^5.0.0: version "5.1.0" resolved "https://registry.yarnpkg.com/swagger-ui-react/-/swagger-ui-react-5.1.0.tgz#c89af42f2da23a37e7e80d3e18ca77e2558c7a26" - integrity sha512-ivbw72f6mUZ431H4OC3cMhJy+ONBlmQ81TNAt7DKkUCW6nG+GboHCpLF1SXPCstzUskbAuZq0hOk3BuKb20pSA== + integrity sha1-yJr0Ly2iOjfn6A0+GMp34lWMeiY= dependencies: "@babel/runtime-corejs3" "^7.22.5" "@braintree/sanitize-url" "=6.0.2" @@ -12482,12 +14162,45 @@ swagger-ui-react@^5.0.0: xml-but-prettier "^1.0.1" zenscroll "^4.0.2" -swr@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/swr/-/swr-2.1.2.tgz#15841cf5bbb8b20f24e2408193f616a41b6734a0" - integrity sha512-ocfaD2rnYZKqTDplCEX2bH5Z1++n2JSej9oYi7hVfXXWYm+0RP+H6fVrogWB0mtMclv1guk9kEnAzNLygOy9Hw== +swagger-ui-react@^5.11.0: + version "5.11.0" + resolved "https://registry.yarnpkg.com/swagger-ui-react/-/swagger-ui-react-5.11.0.tgz#ed50f61ce7aa2c322b3a2435f2aa38396668431d" + integrity sha1-7VD2HOeqLDIrOiQ18qo4OWZoQx0= dependencies: - use-sync-external-store "^1.2.0" + "@babel/runtime-corejs3" "^7.23.7" + "@braintree/sanitize-url" "=7.0.0" + base64-js "^1.5.1" + classnames "^2.5.1" + css.escape "1.5.1" + deep-extend "0.6.0" + dompurify "=3.0.6" + ieee754 "^1.2.1" + immutable "^3.x.x" + js-file-download "^0.4.12" + js-yaml "=4.1.0" + lodash "^4.17.21" + patch-package "^8.0.0" + prop-types "^15.8.1" + randexp "^0.5.3" + randombytes "^2.1.0" + react-copy-to-clipboard "5.1.0" + react-debounce-input "=3.3.0" + react-immutable-proptypes "2.2.0" + react-immutable-pure-component "^2.2.0" + react-inspector "^6.0.1" + react-redux "^9.0.4" + react-syntax-highlighter "^15.5.0" + redux "^5.0.0" + redux-immutable "^4.0.0" + remarkable "^2.0.1" + reselect "^5.0.1" + serialize-error "^8.1.0" + sha.js "^2.4.11" + swagger-client "^3.25.0" + url-parse "^1.5.10" + xml "=1.0.1" + xml-but-prettier "^1.0.1" + zenscroll "^4.0.2" symbol-tree@^3.2.4: version "3.2.4" @@ -12499,21 +14212,15 @@ tabbable@^6.0.1: resolved "https://registry.yarnpkg.com/tabbable/-/tabbable-6.1.2.tgz#b0d3ca81d582d48a80f71b267d1434b1469a3703" integrity sha512-qCN98uP7i9z0fIS4amQ5zbGBOq+OSigYeGvPy7NDk8Y9yncqDZ9pRPgfsc2PJIVM9RrJj7GIfuRgmjoUU9zTHQ== -table@^6.0.9: - version "6.8.0" - resolved "https://registry.yarnpkg.com/table/-/table-6.8.0.tgz#87e28f14fa4321c3377ba286f07b79b281a3b3ca" - integrity sha1-h+KPFPpDIcM3e6KG8Ht5soGjs8o= - 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" +tapable@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" + integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== tar-fs@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" - integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng== + integrity sha1-SJoVq4Xx8L76uzcLfeT561y+h4Q= dependencies: chownr "^1.1.1" mkdirp-classic "^0.5.2" @@ -12523,7 +14230,7 @@ tar-fs@^2.0.0: tar-stream@^2.1.4: version "2.2.0" resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" - integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== + integrity sha1-rK2EwoQTawYNw/qmRHSqmuvXcoc= dependencies: bl "^4.0.3" end-of-stream "^1.4.1" @@ -12551,9 +14258,9 @@ text-table@^0.2.0: integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= thread-stream@^2.0.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/thread-stream/-/thread-stream-2.4.0.tgz#5def29598d1d4171ba3bace7e023a71d87d99c07" - integrity sha512-xZYtOtmnA63zj04Q+F9bdEay5r47bvpo1CaNqsKi7TpoJHcotUez8Fkfo2RJWpW91lnnaApdpRbVwCWsy+ifcw== + version "2.4.1" + resolved "https://registry.yarnpkg.com/thread-stream/-/thread-stream-2.4.1.tgz#6d588b14f0546e59d3f306614f044bc01ce43351" + integrity sha1-bViLFPBUblnT8wZhTwRLwBzkM1E= dependencies: real-require "^0.2.0" @@ -12599,20 +14306,30 @@ to-regex-range@^5.0.1: is-number "^7.0.0" toad-cache@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/toad-cache/-/toad-cache-3.2.0.tgz#8221a1906ce7bd18cd56b22f5603bcf9e38b54f9" - integrity sha512-Hj5zSqBS6OHbZoQk9IU8VqIr+0JUpwzunnwSlFJhG8aJSInYUMEuzItl3kJsGteTPd1qtflafdRHlRtUazYeqg== + version "3.3.0" + resolved "https://registry.yarnpkg.com/toad-cache/-/toad-cache-3.3.0.tgz#5b7dc67b36bc8b960567eb77bdf9ac6c26f204a1" + integrity sha1-W33Geza8i5YFZ+t3vfmsbCbyBKE= toggle-selection@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/toggle-selection/-/toggle-selection-1.0.6.tgz#6e45b1263f2017fa0acc7d89d78b15b8bf77da32" integrity sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ== +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + toposort@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/toposort/-/toposort-2.0.2.tgz#ae21768175d1559d48bef35420b2f4962f09c330" integrity sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg== +totalist@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/totalist/-/totalist-1.1.0.tgz#a4d65a3e546517701e3e5c37a47a70ac97fe56df" + integrity sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g== + tough-cookie@^4.1.2: version "4.1.3" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.3.tgz#97b9adb0728b42280aa3d814b6b999b2ff0318bf" @@ -12648,21 +14365,28 @@ tree-kill@^1.2.2: tree-sitter-json@=0.20.0: version "0.20.0" resolved "https://registry.yarnpkg.com/tree-sitter-json/-/tree-sitter-json-0.20.0.tgz#e17bb4917e8d5fe9f2f0d5eaec603e2d3552b07c" - integrity sha512-PteOLH+Tx6Bz4ZA/d40/DbkiSXXRM/gKahhHI8hQ1lWNfFvdknnz9k3Mz84ol5srRyLboJ8wp8GSkhZ6ht9EGQ== + integrity sha1-4Xu0kX6NX+ny8NXq7GA+LTVSsHw= dependencies: nan "^2.14.1" +tree-sitter-json@=0.20.1: + version "0.20.1" + resolved "https://registry.yarnpkg.com/tree-sitter-json/-/tree-sitter-json-0.20.1.tgz#d1fe6c59571dd3a987ebb3f5aeef404f37b3a453" + integrity sha1-0f5sWVcd06mH67P1ru9ATzezpFM= + dependencies: + nan "^2.18.0" + tree-sitter-yaml@=0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/tree-sitter-yaml/-/tree-sitter-yaml-0.5.0.tgz#c617ba72837399d8105ec10cdb4c360e1ed76076" - integrity sha512-POJ4ZNXXSWIG/W4Rjuyg36MkUD4d769YRUGKRqN+sVaj/VCo6Dh6Pkssn1Rtewd5kybx+jT1BWMyWN0CijXnMA== + integrity sha1-xhe6coNzmdgQXsEM20w2Dh7XYHY= dependencies: nan "^2.14.0" tree-sitter@=0.20.4: version "0.20.4" resolved "https://registry.yarnpkg.com/tree-sitter/-/tree-sitter-0.20.4.tgz#7d9d4f769fc05342ef43e5559f7ff34b0fc48327" - integrity sha512-rjfR5dc4knG3jnJNN/giJ9WOoN1zL/kZyrS0ILh+eqq8RNcIbiXA63JsMEgluug0aNvfQvK4BfCErN1vIzvKog== + integrity sha1-fZ1Pdp/AU0LvQ+VVn3/zSw/Egyc= dependencies: nan "^2.17.0" prebuild-install "^7.1.1" @@ -12682,16 +14406,16 @@ trim-newlines@^4.0.2: resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-4.0.2.tgz#d6aaaf6a0df1b4b536d183879a6b939489808c7c" integrity sha512-GJtWyq9InR/2HRiLZgpIKv+ufIKrVrvjQWEj7PxAXNc5dwbNJkqhAUoAGgzRmULAnoOM5EIpveYd3J2VeSAIew== -trough@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.5.tgz#b8b639cefad7d0bb2abd37d433ff8293efa5f406" - integrity sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA== - trough@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/trough/-/trough-2.1.0.tgz#0f7b511a4fde65a46f18477ab38849b22c554876" integrity sha1-D3tRGk/eZaRvGEd6s4hJsixVSHY= +ts-api-utils@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.0.3.tgz#f12c1c781d04427313dbac808f453f050e54a331" + integrity sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg== + ts-node@^9.0.0: version "9.1.1" resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-9.1.1.tgz#51a9a450a3e959401bda5f004a72d54b936d376d" @@ -12707,7 +14431,7 @@ ts-node@^9.0.0: ts-toolbelt@^9.6.0: version "9.6.0" resolved "https://registry.yarnpkg.com/ts-toolbelt/-/ts-toolbelt-9.6.0.tgz#50a25426cfed500d4a09bd1b3afb6f28879edfd5" - integrity sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w== + integrity sha1-UKJUJs/tUA1KCb0bOvtvKIee39U= tsconfig-paths@^3.14.1: version "3.14.1" @@ -12719,17 +14443,22 @@ tsconfig-paths@^3.14.1: minimist "^1.2.6" strip-bom "^3.0.0" -tslib@2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" - integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== +tsconfig-paths@^3.14.2: + version "3.14.2" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz#6e32f1f79412decd261f92d633a9dc1cfa99f088" + integrity sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.2" + minimist "^1.2.6" + strip-bom "^3.0.0" -tslib@^1.11.1, tslib@^1.8.1, tslib@^1.9.0: +tslib@^1.11.1, tslib@^1.9.0: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha1-zy04vcNKE0vK8QkcQfZhni9nLQA= -tslib@^2.0.0, tslib@^2.0.3, tslib@^2.3.0, tslib@^2.3.1: +tslib@^2.0.0, tslib@^2.0.3, tslib@^2.3.0: version "2.4.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.1.tgz#0d0bfbaac2880b91e22df0768e55be9753a5b17e" integrity sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA== @@ -12739,17 +14468,10 @@ tslib@^2.1.0, tslib@^2.4.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" integrity sha1-fOyqfwc85oCgWEeqd76UEJjzbcM= -tslib@^2.5.0: - version "2.5.3" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.3.tgz#24944ba2d990940e6e982c4bea147aba80209913" - integrity sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w== - -tsutils@^3.21.0: - version "3.21.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" - integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== - dependencies: - tslib "^1.8.1" +tslib@^2.3.1, tslib@^2.4.1, tslib@^2.5.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.0.tgz#b295854684dbda164e181d259a22cd779dcd7bc3" + integrity sha1-spWFRoTb2hZOGB0lmiLNd53Ne8M= tty-table@^4.1.5: version "4.1.6" @@ -12767,7 +14489,7 @@ tty-table@^4.1.5: tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== + integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= dependencies: safe-buffer "^5.0.1" @@ -12875,7 +14597,7 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" -type-detect@4.0.8, type-detect@^4.0.8: +type-detect@4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" integrity sha1-dkb7XxiHHPu3dJ5pvTmmOI63RQw= @@ -12920,17 +14642,68 @@ type-fest@^3.0.0: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-3.6.1.tgz#cf8025edeebfd6cf48de73573a5e1423350b9993" integrity sha512-htXWckxlT6U4+ilVgweNliPqlsVSSucbxVexRYllyMVJDtf5rTjv6kF/s+qAd4QSL1BZcnJPEJavYBPQiWuZDA== +typed-array-buffer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz#18de3e7ed7974b0a729d3feecb94338d1472cd60" + integrity sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.1" + is-typed-array "^1.1.10" + +typed-array-byte-length@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz#d787a24a995711611fb2b87a4052799517b230d0" + integrity sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + has-proto "^1.0.1" + is-typed-array "^1.1.10" + +typed-array-byte-offset@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz#cbbe89b51fdef9cd6aaf07ad4707340abbc4ea0b" + integrity sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + has-proto "^1.0.1" + is-typed-array "^1.1.10" + +typed-array-length@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" + integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + is-typed-array "^1.1.9" + types-ramda@^0.29.4: version "0.29.4" resolved "https://registry.yarnpkg.com/types-ramda/-/types-ramda-0.29.4.tgz#8d9b51df2e550a05cedab541cc75dcd72972c625" - integrity sha512-XO/820iRsCDwqLjE8XE+b57cVGPyk1h+U9lBGpDWvbEky+NQChvHVwaKM05WnW1c5z3EVQh8NhXFmh2E/1YazQ== + integrity sha1-jZtR3y5VCgXO2rVBzHXc1ylyxiU= dependencies: ts-toolbelt "^9.6.0" -typescript@^4.8.3: - version "4.8.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.8.4.tgz#c464abca159669597be5f96b8943500b238e60e6" - integrity sha1-xGSryhWWaVl75flriUNQCyOOYOY= +types-ramda@^0.29.7: + version "0.29.7" + resolved "https://registry.yarnpkg.com/types-ramda/-/types-ramda-0.29.7.tgz#dbd0dfc3c032502da2824b6f060f9b68bddffddc" + integrity sha1-29Dfw8AyUC2igktvBg+baL3f/dw= + dependencies: + ts-toolbelt "^9.6.0" + +typescript@^5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.2.2.tgz#5ebb5e5a5b75f085f22bc3f8460fba308310fa78" + integrity sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w== + +ufo@^1.3.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/ufo/-/ufo-1.3.2.tgz#c7d719d0628a1c80c006d2240e0d169f6e3c0496" + integrity sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA== uglify-js@^3.1.4: version "3.17.4" @@ -12947,12 +14720,12 @@ unbox-primitive@^1.0.2: has-symbols "^1.0.3" which-boxed-primitive "^1.0.2" -unescape@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/unescape/-/unescape-1.0.1.tgz#956e430f61cad8a4d57d82c518f5e6cc5d0dda96" - integrity sha512-O0+af1Gs50lyH1nUu3ZyYS1cRh01Q/kUKatTOkSs7jukXE6/NebucDVxyiDsA9AQ4JC1V1jUH9EO8JX2nMDgGQ== +undici@^5.24.0: + version "5.28.2" + resolved "https://registry.yarnpkg.com/undici/-/undici-5.28.2.tgz#fea200eac65fc7ecaff80a023d1a0543423b4c91" + integrity sha1-/qIA6sZfx+yv+AoCPRoFQ0I7TJE= dependencies: - extend-shallow "^2.0.1" + "@fastify/busboy" "^2.0.0" unicode-canonical-property-names-ecmascript@^2.0.0: version "2.0.0" @@ -12977,30 +14750,18 @@ unicode-property-aliases-ecmascript@^2.0.0: resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz#0a36cb9a585c4f6abd51ad1deddb285c165297c8" integrity sha1-CjbLmlhcT2q9Ua0d7dsoXBZSl8g= -unified@^10.0.0, unified@^10.1.2: - version "10.1.2" - resolved "https://registry.yarnpkg.com/unified/-/unified-10.1.2.tgz#b1d64e55dafe1f0b98bb6c719881103ecf6c86df" - integrity sha1-sdZOVdr+HwuYu2xxmIEQPs9sht8= +unified@11.0.4, unified@^11.0.0, unified@^11.0.4: + version "11.0.4" + resolved "https://registry.yarnpkg.com/unified/-/unified-11.0.4.tgz#f4be0ac0fe4c88cb873687c07c64c49ed5969015" + integrity sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ== dependencies: - "@types/unist" "^2.0.0" + "@types/unist" "^3.0.0" bail "^2.0.0" + devlop "^1.0.0" extend "^3.0.0" - is-buffer "^2.0.0" is-plain-obj "^4.0.0" trough "^2.0.0" - vfile "^5.0.0" - -unified@^9.0.0: - version "9.2.2" - resolved "https://registry.yarnpkg.com/unified/-/unified-9.2.2.tgz#67649a1abfc3ab85d2969502902775eb03146975" - integrity sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ== - dependencies: - bail "^1.0.0" - extend "^3.0.0" - is-buffer "^2.0.0" - is-plain-obj "^2.0.0" - trough "^1.0.0" - vfile "^4.0.0" + vfile "^6.0.0" unionfs@^4.4.0: version "4.4.0" @@ -13009,86 +14770,46 @@ unionfs@^4.4.0: dependencies: fs-monkey "^1.0.0" -unist-builder@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/unist-builder/-/unist-builder-2.0.3.tgz#77648711b5d86af0942f334397a33c5e91516436" - integrity sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw== - -unist-builder@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/unist-builder/-/unist-builder-3.0.0.tgz#728baca4767c0e784e1e64bb44b5a5a753021a04" - integrity sha512-GFxmfEAa0vi9i5sd0R2kcrI9ks0r82NasRq5QHh2ysGngrc6GiqD5CDf1FjPenY4vApmFASBIIlk/jj5J5YbmQ== - dependencies: - "@types/unist" "^2.0.0" - -unist-util-generated@^1.0.0: - version "1.1.6" - resolved "https://registry.yarnpkg.com/unist-util-generated/-/unist-util-generated-1.1.6.tgz#5ab51f689e2992a472beb1b35f2ce7ff2f324d4b" - integrity sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg== - -unist-util-generated@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unist-util-generated/-/unist-util-generated-2.0.0.tgz#86fafb77eb6ce9bfa6b663c3f5ad4f8e56a60113" - integrity sha512-TiWE6DVtVe7Ye2QxOVW9kqybs6cZexNwTwSMVgkfjEReqy/xwGpAXb99OxktoWwmL+Z+Epb0Dn8/GNDYP1wnUw== - -unist-util-is@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-4.1.0.tgz#976e5f462a7a5de73d94b706bac1b90671b57797" - integrity sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg== - unist-util-is@^5.0.0: version "5.1.1" resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-5.1.1.tgz#e8aece0b102fa9bc097b0fef8f870c496d4a6236" integrity sha1-6K7OCxAvqbwJew/vj4cMSW1KYjY= -unist-util-position-from-estree@^1.0.0, unist-util-position-from-estree@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unist-util-position-from-estree/-/unist-util-position-from-estree-1.1.1.tgz#96f4d543dfb0428edc01ebb928570b602d280c4c" - integrity sha512-xtoY50b5+7IH8tFbkw64gisG9tMSpxDjhX9TmaJJae/XuxQ9R/Kc8Nv1eOsf43Gt4KV/LkriMy9mptDr7XLcaw== - dependencies: - "@types/unist" "^2.0.0" - -unist-util-position@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/unist-util-position/-/unist-util-position-3.1.0.tgz#1c42ee6301f8d52f47d14f62bbdb796571fa2d47" - integrity sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA== - -unist-util-position@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/unist-util-position/-/unist-util-position-4.0.3.tgz#5290547b014f6222dff95c48d5c3c13a88fadd07" - integrity sha512-p/5EMGIa1qwbXjA+QgcBXaPWjSnZfQ2Sc3yBEEfgPwsEmJd8Qh+DSk3LGnmOM4S1bY2C0AjmMnB8RuEYxpPwXQ== +unist-util-is@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-6.0.0.tgz#b775956486aff107a9ded971d996c173374be424" + integrity sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw== dependencies: - "@types/unist" "^2.0.0" + "@types/unist" "^3.0.0" -unist-util-remove-position@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/unist-util-remove-position/-/unist-util-remove-position-4.0.1.tgz#d5b46a7304ac114c8d91990ece085ca7c2c135c8" - integrity sha512-0yDkppiIhDlPrfHELgB+NLQD5mfjup3a8UYclHruTJWmY74je8g+CIFr79x5f6AkmzSwlvKLbs63hC0meOMowQ== +unist-util-position-from-estree@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unist-util-position-from-estree/-/unist-util-position-from-estree-2.0.0.tgz#d94da4df596529d1faa3de506202f0c9a23f2200" + integrity sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ== dependencies: - "@types/unist" "^2.0.0" - unist-util-visit "^4.0.0" + "@types/unist" "^3.0.0" -unist-util-stringify-position@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz#cce3bfa1cdf85ba7375d1d5b17bdc4cada9bd9da" - integrity sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g== +unist-util-position@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/unist-util-position/-/unist-util-position-5.0.0.tgz#678f20ab5ca1207a97d7ea8a388373c9cf896be4" + integrity sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA== dependencies: - "@types/unist" "^2.0.2" + "@types/unist" "^3.0.0" -unist-util-stringify-position@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-3.0.2.tgz#5c6aa07c90b1deffd9153be170dce628a869a447" - integrity sha1-XGqgfJCx3v/ZFTvhcNzmKKhppEc= +unist-util-remove-position@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/unist-util-remove-position/-/unist-util-remove-position-5.0.0.tgz#fea68a25658409c9460408bc6b4991b965b52163" + integrity sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q== dependencies: - "@types/unist" "^2.0.0" + "@types/unist" "^3.0.0" + unist-util-visit "^5.0.0" -unist-util-visit-parents@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz#65a6ce698f78a6b0f56aa0e88f13801886cdaef6" - integrity sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg== +unist-util-stringify-position@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz#449c6e21a880e0855bf5aabadeb3a740314abac2" + integrity sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ== dependencies: - "@types/unist" "^2.0.0" - unist-util-is "^4.0.0" + "@types/unist" "^3.0.0" unist-util-visit-parents@^5.0.0: version "5.1.0" @@ -13098,30 +14819,13 @@ unist-util-visit-parents@^5.0.0: "@types/unist" "^2.0.0" unist-util-is "^5.0.0" -unist-util-visit-parents@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-5.1.1.tgz#868f353e6fce6bf8fa875b251b0f4fec3be709bb" - integrity sha512-gks4baapT/kNRaWxuGkl5BIhoanZo7sC/cUT/JToSRNL1dYoXRFl75d++NkjYk4TAu2uv2Px+l8guMajogeuiw== - dependencies: - "@types/unist" "^2.0.0" - unist-util-is "^5.0.0" - -unist-util-visit-parents@^5.1.3: - version "5.1.3" - resolved "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz#b4520811b0ca34285633785045df7a8d6776cfeb" - integrity sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg== - dependencies: - "@types/unist" "^2.0.0" - unist-util-is "^5.0.0" - -unist-util-visit@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-2.0.3.tgz#c3703893146df47203bb8a9795af47d7b971208c" - integrity sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q== +unist-util-visit-parents@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz#4d5f85755c3b8f0dc69e21eca5d6d82d22162815" + integrity sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw== dependencies: - "@types/unist" "^2.0.0" - unist-util-is "^4.0.0" - unist-util-visit-parents "^3.0.0" + "@types/unist" "^3.0.0" + unist-util-is "^6.0.0" unist-util-visit@^4.0.0: version "4.1.0" @@ -13132,14 +14836,14 @@ unist-util-visit@^4.0.0: unist-util-is "^5.0.0" unist-util-visit-parents "^5.0.0" -unist-util-visit@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-4.1.1.tgz#1c4842d70bd3df6cc545276f5164f933390a9aad" - integrity sha512-n9KN3WV9k4h1DxYR1LoajgN93wpEi/7ZplVe02IoB4gH5ctI1AaF2670BLHQYbwj+pY83gFtyeySFiyMHJklrg== +unist-util-visit@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-5.0.0.tgz#a7de1f31f72ffd3519ea71814cccf5fd6a9217d6" + integrity sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg== dependencies: - "@types/unist" "^2.0.0" - unist-util-is "^5.0.0" - unist-util-visit-parents "^5.1.1" + "@types/unist" "^3.0.0" + unist-util-is "^6.0.0" + unist-util-visit-parents "^6.0.0" universalify@^0.1.0: version "0.1.2" @@ -13159,7 +14863,20 @@ universalify@^2.0.0: unraw@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/unraw/-/unraw-2.0.1.tgz#7b51dcdfb1e43d59d5e52cdb44d349d029edbaba" - integrity sha512-tdOvLfRzHolwYcHS6HIX860MkK9LQ4+oLuNwFYL7bpgTEO64PZrcQxkisgwJYCfF8sKiWLwwu1c83DvMkbefIQ== + integrity sha1-e1Hc37HkPVnV5SzbRNNJ0Cnturo= + +unraw@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/unraw/-/unraw-3.0.0.tgz#73443ed70d2ab09ccbac2b00525602d5991fbbe3" + integrity sha1-c0Q+1w0qsJzLrCsAUlYC1Zkfu+M= + +update-browserslist-db@^1.0.13: + version "1.0.13" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4" + integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" update-browserslist-db@^1.0.9: version "1.0.10" @@ -13193,7 +14910,7 @@ uri-js@^4.2.2: url-parse@^1.5.10, url-parse@^1.5.3: version "1.5.10" resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" - integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== + integrity sha1-nTwvc2wddd070r5QfcwRHx4uqcE= dependencies: querystringify "^2.1.1" requires-port "^1.0.0" @@ -13206,15 +14923,20 @@ url@~0.11.0: punycode "1.3.2" querystring "0.2.0" +use-debounce@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/use-debounce/-/use-debounce-10.0.0.tgz#5091b18d6c16292605f588bae3c0d2cfae756ff2" + integrity sha1-UJGxjWwWKSYF9Yi648DSz651b/I= + use-memo-one@^1.1.1: version "1.1.3" resolved "https://registry.yarnpkg.com/use-memo-one/-/use-memo-one-1.1.3.tgz#2fd2e43a2169eabc7496960ace8c79efef975e99" integrity sha512-g66/K7ZQGYrI6dy8GLpVcMsBp4s17xNkYJVSMvTEevGy3nDxHOfE6z8BVE22+5G5x7t3+bhzrlTDB7ObrEE0cQ== -use-sync-external-store@1.2.0, use-sync-external-store@^1.0.0, use-sync-external-store@^1.2.0: +use-sync-external-store@1.2.0, use-sync-external-store@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz#7dbefd6ef3fe4e767a0cf5d7287aacfb5846928a" - integrity sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA== + integrity sha1-fb79bvP+TnZ6DPXXKHqs+1hGkoo= util-deprecate@^1.0.1: version "1.0.2" @@ -13247,21 +14969,6 @@ uuid@^9.0.0: resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.0.tgz#592f550650024a38ceb0c562f2f6aa435761efb5" integrity sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg== -uvu@^0.5.0: - version "0.5.6" - resolved "https://registry.yarnpkg.com/uvu/-/uvu-0.5.6.tgz#2754ca20bcb0bb59b64e9985e84d2e81058502df" - integrity sha1-J1TKILywu1m2TpmF6E0ugQWFAt8= - dependencies: - dequal "^2.0.0" - diff "^5.0.0" - kleur "^4.0.3" - sade "^1.7.3" - -v8-compile-cache@^2.0.3: - version "2.3.0" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" - integrity sha1-LeGWGMZtwkfc+2+ZM4A12CRaLO4= - v8-to-istanbul@^9.0.1: version "9.0.1" resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz#b6f994b0b5d4ef255e17a0d17dc444a9f5132fa4" @@ -13284,103 +14991,93 @@ vary@^1: resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= -vfile-location@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-4.0.1.tgz#06f2b9244a3565bef91f099359486a08b10d3a95" - integrity sha512-JDxPlTbZrZCQXogGheBHjbRWjESSPEak770XwWPfw5mTc1v1nWGLB/apzZxsx8a0SJVfF8HK8ql8RD308vXRUw== - dependencies: - "@types/unist" "^2.0.0" - vfile "^5.0.0" - -vfile-matter@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/vfile-matter/-/vfile-matter-3.0.1.tgz#85e26088e43aa85c04d42ffa3693635fa2bc5624" - integrity sha512-CAAIDwnh6ZdtrqAuxdElUqQRQDQgbbIrYtDYI8gCjXS1qQ+1XdLoK8FIZWxJwn0/I+BkSSZpar3SOgjemQz4fg== +vfile-location@^5.0.0: + version "5.0.2" + resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-5.0.2.tgz#220d9ca1ab6f8b2504a4db398f7ebc149f9cb464" + integrity sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg== dependencies: - "@types/js-yaml" "^4.0.0" - is-buffer "^2.0.0" - js-yaml "^4.0.0" + "@types/unist" "^3.0.0" + vfile "^6.0.0" -vfile-message@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-2.0.4.tgz#5b43b88171d409eae58477d13f23dd41d52c371a" - integrity sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ== +vfile-matter@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/vfile-matter/-/vfile-matter-5.0.0.tgz#4f8d6476a432f9556784a8b538f7da0ba25e053d" + integrity sha512-jhPSqlj8hTSkTXOqyxbUeZAFFVq/iwu/jukcApEqc/7DOidaAth6rDc0Zgg0vWpzUnWkwFP7aK28l6nBmxMqdQ== dependencies: - "@types/unist" "^2.0.0" - unist-util-stringify-position "^2.0.0" + vfile "^6.0.0" + yaml "^2.0.0" -vfile-message@^3.0.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-3.1.2.tgz#a2908f64d9e557315ec9d7ea3a910f658ac05f7d" - integrity sha1-opCPZNnlVzFeydfqOpEPZYrAX30= +vfile-message@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-4.0.2.tgz#c883c9f677c72c166362fd635f21fc165a7d1181" + integrity sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw== dependencies: - "@types/unist" "^2.0.0" - unist-util-stringify-position "^3.0.0" + "@types/unist" "^3.0.0" + unist-util-stringify-position "^4.0.0" -vfile-reporter@^7.0.5: - version "7.0.5" - resolved "https://registry.yarnpkg.com/vfile-reporter/-/vfile-reporter-7.0.5.tgz#a0cbf3922c08ad428d6db1161ec64a53b5725785" - integrity sha512-NdWWXkv6gcd7AZMvDomlQbK3MqFWL1RlGzMn++/O2TI+68+nqxCPTvLugdOtfSzXmjh+xUyhp07HhlrbJjT+mw== +vfile-reporter@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/vfile-reporter/-/vfile-reporter-8.1.0.tgz#8d6057035c7133a1ea0da04c82bfef31c0756fa3" + integrity sha512-NfHyHdkCcy0BsXiLA3nId29TY7W7hgpc8nd8Soe3imATx5N4/+mkLYdMR+Y6Zvu6BXMMi0FZsD4FLCm1dN85Pg== dependencies: "@types/supports-color" "^8.0.0" - string-width "^5.0.0" + string-width "^6.0.0" supports-color "^9.0.0" - unist-util-stringify-position "^3.0.0" - vfile "^5.0.0" - vfile-message "^3.0.0" - vfile-sort "^3.0.0" - vfile-statistics "^2.0.0" + unist-util-stringify-position "^4.0.0" + vfile "^6.0.0" + vfile-message "^4.0.0" + vfile-sort "^4.0.0" + vfile-statistics "^3.0.0" -vfile-sort@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/vfile-sort/-/vfile-sort-3.0.1.tgz#4b06ec63e2946749b0bb514e736554cd75e441a2" - integrity sha512-1os1733XY6y0D5x0ugqSeaVJm9lYgj0j5qdcZQFyxlZOSy1jYarL77lLyb5gK4Wqr1d5OxmuyflSO3zKyFnTFw== +vfile-sort@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/vfile-sort/-/vfile-sort-4.0.0.tgz#fa1929065b62fe5311e5391c9434f745e8641703" + integrity sha512-lffPI1JrbHDTToJwcq0rl6rBmkjQmMuXkAxsZPRS9DXbaJQvc642eCg6EGxcX2i1L+esbuhq+2l9tBll5v8AeQ== dependencies: - vfile "^5.0.0" - vfile-message "^3.0.0" + vfile "^6.0.0" + vfile-message "^4.0.0" -vfile-statistics@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/vfile-statistics/-/vfile-statistics-2.0.1.tgz#2e1adae1cd3a45c1ed4f2a24bd103c3d71e4bce3" - integrity sha512-W6dkECZmP32EG/l+dp2jCLdYzmnDBIw6jwiLZSER81oR5AHRcVqL+k3Z+pfH1R73le6ayDkJRMk0sutj1bMVeg== +vfile-statistics@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/vfile-statistics/-/vfile-statistics-3.0.0.tgz#0f5cd00c611c1862b13a9b5bc5599efaf465f2cf" + integrity sha512-/qlwqwWBWFOmpXujL/20P+Iuydil0rZZNglR+VNm6J0gpLHwuVM5s7g2TfVoswbXjZ4HuIhLMySEyIw5i7/D8w== dependencies: - vfile "^5.0.0" - vfile-message "^3.0.0" + vfile "^6.0.0" + vfile-message "^4.0.0" -vfile@^4.0.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/vfile/-/vfile-4.2.1.tgz#03f1dce28fc625c625bc6514350fbdb00fa9e624" - integrity sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA== +vfile@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/vfile/-/vfile-6.0.1.tgz#1e8327f41eac91947d4fe9d237a2dd9209762536" + integrity sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw== dependencies: - "@types/unist" "^2.0.0" - is-buffer "^2.0.0" - unist-util-stringify-position "^2.0.0" - vfile-message "^2.0.0" + "@types/unist" "^3.0.0" + unist-util-stringify-position "^4.0.0" + vfile-message "^4.0.0" -vfile@^5.0.0: - version "5.3.4" - resolved "https://registry.yarnpkg.com/vfile/-/vfile-5.3.4.tgz#bbb8c96b956693bbf70b2c67fdb5781dff769b93" - integrity sha1-u7jJa5Vmk7v3Cyxn/bV4Hf92m5M= +vite-node@^0.28.5: + version "0.28.5" + resolved "https://registry.yarnpkg.com/vite-node/-/vite-node-0.28.5.tgz#56d0f78846ea40fddf2e28390899df52a4738006" + integrity sha512-LmXb9saMGlrMZbXTvOveJKwMTBTNUH66c8rJnQ0ZPNX+myPEol64+szRzXtV5ORb0Hb/91yq+/D3oERoyAt6LA== dependencies: - "@types/unist" "^2.0.0" - is-buffer "^2.0.0" - unist-util-stringify-position "^3.0.0" - vfile-message "^3.0.0" + cac "^6.7.14" + debug "^4.3.4" + mlly "^1.1.0" + pathe "^1.1.0" + picocolors "^1.0.0" + source-map "^0.6.1" + source-map-support "^0.5.21" + vite "^3.0.0 || ^4.0.0" -vfile@^5.3.0: - version "5.3.6" - resolved "https://registry.yarnpkg.com/vfile/-/vfile-5.3.6.tgz#61b2e70690cc835a5d0d0fd135beae74e5a39546" - integrity sha512-ADBsmerdGBs2WYckrLBEmuETSPyTD4TuLxTrw0DvjirxW1ra4ZwkbzG8ndsv3Q57smvHxo677MHaQrY9yxH8cA== +"vite@^3.0.0 || ^4.0.0", vite@^4.1.4: + version "4.5.1" + resolved "https://registry.yarnpkg.com/vite/-/vite-4.5.1.tgz#3370986e1ed5dbabbf35a6c2e1fb1e18555b968a" + integrity sha512-AXXFaAJ8yebyqzoNB9fu2pHoo/nWX+xZlaRwoeYUxEqBO+Zj4msE5G+BhGBll9lYEKv9Hfks52PAF2X7qDYXQA== dependencies: - "@types/unist" "^2.0.0" - is-buffer "^2.0.0" - unist-util-stringify-position "^3.0.0" - vfile-message "^3.0.0" - -vlq@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/vlq/-/vlq-1.0.1.tgz#c003f6e7c0b4c1edd623fd6ee50bbc0d6a1de468" - integrity sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w== + esbuild "^0.18.10" + postcss "^8.4.27" + rollup "^3.27.1" + optionalDependencies: + fsevents "~2.3.2" w3c-xmlserializer@^4.0.0: version "4.0.0" @@ -13419,15 +15116,25 @@ web-encoding@^1.1.5: optionalDependencies: "@zxing/text-encoding" "0.9.0" +web-namespaces@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/web-namespaces/-/web-namespaces-2.0.1.tgz#1010ff7c650eccb2592cebeeaf9a1b253fd40692" + integrity sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ== + web-streams-polyfill@4.0.0-beta.3: version "4.0.0-beta.3" resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.3.tgz#2898486b74f5156095e473efe989dcf185047a38" integrity sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug== +web-streams-polyfill@^3.0.3: + version "3.2.1" + resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz#71c2718c52b45fd49dbeee88634b3a60ceab42a6" + integrity sha1-ccJxjFK0X9Sdvu6IY0s6YM6rQqY= + web-tree-sitter@=0.20.3: version "0.20.3" resolved "https://registry.yarnpkg.com/web-tree-sitter/-/web-tree-sitter-0.20.3.tgz#3dd17b283ad63b1d8c07c5ea814f0fefb2b1f776" - integrity sha512-zKGJW9r23y3BcJusbgvnOH2OYAW40MXAOi9bi3Gcc7T4Gms9WWgXF8m6adsJWpGJEhgOzCrfiz1IzKowJWrtYw== + integrity sha1-PdF7KDrWOx2MB8XqgU8P77Kx93Y= webidl-conversions@^3.0.0: version "3.0.1" @@ -13439,6 +15146,21 @@ webidl-conversions@^7.0.0: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a" integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== +webpack-bundle-analyzer@4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.7.0.tgz#33c1c485a7fcae8627c547b5c3328b46de733c66" + integrity sha512-j9b8ynpJS4K+zfO5GGwsAcQX4ZHpWV+yRiHDiL+bE0XHJ8NiPYLTNVQdlFYWxtpg9lfAQNlwJg16J9AJtFSXRg== + dependencies: + acorn "^8.0.4" + acorn-walk "^8.0.0" + chalk "^4.1.0" + commander "^7.2.0" + gzip-size "^6.0.0" + lodash "^4.17.20" + opener "^1.5.2" + sirv "^1.0.7" + ws "^7.3.1" + whatwg-encoding@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz#e7635f597fd87020858626805a2729fa7698ac53" @@ -13478,6 +15200,24 @@ which-boxed-primitive@^1.0.2: is-string "^1.0.5" is-symbol "^1.0.3" +which-builtin-type@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/which-builtin-type/-/which-builtin-type-1.1.3.tgz#b1b8443707cc58b6e9bf98d32110ff0c2cbd029b" + integrity sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw== + dependencies: + function.prototype.name "^1.1.5" + has-tostringtag "^1.0.0" + is-async-function "^2.0.0" + is-date-object "^1.0.5" + is-finalizationregistry "^1.0.2" + is-generator-function "^1.0.10" + is-regex "^1.1.4" + is-weakref "^1.0.2" + isarray "^2.0.5" + which-boxed-primitive "^1.0.2" + which-collection "^1.0.1" + which-typed-array "^1.1.9" + which-collection@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.1.tgz#70eab71ebbbd2aefaf32f917082fc62cdcb70906" @@ -13501,6 +15241,17 @@ which-pm@2.0.0: load-yaml-file "^0.2.0" path-exists "^4.0.0" +which-typed-array@^1.1.11, which-typed-array@^1.1.9: + version "1.1.11" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.11.tgz#99d691f23c72aab6768680805a271b69761ed61a" + integrity sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" + which-typed-array@^1.1.2, which-typed-array@^1.1.8: version "1.1.9" resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.9.tgz#307cf898025848cf995e795e8423c7f337efbde6" @@ -13527,7 +15278,7 @@ which@^2.0.1: dependencies: isexe "^2.0.0" -word-wrap@^1.2.3, word-wrap@~1.2.3: +word-wrap@~1.2.3: version "1.2.4" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.4.tgz#cb4b50ec9aca570abd1f52f33cd45b6c61739a9f" integrity sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA== @@ -13549,7 +15300,7 @@ wrap-ansi@^6.2.0: wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha1-Z+FFz/UQpqaYS98RUpEdadLrnkM= + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== dependencies: ansi-styles "^4.0.0" string-width "^4.1.0" @@ -13568,6 +15319,11 @@ write-file-atomic@^4.0.1: imurmurhash "^0.1.4" signal-exit "^3.0.7" +ws@^7.3.1: + version "7.5.9" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" + integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== + ws@^8.0.0: version "8.14.2" resolved "https://registry.yarnpkg.com/ws/-/ws-8.14.2.tgz#6c249a806eb2db7a20d26d51e7709eab7b2e6c7f" @@ -13620,6 +15376,11 @@ yallist@^2.1.2: resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" integrity sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A== +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + yallist@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" @@ -13630,6 +15391,11 @@ yaml@^1.10.0: resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== +yaml@^2.0.0: + version "2.3.4" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.4.tgz#53fc1d514be80aabf386dc6001eb29bf3b7523b2" + integrity sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA== + yaml@^2.1.1: version "2.1.3" resolved "https://registry.npmjs.org/yaml/-/yaml-2.1.3.tgz#9b3a4c8aff9821b696275c79a8bee8399d945207" @@ -13734,20 +15500,20 @@ zenscroll@^4.0.2: resolved "https://registry.yarnpkg.com/zenscroll/-/zenscroll-4.0.2.tgz#e8d5774d1c0738a47bcfa8729f3712e2deddeb25" integrity sha512-jEA1znR7b4C/NnaycInCU6h/d15ZzCd1jmsruqOKnZP6WXQSMH3W2GL+OXbkruslU4h+Tzuos0HdswzRUk/Vgg== -zod@3.21.4: - version "3.21.4" - resolved "https://registry.yarnpkg.com/zod/-/zod-3.21.4.tgz#10882231d992519f0a10b5dd58a38c9dabbb64db" - integrity sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw== +zod@^3.19.1: + version "3.19.1" + resolved "https://registry.yarnpkg.com/zod/-/zod-3.19.1.tgz#112f074a97b50bfc4772d4ad1576814bd8ac4473" + integrity sha512-LYjZsEDhCdYET9ikFu6dVPGp2YH9DegXjdJToSzD9rO6fy4qiRYFoyEYwps88OseJlPyl2NOe2iJuhEhL7IpEA== zod@^3.22.3: - version "3.22.3" - resolved "https://registry.yarnpkg.com/zod/-/zod-3.22.3.tgz#2fbc96118b174290d94e8896371c95629e87a060" - integrity sha512-EjIevzuJRiRPbVH4mGc8nApb/lVLKVpmUhAaR5R5doKGfAnGJ6Gr3CViAVjP+4FWSxCsybeWQdcgCtbX+7oZug== + version "3.22.4" + resolved "https://registry.yarnpkg.com/zod/-/zod-3.22.4.tgz#f31c3a9386f61b1f228af56faa9255e845cf3fff" + integrity sha1-8xw6k4b2Gx8iivVvqpJV6EXPP/8= -zustand@^4.1.1: - version "4.3.2" - resolved "https://registry.yarnpkg.com/zustand/-/zustand-4.3.2.tgz#bb121fcad84c5a569e94bd1a2695e1a93ba85d39" - integrity sha512-rd4haDmlwMTVWVqwvgy00ny8rtti/klRoZjFbL/MAcDnmD5qSw/RZc+Vddstdv90M5Lv6RPgWvm1Hivyn0QgJw== +zustand@^4.4.7: + version "4.4.7" + resolved "https://registry.yarnpkg.com/zustand/-/zustand-4.4.7.tgz#355406be6b11ab335f59a66d2cf9815e8f24038c" + integrity sha512-QFJWJMdlETcI69paJwhSMJz7PPWjVP8Sjhclxmxmxv/RYI7ZOvR5BHX+ktH0we9gTWQMxcne8q1OY8xxz604gw== dependencies: use-sync-external-store "1.2.0" @@ -13755,3 +15521,8 @@ zwitch@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-2.0.2.tgz#91f8d0e901ffa3d66599756dde7f57b17c95dce1" integrity sha1-kfjQ6QH/o9ZlmXVt3n9XsXyV3OE= + +zwitch@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-2.0.4.tgz#c827d4b0acb76fc3e685a4c6ec2902d51070e9d7" + integrity sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==