All Tutorials
- {Object.entries(tutorialFiles).map(([path, raw]) => {
- const { frontmatter } = parseFrontmatter(raw as string);
- const slug = pathToFilename(path);
- if (frontmatter.isPublished === "false") return null;
+ {getTutorialItems().map((item) => {
+ if (!item.isPublished) return null;
return (
- {frontmatter.title || slug}
+ {item.title}
);
})}
@@ -126,17 +118,14 @@ export default function Example() {
All FAQs
- {Object.entries(faqFiles).map(([path, raw]) => {
- const { frontmatter } = parseFrontmatter(raw as string);
- const slug = pathToFilename(path);
- if (frontmatter.isPublished === "false") return null;
- const title = (frontmatter.title || slug) as string;
+ {getFaqItems().map((item) => {
+ if (!item.isPublished) return null;
const truncated =
- title.length > 36 ? title.slice(0, 33) + "…" : title;
+ item.title.length > 36 ? item.title.slice(0, 33) + "…" : item.title;
return (
{truncated}
diff --git a/frontend/apps/artcraft-website/src/components/navbar/navbar.tsx b/frontend/apps/artcraft-website/src/components/navbar/navbar.tsx
index 9210e619c6..fe3f96da33 100644
--- a/frontend/apps/artcraft-website/src/components/navbar/navbar.tsx
+++ b/frontend/apps/artcraft-website/src/components/navbar/navbar.tsx
@@ -7,6 +7,7 @@ import { DiscordButton } from "../discord-button";
const NAV_ITEMS = [
{ name: "Home", href: "/" },
{ name: "Tutorials", href: "/tutorials" },
+ { name: "News", href: "/news" },
{ name: "FAQ", href: "/faq" },
];
diff --git a/frontend/apps/artcraft-website/src/pages/faq/article.tsx b/frontend/apps/artcraft-website/src/pages/faq/article.tsx
index fe91c9d99c..5676d65ffe 100644
--- a/frontend/apps/artcraft-website/src/pages/faq/article.tsx
+++ b/frontend/apps/artcraft-website/src/pages/faq/article.tsx
@@ -1,42 +1,19 @@
-import { useMemo } from "react";
import { Link, useParams } from "react-router-dom";
import Seo from "../../components/seo";
-import { parseFrontmatter, markdownToHtml } from "../../utils/markdown";
+import { getFaqItemBySlug, markdownToHtml } from "@storyteller/markdown-content";
import { faChevronLeft } from "@fortawesome/pro-solid-svg-icons";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
-
-const markdownFiles = import.meta.glob("./content/*.md", {
- query: "?raw",
- import: "default",
- eager: true,
-});
+import { useMemo } from "react";
const FaqArticle = () => {
const { slug } = useParams();
- const entries = Object.entries(markdownFiles);
- const markdown = (() => {
- const byFilename = entries.find(([path]) =>
- path.endsWith(`/content/${slug}.md`)
- );
- if (byFilename) return byFilename[1] as string;
- for (const [_, raw] of entries) {
- const { frontmatter } = parseFrontmatter(raw as string);
- if (
- frontmatter.slug &&
- frontmatter.slug.trim().toLowerCase() === (slug || "").toLowerCase()
- ) {
- return raw as string;
- }
- }
- return null;
- })();
- const { frontmatter, body } = useMemo(
- () =>
- markdown ? parseFrontmatter(markdown) : { frontmatter: {}, body: "" },
- [markdown]
- );
+ const item = slug ? getFaqItemBySlug(slug) : null;
- if (!markdown) {
+ const html = useMemo(() =>
+ item ? markdownToHtml(item.body, "/faq/") : ""
+ , [item]);
+
+ if (!item) {
return (
@@ -47,16 +24,16 @@ const FaqArticle = () => {
);
}
- const title = `${frontmatter.title || slug} - ArtCraft`;
- const description = frontmatter.abstract || "";
- const thumbnail = frontmatter.thumbnail || "";
- const html = markdownToHtml(body, "/faq/");
+ const title = `${item.title} - ArtCraft`;
+ const description = item.description || "";
+ const thumbnail = item.thumbnail || "";
+
const jsonLd = {
"@context": "https://schema.org",
"@type": "Article",
- headline: frontmatter.title || slug,
+ headline: item.title,
description: description,
- articleBody: body,
+ articleBody: item.body,
};
return (
@@ -79,7 +56,7 @@ const FaqArticle = () => {
- {frontmatter.title || slug}
+ {item.title || slug}
{description &&
{description}
}
@@ -87,7 +64,7 @@ const FaqArticle = () => {
diff --git a/frontend/apps/artcraft-website/src/pages/faq/index.tsx b/frontend/apps/artcraft-website/src/pages/faq/index.tsx
index 34a8d76352..3a5dae2d78 100644
--- a/frontend/apps/artcraft-website/src/pages/faq/index.tsx
+++ b/frontend/apps/artcraft-website/src/pages/faq/index.tsx
@@ -1,27 +1,15 @@
import { Link } from "react-router-dom";
import Seo from "../../components/seo";
-import { parseFrontmatter, pathToFilename } from "../../utils/markdown";
-
-const faqFiles = import.meta.glob("./content/*.md", {
- query: "?raw",
- import: "default",
- eager: true,
-});
+import { getFaqItems } from "@storyteller/markdown-content";
+import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
+import { faArrowRight } from "@fortawesome/pro-solid-svg-icons";
const FaqIndex = () => {
const title = "Frequently Asked Questions - ArtCraft";
const description =
"Explore ArtCraft FAQs: guides on AI image generation, editing, and workflows.";
- const items = Object.entries(faqFiles).map(([path, raw]) => {
- const { frontmatter } = parseFrontmatter(raw as string);
- const slug = pathToFilename(path);
- return {
- slug,
- title: frontmatter.title || slug,
- description: frontmatter.abstract || "",
- };
- });
+ const items = getFaqItems();
const jsonLd = {
"@context": "https://schema.org",
@@ -59,9 +47,12 @@ const FaqIndex = () => {
-
{item.title}
+
+ {item.title}
+
+
{item.description}
))}
diff --git a/frontend/apps/artcraft-website/src/pages/index.ts b/frontend/apps/artcraft-website/src/pages/index.ts
index 29627e4d79..5985fc1f24 100644
--- a/frontend/apps/artcraft-website/src/pages/index.ts
+++ b/frontend/apps/artcraft-website/src/pages/index.ts
@@ -2,6 +2,6 @@ export * from "./landing";
export * from "./landing2";
export * from "./download";
export * from "./tutorials";
-export { default as TutorialsIndex } from "./tutorials/md-index";
+export { default as TutorialsIndex } from "./tutorials/tutorials";
export { default as TutorialsArticle } from "./tutorials/article";
export * from "./faq";
diff --git a/frontend/apps/artcraft-website/src/pages/tutorials/article.tsx b/frontend/apps/artcraft-website/src/pages/tutorials/article.tsx
index 200a30c2d7..59b83ba733 100644
--- a/frontend/apps/artcraft-website/src/pages/tutorials/article.tsx
+++ b/frontend/apps/artcraft-website/src/pages/tutorials/article.tsx
@@ -1,50 +1,20 @@
import { useMemo } from "react";
import { Link, useParams } from "react-router-dom";
import Seo from "../../components/seo";
-import { parseFrontmatter, markdownToHtml } from "../../utils/markdown";
+import { getTutorialItemBySlug, markdownToHtml } from "@storyteller/markdown-content";
import { faChevronLeft } from "@fortawesome/pro-solid-svg-icons";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
-const tutorialFiles = import.meta.glob("./content/*.md", {
- query: "?raw",
- import: "default",
- eager: true,
-});
-
const TutorialsArticle = () => {
const { slug } = useParams();
- const entries = Object.entries(tutorialFiles);
- const markdown = (() => {
- // 1) filename match
- const byFilename = entries.find(([path]) =>
- path.endsWith(`/content/${slug}.md`)
- );
- if (byFilename) return byFilename[1] as string;
- // 2) frontmatter slug match
- const wanted = (slug || "").toLowerCase();
- for (const [_, raw] of entries) {
- const { frontmatter } = parseFrontmatter(raw as string);
- const fmSlug = (frontmatter.slug || "").trim().toLowerCase();
- if (fmSlug && fmSlug === wanted) return raw as string;
- const aliasesRaw = (frontmatter.aliases || "").toString();
- if (aliasesRaw) {
- const candidateList = aliasesRaw
- .split(/[\s,]+/)
- .map((s) => s.trim().toLowerCase())
- .filter(Boolean);
- if (candidateList.includes(wanted)) return raw as string;
- }
- }
- return null;
- })();
- const { frontmatter, body } = useMemo(
- () =>
- markdown ? parseFrontmatter(markdown) : { frontmatter: {}, body: "" },
- [markdown]
- );
+ const item = slug ? getTutorialItemBySlug(slug) : null;
- if (!markdown) {
+ const html = useMemo(() =>
+ item ? markdownToHtml(item.body) : ""
+ , [item]);
+
+ if (!item) {
return (
@@ -55,8 +25,8 @@ const TutorialsArticle = () => {
);
}
- const title = `${frontmatter.title || slug} - ArtCraft`;
- const description = frontmatter.abstract || "";
+ const title = `${item.title} - ArtCraft`;
+ const description = item.abstract || "";
const toEmbed = (url: string): string => {
if (!url) return url;
if (url.includes("youtu.be/"))
@@ -65,18 +35,17 @@ const TutorialsArticle = () => {
return url;
};
const frontmatterVideo =
- (frontmatter.videoUrl as string) ||
- (frontmatter.youtubeId
- ? `https://www.youtube.com/embed/${frontmatter.youtubeId}`
+ (item.videoUrl as string) ||
+ (item.youtubeId
+ ? `https://www.youtube.com/embed/${item.youtubeId}`
: "");
const videoUrl = toEmbed(frontmatterVideo);
- const html = markdownToHtml(body);
const jsonLd = {
"@context": "https://schema.org",
"@type": "Article",
- headline: frontmatter.title || slug,
+ headline: item.title,
description: description,
- articleBody: body,
+ articleBody: item.body,
};
return (
@@ -99,14 +68,14 @@ const TutorialsArticle = () => {
- {frontmatter.title || slug}
+ {item.title || slug}
{description &&
{description}
}
{videoUrl && (
setHelpIsShowing(false)}
- title="Help"
+ isOpen={shortcutsIsShowing}
+ onClose={() => setShortcutsIsShowing(false)}
+ title="Shortcuts"
className="h-[500px] max-w-4xl"
>
+
+
);
};
diff --git a/frontend/apps/artcraft/app/src/pages/PageEnigma/comps/ControlsTopButtons/Help/Help.tsx b/frontend/apps/artcraft/app/src/pages/PageEnigma/comps/ControlsTopButtons/Help/Help.tsx
index 099b284126..9a563c9ab8 100644
--- a/frontend/apps/artcraft/app/src/pages/PageEnigma/comps/ControlsTopButtons/Help/Help.tsx
+++ b/frontend/apps/artcraft/app/src/pages/PageEnigma/comps/ControlsTopButtons/Help/Help.tsx
@@ -53,96 +53,91 @@ export const Mouse = (props: {
export const Plus = () =>
+
;
+const ShortcutsView = () => (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+);
+
+
+
export const Help = () => {
return (
-
-
-
- {/*
-
-
-
-
-
-
-
- */}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {/*
-
- */}
- {/*
-
- */}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
);
diff --git a/frontend/apps/artcraft/tsconfig.json b/frontend/apps/artcraft/tsconfig.json
index a92c3fd463..107b8ae95a 100644
--- a/frontend/apps/artcraft/tsconfig.json
+++ b/frontend/apps/artcraft/tsconfig.json
@@ -109,9 +109,6 @@
{
"path": "../../libs/components/close-button"
},
- {
- "path": "../../libs/model-list"
- },
{
"path": "../../libs/components/model-selector"
},
@@ -139,6 +136,9 @@
{
"path": "../../libs/components/list-dropdown"
},
+ {
+ "path": "../../libs/model-list"
+ },
{
"path": "../../libs/components/gallery-modal"
},
diff --git a/frontend/libs/components/help-menu/src/lib/help-menu-store.ts b/frontend/libs/components/help-menu/src/lib/help-menu-store.ts
index d92ef4f421..3a924f8e85 100644
--- a/frontend/libs/components/help-menu/src/lib/help-menu-store.ts
+++ b/frontend/libs/components/help-menu/src/lib/help-menu-store.ts
@@ -1,27 +1,38 @@
import { create } from "zustand";
-import type { TutorialItem } from "./tutorials";
+import { TutorialItem } from "./tutorials";
-type TutorialView = "grid" | "video";
+export type ViewType = "grid" | "video" | "news";
-type TutorialModalStore = {
- view: TutorialView;
+interface TutorialModalState {
+ isOpen: boolean;
+ view: ViewType;
selected: TutorialItem | null;
- progressSecondsById: Record
;
+ progress: Record; // itemId -> seconds
+ setOpen: (isOpen: boolean) => void;
setGrid: () => void;
+ setNews: () => void;
viewTutorial: (item: TutorialItem) => void;
- getProgress: (id: string) => number;
setProgress: (id: string, seconds: number) => void;
-};
+ getProgress: (id: string) => number;
+}
-export const useTutorialModalStore = create((set, get) => ({
- view: "grid",
- selected: null,
- progressSecondsById: {},
- setGrid: () => set({ view: "grid", selected: null }),
- viewTutorial: (item) => set({ view: "video", selected: item }),
- getProgress: (id) => get().progressSecondsById[id] ?? 0,
- setProgress: (id, seconds) =>
- set((state) => ({
- progressSecondsById: { ...state.progressSecondsById, [id]: seconds },
- })),
-}));
+export const useTutorialModalStore = create()(
+ (set, get) => ({
+ isOpen: false,
+ view: "grid",
+ selected: null,
+ progress: {},
+
+ setOpen: (isOpen) => set({ isOpen }),
+ setGrid: () => set({ view: "grid", selected: null }),
+ setNews: () => set({ view: "news", selected: null }),
+ viewTutorial: (item) => set({ view: "video", selected: item }),
+
+ setProgress: (id, seconds) =>
+ set((state) => ({
+ progress: { ...state.progress, [id]: seconds },
+ })),
+
+ getProgress: (id) => get().progress[id] || 0,
+ })
+);
diff --git a/frontend/libs/components/help-menu/src/lib/help-menu.tsx b/frontend/libs/components/help-menu/src/lib/help-menu.tsx
index 33cdc7b34e..fca40c0a04 100644
--- a/frontend/libs/components/help-menu/src/lib/help-menu.tsx
+++ b/frontend/libs/components/help-menu/src/lib/help-menu.tsx
@@ -3,6 +3,8 @@ import {
faBook,
faChevronLeft,
faCircleQuestion,
+ faNewspaper,
+ faArrowRight,
} from "@fortawesome/pro-solid-svg-icons";
import {
faDiscord,
@@ -16,6 +18,7 @@ import { useTutorialModalStore } from "./help-menu-store";
import { Button } from "@storyteller/ui-button";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import { PopoverMenu, PopoverItem } from "@storyteller/ui-popover";
+import { getNewsPosts, markdownToHtml } from "@storyteller/markdown-content";
export type HelpMenuButtonProps = {
items?: TutorialItem[];
@@ -24,6 +27,98 @@ export type HelpMenuButtonProps = {
onOpenChange?: (open: boolean) => void;
};
+// Internal News Component
+const NewsView = ({ onBack }: { onBack: () => void }) => {
+ const [selectedSlug, setSelectedSlug] = useState(null);
+
+ const bundledItems = useMemo(() => getNewsPosts(), []);
+ const [items, setItems] = useState(bundledItems);
+
+ useEffect(() => {
+ // Attempt to fetch fresh news
+ const fetchNews = async () => {
+ try {
+ const baseUrl = import.meta.env.DEV ? "http://localhost:4200" : "https://getartcraft.com";
+ const res = await fetch(`${baseUrl}/news.json`);
+ if (res.ok) {
+ const data = await res.json();
+ if (Array.isArray(data)) {
+ setItems(data);
+ }
+ }
+ } catch (e) {
+ // Fallback or ignore
+ console.warn("Failed to fetch news feed, using bundled content.", e);
+ }
+ };
+ fetchNews();
+ }, []);
+
+ const selectedPost = useMemo(() =>
+ selectedSlug ? items.find(i => i.slug === selectedSlug) : null
+ , [selectedSlug, items]);
+
+ const html = useMemo(() =>
+ selectedPost ? markdownToHtml(selectedPost.body) : ""
+ , [selectedPost]);
+
+ if (selectedPost) {
+ return (
+
+
setSelectedSlug(null)}
+ className="self-start mb-4 text-sm flex items-center gap-2 text-white/60 hover:text-white transition-colors"
+ >
+ Back to News
+
+
+
+
{selectedPost.title}
+ {selectedPost.date &&
{selectedPost.date}
}
+
+ {selectedPost.thumbnail && (
+
+ )}
+
+
+
+
+
+ );
+ }
+
+ return (
+
+ {items.map(item => (
+
setSelectedSlug(item.slug)}
+ className="bg-white/5 hover:bg-white/10 border border-white/10 p-4 rounded-lg cursor-pointer transition-all group"
+ >
+
+
+ {item.title}
+
+
+ {item.date && {item.date} }
+
+
{item.description}
+
+ ))}
+ {items.length === 0 &&
No news yet.
}
+
+ );
+};
+
+
export function HelpMenuButton({
items,
panelTitle = "Tutorials",
@@ -35,11 +130,21 @@ export function HelpMenuButton({
const view = useTutorialModalStore((s) => s.view);
const selected = useTutorialModalStore((s) => s.selected);
const setGrid = useTutorialModalStore((s) => s.setGrid);
+ const setNews = useTutorialModalStore((s) => s.setNews);
const viewTutorial = useTutorialModalStore((s) => s.viewTutorial);
const getProgress = useTutorialModalStore((s) => s.getProgress);
const setProgress = useTutorialModalStore((s) => s.setProgress);
+ // Sync open state if managed externally? No, local state + optional callback.
+
const handleOpenTutorials = () => {
+ setGrid();
+ setOpen(true);
+ onOpenChange?.(true);
+ };
+
+ const handleOpenNews = () => {
+ setNews();
setOpen(true);
onOpenChange?.(true);
};
@@ -57,6 +162,12 @@ export function HelpMenuButton({
icon: ,
action: "tutorials",
},
+ {
+ label: "News & Updates",
+ selected: false,
+ icon: ,
+ action: "news",
+ },
{
label: "Discord",
selected: false,
@@ -82,6 +193,9 @@ export function HelpMenuButton({
case "tutorials":
handleOpenTutorials();
break;
+ case "news":
+ handleOpenNews();
+ break;
case "discord":
OpenUrl("https://discord.com/invite/75svZP2Vje");
break;
@@ -193,6 +307,8 @@ export function HelpMenuButton({
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [open, view, selected?.id]);
+ const modalTitle = view === "video" ? undefined : (view === "news" ? "News & Updates" : panelTitle);
+
return (
+ {view === "news" && (
+ {}} />
+ )}
+
{view === "grid" && (
<>
{tutorials.length === 0 ? (
diff --git a/frontend/libs/components/help-menu/tsconfig.json b/frontend/libs/components/help-menu/tsconfig.json
index 3836ddf7e4..08c8179d5d 100644
--- a/frontend/libs/components/help-menu/tsconfig.json
+++ b/frontend/libs/components/help-menu/tsconfig.json
@@ -14,6 +14,9 @@
{
"path": "../../tauri-api"
},
+ {
+ "path": "../../markdown-content"
+ },
{
"path": "./tsconfig.lib.json"
},
diff --git a/frontend/libs/components/help-menu/tsconfig.lib.json b/frontend/libs/components/help-menu/tsconfig.lib.json
index 30b057923e..405c64d1ae 100644
--- a/frontend/libs/components/help-menu/tsconfig.lib.json
+++ b/frontend/libs/components/help-menu/tsconfig.lib.json
@@ -54,6 +54,9 @@
},
{
"path": "../../tauri-api/tsconfig.lib.json"
+ },
+ {
+ "path": "../../markdown-content/tsconfig.lib.json"
}
]
}
diff --git a/frontend/libs/markdown-content/.babelrc b/frontend/libs/markdown-content/.babelrc
new file mode 100644
index 0000000000..1ea870ead4
--- /dev/null
+++ b/frontend/libs/markdown-content/.babelrc
@@ -0,0 +1,12 @@
+{
+ "presets": [
+ [
+ "@nx/react/babel",
+ {
+ "runtime": "automatic",
+ "useBuiltIns": "usage"
+ }
+ ]
+ ],
+ "plugins": []
+}
diff --git a/frontend/libs/markdown-content/NEWS_POSTS.md b/frontend/libs/markdown-content/NEWS_POSTS.md
new file mode 100644
index 0000000000..185ebcb8cb
--- /dev/null
+++ b/frontend/libs/markdown-content/NEWS_POSTS.md
@@ -0,0 +1,91 @@
+# News Posts
+
+This directory contains markdown files for news/blog posts that appear in the ArtCraft app and website.
+
+## Creating a New Post
+
+1. Create a new `.md` file in `src/lib/content/news/` with a URL-friendly filename (e.g., `my-new-feature.md`)
+2. Add the required frontmatter at the top of the file
+3. Write your content in markdown below the frontmatter
+
+### Frontmatter Template
+
+```yaml
+---
+title: Your Post Title
+abstract: A brief description of the post (shown in the news list)
+date: YYYY-MM-DD
+thumbnail: https://optional-image-url.com/image.png
+---
+```
+
+| Field | Required | Description |
+|-------------|----------|-------------------------------------------------------|
+| `title` | Yes | The title displayed in the news list and post header |
+| `abstract` | Yes | Short description shown in the news list preview |
+| `date` | Yes | Publication date in `YYYY-MM-DD` format |
+| `thumbnail` | No | URL to an optional header image for the post |
+
+### Example Post
+
+```markdown
+---
+title: Welcome to the ArtCraft Blog
+abstract: We are excited to launch our new blog where we will share updates and tutorials.
+date: 2026-01-16
+thumbnail: https://example.com/blog-header.png
+---
+
+# Hello World!
+
+Welcome to the official **ArtCraft Blog**. This is where we'll be posting about:
+
+- **New Features**: Be the first to know about the latest tools.
+- **Tutorials**: Learn how to get the most out of ArtCraft.
+- **Community Showcases**: Highlighting amazing work created by our users.
+
+## Stay Tuned
+
+We have a lot of exciting things in the pipeline!
+```
+
+## Building the News Feed
+
+The news posts are compiled into a `news.json` file that is served to the app.
+
+### Automatic Build (Dev Server)
+
+When you run the dev server, news posts are automatically compiled:
+
+```bash
+npx nx dev artcraft-website
+```
+
+### Manual Build
+
+To manually regenerate `news.json`:
+
+```bash
+cd frontend
+node scripts/generate-news-json.mjs
+```
+
+This will output the compiled JSON to:
+```
+frontend/apps/artcraft-website/public/news.json
+```
+
+## How It Works
+
+1. The `generate-news-json.mjs` script reads all `.md` files from the news content directory
+2. It parses the frontmatter and body content
+3. It generates a sorted JSON array (newest first by date)
+4. The JSON is saved to the website's `public/` folder
+5. The app fetches this JSON to display the news feed
+
+## Tips
+
+- **Filename = Slug**: The filename (without `.md`) becomes the URL slug for the post
+- **Sorting**: Posts are automatically sorted by date, newest first
+- **Markdown Support**: Full markdown is supported including headers, lists, bold, italic, images, and code blocks
+- **Hot Reload**: After adding/editing a post, restart the dev server to see changes (or run the build script manually)
diff --git a/frontend/libs/markdown-content/README.md b/frontend/libs/markdown-content/README.md
new file mode 100644
index 0000000000..e6469d6595
--- /dev/null
+++ b/frontend/libs/markdown-content/README.md
@@ -0,0 +1,7 @@
+# @storyteller/markdown-content
+
+This library was generated with [Nx](https://nx.dev).
+
+## Running unit tests
+
+Run `nx test @storyteller/markdown-content` to execute the unit tests via [Vitest](https://vitest.dev/).
diff --git a/frontend/libs/markdown-content/package.json b/frontend/libs/markdown-content/package.json
new file mode 100644
index 0000000000..a3c275a0c0
--- /dev/null
+++ b/frontend/libs/markdown-content/package.json
@@ -0,0 +1,17 @@
+{
+ "name": "@storyteller/markdown-content",
+ "version": "0.0.1",
+ "type": "module",
+ "main": "./dist/index.js",
+ "module": "./dist/index.js",
+ "types": "./dist/index.d.ts",
+ "exports": {
+ "./package.json": "./package.json",
+ ".": {
+ "development": "./src/index.ts",
+ "types": "./dist/index.d.ts",
+ "import": "./dist/index.js",
+ "default": "./dist/index.js"
+ }
+ }
+}
diff --git a/frontend/libs/markdown-content/src/index.ts b/frontend/libs/markdown-content/src/index.ts
new file mode 100644
index 0000000000..1c553a0b23
--- /dev/null
+++ b/frontend/libs/markdown-content/src/index.ts
@@ -0,0 +1,5 @@
+export * from './lib/markdown-content';
+export * from './lib/pages/NewsIndex';
+export * from './lib/pages/NewsPost';
+export * from './lib/data/content';
+export * from './lib/utils/markdown';
diff --git a/frontend/apps/artcraft-website/src/pages/faq/content/2d-canvas.md b/frontend/libs/markdown-content/src/lib/content/faq/2d-canvas.md
similarity index 100%
rename from frontend/apps/artcraft-website/src/pages/faq/content/2d-canvas.md
rename to frontend/libs/markdown-content/src/lib/content/faq/2d-canvas.md
diff --git a/frontend/apps/artcraft-website/src/pages/faq/content/3d-editor.md b/frontend/libs/markdown-content/src/lib/content/faq/3d-editor.md
similarity index 100%
rename from frontend/apps/artcraft-website/src/pages/faq/content/3d-editor.md
rename to frontend/libs/markdown-content/src/lib/content/faq/3d-editor.md
diff --git a/frontend/apps/artcraft-website/src/pages/faq/content/ai-image-generation-on-artcraft.md b/frontend/libs/markdown-content/src/lib/content/faq/ai-image-generation-on-artcraft.md
similarity index 100%
rename from frontend/apps/artcraft-website/src/pages/faq/content/ai-image-generation-on-artcraft.md
rename to frontend/libs/markdown-content/src/lib/content/faq/ai-image-generation-on-artcraft.md
diff --git a/frontend/apps/artcraft-website/src/pages/faq/content/edit-image.md b/frontend/libs/markdown-content/src/lib/content/faq/edit-image.md
similarity index 100%
rename from frontend/apps/artcraft-website/src/pages/faq/content/edit-image.md
rename to frontend/libs/markdown-content/src/lib/content/faq/edit-image.md
diff --git a/frontend/apps/artcraft-website/src/pages/faq/content/generate-ai-photos-and-videos-of-yourself.md b/frontend/libs/markdown-content/src/lib/content/faq/generate-ai-photos-and-videos-of-yourself.md
similarity index 100%
rename from frontend/apps/artcraft-website/src/pages/faq/content/generate-ai-photos-and-videos-of-yourself.md
rename to frontend/libs/markdown-content/src/lib/content/faq/generate-ai-photos-and-videos-of-yourself.md
diff --git a/frontend/apps/artcraft-website/src/pages/faq/content/image-to-video.md b/frontend/libs/markdown-content/src/lib/content/faq/image-to-video.md
similarity index 100%
rename from frontend/apps/artcraft-website/src/pages/faq/content/image-to-video.md
rename to frontend/libs/markdown-content/src/lib/content/faq/image-to-video.md
diff --git a/frontend/apps/artcraft-website/src/pages/faq/content/models-supported.md b/frontend/libs/markdown-content/src/lib/content/faq/models-supported.md
similarity index 77%
rename from frontend/apps/artcraft-website/src/pages/faq/content/models-supported.md
rename to frontend/libs/markdown-content/src/lib/content/faq/models-supported.md
index d85ba73555..9340089c76 100644
--- a/frontend/apps/artcraft-website/src/pages/faq/content/models-supported.md
+++ b/frontend/libs/markdown-content/src/lib/content/faq/models-supported.md
@@ -9,26 +9,37 @@ slug: models-supported
## Image models
+- Grok
+- Midjourney
- Flux Pro 1.1 Ultra
- Flux Pro 1.1
- Flux 1 Dev
- Flux 1 Schnell
-- Midjourney
-- GPT Image 1
-- Gemini 2.5 Flash (editing)
+- Nano Banana
+- Nano Banana Pro
+- GPT Image 1 (GPT-4o)
+- GPT Image 1.5
+- Seedream 4
+- Seedream 4.5
- Flux Pro Kontext Max (editing)
- Flux Pro Inpaint (editing)
- Flux Dev Juggernaut Inpaint (editing)
## Video models
+- Grok Video
- Kling 1.6 Pro
- Kling 2.1 Pro
- Kling 2.1 Master
+- Kling 2.5 Turbo Pro
+- Kling 2.6 Pro
- Seedance 1.0 Lite
- Sora 2
+- Sora 2 Pro
- Google Veo 2
- Google Veo 3
- Google Veo 3 Fast
+- Google Veo 3.1
+- Google Veo 3.1 Fast
See also: [Text to Image](../text-to-image) · [Image to Video](../image-to-video)
diff --git a/frontend/apps/artcraft-website/src/pages/faq/content/text-to-image.md b/frontend/libs/markdown-content/src/lib/content/faq/text-to-image.md
similarity index 100%
rename from frontend/apps/artcraft-website/src/pages/faq/content/text-to-image.md
rename to frontend/libs/markdown-content/src/lib/content/faq/text-to-image.md
diff --git a/frontend/libs/markdown-content/src/lib/content/news/welcome.md b/frontend/libs/markdown-content/src/lib/content/news/welcome.md
new file mode 100644
index 0000000000..64c09ea6af
--- /dev/null
+++ b/frontend/libs/markdown-content/src/lib/content/news/welcome.md
@@ -0,0 +1,21 @@
+---
+title: Welcome to the ArtCraft Blog
+abstract: We are excited to launch our new blog where we will share updates, tutorials, and behind-the-scenes content.
+date: 2026-01-16
+---
+
+# Hello World!
+
+Welcome to the official **ArtCraft Blog**. This is where we'll be posting about:
+
+- **New Features**: Be the first to know about the latest tools and capabilities added to ArtCraft.
+- **Tutorials**: Learn how to get the most out of our AI generation and editing suite.
+- **Community Showcases**: Highlighting amazing work created by our users.
+- **Development Updates**: Insights into what we are building next.
+
+## Stay Tuned
+
+We have a lot of exciting things in the pipeline. Make sure to check back regularly!
+
+Happy Crafting!
+The ArtCraft Team
diff --git a/frontend/apps/artcraft-website/src/pages/tutorials/content/2d-editor-basics.md b/frontend/libs/markdown-content/src/lib/content/tutorials/2d-editor-basics.md
similarity index 100%
rename from frontend/apps/artcraft-website/src/pages/tutorials/content/2d-editor-basics.md
rename to frontend/libs/markdown-content/src/lib/content/tutorials/2d-editor-basics.md
diff --git a/frontend/apps/artcraft-website/src/pages/tutorials/content/3d-editor-basics.md b/frontend/libs/markdown-content/src/lib/content/tutorials/3d-editor-basics.md
similarity index 100%
rename from frontend/apps/artcraft-website/src/pages/tutorials/content/3d-editor-basics.md
rename to frontend/libs/markdown-content/src/lib/content/tutorials/3d-editor-basics.md
diff --git a/frontend/apps/artcraft-website/src/pages/tutorials/content/turn-images-into-objects.md b/frontend/libs/markdown-content/src/lib/content/tutorials/turn-images-into-objects.md
similarity index 100%
rename from frontend/apps/artcraft-website/src/pages/tutorials/content/turn-images-into-objects.md
rename to frontend/libs/markdown-content/src/lib/content/tutorials/turn-images-into-objects.md
diff --git a/frontend/libs/markdown-content/src/lib/data/content.ts b/frontend/libs/markdown-content/src/lib/data/content.ts
new file mode 100644
index 0000000000..906ea37bb1
--- /dev/null
+++ b/frontend/libs/markdown-content/src/lib/data/content.ts
@@ -0,0 +1,125 @@
+import { parseFrontmatter, pathToFilename } from "../utils/markdown";
+
+// NEWS
+const newsFiles = import.meta.glob("../content/news/*.md", {
+ query: "?raw",
+ import: "default",
+ eager: true,
+});
+
+export interface NewsPostData {
+ slug: string;
+ title: string;
+ description: string;
+ date: string;
+ body: string;
+ thumbnail?: string;
+}
+
+export const getNewsPosts = (): NewsPostData[] => {
+ return Object.entries(newsFiles)
+ .map(([path, raw]) => {
+ const { frontmatter, body } = parseFrontmatter(raw as string);
+ const slug = pathToFilename(path);
+ return {
+ slug,
+ title: frontmatter.title || slug,
+ description: frontmatter.abstract || "",
+ date: frontmatter.date || "",
+ thumbnail: frontmatter.thumbnail,
+ body,
+ };
+ })
+ .sort((a, b) => {
+ if (a.date && b.date)
+ return new Date(b.date).getTime() - new Date(a.date).getTime();
+ return 0; // consistent output
+ });
+};
+
+export const getNewsPostBySlug = (slug: string): NewsPostData | null => {
+ const posts = getNewsPosts();
+ return posts.find((p) => p.slug === slug) || null;
+};
+
+// FAQ
+const faqFiles = import.meta.glob("../content/faq/*.md", {
+ query: "?raw",
+ import: "default",
+ eager: true,
+});
+
+export interface FaqItem {
+ slug: string;
+ title: string;
+ description: string;
+ body: string;
+ isPublished: boolean;
+ thumbnail?: string;
+}
+
+export const getFaqItems = (): FaqItem[] => {
+ return Object.entries(faqFiles).map(([path, raw]) => {
+ const { frontmatter, body } = parseFrontmatter(raw as string);
+ const slug = pathToFilename(path);
+ return {
+ slug,
+ title: frontmatter.title || slug,
+ description: frontmatter.abstract || "",
+ body,
+ isPublished: frontmatter.isPublished !== "false",
+ thumbnail: frontmatter.thumbnail,
+ };
+ });
+};
+
+export const getFaqItemBySlug = (slug: string): FaqItem | null => {
+ const items = getFaqItems();
+ return items.find(i => i.slug === slug) || null;
+};
+
+
+// TUTORIALS
+const tutorialFiles = import.meta.glob("../content/tutorials/*.md", {
+ query: "?raw",
+ import: "default",
+ eager: true,
+});
+
+export interface TutorialItem {
+ slug: string;
+ title: string;
+ abstract: string;
+ category?: string;
+ thumbnail?: string;
+ videoUrl?: string;
+ youtubeId?: string;
+ aliases?: string[];
+ body: string;
+ isPublished: boolean;
+}
+
+export const getTutorialItems = (): TutorialItem[] => {
+ return Object.entries(tutorialFiles).map(([path, raw]) => {
+ const { frontmatter, body } = parseFrontmatter(raw as string);
+ const slug = pathToFilename(path);
+ return {
+ slug: (frontmatter.slug || slug).trim().toLowerCase(),
+ title: frontmatter.title || slug,
+ abstract: frontmatter.abstract || "",
+ category: frontmatter.category,
+ thumbnail: frontmatter.thumbnail,
+ videoUrl: frontmatter.videoUrl,
+ youtubeId: frontmatter.youtubeId,
+ aliases: frontmatter.aliases ? frontmatter.aliases.split(/[\s,]+/).map(s => s.trim().toLowerCase()).filter(Boolean) : [],
+ body,
+ isPublished: frontmatter.isPublished !== "false",
+ };
+ });
+};
+
+export const getTutorialItemBySlug = (slug: string): TutorialItem | null => {
+ const items = getTutorialItems();
+ const wanted = slug.toLowerCase();
+ return items.find(t => t.slug === wanted || t.aliases?.includes(wanted)) || null;
+};
diff --git a/frontend/libs/markdown-content/src/lib/markdown-content.module.css b/frontend/libs/markdown-content/src/lib/markdown-content.module.css
new file mode 100644
index 0000000000..d0246c74b9
--- /dev/null
+++ b/frontend/libs/markdown-content/src/lib/markdown-content.module.css
@@ -0,0 +1,7 @@
+/*
+ * Replace this with your own classes
+ *
+ * e.g.
+ * .container {
+ * }
+*/
\ No newline at end of file
diff --git a/frontend/libs/markdown-content/src/lib/markdown-content.spec.tsx b/frontend/libs/markdown-content/src/lib/markdown-content.spec.tsx
new file mode 100644
index 0000000000..347595033d
--- /dev/null
+++ b/frontend/libs/markdown-content/src/lib/markdown-content.spec.tsx
@@ -0,0 +1,12 @@
+import { render } from '@testing-library/react';
+
+import StorytellerMarkdownContent from './markdown-content';
+
+describe('StorytellerMarkdownContent', () => {
+
+ it('should render successfully', () => {
+ const { baseElement } = render( );
+ expect(baseElement).toBeTruthy();
+ });
+
+});
diff --git a/frontend/libs/markdown-content/src/lib/markdown-content.tsx b/frontend/libs/markdown-content/src/lib/markdown-content.tsx
new file mode 100644
index 0000000000..aa33498dab
--- /dev/null
+++ b/frontend/libs/markdown-content/src/lib/markdown-content.tsx
@@ -0,0 +1,15 @@
+
+import styles from './markdown-content.module.css';
+
+export function StorytellerMarkdownContent() {
+ return (
+
+
Welcome to StorytellerMarkdownContent!
+
+ );
+}
+
+export default StorytellerMarkdownContent;
+
+
+
diff --git a/frontend/libs/markdown-content/src/lib/pages/NewsIndex.tsx b/frontend/libs/markdown-content/src/lib/pages/NewsIndex.tsx
new file mode 100644
index 0000000000..9928d94f27
--- /dev/null
+++ b/frontend/libs/markdown-content/src/lib/pages/NewsIndex.tsx
@@ -0,0 +1,64 @@
+import { Link } from "react-router-dom";
+import { getNewsPosts } from "../data/content";
+import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
+import { faArrowRight } from "@fortawesome/pro-solid-svg-icons";
+
+interface NewsIndexProps {
+ basePath: string; // e.g. "/news" or "/blog"
+}
+
+export const NewsIndex = ({ basePath }: NewsIndexProps) => {
+ const items = getNewsPosts();
+ const title = "News & Updates";
+ const description =
+ "Latest updates, features, and announcements from the ArtCraft team.";
+
+ // Note: SEO/Head handling should be done by the consumer app if needed (e.g. Helmet)
+ // But we can check if we want to include it here or let the parent handle it.
+ // For now, we return the UI structure.
+
+ return (
+
+
+
+
+
+
+ {title}
+
+
+ {description}
+
+
+
+
+ {items.map((item) => (
+
+
+
+ {item.title}
+
+
+ {item.date && (
+ {item.date}
+ )}
+
+
{item.description}
+
+ ))}
+ {items.length === 0 && (
+
+ No updates yet. Check back soon!
+
+ )}
+
+
+
+ );
+};
diff --git a/frontend/libs/markdown-content/src/lib/pages/NewsPost.tsx b/frontend/libs/markdown-content/src/lib/pages/NewsPost.tsx
new file mode 100644
index 0000000000..5a1de18e0b
--- /dev/null
+++ b/frontend/libs/markdown-content/src/lib/pages/NewsPost.tsx
@@ -0,0 +1,93 @@
+import { Link, useParams } from "react-router-dom";
+import { getNewsPostBySlug } from "../data/content";
+import { markdownToHtml } from "../utils/markdown";
+import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
+import { faChevronLeft } from "@fortawesome/pro-solid-svg-icons";
+import { useMemo } from "react";
+
+interface NewsPostProps {
+ slug?: string;
+ basePath: string; // e.g. "/news"
+}
+
+export const NewsPost = ({ slug: propSlug, basePath }: NewsPostProps) => {
+ const { slug: paramSlug } = useParams();
+ const slug = propSlug || paramSlug;
+ const post = slug ? getNewsPostBySlug(slug) : null;
+
+ const html = useMemo(() =>
+ post ? markdownToHtml(post.body) : ""
+ , [post]);
+
+ if (!post) {
+ return (
+
+
+
Not found
+
We couldn't find this article.
+
Return to News
+
+
+ );
+ }
+
+ return (
+
+
+
+
+
+
+
+ Back to News
+
+ {post.date && (
+ {post.date}
+ )}
+
+
+
+ {post.title}
+
+
+ {post.description &&
{post.description}
}
+
+ {post.thumbnail && (
+
+
+
+ )}
+
+
+
+
+
+ );
+};
diff --git a/frontend/apps/artcraft-website/src/utils/markdown.ts b/frontend/libs/markdown-content/src/lib/utils/markdown.ts
similarity index 94%
rename from frontend/apps/artcraft-website/src/utils/markdown.ts
rename to frontend/libs/markdown-content/src/lib/utils/markdown.ts
index ba9c0782e2..d0129ab29d 100644
--- a/frontend/apps/artcraft-website/src/utils/markdown.ts
+++ b/frontend/libs/markdown-content/src/lib/utils/markdown.ts
@@ -26,8 +26,13 @@ export const markdownToHtml = (
};
const renderInline = (text: string): string => {
+ // bold: **text**
+ let out = text.replace(/\*\*([^*]+)\*\*/g, "$1 ");
+ // italic: *text*
+ out = out.replace(/\*([^*]+)\*/g, "$1 ");
+
// images: 
- let out = text.replace(/!\[([^\]]*)\]\(([^)]+)\)/g, (_m, alt, url) => {
+ out = out.replace(/!\[([^\]]*)\]\(([^)]+)\)/g, (_m, alt, url) => {
const safeAlt = String(alt || "").replace(/"/g, """);
const safeUrl = String(url || "");
return ` `;
diff --git a/frontend/libs/markdown-content/tsconfig.json b/frontend/libs/markdown-content/tsconfig.json
new file mode 100644
index 0000000000..8c5fc025ff
--- /dev/null
+++ b/frontend/libs/markdown-content/tsconfig.json
@@ -0,0 +1,13 @@
+{
+ "files": [],
+ "include": [],
+ "references": [
+ {
+ "path": "./tsconfig.lib.json"
+ },
+ {
+ "path": "./tsconfig.spec.json"
+ }
+ ],
+ "extends": "../../tsconfig.base.json"
+}
diff --git a/frontend/libs/markdown-content/tsconfig.lib.json b/frontend/libs/markdown-content/tsconfig.lib.json
new file mode 100644
index 0000000000..ea31c66850
--- /dev/null
+++ b/frontend/libs/markdown-content/tsconfig.lib.json
@@ -0,0 +1,45 @@
+{
+ "extends": "../../tsconfig.base.json",
+ "compilerOptions": {
+ "outDir": "dist",
+ "types": [
+ "node",
+ "@nx/react/typings/cssmodule.d.ts",
+ "@nx/react/typings/image.d.ts",
+ "vite/client"
+ ],
+ "rootDir": "src",
+ "jsx": "react-jsx",
+ "tsBuildInfoFile": "dist/tsconfig.lib.tsbuildinfo"
+ },
+ "exclude": [
+ "out-tsc",
+ "dist",
+ "**/*.spec.ts",
+ "**/*.test.ts",
+ "**/*.spec.tsx",
+ "**/*.test.tsx",
+ "**/*.spec.js",
+ "**/*.test.js",
+ "**/*.spec.jsx",
+ "**/*.test.jsx",
+ "vite.config.ts",
+ "vite.config.mts",
+ "vitest.config.ts",
+ "vitest.config.mts",
+ "src/**/*.test.ts",
+ "src/**/*.spec.ts",
+ "src/**/*.test.tsx",
+ "src/**/*.spec.tsx",
+ "src/**/*.test.js",
+ "src/**/*.spec.js",
+ "src/**/*.test.jsx",
+ "src/**/*.spec.jsx"
+ ],
+ "include": [
+ "src/**/*.js",
+ "src/**/*.jsx",
+ "src/**/*.ts",
+ "src/**/*.tsx"
+ ]
+}
diff --git a/frontend/libs/markdown-content/tsconfig.spec.json b/frontend/libs/markdown-content/tsconfig.spec.json
new file mode 100644
index 0000000000..c1faced82c
--- /dev/null
+++ b/frontend/libs/markdown-content/tsconfig.spec.json
@@ -0,0 +1,34 @@
+{
+ "extends": "../../tsconfig.base.json",
+ "compilerOptions": {
+ "outDir": "./out-tsc/vitest",
+ "types": [
+ "vitest/globals",
+ "vitest/importMeta",
+ "vite/client",
+ "node",
+ "vitest"
+ ],
+ "jsx": "react-jsx"
+ },
+ "include": [
+ "vite.config.ts",
+ "vite.config.mts",
+ "vitest.config.ts",
+ "vitest.config.mts",
+ "src/**/*.test.ts",
+ "src/**/*.spec.ts",
+ "src/**/*.test.tsx",
+ "src/**/*.spec.tsx",
+ "src/**/*.test.js",
+ "src/**/*.spec.js",
+ "src/**/*.test.jsx",
+ "src/**/*.spec.jsx",
+ "src/**/*.d.ts"
+ ],
+ "references": [
+ {
+ "path": "./tsconfig.lib.json"
+ }
+ ]
+}
diff --git a/frontend/libs/markdown-content/vite.config.ts b/frontend/libs/markdown-content/vite.config.ts
new file mode 100644
index 0000000000..9def19074d
--- /dev/null
+++ b/frontend/libs/markdown-content/vite.config.ts
@@ -0,0 +1,49 @@
+///
+import { defineConfig } from 'vite';
+import react from '@vitejs/plugin-react';
+import dts from 'vite-plugin-dts';
+import * as path from 'path';
+
+export default defineConfig(() => ({
+ root: __dirname,
+ cacheDir: '../../node_modules/.vite/libs/markdown-content',
+ plugins: [react(), dts({ entryRoot: 'src', tsconfigPath: path.join(__dirname, 'tsconfig.lib.json') })],
+ // Uncomment this if you are using workers.
+ // worker: {
+ // plugins: [ nxViteTsPaths() ],
+ // },
+ // Configuration for building your library.
+ // See: https://vitejs.dev/guide/build.html#library-mode
+ build: {
+ outDir: './dist',
+ emptyOutDir: true,
+ reportCompressedSize: true,
+ commonjsOptions: {
+ transformMixedEsModules: true,
+ },
+ lib: {
+ // Could also be a dictionary or array of multiple entry points.
+ entry: 'src/index.ts',
+ name: '@storyteller/markdown-content',
+ fileName: 'index',
+ // Change this to the formats you want to support.
+ // Don't forget to update your package.json as well.
+ formats: ['es' as const]
+ },
+ rollupOptions: {
+ // External packages that should not be bundled into your library.
+ external: ['react','react-dom','react/jsx-runtime']
+ },
+ },
+ test: {
+ watch: false,
+ globals: true,
+ environment: 'jsdom',
+ include: ['{src,tests}/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'],
+ reporters: ['default'],
+ coverage: {
+ reportsDirectory: './test-output/vitest/coverage',
+ provider: 'v8' as const,
+ }
+ },
+}));
diff --git a/frontend/package-lock.json b/frontend/package-lock.json
index f482bdc0a5..194870a0b9 100644
--- a/frontend/package-lock.json
+++ b/frontend/package-lock.json
@@ -258,36 +258,6 @@
}
}
},
- "apps/artcraft/node_modules/@typescript-eslint/parser": {
- "version": "6.21.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz",
- "integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==",
- "dev": true,
- "license": "BSD-2-Clause",
- "peer": true,
- "dependencies": {
- "@typescript-eslint/scope-manager": "6.21.0",
- "@typescript-eslint/types": "6.21.0",
- "@typescript-eslint/typescript-estree": "6.21.0",
- "@typescript-eslint/visitor-keys": "6.21.0",
- "debug": "^4.3.4"
- },
- "engines": {
- "node": "^16.0.0 || >=18.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "eslint": "^7.0.0 || ^8.0.0"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
"apps/artcraft/node_modules/autoprefixer": {
"version": "10.4.22",
"resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.22.tgz",
@@ -663,6 +633,10 @@
"name": "@frontend/login",
"version": "0.0.1"
},
+ "libs/markdown-content": {
+ "name": "@storyteller/markdown-content",
+ "version": "0.0.1"
+ },
"libs/model-list": {
"name": "@storyteller/model-list",
"version": "0.0.1"
@@ -750,12 +724,11 @@
}
},
"node_modules/@babel/code-frame": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz",
- "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==",
- "license": "MIT",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.28.6.tgz",
+ "integrity": "sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q==",
"dependencies": {
- "@babel/helper-validator-identifier": "^7.27.1",
+ "@babel/helper-validator-identifier": "^7.28.5",
"js-tokens": "^4.0.0",
"picocolors": "^1.1.1"
},
@@ -812,13 +785,12 @@
}
},
"node_modules/@babel/generator": {
- "version": "7.28.5",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.5.tgz",
- "integrity": "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==",
- "license": "MIT",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.6.tgz",
+ "integrity": "sha512-lOoVRwADj8hjf7al89tvQ2a1lf53Z+7tiXMgpZJL3maQPDxh0DgLMN62B2MKUOFcoodBHLMbDM6WAbKgNy5Suw==",
"dependencies": {
- "@babel/parser": "^7.28.5",
- "@babel/types": "^7.28.5",
+ "@babel/parser": "^7.28.6",
+ "@babel/types": "^7.28.6",
"@jridgewell/gen-mapping": "^0.3.12",
"@jridgewell/trace-mapping": "^0.3.28",
"jsesc": "^3.0.2"
@@ -1144,12 +1116,11 @@
}
},
"node_modules/@babel/parser": {
- "version": "7.28.5",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz",
- "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==",
- "license": "MIT",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.6.tgz",
+ "integrity": "sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ==",
"dependencies": {
- "@babel/types": "^7.28.5"
+ "@babel/types": "^7.28.6"
},
"bin": {
"parser": "bin/babel-parser.js"
@@ -1277,7 +1248,6 @@
"version": "7.8.4",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
"integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==",
- "license": "MIT",
"peer": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.8.0"
@@ -1290,7 +1260,6 @@
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz",
"integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==",
- "license": "MIT",
"peer": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.8.0"
@@ -1303,7 +1272,6 @@
"version": "7.12.13",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz",
"integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==",
- "license": "MIT",
"peer": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.12.13"
@@ -1316,7 +1284,6 @@
"version": "7.14.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz",
"integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==",
- "license": "MIT",
"peer": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.14.5"
@@ -1379,7 +1346,6 @@
"version": "7.10.4",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz",
"integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==",
- "license": "MIT",
"peer": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.10.4"
@@ -1392,7 +1358,6 @@
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
"integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==",
- "license": "MIT",
"peer": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.8.0"
@@ -1421,7 +1386,6 @@
"version": "7.10.4",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz",
"integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==",
- "license": "MIT",
"peer": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.10.4"
@@ -1434,7 +1398,6 @@
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
"integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==",
- "license": "MIT",
"peer": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.8.0"
@@ -1447,7 +1410,6 @@
"version": "7.10.4",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz",
"integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==",
- "license": "MIT",
"peer": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.10.4"
@@ -1460,7 +1422,6 @@
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
"integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
- "license": "MIT",
"peer": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.8.0"
@@ -1473,7 +1434,6 @@
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz",
"integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==",
- "license": "MIT",
"peer": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.8.0"
@@ -1486,7 +1446,6 @@
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz",
"integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==",
- "license": "MIT",
"peer": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.8.0"
@@ -1499,7 +1458,6 @@
"version": "7.14.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz",
"integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==",
- "license": "MIT",
"peer": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.14.5"
@@ -1515,7 +1473,6 @@
"version": "7.14.5",
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz",
"integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==",
- "license": "MIT",
"peer": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.14.5"
@@ -2745,14 +2702,13 @@
}
},
"node_modules/@babel/template": {
- "version": "7.27.2",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz",
- "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==",
- "license": "MIT",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz",
+ "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==",
"dependencies": {
- "@babel/code-frame": "^7.27.1",
- "@babel/parser": "^7.27.2",
- "@babel/types": "^7.27.1"
+ "@babel/code-frame": "^7.28.6",
+ "@babel/parser": "^7.28.6",
+ "@babel/types": "^7.28.6"
},
"engines": {
"node": ">=6.9.0"
@@ -2778,18 +2734,17 @@
},
"node_modules/@babel/traverse--for-generate-function-map": {
"name": "@babel/traverse",
- "version": "7.28.5",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.5.tgz",
- "integrity": "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==",
- "license": "MIT",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.6.tgz",
+ "integrity": "sha512-fgWX62k02qtjqdSNTAGxmKYY/7FSL9WAS1o2Hu5+I5m9T0yxZzr4cnrfXQ/MX0rIifthCSs6FKTlzYbJcPtMNg==",
"peer": true,
"dependencies": {
- "@babel/code-frame": "^7.27.1",
- "@babel/generator": "^7.28.5",
+ "@babel/code-frame": "^7.28.6",
+ "@babel/generator": "^7.28.6",
"@babel/helper-globals": "^7.28.0",
- "@babel/parser": "^7.28.5",
- "@babel/template": "^7.27.2",
- "@babel/types": "^7.28.5",
+ "@babel/parser": "^7.28.6",
+ "@babel/template": "^7.28.6",
+ "@babel/types": "^7.28.6",
"debug": "^4.3.1"
},
"engines": {
@@ -2797,10 +2752,9 @@
}
},
"node_modules/@babel/types": {
- "version": "7.28.5",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz",
- "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==",
- "license": "MIT",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.6.tgz",
+ "integrity": "sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg==",
"dependencies": {
"@babel/helper-string-parser": "^7.27.1",
"@babel/helper-validator-identifier": "^7.28.5"
@@ -3824,7 +3778,6 @@
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/@isaacs/ttlcache/-/ttlcache-1.4.1.tgz",
"integrity": "sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==",
- "license": "ISC",
"peer": true,
"engines": {
"node": ">=12"
@@ -3834,7 +3787,6 @@
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz",
"integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==",
- "license": "ISC",
"peer": true,
"dependencies": {
"camelcase": "^5.3.1",
@@ -3851,7 +3803,6 @@
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
"integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
- "license": "MIT",
"peer": true,
"dependencies": {
"sprintf-js": "~1.0.2"
@@ -3861,7 +3812,6 @@
"version": "5.3.1",
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
"integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
- "license": "MIT",
"peer": true,
"engines": {
"node": ">=6"
@@ -3871,7 +3821,6 @@
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
"integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
- "license": "MIT",
"peer": true,
"dependencies": {
"locate-path": "^5.0.0",
@@ -3885,7 +3834,6 @@
"version": "3.14.2",
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz",
"integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==",
- "license": "MIT",
"peer": true,
"dependencies": {
"argparse": "^1.0.7",
@@ -3899,7 +3847,6 @@
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
"integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
- "license": "MIT",
"peer": true,
"dependencies": {
"p-locate": "^4.1.0"
@@ -3912,7 +3859,6 @@
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
"integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
- "license": "MIT",
"peer": true,
"dependencies": {
"p-try": "^2.0.0"
@@ -3928,7 +3874,6 @@
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
"integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
- "license": "MIT",
"peer": true,
"dependencies": {
"p-limit": "^2.2.0"
@@ -3941,7 +3886,6 @@
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
"integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
- "license": "MIT",
"peer": true,
"engines": {
"node": ">=8"
@@ -3956,117 +3900,10 @@
"node": ">=8"
}
},
- "node_modules/@jest/console": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz",
- "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@jest/types": "^29.6.3",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "jest-message-util": "^29.7.0",
- "jest-util": "^29.7.0",
- "slash": "^3.0.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/@jest/core": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz",
- "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@jest/console": "^29.7.0",
- "@jest/reporters": "^29.7.0",
- "@jest/test-result": "^29.7.0",
- "@jest/transform": "^29.7.0",
- "@jest/types": "^29.6.3",
- "@types/node": "*",
- "ansi-escapes": "^4.2.1",
- "chalk": "^4.0.0",
- "ci-info": "^3.2.0",
- "exit": "^0.1.2",
- "graceful-fs": "^4.2.9",
- "jest-changed-files": "^29.7.0",
- "jest-config": "^29.7.0",
- "jest-haste-map": "^29.7.0",
- "jest-message-util": "^29.7.0",
- "jest-regex-util": "^29.6.3",
- "jest-resolve": "^29.7.0",
- "jest-resolve-dependencies": "^29.7.0",
- "jest-runner": "^29.7.0",
- "jest-runtime": "^29.7.0",
- "jest-snapshot": "^29.7.0",
- "jest-util": "^29.7.0",
- "jest-validate": "^29.7.0",
- "jest-watcher": "^29.7.0",
- "micromatch": "^4.0.4",
- "pretty-format": "^29.7.0",
- "slash": "^3.0.0",
- "strip-ansi": "^6.0.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- },
- "peerDependencies": {
- "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
- },
- "peerDependenciesMeta": {
- "node-notifier": {
- "optional": true
- }
- }
- },
- "node_modules/@jest/core/node_modules/ansi-styles": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
- "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/@jest/core/node_modules/pretty-format": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz",
- "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@jest/schemas": "^29.6.3",
- "ansi-styles": "^5.0.0",
- "react-is": "^18.0.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/@jest/core/node_modules/react-is": {
- "version": "18.3.1",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz",
- "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==",
- "dev": true,
- "license": "MIT",
- "peer": true
- },
"node_modules/@jest/create-cache-key-function": {
"version": "29.7.0",
"resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-29.7.0.tgz",
"integrity": "sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA==",
- "license": "MIT",
"peer": true,
"dependencies": {
"@jest/types": "^29.6.3"
@@ -4079,7 +3916,6 @@
"version": "29.7.0",
"resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz",
"integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==",
- "license": "MIT",
"peer": true,
"dependencies": {
"@jest/fake-timers": "^29.7.0",
@@ -4091,21 +3927,6 @@
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
- "node_modules/@jest/expect": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz",
- "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "expect": "^29.7.0",
- "jest-snapshot": "^29.7.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
"node_modules/@jest/expect-utils": {
"version": "29.7.0",
"resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz",
@@ -4123,7 +3944,6 @@
"version": "29.7.0",
"resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz",
"integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==",
- "license": "MIT",
"peer": true,
"dependencies": {
"@jest/types": "^29.6.3",
@@ -4137,152 +3957,6 @@
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
- "node_modules/@jest/globals": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz",
- "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@jest/environment": "^29.7.0",
- "@jest/expect": "^29.7.0",
- "@jest/types": "^29.6.3",
- "jest-mock": "^29.7.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/@jest/reporters": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz",
- "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@bcoe/v8-coverage": "^0.2.3",
- "@jest/console": "^29.7.0",
- "@jest/test-result": "^29.7.0",
- "@jest/transform": "^29.7.0",
- "@jest/types": "^29.6.3",
- "@jridgewell/trace-mapping": "^0.3.18",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "collect-v8-coverage": "^1.0.0",
- "exit": "^0.1.2",
- "glob": "^7.1.3",
- "graceful-fs": "^4.2.9",
- "istanbul-lib-coverage": "^3.0.0",
- "istanbul-lib-instrument": "^6.0.0",
- "istanbul-lib-report": "^3.0.0",
- "istanbul-lib-source-maps": "^4.0.0",
- "istanbul-reports": "^3.1.3",
- "jest-message-util": "^29.7.0",
- "jest-util": "^29.7.0",
- "jest-worker": "^29.7.0",
- "slash": "^3.0.0",
- "string-length": "^4.0.1",
- "strip-ansi": "^6.0.0",
- "v8-to-istanbul": "^9.0.1"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- },
- "peerDependencies": {
- "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
- },
- "peerDependenciesMeta": {
- "node-notifier": {
- "optional": true
- }
- }
- },
- "node_modules/@jest/reporters/node_modules/@bcoe/v8-coverage": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz",
- "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==",
- "dev": true,
- "license": "MIT",
- "peer": true
- },
- "node_modules/@jest/reporters/node_modules/brace-expansion": {
- "version": "1.1.12",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
- "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/@jest/reporters/node_modules/glob": {
- "version": "7.2.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
- "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
- "deprecated": "Glob versions prior to v9 are no longer supported",
- "dev": true,
- "license": "ISC",
- "peer": true,
- "dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- },
- "engines": {
- "node": "*"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/@jest/reporters/node_modules/istanbul-lib-source-maps": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz",
- "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==",
- "dev": true,
- "license": "BSD-3-Clause",
- "peer": true,
- "dependencies": {
- "debug": "^4.1.1",
- "istanbul-lib-coverage": "^3.0.0",
- "source-map": "^0.6.1"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@jest/reporters/node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dev": true,
- "license": "ISC",
- "peer": true,
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/@jest/reporters/node_modules/source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true,
- "license": "BSD-3-Clause",
- "peer": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/@jest/schemas": {
"version": "29.6.3",
"resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz",
@@ -4295,61 +3969,10 @@
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
- "node_modules/@jest/source-map": {
- "version": "29.6.3",
- "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz",
- "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@jridgewell/trace-mapping": "^0.3.18",
- "callsites": "^3.0.0",
- "graceful-fs": "^4.2.9"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/@jest/test-result": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz",
- "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@jest/console": "^29.7.0",
- "@jest/types": "^29.6.3",
- "@types/istanbul-lib-coverage": "^2.0.0",
- "collect-v8-coverage": "^1.0.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/@jest/test-sequencer": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz",
- "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@jest/test-result": "^29.7.0",
- "graceful-fs": "^4.2.9",
- "jest-haste-map": "^29.7.0",
- "slash": "^3.0.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
"node_modules/@jest/transform": {
"version": "29.7.0",
"resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz",
"integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==",
- "license": "MIT",
"peer": true,
"dependencies": {
"@babel/core": "^7.11.6",
@@ -7191,20 +6814,18 @@
}
},
"node_modules/@react-native/assets-registry": {
- "version": "0.82.1",
- "resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.82.1.tgz",
- "integrity": "sha512-B1SRwpntaAcckiatxbjzylvNK562Ayza05gdJCjDQHTiDafa1OABmyB5LHt7qWDOpNkaluD+w11vHF7pBmTpzQ==",
- "license": "MIT",
+ "version": "0.83.1",
+ "resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.83.1.tgz",
+ "integrity": "sha512-AT7/T6UwQqO39bt/4UL5EXvidmrddXrt0yJa7ENXndAv+8yBzMsZn6fyiax6+ERMt9GLzAECikv3lj22cn2wJA==",
"peer": true,
"engines": {
"node": ">= 20.19.4"
}
},
"node_modules/@react-native/codegen": {
- "version": "0.82.1",
- "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.82.1.tgz",
- "integrity": "sha512-ezXTN70ygVm9l2m0i+pAlct0RntoV4afftWMGUIeAWLgaca9qItQ54uOt32I/9dBJvzBibT33luIR/pBG0dQvg==",
- "license": "MIT",
+ "version": "0.83.1",
+ "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.83.1.tgz",
+ "integrity": "sha512-FpRxenonwH+c2a5X5DZMKUD7sCudHxB3eSQPgV9R+uxd28QWslyAWrpnJM/Az96AEksHnymDzEmzq2HLX5nb+g==",
"peer": true,
"dependencies": {
"@babel/core": "^7.25.2",
@@ -7226,7 +6847,6 @@
"version": "1.1.12",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
"integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
- "license": "MIT",
"peer": true,
"dependencies": {
"balanced-match": "^1.0.0",
@@ -7238,7 +6858,6 @@
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
"integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
"deprecated": "Glob versions prior to v9 are no longer supported",
- "license": "ISC",
"peer": true,
"dependencies": {
"fs.realpath": "^1.0.0",
@@ -7259,7 +6878,6 @@
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "license": "ISC",
"peer": true,
"dependencies": {
"brace-expansion": "^1.1.7"
@@ -7269,18 +6887,17 @@
}
},
"node_modules/@react-native/community-cli-plugin": {
- "version": "0.82.1",
- "resolved": "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.82.1.tgz",
- "integrity": "sha512-H/eMdtOy9nEeX7YVeEG1N2vyCoifw3dr9OV8++xfUElNYV7LtSmJ6AqxZUUfxGJRDFPQvaU/8enmJlM/l11VxQ==",
- "license": "MIT",
+ "version": "0.83.1",
+ "resolved": "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.83.1.tgz",
+ "integrity": "sha512-FqR1ftydr08PYlRbrDF06eRiiiGOK/hNmz5husv19sK6iN5nHj1SMaCIVjkH/a5vryxEddyFhU6PzO/uf4kOHg==",
"peer": true,
"dependencies": {
- "@react-native/dev-middleware": "0.82.1",
+ "@react-native/dev-middleware": "0.83.1",
"debug": "^4.4.0",
"invariant": "^2.2.4",
- "metro": "^0.83.1",
- "metro-config": "^0.83.1",
- "metro-core": "^0.83.1",
+ "metro": "^0.83.3",
+ "metro-config": "^0.83.3",
+ "metro-core": "^0.83.3",
"semver": "^7.1.3"
},
"engines": {
@@ -7300,20 +6917,18 @@
}
},
"node_modules/@react-native/debugger-frontend": {
- "version": "0.82.1",
- "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.82.1.tgz",
- "integrity": "sha512-a2O6M7/OZ2V9rdavOHyCQ+10z54JX8+B+apYKCQ6a9zoEChGTxUMG2YzzJ8zZJVvYf1ByWSNxv9Se0dca1hO9A==",
- "license": "BSD-3-Clause",
+ "version": "0.83.1",
+ "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.83.1.tgz",
+ "integrity": "sha512-01Rn3goubFvPjHXONooLmsW0FLxJDKIUJNOlOS0cPtmmTIx9YIjxhe/DxwHXGk7OnULd7yl3aYy7WlBsEd5Xmg==",
"peer": true,
"engines": {
"node": ">= 20.19.4"
}
},
"node_modules/@react-native/debugger-shell": {
- "version": "0.82.1",
- "resolved": "https://registry.npmjs.org/@react-native/debugger-shell/-/debugger-shell-0.82.1.tgz",
- "integrity": "sha512-fdRHAeqqPT93bSrxfX+JHPpCXHApfDUdrXMXhoxlPgSzgXQXJDykIViKhtpu0M6slX6xU/+duq+AtP/qWJRpBw==",
- "license": "MIT",
+ "version": "0.83.1",
+ "resolved": "https://registry.npmjs.org/@react-native/debugger-shell/-/debugger-shell-0.83.1.tgz",
+ "integrity": "sha512-d+0w446Hxth5OP/cBHSSxOEpbj13p2zToUy6e5e3tTERNJ8ueGlW7iGwGTrSymNDgXXFjErX+dY4P4/3WokPIQ==",
"peer": true,
"dependencies": {
"cross-spawn": "^7.0.6",
@@ -7324,15 +6939,14 @@
}
},
"node_modules/@react-native/dev-middleware": {
- "version": "0.82.1",
- "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.82.1.tgz",
- "integrity": "sha512-wuOIzms/Qg5raBV6Ctf2LmgzEOCqdP3p1AYN4zdhMT110c39TVMbunpBaJxm0Kbt2HQ762MQViF9naxk7SBo4w==",
- "license": "MIT",
+ "version": "0.83.1",
+ "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.83.1.tgz",
+ "integrity": "sha512-QJaSfNRzj3Lp7MmlCRgSBlt1XZ38xaBNXypXAp/3H3OdFifnTZOeYOpFmcpjcXYnDqkxetuwZg8VL65SQhB8dg==",
"peer": true,
"dependencies": {
"@isaacs/ttlcache": "^1.4.1",
- "@react-native/debugger-frontend": "0.82.1",
- "@react-native/debugger-shell": "0.82.1",
+ "@react-native/debugger-frontend": "0.83.1",
+ "@react-native/debugger-shell": "0.83.1",
"chrome-launcher": "^0.15.2",
"chromium-edge-launcher": "^0.2.0",
"connect": "^3.6.5",
@@ -7341,7 +6955,7 @@
"nullthrows": "^1.1.1",
"open": "^7.0.3",
"serve-static": "^1.16.2",
- "ws": "^6.2.3"
+ "ws": "^7.5.10"
},
"engines": {
"node": ">= 20.19.4"
@@ -7351,7 +6965,6 @@
"version": "7.4.2",
"resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz",
"integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==",
- "license": "MIT",
"peer": true,
"dependencies": {
"is-docker": "^2.0.0",
@@ -7365,40 +6978,48 @@
}
},
"node_modules/@react-native/dev-middleware/node_modules/ws": {
- "version": "6.2.3",
- "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz",
- "integrity": "sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==",
- "license": "MIT",
+ "version": "7.5.10",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz",
+ "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==",
"peer": true,
- "dependencies": {
- "async-limiter": "~1.0.0"
+ "engines": {
+ "node": ">=8.3.0"
+ },
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": "^5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
}
},
"node_modules/@react-native/gradle-plugin": {
- "version": "0.82.1",
- "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.82.1.tgz",
- "integrity": "sha512-KkF/2T1NSn6EJ5ALNT/gx0MHlrntFHv8YdooH9OOGl9HQn5NM0ZmQSr86o5utJsGc7ME3R6p3SaQuzlsFDrn8Q==",
- "license": "MIT",
+ "version": "0.83.1",
+ "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.83.1.tgz",
+ "integrity": "sha512-6ESDnwevp1CdvvxHNgXluil5OkqbjkJAkVy7SlpFsMGmVhrSxNAgD09SSRxMNdKsnLtzIvMsFCzyHLsU/S4PtQ==",
"peer": true,
"engines": {
"node": ">= 20.19.4"
}
},
"node_modules/@react-native/js-polyfills": {
- "version": "0.82.1",
- "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.82.1.tgz",
- "integrity": "sha512-tf70X7pUodslOBdLN37J57JmDPB/yiZcNDzS2m+4bbQzo8fhx3eG9QEBv5n4fmzqfGAgSB4BWRHgDMXmmlDSVA==",
- "license": "MIT",
+ "version": "0.83.1",
+ "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.83.1.tgz",
+ "integrity": "sha512-qgPpdWn/c5laA+3WoJ6Fak8uOm7CG50nBsLlPsF8kbT7rUHIVB9WaP6+GPsoKV/H15koW7jKuLRoNVT7c3Ht3w==",
"peer": true,
"engines": {
"node": ">= 20.19.4"
}
},
"node_modules/@react-native/normalize-colors": {
- "version": "0.82.1",
- "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.82.1.tgz",
- "integrity": "sha512-CCfTR1uX+Z7zJTdt3DNX9LUXr2zWXsNOyLbwupW2wmRzrxlHRYfmLgTABzRL/cKhh0Ubuwn15o72MQChvCRaHw==",
- "license": "MIT",
+ "version": "0.83.1",
+ "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.83.1.tgz",
+ "integrity": "sha512-84feABbmeWo1kg81726UOlMKAhcQyFXYz2SjRKYkS78QmfhVDhJ2o/ps1VjhFfBz0i/scDwT1XNv9GwmRIghkg==",
"peer": true
},
"node_modules/@react-spring/animated": {
@@ -9256,7 +8877,6 @@
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz",
"integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==",
- "license": "BSD-3-Clause",
"peer": true,
"dependencies": {
"type-detect": "4.0.8"
@@ -9266,7 +8886,6 @@
"version": "10.3.0",
"resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz",
"integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==",
- "license": "BSD-3-Clause",
"peer": true,
"dependencies": {
"@sinonjs/commons": "^3.0.0"
@@ -9301,6 +8920,10 @@
"resolved": "libs/analytics/google-analytics",
"link": true
},
+ "node_modules/@storyteller/markdown-content": {
+ "resolved": "libs/markdown-content",
+ "link": true
+ },
"node_modules/@storyteller/model-list": {
"resolved": "libs/model-list",
"link": true
@@ -10452,7 +10075,6 @@
"version": "4.1.9",
"resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz",
"integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==",
- "license": "MIT",
"peer": true,
"dependencies": {
"@types/node": "*"
@@ -13379,7 +13001,6 @@
"version": "1.4.10",
"resolved": "https://registry.npmjs.org/anser/-/anser-1.4.10.tgz",
"integrity": "sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==",
- "license": "MIT",
"peer": true
},
"node_modules/ansi-colors": {
@@ -13391,23 +13012,6 @@
"node": ">=6"
}
},
- "node_modules/ansi-escapes": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
- "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "type-fest": "^0.21.3"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/ansi-regex": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
@@ -13682,7 +13286,6 @@
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
"integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==",
- "license": "MIT",
"peer": true
},
"node_modules/assertion-error": {
@@ -13748,13 +13351,6 @@
"node": ">= 0.4"
}
},
- "node_modules/async-limiter": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz",
- "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==",
- "license": "MIT",
- "peer": true
- },
"node_modules/asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
@@ -13869,7 +13465,6 @@
"version": "29.7.0",
"resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz",
"integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==",
- "license": "MIT",
"peer": true,
"dependencies": {
"@jest/transform": "^29.7.0",
@@ -13906,7 +13501,6 @@
"version": "6.1.1",
"resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz",
"integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==",
- "license": "BSD-3-Clause",
"peer": true,
"dependencies": {
"@babel/helper-plugin-utils": "^7.0.0",
@@ -13923,7 +13517,6 @@
"version": "1.1.12",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
"integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
- "license": "MIT",
"peer": true,
"dependencies": {
"balanced-match": "^1.0.0",
@@ -13935,7 +13528,6 @@
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
"integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
"deprecated": "Glob versions prior to v9 are no longer supported",
- "license": "ISC",
"peer": true,
"dependencies": {
"fs.realpath": "^1.0.0",
@@ -13952,28 +13544,10 @@
"url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz",
- "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==",
- "license": "BSD-3-Clause",
- "peer": true,
- "dependencies": {
- "@babel/core": "^7.12.3",
- "@babel/parser": "^7.14.7",
- "@istanbuljs/schema": "^0.1.2",
- "istanbul-lib-coverage": "^3.2.0",
- "semver": "^6.3.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/babel-plugin-istanbul/node_modules/minimatch": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "license": "ISC",
"peer": true,
"dependencies": {
"brace-expansion": "^1.1.7"
@@ -13982,21 +13556,10 @@
"node": "*"
}
},
- "node_modules/babel-plugin-istanbul/node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "license": "ISC",
- "peer": true,
- "bin": {
- "semver": "bin/semver.js"
- }
- },
"node_modules/babel-plugin-istanbul/node_modules/test-exclude": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz",
"integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==",
- "license": "ISC",
"peer": true,
"dependencies": {
"@istanbuljs/schema": "^0.1.2",
@@ -14011,7 +13574,6 @@
"version": "29.6.3",
"resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz",
"integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==",
- "license": "MIT",
"peer": true,
"dependencies": {
"@babel/template": "^7.3.3",
@@ -14122,7 +13684,6 @@
"version": "0.32.0",
"resolved": "https://registry.npmjs.org/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.32.0.tgz",
"integrity": "sha512-m5HthL++AbyeEA2FcdwOLfVFvWYECOBObLHNqdR8ceY4TsEdn4LdX2oTvbB2QJSSElE2AWA/b2MXZ/PF/CqLZg==",
- "license": "MIT",
"peer": true,
"dependencies": {
"hermes-parser": "0.32.0"
@@ -14142,7 +13703,6 @@
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz",
"integrity": "sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==",
- "license": "MIT",
"peer": true,
"dependencies": {
"@babel/plugin-syntax-async-generators": "^7.8.4",
@@ -14169,7 +13729,6 @@
"version": "29.6.3",
"resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz",
"integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==",
- "license": "MIT",
"peer": true,
"dependencies": {
"babel-plugin-jest-hoist": "^29.6.3",
@@ -14418,7 +13977,6 @@
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz",
"integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==",
- "license": "Apache-2.0",
"peer": true,
"dependencies": {
"node-int64": "^0.4.0"
@@ -14691,17 +14249,6 @@
"url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "node_modules/char-regex": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz",
- "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/character-entities": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz",
@@ -14818,7 +14365,6 @@
"version": "0.15.2",
"resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.15.2.tgz",
"integrity": "sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==",
- "license": "Apache-2.0",
"peer": true,
"dependencies": {
"@types/node": "*",
@@ -14847,7 +14393,6 @@
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/chromium-edge-launcher/-/chromium-edge-launcher-0.2.0.tgz",
"integrity": "sha512-JfJjUnq25y9yg4FABRRVPmBGWPZZi+AQXT4mxupb67766/0UlhG8PAZCz6xzEMXTbW3CsSoE8PcCWA49n35mKg==",
- "license": "Apache-2.0",
"peer": true,
"dependencies": {
"@types/node": "*",
@@ -14873,14 +14418,6 @@
"node": ">=8"
}
},
- "node_modules/cjs-module-lexer": {
- "version": "1.4.3",
- "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz",
- "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==",
- "dev": true,
- "license": "MIT",
- "peer": true
- },
"node_modules/clean-stack": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
@@ -15079,14 +14616,6 @@
"node": ">= 0.12.0"
}
},
- "node_modules/collect-v8-coverage": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.3.tgz",
- "integrity": "sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==",
- "dev": true,
- "license": "MIT",
- "peer": true
- },
"node_modules/color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
@@ -15235,7 +14764,6 @@
"version": "3.7.0",
"resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz",
"integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==",
- "license": "MIT",
"peer": true,
"dependencies": {
"debug": "2.6.9",
@@ -15251,7 +14779,6 @@
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "license": "MIT",
"peer": true,
"dependencies": {
"ms": "2.0.0"
@@ -15261,7 +14788,6 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
"integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
- "license": "MIT",
"peer": true,
"engines": {
"node": ">= 0.8"
@@ -15271,7 +14797,6 @@
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
"integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
- "license": "MIT",
"peer": true,
"dependencies": {
"debug": "2.6.9",
@@ -15290,14 +14815,12 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
- "license": "MIT",
"peer": true
},
"node_modules/connect/node_modules/on-finished": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
"integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==",
- "license": "MIT",
"peer": true,
"dependencies": {
"ee-first": "1.1.1"
@@ -15310,7 +14833,6 @@
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
"integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==",
- "license": "MIT",
"peer": true,
"engines": {
"node": ">= 0.6"
@@ -15453,29 +14975,6 @@
}
}
},
- "node_modules/create-jest": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz",
- "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@jest/types": "^29.6.3",
- "chalk": "^4.0.0",
- "exit": "^0.1.2",
- "graceful-fs": "^4.2.9",
- "jest-config": "^29.7.0",
- "jest-util": "^29.7.0",
- "prompts": "^2.0.1"
- },
- "bin": {
- "create-jest": "bin/create-jest.js"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
"node_modules/cron-parser": {
"version": "4.9.0",
"resolved": "https://registry.npmjs.org/cron-parser/-/cron-parser-4.9.0.tgz",
@@ -15993,17 +15492,6 @@
"webgl-constants": "^1.1.1"
}
},
- "node_modules/detect-newline": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz",
- "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/detect-node-es": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz",
@@ -16345,20 +15833,6 @@
"embla-carousel": "8.6.0"
}
},
- "node_modules/emittery": {
- "version": "0.13.1",
- "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz",
- "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sindresorhus/emittery?sponsor=1"
- }
- },
"node_modules/emoji-regex": {
"version": "9.2.2",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
@@ -16477,7 +15951,6 @@
"version": "2.1.4",
"resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz",
"integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==",
- "license": "MIT",
"peer": true,
"dependencies": {
"stackframe": "^1.3.4"
@@ -17931,16 +17404,6 @@
"url": "https://github.com/sindresorhus/execa?sponsor=1"
}
},
- "node_modules/exit": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
- "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">= 0.8.0"
- }
- },
"node_modules/exit-hook": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-2.2.1.tgz",
@@ -17998,7 +17461,6 @@
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.3.tgz",
"integrity": "sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==",
- "license": "Apache-2.0",
"peer": true
},
"node_modules/express": {
@@ -18164,7 +17626,6 @@
"version": "0.5.8",
"resolved": "https://registry.npmjs.org/fb-dotslash/-/fb-dotslash-0.5.8.tgz",
"integrity": "sha512-XHYLKk9J4BupDxi9bSEhkfss0m+Vr9ChTrjhf9l2iw3jB5C7BnY4GVPoMcqbrTutsKJso6yj2nAB6BI/F2oZaA==",
- "license": "(MIT OR Apache-2.0)",
"peer": true,
"bin": {
"dotslash": "bin/dotslash"
@@ -18177,7 +17638,6 @@
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz",
"integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==",
- "license": "Apache-2.0",
"peer": true,
"dependencies": {
"bser": "2.1.1"
@@ -18464,7 +17924,6 @@
"version": "0.0.6",
"resolved": "https://registry.npmjs.org/flow-enums-runtime/-/flow-enums-runtime-0.0.6.tgz",
"integrity": "sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==",
- "license": "MIT",
"peer": true
},
"node_modules/follow-redirects": {
@@ -18838,7 +18297,6 @@
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz",
"integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==",
- "license": "MIT",
"peer": true,
"engines": {
"node": ">=8.0.0"
@@ -19299,24 +18757,21 @@
}
},
"node_modules/hermes-compiler": {
- "version": "0.0.0",
- "resolved": "https://registry.npmjs.org/hermes-compiler/-/hermes-compiler-0.0.0.tgz",
- "integrity": "sha512-boVFutx6ME/Km2mB6vvsQcdnazEYYI/jV1pomx1wcFUG/EVqTkr5CU0CW9bKipOA/8Hyu3NYwW3THg2Q1kNCfA==",
- "license": "MIT",
+ "version": "0.14.0",
+ "resolved": "https://registry.npmjs.org/hermes-compiler/-/hermes-compiler-0.14.0.tgz",
+ "integrity": "sha512-clxa193o+GYYwykWVFfpHduCATz8fR5jvU7ngXpfKHj+E9hr9vjLNtdLSEe8MUbObvVexV3wcyxQ00xTPIrB1Q==",
"peer": true
},
"node_modules/hermes-estree": {
"version": "0.32.0",
"resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.32.0.tgz",
"integrity": "sha512-KWn3BqnlDOl97Xe1Yviur6NbgIZ+IP+UVSpshlZWkq+EtoHg6/cwiDj/osP9PCEgFE15KBm1O55JRwbMEm5ejQ==",
- "license": "MIT",
"peer": true
},
"node_modules/hermes-parser": {
"version": "0.32.0",
"resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.32.0.tgz",
"integrity": "sha512-g4nBOWFpuiTqjR3LZdRxKUkij9iyveWeuks7INEsMX741f3r9xxrOe8TeQfUxtda0eXmiIFiMQzoeSQEno33Hw==",
- "license": "MIT",
"peer": true,
"dependencies": {
"hermes-estree": "0.32.0"
@@ -19648,7 +19103,6 @@
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/image-size/-/image-size-1.2.1.tgz",
"integrity": "sha512-rH+46sQJ2dlwfjfhCyNx5thzrv+dtmBIhPHk0zgRUukHzZ/kRueTJXoYYsclBaKcSMBWuGbOFXtioLpzTb5euw==",
- "license": "MIT",
"peer": true,
"dependencies": {
"queue": "6.0.2"
@@ -19687,27 +19141,6 @@
"node": ">=8"
}
},
- "node_modules/import-local": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz",
- "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "pkg-dir": "^4.2.0",
- "resolve-cwd": "^3.0.0"
- },
- "bin": {
- "import-local-fixture": "fixtures/cli.js"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/imurmurhash": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
@@ -19776,7 +19209,6 @@
"version": "2.2.4",
"resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
"integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
- "license": "MIT",
"peer": true,
"dependencies": {
"loose-envify": "^1.0.0"
@@ -20087,17 +19519,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/is-generator-fn": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz",
- "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/is-generator-function": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz",
@@ -20483,21 +19904,28 @@
}
},
"node_modules/istanbul-lib-instrument": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz",
- "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==",
- "dev": true,
- "license": "BSD-3-Clause",
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz",
+ "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==",
"peer": true,
"dependencies": {
- "@babel/core": "^7.23.9",
- "@babel/parser": "^7.23.9",
- "@istanbuljs/schema": "^0.1.3",
+ "@babel/core": "^7.12.3",
+ "@babel/parser": "^7.14.7",
+ "@istanbuljs/schema": "^0.1.2",
"istanbul-lib-coverage": "^3.2.0",
- "semver": "^7.5.4"
+ "semver": "^6.3.0"
},
"engines": {
- "node": ">=10"
+ "node": ">=8"
+ }
+ },
+ "node_modules/istanbul-lib-instrument/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "peer": true,
+ "bin": {
+ "semver": "bin/semver.js"
}
},
"node_modules/istanbul-lib-report": {
@@ -20615,290 +20043,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/jest": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz",
- "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@jest/core": "^29.7.0",
- "@jest/types": "^29.6.3",
- "import-local": "^3.0.2",
- "jest-cli": "^29.7.0"
- },
- "bin": {
- "jest": "bin/jest.js"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- },
- "peerDependencies": {
- "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
- },
- "peerDependenciesMeta": {
- "node-notifier": {
- "optional": true
- }
- }
- },
- "node_modules/jest-changed-files": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz",
- "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "execa": "^5.0.0",
- "jest-util": "^29.7.0",
- "p-limit": "^3.1.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-circus": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz",
- "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@jest/environment": "^29.7.0",
- "@jest/expect": "^29.7.0",
- "@jest/test-result": "^29.7.0",
- "@jest/types": "^29.6.3",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "co": "^4.6.0",
- "dedent": "^1.0.0",
- "is-generator-fn": "^2.0.0",
- "jest-each": "^29.7.0",
- "jest-matcher-utils": "^29.7.0",
- "jest-message-util": "^29.7.0",
- "jest-runtime": "^29.7.0",
- "jest-snapshot": "^29.7.0",
- "jest-util": "^29.7.0",
- "p-limit": "^3.1.0",
- "pretty-format": "^29.7.0",
- "pure-rand": "^6.0.0",
- "slash": "^3.0.0",
- "stack-utils": "^2.0.3"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-circus/node_modules/ansi-styles": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
- "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/jest-circus/node_modules/pretty-format": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz",
- "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@jest/schemas": "^29.6.3",
- "ansi-styles": "^5.0.0",
- "react-is": "^18.0.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-circus/node_modules/react-is": {
- "version": "18.3.1",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz",
- "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==",
- "dev": true,
- "license": "MIT",
- "peer": true
- },
- "node_modules/jest-cli": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz",
- "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@jest/core": "^29.7.0",
- "@jest/test-result": "^29.7.0",
- "@jest/types": "^29.6.3",
- "chalk": "^4.0.0",
- "create-jest": "^29.7.0",
- "exit": "^0.1.2",
- "import-local": "^3.0.2",
- "jest-config": "^29.7.0",
- "jest-util": "^29.7.0",
- "jest-validate": "^29.7.0",
- "yargs": "^17.3.1"
- },
- "bin": {
- "jest": "bin/jest.js"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- },
- "peerDependencies": {
- "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
- },
- "peerDependenciesMeta": {
- "node-notifier": {
- "optional": true
- }
- }
- },
- "node_modules/jest-config": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz",
- "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@babel/core": "^7.11.6",
- "@jest/test-sequencer": "^29.7.0",
- "@jest/types": "^29.6.3",
- "babel-jest": "^29.7.0",
- "chalk": "^4.0.0",
- "ci-info": "^3.2.0",
- "deepmerge": "^4.2.2",
- "glob": "^7.1.3",
- "graceful-fs": "^4.2.9",
- "jest-circus": "^29.7.0",
- "jest-environment-node": "^29.7.0",
- "jest-get-type": "^29.6.3",
- "jest-regex-util": "^29.6.3",
- "jest-resolve": "^29.7.0",
- "jest-runner": "^29.7.0",
- "jest-util": "^29.7.0",
- "jest-validate": "^29.7.0",
- "micromatch": "^4.0.4",
- "parse-json": "^5.2.0",
- "pretty-format": "^29.7.0",
- "slash": "^3.0.0",
- "strip-json-comments": "^3.1.1"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- },
- "peerDependencies": {
- "@types/node": "*",
- "ts-node": ">=9.0.0"
- },
- "peerDependenciesMeta": {
- "@types/node": {
- "optional": true
- },
- "ts-node": {
- "optional": true
- }
- }
- },
- "node_modules/jest-config/node_modules/ansi-styles": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
- "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/jest-config/node_modules/brace-expansion": {
- "version": "1.1.12",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
- "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/jest-config/node_modules/glob": {
- "version": "7.2.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
- "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
- "deprecated": "Glob versions prior to v9 are no longer supported",
- "dev": true,
- "license": "ISC",
- "peer": true,
- "dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- },
- "engines": {
- "node": "*"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/jest-config/node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dev": true,
- "license": "ISC",
- "peer": true,
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/jest-config/node_modules/pretty-format": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz",
- "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@jest/schemas": "^29.6.3",
- "ansi-styles": "^5.0.0",
- "react-is": "^18.0.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-config/node_modules/react-is": {
- "version": "18.3.1",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz",
- "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==",
- "dev": true,
- "license": "MIT",
- "peer": true
- },
"node_modules/jest-diff": {
"version": "29.7.0",
"resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz",
@@ -20946,81 +20090,10 @@
"integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==",
"license": "MIT"
},
- "node_modules/jest-docblock": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz",
- "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "detect-newline": "^3.0.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-each": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz",
- "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@jest/types": "^29.6.3",
- "chalk": "^4.0.0",
- "jest-get-type": "^29.6.3",
- "jest-util": "^29.7.0",
- "pretty-format": "^29.7.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-each/node_modules/ansi-styles": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
- "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/jest-each/node_modules/pretty-format": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz",
- "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@jest/schemas": "^29.6.3",
- "ansi-styles": "^5.0.0",
- "react-is": "^18.0.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-each/node_modules/react-is": {
- "version": "18.3.1",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz",
- "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==",
- "dev": true,
- "license": "MIT",
- "peer": true
- },
"node_modules/jest-environment-node": {
"version": "29.7.0",
"resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz",
"integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==",
- "license": "MIT",
"peer": true,
"dependencies": {
"@jest/environment": "^29.7.0",
@@ -21047,7 +20120,6 @@
"version": "29.7.0",
"resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz",
"integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==",
- "license": "MIT",
"peer": true,
"dependencies": {
"@jest/types": "^29.6.3",
@@ -21069,59 +20141,6 @@
"fsevents": "^2.3.2"
}
},
- "node_modules/jest-leak-detector": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz",
- "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "jest-get-type": "^29.6.3",
- "pretty-format": "^29.7.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-leak-detector/node_modules/ansi-styles": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
- "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/jest-leak-detector/node_modules/pretty-format": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz",
- "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@jest/schemas": "^29.6.3",
- "ansi-styles": "^5.0.0",
- "react-is": "^18.0.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-leak-detector/node_modules/react-is": {
- "version": "18.3.1",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz",
- "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==",
- "dev": true,
- "license": "MIT",
- "peer": true
- },
"node_modules/jest-matcher-utils": {
"version": "29.7.0",
"resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz",
@@ -21229,7 +20248,6 @@
"version": "29.7.0",
"resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz",
"integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==",
- "license": "MIT",
"peer": true,
"dependencies": {
"@jest/types": "^29.6.3",
@@ -21240,284 +20258,15 @@
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
- "node_modules/jest-pnp-resolver": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz",
- "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "engines": {
- "node": ">=6"
- },
- "peerDependencies": {
- "jest-resolve": "*"
- },
- "peerDependenciesMeta": {
- "jest-resolve": {
- "optional": true
- }
- }
- },
"node_modules/jest-regex-util": {
"version": "29.6.3",
"resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz",
"integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==",
- "license": "MIT",
"peer": true,
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
- "node_modules/jest-resolve": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz",
- "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "chalk": "^4.0.0",
- "graceful-fs": "^4.2.9",
- "jest-haste-map": "^29.7.0",
- "jest-pnp-resolver": "^1.2.2",
- "jest-util": "^29.7.0",
- "jest-validate": "^29.7.0",
- "resolve": "^1.20.0",
- "resolve.exports": "^2.0.0",
- "slash": "^3.0.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-resolve-dependencies": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz",
- "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "jest-regex-util": "^29.6.3",
- "jest-snapshot": "^29.7.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-runner": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz",
- "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@jest/console": "^29.7.0",
- "@jest/environment": "^29.7.0",
- "@jest/test-result": "^29.7.0",
- "@jest/transform": "^29.7.0",
- "@jest/types": "^29.6.3",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "emittery": "^0.13.1",
- "graceful-fs": "^4.2.9",
- "jest-docblock": "^29.7.0",
- "jest-environment-node": "^29.7.0",
- "jest-haste-map": "^29.7.0",
- "jest-leak-detector": "^29.7.0",
- "jest-message-util": "^29.7.0",
- "jest-resolve": "^29.7.0",
- "jest-runtime": "^29.7.0",
- "jest-util": "^29.7.0",
- "jest-watcher": "^29.7.0",
- "jest-worker": "^29.7.0",
- "p-limit": "^3.1.0",
- "source-map-support": "0.5.13"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-runner/node_modules/source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true,
- "license": "BSD-3-Clause",
- "peer": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/jest-runner/node_modules/source-map-support": {
- "version": "0.5.13",
- "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz",
- "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "buffer-from": "^1.0.0",
- "source-map": "^0.6.0"
- }
- },
- "node_modules/jest-runtime": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz",
- "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@jest/environment": "^29.7.0",
- "@jest/fake-timers": "^29.7.0",
- "@jest/globals": "^29.7.0",
- "@jest/source-map": "^29.6.3",
- "@jest/test-result": "^29.7.0",
- "@jest/transform": "^29.7.0",
- "@jest/types": "^29.6.3",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "cjs-module-lexer": "^1.0.0",
- "collect-v8-coverage": "^1.0.0",
- "glob": "^7.1.3",
- "graceful-fs": "^4.2.9",
- "jest-haste-map": "^29.7.0",
- "jest-message-util": "^29.7.0",
- "jest-mock": "^29.7.0",
- "jest-regex-util": "^29.6.3",
- "jest-resolve": "^29.7.0",
- "jest-snapshot": "^29.7.0",
- "jest-util": "^29.7.0",
- "slash": "^3.0.0",
- "strip-bom": "^4.0.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-runtime/node_modules/brace-expansion": {
- "version": "1.1.12",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
- "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/jest-runtime/node_modules/glob": {
- "version": "7.2.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
- "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
- "deprecated": "Glob versions prior to v9 are no longer supported",
- "dev": true,
- "license": "ISC",
- "peer": true,
- "dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- },
- "engines": {
- "node": "*"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/jest-runtime/node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dev": true,
- "license": "ISC",
- "peer": true,
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/jest-snapshot": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz",
- "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@babel/core": "^7.11.6",
- "@babel/generator": "^7.7.2",
- "@babel/plugin-syntax-jsx": "^7.7.2",
- "@babel/plugin-syntax-typescript": "^7.7.2",
- "@babel/types": "^7.3.3",
- "@jest/expect-utils": "^29.7.0",
- "@jest/transform": "^29.7.0",
- "@jest/types": "^29.6.3",
- "babel-preset-current-node-syntax": "^1.0.0",
- "chalk": "^4.0.0",
- "expect": "^29.7.0",
- "graceful-fs": "^4.2.9",
- "jest-diff": "^29.7.0",
- "jest-get-type": "^29.6.3",
- "jest-matcher-utils": "^29.7.0",
- "jest-message-util": "^29.7.0",
- "jest-util": "^29.7.0",
- "natural-compare": "^1.4.0",
- "pretty-format": "^29.7.0",
- "semver": "^7.5.3"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-snapshot/node_modules/ansi-styles": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
- "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/jest-snapshot/node_modules/pretty-format": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz",
- "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@jest/schemas": "^29.6.3",
- "ansi-styles": "^5.0.0",
- "react-is": "^18.0.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-snapshot/node_modules/react-is": {
- "version": "18.3.1",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz",
- "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==",
- "dev": true,
- "license": "MIT",
- "peer": true
- },
"node_modules/jest-util": {
"version": "29.7.0",
"resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz",
@@ -21551,7 +20300,6 @@
"version": "29.7.0",
"resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz",
"integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==",
- "license": "MIT",
"peer": true,
"dependencies": {
"@jest/types": "^29.6.3",
@@ -21569,7 +20317,6 @@
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
"integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
- "license": "MIT",
"peer": true,
"engines": {
"node": ">=10"
@@ -21582,7 +20329,6 @@
"version": "29.7.0",
"resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz",
"integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==",
- "license": "MIT",
"peer": true,
"dependencies": {
"@jest/schemas": "^29.6.3",
@@ -21597,35 +20343,12 @@
"version": "18.3.1",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz",
"integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==",
- "license": "MIT",
"peer": true
},
- "node_modules/jest-watcher": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz",
- "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@jest/test-result": "^29.7.0",
- "@jest/types": "^29.6.3",
- "@types/node": "*",
- "ansi-escapes": "^4.2.1",
- "chalk": "^4.0.0",
- "emittery": "^0.13.1",
- "jest-util": "^29.7.0",
- "string-length": "^4.0.1"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
"node_modules/jest-worker": {
"version": "29.7.0",
"resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz",
"integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==",
- "license": "MIT",
"peer": true,
"dependencies": {
"@types/node": "*",
@@ -21641,7 +20364,6 @@
"version": "8.1.1",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
"integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
- "license": "MIT",
"peer": true,
"dependencies": {
"has-flag": "^4.0.0"
@@ -21693,7 +20415,6 @@
"version": "0.2.4",
"resolved": "https://registry.npmjs.org/jsc-safe-url/-/jsc-safe-url-0.2.4.tgz",
"integrity": "sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==",
- "license": "0BSD",
"peer": true
},
"node_modules/jsdom": {
@@ -21872,17 +20593,6 @@
"json-buffer": "3.0.1"
}
},
- "node_modules/kleur": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
- "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/koa": {
"version": "2.16.1",
"resolved": "https://registry.npmjs.org/koa/-/koa-2.16.1.tgz",
@@ -22037,7 +20747,6 @@
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
"integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
- "license": "MIT",
"peer": true,
"engines": {
"node": ">=6"
@@ -22061,7 +20770,6 @@
"version": "1.4.2",
"resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.4.2.tgz",
"integrity": "sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==",
- "license": "Apache-2.0",
"peer": true,
"dependencies": {
"debug": "^2.6.9",
@@ -22072,7 +20780,6 @@
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "license": "MIT",
"peer": true,
"dependencies": {
"ms": "2.0.0"
@@ -22082,7 +20789,6 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
- "license": "MIT",
"peer": true
},
"node_modules/lilconfig": {
@@ -22519,7 +21225,6 @@
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz",
"integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==",
- "license": "MIT",
"peer": true
},
"node_modules/log-symbols": {
@@ -22843,7 +21548,6 @@
"version": "1.0.12",
"resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz",
"integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==",
- "license": "BSD-3-Clause",
"peer": true,
"dependencies": {
"tmpl": "1.0.5"
@@ -22863,7 +21567,6 @@
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/marky/-/marky-1.3.0.tgz",
"integrity": "sha512-ocnPZQLNpvbedwTy9kNrQEsknEfgvcLMvOtz3sFeWApDq1MXH1TqkCIx58xlpESsfwQOnuBO9beyQuNGzVvuhQ==",
- "license": "Apache-2.0",
"peer": true
},
"node_modules/math-intrinsics": {
@@ -23112,7 +21815,6 @@
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz",
"integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==",
- "license": "MIT",
"peer": true
},
"node_modules/merge-descriptors": {
@@ -23160,7 +21862,6 @@
"version": "0.83.3",
"resolved": "https://registry.npmjs.org/metro/-/metro-0.83.3.tgz",
"integrity": "sha512-+rP+/GieOzkt97hSJ0MrPOuAH/jpaS21ZDvL9DJ35QYRDlQcwzcvUlGUf79AnQxq/2NPiS/AULhhM4TKutIt8Q==",
- "license": "MIT",
"peer": true,
"dependencies": {
"@babel/code-frame": "^7.24.7",
@@ -23215,7 +21916,6 @@
"version": "0.83.3",
"resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.83.3.tgz",
"integrity": "sha512-1vxlvj2yY24ES1O5RsSIvg4a4WeL7PFXgKOHvXTXiW0deLvQr28ExXj6LjwCCDZ4YZLhq6HddLpZnX4dEdSq5g==",
- "license": "MIT",
"peer": true,
"dependencies": {
"@babel/core": "^7.25.2",
@@ -23231,7 +21931,6 @@
"version": "0.83.3",
"resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.83.3.tgz",
"integrity": "sha512-3jo65X515mQJvKqK3vWRblxDEcgY55Sk3w4xa6LlfEXgQ9g1WgMh9m4qVZVwgcHoLy0a2HENTPCCX4Pk6s8c8Q==",
- "license": "MIT",
"peer": true,
"dependencies": {
"exponential-backoff": "^3.1.1",
@@ -23247,7 +21946,6 @@
"version": "0.83.3",
"resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.83.3.tgz",
"integrity": "sha512-59ZO049jKzSmvBmG/B5bZ6/dztP0ilp0o988nc6dpaDsU05Cl1c/lRf+yx8m9WW/JVgbmfO5MziBU559XjI5Zw==",
- "license": "MIT",
"peer": true,
"dependencies": {
"flow-enums-runtime": "^0.0.6"
@@ -23260,7 +21958,6 @@
"version": "7.1.4",
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz",
"integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==",
- "license": "MIT",
"peer": true,
"engines": {
"node": ">= 14"
@@ -23270,7 +21967,6 @@
"version": "7.0.6",
"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz",
"integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==",
- "license": "MIT",
"peer": true,
"dependencies": {
"agent-base": "^7.1.2",
@@ -23284,7 +21980,6 @@
"version": "0.83.3",
"resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.83.3.tgz",
"integrity": "sha512-mTel7ipT0yNjKILIan04bkJkuCzUUkm2SeEaTads8VfEecCh+ltXchdq6DovXJqzQAXuR2P9cxZB47Lg4klriA==",
- "license": "MIT",
"peer": true,
"dependencies": {
"connect": "^3.6.5",
@@ -23304,7 +21999,6 @@
"version": "0.83.3",
"resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.83.3.tgz",
"integrity": "sha512-M+X59lm7oBmJZamc96usuF1kusd5YimqG/q97g4Ac7slnJ3YiGglW5CsOlicTR5EWf8MQFxxjDoB6ytTqRe8Hw==",
- "license": "MIT",
"peer": true,
"dependencies": {
"flow-enums-runtime": "^0.0.6",
@@ -23319,7 +22013,6 @@
"version": "0.83.3",
"resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.83.3.tgz",
"integrity": "sha512-jg5AcyE0Q9Xbbu/4NAwwZkmQn7doJCKGW0SLeSJmzNB9Z24jBe0AL2PHNMy4eu0JiKtNWHz9IiONGZWq7hjVTA==",
- "license": "MIT",
"peer": true,
"dependencies": {
"debug": "^4.4.0",
@@ -23340,7 +22033,6 @@
"version": "0.83.3",
"resolved": "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.83.3.tgz",
"integrity": "sha512-O2BmfWj6FSfzBLrNCXt/rr2VYZdX5i6444QJU0fFoc7Ljg+Q+iqebwE3K0eTvkI6TRjELsXk1cjU+fXwAR4OjQ==",
- "license": "MIT",
"peer": true,
"dependencies": {
"flow-enums-runtime": "^0.0.6",
@@ -23354,7 +22046,6 @@
"version": "0.83.3",
"resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.83.3.tgz",
"integrity": "sha512-0js+zwI5flFxb1ktmR///bxHYg7OLpRpWZlBBruYG8OKYxeMP7SV0xQ/o/hUelrEMdK4LJzqVtHAhBm25LVfAQ==",
- "license": "MIT",
"peer": true,
"dependencies": {
"flow-enums-runtime": "^0.0.6"
@@ -23367,7 +22058,6 @@
"version": "0.83.3",
"resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.83.3.tgz",
"integrity": "sha512-JHCJb9ebr9rfJ+LcssFYA2x1qPYuSD/bbePupIGhpMrsla7RCwC/VL3yJ9cSU+nUhU4c9Ixxy8tBta+JbDeZWw==",
- "license": "MIT",
"peer": true,
"dependencies": {
"@babel/runtime": "^7.25.0",
@@ -23381,7 +22071,6 @@
"version": "0.83.3",
"resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.83.3.tgz",
"integrity": "sha512-xkC3qwUBh2psVZgVavo8+r2C9Igkk3DibiOXSAht1aYRRcztEZNFtAMtfSB7sdO2iFMx2Mlyu++cBxz/fhdzQg==",
- "license": "MIT",
"peer": true,
"dependencies": {
"@babel/traverse": "^7.25.3",
@@ -23403,7 +22092,6 @@
"version": "0.5.7",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
"integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
- "license": "BSD-3-Clause",
"peer": true,
"engines": {
"node": ">=0.10.0"
@@ -23413,7 +22101,6 @@
"version": "0.83.3",
"resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.83.3.tgz",
"integrity": "sha512-F/YChgKd6KbFK3eUR5HdUsfBqVsanf5lNTwFd4Ca7uuxnHgBC3kR/Hba/RGkenR3pZaGNp5Bu9ZqqP52Wyhomw==",
- "license": "MIT",
"peer": true,
"dependencies": {
"flow-enums-runtime": "^0.0.6",
@@ -23434,7 +22121,6 @@
"version": "0.5.7",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
"integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
- "license": "BSD-3-Clause",
"peer": true,
"engines": {
"node": ">=0.10.0"
@@ -23444,7 +22130,6 @@
"version": "0.83.3",
"resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.83.3.tgz",
"integrity": "sha512-eRGoKJU6jmqOakBMH5kUB7VitEWiNrDzBHpYbkBXW7C5fUGeOd2CyqrosEzbMK5VMiZYyOcNFEphvxk3OXey2A==",
- "license": "MIT",
"peer": true,
"dependencies": {
"@babel/core": "^7.25.2",
@@ -23462,7 +22147,6 @@
"version": "0.83.3",
"resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.83.3.tgz",
"integrity": "sha512-Ztekew9t/gOIMZX1tvJOgX7KlSLL5kWykl0Iwu2cL2vKMKVALRl1hysyhUw0vjpAvLFx+Kfq9VLjnHIkW32fPA==",
- "license": "MIT",
"peer": true,
"dependencies": {
"@babel/core": "^7.25.2",
@@ -23487,14 +22171,12 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
"integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==",
- "license": "MIT",
"peer": true
},
"node_modules/metro/node_modules/source-map": {
"version": "0.5.7",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
"integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
- "license": "BSD-3-Clause",
"peer": true,
"engines": {
"node": ">=0.10.0"
@@ -23504,7 +22186,6 @@
"version": "7.5.10",
"resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz",
"integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==",
- "license": "MIT",
"peer": true,
"engines": {
"node": ">=8.3.0"
@@ -24714,7 +23395,6 @@
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
"integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==",
- "license": "MIT",
"peer": true
},
"node_modules/node-machine-id": {
@@ -24899,7 +23579,6 @@
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz",
"integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==",
- "license": "MIT",
"peer": true
},
"node_modules/nwsapi": {
@@ -25071,7 +23750,6 @@
"version": "0.83.3",
"resolved": "https://registry.npmjs.org/ob1/-/ob1-0.83.3.tgz",
"integrity": "sha512-egUxXCDwoWG06NGCS5s5AdcpnumHKJlfd3HH06P3m9TEMwwScfcY35wpQxbm9oHof+dM/lVH9Rfyu1elTVelSA==",
- "license": "MIT",
"peer": true,
"dependencies": {
"flow-enums-runtime": "^0.0.6"
@@ -25445,7 +24123,6 @@
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
"integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
- "license": "MIT",
"peer": true,
"engines": {
"node": ">=6"
@@ -25759,80 +24436,6 @@
"node": ">= 6"
}
},
- "node_modules/pkg-dir": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
- "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "find-up": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/pkg-dir/node_modules/find-up": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
- "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/pkg-dir/node_modules/locate-path": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
- "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "p-locate": "^4.1.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/pkg-dir/node_modules/p-limit": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
- "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "p-try": "^2.0.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/pkg-dir/node_modules/p-locate": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
- "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "p-limit": "^2.2.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/pkg-types": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-2.3.0.tgz",
@@ -26439,7 +25042,6 @@
"version": "8.3.0",
"resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz",
"integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==",
- "license": "MIT",
"peer": true,
"dependencies": {
"asap": "~2.0.6"
@@ -26466,21 +25068,6 @@
"node": ">=10"
}
},
- "node_modules/prompts": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz",
- "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "kleur": "^3.0.3",
- "sisteransi": "^1.0.5"
- },
- "engines": {
- "node": ">= 6"
- }
- },
"node_modules/prop-types": {
"version": "15.8.1",
"resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
@@ -26574,24 +25161,6 @@
"node": ">=6"
}
},
- "node_modules/pure-rand": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz",
- "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==",
- "dev": true,
- "funding": [
- {
- "type": "individual",
- "url": "https://github.com/sponsors/dubzzz"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/fast-check"
- }
- ],
- "license": "MIT",
- "peer": true
- },
"node_modules/qs": {
"version": "6.14.0",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz",
@@ -26635,7 +25204,6 @@
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz",
"integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==",
- "license": "MIT",
"peer": true,
"dependencies": {
"inherits": "~2.0.3"
@@ -26767,7 +25335,6 @@
"version": "6.1.5",
"resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-6.1.5.tgz",
"integrity": "sha512-ePrwPfxAnB+7hgnEr8vpKxL9cmnp7F322t8oqcPshbIQQhDKgFDW4tjhF2wjVbdXF9O/nyuy3sQWd9JGpiLPvA==",
- "license": "MIT",
"peer": true,
"dependencies": {
"shell-quote": "^1.6.1",
@@ -26778,7 +25345,6 @@
"version": "7.5.10",
"resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz",
"integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==",
- "license": "MIT",
"peer": true,
"engines": {
"node": ">=8.3.0"
@@ -27129,21 +25695,18 @@
}
},
"node_modules/react-spring/node_modules/@react-three/fiber": {
- "version": "9.4.2",
- "resolved": "https://registry.npmjs.org/@react-three/fiber/-/fiber-9.4.2.tgz",
- "integrity": "sha512-H4B4+FDNHpvIb4FmphH4ubxOfX5bxmfOw0+3pkQwR9u9wFiyMS7wUDkNn0m4RqQuiLWeia9jfN1eBvtyAVGEog==",
- "license": "MIT",
+ "version": "9.5.0",
+ "resolved": "https://registry.npmjs.org/@react-three/fiber/-/fiber-9.5.0.tgz",
+ "integrity": "sha512-FiUzfYW4wB1+PpmsE47UM+mCads7j2+giRBltfwH7SNhah95rqJs3ltEs9V3pP8rYdS0QlNne+9Aj8dS/SiaIA==",
"peer": true,
"dependencies": {
"@babel/runtime": "^7.17.8",
- "@types/react-reconciler": "^0.32.0",
"@types/webxr": "*",
"base64-js": "^1.5.1",
"buffer": "^6.0.3",
"its-fine": "^2.0.0",
- "react-reconciler": "^0.31.0",
"react-use-measure": "^2.1.7",
- "scheduler": "^0.25.0",
+ "scheduler": "^0.27.0",
"suspend-react": "^0.1.3",
"use-sync-external-store": "^1.4.0",
"zustand": "^5.0.3"
@@ -27153,8 +25716,8 @@
"expo-asset": ">=8.4",
"expo-file-system": ">=11.0",
"expo-gl": ">=11.0",
- "react": "^19.0.0",
- "react-dom": "^19.0.0",
+ "react": ">=19 <19.3",
+ "react-dom": ">=19 <19.3",
"react-native": ">=0.78",
"three": ">=0.156"
},
@@ -27183,7 +25746,6 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/its-fine/-/its-fine-2.0.0.tgz",
"integrity": "sha512-KLViCmWx94zOvpLwSlsx6yOCeMhZYaxrJV87Po5k/FoZzcPSahvK5qJ7fYhS61sZi5ikmh2S3Hz55A2l3U69ng==",
- "license": "MIT",
"peer": true,
"dependencies": {
"@types/react-reconciler": "^0.28.9"
@@ -27192,57 +25754,19 @@
"react": "^19.0.0"
}
},
- "node_modules/react-spring/node_modules/@react-three/fiber/node_modules/its-fine/node_modules/@types/react-reconciler": {
- "version": "0.28.9",
- "resolved": "https://registry.npmjs.org/@types/react-reconciler/-/react-reconciler-0.28.9.tgz",
- "integrity": "sha512-HHM3nxyUZ3zAylX8ZEyrDNd2XZOnQ0D5XfunJF5FLQnZbHHYq4UWvW1QfelQNXv1ICNkwYhfxjwfnqivYB6bFg==",
- "license": "MIT",
- "peer": true,
- "peerDependencies": {
- "@types/react": "*"
- }
- },
- "node_modules/react-spring/node_modules/@react-three/fiber/node_modules/react-reconciler": {
- "version": "0.31.0",
- "resolved": "https://registry.npmjs.org/react-reconciler/-/react-reconciler-0.31.0.tgz",
- "integrity": "sha512-7Ob7Z+URmesIsIVRjnLoDGwBEG/tVitidU0nMsqX/eeJaLY89RISO/10ERe0MqmzuKUUB1rmY+h1itMbUHg9BQ==",
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "scheduler": "^0.25.0"
- },
- "engines": {
- "node": ">=0.10.0"
- },
- "peerDependencies": {
- "react": "^19.0.0"
- }
- },
"node_modules/react-spring/node_modules/@types/react": {
- "version": "19.2.7",
- "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.7.tgz",
- "integrity": "sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg==",
- "license": "MIT",
+ "version": "19.2.8",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.8.tgz",
+ "integrity": "sha512-3MbSL37jEchWZz2p2mjntRZtPt837ij10ApxKfgmXCTuHWagYg7iA5bqPw6C8BMPfwidlvfPI/fxOc42HLhcyg==",
"peer": true,
"dependencies": {
"csstype": "^3.2.2"
}
},
- "node_modules/react-spring/node_modules/@types/react-reconciler": {
- "version": "0.32.3",
- "resolved": "https://registry.npmjs.org/@types/react-reconciler/-/react-reconciler-0.32.3.tgz",
- "integrity": "sha512-cMi5ZrLG7UtbL7LTK6hq9w/EZIRk4Mf1Z5qHoI+qBh7/WkYkFXQ7gOto2yfUvPzF5ERMAhaXS5eTQ2SAnHjLzA==",
- "license": "MIT",
- "peer": true,
- "peerDependencies": {
- "@types/react": "*"
- }
- },
"node_modules/react-spring/node_modules/ansi-styles": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
"integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
- "license": "MIT",
"peer": true,
"engines": {
"node": ">=10"
@@ -27255,7 +25779,6 @@
"version": "1.1.12",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
"integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
- "license": "MIT",
"peer": true,
"dependencies": {
"balanced-match": "^1.0.0",
@@ -27280,7 +25803,6 @@
"url": "https://feross.org/support"
}
],
- "license": "MIT",
"peer": true,
"dependencies": {
"base64-js": "^1.3.1",
@@ -27291,7 +25813,6 @@
"version": "12.1.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz",
"integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==",
- "license": "MIT",
"peer": true,
"engines": {
"node": ">=18"
@@ -27302,7 +25823,6 @@
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
"integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
"deprecated": "Glob versions prior to v9 are no longer supported",
- "license": "ISC",
"peer": true,
"dependencies": {
"fs.realpath": "^1.0.0",
@@ -27323,7 +25843,6 @@
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "license": "ISC",
"peer": true,
"dependencies": {
"brace-expansion": "^1.1.7"
@@ -27336,7 +25855,6 @@
"version": "29.7.0",
"resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz",
"integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==",
- "license": "MIT",
"peer": true,
"dependencies": {
"@jest/schemas": "^29.6.3",
@@ -27351,7 +25869,6 @@
"version": "18.3.1",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz",
"integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==",
- "license": "MIT",
"peer": true
},
"node_modules/react-spring/node_modules/react-konva": {
@@ -27372,7 +25889,6 @@
"url": "https://github.com/sponsors/lavrton"
}
],
- "license": "MIT",
"peer": true,
"dependencies": {
"@types/react-reconciler": "^0.32.3",
@@ -27386,11 +25902,19 @@
"react-dom": "^19.2.0"
}
},
+ "node_modules/react-spring/node_modules/react-konva/node_modules/@types/react-reconciler": {
+ "version": "0.32.3",
+ "resolved": "https://registry.npmjs.org/@types/react-reconciler/-/react-reconciler-0.32.3.tgz",
+ "integrity": "sha512-cMi5ZrLG7UtbL7LTK6hq9w/EZIRk4Mf1Z5qHoI+qBh7/WkYkFXQ7gOto2yfUvPzF5ERMAhaXS5eTQ2SAnHjLzA==",
+ "peer": true,
+ "peerDependencies": {
+ "@types/react": "*"
+ }
+ },
"node_modules/react-spring/node_modules/react-konva/node_modules/its-fine": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/its-fine/-/its-fine-2.0.0.tgz",
"integrity": "sha512-KLViCmWx94zOvpLwSlsx6yOCeMhZYaxrJV87Po5k/FoZzcPSahvK5qJ7fYhS61sZi5ikmh2S3Hz55A2l3U69ng==",
- "license": "MIT",
"peer": true,
"dependencies": {
"@types/react-reconciler": "^0.28.9"
@@ -27403,7 +25927,6 @@
"version": "0.28.9",
"resolved": "https://registry.npmjs.org/@types/react-reconciler/-/react-reconciler-0.28.9.tgz",
"integrity": "sha512-HHM3nxyUZ3zAylX8ZEyrDNd2XZOnQ0D5XfunJF5FLQnZbHHYq4UWvW1QfelQNXv1ICNkwYhfxjwfnqivYB6bFg==",
- "license": "MIT",
"peer": true,
"peerDependencies": {
"@types/react": "*"
@@ -27413,7 +25936,6 @@
"version": "0.33.0",
"resolved": "https://registry.npmjs.org/react-reconciler/-/react-reconciler-0.33.0.tgz",
"integrity": "sha512-KetWRytFv1epdpJc3J4G75I4WrplZE5jOL7Yq0p34+OVOKF4Se7WrdIdVC45XsSSmUTlht2FM/fM1FZb1mfQeA==",
- "license": "MIT",
"peer": true,
"dependencies": {
"scheduler": "^0.27.0"
@@ -27425,28 +25947,20 @@
"react": "^19.2.0"
}
},
- "node_modules/react-spring/node_modules/react-konva/node_modules/scheduler": {
- "version": "0.27.0",
- "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz",
- "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==",
- "license": "MIT",
- "peer": true
- },
"node_modules/react-spring/node_modules/react-native": {
- "version": "0.82.1",
- "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.82.1.tgz",
- "integrity": "sha512-tFAqcU7Z4g49xf/KnyCEzI4nRTu1Opcx05Ov2helr8ZTg1z7AJR/3sr2rZ+AAVlAs2IXk+B0WOxXGmdD3+4czA==",
- "license": "MIT",
+ "version": "0.83.1",
+ "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.83.1.tgz",
+ "integrity": "sha512-mL1q5HPq5cWseVhWRLl+Fwvi5z1UO+3vGOpjr+sHFwcUletPRZ5Kv+d0tUfqHmvi73/53NjlQqX1Pyn4GguUfA==",
"peer": true,
"dependencies": {
"@jest/create-cache-key-function": "^29.7.0",
- "@react-native/assets-registry": "0.82.1",
- "@react-native/codegen": "0.82.1",
- "@react-native/community-cli-plugin": "0.82.1",
- "@react-native/gradle-plugin": "0.82.1",
- "@react-native/js-polyfills": "0.82.1",
- "@react-native/normalize-colors": "0.82.1",
- "@react-native/virtualized-lists": "0.82.1",
+ "@react-native/assets-registry": "0.83.1",
+ "@react-native/codegen": "0.83.1",
+ "@react-native/community-cli-plugin": "0.83.1",
+ "@react-native/gradle-plugin": "0.83.1",
+ "@react-native/js-polyfills": "0.83.1",
+ "@react-native/normalize-colors": "0.83.1",
+ "@react-native/virtualized-lists": "0.83.1",
"abort-controller": "^3.0.0",
"anser": "^1.4.9",
"ansi-regex": "^5.0.0",
@@ -27456,23 +25970,23 @@
"commander": "^12.0.0",
"flow-enums-runtime": "^0.0.6",
"glob": "^7.1.1",
- "hermes-compiler": "0.0.0",
+ "hermes-compiler": "0.14.0",
"invariant": "^2.2.4",
"jest-environment-node": "^29.7.0",
"memoize-one": "^5.0.0",
- "metro-runtime": "^0.83.1",
- "metro-source-map": "^0.83.1",
+ "metro-runtime": "^0.83.3",
+ "metro-source-map": "^0.83.3",
"nullthrows": "^1.1.1",
"pretty-format": "^29.7.0",
"promise": "^8.3.0",
"react-devtools-core": "^6.1.5",
"react-refresh": "^0.14.0",
"regenerator-runtime": "^0.13.2",
- "scheduler": "0.26.0",
+ "scheduler": "0.27.0",
"semver": "^7.1.3",
"stacktrace-parser": "^0.1.10",
"whatwg-fetch": "^3.0.0",
- "ws": "^6.2.3",
+ "ws": "^7.5.10",
"yargs": "^17.6.2"
},
"bin": {
@@ -27483,7 +25997,7 @@
},
"peerDependencies": {
"@types/react": "^19.1.1",
- "react": "^19.1.1"
+ "react": "^19.2.0"
},
"peerDependenciesMeta": {
"@types/react": {
@@ -27492,10 +26006,9 @@
}
},
"node_modules/react-spring/node_modules/react-native/node_modules/@react-native/virtualized-lists": {
- "version": "0.82.1",
- "resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.82.1.tgz",
- "integrity": "sha512-f5zpJg9gzh7JtCbsIwV+4kP3eI0QBuA93JGmwFRd4onQ3DnCjV2J5pYqdWtM95sjSKK1dyik59Gj01lLeKqs1Q==",
- "license": "MIT",
+ "version": "0.83.1",
+ "resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.83.1.tgz",
+ "integrity": "sha512-MdmoAbQUTOdicCocm5XAFDJWsswxk7hxa6ALnm6Y88p01HFML0W593hAn6qOt9q6IM1KbAcebtH6oOd4gcQy8w==",
"peer": true,
"dependencies": {
"invariant": "^2.2.4",
@@ -27505,7 +26018,7 @@
"node": ">= 20.19.4"
},
"peerDependencies": {
- "@types/react": "^19.1.1",
+ "@types/react": "^19.2.0",
"react": "*",
"react-native": "*"
},
@@ -27515,28 +26028,31 @@
}
}
},
- "node_modules/react-spring/node_modules/react-native/node_modules/scheduler": {
- "version": "0.26.0",
- "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz",
- "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==",
- "license": "MIT",
- "peer": true
- },
"node_modules/react-spring/node_modules/scheduler": {
- "version": "0.25.0",
- "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.25.0.tgz",
- "integrity": "sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==",
- "license": "MIT",
+ "version": "0.27.0",
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz",
+ "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==",
"peer": true
},
"node_modules/react-spring/node_modules/ws": {
- "version": "6.2.3",
- "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz",
- "integrity": "sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==",
- "license": "MIT",
+ "version": "7.5.10",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz",
+ "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==",
"peer": true,
- "dependencies": {
- "async-limiter": "~1.0.0"
+ "engines": {
+ "node": ">=8.3.0"
+ },
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": "^5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
}
},
"node_modules/react-style-singleton": {
@@ -27565,7 +26081,6 @@
"version": "2.1.7",
"resolved": "https://registry.npmjs.org/react-use-measure/-/react-use-measure-2.1.7.tgz",
"integrity": "sha512-KrvcAo13I/60HpwGO5jpW7E9DfusKyLPLvuHlUyP5zqnmAPhNc6qTRjUQrdTADl0lpPpDVU2/Gg51UlOGHXbdg==",
- "license": "MIT",
"peer": true,
"peerDependencies": {
"react": ">=16.13",
@@ -27608,7 +26123,6 @@
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/react-zdog/-/react-zdog-1.2.2.tgz",
"integrity": "sha512-Ix7ALha91aOEwiHuxumCeYbARS5XNpc/w0v145oGkM6poF/CvhKJwzLhM5sEZbtrghMA+psAhOJkCTzJoseicA==",
- "license": "MIT",
"peer": true,
"dependencies": {
"react": "^18.2.0",
@@ -27725,7 +26239,6 @@
"version": "0.13.11",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
"integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==",
- "license": "MIT",
"peer": true
},
"node_modules/regexp.prototype.flags": {
@@ -27916,7 +26429,6 @@
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz",
"integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==",
- "license": "MIT",
"peer": true
},
"node_modules/resolve": {
@@ -27937,31 +26449,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/resolve-cwd": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz",
- "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "resolve-from": "^5.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/resolve-cwd/node_modules/resolve-from": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
- "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/resolve-dir": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz",
@@ -28452,7 +26939,6 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz",
"integrity": "sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==",
- "license": "MIT",
"peer": true,
"engines": {
"node": ">=0.10.0"
@@ -28658,7 +27144,6 @@
"version": "1.8.3",
"resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz",
"integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==",
- "license": "MIT",
"peer": true,
"engines": {
"node": ">= 0.4"
@@ -28777,14 +27262,6 @@
"node": ">=10"
}
},
- "node_modules/sisteransi": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
- "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==",
- "dev": true,
- "license": "MIT",
- "peer": true
- },
"node_modules/slash": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
@@ -28986,14 +27463,12 @@
"version": "1.3.4",
"resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz",
"integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==",
- "license": "MIT",
"peer": true
},
"node_modules/stacktrace-parser": {
"version": "0.1.11",
"resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.11.tgz",
"integrity": "sha512-WjlahMgHmCJpqzU8bIBy4qtsZdU9lRlcZE3Lvyej6t4tuOuv1vk57OW3MBrj6hXBFx/nNoC9MPMTcr5YA7NQbg==",
- "license": "MIT",
"peer": true,
"dependencies": {
"type-fest": "^0.7.1"
@@ -29002,16 +27477,6 @@
"node": ">=6"
}
},
- "node_modules/stacktrace-parser/node_modules/type-fest": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz",
- "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==",
- "license": "(MIT OR CC0-1.0)",
- "peer": true,
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/statuses": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz",
@@ -29130,21 +27595,6 @@
"dev": true,
"license": "CC0-1.0"
},
- "node_modules/string-length": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz",
- "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "char-regex": "^1.0.2",
- "strip-ansi": "^6.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/string-width": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
@@ -29379,17 +27829,6 @@
"node": ">=8"
}
},
- "node_modules/strip-bom": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz",
- "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==",
- "dev": true,
- "license": "MIT",
- "peer": true,
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/strip-final-newline": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
@@ -29599,7 +28038,6 @@
"version": "0.1.3",
"resolved": "https://registry.npmjs.org/suspend-react/-/suspend-react-0.1.3.tgz",
"integrity": "sha512-aqldKgX9aZqpoDp3e8/BZ8Dm7x1pJl+qI3ZKxDN0i/IQTWUwBx/ManmlVJ3wowqbno6c2bmiIfs+Um6LbsjJyQ==",
- "license": "MIT",
"peer": true,
"peerDependencies": {
"react": ">=17.0"
@@ -30076,7 +28514,6 @@
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz",
"integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==",
- "license": "MIT",
"peer": true
},
"node_modules/through2": {
@@ -30217,7 +28654,6 @@
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz",
"integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==",
- "license": "BSD-3-Clause",
"peer": true
},
"node_modules/to-regex-range": {
@@ -30503,24 +28939,18 @@
"version": "4.0.8",
"resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
"integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
- "license": "MIT",
"peer": true,
"engines": {
"node": ">=4"
}
},
"node_modules/type-fest": {
- "version": "0.21.3",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
- "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
- "dev": true,
- "license": "(MIT OR CC0-1.0)",
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz",
+ "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==",
"peer": true,
"engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">=8"
}
},
"node_modules/type-is": {
@@ -31182,22 +29612,6 @@
"node": ">=6"
}
},
- "node_modules/v8-to-istanbul": {
- "version": "9.3.0",
- "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz",
- "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==",
- "dev": true,
- "license": "ISC",
- "peer": true,
- "dependencies": {
- "@jridgewell/trace-mapping": "^0.3.12",
- "@types/istanbul-lib-coverage": "^2.0.1",
- "convert-source-map": "^2.0.0"
- },
- "engines": {
- "node": ">=10.12.0"
- }
- },
"node_modules/valibot": {
"version": "0.41.0",
"resolved": "https://registry.npmjs.org/valibot/-/valibot-0.41.0.tgz",
@@ -32277,7 +30691,6 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/vlq/-/vlq-1.0.1.tgz",
"integrity": "sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==",
- "license": "MIT",
"peer": true
},
"node_modules/vscode-uri": {
@@ -32304,7 +30717,6 @@
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz",
"integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==",
- "license": "Apache-2.0",
"peer": true,
"dependencies": {
"makeerror": "1.0.12"
@@ -32494,7 +30906,6 @@
"version": "3.6.20",
"resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz",
"integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==",
- "license": "MIT",
"peer": true
},
"node_modules/whatwg-mimetype": {
@@ -32778,7 +31189,6 @@
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz",
"integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==",
- "license": "ISC",
"peer": true,
"dependencies": {
"imurmurhash": "^0.1.4",
@@ -32950,7 +31360,6 @@
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/zdog/-/zdog-1.1.3.tgz",
"integrity": "sha512-raRj6r0gPzopFm5XWBJZr/NuV4EEnT4iE+U3dp5FV5pCb588Gmm3zLIp/j9yqqcMiHH8VNQlerLTgOqL7krh6w==",
- "license": "MIT",
"peer": true
},
"node_modules/zustand": {
diff --git a/frontend/scripts/generate-news-json.mjs b/frontend/scripts/generate-news-json.mjs
new file mode 100644
index 0000000000..4382d77509
--- /dev/null
+++ b/frontend/scripts/generate-news-json.mjs
@@ -0,0 +1,71 @@
+
+import fs from 'fs';
+import path from 'path';
+import { fileURLToPath } from 'url';
+
+const __filename = fileURLToPath(import.meta.url);
+const __dirname = path.dirname(__filename);
+
+const NEWS_DIR = path.resolve(__dirname, '../libs/markdown-content/src/lib/content/news');
+const OUTPUT_FILE = path.resolve(__dirname, '../apps/artcraft-website/public/news.json');
+
+const parseFrontmatter = (raw) => {
+ const text = raw.replace(/\r\n/g, "\n");
+ if (!text.startsWith("---\n")) {
+ return { frontmatter: {}, body: text };
+ }
+ const end = text.indexOf("\n---\n", 4);
+ if (end === -1) return { frontmatter: {}, body: text };
+ const header = text.slice(4, end);
+ const body = text.slice(end + 5);
+ const fm = {};
+ for (const line of header.split("\n")) {
+ const idx = line.indexOf(":");
+ if (idx === -1) continue;
+ const key = line.slice(0, idx).trim();
+ const value = line
+ .slice(idx + 1)
+ .trim()
+ .replace(/^"|^'|"$|'$/g, "");
+ if (key) fm[key] = value;
+ }
+ return { frontmatter: fm, body };
+};
+
+const generateNewsJson = () => {
+ if (!fs.existsSync(NEWS_DIR)) {
+ console.error(`News directory not found: ${NEWS_DIR}`);
+ process.exit(1);
+ }
+
+ const files = fs.readdirSync(NEWS_DIR).filter(f => f.endsWith('.md'));
+ const posts = files.map(filename => {
+ const filePath = path.join(NEWS_DIR, filename);
+ const raw = fs.readFileSync(filePath, 'utf-8');
+ const { frontmatter, body } = parseFrontmatter(raw);
+ const slug = filename.replace(/\.md$/, "");
+
+ return {
+ slug,
+ title: frontmatter.title || slug,
+ description: frontmatter.abstract || "",
+ date: frontmatter.date || "",
+ thumbnail: frontmatter.thumbnail,
+ body,
+ };
+ }).sort((a, b) => {
+ if (a.date && b.date)
+ return new Date(b.date).getTime() - new Date(a.date).getTime();
+ return 0;
+ });
+
+ const outputDir = path.dirname(OUTPUT_FILE);
+ if (!fs.existsSync(outputDir)) {
+ fs.mkdirSync(outputDir, { recursive: true });
+ }
+
+ fs.writeFileSync(OUTPUT_FILE, JSON.stringify(posts, null, 2));
+ console.log(`Generated news.json at ${OUTPUT_FILE} with ${posts.length} posts.`);
+};
+
+generateNewsJson();
diff --git a/frontend/tsconfig.base.json b/frontend/tsconfig.base.json
index 3adc05c796..10c929a65c 100644
--- a/frontend/tsconfig.base.json
+++ b/frontend/tsconfig.base.json
@@ -28,7 +28,8 @@
// Uncomment if 2D ever gets used
// "apps/editor2d/app/src/*",
"apps/artcraft/app/src/*"
- ]
+ ],
+ "@storyteller/markdown-content": ["libs/markdown-content/src/index.ts"]
}
}
}
diff --git a/frontend/tsconfig.json b/frontend/tsconfig.json
index 838144ff26..e1c23a78b8 100644
--- a/frontend/tsconfig.json
+++ b/frontend/tsconfig.json
@@ -176,6 +176,9 @@
},
{
"path": "./libs/components/viewer-3d"
+ },
+ {
+ "path": "./libs/markdown-content"
}
]
}