├── .gitignore
├── README.md
├── app
├── (helpers)
│ └── proxy
│ │ └── route.js
├── [id]
│ └── page.js
├── globals.scss
├── layout.js
└── page.js
├── components
├── Draft.js
├── Editor.js
├── IncludableLabel.js
├── block
│ ├── CodeBlockNode.js
│ ├── LogLine.js
│ └── Preview.js
└── editor
│ ├── SlashCommand.tsx
│ └── defaultContent.js
├── jsconfig.json
├── lib
├── api
│ └── notebooks.js
├── bundler
│ ├── index.ts
│ └── plugins
│ │ ├── fetch-plugin.ts
│ │ └── unpkg-path-plugin.ts
└── hooks
│ ├── debounce.js
│ └── useLocalStorage.ts
├── next.config.js
├── package.json
├── postcss.config.js
├── tailwind.config.js
└── yarn.lock
/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2 |
3 | # dependencies
4 | /node_modules
5 | /.pnp
6 | .pnp.js
7 |
8 | # testing
9 | /coverage
10 |
11 | # next.js
12 | /.next/
13 | /out/
14 |
15 | # production
16 | /build
17 |
18 | # misc
19 | .DS_Store
20 | *.pem
21 |
22 | # debug
23 | npm-debug.log*
24 | yarn-debug.log*
25 | yarn-error.log*
26 |
27 | # local env files
28 | .env*.local
29 |
30 | # vercel
31 | .vercel
32 |
33 | # typescript
34 | *.tsbuildinfo
35 | next-env.d.ts
36 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # JS Notebook
2 |
3 | Play around with Javascript in your browser and share notebooks.
4 |
5 | [**jsnotebook.dev**](https://jsnotebook.dev)
6 |
--------------------------------------------------------------------------------
/app/(helpers)/proxy/route.js:
--------------------------------------------------------------------------------
1 | import { NextResponse } from "next/server";
2 | import axios from "axios";
3 |
4 | export const GET = async (request) => {
5 | const { searchParams } = new URL(request.url);
6 | const url = searchParams.get("url");
7 |
8 | const { data, headers: axiosHeaders, status } = await axios.get(url);
9 |
10 | const headers = new Headers();
11 | for (const [key, value] of Object.entries(axiosHeaders)) {
12 | if(key === 'content-encoding' || key === 'connection') continue;
13 | headers.set(key, value);
14 | }
15 |
16 | return new NextResponse(data, { headers, status });
17 | };
18 |
--------------------------------------------------------------------------------
/app/[id]/page.js:
--------------------------------------------------------------------------------
1 | import Draft from "@/components/Draft";
2 | import { notFound } from "next/navigation";
3 |
4 | export default async function Notebook({ params: { id } }) {
5 | let notebook;
6 | try {
7 | const result = await fetch(
8 | `https://schof.link/${id}?d=${new Date().valueOf()}`
9 | );
10 | notebook = await result.json();
11 | } catch (e) {
12 | return notFound();
13 | }
14 |
15 | return ;
16 | }
17 |
--------------------------------------------------------------------------------
/app/globals.scss:
--------------------------------------------------------------------------------
1 | @tailwind base;
2 | @tailwind components;
3 | @tailwind utilities;
4 |
5 | .tiptap {
6 | outline: none;
7 | width: 100%;
8 | min-height: 50vh;
9 | @apply p-12 md:p-24 pt-4 md:pt-6;
10 |
11 | .is-empty::before {
12 | content: attr(data-placeholder);
13 | float: left;
14 | color: #ced4da;
15 | pointer-events: none;
16 | height: 0;
17 | }
18 |
19 | pre {
20 | .hljs-comment,
21 | .hljs-quote {
22 | @apply text-gray-400;
23 | }
24 |
25 | .hljs-variable,
26 | .hljs-template-variable,
27 | .hljs-attribute,
28 | .hljs-tag,
29 | .hljs-name,
30 | .hljs-regexp,
31 | .hljs-link,
32 | .hljs-name,
33 | .hljs-selector-id,
34 | .hljs-selector-class {
35 | color: #f98181;
36 | }
37 |
38 | .hljs-number,
39 | .hljs-meta,
40 | .hljs-built_in,
41 | .hljs-builtin-name,
42 | .hljs-literal,
43 | .hljs-type,
44 | .hljs-params {
45 | color: #fbbc88;
46 | }
47 |
48 | .hljs-string,
49 | .hljs-symbol,
50 | .hljs-bullet {
51 | color: #b9f18d;
52 | }
53 |
54 | .hljs-title,
55 | .hljs-section {
56 | color: #faf594;
57 | }
58 |
59 | .hljs-keyword,
60 | .hljs-selector-tag {
61 | color: #70cff8;
62 | }
63 |
64 | .hljs-emphasis {
65 | font-style: italic;
66 | }
67 |
68 | .hljs-strong {
69 | font-weight: 700;
70 | }
71 | }
72 | }
73 |
--------------------------------------------------------------------------------
/app/layout.js:
--------------------------------------------------------------------------------
1 | import IncludableLabel from "@/components/IncludableLabel";
2 | import "./globals.scss";
3 | import { Inter } from "next/font/google";
4 |
5 | const inter = Inter({ subsets: ["latin"] });
6 |
7 | export const metadata = {
8 | title: "JS Notebook",
9 | description:
10 | "Play around with Javascript in your browser and share notebooks.",
11 | };
12 |
13 | export default function RootLayout({ children }) {
14 | return (
15 |
16 |
17 | {children}
18 |
19 |
20 |
21 | );
22 | }
23 |
--------------------------------------------------------------------------------
/app/page.js:
--------------------------------------------------------------------------------
1 | import Draft from "@/components/Draft";
2 | import { defaultContent } from "@/components/editor/defaultContent";
3 |
4 | export default function Home() {
5 | return ;
6 | }
7 |
--------------------------------------------------------------------------------
/components/Draft.js:
--------------------------------------------------------------------------------
1 | "use client";
2 |
3 | import { useEffect, useState } from "react";
4 | import { useRouter } from "next/navigation";
5 | import Link from "next/link";
6 |
7 | import Editor from "@/components/Editor";
8 | import { saveNotebook } from "@/lib/api/notebooks";
9 | import { loadEsbuild } from "@/lib/bundler";
10 |
11 | const Draft = ({ notebook }) => {
12 | const router = useRouter();
13 | const [loading, setLoading] = useState(false);
14 | const [content, setContent] = useState(notebook.content);
15 | const [title, setTitle] = useState(notebook.title || 'Untitled notebook');
16 |
17 | const save = async () => {
18 | setLoading(true);
19 |
20 | try {
21 | await saveNotebook({
22 | ...notebook,
23 | title,
24 | content,
25 | });
26 | } catch (e) {
27 | alert(
28 | "Sorry, we failed to save the changes. Check your internet connection and try again."
29 | );
30 | }
31 |
32 | setLoading(false);
33 | };
34 |
35 | const createNew = async () => {
36 | setLoading(true);
37 |
38 | // create empty notebook
39 | const id = await saveNotebook({
40 | content: "
"
41 | });
42 |
43 | router.push(`/${id}`);
44 | };
45 |
46 | const keyboardShortcutSave = (e) => {
47 | if (e.key === "s" && e.metaKey) {
48 | e.preventDefault();
49 |
50 | save();
51 | }
52 | };
53 |
54 | useEffect(() => {
55 | if (!notebook.id) {
56 | return;
57 | }
58 | window.addEventListener("keydown", keyboardShortcutSave);
59 | return () => window.removeEventListener("keydown", keyboardShortcutSave);
60 | }, []);
61 |
62 | useEffect(() => {
63 | try {
64 | loadEsbuild();
65 | } catch (_) {
66 | // ignore
67 | }
68 | }, []);
69 |
70 | return (
71 |
72 | {/* --- Menu bar --- */}
73 |
74 |
📘
75 |
76 | {!loading &&
New }
77 | {loading && (
78 |
Loading...
79 | )}
80 | {!loading && notebook.id &&
Save }
81 | {!loading && !notebook.id && (
82 |
83 | View on GitHub
84 |
85 | )}
86 |
87 |
88 |
89 | {/* --- Editor --- */}
90 |
91 |
92 |
93 | setTitle(e.target.value)}
98 | />
99 |
100 |
101 |
102 |
103 |
104 | );
105 | };
106 |
107 | export default Draft;
108 |
--------------------------------------------------------------------------------
/components/Editor.js:
--------------------------------------------------------------------------------
1 | "use client";
2 |
3 | import { useEffect } from "react";
4 | import { EditorContent, useEditor, ReactNodeViewRenderer } from "@tiptap/react";
5 | import StarterKit from "@tiptap/starter-kit";
6 | import Highlight from "@tiptap/extension-highlight";
7 | import Typography from "@tiptap/extension-typography";
8 | import Placeholder from "@tiptap/extension-placeholder";
9 | import Link from "@tiptap/extension-link";
10 | import js from "highlight.js/lib/languages/javascript";
11 | import ts from "highlight.js/lib/languages/typescript";
12 | import { lowlight } from "lowlight";
13 |
14 | import CodeBlockNode from "./block/CodeBlockNode";
15 | import SlashCommand from "./editor/SlashCommand";
16 | import CodeBlockLowlight from "@tiptap/extension-code-block-lowlight";
17 | import debounce from "@/lib/hooks/debounce";
18 |
19 | lowlight.registerLanguage("js", js);
20 | lowlight.registerLanguage("ts", ts);
21 |
22 | const extensions = [
23 | StarterKit.configure({
24 | bulletList: {
25 | HTMLAttributes: {
26 | class: "-mt-2",
27 | },
28 | },
29 | orderedList: {
30 | HTMLAttributes: {
31 | class: "-mt-2",
32 | },
33 | },
34 | listItem: {
35 | HTMLAttributes: {
36 | class: "-mb-2",
37 | },
38 | },
39 | code: {
40 | HTMLAttributes: {
41 | spellcheck: "false",
42 | },
43 | spellcheck: "false",
44 | },
45 | codeBlock: false,
46 | dropcursor: {
47 | color: "#DBEAFE",
48 | width: 4,
49 | },
50 | gapcursor: false,
51 | }),
52 | Placeholder.configure({
53 | placeholder: ({ node }) => {
54 | if (node.type.name === "heading") {
55 | return "Untitled notebook";
56 | }
57 | if (node.type.name === "paragraph") {
58 | return "Press '/' for commands, or start typing...";
59 | }
60 | },
61 | }),
62 | CodeBlockLowlight.extend({
63 | addNodeView() {
64 | return ReactNodeViewRenderer(CodeBlockNode);
65 | },
66 | addAttributes() {
67 | return {
68 | language: {
69 | default: "ts",
70 | },
71 | result: {
72 | default: null,
73 | },
74 | inputHash: {
75 | default: null,
76 | },
77 | };
78 | },
79 | }).configure({ lowlight }),
80 | Highlight,
81 | Typography,
82 | Link,
83 | SlashCommand,
84 | ];
85 |
86 | const Editor = ({ content, onUpdate }) => {
87 | const editor = useEditor({
88 | extensions,
89 | content,
90 | onUpdate: debounce((e) => {
91 | onUpdate(e.editor.getHTML());
92 | }),
93 | autofocus: !content ? 'start' : false,
94 | });
95 |
96 | useEffect(() => {
97 | if (editor && content === '
') {
98 | editor.commands.focus();
99 | }
100 | }, [editor, content]);
101 |
102 | return (
103 |
104 |
105 |
106 | );
107 | };
108 |
109 | export default Editor;
110 |
--------------------------------------------------------------------------------
/components/IncludableLabel.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 |
3 | const IncludableLabel = ({}) => {
4 | return (
5 |
11 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 | );
26 | };
27 |
28 | export default IncludableLabel;
29 |
--------------------------------------------------------------------------------
/components/block/CodeBlockNode.js:
--------------------------------------------------------------------------------
1 | import { useMemo } from "react";
2 | import { NodeViewContent, NodeViewWrapper } from "@tiptap/react";
3 |
4 | import Preview from "./Preview";
5 |
6 | const getText = (node) => {
7 | let result = "";
8 | node.descendants((n) => {
9 | if (n.type.name === "text") {
10 | result += n.text;
11 | }
12 | });
13 | return result;
14 | };
15 |
16 | export default ({ node, updateAttributes }) => {
17 | const nodeText = useMemo(() => getText(node), [node]);
18 |
19 | return (
20 |
21 |
22 |
23 |
24 |
31 |
32 | );
33 | };
34 |
--------------------------------------------------------------------------------
/components/block/LogLine.js:
--------------------------------------------------------------------------------
1 | import {
2 | AlertTriangle,
3 | ArrowRight,
4 | CheckCircle2,
5 | InfoIcon,
6 | XOctagon,
7 | } from "lucide-react";
8 |
9 | const LogLine = ({ type, args }) => {
10 | let icon = null;
11 | switch (type) {
12 | case "ERR":
13 | icon = ;
14 | break;
15 | case "INFO":
16 | icon = ;
17 | break;
18 | case "WARN":
19 | icon = ;
20 | break;
21 | case "LOG":
22 | case "RESULT":
23 | case "HTML":
24 | icon = ;
25 | break;
26 | }
27 |
28 | let output = args.join(" ");
29 | if (type === "HTML") {
30 | output =
;
31 | }
32 |
33 | if (type === "TIME") {
34 | return (
35 |
36 |
37 | Finished running in {output}ms
38 |
39 | );
40 | }
41 |
42 | return (
43 |
44 | {icon}
{output}
45 |
46 | );
47 | };
48 |
49 | export default LogLine;
50 |
--------------------------------------------------------------------------------
/components/block/Preview.js:
--------------------------------------------------------------------------------
1 | import React, { useCallback, useRef, useEffect, useState, useId } from "react";
2 | import * as crc32 from "crc-32";
3 |
4 | import esBundle from "@/lib/bundler";
5 | import LogLine from "./LogLine";
6 | import debounce from "@/lib/hooks/debounce";
7 |
8 | const html = `
9 |
10 |
11 |
12 |
13 |
16 |
17 |
89 |
90 |
91 |
92 | `;
93 |
94 | const Preview = ({ input, attributes, updateAttributes }) => {
95 | const iframe = useRef();
96 | const id = useId();
97 | const [loading, setLoading] = useState(false);
98 | const [inputHash, setInputHash] = useState();
99 | const [result, setResult] = useState(
100 | () => (attributes.result && JSON.parse(attributes.result)) || []
101 | );
102 |
103 | useEffect(() => {
104 | const newHash = crc32.str(input);
105 | if (newHash === attributes.inputHash) {
106 | console.log("skipping recompile");
107 | return;
108 | }
109 |
110 | setInputHash(newHash);
111 | compile();
112 | }, [input]);
113 |
114 | useEffect(() => {
115 | if (!inputHash || !result || !result.length) {
116 | return;
117 | }
118 |
119 | updateAttributes({
120 | result: JSON.stringify(result),
121 | inputHash,
122 | });
123 | console.log("Result updated");
124 | }, [result, inputHash]);
125 |
126 | useEffect(() => {
127 | window.addEventListener("message", (event) => {
128 | if (event.data.id === id) {
129 | console.log("Message received", event.data);
130 | setResult(event.data.result || []);
131 | }
132 | });
133 | }, []);
134 |
135 | const compile = useCallback(
136 | debounce(async () => {
137 | console.log("Compiling", input);
138 | input = input.trim();
139 | if (!input) return;
140 |
141 | setLoading(true);
142 | const { output, error } = await esBundle(input, true);
143 | if (error) {
144 | setResult([["ERR", error.toString()]]);
145 | } else {
146 | const code = `window.codeRunner = async function () { \n${output}\n }`;
147 | iframe.current?.contentWindow?.postMessage({ id, code }, "*");
148 | }
149 | setLoading(false);
150 | }),
151 | [input]
152 | );
153 |
154 | return (
155 |
156 |
163 | {loading ? (
164 |
Loading
165 | ) : (
166 | result?.map(([type, ...args], i) => (
167 |
168 | ))
169 | )}
170 |
171 | );
172 | };
173 |
174 | export default React.memo(Preview);
175 |
--------------------------------------------------------------------------------
/components/editor/SlashCommand.tsx:
--------------------------------------------------------------------------------
1 | import React, {
2 | useState,
3 | useEffect,
4 | useCallback,
5 | ReactNode,
6 | useRef,
7 | useLayoutEffect,
8 | } from "react";
9 | import { Editor, Range, Extension } from "@tiptap/core";
10 | import Suggestion from "@tiptap/suggestion";
11 | import { ReactRenderer } from "@tiptap/react";
12 | import tippy from "tippy.js";
13 | import {
14 | Heading2,
15 | Heading3,
16 | List,
17 | ListOrdered,
18 | Text,
19 | Code,
20 | } from "lucide-react";
21 |
22 | interface CommandItemProps {
23 | title: string;
24 | description: string;
25 | icon: ReactNode;
26 | }
27 |
28 | interface CommandProps {
29 | editor: Editor;
30 | range: Range;
31 | }
32 |
33 | const Command = Extension.create({
34 | name: "slash-command",
35 | addOptions() {
36 | return {
37 | suggestion: {
38 | char: "/",
39 | allow: ({ state: { selection } }) =>
40 | selection?.$anchor?.parent?.type?.name === "paragraph",
41 | command: ({
42 | editor,
43 | range,
44 | props,
45 | }: {
46 | editor: Editor;
47 | range: Range;
48 | props: any;
49 | }) => {
50 | props.command({ editor, range });
51 | },
52 | },
53 | };
54 | },
55 | addProseMirrorPlugins() {
56 | return [
57 | Suggestion({
58 | editor: this.editor,
59 | ...this.options.suggestion,
60 | }),
61 | ];
62 | },
63 | });
64 |
65 | const getSuggestionItems = ({ query }: { query: string }) => {
66 | return [
67 | {
68 | title: "Execute code",
69 | description: "Execute Javascript or TypeScript.",
70 | searchTerms: [
71 | "javascript",
72 | "js",
73 | "ts",
74 | "typescript",
75 | "execute",
76 | "code",
77 | "codeblock",
78 | ],
79 | icon:
,
80 | command: ({ editor, range }: CommandProps) =>
81 | editor.chain().focus().deleteRange(range).toggleCodeBlock().run(),
82 | },
83 | {
84 | title: "Text",
85 | description: "Just start typing with plain text.",
86 | searchTerms: ["p", "paragraph"],
87 | icon: ,
88 | command: ({ editor, range }: CommandProps) => {
89 | editor
90 | .chain()
91 | .focus()
92 | .deleteRange(range)
93 | .toggleNode("paragraph", "paragraph")
94 | .run();
95 | },
96 | },
97 | {
98 | title: "Heading 2",
99 | description: "Medium section heading.",
100 | searchTerms: ["subtitle", "medium"],
101 | icon: ,
102 | command: ({ editor, range }: CommandProps) => {
103 | editor
104 | .chain()
105 | .focus()
106 | .deleteRange(range)
107 | .setNode("heading", { level: 2 })
108 | .run();
109 | },
110 | },
111 | {
112 | title: "Heading 3",
113 | description: "Small section heading.",
114 | searchTerms: ["subtitle", "small"],
115 | icon: ,
116 | command: ({ editor, range }: CommandProps) => {
117 | editor
118 | .chain()
119 | .focus()
120 | .deleteRange(range)
121 | .setNode("heading", { level: 3 })
122 | .run();
123 | },
124 | },
125 | {
126 | title: "Bullet List",
127 | description: "Create a simple bullet list.",
128 | searchTerms: ["unordered", "point"],
129 | icon:
,
130 | command: ({ editor, range }: CommandProps) => {
131 | editor.chain().focus().deleteRange(range).toggleBulletList().run();
132 | },
133 | },
134 | {
135 | title: "Numbered List",
136 | description: "Create a list with numbering.",
137 | searchTerms: ["ordered"],
138 | icon: ,
139 | command: ({ editor, range }: CommandProps) => {
140 | editor.chain().focus().deleteRange(range).toggleOrderedList().run();
141 | },
142 | },
143 | ].filter((item) => {
144 | if (typeof query === "string" && query.length > 0) {
145 | const search = query.toLowerCase();
146 | return (
147 | item.title.toLowerCase().includes(search) ||
148 | item.description.toLowerCase().includes(search) ||
149 | (item.searchTerms &&
150 | item.searchTerms.some((term: string) => term.includes(search)))
151 | );
152 | }
153 | return true;
154 | });
155 | };
156 |
157 | export const updateScrollView = (container: HTMLElement, item: HTMLElement) => {
158 | const containerHeight = container.offsetHeight;
159 | const itemHeight = item ? item.offsetHeight : 0;
160 |
161 | const top = item.offsetTop;
162 | const bottom = top + itemHeight;
163 |
164 | if (top < container.scrollTop) {
165 | container.scrollTop -= container.scrollTop - top + 5;
166 | } else if (bottom > containerHeight + container.scrollTop) {
167 | container.scrollTop += bottom - containerHeight - container.scrollTop + 5;
168 | }
169 | };
170 |
171 | const CommandList = ({
172 | items,
173 | command,
174 | editor,
175 | range,
176 | setCommitHandler,
177 | }: {
178 | items: CommandItemProps[];
179 | command: any;
180 | editor: any;
181 | range: any;
182 | setCommitHandler: (handler: Function) => void;
183 | }) => {
184 | const [selectedIndex, setSelectedIndex] = useState(0);
185 |
186 | const selectItem = useCallback(
187 | (index: number) => {
188 | const item = items[index];
189 | item?.command?.({ editor, range });
190 | },
191 | [command, editor, items]
192 | );
193 |
194 | useEffect(() => {
195 | setCommitHandler?.(() => selectItem(selectedIndex));
196 | }, [setCommitHandler]);
197 |
198 | useEffect(() => {
199 | const navigationKeys = ["ArrowUp", "ArrowDown", "Enter"];
200 | const onKeyDown = (e: KeyboardEvent) => {
201 | if (navigationKeys.includes(e.key)) {
202 | e.preventDefault();
203 | if (e.key === "ArrowUp") {
204 | setSelectedIndex((selectedIndex + items.length - 1) % items.length);
205 | return true;
206 | }
207 | if (e.key === "ArrowDown") {
208 | setSelectedIndex((selectedIndex + 1) % items.length);
209 | return true;
210 | }
211 | if (e.key === "Enter") {
212 | selectItem(selectedIndex);
213 | return true;
214 | }
215 | return false;
216 | }
217 | };
218 | document.addEventListener("keydown", onKeyDown);
219 | return () => {
220 | document.removeEventListener("keydown", onKeyDown);
221 | };
222 | }, [items, selectedIndex, setSelectedIndex, selectItem]);
223 |
224 | useEffect(() => {
225 | setSelectedIndex(0);
226 | }, [items]);
227 |
228 | const commandListContainer = useRef(null);
229 |
230 | useLayoutEffect(() => {
231 | const container = commandListContainer?.current;
232 |
233 | const item = container?.children[selectedIndex] as HTMLElement;
234 |
235 | if (item && container) updateScrollView(container, item);
236 | }, [selectedIndex]);
237 |
238 | return items.length > 0 ? (
239 |
244 | {items.map((item: CommandItemProps, index: number) => {
245 | return (
246 |
selectItem(index)}
252 | >
253 |
254 | {item.icon}
255 |
256 |
257 |
{item.title}
258 |
{item.description}
259 |
260 |
261 | );
262 | })}
263 |
264 | ) : null;
265 | };
266 |
267 | const renderItems = () => {
268 | let component: ReactRenderer | null = null;
269 | let popup: any | null = null;
270 | let commitHandler;
271 |
272 | return {
273 | onStart: (props: { editor: Editor; clientRect: DOMRect }) => {
274 | component = new ReactRenderer(CommandList, {
275 | props: {
276 | ...props,
277 | setCommitHandler: (h) => (commitHandler = h),
278 | },
279 | editor: props.editor,
280 | });
281 |
282 | // @ts-ignore
283 | popup = tippy("body", {
284 | getReferenceClientRect: props.clientRect,
285 | appendTo: () => document.body,
286 | content: component.element,
287 | showOnCreate: true,
288 | interactive: true,
289 | trigger: "manual",
290 | placement: "bottom-start",
291 | });
292 | },
293 | onUpdate: (props: { editor: Editor; clientRect: DOMRect }) => {
294 | component?.updateProps({
295 | ...props,
296 | setCommitHandler: (h) => (commitHandler = h),
297 | });
298 |
299 | popup &&
300 | popup[0].setProps({
301 | getReferenceClientRect: props.clientRect,
302 | });
303 | },
304 | onKeyDown: (props: { event: KeyboardEvent }) => {
305 | if (props.event.key === "Escape") {
306 | popup?.[0].hide();
307 |
308 | return true;
309 | }
310 |
311 | if (props.event.key === "Enter" && commitHandler) {
312 | commitHandler();
313 |
314 | return true;
315 | }
316 |
317 | // @ts-ignore
318 | return component?.ref?.onKeyDown(props);
319 | },
320 | onExit: () => {
321 | popup?.[0].destroy();
322 | component?.destroy();
323 | },
324 | };
325 | };
326 |
327 | const SlashCommand = Command.configure({
328 | suggestion: {
329 | items: getSuggestionItems,
330 | render: renderItems,
331 | },
332 | });
333 |
334 | export default SlashCommand;
335 |
--------------------------------------------------------------------------------
/components/editor/defaultContent.js:
--------------------------------------------------------------------------------
1 | export const defaultContent =
2 | 'There is a new tool in town to run Javascript in your browser.
It compiles your code using Esbuild (in the browser, with WASM !), downloads any dependencies from Unpkg , and runs the code in a sandbox environment. That makes it the perfect way to quickly test some JS behaviour, and try out new things!
console.log(\'test\');
Let’s play with dependencies!
const _ = require(\'lodash\');\nconst numbers = [1, 2, 3, 4, 5];\n\n// Using lodash, which we dynamically load from a CDN!\nconst doubledNumbers = _.map(numbers, (number) => number * 2);\nconsole.log(doubledNumbers);
That’s very simple, but how about this? What changes do you need to make to turn this into a real FizzBuzz exercise?
let i = 1;\nwhile (i < 10) {\n if (i % 3 === 0) {\n console.log("Fizz");\n } else if (i % 5 === 0) {\n console.log("Buzz");\n } else {\n console.log(i);\n }\n i++;\n}
Now it’s your turn! Go here to start your own notebook.
Author’s notes:
Infinite loops are very easy to achieve. Remove the i++
line above, lots of fun 😨
We need more docs on how deps are loaded, and ways to output HTML and graphs
Some clean loading states would be nice!
';
3 |
--------------------------------------------------------------------------------
/jsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "paths": {
4 | "@/*": ["./*"]
5 | }
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/lib/api/notebooks.js:
--------------------------------------------------------------------------------
1 | export const saveNotebook = async (notebook) => {
2 | const result = await fetch(
3 | `https://schof.link/api/get-url?${new URLSearchParams({
4 | filename: "notebook.json",
5 | contentType: "application/json",
6 | editable: "true",
7 | id: notebook.id || undefined,
8 | unique: new Date().valueOf(),
9 | })}`
10 | );
11 | const { key, url } = await result.json();
12 |
13 | await fetch(url, {
14 | method: "PUT",
15 | body: JSON.stringify({
16 | ...notebook,
17 | id: key,
18 | createdAt: notebook.createdAt || new Date().toISOString(),
19 | updatedAt: new Date().toISOString(),
20 | }),
21 | headers: {
22 | "Content-Type": "application/json",
23 | "Content-Disposition": `inline; filename="notebook.json"`,
24 | },
25 | });
26 |
27 | return key;
28 | };
29 |
--------------------------------------------------------------------------------
/lib/bundler/index.ts:
--------------------------------------------------------------------------------
1 | "use client";
2 |
3 | import * as esbuild from "esbuild-wasm";
4 |
5 | import { unpkgPathPlugin } from "./plugins/unpkg-path-plugin";
6 | import { fetchPlugin } from "./plugins/fetch-plugin";
7 |
8 | interface BundledResult {
9 | output: string;
10 | error: string;
11 | }
12 |
13 | let loaded = false;
14 | let isLoading = false;
15 |
16 | export const loadEsbuild = async () => {
17 | if (loaded) {
18 | return;
19 | }
20 |
21 | if (isLoading) {
22 | return new Promise((resolve) => {
23 | const interval = setInterval(() => {
24 | if (!isLoading) {
25 | clearInterval(interval);
26 | resolve("");
27 | }
28 | }, 100);
29 | });
30 | }
31 |
32 | isLoading = true;
33 |
34 | try {
35 | await esbuild.initialize({
36 | worker: true,
37 | wasmURL: "https://unpkg.com/esbuild-wasm@0.19.2/esbuild.wasm",
38 | });
39 | loaded = true;
40 | } catch (error) {
41 | console.log(error);
42 | }
43 | isLoading = false;
44 | };
45 |
46 | const esBundle = async (
47 | input: string,
48 | hasTypescript: boolean
49 | ): Promise => {
50 | await loadEsbuild();
51 | try {
52 | const result = await esbuild.build({
53 | entryPoints: ["input.ts"],
54 | bundle: true,
55 | minify: false,
56 | format: "esm",
57 | platform: "node",
58 | write: false,
59 | plugins: [unpkgPathPlugin(), fetchPlugin(input)],
60 | define: {
61 | global: "window",
62 | },
63 | });
64 | return {
65 | output: result.outputFiles[0].text,
66 | error: "",
67 | };
68 | } catch (error) {
69 | return {
70 | output: "",
71 | error: error.message,
72 | };
73 | }
74 | };
75 |
76 | export default esBundle;
77 |
--------------------------------------------------------------------------------
/lib/bundler/plugins/fetch-plugin.ts:
--------------------------------------------------------------------------------
1 | import * as esbuild from "esbuild-wasm";
2 | import axios from "axios";
3 |
4 | import localForage from "localforage";
5 |
6 | const fileCache = localForage.createInstance({
7 | name: "file-cache",
8 | });
9 |
10 | const fetchViaProxy = async (url: string) => {
11 | url = `/proxy?url=${encodeURIComponent(url)}`;
12 | return axios.get(url);
13 | };
14 |
15 | export const fetchPlugin = (input: string) => {
16 | return {
17 | name: "fetch-plugin",
18 | setup(build: esbuild.PluginBuild) {
19 | // handle root user input code
20 | build.onLoad({ filter: /^input\.ts$/ }, () => {
21 | return {
22 | loader: "tsx",
23 | contents: input,
24 | };
25 | });
26 |
27 | // if not cached, carry on to the reamining load functions
28 | build.onLoad({ filter: /.*/ }, async (args: esbuild.OnLoadArgs) => {
29 | const cachedResult = await fileCache.getItem(
30 | args.path
31 | );
32 | if (cachedResult) {
33 | return cachedResult;
34 | }
35 | });
36 |
37 | // handle css files
38 | build.onLoad({ filter: /\.css$/ }, async (args: esbuild.OnLoadArgs) => {
39 | const { data, request } = await fetchViaProxy(args.path);
40 | const contents = `
41 | const style = document.createElement('style');
42 | style.innerText = ${JSON.stringify(data)};
43 | document.head.appendChild(style);
44 | `;
45 |
46 | const result: esbuild.OnLoadResult = {
47 | loader: "jsx",
48 | contents,
49 | resolveDir: new URL("./", request.responseURL).pathname,
50 | };
51 | await fileCache.setItem(args.path, result);
52 | return result;
53 | });
54 |
55 | // handle js and jsx files
56 | build.onLoad({ filter: /.*/ }, async (args: esbuild.OnLoadArgs) => {
57 | const {
58 | data: contents,
59 | headers,
60 | request,
61 | } = await fetchViaProxy(args.path);
62 | const contentType =
63 | headers["content-type"] || "application/octet-stream";
64 | let loader: esbuild.Loader = "js";
65 | if (args.path.includes(".ts")) loader = "ts";
66 | if (args.path.includes(".tsx")) loader = "tsx";
67 | if (args.path.includes(".jsx")) loader = "jsx";
68 | if (contentType.includes("text/")) loader = "text";
69 | const result: esbuild.OnLoadResult = {
70 | loader,
71 | contents,
72 | resolveDir: new URL("./", request.responseURL).pathname,
73 | };
74 | await fileCache.setItem(args.path, result);
75 | return result;
76 | });
77 | },
78 | };
79 | };
80 |
--------------------------------------------------------------------------------
/lib/bundler/plugins/unpkg-path-plugin.ts:
--------------------------------------------------------------------------------
1 | import * as esbuild from "esbuild-wasm";
2 |
3 | export const unpkgPathPlugin = () => {
4 | return {
5 | name: "unpkg-path-plugin",
6 | setup(build: esbuild.PluginBuild) {
7 | // handle root entry file of user input
8 | build.onResolve({ filter: /(^input\.ts$)/ }, () => {
9 | return { path: "input.ts", namespace: "app" };
10 | });
11 |
12 | // handle relative imports inside a module
13 | build.onResolve({ filter: /^\.+\// }, (args: esbuild.OnResolveArgs) => {
14 | return {
15 | path: new URL(args.path, "https://unpkg.com" + args.resolveDir + "/")
16 | .href,
17 | namespace: "app",
18 | };
19 | });
20 |
21 | // handle main file of a module
22 | build.onResolve({ filter: /.*/ }, async (args: esbuild.OnResolveArgs) => {
23 | const isUrl = args.path.startsWith('https://') || args.path.startsWith('http://');
24 | return {
25 | path: isUrl ? args.path : `https://unpkg.com/${args.path}`,
26 | namespace: "app",
27 | };
28 | });
29 | },
30 | };
31 | };
32 |
--------------------------------------------------------------------------------
/lib/hooks/debounce.js:
--------------------------------------------------------------------------------
1 | function debounce(func, timeout = 100) {
2 | let timer;
3 | return (...args) => {
4 | clearTimeout(timer);
5 | timer = setTimeout(() => {
6 | func.apply(this, args);
7 | }, timeout);
8 | };
9 | }
10 |
11 | export default debounce;
12 |
--------------------------------------------------------------------------------
/lib/hooks/useLocalStorage.ts:
--------------------------------------------------------------------------------
1 | import { useEffect, useState } from "react";
2 |
3 | const useLocalStorage = (
4 | key: string,
5 | initialValue: T
6 | // eslint-disable-next-line no-unused-vars
7 | ): [T, (value: T) => void] => {
8 | const [storedValue, setStoredValue] = useState(initialValue);
9 |
10 | useEffect(() => {
11 | // Retrieve from localStorage
12 | const item = window.localStorage.getItem(key);
13 | if (item) {
14 | setStoredValue(JSON.parse(item));
15 | }
16 | }, [key]);
17 |
18 | const setValue = (value: T) => {
19 | // Save state
20 | setStoredValue(value);
21 | // Save to localStorage
22 | window.localStorage.setItem(key, JSON.stringify(value));
23 | };
24 | return [storedValue, setValue];
25 | };
26 |
27 | export default useLocalStorage;
28 |
--------------------------------------------------------------------------------
/next.config.js:
--------------------------------------------------------------------------------
1 | /** @type {import('next').NextConfig} */
2 | const nextConfig = {}
3 |
4 | module.exports = nextConfig
5 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "notebook",
3 | "version": "0.1.0",
4 | "private": true,
5 | "scripts": {
6 | "dev": "next dev",
7 | "build": "next build",
8 | "start": "next start",
9 | "lint": "next lint"
10 | },
11 | "dependencies": {
12 | "@tiptap/core": "^2.1.7",
13 | "@tiptap/extension-code-block-lowlight": "^2.1.7",
14 | "@tiptap/extension-document": "^2.1.7",
15 | "@tiptap/extension-highlight": "^2.1.7",
16 | "@tiptap/extension-link": "^2.1.7",
17 | "@tiptap/extension-placeholder": "^2.1.7",
18 | "@tiptap/extension-typography": "^2.1.7",
19 | "@tiptap/pm": "^2.1.7",
20 | "@tiptap/react": "^2.1.7",
21 | "@tiptap/starter-kit": "^2.1.7",
22 | "@tiptap/suggestion": "^2.1.7",
23 | "autoprefixer": "10.4.15",
24 | "axios": "^1.5.0",
25 | "crc-32": "^1.2.2",
26 | "esbuild-wasm": "0.19.2",
27 | "highlight.js": "^11.8.0",
28 | "localforage": "^1.10.0",
29 | "lowlight": "^2.9.0",
30 | "lucide-react": "^0.269.0",
31 | "next": "13.4.19",
32 | "postcss": "8.4.28",
33 | "react": "18.2.0",
34 | "react-dom": "18.2.0",
35 | "sass": "^1.66.1",
36 | "sonner": "^0.7.0",
37 | "tailwindcss": "3.3.3"
38 | },
39 | "devDependencies": {
40 | "@tailwindcss/forms": "^0.5.5",
41 | "@tailwindcss/typography": "^0.5.9"
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/postcss.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | plugins: {
3 | tailwindcss: {},
4 | autoprefixer: {},
5 | },
6 | }
7 |
--------------------------------------------------------------------------------
/tailwind.config.js:
--------------------------------------------------------------------------------
1 | /** @type {import('tailwindcss').Config} */
2 | module.exports = {
3 | content: [
4 | "./pages/**/*.{js,ts,jsx,tsx,mdx}",
5 | "./components/**/*.{js,ts,jsx,tsx,mdx}",
6 | "./app/**/*.{js,ts,jsx,tsx,mdx}",
7 | ],
8 | theme: {
9 | extend: {
10 | backgroundImage: {
11 | "gradient-radial": "radial-gradient(var(--tw-gradient-stops))",
12 | "gradient-conic":
13 | "conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))",
14 | },
15 | },
16 | },
17 | plugins: [require("@tailwindcss/typography"), require("@tailwindcss/forms")],
18 | };
19 |
--------------------------------------------------------------------------------
/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | "@alloc/quick-lru@^5.2.0":
6 | version "5.2.0"
7 | resolved "https://registry.yarnpkg.com/@alloc/quick-lru/-/quick-lru-5.2.0.tgz#7bf68b20c0a350f936915fcae06f58e32007ce30"
8 | integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==
9 |
10 | "@jridgewell/gen-mapping@^0.3.2":
11 | version "0.3.3"
12 | resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098"
13 | integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==
14 | dependencies:
15 | "@jridgewell/set-array" "^1.0.1"
16 | "@jridgewell/sourcemap-codec" "^1.4.10"
17 | "@jridgewell/trace-mapping" "^0.3.9"
18 |
19 | "@jridgewell/resolve-uri@^3.1.0":
20 | version "3.1.1"
21 | resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721"
22 | integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==
23 |
24 | "@jridgewell/set-array@^1.0.1":
25 | version "1.1.2"
26 | resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72"
27 | integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==
28 |
29 | "@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14":
30 | version "1.4.15"
31 | resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32"
32 | integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==
33 |
34 | "@jridgewell/trace-mapping@^0.3.9":
35 | version "0.3.19"
36 | resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz#f8a3249862f91be48d3127c3cfe992f79b4b8811"
37 | integrity sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==
38 | dependencies:
39 | "@jridgewell/resolve-uri" "^3.1.0"
40 | "@jridgewell/sourcemap-codec" "^1.4.14"
41 |
42 | "@next/env@13.4.19":
43 | version "13.4.19"
44 | resolved "https://registry.yarnpkg.com/@next/env/-/env-13.4.19.tgz#46905b4e6f62da825b040343cbc233144e9578d3"
45 | integrity sha512-FsAT5x0jF2kkhNkKkukhsyYOrRqtSxrEhfliniIq0bwWbuXLgyt3Gv0Ml+b91XwjwArmuP7NxCiGd++GGKdNMQ==
46 |
47 | "@next/swc-darwin-arm64@13.4.19":
48 | version "13.4.19"
49 | resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.4.19.tgz#77ad462b5ced4efdc26cb5a0053968d2c7dac1b6"
50 | integrity sha512-vv1qrjXeGbuF2mOkhkdxMDtv9np7W4mcBtaDnHU+yJG+bBwa6rYsYSCI/9Xm5+TuF5SbZbrWO6G1NfTh1TMjvQ==
51 |
52 | "@next/swc-darwin-x64@13.4.19":
53 | version "13.4.19"
54 | resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-13.4.19.tgz#aebe38713a4ce536ee5f2a291673e14b715e633a"
55 | integrity sha512-jyzO6wwYhx6F+7gD8ddZfuqO4TtpJdw3wyOduR4fxTUCm3aLw7YmHGYNjS0xRSYGAkLpBkH1E0RcelyId6lNsw==
56 |
57 | "@next/swc-linux-arm64-gnu@13.4.19":
58 | version "13.4.19"
59 | resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.4.19.tgz#ec54db65b587939c7b94f9a84800f003a380f5a6"
60 | integrity sha512-vdlnIlaAEh6H+G6HrKZB9c2zJKnpPVKnA6LBwjwT2BTjxI7e0Hx30+FoWCgi50e+YO49p6oPOtesP9mXDRiiUg==
61 |
62 | "@next/swc-linux-arm64-musl@13.4.19":
63 | version "13.4.19"
64 | resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.4.19.tgz#1f5e2c1ea6941e7d530d9f185d5d64be04279d86"
65 | integrity sha512-aU0HkH2XPgxqrbNRBFb3si9Ahu/CpaR5RPmN2s9GiM9qJCiBBlZtRTiEca+DC+xRPyCThTtWYgxjWHgU7ZkyvA==
66 |
67 | "@next/swc-linux-x64-gnu@13.4.19":
68 | version "13.4.19"
69 | resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.4.19.tgz#96b0882492a2f7ffcce747846d3680730f69f4d1"
70 | integrity sha512-htwOEagMa/CXNykFFeAHHvMJeqZfNQEoQvHfsA4wgg5QqGNqD5soeCer4oGlCol6NGUxknrQO6VEustcv+Md+g==
71 |
72 | "@next/swc-linux-x64-musl@13.4.19":
73 | version "13.4.19"
74 | resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.4.19.tgz#f276b618afa321d2f7b17c81fc83f429fb0fd9d8"
75 | integrity sha512-4Gj4vvtbK1JH8ApWTT214b3GwUh9EKKQjY41hH/t+u55Knxi/0wesMzwQRhppK6Ddalhu0TEttbiJ+wRcoEj5Q==
76 |
77 | "@next/swc-win32-arm64-msvc@13.4.19":
78 | version "13.4.19"
79 | resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.4.19.tgz#1599ae0d401da5ffca0947823dac577697cce577"
80 | integrity sha512-bUfDevQK4NsIAHXs3/JNgnvEY+LRyneDN788W2NYiRIIzmILjba7LaQTfihuFawZDhRtkYCv3JDC3B4TwnmRJw==
81 |
82 | "@next/swc-win32-ia32-msvc@13.4.19":
83 | version "13.4.19"
84 | resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.4.19.tgz#55cdd7da90818f03e4da16d976f0cb22045d16fd"
85 | integrity sha512-Y5kikILFAr81LYIFaw6j/NrOtmiM4Sf3GtOc0pn50ez2GCkr+oejYuKGcwAwq3jiTKuzF6OF4iT2INPoxRycEA==
86 |
87 | "@next/swc-win32-x64-msvc@13.4.19":
88 | version "13.4.19"
89 | resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.4.19.tgz#648f79c4e09279212ac90d871646ae12d80cdfce"
90 | integrity sha512-YzA78jBDXMYiINdPdJJwGgPNT3YqBNNGhsthsDoWHL9p24tEJn9ViQf/ZqTbwSpX/RrkPupLfuuTH2sf73JBAw==
91 |
92 | "@nodelib/fs.scandir@2.1.5":
93 | version "2.1.5"
94 | resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
95 | integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==
96 | dependencies:
97 | "@nodelib/fs.stat" "2.0.5"
98 | run-parallel "^1.1.9"
99 |
100 | "@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2":
101 | version "2.0.5"
102 | resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b"
103 | integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
104 |
105 | "@nodelib/fs.walk@^1.2.3":
106 | version "1.2.8"
107 | resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a"
108 | integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
109 | dependencies:
110 | "@nodelib/fs.scandir" "2.1.5"
111 | fastq "^1.6.0"
112 |
113 | "@popperjs/core@^2.9.0":
114 | version "2.11.8"
115 | resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.8.tgz#6b79032e760a0899cd4204710beede972a3a185f"
116 | integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==
117 |
118 | "@remirror/core-constants@^2.0.2":
119 | version "2.0.2"
120 | resolved "https://registry.yarnpkg.com/@remirror/core-constants/-/core-constants-2.0.2.tgz#f05eccdc69e3a65e7d524b52548f567904a11a1a"
121 | integrity sha512-dyHY+sMF0ihPus3O27ODd4+agdHMEmuRdyiZJ2CCWjPV5UFmn17ZbElvk6WOGVE4rdCJKZQCrPV2BcikOMLUGQ==
122 |
123 | "@remirror/core-helpers@^3.0.0":
124 | version "3.0.0"
125 | resolved "https://registry.yarnpkg.com/@remirror/core-helpers/-/core-helpers-3.0.0.tgz#3a35c2346bc23ebc3cee585b7840b5567755c5f1"
126 | integrity sha512-tusEgQJIqg4qKj6HSBUFcyRnWnziw3neh4T9wOmsPGHFC3w9kl5KSrDb9UAgE8uX6y32FnS7vJ955mWOl3n50A==
127 | dependencies:
128 | "@remirror/core-constants" "^2.0.2"
129 | "@remirror/types" "^1.0.1"
130 | "@types/object.omit" "^3.0.0"
131 | "@types/object.pick" "^1.3.2"
132 | "@types/throttle-debounce" "^2.1.0"
133 | case-anything "^2.1.13"
134 | dash-get "^1.0.2"
135 | deepmerge "^4.3.1"
136 | fast-deep-equal "^3.1.3"
137 | make-error "^1.3.6"
138 | object.omit "^3.0.0"
139 | object.pick "^1.3.0"
140 | throttle-debounce "^3.0.1"
141 |
142 | "@remirror/types@^1.0.1":
143 | version "1.0.1"
144 | resolved "https://registry.yarnpkg.com/@remirror/types/-/types-1.0.1.tgz#768502497a0fbbc23338a1586b893f729310cf70"
145 | integrity sha512-VlZQxwGnt1jtQ18D6JqdIF+uFZo525WEqrfp9BOc3COPpK4+AWCgdnAWL+ho6imWcoINlGjR/+3b6y5C1vBVEA==
146 | dependencies:
147 | type-fest "^2.19.0"
148 |
149 | "@swc/helpers@0.5.1":
150 | version "0.5.1"
151 | resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.1.tgz#e9031491aa3f26bfcc974a67f48bd456c8a5357a"
152 | integrity sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg==
153 | dependencies:
154 | tslib "^2.4.0"
155 |
156 | "@tailwindcss/forms@^0.5.5":
157 | version "0.5.5"
158 | resolved "https://registry.yarnpkg.com/@tailwindcss/forms/-/forms-0.5.5.tgz#2965ee74159a16b5ef012d5eddae20c9b48aa49c"
159 | integrity sha512-03sXK1DcPt44GZ0Yg6AcAfQln89IKdbE79g2OwoKqBm1ukaadLO2AH3EiB3mXHeQnxa3tzm7eE0x7INXSjbuug==
160 | dependencies:
161 | mini-svg-data-uri "^1.2.3"
162 |
163 | "@tailwindcss/typography@^0.5.9":
164 | version "0.5.9"
165 | resolved "https://registry.yarnpkg.com/@tailwindcss/typography/-/typography-0.5.9.tgz#027e4b0674929daaf7c921c900beee80dbad93e8"
166 | integrity sha512-t8Sg3DyynFysV9f4JDOVISGsjazNb48AeIYQwcL+Bsq5uf4RYL75C1giZ43KISjeDGBaTN3Kxh7Xj/vRSMJUUg==
167 | dependencies:
168 | lodash.castarray "^4.4.0"
169 | lodash.isplainobject "^4.0.6"
170 | lodash.merge "^4.6.2"
171 | postcss-selector-parser "6.0.10"
172 |
173 | "@tiptap/core@^2.1.7":
174 | version "2.1.7"
175 | resolved "https://registry.yarnpkg.com/@tiptap/core/-/core-2.1.7.tgz#9823a3712d176849cfd281dd8229ad0719c9eb9e"
176 | integrity sha512-1pqTwlTnwTKQSNQmmTWhs2lwdvd+hFFNFZnrRAfvZhQZA6qPmPmKMNTcYmK38Tn4axKth6mhBamzTJgMZFI7ng==
177 |
178 | "@tiptap/extension-blockquote@^2.1.7":
179 | version "2.1.7"
180 | resolved "https://registry.yarnpkg.com/@tiptap/extension-blockquote/-/extension-blockquote-2.1.7.tgz#fe25ec1dedd1f7e3eb1a851a6ac8738ca4691a17"
181 | integrity sha512-oAsUU1c0DDZKHwK7/uCtYpnTUQt0o3w+SsJSv4S2vlSHidiFl9gCQGozUQ/Alzc7GO1Y95rOscL28DJXgXESQg==
182 |
183 | "@tiptap/extension-bold@^2.1.7":
184 | version "2.1.7"
185 | resolved "https://registry.yarnpkg.com/@tiptap/extension-bold/-/extension-bold-2.1.7.tgz#c5d89284235d75c2e65745b50a5c0681be1cbab6"
186 | integrity sha512-GZV2D91WENkWd1W29vM4kyGWObcxOKQrY8MuCvTdxni1kobEc/LPZzQ1XiQmiNTvXTMcBz5ckLpezdjASV1dNg==
187 |
188 | "@tiptap/extension-bubble-menu@^2.1.7":
189 | version "2.1.7"
190 | resolved "https://registry.yarnpkg.com/@tiptap/extension-bubble-menu/-/extension-bubble-menu-2.1.7.tgz#62616c9ee456c8413ad6c120757978266052a1a0"
191 | integrity sha512-VcwwUgiG17TEDZda1JBbyKCHLIBTu8B2OAzYrnd4ZqeRs5KTVAB279o/TVjsLVgEfC+c7IWwhhaPPMoXn/lJ3g==
192 | dependencies:
193 | tippy.js "^6.3.7"
194 |
195 | "@tiptap/extension-bullet-list@^2.1.7":
196 | version "2.1.7"
197 | resolved "https://registry.yarnpkg.com/@tiptap/extension-bullet-list/-/extension-bullet-list-2.1.7.tgz#3a7356824a931122314a6bd73b5f9d8a8a313791"
198 | integrity sha512-BReix1wkGNH12DSWGnWPKNu4do92Avh98aLkRS1o1V1Y49/+YGMYtfBXB9obq40o0WqKvk4MoM+rhKbfEc44Gg==
199 |
200 | "@tiptap/extension-code-block-lowlight@^2.1.7":
201 | version "2.1.7"
202 | resolved "https://registry.yarnpkg.com/@tiptap/extension-code-block-lowlight/-/extension-code-block-lowlight-2.1.7.tgz#713dad4324c9ce25c66768fc4cfdb514ecea21c7"
203 | integrity sha512-GOmpe3bwjlhMC79vFICInkJwaHx5dTiKQCTzdjZ5qRsvKgk/0YTrmWaN+w+JW5BBUaChj8IrgAPy7VZ20l7GKQ==
204 |
205 | "@tiptap/extension-code-block@^2.1.7":
206 | version "2.1.7"
207 | resolved "https://registry.yarnpkg.com/@tiptap/extension-code-block/-/extension-code-block-2.1.7.tgz#c087c22c305f3c87645228ad32f32595dde7f2a2"
208 | integrity sha512-uiasfWCIQuk34vGoIENqAJOHf9m3hAkcELnb9T6+uNxA3O7PUZQqBVN/27oEipj7j15pqua50D6C1jql9kFe0g==
209 |
210 | "@tiptap/extension-code@^2.1.7":
211 | version "2.1.7"
212 | resolved "https://registry.yarnpkg.com/@tiptap/extension-code/-/extension-code-2.1.7.tgz#bad3b1aedc23123a2094f8810801edb0c13acbff"
213 | integrity sha512-g0IA6Q6DFZE0AEOMXAV1mktl/XzIO3s1h/haPIKZ8GNes522qhBr9FYc5OUPQCCbgYjL7soTGzxA/W5Jk3f2AQ==
214 |
215 | "@tiptap/extension-document@^2.1.7":
216 | version "2.1.7"
217 | resolved "https://registry.yarnpkg.com/@tiptap/extension-document/-/extension-document-2.1.7.tgz#5e1d56e899fdca8ebfad1b7cb358d5ace664b851"
218 | integrity sha512-tZyoPPmvzti7PEnyulXomEtINd/Oi2S84uOt6gw7DTCnDq5bF5sn1IfN8Icqp9t4jDwyLXy2TL0Zg/sR0a2Ibg==
219 |
220 | "@tiptap/extension-dropcursor@^2.1.7":
221 | version "2.1.7"
222 | resolved "https://registry.yarnpkg.com/@tiptap/extension-dropcursor/-/extension-dropcursor-2.1.7.tgz#a3f79b7453579f36f326852b16e421601e881a28"
223 | integrity sha512-hNk2BuLnNSXlGOQphlzdpFKCKo7uHUFjWuBfzF1S9FMAQgcN7eTia+cCClmXABYfVLW4fT14PC1KiuGjxi9MuA==
224 |
225 | "@tiptap/extension-floating-menu@^2.1.7":
226 | version "2.1.7"
227 | resolved "https://registry.yarnpkg.com/@tiptap/extension-floating-menu/-/extension-floating-menu-2.1.7.tgz#fe2def740b3136d38101634ae60d2fec5468c57e"
228 | integrity sha512-K0bO7JKHAvgLM5MkhNgoYcD6SB0Z2tNIFhZHs5SCTuhg7dwduMSM3pC6QBrJGUk99DGsKuMPYQn3c2oG7MLbyQ==
229 | dependencies:
230 | tippy.js "^6.3.7"
231 |
232 | "@tiptap/extension-gapcursor@^2.1.7":
233 | version "2.1.7"
234 | resolved "https://registry.yarnpkg.com/@tiptap/extension-gapcursor/-/extension-gapcursor-2.1.7.tgz#5c0303ba37b4c066f3a3c5835fd0b298f0d3e919"
235 | integrity sha512-7eoInzzk1sssoD3RMkwFC86U15Ja4ANve+8wIC+xhN4R3Oe3PY3lFbp1GQxCmaJj8b3rtjNKIQZ2zO0PH58afA==
236 |
237 | "@tiptap/extension-hard-break@^2.1.7":
238 | version "2.1.7"
239 | resolved "https://registry.yarnpkg.com/@tiptap/extension-hard-break/-/extension-hard-break-2.1.7.tgz#1cd783adfe2788d41614f8851b8d7a52ec027cce"
240 | integrity sha512-6gFXXlCGAdXjy27BW29q4yfCQPAEFd18k7zRTnbd4aE/zIWUtLqdiTfI3kotUMab9Tt9/z1BRmCbEUxRsf1Nww==
241 |
242 | "@tiptap/extension-heading@^2.1.7":
243 | version "2.1.7"
244 | resolved "https://registry.yarnpkg.com/@tiptap/extension-heading/-/extension-heading-2.1.7.tgz#26d16227eab95b1f381e977f7aa1685f493c6fb5"
245 | integrity sha512-jMeTqtq3kbMFtMvUb3SeIt4FFM3W+b6TAw5H4Qd6z3gYsAU3GahRK67MtbJfPmznUkZfimrqW9VCaBezScfrsQ==
246 |
247 | "@tiptap/extension-highlight@^2.1.7":
248 | version "2.1.7"
249 | resolved "https://registry.yarnpkg.com/@tiptap/extension-highlight/-/extension-highlight-2.1.7.tgz#0f9434eedfdcb95a22ca5b6f601d13f4343a7e5c"
250 | integrity sha512-3EXrnf1BQSdOe/iqzcTIr5Tf0NOhPQ+y1B9nMi/40v3MD8WzRBLaqj0lvpwO7xMAdgxm6IiL/XFYU41n9yFl/Q==
251 |
252 | "@tiptap/extension-history@^2.1.7":
253 | version "2.1.7"
254 | resolved "https://registry.yarnpkg.com/@tiptap/extension-history/-/extension-history-2.1.7.tgz#baa566875ef1278c5dd8821970362d85348b266c"
255 | integrity sha512-8SIEKSImrIkqJThym1bPD13sC4/76UrG+piQ30xKQU4B7zUFCbutvrwYuQHSRvaEt8BPdTv2LWIK+wBkIgbWVA==
256 |
257 | "@tiptap/extension-horizontal-rule@^2.1.7":
258 | version "2.1.7"
259 | resolved "https://registry.yarnpkg.com/@tiptap/extension-horizontal-rule/-/extension-horizontal-rule-2.1.7.tgz#7c21bc4917e4ced9382e81626e0f0068b224bfbb"
260 | integrity sha512-hJupsDxDVmjmKI/Ewl/gtiyUx52Y3wRUhT8dCXNOA5eldmPXN23E2Fa2BC8XB47dyc5pubyNcLuqaLeaZ5hedw==
261 |
262 | "@tiptap/extension-italic@^2.1.7":
263 | version "2.1.7"
264 | resolved "https://registry.yarnpkg.com/@tiptap/extension-italic/-/extension-italic-2.1.7.tgz#d077683597d4282ae272c48b313d768d71985b67"
265 | integrity sha512-7e37f+OFqisdY19nWIthbSNHMJy4+4dec06rUICPrkiuFaADj5HjUQr0dyWpL/LkZh92Wf/rWgp4V/lEwon3jA==
266 |
267 | "@tiptap/extension-link@^2.1.7":
268 | version "2.1.7"
269 | resolved "https://registry.yarnpkg.com/@tiptap/extension-link/-/extension-link-2.1.7.tgz#2705c212d105ccf411d505e334ece4a723971ee4"
270 | integrity sha512-NDfoMCkThng1B530pMg5y69+eWoghZXK2uCntrJH7Rs8jNeGMyt9wGIOd7N8ZYz0oJ2ZYKzZjS0RANdBDS17DA==
271 | dependencies:
272 | linkifyjs "^4.1.0"
273 |
274 | "@tiptap/extension-list-item@^2.1.7":
275 | version "2.1.7"
276 | resolved "https://registry.yarnpkg.com/@tiptap/extension-list-item/-/extension-list-item-2.1.7.tgz#dc24045e445d0f91baec9b113f711dc90c6682ac"
277 | integrity sha512-hd/E4qQopBXWa6kdFY19qFVgqj4fzdPgAnzdXJ2XW7bC6O2CusmHphRRZ5FBsuspYTN/6/fv0i0jK9rSGlsEyA==
278 |
279 | "@tiptap/extension-ordered-list@^2.1.7":
280 | version "2.1.7"
281 | resolved "https://registry.yarnpkg.com/@tiptap/extension-ordered-list/-/extension-ordered-list-2.1.7.tgz#72d9ddc432ecf0fd19c8acd3c6b44f5358d8e0d0"
282 | integrity sha512-3XIXqbZmYkNzF+8PQ2jcCOCj0lpC3y9HGM/+joPIunhiUiktrIgpbUDv2E1Gq5lJHYqthIeujniI2dB85tkwJQ==
283 |
284 | "@tiptap/extension-paragraph@^2.1.7":
285 | version "2.1.7"
286 | resolved "https://registry.yarnpkg.com/@tiptap/extension-paragraph/-/extension-paragraph-2.1.7.tgz#76408706f0037a510a384b86780bd50c6e8ffeea"
287 | integrity sha512-cLqX27hNrXrwZCKrIW8OC3rW2+MT8hhS37+cdqOxZo5hUqQ9EF/puwS0w8uUZ7B3awX9Jm1QZDMjjERLkcmobw==
288 |
289 | "@tiptap/extension-placeholder@^2.1.7":
290 | version "2.1.7"
291 | resolved "https://registry.yarnpkg.com/@tiptap/extension-placeholder/-/extension-placeholder-2.1.7.tgz#8477cf5116c89f0f75e8e2e3b8528e146a7f0f24"
292 | integrity sha512-IiBoItYYNS7hb/zmPitw3w6Cylmp9qX+zW+QKe3lDkCNPeKxyQr86AnVLcQYOuXg62cLV9dp+4azZzHoz9SOcg==
293 |
294 | "@tiptap/extension-strike@^2.1.7":
295 | version "2.1.7"
296 | resolved "https://registry.yarnpkg.com/@tiptap/extension-strike/-/extension-strike-2.1.7.tgz#b7b7f49254f1de22416b1415ca88a2a20edd0627"
297 | integrity sha512-ONLXYnuZGM2EoGcxkyvJSDMBeAp7K6l83UXkK9TSj+VpEEDdeV7m8mJs8/vACJjJxD5HMN61+EPgU7VTEukQCA==
298 |
299 | "@tiptap/extension-text@^2.1.7":
300 | version "2.1.7"
301 | resolved "https://registry.yarnpkg.com/@tiptap/extension-text/-/extension-text-2.1.7.tgz#071053ab0a8804a3bce36d1488a603b7446dff4e"
302 | integrity sha512-3xaMMMNydLgoS+o+yOvaZF04ui9spJwJZl8VyYgcJKVGGLGRlWHrireXN5/OqXG2jLb/jWqXVx5idppQjX+PMA==
303 |
304 | "@tiptap/extension-typography@^2.1.7":
305 | version "2.1.7"
306 | resolved "https://registry.yarnpkg.com/@tiptap/extension-typography/-/extension-typography-2.1.7.tgz#fbfe0202fadf6413e1383d6c5fd274a70b3907b5"
307 | integrity sha512-/K07CeIxwJ2t0amjIrxpQkfPJqTlRoA8YIVd6O1iqriINZVS0EK2IJAaE/PNVQNnUYhyU+0Z2/Xie3SlCP7PVQ==
308 |
309 | "@tiptap/pm@^2.1.7":
310 | version "2.1.7"
311 | resolved "https://registry.yarnpkg.com/@tiptap/pm/-/pm-2.1.7.tgz#91e1b87d4ddbddca3cfe46e3c052b0072e4e1d97"
312 | integrity sha512-RBVb/k9OjmClwdVl7fpekFgUsLAm1U+5I4w1qA2tj7L/hSPOuPzaEHwCqDYe0b2PR5dd8h0nylS9qXuXVlfwfQ==
313 | dependencies:
314 | prosemirror-changeset "^2.2.0"
315 | prosemirror-collab "^1.3.0"
316 | prosemirror-commands "^1.3.1"
317 | prosemirror-dropcursor "^1.5.0"
318 | prosemirror-gapcursor "^1.3.1"
319 | prosemirror-history "^1.3.0"
320 | prosemirror-inputrules "^1.2.0"
321 | prosemirror-keymap "^1.2.0"
322 | prosemirror-markdown "^1.10.1"
323 | prosemirror-menu "^1.2.1"
324 | prosemirror-model "^1.18.1"
325 | prosemirror-schema-basic "^1.2.0"
326 | prosemirror-schema-list "^1.2.2"
327 | prosemirror-state "^1.4.1"
328 | prosemirror-tables "^1.3.0"
329 | prosemirror-trailing-node "^2.0.2"
330 | prosemirror-transform "^1.7.0"
331 | prosemirror-view "^1.28.2"
332 |
333 | "@tiptap/react@^2.1.7":
334 | version "2.1.7"
335 | resolved "https://registry.yarnpkg.com/@tiptap/react/-/react-2.1.7.tgz#0c5a5407bcb398ff75234dd9c7a3f8878d943088"
336 | integrity sha512-jCs5z/rXZ7mEOTPcJ+r/OSTtLOGBahS7D3xDu3pRX4P0wtWHlprsdptxxlWjkBHLav01XXJ+OtGZTfhWBio1QQ==
337 | dependencies:
338 | "@tiptap/extension-bubble-menu" "^2.1.7"
339 | "@tiptap/extension-floating-menu" "^2.1.7"
340 |
341 | "@tiptap/starter-kit@^2.1.7":
342 | version "2.1.7"
343 | resolved "https://registry.yarnpkg.com/@tiptap/starter-kit/-/starter-kit-2.1.7.tgz#a33a7928b7051ac9cd89d1798745f9855b7b72d9"
344 | integrity sha512-z2cmJRSC7ImaTGWrHv+xws9y1wIG0OCPosBYpmpwlEfA3JG3axWFmVRJlWnsQV4eSMi3QY3vaPgBAnrR4IxRhQ==
345 | dependencies:
346 | "@tiptap/core" "^2.1.7"
347 | "@tiptap/extension-blockquote" "^2.1.7"
348 | "@tiptap/extension-bold" "^2.1.7"
349 | "@tiptap/extension-bullet-list" "^2.1.7"
350 | "@tiptap/extension-code" "^2.1.7"
351 | "@tiptap/extension-code-block" "^2.1.7"
352 | "@tiptap/extension-document" "^2.1.7"
353 | "@tiptap/extension-dropcursor" "^2.1.7"
354 | "@tiptap/extension-gapcursor" "^2.1.7"
355 | "@tiptap/extension-hard-break" "^2.1.7"
356 | "@tiptap/extension-heading" "^2.1.7"
357 | "@tiptap/extension-history" "^2.1.7"
358 | "@tiptap/extension-horizontal-rule" "^2.1.7"
359 | "@tiptap/extension-italic" "^2.1.7"
360 | "@tiptap/extension-list-item" "^2.1.7"
361 | "@tiptap/extension-ordered-list" "^2.1.7"
362 | "@tiptap/extension-paragraph" "^2.1.7"
363 | "@tiptap/extension-strike" "^2.1.7"
364 | "@tiptap/extension-text" "^2.1.7"
365 |
366 | "@tiptap/suggestion@^2.1.7":
367 | version "2.1.7"
368 | resolved "https://registry.yarnpkg.com/@tiptap/suggestion/-/suggestion-2.1.7.tgz#ac88deef2ade8d836ca9084c276cc9d64c6e604a"
369 | integrity sha512-FKlXFMWf9rCnNJQsUfeX6WpS2VUs2O98ENkyhfV8ehCB7X5+57mkkxJxl/88SMbjZL+FbWPBKLaiOvsXfIUoww==
370 |
371 | "@types/hast@^2.0.0":
372 | version "2.3.5"
373 | resolved "https://registry.yarnpkg.com/@types/hast/-/hast-2.3.5.tgz#08caac88b44d0fdd04dc17a19142355f43bd8a7a"
374 | integrity sha512-SvQi0L/lNpThgPoleH53cdjB3y9zpLlVjRbqB3rH8hx1jiRSBGAhyjV3H+URFjNVRqt2EdYNrbZE5IsGlNfpRg==
375 | dependencies:
376 | "@types/unist" "^2"
377 |
378 | "@types/object.omit@^3.0.0":
379 | version "3.0.0"
380 | resolved "https://registry.yarnpkg.com/@types/object.omit/-/object.omit-3.0.0.tgz#0d31e1208eac8fe2ad5c9499a1016a8273bbfafc"
381 | integrity sha512-I27IoPpH250TUzc9FzXd0P1BV/BMJuzqD3jOz98ehf9dQqGkxlq+hO1bIqZGWqCg5bVOy0g4AUVJtnxe0klDmw==
382 |
383 | "@types/object.pick@^1.3.2":
384 | version "1.3.2"
385 | resolved "https://registry.yarnpkg.com/@types/object.pick/-/object.pick-1.3.2.tgz#9eb28118240ad8f658b9c9c6caf35359fdb37150"
386 | integrity sha512-sn7L+qQ6RLPdXRoiaE7bZ/Ek+o4uICma/lBFPyJEKDTPTBP1W8u0c4baj3EiS4DiqLs+Hk+KUGvMVJtAw3ePJg==
387 |
388 | "@types/throttle-debounce@^2.1.0":
389 | version "2.1.0"
390 | resolved "https://registry.yarnpkg.com/@types/throttle-debounce/-/throttle-debounce-2.1.0.tgz#1c3df624bfc4b62f992d3012b84c56d41eab3776"
391 | integrity sha512-5eQEtSCoESnh2FsiLTxE121IiE60hnMqcb435fShf4bpLRjEu1Eoekht23y6zXS9Ts3l+Szu3TARnTsA0GkOkQ==
392 |
393 | "@types/unist@^2":
394 | version "2.0.7"
395 | resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.7.tgz#5b06ad6894b236a1d2bd6b2f07850ca5c59cf4d6"
396 | integrity sha512-cputDpIbFgLUaGQn6Vqg3/YsJwxUwHLO13v3i5ouxT4lat0khip9AEWxtERujXV9wxIB1EyF97BSJFt6vpdI8g==
397 |
398 | any-promise@^1.0.0:
399 | version "1.3.0"
400 | resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f"
401 | integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==
402 |
403 | anymatch@~3.1.2:
404 | version "3.1.3"
405 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e"
406 | integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==
407 | dependencies:
408 | normalize-path "^3.0.0"
409 | picomatch "^2.0.4"
410 |
411 | arg@^5.0.2:
412 | version "5.0.2"
413 | resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c"
414 | integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==
415 |
416 | argparse@^2.0.1:
417 | version "2.0.1"
418 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
419 | integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
420 |
421 | asynckit@^0.4.0:
422 | version "0.4.0"
423 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
424 | integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==
425 |
426 | autoprefixer@10.4.15:
427 | version "10.4.15"
428 | resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.15.tgz#a1230f4aeb3636b89120b34a1f513e2f6834d530"
429 | integrity sha512-KCuPB8ZCIqFdA4HwKXsvz7j6gvSDNhDP7WnUjBleRkKjPdvCmHFuQ77ocavI8FT6NdvlBnE2UFr2H4Mycn8Vew==
430 | dependencies:
431 | browserslist "^4.21.10"
432 | caniuse-lite "^1.0.30001520"
433 | fraction.js "^4.2.0"
434 | normalize-range "^0.1.2"
435 | picocolors "^1.0.0"
436 | postcss-value-parser "^4.2.0"
437 |
438 | axios@^1.5.0:
439 | version "1.5.0"
440 | resolved "https://registry.yarnpkg.com/axios/-/axios-1.5.0.tgz#f02e4af823e2e46a9768cfc74691fdd0517ea267"
441 | integrity sha512-D4DdjDo5CY50Qms0qGQTTw6Q44jl7zRwY7bthds06pUGfChBCTcQs+N743eFWGEd6pRTMd6A+I87aWyFV5wiZQ==
442 | dependencies:
443 | follow-redirects "^1.15.0"
444 | form-data "^4.0.0"
445 | proxy-from-env "^1.1.0"
446 |
447 | balanced-match@^1.0.0:
448 | version "1.0.2"
449 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
450 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
451 |
452 | binary-extensions@^2.0.0:
453 | version "2.2.0"
454 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d"
455 | integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
456 |
457 | brace-expansion@^1.1.7:
458 | version "1.1.11"
459 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
460 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
461 | dependencies:
462 | balanced-match "^1.0.0"
463 | concat-map "0.0.1"
464 |
465 | braces@^3.0.2, braces@~3.0.2:
466 | version "3.0.2"
467 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
468 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
469 | dependencies:
470 | fill-range "^7.0.1"
471 |
472 | browserslist@^4.21.10:
473 | version "4.21.10"
474 | resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.10.tgz#dbbac576628c13d3b2231332cb2ec5a46e015bb0"
475 | integrity sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==
476 | dependencies:
477 | caniuse-lite "^1.0.30001517"
478 | electron-to-chromium "^1.4.477"
479 | node-releases "^2.0.13"
480 | update-browserslist-db "^1.0.11"
481 |
482 | busboy@1.6.0:
483 | version "1.6.0"
484 | resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893"
485 | integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==
486 | dependencies:
487 | streamsearch "^1.1.0"
488 |
489 | camelcase-css@^2.0.1:
490 | version "2.0.1"
491 | resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5"
492 | integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==
493 |
494 | caniuse-lite@^1.0.30001406, caniuse-lite@^1.0.30001517, caniuse-lite@^1.0.30001520:
495 | version "1.0.30001524"
496 | resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001524.tgz#1e14bce4f43c41a7deaeb5ebfe86664fe8dadb80"
497 | integrity sha512-Jj917pJtYg9HSJBF95HVX3Cdr89JUyLT4IZ8SvM5aDRni95swKgYi3TgYLH5hnGfPE/U1dg6IfZ50UsIlLkwSA==
498 |
499 | case-anything@^2.1.13:
500 | version "2.1.13"
501 | resolved "https://registry.yarnpkg.com/case-anything/-/case-anything-2.1.13.tgz#0cdc16278cb29a7fcdeb072400da3f342ba329e9"
502 | integrity sha512-zlOQ80VrQ2Ue+ymH5OuM/DlDq64mEm+B9UTdHULv5osUMD6HalNTblf2b1u/m6QecjsnOkBpqVZ+XPwIVsy7Ng==
503 |
504 | "chokidar@>=3.0.0 <4.0.0", chokidar@^3.5.3:
505 | version "3.5.3"
506 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd"
507 | integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==
508 | dependencies:
509 | anymatch "~3.1.2"
510 | braces "~3.0.2"
511 | glob-parent "~5.1.2"
512 | is-binary-path "~2.1.0"
513 | is-glob "~4.0.1"
514 | normalize-path "~3.0.0"
515 | readdirp "~3.6.0"
516 | optionalDependencies:
517 | fsevents "~2.3.2"
518 |
519 | client-only@0.0.1:
520 | version "0.0.1"
521 | resolved "https://registry.yarnpkg.com/client-only/-/client-only-0.0.1.tgz#38bba5d403c41ab150bff64a95c85013cf73bca1"
522 | integrity sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==
523 |
524 | combined-stream@^1.0.8:
525 | version "1.0.8"
526 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
527 | integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
528 | dependencies:
529 | delayed-stream "~1.0.0"
530 |
531 | commander@^4.0.0:
532 | version "4.1.1"
533 | resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068"
534 | integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==
535 |
536 | concat-map@0.0.1:
537 | version "0.0.1"
538 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
539 | integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
540 |
541 | crc-32@^1.2.2:
542 | version "1.2.2"
543 | resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.2.tgz#3cad35a934b8bf71f25ca524b6da51fb7eace2ff"
544 | integrity sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==
545 |
546 | crelt@^1.0.0:
547 | version "1.0.6"
548 | resolved "https://registry.yarnpkg.com/crelt/-/crelt-1.0.6.tgz#7cc898ea74e190fb6ef9dae57f8f81cf7302df72"
549 | integrity sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==
550 |
551 | cssesc@^3.0.0:
552 | version "3.0.0"
553 | resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee"
554 | integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
555 |
556 | dash-get@^1.0.2:
557 | version "1.0.2"
558 | resolved "https://registry.yarnpkg.com/dash-get/-/dash-get-1.0.2.tgz#4c9e9ad5ef04c4bf9d3c9a451f6f7997298dcc7c"
559 | integrity sha512-4FbVrHDwfOASx7uQVxeiCTo7ggSdYZbqs8lH+WU6ViypPlDbe9y6IP5VVUDQBv9DcnyaiPT5XT0UWHgJ64zLeQ==
560 |
561 | deepmerge@^4.3.1:
562 | version "4.3.1"
563 | resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a"
564 | integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==
565 |
566 | delayed-stream@~1.0.0:
567 | version "1.0.0"
568 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
569 | integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==
570 |
571 | didyoumean@^1.2.2:
572 | version "1.2.2"
573 | resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037"
574 | integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==
575 |
576 | dlv@^1.1.3:
577 | version "1.1.3"
578 | resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79"
579 | integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==
580 |
581 | electron-to-chromium@^1.4.477:
582 | version "1.4.503"
583 | resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.503.tgz#7bd43927ea9b4198697672d28d8fbd0da016a7a1"
584 | integrity sha512-LF2IQit4B0VrUHFeQkWhZm97KuJSGF2WJqq1InpY+ECpFRkXd8yTIaTtJxsO0OKDmiBYwWqcrNaXOurn2T2wiA==
585 |
586 | entities@~3.0.1:
587 | version "3.0.1"
588 | resolved "https://registry.yarnpkg.com/entities/-/entities-3.0.1.tgz#2b887ca62585e96db3903482d336c1006c3001d4"
589 | integrity sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==
590 |
591 | esbuild-wasm@0.19.2:
592 | version "0.19.2"
593 | resolved "https://registry.yarnpkg.com/esbuild-wasm/-/esbuild-wasm-0.19.2.tgz#046c39a6ef28b937fd8f847edaf767f32ca02ffc"
594 | integrity sha512-ak2XIIJKby+Uo3Iqh8wtw4pn2uZcnfLgtcmBHIgkShpun5ZIJsFigWXp7uLt7gXk3QAOCMmv0TSsIxD5qdn+Vw==
595 |
596 | escalade@^3.1.1:
597 | version "3.1.1"
598 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
599 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==
600 |
601 | escape-string-regexp@^4.0.0:
602 | version "4.0.0"
603 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
604 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
605 |
606 | fast-deep-equal@^3.1.3:
607 | version "3.1.3"
608 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
609 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
610 |
611 | fast-glob@^3.2.12:
612 | version "3.3.1"
613 | resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4"
614 | integrity sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==
615 | dependencies:
616 | "@nodelib/fs.stat" "^2.0.2"
617 | "@nodelib/fs.walk" "^1.2.3"
618 | glob-parent "^5.1.2"
619 | merge2 "^1.3.0"
620 | micromatch "^4.0.4"
621 |
622 | fastq@^1.6.0:
623 | version "1.15.0"
624 | resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a"
625 | integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==
626 | dependencies:
627 | reusify "^1.0.4"
628 |
629 | fault@^2.0.0:
630 | version "2.0.1"
631 | resolved "https://registry.yarnpkg.com/fault/-/fault-2.0.1.tgz#d47ca9f37ca26e4bd38374a7c500b5a384755b6c"
632 | integrity sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==
633 | dependencies:
634 | format "^0.2.0"
635 |
636 | fill-range@^7.0.1:
637 | version "7.0.1"
638 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
639 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
640 | dependencies:
641 | to-regex-range "^5.0.1"
642 |
643 | follow-redirects@^1.15.0:
644 | version "1.15.2"
645 | resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13"
646 | integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==
647 |
648 | form-data@^4.0.0:
649 | version "4.0.0"
650 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452"
651 | integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==
652 | dependencies:
653 | asynckit "^0.4.0"
654 | combined-stream "^1.0.8"
655 | mime-types "^2.1.12"
656 |
657 | format@^0.2.0:
658 | version "0.2.2"
659 | resolved "https://registry.yarnpkg.com/format/-/format-0.2.2.tgz#d6170107e9efdc4ed30c9dc39016df942b5cb58b"
660 | integrity sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==
661 |
662 | fraction.js@^4.2.0:
663 | version "4.2.1"
664 | resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.2.1.tgz#14b4cc886575a5684f8d5fd5759c5db376bb7bb8"
665 | integrity sha512-/KxoyCnPM0GwYI4NN0Iag38Tqt+od3/mLuguepLgCAKPn0ZhC544nssAW0tG2/00zXEYl9W+7hwAIpLHo6Oc7Q==
666 |
667 | fs.realpath@^1.0.0:
668 | version "1.0.0"
669 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
670 | integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
671 |
672 | fsevents@~2.3.2:
673 | version "2.3.3"
674 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
675 | integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
676 |
677 | function-bind@^1.1.1:
678 | version "1.1.1"
679 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
680 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
681 |
682 | glob-parent@^5.1.2, glob-parent@~5.1.2:
683 | version "5.1.2"
684 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
685 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
686 | dependencies:
687 | is-glob "^4.0.1"
688 |
689 | glob-parent@^6.0.2:
690 | version "6.0.2"
691 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3"
692 | integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==
693 | dependencies:
694 | is-glob "^4.0.3"
695 |
696 | glob-to-regexp@^0.4.1:
697 | version "0.4.1"
698 | resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e"
699 | integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==
700 |
701 | glob@7.1.6:
702 | version "7.1.6"
703 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
704 | integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==
705 | dependencies:
706 | fs.realpath "^1.0.0"
707 | inflight "^1.0.4"
708 | inherits "2"
709 | minimatch "^3.0.4"
710 | once "^1.3.0"
711 | path-is-absolute "^1.0.0"
712 |
713 | graceful-fs@^4.1.2:
714 | version "4.2.11"
715 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3"
716 | integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==
717 |
718 | has@^1.0.3:
719 | version "1.0.3"
720 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
721 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
722 | dependencies:
723 | function-bind "^1.1.1"
724 |
725 | highlight.js@^11.8.0, highlight.js@~11.8.0:
726 | version "11.8.0"
727 | resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-11.8.0.tgz#966518ea83257bae2e7c9a48596231856555bb65"
728 | integrity sha512-MedQhoqVdr0U6SSnWPzfiadUcDHfN/Wzq25AkXiQv9oiOO/sG0S7XkvpFIqWBl9Yq1UYyYOOVORs5UW2XlPyzg==
729 |
730 | immediate@~3.0.5:
731 | version "3.0.6"
732 | resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b"
733 | integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==
734 |
735 | immutable@^4.0.0:
736 | version "4.3.4"
737 | resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.4.tgz#2e07b33837b4bb7662f288c244d1ced1ef65a78f"
738 | integrity sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==
739 |
740 | inflight@^1.0.4:
741 | version "1.0.6"
742 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
743 | integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==
744 | dependencies:
745 | once "^1.3.0"
746 | wrappy "1"
747 |
748 | inherits@2:
749 | version "2.0.4"
750 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
751 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
752 |
753 | is-binary-path@~2.1.0:
754 | version "2.1.0"
755 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
756 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
757 | dependencies:
758 | binary-extensions "^2.0.0"
759 |
760 | is-core-module@^2.13.0:
761 | version "2.13.0"
762 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.0.tgz#bb52aa6e2cbd49a30c2ba68c42bf3435ba6072db"
763 | integrity sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==
764 | dependencies:
765 | has "^1.0.3"
766 |
767 | is-extendable@^1.0.0:
768 | version "1.0.1"
769 | resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4"
770 | integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==
771 | dependencies:
772 | is-plain-object "^2.0.4"
773 |
774 | is-extglob@^2.1.1:
775 | version "2.1.1"
776 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
777 | integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
778 |
779 | is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1:
780 | version "4.0.3"
781 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
782 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
783 | dependencies:
784 | is-extglob "^2.1.1"
785 |
786 | is-number@^7.0.0:
787 | version "7.0.0"
788 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
789 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
790 |
791 | is-plain-object@^2.0.4:
792 | version "2.0.4"
793 | resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
794 | integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==
795 | dependencies:
796 | isobject "^3.0.1"
797 |
798 | isobject@^3.0.1:
799 | version "3.0.1"
800 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
801 | integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==
802 |
803 | jiti@^1.18.2:
804 | version "1.19.3"
805 | resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.19.3.tgz#ef554f76465b3c2b222dc077834a71f0d4a37569"
806 | integrity sha512-5eEbBDQT/jF1xg6l36P+mWGGoH9Spuy0PCdSr2dtWRDGC6ph/w9ZCL4lmESW8f8F7MwT3XKescfP0wnZWAKL9w==
807 |
808 | "js-tokens@^3.0.0 || ^4.0.0":
809 | version "4.0.0"
810 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
811 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
812 |
813 | lie@3.1.1:
814 | version "3.1.1"
815 | resolved "https://registry.yarnpkg.com/lie/-/lie-3.1.1.tgz#9a436b2cc7746ca59de7a41fa469b3efb76bd87e"
816 | integrity sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==
817 | dependencies:
818 | immediate "~3.0.5"
819 |
820 | lilconfig@^2.0.5, lilconfig@^2.1.0:
821 | version "2.1.0"
822 | resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52"
823 | integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==
824 |
825 | lines-and-columns@^1.1.6:
826 | version "1.2.4"
827 | resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632"
828 | integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==
829 |
830 | linkify-it@^4.0.1:
831 | version "4.0.1"
832 | resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-4.0.1.tgz#01f1d5e508190d06669982ba31a7d9f56a5751ec"
833 | integrity sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==
834 | dependencies:
835 | uc.micro "^1.0.1"
836 |
837 | linkifyjs@^4.1.0:
838 | version "4.1.1"
839 | resolved "https://registry.yarnpkg.com/linkifyjs/-/linkifyjs-4.1.1.tgz#73d427e3bbaaf4ca8e71c589ad4ffda11a9a5fde"
840 | integrity sha512-zFN/CTVmbcVef+WaDXT63dNzzkfRBKT1j464NJQkV7iSgJU0sLBus9W0HBwnXK13/hf168pbrx/V/bjEHOXNHA==
841 |
842 | localforage@^1.10.0:
843 | version "1.10.0"
844 | resolved "https://registry.yarnpkg.com/localforage/-/localforage-1.10.0.tgz#5c465dc5f62b2807c3a84c0c6a1b1b3212781dd4"
845 | integrity sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==
846 | dependencies:
847 | lie "3.1.1"
848 |
849 | lodash.castarray@^4.4.0:
850 | version "4.4.0"
851 | resolved "https://registry.yarnpkg.com/lodash.castarray/-/lodash.castarray-4.4.0.tgz#c02513515e309daddd4c24c60cfddcf5976d9115"
852 | integrity sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==
853 |
854 | lodash.isplainobject@^4.0.6:
855 | version "4.0.6"
856 | resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb"
857 | integrity sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==
858 |
859 | lodash.merge@^4.6.2:
860 | version "4.6.2"
861 | resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
862 | integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
863 |
864 | loose-envify@^1.1.0:
865 | version "1.4.0"
866 | resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
867 | integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
868 | dependencies:
869 | js-tokens "^3.0.0 || ^4.0.0"
870 |
871 | lowlight@^2.9.0:
872 | version "2.9.0"
873 | resolved "https://registry.yarnpkg.com/lowlight/-/lowlight-2.9.0.tgz#70da647a4319c7bfd8e97721a679b13ef5621496"
874 | integrity sha512-OpcaUTCLmHuVuBcyNckKfH5B0oA4JUavb/M/8n9iAvanJYNQkrVm4pvyX0SUaqkBG4dnWHKt7p50B3ngAG2Rfw==
875 | dependencies:
876 | "@types/hast" "^2.0.0"
877 | fault "^2.0.0"
878 | highlight.js "~11.8.0"
879 |
880 | lucide-react@^0.269.0:
881 | version "0.269.0"
882 | resolved "https://registry.yarnpkg.com/lucide-react/-/lucide-react-0.269.0.tgz#610a4c85dd60b0e1826842ec563eb9bc9b249be5"
883 | integrity sha512-+ViEb/2eJJt43/CtxpTfvqu/8gzK49cSUdeuqRuFYiZmX9AvwfumtETM4plhXHymfHb6/mVbHg9uIlc13y+uew==
884 |
885 | make-error@^1.3.6:
886 | version "1.3.6"
887 | resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2"
888 | integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==
889 |
890 | markdown-it@^13.0.1:
891 | version "13.0.1"
892 | resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-13.0.1.tgz#c6ecc431cacf1a5da531423fc6a42807814af430"
893 | integrity sha512-lTlxriVoy2criHP0JKRhO2VDG9c2ypWCsT237eDiLqi09rmbKoUetyGHq2uOIRoRS//kfoJckS0eUzzkDR+k2Q==
894 | dependencies:
895 | argparse "^2.0.1"
896 | entities "~3.0.1"
897 | linkify-it "^4.0.1"
898 | mdurl "^1.0.1"
899 | uc.micro "^1.0.5"
900 |
901 | mdurl@^1.0.1:
902 | version "1.0.1"
903 | resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e"
904 | integrity sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==
905 |
906 | merge2@^1.3.0:
907 | version "1.4.1"
908 | resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
909 | integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
910 |
911 | micromatch@^4.0.4, micromatch@^4.0.5:
912 | version "4.0.5"
913 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6"
914 | integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==
915 | dependencies:
916 | braces "^3.0.2"
917 | picomatch "^2.3.1"
918 |
919 | mime-db@1.52.0:
920 | version "1.52.0"
921 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70"
922 | integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
923 |
924 | mime-types@^2.1.12:
925 | version "2.1.35"
926 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a"
927 | integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
928 | dependencies:
929 | mime-db "1.52.0"
930 |
931 | mini-svg-data-uri@^1.2.3:
932 | version "1.4.4"
933 | resolved "https://registry.yarnpkg.com/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz#8ab0aabcdf8c29ad5693ca595af19dd2ead09939"
934 | integrity sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==
935 |
936 | minimatch@^3.0.4:
937 | version "3.1.2"
938 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
939 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
940 | dependencies:
941 | brace-expansion "^1.1.7"
942 |
943 | mz@^2.7.0:
944 | version "2.7.0"
945 | resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32"
946 | integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==
947 | dependencies:
948 | any-promise "^1.0.0"
949 | object-assign "^4.0.1"
950 | thenify-all "^1.0.0"
951 |
952 | nanoid@^3.3.4, nanoid@^3.3.6:
953 | version "3.3.6"
954 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c"
955 | integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==
956 |
957 | next@13.4.19:
958 | version "13.4.19"
959 | resolved "https://registry.yarnpkg.com/next/-/next-13.4.19.tgz#2326e02aeedee2c693d4f37b90e4f0ed6882b35f"
960 | integrity sha512-HuPSzzAbJ1T4BD8e0bs6B9C1kWQ6gv8ykZoRWs5AQoiIuqbGHHdQO7Ljuvg05Q0Z24E2ABozHe6FxDvI6HfyAw==
961 | dependencies:
962 | "@next/env" "13.4.19"
963 | "@swc/helpers" "0.5.1"
964 | busboy "1.6.0"
965 | caniuse-lite "^1.0.30001406"
966 | postcss "8.4.14"
967 | styled-jsx "5.1.1"
968 | watchpack "2.4.0"
969 | zod "3.21.4"
970 | optionalDependencies:
971 | "@next/swc-darwin-arm64" "13.4.19"
972 | "@next/swc-darwin-x64" "13.4.19"
973 | "@next/swc-linux-arm64-gnu" "13.4.19"
974 | "@next/swc-linux-arm64-musl" "13.4.19"
975 | "@next/swc-linux-x64-gnu" "13.4.19"
976 | "@next/swc-linux-x64-musl" "13.4.19"
977 | "@next/swc-win32-arm64-msvc" "13.4.19"
978 | "@next/swc-win32-ia32-msvc" "13.4.19"
979 | "@next/swc-win32-x64-msvc" "13.4.19"
980 |
981 | node-releases@^2.0.13:
982 | version "2.0.13"
983 | resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.13.tgz#d5ed1627c23e3461e819b02e57b75e4899b1c81d"
984 | integrity sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==
985 |
986 | normalize-path@^3.0.0, normalize-path@~3.0.0:
987 | version "3.0.0"
988 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
989 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
990 |
991 | normalize-range@^0.1.2:
992 | version "0.1.2"
993 | resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942"
994 | integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==
995 |
996 | object-assign@^4.0.1:
997 | version "4.1.1"
998 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
999 | integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==
1000 |
1001 | object-hash@^3.0.0:
1002 | version "3.0.0"
1003 | resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9"
1004 | integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==
1005 |
1006 | object.omit@^3.0.0:
1007 | version "3.0.0"
1008 | resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-3.0.0.tgz#0e3edc2fce2ba54df5577ff529f6d97bd8a522af"
1009 | integrity sha512-EO+BCv6LJfu+gBIF3ggLicFebFLN5zqzz/WWJlMFfkMyGth+oBkhxzDl0wx2W4GkLzuQs/FsSkXZb2IMWQqmBQ==
1010 | dependencies:
1011 | is-extendable "^1.0.0"
1012 |
1013 | object.pick@^1.3.0:
1014 | version "1.3.0"
1015 | resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747"
1016 | integrity sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==
1017 | dependencies:
1018 | isobject "^3.0.1"
1019 |
1020 | once@^1.3.0:
1021 | version "1.4.0"
1022 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
1023 | integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
1024 | dependencies:
1025 | wrappy "1"
1026 |
1027 | orderedmap@^2.0.0:
1028 | version "2.1.1"
1029 | resolved "https://registry.yarnpkg.com/orderedmap/-/orderedmap-2.1.1.tgz#61481269c44031c449915497bf5a4ad273c512d2"
1030 | integrity sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g==
1031 |
1032 | path-is-absolute@^1.0.0:
1033 | version "1.0.1"
1034 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
1035 | integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==
1036 |
1037 | path-parse@^1.0.7:
1038 | version "1.0.7"
1039 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
1040 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
1041 |
1042 | picocolors@^1.0.0:
1043 | version "1.0.0"
1044 | resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
1045 | integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
1046 |
1047 | picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1:
1048 | version "2.3.1"
1049 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
1050 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
1051 |
1052 | pify@^2.3.0:
1053 | version "2.3.0"
1054 | resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
1055 | integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==
1056 |
1057 | pirates@^4.0.1:
1058 | version "4.0.6"
1059 | resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9"
1060 | integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==
1061 |
1062 | postcss-import@^15.1.0:
1063 | version "15.1.0"
1064 | resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-15.1.0.tgz#41c64ed8cc0e23735a9698b3249ffdbf704adc70"
1065 | integrity sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==
1066 | dependencies:
1067 | postcss-value-parser "^4.0.0"
1068 | read-cache "^1.0.0"
1069 | resolve "^1.1.7"
1070 |
1071 | postcss-js@^4.0.1:
1072 | version "4.0.1"
1073 | resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-4.0.1.tgz#61598186f3703bab052f1c4f7d805f3991bee9d2"
1074 | integrity sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==
1075 | dependencies:
1076 | camelcase-css "^2.0.1"
1077 |
1078 | postcss-load-config@^4.0.1:
1079 | version "4.0.1"
1080 | resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-4.0.1.tgz#152383f481c2758274404e4962743191d73875bd"
1081 | integrity sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==
1082 | dependencies:
1083 | lilconfig "^2.0.5"
1084 | yaml "^2.1.1"
1085 |
1086 | postcss-nested@^6.0.1:
1087 | version "6.0.1"
1088 | resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-6.0.1.tgz#f83dc9846ca16d2f4fa864f16e9d9f7d0961662c"
1089 | integrity sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==
1090 | dependencies:
1091 | postcss-selector-parser "^6.0.11"
1092 |
1093 | postcss-selector-parser@6.0.10:
1094 | version "6.0.10"
1095 | resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz#79b61e2c0d1bfc2602d549e11d0876256f8df88d"
1096 | integrity sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==
1097 | dependencies:
1098 | cssesc "^3.0.0"
1099 | util-deprecate "^1.0.2"
1100 |
1101 | postcss-selector-parser@^6.0.11:
1102 | version "6.0.13"
1103 | resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz#d05d8d76b1e8e173257ef9d60b706a8e5e99bf1b"
1104 | integrity sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==
1105 | dependencies:
1106 | cssesc "^3.0.0"
1107 | util-deprecate "^1.0.2"
1108 |
1109 | postcss-value-parser@^4.0.0, postcss-value-parser@^4.2.0:
1110 | version "4.2.0"
1111 | resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514"
1112 | integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
1113 |
1114 | postcss@8.4.14:
1115 | version "8.4.14"
1116 | resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.14.tgz#ee9274d5622b4858c1007a74d76e42e56fd21caf"
1117 | integrity sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==
1118 | dependencies:
1119 | nanoid "^3.3.4"
1120 | picocolors "^1.0.0"
1121 | source-map-js "^1.0.2"
1122 |
1123 | postcss@8.4.28, postcss@^8.4.23:
1124 | version "8.4.28"
1125 | resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.28.tgz#c6cc681ed00109072816e1557f889ef51cf950a5"
1126 | integrity sha512-Z7V5j0cq8oEKyejIKfpD8b4eBy9cwW2JWPk0+fB1HOAMsfHbnAXLLS+PfVWlzMSLQaWttKDt607I0XHmpE67Vw==
1127 | dependencies:
1128 | nanoid "^3.3.6"
1129 | picocolors "^1.0.0"
1130 | source-map-js "^1.0.2"
1131 |
1132 | prosemirror-changeset@^2.2.0:
1133 | version "2.2.1"
1134 | resolved "https://registry.yarnpkg.com/prosemirror-changeset/-/prosemirror-changeset-2.2.1.tgz#dae94b63aec618fac7bb9061648e6e2a79988383"
1135 | integrity sha512-J7msc6wbxB4ekDFj+n9gTW/jav/p53kdlivvuppHsrZXCaQdVgRghoZbSS3kwrRyAstRVQ4/+u5k7YfLgkkQvQ==
1136 | dependencies:
1137 | prosemirror-transform "^1.0.0"
1138 |
1139 | prosemirror-collab@^1.3.0:
1140 | version "1.3.1"
1141 | resolved "https://registry.yarnpkg.com/prosemirror-collab/-/prosemirror-collab-1.3.1.tgz#0e8c91e76e009b53457eb3b3051fb68dad029a33"
1142 | integrity sha512-4SnynYR9TTYaQVXd/ieUvsVV4PDMBzrq2xPUWutHivDuOshZXqQ5rGbZM84HEaXKbLdItse7weMGOUdDVcLKEQ==
1143 | dependencies:
1144 | prosemirror-state "^1.0.0"
1145 |
1146 | prosemirror-commands@^1.0.0, prosemirror-commands@^1.3.1:
1147 | version "1.5.2"
1148 | resolved "https://registry.yarnpkg.com/prosemirror-commands/-/prosemirror-commands-1.5.2.tgz#e94aeea52286f658cd984270de9b4c3fff580852"
1149 | integrity sha512-hgLcPaakxH8tu6YvVAaILV2tXYsW3rAdDR8WNkeKGcgeMVQg3/TMhPdVoh7iAmfgVjZGtcOSjKiQaoeKjzd2mQ==
1150 | dependencies:
1151 | prosemirror-model "^1.0.0"
1152 | prosemirror-state "^1.0.0"
1153 | prosemirror-transform "^1.0.0"
1154 |
1155 | prosemirror-dropcursor@^1.5.0:
1156 | version "1.8.1"
1157 | resolved "https://registry.yarnpkg.com/prosemirror-dropcursor/-/prosemirror-dropcursor-1.8.1.tgz#49b9fb2f583e0d0f4021ff87db825faa2be2832d"
1158 | integrity sha512-M30WJdJZLyXHi3N8vxN6Zh5O8ZBbQCz0gURTfPmTIBNQ5pxrdU7A58QkNqfa98YEjSAL1HUyyU34f6Pm5xBSGw==
1159 | dependencies:
1160 | prosemirror-state "^1.0.0"
1161 | prosemirror-transform "^1.1.0"
1162 | prosemirror-view "^1.1.0"
1163 |
1164 | prosemirror-gapcursor@^1.3.1:
1165 | version "1.3.2"
1166 | resolved "https://registry.yarnpkg.com/prosemirror-gapcursor/-/prosemirror-gapcursor-1.3.2.tgz#5fa336b83789c6199a7341c9493587e249215cb4"
1167 | integrity sha512-wtjswVBd2vaQRrnYZaBCbyDqr232Ed4p2QPtRIUK5FuqHYKGWkEwl08oQM4Tw7DOR0FsasARV5uJFvMZWxdNxQ==
1168 | dependencies:
1169 | prosemirror-keymap "^1.0.0"
1170 | prosemirror-model "^1.0.0"
1171 | prosemirror-state "^1.0.0"
1172 | prosemirror-view "^1.0.0"
1173 |
1174 | prosemirror-history@^1.0.0, prosemirror-history@^1.3.0:
1175 | version "1.3.2"
1176 | resolved "https://registry.yarnpkg.com/prosemirror-history/-/prosemirror-history-1.3.2.tgz#ce6ad7ab9db83e761aee716f3040d74738311b15"
1177 | integrity sha512-/zm0XoU/N/+u7i5zepjmZAEnpvjDtzoPWW6VmKptcAnPadN/SStsBjMImdCEbb3seiNTpveziPTIrXQbHLtU1g==
1178 | dependencies:
1179 | prosemirror-state "^1.2.2"
1180 | prosemirror-transform "^1.0.0"
1181 | prosemirror-view "^1.31.0"
1182 | rope-sequence "^1.3.0"
1183 |
1184 | prosemirror-inputrules@^1.2.0:
1185 | version "1.2.1"
1186 | resolved "https://registry.yarnpkg.com/prosemirror-inputrules/-/prosemirror-inputrules-1.2.1.tgz#8faf3d78c16150aedac71d326a3e3947417ce557"
1187 | integrity sha512-3LrWJX1+ULRh5SZvbIQlwZafOXqp1XuV21MGBu/i5xsztd+9VD15x6OtN6mdqSFI7/8Y77gYUbQ6vwwJ4mr6QQ==
1188 | dependencies:
1189 | prosemirror-state "^1.0.0"
1190 | prosemirror-transform "^1.0.0"
1191 |
1192 | prosemirror-keymap@^1.0.0, prosemirror-keymap@^1.1.2, prosemirror-keymap@^1.2.0:
1193 | version "1.2.2"
1194 | resolved "https://registry.yarnpkg.com/prosemirror-keymap/-/prosemirror-keymap-1.2.2.tgz#14a54763a29c7b2704f561088ccf3384d14eb77e"
1195 | integrity sha512-EAlXoksqC6Vbocqc0GtzCruZEzYgrn+iiGnNjsJsH4mrnIGex4qbLdWWNza3AW5W36ZRrlBID0eM6bdKH4OStQ==
1196 | dependencies:
1197 | prosemirror-state "^1.0.0"
1198 | w3c-keyname "^2.2.0"
1199 |
1200 | prosemirror-markdown@^1.10.1:
1201 | version "1.11.2"
1202 | resolved "https://registry.yarnpkg.com/prosemirror-markdown/-/prosemirror-markdown-1.11.2.tgz#f6e529e669d11fa3eec859e93c0d2c91788d6c80"
1203 | integrity sha512-Eu5g4WPiCdqDTGhdSsG9N6ZjACQRYrsAkrF9KYfdMaCmjIApH75aVncsWYOJvEk2i1B3i8jZppv3J/tnuHGiUQ==
1204 | dependencies:
1205 | markdown-it "^13.0.1"
1206 | prosemirror-model "^1.0.0"
1207 |
1208 | prosemirror-menu@^1.2.1:
1209 | version "1.2.4"
1210 | resolved "https://registry.yarnpkg.com/prosemirror-menu/-/prosemirror-menu-1.2.4.tgz#3cfdc7c06d10f9fbd1bce29082c498bd11a0a79a"
1211 | integrity sha512-S/bXlc0ODQup6aiBbWVsX/eM+xJgCTAfMq/nLqaO5ID/am4wS0tTCIkzwytmao7ypEtjj39i7YbJjAgO20mIqA==
1212 | dependencies:
1213 | crelt "^1.0.0"
1214 | prosemirror-commands "^1.0.0"
1215 | prosemirror-history "^1.0.0"
1216 | prosemirror-state "^1.0.0"
1217 |
1218 | prosemirror-model@^1.0.0, prosemirror-model@^1.16.0, prosemirror-model@^1.18.1, prosemirror-model@^1.19.0, prosemirror-model@^1.8.1:
1219 | version "1.19.3"
1220 | resolved "https://registry.yarnpkg.com/prosemirror-model/-/prosemirror-model-1.19.3.tgz#f0d55285487fefd962d0ac695f716f4ec6705006"
1221 | integrity sha512-tgSnwN7BS7/UM0sSARcW+IQryx2vODKX4MI7xpqY2X+iaepJdKBPc7I4aACIsDV/LTaTjt12Z56MhDr9LsyuZQ==
1222 | dependencies:
1223 | orderedmap "^2.0.0"
1224 |
1225 | prosemirror-schema-basic@^1.2.0:
1226 | version "1.2.2"
1227 | resolved "https://registry.yarnpkg.com/prosemirror-schema-basic/-/prosemirror-schema-basic-1.2.2.tgz#6695f5175e4628aab179bf62e5568628b9cfe6c7"
1228 | integrity sha512-/dT4JFEGyO7QnNTe9UaKUhjDXbTNkiWTq/N4VpKaF79bBjSExVV2NXmJpcM7z/gD7mbqNjxbmWW5nf1iNSSGnw==
1229 | dependencies:
1230 | prosemirror-model "^1.19.0"
1231 |
1232 | prosemirror-schema-list@^1.2.2:
1233 | version "1.3.0"
1234 | resolved "https://registry.yarnpkg.com/prosemirror-schema-list/-/prosemirror-schema-list-1.3.0.tgz#05374702cf35a3ba5e7ec31079e355a488d52519"
1235 | integrity sha512-Hz/7gM4skaaYfRPNgr421CU4GSwotmEwBVvJh5ltGiffUJwm7C8GfN/Bc6DR1EKEp5pDKhODmdXXyi9uIsZl5A==
1236 | dependencies:
1237 | prosemirror-model "^1.0.0"
1238 | prosemirror-state "^1.0.0"
1239 | prosemirror-transform "^1.7.3"
1240 |
1241 | prosemirror-state@^1.0.0, prosemirror-state@^1.2.2, prosemirror-state@^1.3.1, prosemirror-state@^1.4.1:
1242 | version "1.4.3"
1243 | resolved "https://registry.yarnpkg.com/prosemirror-state/-/prosemirror-state-1.4.3.tgz#94aecf3ffd54ec37e87aa7179d13508da181a080"
1244 | integrity sha512-goFKORVbvPuAQaXhpbemJFRKJ2aixr+AZMGiquiqKxaucC6hlpHNZHWgz5R7dS4roHiwq9vDctE//CZ++o0W1Q==
1245 | dependencies:
1246 | prosemirror-model "^1.0.0"
1247 | prosemirror-transform "^1.0.0"
1248 | prosemirror-view "^1.27.0"
1249 |
1250 | prosemirror-tables@^1.3.0:
1251 | version "1.3.4"
1252 | resolved "https://registry.yarnpkg.com/prosemirror-tables/-/prosemirror-tables-1.3.4.tgz#0b7cc16d49f90c5b834c9f29291c545478ce9ab0"
1253 | integrity sha512-z6uLSQ1BLC3rgbGwZmpfb+xkdvD7W/UOsURDfognZFYaTtc0gsk7u/t71Yijp2eLflVpffMk6X0u0+u+MMDvIw==
1254 | dependencies:
1255 | prosemirror-keymap "^1.1.2"
1256 | prosemirror-model "^1.8.1"
1257 | prosemirror-state "^1.3.1"
1258 | prosemirror-transform "^1.2.1"
1259 | prosemirror-view "^1.13.3"
1260 |
1261 | prosemirror-trailing-node@^2.0.2:
1262 | version "2.0.7"
1263 | resolved "https://registry.yarnpkg.com/prosemirror-trailing-node/-/prosemirror-trailing-node-2.0.7.tgz#ba782a7929f18bcae650b1c7082a2d10443eab19"
1264 | integrity sha512-8zcZORYj/8WEwsGo6yVCRXFMOfBo0Ub3hCUvmoWIZYfMP26WqENU0mpEP27w7mt8buZWuGrydBewr0tOArPb1Q==
1265 | dependencies:
1266 | "@remirror/core-constants" "^2.0.2"
1267 | "@remirror/core-helpers" "^3.0.0"
1268 | escape-string-regexp "^4.0.0"
1269 |
1270 | prosemirror-transform@^1.0.0, prosemirror-transform@^1.1.0, prosemirror-transform@^1.2.1, prosemirror-transform@^1.7.0, prosemirror-transform@^1.7.3:
1271 | version "1.7.5"
1272 | resolved "https://registry.yarnpkg.com/prosemirror-transform/-/prosemirror-transform-1.7.5.tgz#c62aac8645bd4f8cf447d6d53dda80abe8489f03"
1273 | integrity sha512-U/fWB6frEzY7dzwJUo+ir8dU1JEanaI/RwL12Imy9js/527N0v/IRUKewocP1kTq998JNT18IGtThaDLwLOBxQ==
1274 | dependencies:
1275 | prosemirror-model "^1.0.0"
1276 |
1277 | prosemirror-view@^1.0.0, prosemirror-view@^1.1.0, prosemirror-view@^1.13.3, prosemirror-view@^1.27.0, prosemirror-view@^1.28.2, prosemirror-view@^1.31.0:
1278 | version "1.31.7"
1279 | resolved "https://registry.yarnpkg.com/prosemirror-view/-/prosemirror-view-1.31.7.tgz#dccb2879314e1e1a24d48044c15374754e50ef00"
1280 | integrity sha512-Pr7w93yOYmxQwzGIRSaNLZ/1uM6YjnenASzN2H6fO6kGekuzRbgZ/4bHbBTd1u4sIQmL33/TcGmzxxidyPwCjg==
1281 | dependencies:
1282 | prosemirror-model "^1.16.0"
1283 | prosemirror-state "^1.0.0"
1284 | prosemirror-transform "^1.1.0"
1285 |
1286 | proxy-from-env@^1.1.0:
1287 | version "1.1.0"
1288 | resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2"
1289 | integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==
1290 |
1291 | queue-microtask@^1.2.2:
1292 | version "1.2.3"
1293 | resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
1294 | integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
1295 |
1296 | react-dom@18.2.0:
1297 | version "18.2.0"
1298 | resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d"
1299 | integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==
1300 | dependencies:
1301 | loose-envify "^1.1.0"
1302 | scheduler "^0.23.0"
1303 |
1304 | react@18.2.0:
1305 | version "18.2.0"
1306 | resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5"
1307 | integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==
1308 | dependencies:
1309 | loose-envify "^1.1.0"
1310 |
1311 | read-cache@^1.0.0:
1312 | version "1.0.0"
1313 | resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774"
1314 | integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==
1315 | dependencies:
1316 | pify "^2.3.0"
1317 |
1318 | readdirp@~3.6.0:
1319 | version "3.6.0"
1320 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
1321 | integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==
1322 | dependencies:
1323 | picomatch "^2.2.1"
1324 |
1325 | resolve@^1.1.7, resolve@^1.22.2:
1326 | version "1.22.4"
1327 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.4.tgz#1dc40df46554cdaf8948a486a10f6ba1e2026c34"
1328 | integrity sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==
1329 | dependencies:
1330 | is-core-module "^2.13.0"
1331 | path-parse "^1.0.7"
1332 | supports-preserve-symlinks-flag "^1.0.0"
1333 |
1334 | reusify@^1.0.4:
1335 | version "1.0.4"
1336 | resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
1337 | integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
1338 |
1339 | rope-sequence@^1.3.0:
1340 | version "1.3.4"
1341 | resolved "https://registry.yarnpkg.com/rope-sequence/-/rope-sequence-1.3.4.tgz#df85711aaecd32f1e756f76e43a415171235d425"
1342 | integrity sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ==
1343 |
1344 | run-parallel@^1.1.9:
1345 | version "1.2.0"
1346 | resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee"
1347 | integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==
1348 | dependencies:
1349 | queue-microtask "^1.2.2"
1350 |
1351 | sass@^1.66.1:
1352 | version "1.66.1"
1353 | resolved "https://registry.yarnpkg.com/sass/-/sass-1.66.1.tgz#04b51c4671e4650aa393740e66a4e58b44d055b1"
1354 | integrity sha512-50c+zTsZOJVgFfTgwwEzkjA3/QACgdNsKueWPyAR0mRINIvLAStVQBbPg14iuqEQ74NPDbXzJARJ/O4SI1zftA==
1355 | dependencies:
1356 | chokidar ">=3.0.0 <4.0.0"
1357 | immutable "^4.0.0"
1358 | source-map-js ">=0.6.2 <2.0.0"
1359 |
1360 | scheduler@^0.23.0:
1361 | version "0.23.0"
1362 | resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe"
1363 | integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==
1364 | dependencies:
1365 | loose-envify "^1.1.0"
1366 |
1367 | sonner@^0.7.0:
1368 | version "0.7.0"
1369 | resolved "https://registry.yarnpkg.com/sonner/-/sonner-0.7.0.tgz#1b63765b4d14721cb93f0aa921da09bcb2e7a1d9"
1370 | integrity sha512-vAlXCrE6/183yt64ktIUnPv85RmAPYiicl5z35fDDFhWRIUpg7N62TsiIbHjwGuxbVJu/5hYlh92HHImsS27dA==
1371 |
1372 | "source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.2:
1373 | version "1.0.2"
1374 | resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c"
1375 | integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==
1376 |
1377 | streamsearch@^1.1.0:
1378 | version "1.1.0"
1379 | resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764"
1380 | integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==
1381 |
1382 | styled-jsx@5.1.1:
1383 | version "5.1.1"
1384 | resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-5.1.1.tgz#839a1c3aaacc4e735fed0781b8619ea5d0009d1f"
1385 | integrity sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==
1386 | dependencies:
1387 | client-only "0.0.1"
1388 |
1389 | sucrase@^3.32.0:
1390 | version "3.34.0"
1391 | resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.34.0.tgz#1e0e2d8fcf07f8b9c3569067d92fbd8690fb576f"
1392 | integrity sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==
1393 | dependencies:
1394 | "@jridgewell/gen-mapping" "^0.3.2"
1395 | commander "^4.0.0"
1396 | glob "7.1.6"
1397 | lines-and-columns "^1.1.6"
1398 | mz "^2.7.0"
1399 | pirates "^4.0.1"
1400 | ts-interface-checker "^0.1.9"
1401 |
1402 | supports-preserve-symlinks-flag@^1.0.0:
1403 | version "1.0.0"
1404 | resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
1405 | integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
1406 |
1407 | tailwindcss@3.3.3:
1408 | version "3.3.3"
1409 | resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.3.3.tgz#90da807393a2859189e48e9e7000e6880a736daf"
1410 | integrity sha512-A0KgSkef7eE4Mf+nKJ83i75TMyq8HqY3qmFIJSWy8bNt0v1lG7jUcpGpoTFxAwYcWOphcTBLPPJg+bDfhDf52w==
1411 | dependencies:
1412 | "@alloc/quick-lru" "^5.2.0"
1413 | arg "^5.0.2"
1414 | chokidar "^3.5.3"
1415 | didyoumean "^1.2.2"
1416 | dlv "^1.1.3"
1417 | fast-glob "^3.2.12"
1418 | glob-parent "^6.0.2"
1419 | is-glob "^4.0.3"
1420 | jiti "^1.18.2"
1421 | lilconfig "^2.1.0"
1422 | micromatch "^4.0.5"
1423 | normalize-path "^3.0.0"
1424 | object-hash "^3.0.0"
1425 | picocolors "^1.0.0"
1426 | postcss "^8.4.23"
1427 | postcss-import "^15.1.0"
1428 | postcss-js "^4.0.1"
1429 | postcss-load-config "^4.0.1"
1430 | postcss-nested "^6.0.1"
1431 | postcss-selector-parser "^6.0.11"
1432 | resolve "^1.22.2"
1433 | sucrase "^3.32.0"
1434 |
1435 | thenify-all@^1.0.0:
1436 | version "1.6.0"
1437 | resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726"
1438 | integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==
1439 | dependencies:
1440 | thenify ">= 3.1.0 < 4"
1441 |
1442 | "thenify@>= 3.1.0 < 4":
1443 | version "3.3.1"
1444 | resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f"
1445 | integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==
1446 | dependencies:
1447 | any-promise "^1.0.0"
1448 |
1449 | throttle-debounce@^3.0.1:
1450 | version "3.0.1"
1451 | resolved "https://registry.yarnpkg.com/throttle-debounce/-/throttle-debounce-3.0.1.tgz#32f94d84dfa894f786c9a1f290e7a645b6a19abb"
1452 | integrity sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg==
1453 |
1454 | tippy.js@^6.3.7:
1455 | version "6.3.7"
1456 | resolved "https://registry.yarnpkg.com/tippy.js/-/tippy.js-6.3.7.tgz#8ccfb651d642010ed9a32ff29b0e9e19c5b8c61c"
1457 | integrity sha512-E1d3oP2emgJ9dRQZdf3Kkn0qJgI6ZLpyS5z6ZkY1DF3kaQaBsGZsndEpHwx+eC+tYM41HaSNvNtLx8tU57FzTQ==
1458 | dependencies:
1459 | "@popperjs/core" "^2.9.0"
1460 |
1461 | to-regex-range@^5.0.1:
1462 | version "5.0.1"
1463 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
1464 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
1465 | dependencies:
1466 | is-number "^7.0.0"
1467 |
1468 | ts-interface-checker@^0.1.9:
1469 | version "0.1.13"
1470 | resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699"
1471 | integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==
1472 |
1473 | tslib@^2.4.0:
1474 | version "2.6.2"
1475 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae"
1476 | integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==
1477 |
1478 | type-fest@^2.19.0:
1479 | version "2.19.0"
1480 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b"
1481 | integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==
1482 |
1483 | uc.micro@^1.0.1, uc.micro@^1.0.5:
1484 | version "1.0.6"
1485 | resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac"
1486 | integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==
1487 |
1488 | update-browserslist-db@^1.0.11:
1489 | version "1.0.11"
1490 | resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz#9a2a641ad2907ae7b3616506f4b977851db5b940"
1491 | integrity sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==
1492 | dependencies:
1493 | escalade "^3.1.1"
1494 | picocolors "^1.0.0"
1495 |
1496 | util-deprecate@^1.0.2:
1497 | version "1.0.2"
1498 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
1499 | integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
1500 |
1501 | w3c-keyname@^2.2.0:
1502 | version "2.2.8"
1503 | resolved "https://registry.yarnpkg.com/w3c-keyname/-/w3c-keyname-2.2.8.tgz#7b17c8c6883d4e8b86ac8aba79d39e880f8869c5"
1504 | integrity sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==
1505 |
1506 | watchpack@2.4.0:
1507 | version "2.4.0"
1508 | resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d"
1509 | integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==
1510 | dependencies:
1511 | glob-to-regexp "^0.4.1"
1512 | graceful-fs "^4.1.2"
1513 |
1514 | wrappy@1:
1515 | version "1.0.2"
1516 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
1517 | integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
1518 |
1519 | yaml@^2.1.1:
1520 | version "2.3.1"
1521 | resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.1.tgz#02fe0975d23cd441242aa7204e09fc28ac2ac33b"
1522 | integrity sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==
1523 |
1524 | zod@3.21.4:
1525 | version "3.21.4"
1526 | resolved "https://registry.yarnpkg.com/zod/-/zod-3.21.4.tgz#10882231d992519f0a10b5dd58a38c9dabbb64db"
1527 | integrity sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==
1528 |
--------------------------------------------------------------------------------