├── package
├── src
│ ├── vite-env.d.ts
│ ├── styles
│ │ ├── tailwind.css
│ │ ├── index.css
│ │ └── Prosemirror.css
│ ├── main.ts
│ ├── components
│ │ ├── extensions
│ │ │ ├── updated-image.ts
│ │ │ ├── index.ts
│ │ │ ├── slashCommandList.vue
│ │ │ └── slashExtension.ts
│ │ ├── icons
│ │ │ └── loadingCircle.vue
│ │ ├── BubbleMenu
│ │ │ ├── LinkSelector.vue
│ │ │ ├── index.vue
│ │ │ ├── NodeSelector.vue
│ │ │ └── ColorSelector.vue
│ │ ├── plugins
│ │ │ └── upload-images.ts
│ │ └── Editor.vue
│ ├── lib
│ │ ├── editor.ts
│ │ ├── props.ts
│ │ └── default-content.ts
│ └── App.vue
├── postcss.config.js
├── index.ts
├── tsconfig.node.json
├── .gitignore
├── index.html
├── tsconfig.json
├── vite.config.ts
├── tailwind.config.js
├── public
│ └── vite.svg
├── package.json
├── README.md
└── pnpm-lock.yaml
├── nuxt-server
├── .npmrc
├── server
│ ├── tsconfig.json
│ └── api
│ │ ├── upload.ts
│ │ └── generate.ts
├── public
│ └── favicon.ico
├── tsconfig.json
├── app.vue
├── nuxt.config.ts
├── .gitignore
├── package.json
└── README.md
├── .vscode
└── extensions.json
└── README.md
/package/src/vite-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/nuxt-server/.npmrc:
--------------------------------------------------------------------------------
1 | shamefully-hoist=true
2 | strict-peer-dependencies=false
3 |
--------------------------------------------------------------------------------
/nuxt-server/server/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../.nuxt/tsconfig.server.json"
3 | }
4 |
--------------------------------------------------------------------------------
/package/src/styles/tailwind.css:
--------------------------------------------------------------------------------
1 | @tailwind base;
2 | @tailwind components;
3 | @tailwind utilities;
4 |
--------------------------------------------------------------------------------
/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | "recommendations": ["Vue.volar", "Vue.vscode-typescript-vue-plugin"]
3 | }
4 |
--------------------------------------------------------------------------------
/nuxt-server/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naveennaidu/novel-vue/HEAD/nuxt-server/public/favicon.ico
--------------------------------------------------------------------------------
/nuxt-server/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | // https://nuxt.com/docs/guide/concepts/typescript
3 | "extends": "./.nuxt/tsconfig.json"
4 | }
5 |
--------------------------------------------------------------------------------
/nuxt-server/app.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
9 |
--------------------------------------------------------------------------------
/package/postcss.config.js:
--------------------------------------------------------------------------------
1 | export default {
2 | plugins: {
3 | "postcss-import": {},
4 | "tailwindcss/nesting": {},
5 | tailwindcss: {},
6 | autoprefixer: {},
7 | },
8 | };
9 |
--------------------------------------------------------------------------------
/package/index.ts:
--------------------------------------------------------------------------------
1 | import "./src/styles/index.css";
2 | import "./src/styles/tailwind.css";
3 | import "./src/styles/Prosemirror.css";
4 |
5 | import Editor from "./src/components/Editor.vue";
6 |
7 | export { Editor };
8 |
--------------------------------------------------------------------------------
/package/src/main.ts:
--------------------------------------------------------------------------------
1 | import { createApp } from "vue";
2 | import "./styles/index.css";
3 | import "./styles/tailwind.css";
4 | import "./styles/Prosemirror.css";
5 | import App from "./App.vue";
6 |
7 | createApp(App).mount("#app");
8 |
--------------------------------------------------------------------------------
/nuxt-server/nuxt.config.ts:
--------------------------------------------------------------------------------
1 | // https://nuxt.com/docs/api/configuration/nuxt-config
2 | export default defineNuxtConfig({
3 | devtools: { enabled: true },
4 | runtimeConfig: {
5 | openaiApiKey: "",
6 | BLOB_READ_WRITE_TOKEN: "",
7 | },
8 | });
9 |
--------------------------------------------------------------------------------
/package/tsconfig.node.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "composite": true,
4 | "skipLibCheck": true,
5 | "module": "ESNext",
6 | "moduleResolution": "bundler",
7 | "allowSyntheticDefaultImports": true
8 | },
9 | "include": ["vite.config.ts"]
10 | }
11 |
--------------------------------------------------------------------------------
/nuxt-server/.gitignore:
--------------------------------------------------------------------------------
1 | # Nuxt dev/build outputs
2 | .output
3 | .data
4 | .nuxt
5 | .nitro
6 | .cache
7 | dist
8 |
9 | # Node dependencies
10 | node_modules
11 |
12 | # Logs
13 | logs
14 | *.log
15 |
16 | # Misc
17 | .DS_Store
18 | .fleet
19 | .idea
20 |
21 | # Local env files
22 | .env
23 | .env.*
24 | !.env.example
25 |
--------------------------------------------------------------------------------
/package/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | pnpm-debug.log*
8 | lerna-debug.log*
9 |
10 | node_modules
11 | dist
12 | dist-ssr
13 | *.local
14 |
15 | # Editor directories and files
16 | .vscode/*
17 | !.vscode/extensions.json
18 | .idea
19 | .DS_Store
20 | *.suo
21 | *.ntvs*
22 | *.njsproj
23 | *.sln
24 | *.sw?
25 |
--------------------------------------------------------------------------------
/package/src/components/extensions/updated-image.ts:
--------------------------------------------------------------------------------
1 | import Image from "@tiptap/extension-image";
2 |
3 | const UpdatedImage = Image.extend({
4 | addAttributes() {
5 | return {
6 | ...this.parent?.(),
7 | width: {
8 | default: null,
9 | },
10 | height: {
11 | default: null,
12 | },
13 | };
14 | },
15 | });
16 |
17 | export default UpdatedImage;
--------------------------------------------------------------------------------
/package/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Vite + Vue + TS
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/nuxt-server/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "nuxt-app",
3 | "private": true,
4 | "scripts": {
5 | "build": "nuxt build",
6 | "dev": "nuxt dev",
7 | "generate": "nuxt generate",
8 | "preview": "nuxt preview",
9 | "postinstall": "nuxt prepare"
10 | },
11 | "devDependencies": {
12 | "@nuxt/devtools": "latest",
13 | "nuxt": "^3.7.0"
14 | },
15 | "dependencies": {
16 | "@vercel/blob": "^0.15.1",
17 | "ai": "^2.2.11",
18 | "novel-vue": "^0.0.3",
19 | "openai": "^4.4.0"
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/package/src/lib/editor.ts:
--------------------------------------------------------------------------------
1 | import { Editor } from "@tiptap/core";
2 |
3 | export const getPrevText = (
4 | editor: Editor,
5 | {
6 | chars,
7 | offset = 0,
8 | }: {
9 | chars: number;
10 | offset?: number;
11 | }
12 | ) => {
13 | // for now, we're using textBetween for now until we can figure out a way to stream markdown text
14 | // with proper formatting: https://github.com/steven-tey/novel/discussions/7
15 | return editor.state.doc.textBetween(
16 | Math.max(0, editor.state.selection.from - chars),
17 | editor.state.selection.from - offset,
18 | "\n"
19 | );
20 | };
21 |
--------------------------------------------------------------------------------
/package/src/lib/props.ts:
--------------------------------------------------------------------------------
1 | import { EditorProps } from "@tiptap/pm/view";
2 |
3 | export const defaultEditorProps: EditorProps = {
4 | attributes: {
5 | class: `prose-lg prose-stone dark:prose-invert prose-headings:font-title font-default focus:outline-none max-w-full`,
6 | },
7 | handleDOMEvents: {
8 | keydown: (_view, event) => {
9 | // prevent default event listeners from firing when slash command is active
10 | if (["ArrowUp", "ArrowDown", "Enter"].includes(event.key)) {
11 | const slashCommand = document.querySelector("#slash-command");
12 | if (slashCommand) {
13 | return true;
14 | }
15 | }
16 | },
17 | },
18 | };
19 |
--------------------------------------------------------------------------------
/package/src/App.vue:
--------------------------------------------------------------------------------
1 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
--------------------------------------------------------------------------------
/package/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "ES2020",
4 | "useDefineForClassFields": true,
5 | "module": "ESNext",
6 | "lib": ["ES2020", "DOM", "DOM.Iterable"],
7 | "skipLibCheck": true,
8 |
9 | /* Bundler mode */
10 | "moduleResolution": "bundler",
11 | "allowImportingTsExtensions": true,
12 | "resolveJsonModule": true,
13 | "isolatedModules": true,
14 | // "noEmit": true,
15 | "jsx": "preserve",
16 |
17 | /* Linting */
18 | "strict": true,
19 | "noUnusedLocals": true,
20 | "noUnusedParameters": true,
21 | "noFallthroughCasesInSwitch": true,
22 |
23 | "outDir": "dist",
24 | "declaration": true
25 | },
26 | "include": [
27 | "index.ts",
28 | "src/**/*.ts",
29 | "src/**/*.d.ts",
30 | "src/**/*.tsx",
31 | "src/**/*.vue"
32 | ],
33 | "exclude": ["src/App.vue", "src/main.ts"],
34 | "references": [{ "path": "./tsconfig.node.json" }]
35 | }
36 |
--------------------------------------------------------------------------------
/package/vite.config.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from "vite";
2 | import { resolve } from "path";
3 | import vue from "@vitejs/plugin-vue";
4 | import dts from "vite-plugin-dts";
5 |
6 | // https://vitejs.dev/config/
7 | export default defineConfig({
8 | plugins: [
9 | vue(),
10 | dts({
11 | rollupTypes: true,
12 | }),
13 | ],
14 | build: {
15 | lib: {
16 | // Could also be a dictionary or array of multiple entry points
17 | entry: resolve(__dirname, "index.ts"),
18 | name: "Novel Vue",
19 | // the proper extensions will be added
20 | fileName: "novel-vue",
21 | },
22 | rollupOptions: {
23 | // make sure to externalize deps that shouldn't be bundled
24 | // into your library
25 | external: ["vue"],
26 | output: {
27 | // Provide global variables to use in the UMD build
28 | // for externalized deps
29 | globals: {
30 | vue: "Vue",
31 | },
32 | },
33 | },
34 | },
35 | });
36 |
--------------------------------------------------------------------------------
/nuxt-server/README.md:
--------------------------------------------------------------------------------
1 | # Nuxt 3 Minimal Starter
2 |
3 | Look at the [Nuxt 3 documentation](https://nuxt.com/docs/getting-started/introduction) to learn more.
4 |
5 | ## Setup
6 |
7 | Make sure to install the dependencies:
8 |
9 | ```bash
10 | # npm
11 | npm install
12 |
13 | # pnpm
14 | pnpm install
15 |
16 | # yarn
17 | yarn install
18 | ```
19 |
20 | ## Development Server
21 |
22 | Start the development server on `http://localhost:3000`:
23 |
24 | ```bash
25 | # npm
26 | npm run dev
27 |
28 | # pnpm
29 | pnpm run dev
30 |
31 | # yarn
32 | yarn dev
33 | ```
34 |
35 | ## Production
36 |
37 | Build the application for production:
38 |
39 | ```bash
40 | # npm
41 | npm run build
42 |
43 | # pnpm
44 | pnpm run build
45 |
46 | # yarn
47 | yarn build
48 | ```
49 |
50 | Locally preview production build:
51 |
52 | ```bash
53 | # npm
54 | npm run preview
55 |
56 | # pnpm
57 | pnpm run preview
58 |
59 | # yarn
60 | yarn preview
61 | ```
62 |
63 | Check out the [deployment documentation](https://nuxt.com/docs/getting-started/deployment) for more information.
64 |
--------------------------------------------------------------------------------
/nuxt-server/server/api/upload.ts:
--------------------------------------------------------------------------------
1 | import { put } from "@vercel/blob";
2 |
3 | export default defineLazyEventHandler(async () => {
4 | const BLOB_READ_WRITE_TOKEN = useRuntimeConfig().BLOB_READ_WRITE_TOKEN;
5 | if (!BLOB_READ_WRITE_TOKEN) {
6 | throw new Error(
7 | "Missing BLOB_READ_WRITE_TOKEN"
8 | );
9 | }
10 |
11 | return defineEventHandler(async (event) => {
12 | // Extract the `prompt` from the body of the request
13 | const body = event.node.req
14 | const file = body || "";
15 | const filename = event.headers.get("x-vercel-filename") || "file.txt";
16 | const contentType = event.headers.get("content-type") || "text/plain";
17 | const fileType = `.${contentType.split("/")[1]}`;
18 |
19 | // construct final filename based on content-type if not provided
20 | const finalName = filename.includes(fileType)
21 | ? filename
22 | : `${filename}${fileType}`;
23 | const blob = await put(finalName, file, {
24 | contentType,
25 | access: "public",
26 | });
27 |
28 | return blob;
29 | });
30 | });
31 |
--------------------------------------------------------------------------------
/package/tailwind.config.js:
--------------------------------------------------------------------------------
1 | /** @type {import('tailwindcss').Config} */
2 | export default {
3 | content: ["./index.html", "./src/**/*.{vue,js,ts,jsx,tsx}"],
4 | theme: {
5 | theme: {
6 | extend: {
7 | fontFamily: {
8 | title: ["var(--font-title)", "system-ui", "sans-serif"],
9 | default: ["var(--font-default)", "system-ui", "sans-serif"],
10 | },
11 | colors: {
12 | white: "var(--novel-white)",
13 | stone: {
14 | 50: "var(--novel-stone-50)",
15 | 100: "var(--novel-stone-100)",
16 | 200: "var(--novel-stone-200)",
17 | 300: "var(--novel-stone-300)",
18 | 400: "var(--novel-stone-400)",
19 | 500: "var(--novel-stone-500)",
20 | 600: "var(--novel-stone-600)",
21 | 700: "var(--novel-stone-700)",
22 | 800: "var(--novel-stone-800)",
23 | 900: "var(--novel-stone-900)",
24 | },
25 | },
26 | },
27 | },
28 | },
29 | plugins: [require("@tailwindcss/typography"), require("tailwindcss-animate")],
30 | };
31 |
--------------------------------------------------------------------------------
/nuxt-server/server/api/generate.ts:
--------------------------------------------------------------------------------
1 | import OpenAI from "openai";
2 | import { OpenAIStream } from "ai";
3 |
4 | export default defineLazyEventHandler(async () => {
5 | const apiKey = useRuntimeConfig().openaiApiKey;
6 | if (!apiKey) throw new Error("Missing OpenAI API key");
7 | const openai = new OpenAI({
8 | apiKey: apiKey,
9 | });
10 |
11 | return defineEventHandler(async (event) => {
12 | // Extract the `prompt` from the body of the request
13 | const body = await readBody(event);
14 | const { prompt } = JSON.parse(body);
15 |
16 | const response = await openai.chat.completions.create({
17 | model: "gpt-3.5-turbo",
18 | messages: [
19 | {
20 | role: "system",
21 | content:
22 | "You are an AI writing assistant that continues existing text based on context from prior text. " +
23 | "Give more weight/priority to the later characters than the beginning ones. " +
24 | "Limit your response to no more than 200 characters, but make sure to construct complete sentences.",
25 | },
26 | {
27 | role: "user",
28 | content: prompt,
29 | },
30 | ],
31 | temperature: 0.7,
32 | top_p: 1,
33 | frequency_penalty: 0,
34 | presence_penalty: 0,
35 | stream: true,
36 | n: 1,
37 | });
38 |
39 | // Convert the response into a friendly text-stream
40 | return OpenAIStream(response);
41 | });
42 | });
43 |
--------------------------------------------------------------------------------
/package/public/vite.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/package/src/components/icons/loadingCircle.vue:
--------------------------------------------------------------------------------
1 |
2 |
19 |
20 |
21 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/package/src/styles/index.css:
--------------------------------------------------------------------------------
1 | :root {
2 | --novel-black: rgb(0 0 0);
3 | --novel-white: rgb(255 255 255);
4 | --novel-stone-50: rgb(250 250 249);
5 | --novel-stone-100: rgb(245 245 244);
6 | --novel-stone-200: rgb(231 229 228);
7 | --novel-stone-300: rgb(214 211 209);
8 | --novel-stone-400: rgb(168 162 158);
9 | --novel-stone-500: rgb(120 113 108);
10 | --novel-stone-600: rgb(87 83 78);
11 | --novel-stone-700: rgb(68 64 60);
12 | --novel-stone-800: rgb(41 37 36);
13 | --novel-stone-900: rgb(28 25 23);
14 |
15 | --novel-highlight-default: #ffffff;
16 | --novel-highlight-purple: #f6f3f8;
17 | --novel-highlight-red: #fdebeb;
18 | --novel-highlight-yellow: #fbf4a2;
19 | --novel-highlight-blue: #c1ecf9;
20 | --novel-highlight-green: #acf79f;
21 | --novel-highlight-orange: #faebdd;
22 | --novel-highlight-pink: #faf1f5;
23 | --novel-highlight-gray: #f1f1ef;
24 |
25 | --font-title: "Cal Sans", sans-serif;
26 | }
27 |
28 | .dark-theme {
29 | --novel-black: rgb(255 255 255);
30 | --novel-white: rgb(25 25 25);
31 | --novel-stone-50: rgb(35 35 34);
32 | --novel-stone-100: rgb(41 37 36);
33 | --novel-stone-200: rgb(66 69 71);
34 | --novel-stone-300: rgb(112 118 123);
35 | --novel-stone-400: rgb(160 167 173);
36 | --novel-stone-500: rgb(193 199 204);
37 | --novel-stone-600: rgb(212 217 221);
38 | --novel-stone-700: rgb(229 232 235);
39 | --novel-stone-800: rgb(232 234 235);
40 | --novel-stone-900: rgb(240, 240, 241);
41 |
42 | --novel-highlight-default: #000000;
43 | --novel-highlight-purple: #3f2c4b;
44 | --novel-highlight-red: #5c1a1a;
45 | --novel-highlight-yellow: #5c4b1a;
46 | --novel-highlight-blue: #1a3d5c;
47 | --novel-highlight-green: #1a5c20;
48 | --novel-highlight-orange: #5c3a1a;
49 | --novel-highlight-pink: #5c1a3a;
50 | --novel-highlight-gray: #3a3a3a;
51 | }
52 |
53 | @font-face {
54 | font-family: "Cal Sans";
55 | src: local("Cal Sans"), url(CalSans-SemiBold.otf) format("otf");
56 | }
57 |
--------------------------------------------------------------------------------
/package/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "novel-vue",
3 | "version": "0.0.4",
4 | "author": "Naveen Naidu ",
5 | "description": "A Vue 3 component for the novel editor",
6 | "type": "module",
7 | "files": [
8 | "dist"
9 | ],
10 | "main": "./dist/novel-vue.umd.cjs",
11 | "module": "./dist/novel-vue.js",
12 | "exports": {
13 | ".": {
14 | "import": "./dist/novel-vue.js",
15 | "require": "./dist/novel-vue.umd.cjs"
16 | },
17 | "./dist/style.css": "./dist/style.css"
18 | },
19 | "types": "./dist/index.d.ts",
20 | "scripts": {
21 | "dev": "vite",
22 | "build": "vite build && vue-tsc --emitDeclarationOnly",
23 | "preview": "vite preview"
24 | },
25 | "dependencies": {
26 | "@headlessui/vue": "^1.7.16",
27 | "@tiptap/extension-color": "^2.1.7",
28 | "@tiptap/extension-highlight": "^2.1.7",
29 | "@tiptap/extension-horizontal-rule": "^2.1.7",
30 | "@tiptap/extension-image": "^2.1.7",
31 | "@tiptap/extension-link": "^2.1.7",
32 | "@tiptap/extension-placeholder": "^2.1.7",
33 | "@tiptap/extension-task-item": "^2.1.7",
34 | "@tiptap/extension-task-list": "^2.1.7",
35 | "@tiptap/extension-text-style": "^2.1.7",
36 | "@tiptap/extension-underline": "^2.1.7",
37 | "@tiptap/pm": "^2.1.7",
38 | "@tiptap/starter-kit": "^2.1.7",
39 | "@tiptap/suggestion": "^2.1.7",
40 | "@tiptap/vue-3": "^2.1.7",
41 | "@vercel/blob": "^0.9.3",
42 | "@vueuse/core": "^10.4.1",
43 | "ai": "^2.2.11",
44 | "lucide-vue-next": "^0.274.0",
45 | "sonner": "npm:vue-sonner@1.0.2",
46 | "tailwindcss-animate": "^1.0.7",
47 | "tippy.js": "^6.3.7",
48 | "tiptap-markdown": "^0.8.2",
49 | "vue": "^3.3.4"
50 | },
51 | "devDependencies": {
52 | "@tailwindcss/typography": "^0.5.9",
53 | "@tiptap/core": "^2.1.12",
54 | "@vitejs/plugin-vue": "^4.2.3",
55 | "autoprefixer": "^10.4.15",
56 | "postcss": "^8.4.29",
57 | "tailwindcss": "^3.3.3",
58 | "typescript": "^5.0.2",
59 | "vite": "^4.4.5",
60 | "vite-plugin-dts": "^3.5.3",
61 | "vue-tsc": "^1.8.5"
62 | }
63 | }
64 |
--------------------------------------------------------------------------------
/package/src/components/BubbleMenu/LinkSelector.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
51 |
52 |
53 |
54 |
79 |
80 |
81 |
--------------------------------------------------------------------------------
/package/src/components/BubbleMenu/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
9 |
24 |
25 |
26 |
27 |
28 |
29 |
85 |
86 |
87 |
--------------------------------------------------------------------------------
/package/src/styles/Prosemirror.css:
--------------------------------------------------------------------------------
1 | .ProseMirror .is-editor-empty:first-child::before {
2 | content: attr(data-placeholder);
3 | float: left;
4 | color: var(--novel-stone-400);
5 | pointer-events: none;
6 | height: 0;
7 | }
8 | .ProseMirror .is-empty::before {
9 | content: attr(data-placeholder);
10 | float: left;
11 | color: var(--novel-stone-400);
12 | pointer-events: none;
13 | height: 0;
14 | }
15 |
16 | /* Custom image styles */
17 |
18 | .ProseMirror img {
19 | transition: filter 0.1s ease-in-out;
20 |
21 | &:hover {
22 | cursor: pointer;
23 | filter: brightness(90%);
24 | }
25 |
26 | &.ProseMirror-selectednode {
27 | outline: 3px solid #5abbf7;
28 | filter: brightness(90%);
29 | }
30 | }
31 |
32 | .img-placeholder {
33 | position: relative;
34 |
35 | &:before {
36 | content: "";
37 | box-sizing: border-box;
38 | position: absolute;
39 | top: 50%;
40 | left: 50%;
41 | width: 36px;
42 | height: 36px;
43 | border-radius: 50%;
44 | border: 3px solid var(--novel-stone-200);
45 | border-top-color: var(--novel-stone-800);
46 | animation: spinning 0.6s linear infinite;
47 | }
48 | }
49 |
50 | @keyframes spinning {
51 | to {
52 | transform: rotate(360deg);
53 | }
54 | }
55 |
56 | /* Custom TODO list checkboxes – shoutout to this awesome tutorial: https://moderncss.dev/pure-css-custom-checkbox-style/ */
57 |
58 | ul[data-type="taskList"] li > label {
59 | margin-right: 0.2rem;
60 | user-select: none;
61 | }
62 |
63 | @media screen and (max-width: 768px) {
64 | ul[data-type="taskList"] li > label {
65 | margin-right: 0.5rem;
66 | }
67 | }
68 |
69 | ul[data-type="taskList"] li > label input[type="checkbox"] {
70 | -webkit-appearance: none;
71 | appearance: none;
72 | background-color: var(--novel-white);
73 | margin: 0;
74 | cursor: pointer;
75 | width: 1.2em;
76 | height: 1.2em;
77 | position: relative;
78 | top: 5px;
79 | border: 2px solid var(--novel-stone-900);
80 | margin-right: 0.3rem;
81 | display: grid;
82 | place-content: center;
83 |
84 | &:hover {
85 | background-color: var(--novel-stone-50);
86 | }
87 |
88 | &:active {
89 | background-color: var(--novel-stone-200);
90 | }
91 |
92 | &::before {
93 | content: "";
94 | width: 0.65em;
95 | height: 0.65em;
96 | transform: scale(0);
97 | transition: 120ms transform ease-in-out;
98 | box-shadow: inset 1em 1em;
99 | transform-origin: center;
100 | clip-path: polygon(14% 44%, 0 65%, 50% 100%, 100% 16%, 80% 0%, 43% 62%);
101 | }
102 |
103 | &:checked::before {
104 | transform: scale(1);
105 | }
106 | }
107 |
108 | ul[data-type="taskList"] li[data-checked="true"] > div > p {
109 | color: var(--novel-stone-400);
110 | text-decoration: line-through;
111 | text-decoration-thickness: 2px;
112 | }
113 |
--------------------------------------------------------------------------------
/package/README.md:
--------------------------------------------------------------------------------
1 | # Novel Vue
2 |
3 | Novel Vue is port of [Novel](https://github.com/steven-tey/novel)
4 |
5 | ## Introduction
6 |
7 | [Novel](https://novel.sh/) is a Notion-style WYSIWYG editor with AI-powered autocompletions.
8 |
9 | ## Installation
10 |
11 | To use Novel Vue in a project, you can run the following command to install the `novel-vue` [NPM package](https://www.npmjs.com/package/novel-vue):
12 |
13 | ```
14 | npm i novel-vue
15 | ```
16 |
17 | Then, you can use it in your code like this:
18 |
19 | ```vue
20 |
21 |
22 |
23 |
24 |
28 | ```
29 |
30 | | Prop | Type | Description | Default |
31 | | ----------------- | ----------- | ---------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
32 | | completionApi | String | The API route to use for the OpenAI completion API. | "/api/generate" |
33 | | className | String | Additional classes to add to the editor container. | "relative min-h-500px] w-full mx-auto max-w-screen-lg border-stone-200 bg-white p-12 px-8 sm:mb-[calc(20vh)] sm:rounded-lg sm:border sm:px-12 sm:shadow-lg" |
34 | | defaultValue | JSONContent | The default value to use for the editor. | defaultEditorContent |
35 | | extensions | Extension[] | A list of extensions to use for the editor, in addition to the default Novel extensions. | [] |
36 | | editorProps | EditorProps | Props to pass to the underlying Tiptap editor, in addition to the default Novel editor props. | {} |
37 | | onUpdate | Function | A callback function that is called whenever the editor is updated. | () => {} |
38 | | onDebouncedUpdate | Function | A callback function that is called whenever the editor is updated, but only after the defined debounce duration. | () => {} |
39 | | debounceDuration | Number | The duration (in milliseconds) to debounce the onDebouncedUpdate callback. | 750 |
40 | | storageKey | String | The key to use for storing the editor's value in local storage. | "novel\_\_content" |
41 |
42 | > **Note**: Make sure to define an API endpoint that matches the `completionApi` prop (default is `/api/generate`). This is needed for the AI autocompletions to work. Here's an example: https://github.com/naveennaidu/novel-vue/blob/main/nuxt-server/server/api/generate.ts
43 |
--------------------------------------------------------------------------------
/package/src/components/extensions/index.ts:
--------------------------------------------------------------------------------
1 | import StarterKit from "@tiptap/starter-kit";
2 | import HorizontalRule from "@tiptap/extension-horizontal-rule";
3 | import TiptapLink from "@tiptap/extension-link";
4 | import TiptapImage from "@tiptap/extension-image";
5 | import Placeholder from "@tiptap/extension-placeholder";
6 | import TiptapUnderline from "@tiptap/extension-underline";
7 | import TextStyle from "@tiptap/extension-text-style";
8 | import { Color } from "@tiptap/extension-color";
9 | import TaskItem from "@tiptap/extension-task-item";
10 | import TaskList from "@tiptap/extension-task-list";
11 | import { Markdown } from "tiptap-markdown";
12 | import Highlight from "@tiptap/extension-highlight";
13 | import { InputRule } from "@tiptap/core";
14 | import SlashCommand from "./slashExtension";
15 | import UploadImagesPlugin from "../plugins/upload-images";
16 | import UpdatedImage from "./updated-image";
17 |
18 | export const defaultExtensions = [
19 | StarterKit.configure({
20 | bulletList: {
21 | HTMLAttributes: {
22 | class: "list-disc list-outside leading-3 -mt-2",
23 | },
24 | },
25 | orderedList: {
26 | HTMLAttributes: {
27 | class: "list-decimal list-outside leading-3 -mt-2",
28 | },
29 | },
30 | listItem: {
31 | HTMLAttributes: {
32 | class: "leading-normal -mb-2",
33 | },
34 | },
35 | blockquote: {
36 | HTMLAttributes: {
37 | class: "border-l-4 border-stone-700",
38 | },
39 | },
40 | codeBlock: {
41 | HTMLAttributes: {
42 | class:
43 | "rounded-sm bg-stone-100 p-5 font-mono font-medium text-stone-800",
44 | },
45 | },
46 | code: {
47 | HTMLAttributes: {
48 | class:
49 | "rounded-md bg-stone-200 px-1.5 py-1 font-mono font-medium text-stone-900",
50 | spellcheck: "false",
51 | },
52 | },
53 | horizontalRule: false,
54 | dropcursor: {
55 | color: "#DBEAFE",
56 | width: 4,
57 | },
58 | gapcursor: false,
59 | }),
60 | // patch to fix horizontal rule bug: https://github.com/ueberdosis/tiptap/pull/3859#issuecomment-1536799740
61 | HorizontalRule.extend({
62 | addInputRules() {
63 | return [
64 | new InputRule({
65 | find: /^(?:---|—-|___\s|\*\*\*\s)$/,
66 | handler: ({ state, range }) => {
67 | const attributes = {};
68 |
69 | const { tr } = state;
70 | const start = range.from;
71 | let end = range.to;
72 |
73 | tr.insert(start - 1, this.type.create(attributes)).delete(
74 | tr.mapping.map(start),
75 | tr.mapping.map(end)
76 | );
77 | },
78 | }),
79 | ];
80 | },
81 | }).configure({
82 | HTMLAttributes: {
83 | class: "mt-4 mb-6 border-t border-stone-300",
84 | },
85 | }),
86 | TiptapLink.configure({
87 | HTMLAttributes: {
88 | class:
89 | "text-stone-400 underline underline-offset-[3px] hover:text-stone-600 transition-colors cursor-pointer",
90 | },
91 | }),
92 | TiptapImage.extend({
93 | addProseMirrorPlugins() {
94 | return [UploadImagesPlugin()];
95 | },
96 | }).configure({
97 | allowBase64: true,
98 | HTMLAttributes: {
99 | class: "rounded-lg border border-stone-200",
100 | },
101 | }),
102 | UpdatedImage.configure({
103 | HTMLAttributes: {
104 | class: "rounded-lg border border-stone-200",
105 | },
106 | }),
107 | Placeholder.configure({
108 | placeholder: ({ node }) => {
109 | if (node.type.name === "heading") {
110 | return `Heading ${node.attrs.level}`;
111 | }
112 | return "Press '/' for commands, or '++' for AI autocomplete...";
113 | },
114 | includeChildren: true,
115 | }),
116 | TiptapUnderline,
117 | TextStyle,
118 | Color,
119 | Highlight.configure({
120 | multicolor: true,
121 | }),
122 | TaskList.configure({
123 | HTMLAttributes: {
124 | class: "not-prose pl-2",
125 | },
126 | }),
127 | TaskItem.configure({
128 | HTMLAttributes: {
129 | class: "flex items-start my-4",
130 | },
131 | nested: true,
132 | }),
133 | Markdown.configure({
134 | html: false,
135 | transformCopiedText: true,
136 | }),
137 | SlashCommand,
138 | ];
139 |
--------------------------------------------------------------------------------
/package/src/components/BubbleMenu/NodeSelector.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 | {{ activeItem?.name }}
8 |
9 |
10 |
11 |
16 |
36 |
37 |
38 |
39 |
40 |
41 |
142 |
143 |
144 |
--------------------------------------------------------------------------------
/package/src/components/extensions/slashCommandList.vue:
--------------------------------------------------------------------------------
1 |
2 |
7 |
25 |
26 |
27 |
28 |
153 |
--------------------------------------------------------------------------------
/package/src/components/plugins/upload-images.ts:
--------------------------------------------------------------------------------
1 | import { BlobResult } from "@vercel/blob";
2 | import { useStorage } from "@vueuse/core";
3 | import { toast } from "sonner";
4 | import { EditorState, Plugin, PluginKey } from "@tiptap/pm/state";
5 | import { Decoration, DecorationSet, EditorView } from "@tiptap/pm/view";
6 |
7 | const uploadKey = new PluginKey("upload-image");
8 |
9 | const UploadImagesPlugin = () =>
10 | new Plugin({
11 | key: uploadKey,
12 | state: {
13 | init() {
14 | return DecorationSet.empty;
15 | },
16 | apply(tr, set) {
17 | set = set.map(tr.mapping, tr.doc);
18 | // See if the transaction adds or removes any placeholders
19 | const action = tr.getMeta(this as any);
20 | if (action && action.add) {
21 | const { id, pos, src } = action.add;
22 |
23 | const placeholder = document.createElement("div");
24 | placeholder.setAttribute("class", "img-placeholder");
25 | const image = document.createElement("img");
26 | image.setAttribute(
27 | "class",
28 | "opacity-40 rounded-lg border border-stone-200"
29 | );
30 | image.src = src;
31 | placeholder.appendChild(image);
32 | const deco = Decoration.widget(pos + 1, placeholder, {
33 | id,
34 | });
35 | set = set.add(tr.doc, [deco]);
36 | } else if (action && action.remove) {
37 | set = set.remove(
38 | set.find(undefined, undefined, (spec) => spec.id == action.remove.id)
39 | );
40 | }
41 | return set;
42 | },
43 | },
44 | props: {
45 | decorations(state) {
46 | return this.getState(state);
47 | },
48 | },
49 | });
50 |
51 | export default UploadImagesPlugin;
52 |
53 | function findPlaceholder(state: EditorState, id: {}) {
54 | const decos = uploadKey.getState(state);
55 | const found = decos.find(null, null, (spec: any) => spec.id == id);
56 | return found.length ? found[0].from : null;
57 | }
58 |
59 | export function startImageUpload(file: File, view: EditorView, pos: number) {
60 | // check if the file is an image
61 | if (!file.type.includes("image/")) {
62 | toast.error("File type not supported.");
63 | return;
64 |
65 | // check if the file size is less than 20MB
66 | } else if (file.size / 1024 / 1024 > 20) {
67 | toast.error("File size too big (max 20MB).");
68 | return;
69 | }
70 |
71 | // A fresh object to act as the ID for this upload
72 | const id = {};
73 |
74 | // Replace the selection with a placeholder
75 | const tr = view.state.tr;
76 | if (!tr.selection.empty) tr.deleteSelection();
77 |
78 | const reader = new FileReader();
79 | reader.readAsDataURL(file);
80 | reader.onload = () => {
81 | tr.setMeta(uploadKey, {
82 | add: {
83 | id,
84 | pos,
85 | src: reader.result,
86 | },
87 | });
88 | view.dispatch(tr);
89 | };
90 |
91 | handleImageUpload(file).then((src) => {
92 | const { schema } = view.state;
93 |
94 | let pos = findPlaceholder(view.state, id);
95 | // If the content around the placeholder has been deleted, drop
96 | // the image
97 | if (pos == null) return;
98 |
99 | // Otherwise, insert it at the placeholder's position, and remove
100 | // the placeholder
101 |
102 | // When BLOB_READ_WRITE_TOKEN is not valid or unavailable, read
103 | // the image locally
104 | const imageSrc = typeof src === "object" ? reader.result : src;
105 |
106 | const node = schema.nodes.image.create({ src: imageSrc });
107 | const transaction = view.state.tr
108 | .replaceWith(pos, pos, node)
109 | .setMeta(uploadKey, { remove: { id } });
110 | view.dispatch(transaction);
111 | });
112 | }
113 |
114 | export const handleImageUpload = (file: File) => {
115 | // upload to Vercel Blob
116 | return new Promise((resolve) => {
117 | toast.promise(
118 | fetch(useStorage('blobApi', '/api/upload').value, {
119 | method: "POST",
120 | headers: {
121 | "content-type": file?.type || "application/octet-stream",
122 | "x-vercel-filename": encodeURIComponent(file?.name || "image.png"),
123 | },
124 | body: file,
125 | }).then(async (res) => {
126 | // Successfully uploaded image
127 | if (res.status === 200) {
128 | const { url } = (await res.json()) as BlobResult;
129 | // preload the image
130 | let image = new Image();
131 | image.src = url;
132 | image.onload = () => {
133 | resolve(url);
134 | };
135 | // No blob store configured
136 | } else if (res.status === 401) {
137 | resolve(file);
138 |
139 | throw new Error(
140 | "`BLOB_READ_WRITE_TOKEN` environment variable not found, reading image locally instead."
141 | );
142 | // Unknown error
143 | } else {
144 | throw new Error(`Error uploading image. Please try again.`);
145 | }
146 | }),
147 | {
148 | loading: "Uploading image...",
149 | success: () => "Image uploaded successfully.",
150 | error: () => "Image uploaded failed.",
151 | }
152 | );
153 | });
154 | };
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Novel Vue
2 |
3 | Novel Vue is port of [Novel](https://github.com/steven-tey/novel)
4 |
5 | ## Introduction
6 |
7 | [Novel](https://novel.sh/) is a Notion-style WYSIWYG editor with AI-powered autocompletions.
8 |
9 | ## Installation
10 |
11 | To use Novel Vue in a project, you can run the following command to install the `novel-vue` [NPM package](https://www.npmjs.com/package/novel-vue):
12 |
13 | ```
14 | npm i novel-vue
15 | ```
16 |
17 | Then, you can use it in your code like this:
18 |
19 | ```vue
20 |
21 |
22 |
23 |
24 |
28 | ```
29 |
30 | | Prop | Type | Description | Default |
31 | | ----------------- | ----------- | ---------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
32 | | blobApi | String | The API route to use for the Vercel Blob API. | "/api/upload" |
33 | | completionApi | String | The API route to use for the OpenAI completion API. | "/api/generate" |
34 | | className | String | Additional classes to add to the editor container. | "relative min-h-500px] w-full mx-auto max-w-screen-lg border-stone-200 bg-white p-12 px-8 sm:mb-[calc(20vh)] sm:rounded-lg sm:border sm:px-12 sm:shadow-lg" |
35 | | defaultValue | JSONContent | The default value to use for the editor. | defaultEditorContent |
36 | | extensions | Extension[] | A list of extensions to use for the editor, in addition to the default Novel extensions. | [] |
37 | | editorProps | EditorProps | Props to pass to the underlying Tiptap editor, in addition to the default Novel editor props. | {} |
38 | | onUpdate | Function | A callback function that is called whenever the editor is updated. | () => {} |
39 | | onDebouncedUpdate | Function | A callback function that is called whenever the editor is updated, but only after the defined debounce duration. | () => {} |
40 | | debounceDuration | Number | The duration (in milliseconds) to debounce the onDebouncedUpdate callback. | 750 |
41 | | storageKey | String | The key to use for storing the editor's value in local storage. | "novel\_\_content" |
42 |
43 | > **Note**: Make sure to define an API endpoint that matches the `completionApi` prop (default is `/api/generate`). This is needed for the AI autocompletions to work. Here's an example: https://github.com/naveennaidu/novel-vue/blob/main/nuxt-server/server/api/generate.ts
44 |
45 | You can get the editor instance of tiptap by using the `editor` ref.
46 |
47 | For example, to set the content of the editor manually, you can do something like this:
48 |
49 | ```vue
50 |
51 |
52 |
53 |
54 |
55 |
81 | ```
82 |
83 | ## Projects using Novel Vue
84 |
85 | [Novuel](https://github.com/naveennaidu/novuel): Open Source AI Writing App built with [Nuxt 3](https://nuxt.com/) and [Nuxt UI](https://ui.nuxt.com/)
86 |
--------------------------------------------------------------------------------
/package/src/components/BubbleMenu/ColorSelector.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
14 | A
15 |
16 |
17 |
18 |
19 |
20 |
25 | Color
26 |
58 | Background
59 |
88 |
89 |
90 |
91 |
92 |
93 |
193 |
194 |
195 |
--------------------------------------------------------------------------------
/package/src/components/Editor.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
231 |
232 |
233 |
--------------------------------------------------------------------------------
/package/src/lib/default-content.ts:
--------------------------------------------------------------------------------
1 | export const defaultEditorContent = {
2 | type: "doc",
3 | content: [
4 | {
5 | type: "heading",
6 | attrs: { level: 2 },
7 | content: [{ type: "text", text: "Introducing Novel" }],
8 | },
9 | {
10 | type: "paragraph",
11 | content: [
12 | {
13 | type: "text",
14 | marks: [
15 | {
16 | type: "link",
17 | attrs: {
18 | href: "https://github.com/steven-tey/novel",
19 | target: "_blank",
20 | class:
21 | "text-stone-400 underline underline-offset-[3px] hover:text-stone-600 transition-colors cursor-pointer",
22 | },
23 | },
24 | ],
25 | text: "Novel",
26 | },
27 | {
28 | type: "text",
29 | text: " is a Notion-style WYSIWYG editor with AI-powered autocompletion. Built with ",
30 | },
31 | {
32 | type: "text",
33 | marks: [
34 | {
35 | type: "link",
36 | attrs: {
37 | href: "https://tiptap.dev/",
38 | target: "_blank",
39 | class:
40 | "text-stone-400 underline underline-offset-[3px] hover:text-stone-600 transition-colors cursor-pointer",
41 | },
42 | },
43 | ],
44 | text: "Tiptap",
45 | },
46 | { type: "text", text: " + " },
47 | {
48 | type: "text",
49 | marks: [
50 | {
51 | type: "link",
52 | attrs: {
53 | href: "https://sdk.vercel.ai/docs",
54 | target: "_blank",
55 | class:
56 | "text-stone-400 underline underline-offset-[3px] hover:text-stone-600 transition-colors cursor-pointer text-stone-400 underline underline-offset-[3px] hover:text-stone-600 transition-colors cursor-pointer",
57 | },
58 | },
59 | ],
60 | text: "Vercel AI SDK",
61 | },
62 | { type: "text", text: "." },
63 | ],
64 | },
65 | {
66 | type: "heading",
67 | attrs: { level: 3 },
68 | content: [{ type: "text", text: "Installation" }],
69 | },
70 | {
71 | type: "codeBlock",
72 | attrs: { language: null },
73 | content: [{ type: "text", text: "npm i novel" }],
74 | },
75 | {
76 | type: "heading",
77 | attrs: { level: 3 },
78 | content: [{ type: "text", text: "Usage" }],
79 | },
80 | {
81 | type: "codeBlock",
82 | attrs: { language: null },
83 | content: [
84 | {
85 | type: "text",
86 | text: 'import { Editor } from "novel";\n\nexport default function App() {\n return (\n \n )\n}',
87 | },
88 | ],
89 | },
90 | {
91 | type: "heading",
92 | attrs: { level: 3 },
93 | content: [{ type: "text", text: "Features" }],
94 | },
95 | {
96 | type: "orderedList",
97 | attrs: { tight: true, start: 1 },
98 | content: [
99 | {
100 | type: "listItem",
101 | content: [
102 | {
103 | type: "paragraph",
104 | content: [{ type: "text", text: "Slash menu & bubble menu" }],
105 | },
106 | ],
107 | },
108 | {
109 | type: "listItem",
110 | content: [
111 | {
112 | type: "paragraph",
113 | content: [
114 | { type: "text", text: "AI autocomplete (type " },
115 | { type: "text", marks: [{ type: "code" }], text: "++" },
116 | {
117 | type: "text",
118 | text: " to activate, or select from slash menu)",
119 | },
120 | ],
121 | },
122 | ],
123 | },
124 | {
125 | type: "listItem",
126 | content: [
127 | {
128 | type: "paragraph",
129 | content: [
130 | {
131 | type: "text",
132 | text: "Image uploads (drag & drop / copy & paste, or select from slash menu) ",
133 | },
134 | ],
135 | },
136 | ],
137 | },
138 | ],
139 | },
140 | // {
141 | // type: "image",
142 | // attrs: {
143 | // src: "https://public.blob.vercel-storage.com/pJrjXbdONOnAeZAZ/banner-2wQk82qTwyVgvlhTW21GIkWgqPGD2C.png",
144 | // alt: "banner.png",
145 | // title: "banner.png",
146 | // width: null,
147 | // height: null,
148 | // },
149 | // },
150 | { type: "horizontalRule" },
151 | {
152 | type: "heading",
153 | attrs: { level: 3 },
154 | content: [{ type: "text", text: "Learn more" }],
155 | },
156 | {
157 | type: "taskList",
158 | content: [
159 | {
160 | type: "taskItem",
161 | attrs: { checked: false },
162 | content: [
163 | {
164 | type: "paragraph",
165 | content: [
166 | { type: "text", text: "Star us on " },
167 | {
168 | type: "text",
169 | marks: [
170 | {
171 | type: "link",
172 | attrs: {
173 | href: "https://github.com/steven-tey/novel",
174 | target: "_blank",
175 | class:
176 | "text-stone-400 underline underline-offset-[3px] hover:text-stone-600 transition-colors cursor-pointer",
177 | },
178 | },
179 | ],
180 | text: "GitHub",
181 | },
182 | ],
183 | },
184 | ],
185 | },
186 | {
187 | type: "taskItem",
188 | attrs: { checked: false },
189 | content: [
190 | {
191 | type: "paragraph",
192 | content: [
193 | { type: "text", text: "Install the " },
194 | {
195 | type: "text",
196 | marks: [
197 | {
198 | type: "link",
199 | attrs: {
200 | href: "https://www.npmjs.com/package/novel",
201 | target: "_blank",
202 | class:
203 | "text-stone-400 underline underline-offset-[3px] hover:text-stone-600 transition-colors cursor-pointer",
204 | },
205 | },
206 | ],
207 | text: "NPM package",
208 | },
209 | ],
210 | },
211 | ],
212 | },
213 | {
214 | type: "taskItem",
215 | attrs: { checked: false },
216 | content: [
217 | {
218 | type: "paragraph",
219 | content: [
220 | {
221 | type: "text",
222 | marks: [
223 | {
224 | type: "link",
225 | attrs: {
226 | href: "https://vercel.com/templates/next.js/novel",
227 | target: "_blank",
228 | class:
229 | "text-stone-400 underline underline-offset-[3px] hover:text-stone-600 transition-colors cursor-pointer",
230 | },
231 | },
232 | ],
233 | text: "Deploy your own",
234 | },
235 | { type: "text", text: " to Vercel" },
236 | ],
237 | },
238 | ],
239 | },
240 | ],
241 | },
242 | ],
243 | };
244 |
--------------------------------------------------------------------------------
/package/src/components/extensions/slashExtension.ts:
--------------------------------------------------------------------------------
1 | import { Editor, Range, Extension } from "@tiptap/core";
2 | import { VueRenderer } from "@tiptap/vue-3";
3 | import tippy from "tippy.js";
4 | import Suggestion from "@tiptap/suggestion";
5 | import {
6 | Heading1,
7 | Heading2,
8 | Heading3,
9 | List,
10 | ListOrdered,
11 | MessageSquarePlus,
12 | Text,
13 | TextQuote,
14 | Code,
15 | CheckSquare,
16 | Sparkles,
17 | Image,
18 | } from "lucide-vue-next";
19 | import SlashCommandList from "./slashCommandList.vue";
20 | import { startImageUpload } from "../plugins/upload-images";
21 | // import Magic from "../icons/magic.vue";
22 |
23 | const Command = Extension.create({
24 | name: "slash-command",
25 | addOptions() {
26 | return {
27 | suggestion: {
28 | char: "/",
29 | command: ({
30 | editor,
31 | range,
32 | props,
33 | }: {
34 | editor: Editor;
35 | range: Range;
36 | props: any;
37 | }) => {
38 | props.command({ editor, range });
39 | },
40 | },
41 | };
42 | },
43 | addProseMirrorPlugins() {
44 | return [
45 | Suggestion({
46 | editor: this.editor,
47 | ...this.options.suggestion,
48 | }),
49 | ];
50 | },
51 | });
52 |
53 | interface CommandProps {
54 | editor: Editor;
55 | range: Range;
56 | }
57 |
58 | export interface SuggestionItem {
59 | title: string;
60 | description: string;
61 | icon: any;
62 | }
63 |
64 | const getSuggestionItems = ({ query }: { query: string }) => {
65 | return [
66 | {
67 | title: "Continue writing",
68 | description: "Use AI to expand your thoughts.",
69 | searchTerms: ["gpt"],
70 | icon: Sparkles,
71 | },
72 | {
73 | title: "Send Feedback",
74 | description: "Let us know how we can improve.",
75 | icon: MessageSquarePlus,
76 | command: ({ editor, range }: CommandProps) => {
77 | editor.chain().focus().deleteRange(range).run();
78 | window.open("/feedback", "_blank");
79 | },
80 | },
81 | {
82 | title: "Text",
83 | description: "Just start typing with plain text.",
84 | searchTerms: ["p", "paragraph"],
85 | icon: Text,
86 | command: ({ editor, range }: CommandProps) => {
87 | editor
88 | .chain()
89 | .focus()
90 | .deleteRange(range)
91 | .toggleNode("paragraph", "paragraph")
92 | .run();
93 | },
94 | },
95 | {
96 | title: "To-do List",
97 | description: "Track tasks with a to-do list.",
98 | searchTerms: ["todo", "task", "list", "check", "checkbox"],
99 | icon: CheckSquare,
100 | command: ({ editor, range }: CommandProps) => {
101 | editor.chain().focus().deleteRange(range).toggleTaskList().run();
102 | },
103 | },
104 | {
105 | title: "Heading 1",
106 | description: "Big section heading.",
107 | searchTerms: ["title", "big", "large"],
108 | icon: Heading1,
109 | command: ({ editor, range }: CommandProps) => {
110 | editor
111 | .chain()
112 | .focus()
113 | .deleteRange(range)
114 | .setNode("heading", { level: 1 })
115 | .run();
116 | },
117 | },
118 | {
119 | title: "Heading 2",
120 | description: "Medium section heading.",
121 | searchTerms: ["subtitle", "medium"],
122 | icon: Heading2,
123 | command: ({ editor, range }: CommandProps) => {
124 | editor
125 | .chain()
126 | .focus()
127 | .deleteRange(range)
128 | .setNode("heading", { level: 2 })
129 | .run();
130 | },
131 | },
132 | {
133 | title: "Heading 3",
134 | description: "Small section heading.",
135 | searchTerms: ["subtitle", "small"],
136 | icon: Heading3,
137 | command: ({ editor, range }: CommandProps) => {
138 | editor
139 | .chain()
140 | .focus()
141 | .deleteRange(range)
142 | .setNode("heading", { level: 3 })
143 | .run();
144 | },
145 | },
146 | {
147 | title: "Bullet List",
148 | description: "Create a simple bullet list.",
149 | searchTerms: ["unordered", "point"],
150 | icon: List,
151 | command: ({ editor, range }: CommandProps) => {
152 | editor.chain().focus().deleteRange(range).toggleBulletList().run();
153 | },
154 | },
155 | {
156 | title: "Numbered List",
157 | description: "Create a list with numbering.",
158 | searchTerms: ["ordered"],
159 | icon: ListOrdered,
160 | command: ({ editor, range }: CommandProps) => {
161 | editor.chain().focus().deleteRange(range).toggleOrderedList().run();
162 | },
163 | },
164 | {
165 | title: "Quote",
166 | description: "Capture a quote.",
167 | searchTerms: ["blockquote"],
168 | icon: TextQuote,
169 | command: ({ editor, range }: CommandProps) =>
170 | editor
171 | .chain()
172 | .focus()
173 | .deleteRange(range)
174 | .toggleNode("paragraph", "paragraph")
175 | .toggleBlockquote()
176 | .run(),
177 | },
178 | {
179 | title: "Code",
180 | description: "Capture a code snippet.",
181 | searchTerms: ["codeblock"],
182 | icon: Code,
183 | command: ({ editor, range }: CommandProps) =>
184 | editor.chain().focus().deleteRange(range).toggleCodeBlock().run(),
185 | },
186 | {
187 | title: "Image",
188 | description: "Upload an image from your computer.",
189 | searchTerms: ["photo", "picture", "media"],
190 | icon: Image,
191 | command: ({ editor, range }: CommandProps) => {
192 | editor.chain().focus().deleteRange(range).run();
193 | // upload image
194 | const input = document.createElement("input");
195 | input.type = "file";
196 | input.accept = "image/*";
197 | input.onchange = async () => {
198 | if (input.files?.length) {
199 | const file = input.files[0];
200 | const pos = editor.view.state.selection.from;
201 | startImageUpload(file, editor.view, pos);
202 | }
203 | };
204 | input.click();
205 | },
206 | },
207 | ].filter((item) => {
208 | if (typeof query === "string" && query.length > 0) {
209 | const search = query.toLowerCase();
210 | return (
211 | item.title.toLowerCase().includes(search) ||
212 | item.description.toLowerCase().includes(search) ||
213 | (item.searchTerms &&
214 | item.searchTerms.some((term: string) => term.includes(search)))
215 | );
216 | }
217 | return true;
218 | });
219 | };
220 |
221 | const renderItems = () => {
222 | let component: VueRenderer | null = null;
223 | let popup: any | null = null;
224 |
225 | return {
226 | onStart: (props: { editor: Editor; clientRect: DOMRect }) => {
227 | component = new VueRenderer(SlashCommandList, {
228 | props,
229 | editor: props.editor,
230 | });
231 |
232 | if (!props.clientRect) {
233 | return;
234 | }
235 |
236 | // @ts-ignore
237 | popup = tippy("body", {
238 | getReferenceClientRect: props.clientRect,
239 | appendTo: () => document.body,
240 | content: component.element,
241 | showOnCreate: true,
242 | interactive: true,
243 | trigger: "manual",
244 | placement: "bottom-start",
245 | });
246 | },
247 | onUpdate: (props: { editor: Editor; clientRect: DOMRect }) => {
248 | component?.updateProps(props);
249 |
250 | popup &&
251 | popup[0].setProps({
252 | getReferenceClientRect: props.clientRect,
253 | });
254 | },
255 | onKeyDown: (props: { event: KeyboardEvent }) => {
256 | if (props.event.key === "Escape") {
257 | popup?.[0].hide();
258 |
259 | return true;
260 | }
261 |
262 | return component?.ref?.onKeyDown(props.event);
263 | },
264 | onExit: () => {
265 | popup?.[0].destroy();
266 | component?.destroy();
267 | },
268 | };
269 | };
270 |
271 | const SlashCommand = Command.configure({
272 | suggestion: {
273 | items: getSuggestionItems,
274 | render: renderItems,
275 | },
276 | });
277 |
278 | export default SlashCommand;
279 |
--------------------------------------------------------------------------------
/package/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: '6.0'
2 |
3 | settings:
4 | autoInstallPeers: true
5 | excludeLinksFromLockfile: false
6 |
7 | dependencies:
8 | '@headlessui/vue':
9 | specifier: ^1.7.16
10 | version: 1.7.16(vue@3.3.4)
11 | '@tiptap/extension-color':
12 | specifier: ^2.1.7
13 | version: 2.1.7(@tiptap/core@2.1.12)(@tiptap/extension-text-style@2.1.7)
14 | '@tiptap/extension-highlight':
15 | specifier: ^2.1.7
16 | version: 2.1.7(@tiptap/core@2.1.12)
17 | '@tiptap/extension-horizontal-rule':
18 | specifier: ^2.1.7
19 | version: 2.1.7(@tiptap/core@2.1.12)(@tiptap/pm@2.1.7)
20 | '@tiptap/extension-image':
21 | specifier: ^2.1.7
22 | version: 2.1.7(@tiptap/core@2.1.12)
23 | '@tiptap/extension-link':
24 | specifier: ^2.1.7
25 | version: 2.1.7(@tiptap/core@2.1.12)(@tiptap/pm@2.1.7)
26 | '@tiptap/extension-placeholder':
27 | specifier: ^2.1.7
28 | version: 2.1.7(@tiptap/core@2.1.12)(@tiptap/pm@2.1.7)
29 | '@tiptap/extension-task-item':
30 | specifier: ^2.1.7
31 | version: 2.1.7(@tiptap/core@2.1.12)(@tiptap/pm@2.1.7)
32 | '@tiptap/extension-task-list':
33 | specifier: ^2.1.7
34 | version: 2.1.7(@tiptap/core@2.1.12)
35 | '@tiptap/extension-text-style':
36 | specifier: ^2.1.7
37 | version: 2.1.7(@tiptap/core@2.1.12)
38 | '@tiptap/extension-underline':
39 | specifier: ^2.1.7
40 | version: 2.1.7(@tiptap/core@2.1.12)
41 | '@tiptap/pm':
42 | specifier: ^2.1.7
43 | version: 2.1.7
44 | '@tiptap/starter-kit':
45 | specifier: ^2.1.7
46 | version: 2.1.7(@tiptap/pm@2.1.7)
47 | '@tiptap/suggestion':
48 | specifier: ^2.1.7
49 | version: 2.1.7(@tiptap/core@2.1.12)(@tiptap/pm@2.1.7)
50 | '@tiptap/vue-3':
51 | specifier: ^2.1.7
52 | version: 2.1.7(@tiptap/core@2.1.12)(@tiptap/pm@2.1.7)(vue@3.3.4)
53 | '@vercel/blob':
54 | specifier: ^0.15.1
55 | version: 0.15.1
56 | '@vueuse/core':
57 | specifier: ^10.4.1
58 | version: 10.4.1(vue@3.3.4)
59 | ai:
60 | specifier: ^2.2.11
61 | version: 2.2.11(react@18.2.0)(solid-js@1.8.5)(svelte@4.2.3)(vue@3.3.4)
62 | lucide-vue-next:
63 | specifier: ^0.274.0
64 | version: 0.274.0(vue@3.3.4)
65 | sonner:
66 | specifier: ^1.2.0
67 | version: 1.2.0(react-dom@18.2.0)(react@18.2.0)
68 | tailwindcss-animate:
69 | specifier: ^1.0.7
70 | version: 1.0.7(tailwindcss@3.3.3)
71 | tippy.js:
72 | specifier: ^6.3.7
73 | version: 6.3.7
74 | tiptap-markdown:
75 | specifier: ^0.8.2
76 | version: 0.8.2(@tiptap/core@2.1.12)
77 | vue:
78 | specifier: ^3.3.4
79 | version: 3.3.4
80 |
81 | devDependencies:
82 | '@tailwindcss/typography':
83 | specifier: ^0.5.9
84 | version: 0.5.9(tailwindcss@3.3.3)
85 | '@tiptap/core':
86 | specifier: ^2.1.12
87 | version: 2.1.12(@tiptap/pm@2.1.7)
88 | '@vitejs/plugin-vue':
89 | specifier: ^4.2.3
90 | version: 4.2.3(vite@4.4.5)(vue@3.3.4)
91 | autoprefixer:
92 | specifier: ^10.4.15
93 | version: 10.4.15(postcss@8.4.29)
94 | postcss:
95 | specifier: ^8.4.29
96 | version: 8.4.29
97 | tailwindcss:
98 | specifier: ^3.3.3
99 | version: 3.3.3
100 | typescript:
101 | specifier: ^5.0.2
102 | version: 5.0.2
103 | vite:
104 | specifier: ^4.4.5
105 | version: 4.4.5
106 | vite-plugin-dts:
107 | specifier: ^3.5.3
108 | version: 3.5.3(typescript@5.0.2)(vite@4.4.5)
109 | vue-tsc:
110 | specifier: ^1.8.5
111 | version: 1.8.5(typescript@5.0.2)
112 |
113 | packages:
114 |
115 | /@alloc/quick-lru@5.2.0:
116 | resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==}
117 | engines: {node: '>=10'}
118 |
119 | /@ampproject/remapping@2.2.1:
120 | resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==}
121 | engines: {node: '>=6.0.0'}
122 | dependencies:
123 | '@jridgewell/gen-mapping': 0.3.3
124 | '@jridgewell/trace-mapping': 0.3.20
125 | dev: false
126 |
127 | /@babel/code-frame@7.22.13:
128 | resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==}
129 | engines: {node: '>=6.9.0'}
130 | dependencies:
131 | '@babel/highlight': 7.22.20
132 | chalk: 2.4.2
133 | dev: false
134 |
135 | /@babel/helper-string-parser@7.22.5:
136 | resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==}
137 | engines: {node: '>=6.9.0'}
138 |
139 | /@babel/helper-validator-identifier@7.22.20:
140 | resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==}
141 | engines: {node: '>=6.9.0'}
142 |
143 | /@babel/highlight@7.22.20:
144 | resolution: {integrity: sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==}
145 | engines: {node: '>=6.9.0'}
146 | dependencies:
147 | '@babel/helper-validator-identifier': 7.22.20
148 | chalk: 2.4.2
149 | js-tokens: 4.0.0
150 | dev: false
151 |
152 | /@babel/parser@7.23.3:
153 | resolution: {integrity: sha512-uVsWNvlVsIninV2prNz/3lHCb+5CJ+e+IUBfbjToAHODtfGYLfCFuY4AU7TskI+dAKk+njsPiBjq1gKTvZOBaw==}
154 | engines: {node: '>=6.0.0'}
155 | hasBin: true
156 | dependencies:
157 | '@babel/types': 7.23.3
158 |
159 | /@babel/types@7.23.3:
160 | resolution: {integrity: sha512-OZnvoH2l8PK5eUvEcUyCt/sXgr/h+UWpVuBbOljwcrAgUl6lpchoQ++PHGyQy1AtYnVA6CEq3y5xeEI10brpXw==}
161 | engines: {node: '>=6.9.0'}
162 | dependencies:
163 | '@babel/helper-string-parser': 7.22.5
164 | '@babel/helper-validator-identifier': 7.22.20
165 | to-fast-properties: 2.0.0
166 |
167 | /@esbuild/android-arm64@0.18.20:
168 | resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==}
169 | engines: {node: '>=12'}
170 | cpu: [arm64]
171 | os: [android]
172 | requiresBuild: true
173 | dev: true
174 | optional: true
175 |
176 | /@esbuild/android-arm@0.18.20:
177 | resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==}
178 | engines: {node: '>=12'}
179 | cpu: [arm]
180 | os: [android]
181 | requiresBuild: true
182 | dev: true
183 | optional: true
184 |
185 | /@esbuild/android-x64@0.18.20:
186 | resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==}
187 | engines: {node: '>=12'}
188 | cpu: [x64]
189 | os: [android]
190 | requiresBuild: true
191 | dev: true
192 | optional: true
193 |
194 | /@esbuild/darwin-arm64@0.18.20:
195 | resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==}
196 | engines: {node: '>=12'}
197 | cpu: [arm64]
198 | os: [darwin]
199 | requiresBuild: true
200 | dev: true
201 | optional: true
202 |
203 | /@esbuild/darwin-x64@0.18.20:
204 | resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==}
205 | engines: {node: '>=12'}
206 | cpu: [x64]
207 | os: [darwin]
208 | requiresBuild: true
209 | dev: true
210 | optional: true
211 |
212 | /@esbuild/freebsd-arm64@0.18.20:
213 | resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==}
214 | engines: {node: '>=12'}
215 | cpu: [arm64]
216 | os: [freebsd]
217 | requiresBuild: true
218 | dev: true
219 | optional: true
220 |
221 | /@esbuild/freebsd-x64@0.18.20:
222 | resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==}
223 | engines: {node: '>=12'}
224 | cpu: [x64]
225 | os: [freebsd]
226 | requiresBuild: true
227 | dev: true
228 | optional: true
229 |
230 | /@esbuild/linux-arm64@0.18.20:
231 | resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==}
232 | engines: {node: '>=12'}
233 | cpu: [arm64]
234 | os: [linux]
235 | requiresBuild: true
236 | dev: true
237 | optional: true
238 |
239 | /@esbuild/linux-arm@0.18.20:
240 | resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==}
241 | engines: {node: '>=12'}
242 | cpu: [arm]
243 | os: [linux]
244 | requiresBuild: true
245 | dev: true
246 | optional: true
247 |
248 | /@esbuild/linux-ia32@0.18.20:
249 | resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==}
250 | engines: {node: '>=12'}
251 | cpu: [ia32]
252 | os: [linux]
253 | requiresBuild: true
254 | dev: true
255 | optional: true
256 |
257 | /@esbuild/linux-loong64@0.18.20:
258 | resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==}
259 | engines: {node: '>=12'}
260 | cpu: [loong64]
261 | os: [linux]
262 | requiresBuild: true
263 | dev: true
264 | optional: true
265 |
266 | /@esbuild/linux-mips64el@0.18.20:
267 | resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==}
268 | engines: {node: '>=12'}
269 | cpu: [mips64el]
270 | os: [linux]
271 | requiresBuild: true
272 | dev: true
273 | optional: true
274 |
275 | /@esbuild/linux-ppc64@0.18.20:
276 | resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==}
277 | engines: {node: '>=12'}
278 | cpu: [ppc64]
279 | os: [linux]
280 | requiresBuild: true
281 | dev: true
282 | optional: true
283 |
284 | /@esbuild/linux-riscv64@0.18.20:
285 | resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==}
286 | engines: {node: '>=12'}
287 | cpu: [riscv64]
288 | os: [linux]
289 | requiresBuild: true
290 | dev: true
291 | optional: true
292 |
293 | /@esbuild/linux-s390x@0.18.20:
294 | resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==}
295 | engines: {node: '>=12'}
296 | cpu: [s390x]
297 | os: [linux]
298 | requiresBuild: true
299 | dev: true
300 | optional: true
301 |
302 | /@esbuild/linux-x64@0.18.20:
303 | resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==}
304 | engines: {node: '>=12'}
305 | cpu: [x64]
306 | os: [linux]
307 | requiresBuild: true
308 | dev: true
309 | optional: true
310 |
311 | /@esbuild/netbsd-x64@0.18.20:
312 | resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==}
313 | engines: {node: '>=12'}
314 | cpu: [x64]
315 | os: [netbsd]
316 | requiresBuild: true
317 | dev: true
318 | optional: true
319 |
320 | /@esbuild/openbsd-x64@0.18.20:
321 | resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==}
322 | engines: {node: '>=12'}
323 | cpu: [x64]
324 | os: [openbsd]
325 | requiresBuild: true
326 | dev: true
327 | optional: true
328 |
329 | /@esbuild/sunos-x64@0.18.20:
330 | resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==}
331 | engines: {node: '>=12'}
332 | cpu: [x64]
333 | os: [sunos]
334 | requiresBuild: true
335 | dev: true
336 | optional: true
337 |
338 | /@esbuild/win32-arm64@0.18.20:
339 | resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==}
340 | engines: {node: '>=12'}
341 | cpu: [arm64]
342 | os: [win32]
343 | requiresBuild: true
344 | dev: true
345 | optional: true
346 |
347 | /@esbuild/win32-ia32@0.18.20:
348 | resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==}
349 | engines: {node: '>=12'}
350 | cpu: [ia32]
351 | os: [win32]
352 | requiresBuild: true
353 | dev: true
354 | optional: true
355 |
356 | /@esbuild/win32-x64@0.18.20:
357 | resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==}
358 | engines: {node: '>=12'}
359 | cpu: [x64]
360 | os: [win32]
361 | requiresBuild: true
362 | dev: true
363 | optional: true
364 |
365 | /@fastify/busboy@2.1.0:
366 | resolution: {integrity: sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==}
367 | engines: {node: '>=14'}
368 | dev: false
369 |
370 | /@headlessui/vue@1.7.16(vue@3.3.4):
371 | resolution: {integrity: sha512-nKT+nf/q6x198SsyK54mSszaQl/z+QxtASmgMEJtpxSX2Q0OPJX0upS/9daDyiECpeAsvjkoOrm2O/6PyBQ+Qg==}
372 | engines: {node: '>=10'}
373 | peerDependencies:
374 | vue: ^3.2.0
375 | dependencies:
376 | vue: 3.3.4
377 | dev: false
378 |
379 | /@jest/environment@29.7.0:
380 | resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==}
381 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
382 | dependencies:
383 | '@jest/fake-timers': 29.7.0
384 | '@jest/types': 29.6.3
385 | '@types/node': 20.9.0
386 | jest-mock: 29.7.0
387 | dev: false
388 |
389 | /@jest/fake-timers@29.7.0:
390 | resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==}
391 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
392 | dependencies:
393 | '@jest/types': 29.6.3
394 | '@sinonjs/fake-timers': 10.3.0
395 | '@types/node': 20.9.0
396 | jest-message-util: 29.7.0
397 | jest-mock: 29.7.0
398 | jest-util: 29.7.0
399 | dev: false
400 |
401 | /@jest/schemas@29.6.3:
402 | resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==}
403 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
404 | dependencies:
405 | '@sinclair/typebox': 0.27.8
406 | dev: false
407 |
408 | /@jest/types@29.6.3:
409 | resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==}
410 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
411 | dependencies:
412 | '@jest/schemas': 29.6.3
413 | '@types/istanbul-lib-coverage': 2.0.6
414 | '@types/istanbul-reports': 3.0.4
415 | '@types/node': 20.9.0
416 | '@types/yargs': 17.0.31
417 | chalk: 4.1.2
418 | dev: false
419 |
420 | /@jridgewell/gen-mapping@0.3.3:
421 | resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==}
422 | engines: {node: '>=6.0.0'}
423 | dependencies:
424 | '@jridgewell/set-array': 1.1.2
425 | '@jridgewell/sourcemap-codec': 1.4.15
426 | '@jridgewell/trace-mapping': 0.3.20
427 |
428 | /@jridgewell/resolve-uri@3.1.1:
429 | resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==}
430 | engines: {node: '>=6.0.0'}
431 |
432 | /@jridgewell/set-array@1.1.2:
433 | resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==}
434 | engines: {node: '>=6.0.0'}
435 |
436 | /@jridgewell/sourcemap-codec@1.4.15:
437 | resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==}
438 |
439 | /@jridgewell/trace-mapping@0.3.20:
440 | resolution: {integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==}
441 | dependencies:
442 | '@jridgewell/resolve-uri': 3.1.1
443 | '@jridgewell/sourcemap-codec': 1.4.15
444 |
445 | /@microsoft/api-extractor-model@7.28.2:
446 | resolution: {integrity: sha512-vkojrM2fo3q4n4oPh4uUZdjJ2DxQ2+RnDQL/xhTWSRUNPF6P4QyrvY357HBxbnltKcYu+nNNolVqc6TIGQ73Ig==}
447 | dependencies:
448 | '@microsoft/tsdoc': 0.14.2
449 | '@microsoft/tsdoc-config': 0.16.2
450 | '@rushstack/node-core-library': 3.61.0
451 | transitivePeerDependencies:
452 | - '@types/node'
453 | dev: true
454 |
455 | /@microsoft/api-extractor@7.38.3:
456 | resolution: {integrity: sha512-xt9iYyC5f39281j77JTA9C3ISJpW1XWkCcnw+2vM78CPnro6KhPfwQdPDfwS5JCPNuq0grm8cMdPUOPvrchDWw==}
457 | hasBin: true
458 | dependencies:
459 | '@microsoft/api-extractor-model': 7.28.2
460 | '@microsoft/tsdoc': 0.14.2
461 | '@microsoft/tsdoc-config': 0.16.2
462 | '@rushstack/node-core-library': 3.61.0
463 | '@rushstack/rig-package': 0.5.1
464 | '@rushstack/ts-command-line': 4.17.1
465 | colors: 1.2.5
466 | lodash: 4.17.21
467 | resolve: 1.22.8
468 | semver: 7.5.4
469 | source-map: 0.6.1
470 | typescript: 5.0.4
471 | transitivePeerDependencies:
472 | - '@types/node'
473 | dev: true
474 |
475 | /@microsoft/tsdoc-config@0.16.2:
476 | resolution: {integrity: sha512-OGiIzzoBLgWWR0UdRJX98oYO+XKGf7tiK4Zk6tQ/E4IJqGCe7dvkTvgDZV5cFJUzLGDOjeAXrnZoA6QkVySuxw==}
477 | dependencies:
478 | '@microsoft/tsdoc': 0.14.2
479 | ajv: 6.12.6
480 | jju: 1.4.0
481 | resolve: 1.19.0
482 | dev: true
483 |
484 | /@microsoft/tsdoc@0.14.2:
485 | resolution: {integrity: sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==}
486 | dev: true
487 |
488 | /@nodelib/fs.scandir@2.1.5:
489 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
490 | engines: {node: '>= 8'}
491 | dependencies:
492 | '@nodelib/fs.stat': 2.0.5
493 | run-parallel: 1.2.0
494 |
495 | /@nodelib/fs.stat@2.0.5:
496 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
497 | engines: {node: '>= 8'}
498 |
499 | /@nodelib/fs.walk@1.2.8:
500 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
501 | engines: {node: '>= 8'}
502 | dependencies:
503 | '@nodelib/fs.scandir': 2.1.5
504 | fastq: 1.15.0
505 |
506 | /@popperjs/core@2.11.8:
507 | resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==}
508 | dev: false
509 |
510 | /@remirror/core-constants@2.0.2:
511 | resolution: {integrity: sha512-dyHY+sMF0ihPus3O27ODd4+agdHMEmuRdyiZJ2CCWjPV5UFmn17ZbElvk6WOGVE4rdCJKZQCrPV2BcikOMLUGQ==}
512 |
513 | /@remirror/core-helpers@3.0.0:
514 | resolution: {integrity: sha512-tusEgQJIqg4qKj6HSBUFcyRnWnziw3neh4T9wOmsPGHFC3w9kl5KSrDb9UAgE8uX6y32FnS7vJ955mWOl3n50A==}
515 | dependencies:
516 | '@remirror/core-constants': 2.0.2
517 | '@remirror/types': 1.0.1
518 | '@types/object.omit': 3.0.3
519 | '@types/object.pick': 1.3.4
520 | '@types/throttle-debounce': 2.1.0
521 | case-anything: 2.1.13
522 | dash-get: 1.0.2
523 | deepmerge: 4.3.1
524 | fast-deep-equal: 3.1.3
525 | make-error: 1.3.6
526 | object.omit: 3.0.0
527 | object.pick: 1.3.0
528 | throttle-debounce: 3.0.1
529 |
530 | /@remirror/types@1.0.1:
531 | resolution: {integrity: sha512-VlZQxwGnt1jtQ18D6JqdIF+uFZo525WEqrfp9BOc3COPpK4+AWCgdnAWL+ho6imWcoINlGjR/+3b6y5C1vBVEA==}
532 | dependencies:
533 | type-fest: 2.19.0
534 |
535 | /@rollup/pluginutils@5.0.5:
536 | resolution: {integrity: sha512-6aEYR910NyP73oHiJglti74iRyOwgFU4x3meH/H8OJx6Ry0j6cOVZ5X/wTvub7G7Ao6qaHBEaNsV3GLJkSsF+Q==}
537 | engines: {node: '>=14.0.0'}
538 | peerDependencies:
539 | rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0
540 | peerDependenciesMeta:
541 | rollup:
542 | optional: true
543 | dependencies:
544 | '@types/estree': 1.0.5
545 | estree-walker: 2.0.2
546 | picomatch: 2.3.1
547 | dev: true
548 |
549 | /@rushstack/node-core-library@3.61.0:
550 | resolution: {integrity: sha512-tdOjdErme+/YOu4gPed3sFS72GhtWCgNV9oDsHDnoLY5oDfwjKUc9Z+JOZZ37uAxcm/OCahDHfuu2ugqrfWAVQ==}
551 | peerDependencies:
552 | '@types/node': '*'
553 | peerDependenciesMeta:
554 | '@types/node':
555 | optional: true
556 | dependencies:
557 | colors: 1.2.5
558 | fs-extra: 7.0.1
559 | import-lazy: 4.0.0
560 | jju: 1.4.0
561 | resolve: 1.22.8
562 | semver: 7.5.4
563 | z-schema: 5.0.5
564 | dev: true
565 |
566 | /@rushstack/rig-package@0.5.1:
567 | resolution: {integrity: sha512-pXRYSe29TjRw7rqxD4WS3HN/sRSbfr+tJs4a9uuaSIBAITbUggygdhuG0VrO0EO+QqH91GhYMN4S6KRtOEmGVA==}
568 | dependencies:
569 | resolve: 1.22.8
570 | strip-json-comments: 3.1.1
571 | dev: true
572 |
573 | /@rushstack/ts-command-line@4.17.1:
574 | resolution: {integrity: sha512-2jweO1O57BYP5qdBGl6apJLB+aRIn5ccIRTPDyULh0KMwVzFqWtw6IZWt1qtUoZD/pD2RNkIOosH6Cq45rIYeg==}
575 | dependencies:
576 | '@types/argparse': 1.0.38
577 | argparse: 1.0.10
578 | colors: 1.2.5
579 | string-argv: 0.3.2
580 | dev: true
581 |
582 | /@sinclair/typebox@0.27.8:
583 | resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==}
584 | dev: false
585 |
586 | /@sinonjs/commons@3.0.0:
587 | resolution: {integrity: sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==}
588 | dependencies:
589 | type-detect: 4.0.8
590 | dev: false
591 |
592 | /@sinonjs/fake-timers@10.3.0:
593 | resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==}
594 | dependencies:
595 | '@sinonjs/commons': 3.0.0
596 | dev: false
597 |
598 | /@tailwindcss/typography@0.5.9(tailwindcss@3.3.3):
599 | resolution: {integrity: sha512-t8Sg3DyynFysV9f4JDOVISGsjazNb48AeIYQwcL+Bsq5uf4RYL75C1giZ43KISjeDGBaTN3Kxh7Xj/vRSMJUUg==}
600 | peerDependencies:
601 | tailwindcss: '>=3.0.0 || insiders'
602 | dependencies:
603 | lodash.castarray: 4.4.0
604 | lodash.isplainobject: 4.0.6
605 | lodash.merge: 4.6.2
606 | postcss-selector-parser: 6.0.10
607 | tailwindcss: 3.3.3
608 | dev: true
609 |
610 | /@tiptap/core@2.1.12(@tiptap/pm@2.1.7):
611 | resolution: {integrity: sha512-ZGc3xrBJA9KY8kln5AYTj8y+GDrKxi7u95xIl2eccrqTY5CQeRu6HRNM1yT4mAjuSaG9jmazyjGRlQuhyxCKxQ==}
612 | peerDependencies:
613 | '@tiptap/pm': ^2.0.0
614 | dependencies:
615 | '@tiptap/pm': 2.1.7
616 |
617 | /@tiptap/extension-blockquote@2.1.12(@tiptap/core@2.1.12):
618 | resolution: {integrity: sha512-Qb3YRlCfugx9pw7VgLTb+jY37OY4aBJeZnqHzx4QThSm13edNYjasokbX0nTwL1Up4NPTcY19JUeHt6fVaVVGg==}
619 | peerDependencies:
620 | '@tiptap/core': ^2.0.0
621 | dependencies:
622 | '@tiptap/core': 2.1.12(@tiptap/pm@2.1.7)
623 | dev: false
624 |
625 | /@tiptap/extension-bold@2.1.12(@tiptap/core@2.1.12):
626 | resolution: {integrity: sha512-AZGxIxcGU1/y6V2YEbKsq6BAibL8yQrbRm6EdcBnby41vj1WziewEKswhLGmZx5IKM2r2ldxld03KlfSIlKQZg==}
627 | peerDependencies:
628 | '@tiptap/core': ^2.0.0
629 | dependencies:
630 | '@tiptap/core': 2.1.12(@tiptap/pm@2.1.7)
631 | dev: false
632 |
633 | /@tiptap/extension-bubble-menu@2.1.12(@tiptap/core@2.1.12)(@tiptap/pm@2.1.7):
634 | resolution: {integrity: sha512-gAGi21EQ4wvLmT7klgariAc2Hf+cIjaNU2NWze3ut6Ku9gUo5ZLqj1t9SKHmNf4d5JG63O8GxpErqpA7lHlRtw==}
635 | peerDependencies:
636 | '@tiptap/core': ^2.0.0
637 | '@tiptap/pm': ^2.0.0
638 | dependencies:
639 | '@tiptap/core': 2.1.12(@tiptap/pm@2.1.7)
640 | '@tiptap/pm': 2.1.7
641 | tippy.js: 6.3.7
642 | dev: false
643 |
644 | /@tiptap/extension-bullet-list@2.1.12(@tiptap/core@2.1.12):
645 | resolution: {integrity: sha512-vtD8vWtNlmAZX8LYqt2yU9w3mU9rPCiHmbp4hDXJs2kBnI0Ju/qAyXFx6iJ3C3XyuMnMbJdDI9ee0spAvFz7cQ==}
646 | peerDependencies:
647 | '@tiptap/core': ^2.0.0
648 | dependencies:
649 | '@tiptap/core': 2.1.12(@tiptap/pm@2.1.7)
650 | dev: false
651 |
652 | /@tiptap/extension-code-block@2.1.12(@tiptap/core@2.1.12)(@tiptap/pm@2.1.7):
653 | resolution: {integrity: sha512-RXtSYCVsnk8D+K80uNZShClfZjvv1EgO42JlXLVGWQdIgaNyuOv/6I/Jdf+ZzhnpsBnHufW+6TJjwP5vJPSPHA==}
654 | peerDependencies:
655 | '@tiptap/core': ^2.0.0
656 | '@tiptap/pm': ^2.0.0
657 | dependencies:
658 | '@tiptap/core': 2.1.12(@tiptap/pm@2.1.7)
659 | '@tiptap/pm': 2.1.7
660 | dev: false
661 |
662 | /@tiptap/extension-code@2.1.12(@tiptap/core@2.1.12):
663 | resolution: {integrity: sha512-CRiRq5OTC1lFgSx6IMrECqmtb93a0ZZKujEnaRhzWliPBjLIi66va05f/P1vnV6/tHaC3yfXys6dxB5A4J8jxw==}
664 | peerDependencies:
665 | '@tiptap/core': ^2.0.0
666 | dependencies:
667 | '@tiptap/core': 2.1.12(@tiptap/pm@2.1.7)
668 | dev: false
669 |
670 | /@tiptap/extension-color@2.1.7(@tiptap/core@2.1.12)(@tiptap/extension-text-style@2.1.7):
671 | resolution: {integrity: sha512-NLspH5taSpZP60rXJjDKu8AP9VDd+dlqz4guxvijtuPEePw87Fzidxx9w6X0uYQfx1O0xdPFq3UodlDz591scA==}
672 | peerDependencies:
673 | '@tiptap/core': ^2.0.0
674 | '@tiptap/extension-text-style': ^2.0.0
675 | dependencies:
676 | '@tiptap/core': 2.1.12(@tiptap/pm@2.1.7)
677 | '@tiptap/extension-text-style': 2.1.7(@tiptap/core@2.1.12)
678 | dev: false
679 |
680 | /@tiptap/extension-document@2.1.12(@tiptap/core@2.1.12):
681 | resolution: {integrity: sha512-0QNfAkCcFlB9O8cUNSwTSIQMV9TmoEhfEaLz/GvbjwEq4skXK3bU+OQX7Ih07waCDVXIGAZ7YAZogbvrn/WbOw==}
682 | peerDependencies:
683 | '@tiptap/core': ^2.0.0
684 | dependencies:
685 | '@tiptap/core': 2.1.12(@tiptap/pm@2.1.7)
686 | dev: false
687 |
688 | /@tiptap/extension-dropcursor@2.1.12(@tiptap/core@2.1.12)(@tiptap/pm@2.1.7):
689 | resolution: {integrity: sha512-0tT/q8nL4NBCYPxr9T0Brck+RQbWuczm9nV0bnxgt0IiQXoRHutfPWdS7GA65PTuVRBS/3LOco30fbjFhkfz/A==}
690 | peerDependencies:
691 | '@tiptap/core': ^2.0.0
692 | '@tiptap/pm': ^2.0.0
693 | dependencies:
694 | '@tiptap/core': 2.1.12(@tiptap/pm@2.1.7)
695 | '@tiptap/pm': 2.1.7
696 | dev: false
697 |
698 | /@tiptap/extension-floating-menu@2.1.12(@tiptap/core@2.1.12)(@tiptap/pm@2.1.7):
699 | resolution: {integrity: sha512-uo0ydCJNg6AWwLT6cMUJYVChfvw2PY9ZfvKRhh9YJlGfM02jS4RUG/bJBts6R37f+a5FsOvAVwg8EvqPlNND1A==}
700 | peerDependencies:
701 | '@tiptap/core': ^2.0.0
702 | '@tiptap/pm': ^2.0.0
703 | dependencies:
704 | '@tiptap/core': 2.1.12(@tiptap/pm@2.1.7)
705 | '@tiptap/pm': 2.1.7
706 | tippy.js: 6.3.7
707 | dev: false
708 |
709 | /@tiptap/extension-gapcursor@2.1.12(@tiptap/core@2.1.12)(@tiptap/pm@2.1.7):
710 | resolution: {integrity: sha512-zFYdZCqPgpwoB7whyuwpc8EYLYjUE5QYKb8vICvc+FraBUDM51ujYhFSgJC3rhs8EjI+8GcK8ShLbSMIn49YOQ==}
711 | peerDependencies:
712 | '@tiptap/core': ^2.0.0
713 | '@tiptap/pm': ^2.0.0
714 | dependencies:
715 | '@tiptap/core': 2.1.12(@tiptap/pm@2.1.7)
716 | '@tiptap/pm': 2.1.7
717 | dev: false
718 |
719 | /@tiptap/extension-hard-break@2.1.12(@tiptap/core@2.1.12):
720 | resolution: {integrity: sha512-nqKcAYGEOafg9D+2cy1E4gHNGuL12LerVa0eS2SQOb+PT8vSel9OTKU1RyZldsWSQJ5rq/w4uIjmLnrSR2w6Yw==}
721 | peerDependencies:
722 | '@tiptap/core': ^2.0.0
723 | dependencies:
724 | '@tiptap/core': 2.1.12(@tiptap/pm@2.1.7)
725 | dev: false
726 |
727 | /@tiptap/extension-heading@2.1.12(@tiptap/core@2.1.12):
728 | resolution: {integrity: sha512-MoANP3POAP68Ko9YXarfDKLM/kXtscgp6m+xRagPAghRNujVY88nK1qBMZ3JdvTVN6b/ATJhp8UdrZX96TLV2w==}
729 | peerDependencies:
730 | '@tiptap/core': ^2.0.0
731 | dependencies:
732 | '@tiptap/core': 2.1.12(@tiptap/pm@2.1.7)
733 | dev: false
734 |
735 | /@tiptap/extension-highlight@2.1.7(@tiptap/core@2.1.12):
736 | resolution: {integrity: sha512-3EXrnf1BQSdOe/iqzcTIr5Tf0NOhPQ+y1B9nMi/40v3MD8WzRBLaqj0lvpwO7xMAdgxm6IiL/XFYU41n9yFl/Q==}
737 | peerDependencies:
738 | '@tiptap/core': ^2.0.0
739 | dependencies:
740 | '@tiptap/core': 2.1.12(@tiptap/pm@2.1.7)
741 | dev: false
742 |
743 | /@tiptap/extension-history@2.1.12(@tiptap/core@2.1.12)(@tiptap/pm@2.1.7):
744 | resolution: {integrity: sha512-6b7UFVkvPjq3LVoCTrYZAczt5sQrQUaoDWAieVClVZoFLfjga2Fwjcfgcie8IjdPt8YO2hG/sar/c07i9vM0Sg==}
745 | peerDependencies:
746 | '@tiptap/core': ^2.0.0
747 | '@tiptap/pm': ^2.0.0
748 | dependencies:
749 | '@tiptap/core': 2.1.12(@tiptap/pm@2.1.7)
750 | '@tiptap/pm': 2.1.7
751 | dev: false
752 |
753 | /@tiptap/extension-horizontal-rule@2.1.7(@tiptap/core@2.1.12)(@tiptap/pm@2.1.7):
754 | resolution: {integrity: sha512-hJupsDxDVmjmKI/Ewl/gtiyUx52Y3wRUhT8dCXNOA5eldmPXN23E2Fa2BC8XB47dyc5pubyNcLuqaLeaZ5hedw==}
755 | peerDependencies:
756 | '@tiptap/core': ^2.0.0
757 | '@tiptap/pm': ^2.0.0
758 | dependencies:
759 | '@tiptap/core': 2.1.12(@tiptap/pm@2.1.7)
760 | '@tiptap/pm': 2.1.7
761 | dev: false
762 |
763 | /@tiptap/extension-image@2.1.7(@tiptap/core@2.1.12):
764 | resolution: {integrity: sha512-aWa/NPMc1U9Z6xuV0gk1O1nk4H7BAwQMwqXWdvUQCJhmW5+LJPdEiKvt3P6j+ClIN7sdyokZCgr6eGr817qTLA==}
765 | peerDependencies:
766 | '@tiptap/core': ^2.0.0
767 | dependencies:
768 | '@tiptap/core': 2.1.12(@tiptap/pm@2.1.7)
769 | dev: false
770 |
771 | /@tiptap/extension-italic@2.1.12(@tiptap/core@2.1.12):
772 | resolution: {integrity: sha512-/XYrW4ZEWyqDvnXVKbgTXItpJOp2ycswk+fJ3vuexyolO6NSs0UuYC6X4f+FbHYL5VuWqVBv7EavGa+tB6sl3A==}
773 | peerDependencies:
774 | '@tiptap/core': ^2.0.0
775 | dependencies:
776 | '@tiptap/core': 2.1.12(@tiptap/pm@2.1.7)
777 | dev: false
778 |
779 | /@tiptap/extension-link@2.1.7(@tiptap/core@2.1.12)(@tiptap/pm@2.1.7):
780 | resolution: {integrity: sha512-NDfoMCkThng1B530pMg5y69+eWoghZXK2uCntrJH7Rs8jNeGMyt9wGIOd7N8ZYz0oJ2ZYKzZjS0RANdBDS17DA==}
781 | peerDependencies:
782 | '@tiptap/core': ^2.0.0
783 | '@tiptap/pm': ^2.0.0
784 | dependencies:
785 | '@tiptap/core': 2.1.12(@tiptap/pm@2.1.7)
786 | '@tiptap/pm': 2.1.7
787 | linkifyjs: 4.1.2
788 | dev: false
789 |
790 | /@tiptap/extension-list-item@2.1.12(@tiptap/core@2.1.12):
791 | resolution: {integrity: sha512-Gk7hBFofAPmNQ8+uw8w5QSsZOMEGf7KQXJnx5B022YAUJTYYxO3jYVuzp34Drk9p+zNNIcXD4kc7ff5+nFOTrg==}
792 | peerDependencies:
793 | '@tiptap/core': ^2.0.0
794 | dependencies:
795 | '@tiptap/core': 2.1.12(@tiptap/pm@2.1.7)
796 | dev: false
797 |
798 | /@tiptap/extension-ordered-list@2.1.12(@tiptap/core@2.1.12):
799 | resolution: {integrity: sha512-tF6VGl+D2avCgn9U/2YLJ8qVmV6sPE/iEzVAFZuOSe6L0Pj7SQw4K6AO640QBob/d8VrqqJFHCb6l10amJOnXA==}
800 | peerDependencies:
801 | '@tiptap/core': ^2.0.0
802 | dependencies:
803 | '@tiptap/core': 2.1.12(@tiptap/pm@2.1.7)
804 | dev: false
805 |
806 | /@tiptap/extension-paragraph@2.1.12(@tiptap/core@2.1.12):
807 | resolution: {integrity: sha512-hoH/uWPX+KKnNAZagudlsrr4Xu57nusGekkJWBcrb5MCDE91BS+DN2xifuhwXiTHxnwOMVFjluc0bPzQbkArsw==}
808 | peerDependencies:
809 | '@tiptap/core': ^2.0.0
810 | dependencies:
811 | '@tiptap/core': 2.1.12(@tiptap/pm@2.1.7)
812 | dev: false
813 |
814 | /@tiptap/extension-placeholder@2.1.7(@tiptap/core@2.1.12)(@tiptap/pm@2.1.7):
815 | resolution: {integrity: sha512-IiBoItYYNS7hb/zmPitw3w6Cylmp9qX+zW+QKe3lDkCNPeKxyQr86AnVLcQYOuXg62cLV9dp+4azZzHoz9SOcg==}
816 | peerDependencies:
817 | '@tiptap/core': ^2.0.0
818 | '@tiptap/pm': ^2.0.0
819 | dependencies:
820 | '@tiptap/core': 2.1.12(@tiptap/pm@2.1.7)
821 | '@tiptap/pm': 2.1.7
822 | dev: false
823 |
824 | /@tiptap/extension-strike@2.1.12(@tiptap/core@2.1.12):
825 | resolution: {integrity: sha512-HlhrzIjYUT8oCH9nYzEL2QTTn8d1ECnVhKvzAe6x41xk31PjLMHTUy8aYjeQEkWZOWZ34tiTmslV1ce6R3Dt8g==}
826 | peerDependencies:
827 | '@tiptap/core': ^2.0.0
828 | dependencies:
829 | '@tiptap/core': 2.1.12(@tiptap/pm@2.1.7)
830 | dev: false
831 |
832 | /@tiptap/extension-task-item@2.1.7(@tiptap/core@2.1.12)(@tiptap/pm@2.1.7):
833 | resolution: {integrity: sha512-4wFLZmhYqr87SEI/Qgk3FiH+qfp6IOmuYVhpL5zGLa6p+ytUdmPH3+zOaD1rthn5JiRU9KwYWFvTo2f+/O0NAg==}
834 | peerDependencies:
835 | '@tiptap/core': ^2.0.0
836 | '@tiptap/pm': ^2.0.0
837 | dependencies:
838 | '@tiptap/core': 2.1.12(@tiptap/pm@2.1.7)
839 | '@tiptap/pm': 2.1.7
840 | dev: false
841 |
842 | /@tiptap/extension-task-list@2.1.7(@tiptap/core@2.1.12):
843 | resolution: {integrity: sha512-eerV8pbGuYoFji6arWk+LBsIfURXPWNSLi1ZCuPfXP6N8sAV3fNT+VDm6RlGQwadQNae7rnibNClk67+55h9Zg==}
844 | peerDependencies:
845 | '@tiptap/core': ^2.0.0
846 | dependencies:
847 | '@tiptap/core': 2.1.12(@tiptap/pm@2.1.7)
848 | dev: false
849 |
850 | /@tiptap/extension-text-style@2.1.7(@tiptap/core@2.1.12):
851 | resolution: {integrity: sha512-0QhEMDiDqMpyBGRt6o4GvbN9cUibZe4LT9e0ujarT6ElSe2fbtwGPnXSXApUtgHDDwHw95M5ZVxX/H5cjyjw1g==}
852 | peerDependencies:
853 | '@tiptap/core': ^2.0.0
854 | dependencies:
855 | '@tiptap/core': 2.1.12(@tiptap/pm@2.1.7)
856 | dev: false
857 |
858 | /@tiptap/extension-text@2.1.12(@tiptap/core@2.1.12):
859 | resolution: {integrity: sha512-rCNUd505p/PXwU9Jgxo4ZJv4A3cIBAyAqlx/dtcY6cjztCQuXJhuQILPhjGhBTOLEEL4kW2wQtqzCmb7O8i2jg==}
860 | peerDependencies:
861 | '@tiptap/core': ^2.0.0
862 | dependencies:
863 | '@tiptap/core': 2.1.12(@tiptap/pm@2.1.7)
864 | dev: false
865 |
866 | /@tiptap/extension-underline@2.1.7(@tiptap/core@2.1.12):
867 | resolution: {integrity: sha512-mL95afyEJvg+C2yrTVn7QltfyE9ja1+94+OUkRBbB8PN3N6HvfSL4K/QSqecOLQ38bSQm/6ZGPkBLDkDGhGPdw==}
868 | peerDependencies:
869 | '@tiptap/core': ^2.0.0
870 | dependencies:
871 | '@tiptap/core': 2.1.12(@tiptap/pm@2.1.7)
872 | dev: false
873 |
874 | /@tiptap/pm@2.1.7:
875 | resolution: {integrity: sha512-RBVb/k9OjmClwdVl7fpekFgUsLAm1U+5I4w1qA2tj7L/hSPOuPzaEHwCqDYe0b2PR5dd8h0nylS9qXuXVlfwfQ==}
876 | dependencies:
877 | prosemirror-changeset: 2.2.1
878 | prosemirror-collab: 1.3.1
879 | prosemirror-commands: 1.5.2
880 | prosemirror-dropcursor: 1.8.1
881 | prosemirror-gapcursor: 1.3.2
882 | prosemirror-history: 1.3.2
883 | prosemirror-inputrules: 1.2.1
884 | prosemirror-keymap: 1.2.2
885 | prosemirror-markdown: 1.11.2
886 | prosemirror-menu: 1.2.4
887 | prosemirror-model: 1.19.3
888 | prosemirror-schema-basic: 1.2.2
889 | prosemirror-schema-list: 1.3.0
890 | prosemirror-state: 1.4.3
891 | prosemirror-tables: 1.3.4
892 | prosemirror-trailing-node: 2.0.7(prosemirror-model@1.19.3)(prosemirror-state@1.4.3)(prosemirror-view@1.32.4)
893 | prosemirror-transform: 1.8.0
894 | prosemirror-view: 1.32.4
895 |
896 | /@tiptap/starter-kit@2.1.7(@tiptap/pm@2.1.7):
897 | resolution: {integrity: sha512-z2cmJRSC7ImaTGWrHv+xws9y1wIG0OCPosBYpmpwlEfA3JG3axWFmVRJlWnsQV4eSMi3QY3vaPgBAnrR4IxRhQ==}
898 | dependencies:
899 | '@tiptap/core': 2.1.12(@tiptap/pm@2.1.7)
900 | '@tiptap/extension-blockquote': 2.1.12(@tiptap/core@2.1.12)
901 | '@tiptap/extension-bold': 2.1.12(@tiptap/core@2.1.12)
902 | '@tiptap/extension-bullet-list': 2.1.12(@tiptap/core@2.1.12)
903 | '@tiptap/extension-code': 2.1.12(@tiptap/core@2.1.12)
904 | '@tiptap/extension-code-block': 2.1.12(@tiptap/core@2.1.12)(@tiptap/pm@2.1.7)
905 | '@tiptap/extension-document': 2.1.12(@tiptap/core@2.1.12)
906 | '@tiptap/extension-dropcursor': 2.1.12(@tiptap/core@2.1.12)(@tiptap/pm@2.1.7)
907 | '@tiptap/extension-gapcursor': 2.1.12(@tiptap/core@2.1.12)(@tiptap/pm@2.1.7)
908 | '@tiptap/extension-hard-break': 2.1.12(@tiptap/core@2.1.12)
909 | '@tiptap/extension-heading': 2.1.12(@tiptap/core@2.1.12)
910 | '@tiptap/extension-history': 2.1.12(@tiptap/core@2.1.12)(@tiptap/pm@2.1.7)
911 | '@tiptap/extension-horizontal-rule': 2.1.7(@tiptap/core@2.1.12)(@tiptap/pm@2.1.7)
912 | '@tiptap/extension-italic': 2.1.12(@tiptap/core@2.1.12)
913 | '@tiptap/extension-list-item': 2.1.12(@tiptap/core@2.1.12)
914 | '@tiptap/extension-ordered-list': 2.1.12(@tiptap/core@2.1.12)
915 | '@tiptap/extension-paragraph': 2.1.12(@tiptap/core@2.1.12)
916 | '@tiptap/extension-strike': 2.1.12(@tiptap/core@2.1.12)
917 | '@tiptap/extension-text': 2.1.12(@tiptap/core@2.1.12)
918 | transitivePeerDependencies:
919 | - '@tiptap/pm'
920 | dev: false
921 |
922 | /@tiptap/suggestion@2.1.7(@tiptap/core@2.1.12)(@tiptap/pm@2.1.7):
923 | resolution: {integrity: sha512-FKlXFMWf9rCnNJQsUfeX6WpS2VUs2O98ENkyhfV8ehCB7X5+57mkkxJxl/88SMbjZL+FbWPBKLaiOvsXfIUoww==}
924 | peerDependencies:
925 | '@tiptap/core': ^2.0.0
926 | '@tiptap/pm': ^2.0.0
927 | dependencies:
928 | '@tiptap/core': 2.1.12(@tiptap/pm@2.1.7)
929 | '@tiptap/pm': 2.1.7
930 | dev: false
931 |
932 | /@tiptap/vue-3@2.1.7(@tiptap/core@2.1.12)(@tiptap/pm@2.1.7)(vue@3.3.4):
933 | resolution: {integrity: sha512-JJRXWKLJ8mopb0uZV4JXyOW6vKQnarYoCj0hsy9ZT2LhSuLlPXY0D40NAbFVMMbQssewUtgPUFgVZ/TusMEysQ==}
934 | peerDependencies:
935 | '@tiptap/core': ^2.0.0
936 | '@tiptap/pm': ^2.0.0
937 | vue: ^3.0.0
938 | dependencies:
939 | '@tiptap/core': 2.1.12(@tiptap/pm@2.1.7)
940 | '@tiptap/extension-bubble-menu': 2.1.12(@tiptap/core@2.1.12)(@tiptap/pm@2.1.7)
941 | '@tiptap/extension-floating-menu': 2.1.12(@tiptap/core@2.1.12)(@tiptap/pm@2.1.7)
942 | '@tiptap/pm': 2.1.7
943 | vue: 3.3.4
944 | dev: false
945 |
946 | /@tootallnate/once@2.0.0:
947 | resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==}
948 | engines: {node: '>= 10'}
949 | dev: false
950 |
951 | /@types/argparse@1.0.38:
952 | resolution: {integrity: sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==}
953 | dev: true
954 |
955 | /@types/estree@1.0.5:
956 | resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==}
957 |
958 | /@types/istanbul-lib-coverage@2.0.6:
959 | resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==}
960 | dev: false
961 |
962 | /@types/istanbul-lib-report@3.0.3:
963 | resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==}
964 | dependencies:
965 | '@types/istanbul-lib-coverage': 2.0.6
966 | dev: false
967 |
968 | /@types/istanbul-reports@3.0.4:
969 | resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==}
970 | dependencies:
971 | '@types/istanbul-lib-report': 3.0.3
972 | dev: false
973 |
974 | /@types/jsdom@20.0.1:
975 | resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==}
976 | dependencies:
977 | '@types/node': 20.9.0
978 | '@types/tough-cookie': 4.0.5
979 | parse5: 7.1.2
980 | dev: false
981 |
982 | /@types/linkify-it@3.0.5:
983 | resolution: {integrity: sha512-yg6E+u0/+Zjva+buc3EIb+29XEg4wltq7cSmd4Uc2EE/1nUVmxyzpX6gUXD0V8jIrG0r7YeOGVIbYRkxeooCtw==}
984 | dev: false
985 |
986 | /@types/markdown-it@12.2.3:
987 | resolution: {integrity: sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==}
988 | dependencies:
989 | '@types/linkify-it': 3.0.5
990 | '@types/mdurl': 1.0.5
991 | dev: false
992 |
993 | /@types/mdurl@1.0.5:
994 | resolution: {integrity: sha512-6L6VymKTzYSrEf4Nev4Xa1LCHKrlTlYCBMTlQKFuddo1CvQcE52I0mwfOJayueUC7MJuXOeHTcIU683lzd0cUA==}
995 | dev: false
996 |
997 | /@types/node-fetch@2.6.9:
998 | resolution: {integrity: sha512-bQVlnMLFJ2d35DkPNjEPmd9ueO/rh5EiaZt2bhqiSarPjZIuIV6bPQVqcrEyvNo+AfTrRGVazle1tl597w3gfA==}
999 | dependencies:
1000 | '@types/node': 18.18.9
1001 | form-data: 4.0.0
1002 | dev: false
1003 |
1004 | /@types/node@18.18.9:
1005 | resolution: {integrity: sha512-0f5klcuImLnG4Qreu9hPj/rEfFq6YRc5n2mAjSsH+ec/mJL+3voBH0+8T7o8RpFjH7ovc+TRsL/c7OYIQsPTfQ==}
1006 | dependencies:
1007 | undici-types: 5.26.5
1008 | dev: false
1009 |
1010 | /@types/node@20.9.0:
1011 | resolution: {integrity: sha512-nekiGu2NDb1BcVofVcEKMIwzlx4NjHlcjhoxxKBNLtz15Y1z7MYf549DFvkHSId02Ax6kGwWntIBPC3l/JZcmw==}
1012 | dependencies:
1013 | undici-types: 5.26.5
1014 | dev: false
1015 |
1016 | /@types/object.omit@3.0.3:
1017 | resolution: {integrity: sha512-xrq4bQTBGYY2cw+gV4PzoG2Lv3L0pjZ1uXStRRDQoATOYW1lCsFQHhQ+OkPhIcQoqLjAq7gYif7D14Qaa6Zbew==}
1018 |
1019 | /@types/object.pick@1.3.4:
1020 | resolution: {integrity: sha512-5PjwB0uP2XDp3nt5u5NJAG2DORHIRClPzWT/TTZhJ2Ekwe8M5bA9tvPdi9NO/n2uvu2/ictat8kgqvLfcIE1SA==}
1021 |
1022 | /@types/stack-utils@2.0.3:
1023 | resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==}
1024 | dev: false
1025 |
1026 | /@types/throttle-debounce@2.1.0:
1027 | resolution: {integrity: sha512-5eQEtSCoESnh2FsiLTxE121IiE60hnMqcb435fShf4bpLRjEu1Eoekht23y6zXS9Ts3l+Szu3TARnTsA0GkOkQ==}
1028 |
1029 | /@types/tough-cookie@4.0.5:
1030 | resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==}
1031 | dev: false
1032 |
1033 | /@types/web-bluetooth@0.0.17:
1034 | resolution: {integrity: sha512-4p9vcSmxAayx72yn70joFoL44c9MO/0+iVEBIQXe3v2h2SiAsEIo/G5v6ObFWvNKRFjbrVadNf9LqEEZeQPzdA==}
1035 | dev: false
1036 |
1037 | /@types/yargs-parser@21.0.3:
1038 | resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==}
1039 | dev: false
1040 |
1041 | /@types/yargs@17.0.31:
1042 | resolution: {integrity: sha512-bocYSx4DI8TmdlvxqGpVNXOgCNR1Jj0gNPhhAY+iz1rgKDAaYrAYdFYnhDV1IFuiuVc9HkOwyDcFxaTElF3/wg==}
1043 | dependencies:
1044 | '@types/yargs-parser': 21.0.3
1045 | dev: false
1046 |
1047 | /@vercel/blob@0.15.1:
1048 | resolution: {integrity: sha512-Wo7VU9/tM8kkv7krvxGoDeu/Li0h7PYR/TB1TEiyJZzACruA0jWqj44OGokJQCYN3ZvV5tXHpTAN6pImIBCrUw==}
1049 | engines: {node: '>=16.14'}
1050 | dependencies:
1051 | jest-environment-jsdom: 29.7.0
1052 | undici: 5.27.0
1053 | transitivePeerDependencies:
1054 | - bufferutil
1055 | - canvas
1056 | - supports-color
1057 | - utf-8-validate
1058 | dev: false
1059 |
1060 | /@vitejs/plugin-vue@4.2.3(vite@4.4.5)(vue@3.3.4):
1061 | resolution: {integrity: sha512-R6JDUfiZbJA9cMiguQ7jxALsgiprjBeHL5ikpXfJCH62pPHtI+JdJ5xWj6Ev73yXSlYl86+blXn1kZHQ7uElxw==}
1062 | engines: {node: ^14.18.0 || >=16.0.0}
1063 | peerDependencies:
1064 | vite: ^4.0.0
1065 | vue: ^3.2.25
1066 | dependencies:
1067 | vite: 4.4.5
1068 | vue: 3.3.4
1069 | dev: true
1070 |
1071 | /@volar/language-core@1.10.10:
1072 | resolution: {integrity: sha512-nsV1o3AZ5n5jaEAObrS3MWLBWaGwUj/vAsc15FVNIv+DbpizQRISg9wzygsHBr56ELRH8r4K75vkYNMtsSNNWw==}
1073 | dependencies:
1074 | '@volar/source-map': 1.10.10
1075 | dev: true
1076 |
1077 | /@volar/language-core@1.9.2:
1078 | resolution: {integrity: sha512-9GTes/IUPOl0YoV5RQWhCP5a4EDFFfJZGwZn1xA5ug1FO0G6GOVoJI6tQatujtcQmDOQlOM5/0NewnlumygPkQ==}
1079 | dependencies:
1080 | '@volar/source-map': 1.9.2
1081 | dev: true
1082 |
1083 | /@volar/source-map@1.10.10:
1084 | resolution: {integrity: sha512-GVKjLnifV4voJ9F0vhP56p4+F3WGf+gXlRtjFZsv6v3WxBTWU3ZVeaRaEHJmWrcv5LXmoYYpk/SC25BKemPRkg==}
1085 | dependencies:
1086 | muggle-string: 0.3.1
1087 | dev: true
1088 |
1089 | /@volar/source-map@1.9.2:
1090 | resolution: {integrity: sha512-rYTvV/HMf2CSRkd6oiVxcjX4rnSxEsVfJmw1KTmD4VTBXlz1+b16VIysQX4+1p/eZd2TyCeFblyylIxbZ+YOGg==}
1091 | dependencies:
1092 | muggle-string: 0.3.1
1093 | dev: true
1094 |
1095 | /@volar/typescript@1.10.10:
1096 | resolution: {integrity: sha512-4a2r5bdUub2m+mYVnLu2wt59fuoYWe7nf0uXtGHU8QQ5LDNfzAR0wK7NgDiQ9rcl2WT3fxT2AA9AylAwFtj50A==}
1097 | dependencies:
1098 | '@volar/language-core': 1.10.10
1099 | path-browserify: 1.0.1
1100 | dev: true
1101 |
1102 | /@volar/typescript@1.9.2:
1103 | resolution: {integrity: sha512-l4DA+S3ZVOWGACDdRNVSYZ41nuTWOH8OMS/yVeFV2fTmr/IuD37+3wzzGnjIPwCUa0w+fpg8vJPalzYetmlFTQ==}
1104 | dependencies:
1105 | '@volar/language-core': 1.9.2
1106 | dev: true
1107 |
1108 | /@vue/compiler-core@3.3.4:
1109 | resolution: {integrity: sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==}
1110 | dependencies:
1111 | '@babel/parser': 7.23.3
1112 | '@vue/shared': 3.3.4
1113 | estree-walker: 2.0.2
1114 | source-map-js: 1.0.2
1115 |
1116 | /@vue/compiler-core@3.3.8:
1117 | resolution: {integrity: sha512-hN/NNBUECw8SusQvDSqqcVv6gWq8L6iAktUR0UF3vGu2OhzRqcOiAno0FmBJWwxhYEXRlQJT5XnoKsVq1WZx4g==}
1118 | dependencies:
1119 | '@babel/parser': 7.23.3
1120 | '@vue/shared': 3.3.8
1121 | estree-walker: 2.0.2
1122 | source-map-js: 1.0.2
1123 | dev: true
1124 |
1125 | /@vue/compiler-dom@3.3.4:
1126 | resolution: {integrity: sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==}
1127 | dependencies:
1128 | '@vue/compiler-core': 3.3.4
1129 | '@vue/shared': 3.3.4
1130 |
1131 | /@vue/compiler-dom@3.3.8:
1132 | resolution: {integrity: sha512-+PPtv+p/nWDd0AvJu3w8HS0RIm/C6VGBIRe24b9hSyNWOAPEUosFZ5diwawwP8ip5sJ8n0Pe87TNNNHnvjs0FQ==}
1133 | dependencies:
1134 | '@vue/compiler-core': 3.3.8
1135 | '@vue/shared': 3.3.8
1136 | dev: true
1137 |
1138 | /@vue/compiler-sfc@3.3.4:
1139 | resolution: {integrity: sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==}
1140 | dependencies:
1141 | '@babel/parser': 7.23.3
1142 | '@vue/compiler-core': 3.3.4
1143 | '@vue/compiler-dom': 3.3.4
1144 | '@vue/compiler-ssr': 3.3.4
1145 | '@vue/reactivity-transform': 3.3.4
1146 | '@vue/shared': 3.3.4
1147 | estree-walker: 2.0.2
1148 | magic-string: 0.30.5
1149 | postcss: 8.4.29
1150 | source-map-js: 1.0.2
1151 |
1152 | /@vue/compiler-ssr@3.3.4:
1153 | resolution: {integrity: sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ==}
1154 | dependencies:
1155 | '@vue/compiler-dom': 3.3.4
1156 | '@vue/shared': 3.3.4
1157 |
1158 | /@vue/language-core@1.8.22(typescript@5.0.2):
1159 | resolution: {integrity: sha512-bsMoJzCrXZqGsxawtUea1cLjUT9dZnDsy5TuZ+l1fxRMzUGQUG9+Ypq4w//CqpWmrx7nIAJpw2JVF/t258miRw==}
1160 | peerDependencies:
1161 | typescript: '*'
1162 | peerDependenciesMeta:
1163 | typescript:
1164 | optional: true
1165 | dependencies:
1166 | '@volar/language-core': 1.10.10
1167 | '@volar/source-map': 1.10.10
1168 | '@vue/compiler-dom': 3.3.8
1169 | '@vue/shared': 3.3.8
1170 | computeds: 0.0.1
1171 | minimatch: 9.0.3
1172 | muggle-string: 0.3.1
1173 | typescript: 5.0.2
1174 | vue-template-compiler: 2.7.15
1175 | dev: true
1176 |
1177 | /@vue/language-core@1.8.5(typescript@5.0.2):
1178 | resolution: {integrity: sha512-DKQNiNQzNV7nrkZQujvjfX73zqKdj2+KoM4YeKl+ft3f+crO3JB4ycPnmgaRMNX/ULJootdQPGHKFRl5cXxwaw==}
1179 | peerDependencies:
1180 | typescript: '*'
1181 | peerDependenciesMeta:
1182 | typescript:
1183 | optional: true
1184 | dependencies:
1185 | '@volar/language-core': 1.9.2
1186 | '@volar/source-map': 1.9.2
1187 | '@vue/compiler-dom': 3.3.8
1188 | '@vue/reactivity': 3.3.8
1189 | '@vue/shared': 3.3.8
1190 | minimatch: 9.0.3
1191 | muggle-string: 0.3.1
1192 | typescript: 5.0.2
1193 | vue-template-compiler: 2.7.15
1194 | dev: true
1195 |
1196 | /@vue/reactivity-transform@3.3.4:
1197 | resolution: {integrity: sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==}
1198 | dependencies:
1199 | '@babel/parser': 7.23.3
1200 | '@vue/compiler-core': 3.3.4
1201 | '@vue/shared': 3.3.4
1202 | estree-walker: 2.0.2
1203 | magic-string: 0.30.5
1204 |
1205 | /@vue/reactivity@3.3.4:
1206 | resolution: {integrity: sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==}
1207 | dependencies:
1208 | '@vue/shared': 3.3.4
1209 |
1210 | /@vue/reactivity@3.3.8:
1211 | resolution: {integrity: sha512-ctLWitmFBu6mtddPyOKpHg8+5ahouoTCRtmAHZAXmolDtuZXfjL2T3OJ6DL6ezBPQB1SmMnpzjiWjCiMYmpIuw==}
1212 | dependencies:
1213 | '@vue/shared': 3.3.8
1214 | dev: true
1215 |
1216 | /@vue/runtime-core@3.3.4:
1217 | resolution: {integrity: sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA==}
1218 | dependencies:
1219 | '@vue/reactivity': 3.3.4
1220 | '@vue/shared': 3.3.4
1221 |
1222 | /@vue/runtime-dom@3.3.4:
1223 | resolution: {integrity: sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ==}
1224 | dependencies:
1225 | '@vue/runtime-core': 3.3.4
1226 | '@vue/shared': 3.3.4
1227 | csstype: 3.1.2
1228 |
1229 | /@vue/server-renderer@3.3.4(vue@3.3.4):
1230 | resolution: {integrity: sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ==}
1231 | peerDependencies:
1232 | vue: 3.3.4
1233 | dependencies:
1234 | '@vue/compiler-ssr': 3.3.4
1235 | '@vue/shared': 3.3.4
1236 | vue: 3.3.4
1237 |
1238 | /@vue/shared@3.3.4:
1239 | resolution: {integrity: sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==}
1240 |
1241 | /@vue/shared@3.3.8:
1242 | resolution: {integrity: sha512-8PGwybFwM4x8pcfgqEQFy70NaQxASvOC5DJwLQfpArw1UDfUXrJkdxD3BhVTMS+0Lef/TU7YO0Jvr0jJY8T+mw==}
1243 | dev: true
1244 |
1245 | /@vue/typescript@1.8.5(typescript@5.0.2):
1246 | resolution: {integrity: sha512-domFBbNr3PEcjGBeB+cmgUM3cI6pJsJezguIUKZ1rphkfIkICyoMjCd3TitoP32yo2KABLiaXcGFzgFfQf6B3w==}
1247 | dependencies:
1248 | '@volar/typescript': 1.9.2
1249 | '@vue/language-core': 1.8.5(typescript@5.0.2)
1250 | transitivePeerDependencies:
1251 | - typescript
1252 | dev: true
1253 |
1254 | /@vueuse/core@10.4.1(vue@3.3.4):
1255 | resolution: {integrity: sha512-DkHIfMIoSIBjMgRRvdIvxsyboRZQmImofLyOHADqiVbQVilP8VVHDhBX2ZqoItOgu7dWa8oXiNnScOdPLhdEXg==}
1256 | dependencies:
1257 | '@types/web-bluetooth': 0.0.17
1258 | '@vueuse/metadata': 10.4.1
1259 | '@vueuse/shared': 10.4.1(vue@3.3.4)
1260 | vue-demi: 0.14.6(vue@3.3.4)
1261 | transitivePeerDependencies:
1262 | - '@vue/composition-api'
1263 | - vue
1264 | dev: false
1265 |
1266 | /@vueuse/metadata@10.4.1:
1267 | resolution: {integrity: sha512-2Sc8X+iVzeuMGHr6O2j4gv/zxvQGGOYETYXEc41h0iZXIRnRbJZGmY/QP8dvzqUelf8vg0p/yEA5VpCEu+WpZg==}
1268 | dev: false
1269 |
1270 | /@vueuse/shared@10.4.1(vue@3.3.4):
1271 | resolution: {integrity: sha512-vz5hbAM4qA0lDKmcr2y3pPdU+2EVw/yzfRsBdu+6+USGa4PxqSQRYIUC9/NcT06y+ZgaTsyURw2I9qOFaaXHAg==}
1272 | dependencies:
1273 | vue-demi: 0.14.6(vue@3.3.4)
1274 | transitivePeerDependencies:
1275 | - '@vue/composition-api'
1276 | - vue
1277 | dev: false
1278 |
1279 | /abab@2.0.6:
1280 | resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==}
1281 | dev: false
1282 |
1283 | /abort-controller@3.0.0:
1284 | resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==}
1285 | engines: {node: '>=6.5'}
1286 | dependencies:
1287 | event-target-shim: 5.0.1
1288 | dev: false
1289 |
1290 | /acorn-globals@7.0.1:
1291 | resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==}
1292 | dependencies:
1293 | acorn: 8.11.2
1294 | acorn-walk: 8.3.0
1295 | dev: false
1296 |
1297 | /acorn-walk@8.3.0:
1298 | resolution: {integrity: sha512-FS7hV565M5l1R08MXqo8odwMTB02C2UqzB17RVgu9EyuYFBqJZ3/ZY97sQD5FewVu1UyDFc1yztUDrAwT0EypA==}
1299 | engines: {node: '>=0.4.0'}
1300 | dev: false
1301 |
1302 | /acorn@8.11.2:
1303 | resolution: {integrity: sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==}
1304 | engines: {node: '>=0.4.0'}
1305 | hasBin: true
1306 | dev: false
1307 |
1308 | /agent-base@6.0.2:
1309 | resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==}
1310 | engines: {node: '>= 6.0.0'}
1311 | dependencies:
1312 | debug: 4.3.4
1313 | transitivePeerDependencies:
1314 | - supports-color
1315 | dev: false
1316 |
1317 | /agentkeepalive@4.5.0:
1318 | resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==}
1319 | engines: {node: '>= 8.0.0'}
1320 | dependencies:
1321 | humanize-ms: 1.2.1
1322 | dev: false
1323 |
1324 | /ai@2.2.11(react@18.2.0)(solid-js@1.8.5)(svelte@4.2.3)(vue@3.3.4):
1325 | resolution: {integrity: sha512-thZxrZCfXpOFVR2zSwuZYvTlKZF6H1z9z45VCPgm+VOWHvqUWgINCHWjklCHhCkVV+Abc9w7zelQAN3lcGmrgw==}
1326 | engines: {node: '>=14.6'}
1327 | peerDependencies:
1328 | react: ^18.2.0
1329 | solid-js: ^1.7.7
1330 | svelte: ^3.0.0 || ^4.0.0
1331 | vue: ^3.3.4
1332 | peerDependenciesMeta:
1333 | react:
1334 | optional: true
1335 | solid-js:
1336 | optional: true
1337 | svelte:
1338 | optional: true
1339 | vue:
1340 | optional: true
1341 | dependencies:
1342 | eventsource-parser: 1.0.0
1343 | nanoid: 3.3.6
1344 | openai: 4.2.0
1345 | react: 18.2.0
1346 | solid-js: 1.8.5
1347 | solid-swr-store: 0.10.7(solid-js@1.8.5)(swr-store@0.10.6)
1348 | sswr: 2.0.0(svelte@4.2.3)
1349 | svelte: 4.2.3
1350 | swr: 2.2.0(react@18.2.0)
1351 | swr-store: 0.10.6
1352 | swrv: 1.0.4(vue@3.3.4)
1353 | vue: 3.3.4
1354 | transitivePeerDependencies:
1355 | - encoding
1356 | dev: false
1357 |
1358 | /ajv@6.12.6:
1359 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
1360 | dependencies:
1361 | fast-deep-equal: 3.1.3
1362 | fast-json-stable-stringify: 2.1.0
1363 | json-schema-traverse: 0.4.1
1364 | uri-js: 4.4.1
1365 | dev: true
1366 |
1367 | /ansi-styles@3.2.1:
1368 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
1369 | engines: {node: '>=4'}
1370 | dependencies:
1371 | color-convert: 1.9.3
1372 | dev: false
1373 |
1374 | /ansi-styles@4.3.0:
1375 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
1376 | engines: {node: '>=8'}
1377 | dependencies:
1378 | color-convert: 2.0.1
1379 | dev: false
1380 |
1381 | /ansi-styles@5.2.0:
1382 | resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==}
1383 | engines: {node: '>=10'}
1384 | dev: false
1385 |
1386 | /any-promise@1.3.0:
1387 | resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==}
1388 |
1389 | /anymatch@3.1.3:
1390 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
1391 | engines: {node: '>= 8'}
1392 | dependencies:
1393 | normalize-path: 3.0.0
1394 | picomatch: 2.3.1
1395 |
1396 | /arg@5.0.2:
1397 | resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==}
1398 |
1399 | /argparse@1.0.10:
1400 | resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==}
1401 | dependencies:
1402 | sprintf-js: 1.0.3
1403 | dev: true
1404 |
1405 | /argparse@2.0.1:
1406 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
1407 |
1408 | /aria-query@5.3.0:
1409 | resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==}
1410 | dependencies:
1411 | dequal: 2.0.3
1412 | dev: false
1413 |
1414 | /asynckit@0.4.0:
1415 | resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
1416 | dev: false
1417 |
1418 | /autoprefixer@10.4.15(postcss@8.4.29):
1419 | resolution: {integrity: sha512-KCuPB8ZCIqFdA4HwKXsvz7j6gvSDNhDP7WnUjBleRkKjPdvCmHFuQ77ocavI8FT6NdvlBnE2UFr2H4Mycn8Vew==}
1420 | engines: {node: ^10 || ^12 || >=14}
1421 | hasBin: true
1422 | peerDependencies:
1423 | postcss: ^8.1.0
1424 | dependencies:
1425 | browserslist: 4.22.1
1426 | caniuse-lite: 1.0.30001562
1427 | fraction.js: 4.3.7
1428 | normalize-range: 0.1.2
1429 | picocolors: 1.0.0
1430 | postcss: 8.4.29
1431 | postcss-value-parser: 4.2.0
1432 | dev: true
1433 |
1434 | /axobject-query@3.2.1:
1435 | resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==}
1436 | dependencies:
1437 | dequal: 2.0.3
1438 | dev: false
1439 |
1440 | /balanced-match@1.0.2:
1441 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
1442 |
1443 | /base-64@0.1.0:
1444 | resolution: {integrity: sha512-Y5gU45svrR5tI2Vt/X9GPd3L0HNIKzGu202EjxrXMpuc2V2CiKgemAbUUsqYmZJvPtCXoUKjNZwBJzsNScUbXA==}
1445 | dev: false
1446 |
1447 | /binary-extensions@2.2.0:
1448 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
1449 | engines: {node: '>=8'}
1450 |
1451 | /brace-expansion@1.1.11:
1452 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
1453 | dependencies:
1454 | balanced-match: 1.0.2
1455 | concat-map: 0.0.1
1456 |
1457 | /brace-expansion@2.0.1:
1458 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
1459 | dependencies:
1460 | balanced-match: 1.0.2
1461 | dev: true
1462 |
1463 | /braces@3.0.2:
1464 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
1465 | engines: {node: '>=8'}
1466 | dependencies:
1467 | fill-range: 7.0.1
1468 |
1469 | /browserslist@4.22.1:
1470 | resolution: {integrity: sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==}
1471 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
1472 | hasBin: true
1473 | dependencies:
1474 | caniuse-lite: 1.0.30001562
1475 | electron-to-chromium: 1.4.583
1476 | node-releases: 2.0.13
1477 | update-browserslist-db: 1.0.13(browserslist@4.22.1)
1478 | dev: true
1479 |
1480 | /camelcase-css@2.0.1:
1481 | resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==}
1482 | engines: {node: '>= 6'}
1483 |
1484 | /caniuse-lite@1.0.30001562:
1485 | resolution: {integrity: sha512-kfte3Hym//51EdX4239i+Rmp20EsLIYGdPkERegTgU19hQWCRhsRFGKHTliUlsry53tv17K7n077Kqa0WJU4ng==}
1486 | dev: true
1487 |
1488 | /case-anything@2.1.13:
1489 | resolution: {integrity: sha512-zlOQ80VrQ2Ue+ymH5OuM/DlDq64mEm+B9UTdHULv5osUMD6HalNTblf2b1u/m6QecjsnOkBpqVZ+XPwIVsy7Ng==}
1490 | engines: {node: '>=12.13'}
1491 |
1492 | /chalk@2.4.2:
1493 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
1494 | engines: {node: '>=4'}
1495 | dependencies:
1496 | ansi-styles: 3.2.1
1497 | escape-string-regexp: 1.0.5
1498 | supports-color: 5.5.0
1499 | dev: false
1500 |
1501 | /chalk@4.1.2:
1502 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
1503 | engines: {node: '>=10'}
1504 | dependencies:
1505 | ansi-styles: 4.3.0
1506 | supports-color: 7.2.0
1507 | dev: false
1508 |
1509 | /charenc@0.0.2:
1510 | resolution: {integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==}
1511 | dev: false
1512 |
1513 | /chokidar@3.5.3:
1514 | resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==}
1515 | engines: {node: '>= 8.10.0'}
1516 | dependencies:
1517 | anymatch: 3.1.3
1518 | braces: 3.0.2
1519 | glob-parent: 5.1.2
1520 | is-binary-path: 2.1.0
1521 | is-glob: 4.0.3
1522 | normalize-path: 3.0.0
1523 | readdirp: 3.6.0
1524 | optionalDependencies:
1525 | fsevents: 2.3.3
1526 |
1527 | /ci-info@3.9.0:
1528 | resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==}
1529 | engines: {node: '>=8'}
1530 | dev: false
1531 |
1532 | /code-red@1.0.4:
1533 | resolution: {integrity: sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==}
1534 | dependencies:
1535 | '@jridgewell/sourcemap-codec': 1.4.15
1536 | '@types/estree': 1.0.5
1537 | acorn: 8.11.2
1538 | estree-walker: 3.0.3
1539 | periscopic: 3.1.0
1540 | dev: false
1541 |
1542 | /color-convert@1.9.3:
1543 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
1544 | dependencies:
1545 | color-name: 1.1.3
1546 | dev: false
1547 |
1548 | /color-convert@2.0.1:
1549 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
1550 | engines: {node: '>=7.0.0'}
1551 | dependencies:
1552 | color-name: 1.1.4
1553 | dev: false
1554 |
1555 | /color-name@1.1.3:
1556 | resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}
1557 | dev: false
1558 |
1559 | /color-name@1.1.4:
1560 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
1561 | dev: false
1562 |
1563 | /colors@1.2.5:
1564 | resolution: {integrity: sha512-erNRLao/Y3Fv54qUa0LBB+//Uf3YwMUmdJinN20yMXm9zdKKqH9wt7R9IIVZ+K7ShzfpLV/Zg8+VyrBJYB4lpg==}
1565 | engines: {node: '>=0.1.90'}
1566 | dev: true
1567 |
1568 | /combined-stream@1.0.8:
1569 | resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
1570 | engines: {node: '>= 0.8'}
1571 | dependencies:
1572 | delayed-stream: 1.0.0
1573 | dev: false
1574 |
1575 | /commander@4.1.1:
1576 | resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
1577 | engines: {node: '>= 6'}
1578 |
1579 | /commander@9.5.0:
1580 | resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==}
1581 | engines: {node: ^12.20.0 || >=14}
1582 | requiresBuild: true
1583 | dev: true
1584 | optional: true
1585 |
1586 | /computeds@0.0.1:
1587 | resolution: {integrity: sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==}
1588 | dev: true
1589 |
1590 | /concat-map@0.0.1:
1591 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
1592 |
1593 | /crelt@1.0.6:
1594 | resolution: {integrity: sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==}
1595 |
1596 | /crypt@0.0.2:
1597 | resolution: {integrity: sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==}
1598 | dev: false
1599 |
1600 | /css-tree@2.3.1:
1601 | resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==}
1602 | engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0}
1603 | dependencies:
1604 | mdn-data: 2.0.30
1605 | source-map-js: 1.0.2
1606 | dev: false
1607 |
1608 | /cssesc@3.0.0:
1609 | resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
1610 | engines: {node: '>=4'}
1611 | hasBin: true
1612 |
1613 | /cssom@0.3.8:
1614 | resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==}
1615 | dev: false
1616 |
1617 | /cssom@0.5.0:
1618 | resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==}
1619 | dev: false
1620 |
1621 | /cssstyle@2.3.0:
1622 | resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==}
1623 | engines: {node: '>=8'}
1624 | dependencies:
1625 | cssom: 0.3.8
1626 | dev: false
1627 |
1628 | /csstype@3.1.2:
1629 | resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==}
1630 |
1631 | /dash-get@1.0.2:
1632 | resolution: {integrity: sha512-4FbVrHDwfOASx7uQVxeiCTo7ggSdYZbqs8lH+WU6ViypPlDbe9y6IP5VVUDQBv9DcnyaiPT5XT0UWHgJ64zLeQ==}
1633 |
1634 | /data-urls@3.0.2:
1635 | resolution: {integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==}
1636 | engines: {node: '>=12'}
1637 | dependencies:
1638 | abab: 2.0.6
1639 | whatwg-mimetype: 3.0.0
1640 | whatwg-url: 11.0.0
1641 | dev: false
1642 |
1643 | /de-indent@1.0.2:
1644 | resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==}
1645 | dev: true
1646 |
1647 | /debug@4.3.4:
1648 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
1649 | engines: {node: '>=6.0'}
1650 | peerDependencies:
1651 | supports-color: '*'
1652 | peerDependenciesMeta:
1653 | supports-color:
1654 | optional: true
1655 | dependencies:
1656 | ms: 2.1.2
1657 |
1658 | /decimal.js@10.4.3:
1659 | resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==}
1660 | dev: false
1661 |
1662 | /deepmerge@4.3.1:
1663 | resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==}
1664 | engines: {node: '>=0.10.0'}
1665 |
1666 | /delayed-stream@1.0.0:
1667 | resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
1668 | engines: {node: '>=0.4.0'}
1669 | dev: false
1670 |
1671 | /dequal@2.0.3:
1672 | resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
1673 | engines: {node: '>=6'}
1674 | dev: false
1675 |
1676 | /didyoumean@1.2.2:
1677 | resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==}
1678 |
1679 | /digest-fetch@1.3.0:
1680 | resolution: {integrity: sha512-CGJuv6iKNM7QyZlM2T3sPAdZWd/p9zQiRNS9G+9COUCwzWFTs0Xp8NF5iePx7wtvhDykReiRRrSeNb4oMmB8lA==}
1681 | dependencies:
1682 | base-64: 0.1.0
1683 | md5: 2.3.0
1684 | dev: false
1685 |
1686 | /dlv@1.1.3:
1687 | resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==}
1688 |
1689 | /domexception@4.0.0:
1690 | resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==}
1691 | engines: {node: '>=12'}
1692 | dependencies:
1693 | webidl-conversions: 7.0.0
1694 | dev: false
1695 |
1696 | /electron-to-chromium@1.4.583:
1697 | resolution: {integrity: sha512-93y1gcONABZ7uqYe/JWDVQP/Pj/sQSunF0HVAPdlg/pfBnOyBMLlQUxWvkqcljJg1+W6cjvPuYD+r1Th9Tn8mA==}
1698 | dev: true
1699 |
1700 | /entities@3.0.1:
1701 | resolution: {integrity: sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==}
1702 | engines: {node: '>=0.12'}
1703 |
1704 | /entities@4.5.0:
1705 | resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
1706 | engines: {node: '>=0.12'}
1707 | dev: false
1708 |
1709 | /esbuild@0.18.20:
1710 | resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==}
1711 | engines: {node: '>=12'}
1712 | hasBin: true
1713 | requiresBuild: true
1714 | optionalDependencies:
1715 | '@esbuild/android-arm': 0.18.20
1716 | '@esbuild/android-arm64': 0.18.20
1717 | '@esbuild/android-x64': 0.18.20
1718 | '@esbuild/darwin-arm64': 0.18.20
1719 | '@esbuild/darwin-x64': 0.18.20
1720 | '@esbuild/freebsd-arm64': 0.18.20
1721 | '@esbuild/freebsd-x64': 0.18.20
1722 | '@esbuild/linux-arm': 0.18.20
1723 | '@esbuild/linux-arm64': 0.18.20
1724 | '@esbuild/linux-ia32': 0.18.20
1725 | '@esbuild/linux-loong64': 0.18.20
1726 | '@esbuild/linux-mips64el': 0.18.20
1727 | '@esbuild/linux-ppc64': 0.18.20
1728 | '@esbuild/linux-riscv64': 0.18.20
1729 | '@esbuild/linux-s390x': 0.18.20
1730 | '@esbuild/linux-x64': 0.18.20
1731 | '@esbuild/netbsd-x64': 0.18.20
1732 | '@esbuild/openbsd-x64': 0.18.20
1733 | '@esbuild/sunos-x64': 0.18.20
1734 | '@esbuild/win32-arm64': 0.18.20
1735 | '@esbuild/win32-ia32': 0.18.20
1736 | '@esbuild/win32-x64': 0.18.20
1737 | dev: true
1738 |
1739 | /escalade@3.1.1:
1740 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
1741 | engines: {node: '>=6'}
1742 | dev: true
1743 |
1744 | /escape-string-regexp@1.0.5:
1745 | resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
1746 | engines: {node: '>=0.8.0'}
1747 | dev: false
1748 |
1749 | /escape-string-regexp@2.0.0:
1750 | resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==}
1751 | engines: {node: '>=8'}
1752 | dev: false
1753 |
1754 | /escape-string-regexp@4.0.0:
1755 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
1756 | engines: {node: '>=10'}
1757 |
1758 | /escodegen@2.1.0:
1759 | resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==}
1760 | engines: {node: '>=6.0'}
1761 | hasBin: true
1762 | dependencies:
1763 | esprima: 4.0.1
1764 | estraverse: 5.3.0
1765 | esutils: 2.0.3
1766 | optionalDependencies:
1767 | source-map: 0.6.1
1768 | dev: false
1769 |
1770 | /esprima@4.0.1:
1771 | resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==}
1772 | engines: {node: '>=4'}
1773 | hasBin: true
1774 | dev: false
1775 |
1776 | /estraverse@5.3.0:
1777 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
1778 | engines: {node: '>=4.0'}
1779 | dev: false
1780 |
1781 | /estree-walker@2.0.2:
1782 | resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
1783 |
1784 | /estree-walker@3.0.3:
1785 | resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==}
1786 | dependencies:
1787 | '@types/estree': 1.0.5
1788 | dev: false
1789 |
1790 | /esutils@2.0.3:
1791 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
1792 | engines: {node: '>=0.10.0'}
1793 | dev: false
1794 |
1795 | /event-target-shim@5.0.1:
1796 | resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==}
1797 | engines: {node: '>=6'}
1798 | dev: false
1799 |
1800 | /eventsource-parser@1.0.0:
1801 | resolution: {integrity: sha512-9jgfSCa3dmEme2ES3mPByGXfgZ87VbP97tng1G2nWwWx6bV2nYxm2AWCrbQjXToSe+yYlqaZNtxffR9IeQr95g==}
1802 | engines: {node: '>=14.18'}
1803 | dev: false
1804 |
1805 | /fast-deep-equal@3.1.3:
1806 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
1807 |
1808 | /fast-glob@3.3.2:
1809 | resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==}
1810 | engines: {node: '>=8.6.0'}
1811 | dependencies:
1812 | '@nodelib/fs.stat': 2.0.5
1813 | '@nodelib/fs.walk': 1.2.8
1814 | glob-parent: 5.1.2
1815 | merge2: 1.4.1
1816 | micromatch: 4.0.5
1817 |
1818 | /fast-json-stable-stringify@2.1.0:
1819 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
1820 | dev: true
1821 |
1822 | /fastq@1.15.0:
1823 | resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==}
1824 | dependencies:
1825 | reusify: 1.0.4
1826 |
1827 | /fill-range@7.0.1:
1828 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
1829 | engines: {node: '>=8'}
1830 | dependencies:
1831 | to-regex-range: 5.0.1
1832 |
1833 | /form-data-encoder@1.7.2:
1834 | resolution: {integrity: sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==}
1835 | dev: false
1836 |
1837 | /form-data@4.0.0:
1838 | resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==}
1839 | engines: {node: '>= 6'}
1840 | dependencies:
1841 | asynckit: 0.4.0
1842 | combined-stream: 1.0.8
1843 | mime-types: 2.1.35
1844 | dev: false
1845 |
1846 | /formdata-node@4.4.1:
1847 | resolution: {integrity: sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==}
1848 | engines: {node: '>= 12.20'}
1849 | dependencies:
1850 | node-domexception: 1.0.0
1851 | web-streams-polyfill: 4.0.0-beta.3
1852 | dev: false
1853 |
1854 | /fraction.js@4.3.7:
1855 | resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==}
1856 | dev: true
1857 |
1858 | /fs-extra@7.0.1:
1859 | resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==}
1860 | engines: {node: '>=6 <7 || >=8'}
1861 | dependencies:
1862 | graceful-fs: 4.2.11
1863 | jsonfile: 4.0.0
1864 | universalify: 0.1.2
1865 | dev: true
1866 |
1867 | /fs.realpath@1.0.0:
1868 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
1869 |
1870 | /fsevents@2.3.3:
1871 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
1872 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
1873 | os: [darwin]
1874 | requiresBuild: true
1875 | optional: true
1876 |
1877 | /function-bind@1.1.2:
1878 | resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
1879 |
1880 | /glob-parent@5.1.2:
1881 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
1882 | engines: {node: '>= 6'}
1883 | dependencies:
1884 | is-glob: 4.0.3
1885 |
1886 | /glob-parent@6.0.2:
1887 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
1888 | engines: {node: '>=10.13.0'}
1889 | dependencies:
1890 | is-glob: 4.0.3
1891 |
1892 | /glob@7.1.6:
1893 | resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==}
1894 | dependencies:
1895 | fs.realpath: 1.0.0
1896 | inflight: 1.0.6
1897 | inherits: 2.0.4
1898 | minimatch: 3.1.2
1899 | once: 1.4.0
1900 | path-is-absolute: 1.0.1
1901 |
1902 | /graceful-fs@4.2.11:
1903 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
1904 |
1905 | /has-flag@3.0.0:
1906 | resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
1907 | engines: {node: '>=4'}
1908 | dev: false
1909 |
1910 | /has-flag@4.0.0:
1911 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
1912 | engines: {node: '>=8'}
1913 | dev: false
1914 |
1915 | /hasown@2.0.0:
1916 | resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==}
1917 | engines: {node: '>= 0.4'}
1918 | dependencies:
1919 | function-bind: 1.1.2
1920 |
1921 | /he@1.2.0:
1922 | resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==}
1923 | hasBin: true
1924 | dev: true
1925 |
1926 | /html-encoding-sniffer@3.0.0:
1927 | resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==}
1928 | engines: {node: '>=12'}
1929 | dependencies:
1930 | whatwg-encoding: 2.0.0
1931 | dev: false
1932 |
1933 | /http-proxy-agent@5.0.0:
1934 | resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==}
1935 | engines: {node: '>= 6'}
1936 | dependencies:
1937 | '@tootallnate/once': 2.0.0
1938 | agent-base: 6.0.2
1939 | debug: 4.3.4
1940 | transitivePeerDependencies:
1941 | - supports-color
1942 | dev: false
1943 |
1944 | /https-proxy-agent@5.0.1:
1945 | resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==}
1946 | engines: {node: '>= 6'}
1947 | dependencies:
1948 | agent-base: 6.0.2
1949 | debug: 4.3.4
1950 | transitivePeerDependencies:
1951 | - supports-color
1952 | dev: false
1953 |
1954 | /humanize-ms@1.2.1:
1955 | resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==}
1956 | dependencies:
1957 | ms: 2.1.3
1958 | dev: false
1959 |
1960 | /iconv-lite@0.6.3:
1961 | resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==}
1962 | engines: {node: '>=0.10.0'}
1963 | dependencies:
1964 | safer-buffer: 2.1.2
1965 | dev: false
1966 |
1967 | /import-lazy@4.0.0:
1968 | resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==}
1969 | engines: {node: '>=8'}
1970 | dev: true
1971 |
1972 | /inflight@1.0.6:
1973 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
1974 | dependencies:
1975 | once: 1.4.0
1976 | wrappy: 1.0.2
1977 |
1978 | /inherits@2.0.4:
1979 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
1980 |
1981 | /is-binary-path@2.1.0:
1982 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
1983 | engines: {node: '>=8'}
1984 | dependencies:
1985 | binary-extensions: 2.2.0
1986 |
1987 | /is-buffer@1.1.6:
1988 | resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==}
1989 | dev: false
1990 |
1991 | /is-core-module@2.13.1:
1992 | resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==}
1993 | dependencies:
1994 | hasown: 2.0.0
1995 |
1996 | /is-extendable@1.0.1:
1997 | resolution: {integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==}
1998 | engines: {node: '>=0.10.0'}
1999 | dependencies:
2000 | is-plain-object: 2.0.4
2001 |
2002 | /is-extglob@2.1.1:
2003 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
2004 | engines: {node: '>=0.10.0'}
2005 |
2006 | /is-glob@4.0.3:
2007 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
2008 | engines: {node: '>=0.10.0'}
2009 | dependencies:
2010 | is-extglob: 2.1.1
2011 |
2012 | /is-number@7.0.0:
2013 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
2014 | engines: {node: '>=0.12.0'}
2015 |
2016 | /is-plain-object@2.0.4:
2017 | resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==}
2018 | engines: {node: '>=0.10.0'}
2019 | dependencies:
2020 | isobject: 3.0.1
2021 |
2022 | /is-potential-custom-element-name@1.0.1:
2023 | resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==}
2024 | dev: false
2025 |
2026 | /is-reference@3.0.2:
2027 | resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==}
2028 | dependencies:
2029 | '@types/estree': 1.0.5
2030 | dev: false
2031 |
2032 | /isobject@3.0.1:
2033 | resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==}
2034 | engines: {node: '>=0.10.0'}
2035 |
2036 | /jest-environment-jsdom@29.7.0:
2037 | resolution: {integrity: sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==}
2038 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
2039 | peerDependencies:
2040 | canvas: ^2.5.0
2041 | peerDependenciesMeta:
2042 | canvas:
2043 | optional: true
2044 | dependencies:
2045 | '@jest/environment': 29.7.0
2046 | '@jest/fake-timers': 29.7.0
2047 | '@jest/types': 29.6.3
2048 | '@types/jsdom': 20.0.1
2049 | '@types/node': 20.9.0
2050 | jest-mock: 29.7.0
2051 | jest-util: 29.7.0
2052 | jsdom: 20.0.3
2053 | transitivePeerDependencies:
2054 | - bufferutil
2055 | - supports-color
2056 | - utf-8-validate
2057 | dev: false
2058 |
2059 | /jest-message-util@29.7.0:
2060 | resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==}
2061 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
2062 | dependencies:
2063 | '@babel/code-frame': 7.22.13
2064 | '@jest/types': 29.6.3
2065 | '@types/stack-utils': 2.0.3
2066 | chalk: 4.1.2
2067 | graceful-fs: 4.2.11
2068 | micromatch: 4.0.5
2069 | pretty-format: 29.7.0
2070 | slash: 3.0.0
2071 | stack-utils: 2.0.6
2072 | dev: false
2073 |
2074 | /jest-mock@29.7.0:
2075 | resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==}
2076 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
2077 | dependencies:
2078 | '@jest/types': 29.6.3
2079 | '@types/node': 20.9.0
2080 | jest-util: 29.7.0
2081 | dev: false
2082 |
2083 | /jest-util@29.7.0:
2084 | resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==}
2085 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
2086 | dependencies:
2087 | '@jest/types': 29.6.3
2088 | '@types/node': 20.9.0
2089 | chalk: 4.1.2
2090 | ci-info: 3.9.0
2091 | graceful-fs: 4.2.11
2092 | picomatch: 2.3.1
2093 | dev: false
2094 |
2095 | /jiti@1.21.0:
2096 | resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==}
2097 | hasBin: true
2098 |
2099 | /jju@1.4.0:
2100 | resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==}
2101 | dev: true
2102 |
2103 | /js-tokens@4.0.0:
2104 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
2105 | dev: false
2106 |
2107 | /jsdom@20.0.3:
2108 | resolution: {integrity: sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==}
2109 | engines: {node: '>=14'}
2110 | peerDependencies:
2111 | canvas: ^2.5.0
2112 | peerDependenciesMeta:
2113 | canvas:
2114 | optional: true
2115 | dependencies:
2116 | abab: 2.0.6
2117 | acorn: 8.11.2
2118 | acorn-globals: 7.0.1
2119 | cssom: 0.5.0
2120 | cssstyle: 2.3.0
2121 | data-urls: 3.0.2
2122 | decimal.js: 10.4.3
2123 | domexception: 4.0.0
2124 | escodegen: 2.1.0
2125 | form-data: 4.0.0
2126 | html-encoding-sniffer: 3.0.0
2127 | http-proxy-agent: 5.0.0
2128 | https-proxy-agent: 5.0.1
2129 | is-potential-custom-element-name: 1.0.1
2130 | nwsapi: 2.2.7
2131 | parse5: 7.1.2
2132 | saxes: 6.0.0
2133 | symbol-tree: 3.2.4
2134 | tough-cookie: 4.1.3
2135 | w3c-xmlserializer: 4.0.0
2136 | webidl-conversions: 7.0.0
2137 | whatwg-encoding: 2.0.0
2138 | whatwg-mimetype: 3.0.0
2139 | whatwg-url: 11.0.0
2140 | ws: 8.14.2
2141 | xml-name-validator: 4.0.0
2142 | transitivePeerDependencies:
2143 | - bufferutil
2144 | - supports-color
2145 | - utf-8-validate
2146 | dev: false
2147 |
2148 | /json-schema-traverse@0.4.1:
2149 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
2150 | dev: true
2151 |
2152 | /jsonfile@4.0.0:
2153 | resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==}
2154 | optionalDependencies:
2155 | graceful-fs: 4.2.11
2156 | dev: true
2157 |
2158 | /kolorist@1.8.0:
2159 | resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==}
2160 | dev: true
2161 |
2162 | /lilconfig@2.1.0:
2163 | resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==}
2164 | engines: {node: '>=10'}
2165 |
2166 | /lines-and-columns@1.2.4:
2167 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
2168 |
2169 | /linkify-it@4.0.1:
2170 | resolution: {integrity: sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==}
2171 | dependencies:
2172 | uc.micro: 1.0.6
2173 |
2174 | /linkifyjs@4.1.2:
2175 | resolution: {integrity: sha512-1elJrH8MwUgr77Rgmx4JgB/nBgISYVoGossH6pAfCeHG+07TblTn6RWKx0MKozEMJU6NCFYHRih9M8ZtV3YZ+Q==}
2176 | dev: false
2177 |
2178 | /locate-character@3.0.0:
2179 | resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==}
2180 | dev: false
2181 |
2182 | /lodash.castarray@4.4.0:
2183 | resolution: {integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==}
2184 | dev: true
2185 |
2186 | /lodash.get@4.4.2:
2187 | resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==}
2188 | dev: true
2189 |
2190 | /lodash.isequal@4.5.0:
2191 | resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==}
2192 | dev: true
2193 |
2194 | /lodash.isplainobject@4.0.6:
2195 | resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==}
2196 | dev: true
2197 |
2198 | /lodash.merge@4.6.2:
2199 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
2200 | dev: true
2201 |
2202 | /lodash@4.17.21:
2203 | resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
2204 | dev: true
2205 |
2206 | /loose-envify@1.4.0:
2207 | resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
2208 | hasBin: true
2209 | dependencies:
2210 | js-tokens: 4.0.0
2211 | dev: false
2212 |
2213 | /lru-cache@6.0.0:
2214 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
2215 | engines: {node: '>=10'}
2216 | dependencies:
2217 | yallist: 4.0.0
2218 | dev: true
2219 |
2220 | /lucide-vue-next@0.274.0(vue@3.3.4):
2221 | resolution: {integrity: sha512-n8qfl0mM1meFt5l/CiBdoLAzl47Zq6kZVQYLQH7LYtAOHab5bFbzmT52OeaBH4G+2LMWHiNlenUHaf9M+y3TFA==}
2222 | peerDependencies:
2223 | vue: '>=3.0.1'
2224 | dependencies:
2225 | vue: 3.3.4
2226 | dev: false
2227 |
2228 | /magic-string@0.30.5:
2229 | resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==}
2230 | engines: {node: '>=12'}
2231 | dependencies:
2232 | '@jridgewell/sourcemap-codec': 1.4.15
2233 |
2234 | /make-error@1.3.6:
2235 | resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==}
2236 |
2237 | /markdown-it-task-lists@2.1.1:
2238 | resolution: {integrity: sha512-TxFAc76Jnhb2OUu+n3yz9RMu4CwGfaT788br6HhEDlvWfdeJcLUsxk1Hgw2yJio0OXsxv7pyIPmvECY7bMbluA==}
2239 | dev: false
2240 |
2241 | /markdown-it@13.0.2:
2242 | resolution: {integrity: sha512-FtwnEuuK+2yVU7goGn/MJ0WBZMM9ZPgU9spqlFs7/A/pDIUNSOQZhUgOqYCficIuR2QaFnrt8LHqBWsbTAoI5w==}
2243 | hasBin: true
2244 | dependencies:
2245 | argparse: 2.0.1
2246 | entities: 3.0.1
2247 | linkify-it: 4.0.1
2248 | mdurl: 1.0.1
2249 | uc.micro: 1.0.6
2250 |
2251 | /md5@2.3.0:
2252 | resolution: {integrity: sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==}
2253 | dependencies:
2254 | charenc: 0.0.2
2255 | crypt: 0.0.2
2256 | is-buffer: 1.1.6
2257 | dev: false
2258 |
2259 | /mdn-data@2.0.30:
2260 | resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==}
2261 | dev: false
2262 |
2263 | /mdurl@1.0.1:
2264 | resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==}
2265 |
2266 | /merge2@1.4.1:
2267 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
2268 | engines: {node: '>= 8'}
2269 |
2270 | /micromatch@4.0.5:
2271 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
2272 | engines: {node: '>=8.6'}
2273 | dependencies:
2274 | braces: 3.0.2
2275 | picomatch: 2.3.1
2276 |
2277 | /mime-db@1.52.0:
2278 | resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
2279 | engines: {node: '>= 0.6'}
2280 | dev: false
2281 |
2282 | /mime-types@2.1.35:
2283 | resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
2284 | engines: {node: '>= 0.6'}
2285 | dependencies:
2286 | mime-db: 1.52.0
2287 | dev: false
2288 |
2289 | /minimatch@3.1.2:
2290 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
2291 | dependencies:
2292 | brace-expansion: 1.1.11
2293 |
2294 | /minimatch@9.0.3:
2295 | resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==}
2296 | engines: {node: '>=16 || 14 >=14.17'}
2297 | dependencies:
2298 | brace-expansion: 2.0.1
2299 | dev: true
2300 |
2301 | /ms@2.1.2:
2302 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
2303 |
2304 | /ms@2.1.3:
2305 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
2306 | dev: false
2307 |
2308 | /muggle-string@0.3.1:
2309 | resolution: {integrity: sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==}
2310 | dev: true
2311 |
2312 | /mz@2.7.0:
2313 | resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
2314 | dependencies:
2315 | any-promise: 1.3.0
2316 | object-assign: 4.1.1
2317 | thenify-all: 1.6.0
2318 |
2319 | /nanoid@3.3.6:
2320 | resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==}
2321 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
2322 | hasBin: true
2323 | dev: false
2324 |
2325 | /nanoid@3.3.7:
2326 | resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
2327 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
2328 | hasBin: true
2329 |
2330 | /node-domexception@1.0.0:
2331 | resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==}
2332 | engines: {node: '>=10.5.0'}
2333 | dev: false
2334 |
2335 | /node-fetch@2.7.0:
2336 | resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==}
2337 | engines: {node: 4.x || >=6.0.0}
2338 | peerDependencies:
2339 | encoding: ^0.1.0
2340 | peerDependenciesMeta:
2341 | encoding:
2342 | optional: true
2343 | dependencies:
2344 | whatwg-url: 5.0.0
2345 | dev: false
2346 |
2347 | /node-releases@2.0.13:
2348 | resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==}
2349 | dev: true
2350 |
2351 | /normalize-path@3.0.0:
2352 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
2353 | engines: {node: '>=0.10.0'}
2354 |
2355 | /normalize-range@0.1.2:
2356 | resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==}
2357 | engines: {node: '>=0.10.0'}
2358 | dev: true
2359 |
2360 | /nwsapi@2.2.7:
2361 | resolution: {integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==}
2362 | dev: false
2363 |
2364 | /object-assign@4.1.1:
2365 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
2366 | engines: {node: '>=0.10.0'}
2367 |
2368 | /object-hash@3.0.0:
2369 | resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==}
2370 | engines: {node: '>= 6'}
2371 |
2372 | /object.omit@3.0.0:
2373 | resolution: {integrity: sha512-EO+BCv6LJfu+gBIF3ggLicFebFLN5zqzz/WWJlMFfkMyGth+oBkhxzDl0wx2W4GkLzuQs/FsSkXZb2IMWQqmBQ==}
2374 | engines: {node: '>=0.10.0'}
2375 | dependencies:
2376 | is-extendable: 1.0.1
2377 |
2378 | /object.pick@1.3.0:
2379 | resolution: {integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==}
2380 | engines: {node: '>=0.10.0'}
2381 | dependencies:
2382 | isobject: 3.0.1
2383 |
2384 | /once@1.4.0:
2385 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
2386 | dependencies:
2387 | wrappy: 1.0.2
2388 |
2389 | /openai@4.2.0:
2390 | resolution: {integrity: sha512-zfvpO2eITIxIjTG8T6Cek7NB2dMvP/LW0TRUJ4P9E8+qbBNKw00DrtfF64b+fAV2+wUYCVyynT6iSycJ//TtbA==}
2391 | hasBin: true
2392 | dependencies:
2393 | '@types/node': 18.18.9
2394 | '@types/node-fetch': 2.6.9
2395 | abort-controller: 3.0.0
2396 | agentkeepalive: 4.5.0
2397 | digest-fetch: 1.3.0
2398 | form-data-encoder: 1.7.2
2399 | formdata-node: 4.4.1
2400 | node-fetch: 2.7.0
2401 | transitivePeerDependencies:
2402 | - encoding
2403 | dev: false
2404 |
2405 | /orderedmap@2.1.1:
2406 | resolution: {integrity: sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g==}
2407 |
2408 | /parse5@7.1.2:
2409 | resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==}
2410 | dependencies:
2411 | entities: 4.5.0
2412 | dev: false
2413 |
2414 | /path-browserify@1.0.1:
2415 | resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==}
2416 | dev: true
2417 |
2418 | /path-is-absolute@1.0.1:
2419 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
2420 | engines: {node: '>=0.10.0'}
2421 |
2422 | /path-parse@1.0.7:
2423 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
2424 |
2425 | /periscopic@3.1.0:
2426 | resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==}
2427 | dependencies:
2428 | '@types/estree': 1.0.5
2429 | estree-walker: 3.0.3
2430 | is-reference: 3.0.2
2431 | dev: false
2432 |
2433 | /picocolors@1.0.0:
2434 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
2435 |
2436 | /picomatch@2.3.1:
2437 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
2438 | engines: {node: '>=8.6'}
2439 |
2440 | /pify@2.3.0:
2441 | resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==}
2442 | engines: {node: '>=0.10.0'}
2443 |
2444 | /pirates@4.0.6:
2445 | resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==}
2446 | engines: {node: '>= 6'}
2447 |
2448 | /postcss-import@15.1.0(postcss@8.4.29):
2449 | resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==}
2450 | engines: {node: '>=14.0.0'}
2451 | peerDependencies:
2452 | postcss: ^8.0.0
2453 | dependencies:
2454 | postcss: 8.4.29
2455 | postcss-value-parser: 4.2.0
2456 | read-cache: 1.0.0
2457 | resolve: 1.22.8
2458 |
2459 | /postcss-js@4.0.1(postcss@8.4.29):
2460 | resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==}
2461 | engines: {node: ^12 || ^14 || >= 16}
2462 | peerDependencies:
2463 | postcss: ^8.4.21
2464 | dependencies:
2465 | camelcase-css: 2.0.1
2466 | postcss: 8.4.29
2467 |
2468 | /postcss-load-config@4.0.1(postcss@8.4.29):
2469 | resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==}
2470 | engines: {node: '>= 14'}
2471 | peerDependencies:
2472 | postcss: '>=8.0.9'
2473 | ts-node: '>=9.0.0'
2474 | peerDependenciesMeta:
2475 | postcss:
2476 | optional: true
2477 | ts-node:
2478 | optional: true
2479 | dependencies:
2480 | lilconfig: 2.1.0
2481 | postcss: 8.4.29
2482 | yaml: 2.3.4
2483 |
2484 | /postcss-nested@6.0.1(postcss@8.4.29):
2485 | resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==}
2486 | engines: {node: '>=12.0'}
2487 | peerDependencies:
2488 | postcss: ^8.2.14
2489 | dependencies:
2490 | postcss: 8.4.29
2491 | postcss-selector-parser: 6.0.13
2492 |
2493 | /postcss-selector-parser@6.0.10:
2494 | resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==}
2495 | engines: {node: '>=4'}
2496 | dependencies:
2497 | cssesc: 3.0.0
2498 | util-deprecate: 1.0.2
2499 | dev: true
2500 |
2501 | /postcss-selector-parser@6.0.13:
2502 | resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==}
2503 | engines: {node: '>=4'}
2504 | dependencies:
2505 | cssesc: 3.0.0
2506 | util-deprecate: 1.0.2
2507 |
2508 | /postcss-value-parser@4.2.0:
2509 | resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
2510 |
2511 | /postcss@8.4.29:
2512 | resolution: {integrity: sha512-cbI+jaqIeu/VGqXEarWkRCCffhjgXc0qjBtXpqJhTBohMUjUQnbBr0xqX3vEKudc4iviTewcJo5ajcec5+wdJw==}
2513 | engines: {node: ^10 || ^12 || >=14}
2514 | dependencies:
2515 | nanoid: 3.3.7
2516 | picocolors: 1.0.0
2517 | source-map-js: 1.0.2
2518 |
2519 | /pretty-format@29.7.0:
2520 | resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==}
2521 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
2522 | dependencies:
2523 | '@jest/schemas': 29.6.3
2524 | ansi-styles: 5.2.0
2525 | react-is: 18.2.0
2526 | dev: false
2527 |
2528 | /prosemirror-changeset@2.2.1:
2529 | resolution: {integrity: sha512-J7msc6wbxB4ekDFj+n9gTW/jav/p53kdlivvuppHsrZXCaQdVgRghoZbSS3kwrRyAstRVQ4/+u5k7YfLgkkQvQ==}
2530 | dependencies:
2531 | prosemirror-transform: 1.8.0
2532 |
2533 | /prosemirror-collab@1.3.1:
2534 | resolution: {integrity: sha512-4SnynYR9TTYaQVXd/ieUvsVV4PDMBzrq2xPUWutHivDuOshZXqQ5rGbZM84HEaXKbLdItse7weMGOUdDVcLKEQ==}
2535 | dependencies:
2536 | prosemirror-state: 1.4.3
2537 |
2538 | /prosemirror-commands@1.5.2:
2539 | resolution: {integrity: sha512-hgLcPaakxH8tu6YvVAaILV2tXYsW3rAdDR8WNkeKGcgeMVQg3/TMhPdVoh7iAmfgVjZGtcOSjKiQaoeKjzd2mQ==}
2540 | dependencies:
2541 | prosemirror-model: 1.19.3
2542 | prosemirror-state: 1.4.3
2543 | prosemirror-transform: 1.8.0
2544 |
2545 | /prosemirror-dropcursor@1.8.1:
2546 | resolution: {integrity: sha512-M30WJdJZLyXHi3N8vxN6Zh5O8ZBbQCz0gURTfPmTIBNQ5pxrdU7A58QkNqfa98YEjSAL1HUyyU34f6Pm5xBSGw==}
2547 | dependencies:
2548 | prosemirror-state: 1.4.3
2549 | prosemirror-transform: 1.8.0
2550 | prosemirror-view: 1.32.4
2551 |
2552 | /prosemirror-gapcursor@1.3.2:
2553 | resolution: {integrity: sha512-wtjswVBd2vaQRrnYZaBCbyDqr232Ed4p2QPtRIUK5FuqHYKGWkEwl08oQM4Tw7DOR0FsasARV5uJFvMZWxdNxQ==}
2554 | dependencies:
2555 | prosemirror-keymap: 1.2.2
2556 | prosemirror-model: 1.19.3
2557 | prosemirror-state: 1.4.3
2558 | prosemirror-view: 1.32.4
2559 |
2560 | /prosemirror-history@1.3.2:
2561 | resolution: {integrity: sha512-/zm0XoU/N/+u7i5zepjmZAEnpvjDtzoPWW6VmKptcAnPadN/SStsBjMImdCEbb3seiNTpveziPTIrXQbHLtU1g==}
2562 | dependencies:
2563 | prosemirror-state: 1.4.3
2564 | prosemirror-transform: 1.8.0
2565 | prosemirror-view: 1.32.4
2566 | rope-sequence: 1.3.4
2567 |
2568 | /prosemirror-inputrules@1.2.1:
2569 | resolution: {integrity: sha512-3LrWJX1+ULRh5SZvbIQlwZafOXqp1XuV21MGBu/i5xsztd+9VD15x6OtN6mdqSFI7/8Y77gYUbQ6vwwJ4mr6QQ==}
2570 | dependencies:
2571 | prosemirror-state: 1.4.3
2572 | prosemirror-transform: 1.8.0
2573 |
2574 | /prosemirror-keymap@1.2.2:
2575 | resolution: {integrity: sha512-EAlXoksqC6Vbocqc0GtzCruZEzYgrn+iiGnNjsJsH4mrnIGex4qbLdWWNza3AW5W36ZRrlBID0eM6bdKH4OStQ==}
2576 | dependencies:
2577 | prosemirror-state: 1.4.3
2578 | w3c-keyname: 2.2.8
2579 |
2580 | /prosemirror-markdown@1.11.2:
2581 | resolution: {integrity: sha512-Eu5g4WPiCdqDTGhdSsG9N6ZjACQRYrsAkrF9KYfdMaCmjIApH75aVncsWYOJvEk2i1B3i8jZppv3J/tnuHGiUQ==}
2582 | dependencies:
2583 | markdown-it: 13.0.2
2584 | prosemirror-model: 1.19.3
2585 |
2586 | /prosemirror-menu@1.2.4:
2587 | resolution: {integrity: sha512-S/bXlc0ODQup6aiBbWVsX/eM+xJgCTAfMq/nLqaO5ID/am4wS0tTCIkzwytmao7ypEtjj39i7YbJjAgO20mIqA==}
2588 | dependencies:
2589 | crelt: 1.0.6
2590 | prosemirror-commands: 1.5.2
2591 | prosemirror-history: 1.3.2
2592 | prosemirror-state: 1.4.3
2593 |
2594 | /prosemirror-model@1.19.3:
2595 | resolution: {integrity: sha512-tgSnwN7BS7/UM0sSARcW+IQryx2vODKX4MI7xpqY2X+iaepJdKBPc7I4aACIsDV/LTaTjt12Z56MhDr9LsyuZQ==}
2596 | dependencies:
2597 | orderedmap: 2.1.1
2598 |
2599 | /prosemirror-schema-basic@1.2.2:
2600 | resolution: {integrity: sha512-/dT4JFEGyO7QnNTe9UaKUhjDXbTNkiWTq/N4VpKaF79bBjSExVV2NXmJpcM7z/gD7mbqNjxbmWW5nf1iNSSGnw==}
2601 | dependencies:
2602 | prosemirror-model: 1.19.3
2603 |
2604 | /prosemirror-schema-list@1.3.0:
2605 | resolution: {integrity: sha512-Hz/7gM4skaaYfRPNgr421CU4GSwotmEwBVvJh5ltGiffUJwm7C8GfN/Bc6DR1EKEp5pDKhODmdXXyi9uIsZl5A==}
2606 | dependencies:
2607 | prosemirror-model: 1.19.3
2608 | prosemirror-state: 1.4.3
2609 | prosemirror-transform: 1.8.0
2610 |
2611 | /prosemirror-state@1.4.3:
2612 | resolution: {integrity: sha512-goFKORVbvPuAQaXhpbemJFRKJ2aixr+AZMGiquiqKxaucC6hlpHNZHWgz5R7dS4roHiwq9vDctE//CZ++o0W1Q==}
2613 | dependencies:
2614 | prosemirror-model: 1.19.3
2615 | prosemirror-transform: 1.8.0
2616 | prosemirror-view: 1.32.4
2617 |
2618 | /prosemirror-tables@1.3.4:
2619 | resolution: {integrity: sha512-z6uLSQ1BLC3rgbGwZmpfb+xkdvD7W/UOsURDfognZFYaTtc0gsk7u/t71Yijp2eLflVpffMk6X0u0+u+MMDvIw==}
2620 | dependencies:
2621 | prosemirror-keymap: 1.2.2
2622 | prosemirror-model: 1.19.3
2623 | prosemirror-state: 1.4.3
2624 | prosemirror-transform: 1.8.0
2625 | prosemirror-view: 1.32.4
2626 |
2627 | /prosemirror-trailing-node@2.0.7(prosemirror-model@1.19.3)(prosemirror-state@1.4.3)(prosemirror-view@1.32.4):
2628 | resolution: {integrity: sha512-8zcZORYj/8WEwsGo6yVCRXFMOfBo0Ub3hCUvmoWIZYfMP26WqENU0mpEP27w7mt8buZWuGrydBewr0tOArPb1Q==}
2629 | peerDependencies:
2630 | prosemirror-model: ^1.19.0
2631 | prosemirror-state: ^1.4.2
2632 | prosemirror-view: ^1.31.2
2633 | dependencies:
2634 | '@remirror/core-constants': 2.0.2
2635 | '@remirror/core-helpers': 3.0.0
2636 | escape-string-regexp: 4.0.0
2637 | prosemirror-model: 1.19.3
2638 | prosemirror-state: 1.4.3
2639 | prosemirror-view: 1.32.4
2640 |
2641 | /prosemirror-transform@1.8.0:
2642 | resolution: {integrity: sha512-BaSBsIMv52F1BVVMvOmp1yzD3u65uC3HTzCBQV1WDPqJRQ2LuHKcyfn0jwqodo8sR9vVzMzZyI+Dal5W9E6a9A==}
2643 | dependencies:
2644 | prosemirror-model: 1.19.3
2645 |
2646 | /prosemirror-view@1.32.4:
2647 | resolution: {integrity: sha512-WoT+ZYePp0WQvp5coABAysheZg9WttW3TSEUNgsfDQXmVOJlnjkbFbXicKPvWFLiC0ZjKt1ykbyoVKqhVnCiSQ==}
2648 | dependencies:
2649 | prosemirror-model: 1.19.3
2650 | prosemirror-state: 1.4.3
2651 | prosemirror-transform: 1.8.0
2652 |
2653 | /psl@1.9.0:
2654 | resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==}
2655 | dev: false
2656 |
2657 | /punycode@2.3.1:
2658 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
2659 | engines: {node: '>=6'}
2660 |
2661 | /querystringify@2.2.0:
2662 | resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==}
2663 | dev: false
2664 |
2665 | /queue-microtask@1.2.3:
2666 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
2667 |
2668 | /react-dom@18.2.0(react@18.2.0):
2669 | resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==}
2670 | peerDependencies:
2671 | react: ^18.2.0
2672 | dependencies:
2673 | loose-envify: 1.4.0
2674 | react: 18.2.0
2675 | scheduler: 0.23.0
2676 | dev: false
2677 |
2678 | /react-is@18.2.0:
2679 | resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==}
2680 | dev: false
2681 |
2682 | /react@18.2.0:
2683 | resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==}
2684 | engines: {node: '>=0.10.0'}
2685 | dependencies:
2686 | loose-envify: 1.4.0
2687 | dev: false
2688 |
2689 | /read-cache@1.0.0:
2690 | resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==}
2691 | dependencies:
2692 | pify: 2.3.0
2693 |
2694 | /readdirp@3.6.0:
2695 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
2696 | engines: {node: '>=8.10.0'}
2697 | dependencies:
2698 | picomatch: 2.3.1
2699 |
2700 | /requires-port@1.0.0:
2701 | resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==}
2702 | dev: false
2703 |
2704 | /resolve@1.19.0:
2705 | resolution: {integrity: sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==}
2706 | dependencies:
2707 | is-core-module: 2.13.1
2708 | path-parse: 1.0.7
2709 | dev: true
2710 |
2711 | /resolve@1.22.8:
2712 | resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==}
2713 | hasBin: true
2714 | dependencies:
2715 | is-core-module: 2.13.1
2716 | path-parse: 1.0.7
2717 | supports-preserve-symlinks-flag: 1.0.0
2718 |
2719 | /reusify@1.0.4:
2720 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
2721 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
2722 |
2723 | /rollup@3.29.4:
2724 | resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==}
2725 | engines: {node: '>=14.18.0', npm: '>=8.0.0'}
2726 | hasBin: true
2727 | optionalDependencies:
2728 | fsevents: 2.3.3
2729 | dev: true
2730 |
2731 | /rope-sequence@1.3.4:
2732 | resolution: {integrity: sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ==}
2733 |
2734 | /run-parallel@1.2.0:
2735 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
2736 | dependencies:
2737 | queue-microtask: 1.2.3
2738 |
2739 | /safer-buffer@2.1.2:
2740 | resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
2741 | dev: false
2742 |
2743 | /saxes@6.0.0:
2744 | resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==}
2745 | engines: {node: '>=v12.22.7'}
2746 | dependencies:
2747 | xmlchars: 2.2.0
2748 | dev: false
2749 |
2750 | /scheduler@0.23.0:
2751 | resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==}
2752 | dependencies:
2753 | loose-envify: 1.4.0
2754 | dev: false
2755 |
2756 | /semver@7.5.4:
2757 | resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==}
2758 | engines: {node: '>=10'}
2759 | hasBin: true
2760 | dependencies:
2761 | lru-cache: 6.0.0
2762 | dev: true
2763 |
2764 | /seroval@0.12.3:
2765 | resolution: {integrity: sha512-5WDeMpv7rmEylsypRj1iwRVHE/QLsMLiZ+9savlNNQEVdgGia1iRMb7qyaAagY0wu/7+QTe6d2wldk/lgaLb6g==}
2766 | engines: {node: '>=10'}
2767 | dev: false
2768 |
2769 | /slash@3.0.0:
2770 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
2771 | engines: {node: '>=8'}
2772 | dev: false
2773 |
2774 | /solid-js@1.8.5:
2775 | resolution: {integrity: sha512-xvtJvzJzWbsn35oKFhW9kNwaxG1Z/YLMsDp4tLVcYZTMPzvzQ8vEZuyDQ6nt7xDArVgZJ7TUFrJUwrui/oq53A==}
2776 | dependencies:
2777 | csstype: 3.1.2
2778 | seroval: 0.12.3
2779 | dev: false
2780 |
2781 | /solid-swr-store@0.10.7(solid-js@1.8.5)(swr-store@0.10.6):
2782 | resolution: {integrity: sha512-A6d68aJmRP471aWqKKPE2tpgOiR5fH4qXQNfKIec+Vap+MGQm3tvXlT8n0I8UgJSlNAsSAUuw2VTviH2h3Vv5g==}
2783 | engines: {node: '>=10'}
2784 | peerDependencies:
2785 | solid-js: ^1.2
2786 | swr-store: ^0.10
2787 | dependencies:
2788 | solid-js: 1.8.5
2789 | swr-store: 0.10.6
2790 | dev: false
2791 |
2792 | /sonner@1.2.0(react-dom@18.2.0)(react@18.2.0):
2793 | resolution: {integrity: sha512-4bIPKrhF+Z4yEC4EZvNBswcVzMrUhztOQXqyIoiZqiqN1TT39FeK+TgRsQidvvztnYgOn4+S3LdAsri61c7ATA==}
2794 | peerDependencies:
2795 | react: ^18.0.0
2796 | react-dom: ^18.0.0
2797 | dependencies:
2798 | react: 18.2.0
2799 | react-dom: 18.2.0(react@18.2.0)
2800 | dev: false
2801 |
2802 | /source-map-js@1.0.2:
2803 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
2804 | engines: {node: '>=0.10.0'}
2805 |
2806 | /source-map@0.6.1:
2807 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
2808 | engines: {node: '>=0.10.0'}
2809 |
2810 | /sprintf-js@1.0.3:
2811 | resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==}
2812 | dev: true
2813 |
2814 | /sswr@2.0.0(svelte@4.2.3):
2815 | resolution: {integrity: sha512-mV0kkeBHcjcb0M5NqKtKVg/uTIYNlIIniyDfSGrSfxpEdM9C365jK0z55pl9K0xAkNTJi2OAOVFQpgMPUk+V0w==}
2816 | peerDependencies:
2817 | svelte: ^4.0.0
2818 | dependencies:
2819 | svelte: 4.2.3
2820 | swrev: 4.0.0
2821 | dev: false
2822 |
2823 | /stack-utils@2.0.6:
2824 | resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==}
2825 | engines: {node: '>=10'}
2826 | dependencies:
2827 | escape-string-regexp: 2.0.0
2828 | dev: false
2829 |
2830 | /string-argv@0.3.2:
2831 | resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==}
2832 | engines: {node: '>=0.6.19'}
2833 | dev: true
2834 |
2835 | /strip-json-comments@3.1.1:
2836 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
2837 | engines: {node: '>=8'}
2838 | dev: true
2839 |
2840 | /sucrase@3.34.0:
2841 | resolution: {integrity: sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==}
2842 | engines: {node: '>=8'}
2843 | hasBin: true
2844 | dependencies:
2845 | '@jridgewell/gen-mapping': 0.3.3
2846 | commander: 4.1.1
2847 | glob: 7.1.6
2848 | lines-and-columns: 1.2.4
2849 | mz: 2.7.0
2850 | pirates: 4.0.6
2851 | ts-interface-checker: 0.1.13
2852 |
2853 | /supports-color@5.5.0:
2854 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
2855 | engines: {node: '>=4'}
2856 | dependencies:
2857 | has-flag: 3.0.0
2858 | dev: false
2859 |
2860 | /supports-color@7.2.0:
2861 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
2862 | engines: {node: '>=8'}
2863 | dependencies:
2864 | has-flag: 4.0.0
2865 | dev: false
2866 |
2867 | /supports-preserve-symlinks-flag@1.0.0:
2868 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
2869 | engines: {node: '>= 0.4'}
2870 |
2871 | /svelte@4.2.3:
2872 | resolution: {integrity: sha512-sqmG9KC6uUc7fb3ZuWoxXvqk6MI9Uu4ABA1M0fYDgTlFYu1k02xp96u6U9+yJZiVm84m9zge7rrA/BNZdFpOKw==}
2873 | engines: {node: '>=16'}
2874 | dependencies:
2875 | '@ampproject/remapping': 2.2.1
2876 | '@jridgewell/sourcemap-codec': 1.4.15
2877 | '@jridgewell/trace-mapping': 0.3.20
2878 | acorn: 8.11.2
2879 | aria-query: 5.3.0
2880 | axobject-query: 3.2.1
2881 | code-red: 1.0.4
2882 | css-tree: 2.3.1
2883 | estree-walker: 3.0.3
2884 | is-reference: 3.0.2
2885 | locate-character: 3.0.0
2886 | magic-string: 0.30.5
2887 | periscopic: 3.1.0
2888 | dev: false
2889 |
2890 | /swr-store@0.10.6:
2891 | resolution: {integrity: sha512-xPjB1hARSiRaNNlUQvWSVrG5SirCjk2TmaUyzzvk69SZQan9hCJqw/5rG9iL7xElHU784GxRPISClq4488/XVw==}
2892 | engines: {node: '>=10'}
2893 | dependencies:
2894 | dequal: 2.0.3
2895 | dev: false
2896 |
2897 | /swr@2.2.0(react@18.2.0):
2898 | resolution: {integrity: sha512-AjqHOv2lAhkuUdIiBu9xbuettzAzWXmCEcLONNKJRba87WAefz8Ca9d6ds/SzrPc235n1IxWYdhJ2zF3MNUaoQ==}
2899 | peerDependencies:
2900 | react: ^16.11.0 || ^17.0.0 || ^18.0.0
2901 | dependencies:
2902 | react: 18.2.0
2903 | use-sync-external-store: 1.2.0(react@18.2.0)
2904 | dev: false
2905 |
2906 | /swrev@4.0.0:
2907 | resolution: {integrity: sha512-LqVcOHSB4cPGgitD1riJ1Hh4vdmITOp+BkmfmXRh4hSF/t7EnS4iD+SOTmq7w5pPm/SiPeto4ADbKS6dHUDWFA==}
2908 | dev: false
2909 |
2910 | /swrv@1.0.4(vue@3.3.4):
2911 | resolution: {integrity: sha512-zjEkcP8Ywmj+xOJW3lIT65ciY/4AL4e/Or7Gj0MzU3zBJNMdJiT8geVZhINavnlHRMMCcJLHhraLTAiDOTmQ9g==}
2912 | peerDependencies:
2913 | vue: '>=3.2.26 < 4'
2914 | dependencies:
2915 | vue: 3.3.4
2916 | dev: false
2917 |
2918 | /symbol-tree@3.2.4:
2919 | resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==}
2920 | dev: false
2921 |
2922 | /tailwindcss-animate@1.0.7(tailwindcss@3.3.3):
2923 | resolution: {integrity: sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==}
2924 | peerDependencies:
2925 | tailwindcss: '>=3.0.0 || insiders'
2926 | dependencies:
2927 | tailwindcss: 3.3.3
2928 | dev: false
2929 |
2930 | /tailwindcss@3.3.3:
2931 | resolution: {integrity: sha512-A0KgSkef7eE4Mf+nKJ83i75TMyq8HqY3qmFIJSWy8bNt0v1lG7jUcpGpoTFxAwYcWOphcTBLPPJg+bDfhDf52w==}
2932 | engines: {node: '>=14.0.0'}
2933 | hasBin: true
2934 | dependencies:
2935 | '@alloc/quick-lru': 5.2.0
2936 | arg: 5.0.2
2937 | chokidar: 3.5.3
2938 | didyoumean: 1.2.2
2939 | dlv: 1.1.3
2940 | fast-glob: 3.3.2
2941 | glob-parent: 6.0.2
2942 | is-glob: 4.0.3
2943 | jiti: 1.21.0
2944 | lilconfig: 2.1.0
2945 | micromatch: 4.0.5
2946 | normalize-path: 3.0.0
2947 | object-hash: 3.0.0
2948 | picocolors: 1.0.0
2949 | postcss: 8.4.29
2950 | postcss-import: 15.1.0(postcss@8.4.29)
2951 | postcss-js: 4.0.1(postcss@8.4.29)
2952 | postcss-load-config: 4.0.1(postcss@8.4.29)
2953 | postcss-nested: 6.0.1(postcss@8.4.29)
2954 | postcss-selector-parser: 6.0.13
2955 | resolve: 1.22.8
2956 | sucrase: 3.34.0
2957 | transitivePeerDependencies:
2958 | - ts-node
2959 |
2960 | /thenify-all@1.6.0:
2961 | resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==}
2962 | engines: {node: '>=0.8'}
2963 | dependencies:
2964 | thenify: 3.3.1
2965 |
2966 | /thenify@3.3.1:
2967 | resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==}
2968 | dependencies:
2969 | any-promise: 1.3.0
2970 |
2971 | /throttle-debounce@3.0.1:
2972 | resolution: {integrity: sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg==}
2973 | engines: {node: '>=10'}
2974 |
2975 | /tippy.js@6.3.7:
2976 | resolution: {integrity: sha512-E1d3oP2emgJ9dRQZdf3Kkn0qJgI6ZLpyS5z6ZkY1DF3kaQaBsGZsndEpHwx+eC+tYM41HaSNvNtLx8tU57FzTQ==}
2977 | dependencies:
2978 | '@popperjs/core': 2.11.8
2979 | dev: false
2980 |
2981 | /tiptap-markdown@0.8.2(@tiptap/core@2.1.12):
2982 | resolution: {integrity: sha512-RyfpnH475+FYVh1fCiWF9+wBvA8T6X3PqxZR1MApEewxkoQ5kREQFiVwjZiez9qUQk/Bxu3RerFSJot65V6cbQ==}
2983 | peerDependencies:
2984 | '@tiptap/core': ^2.0.3
2985 | dependencies:
2986 | '@tiptap/core': 2.1.12(@tiptap/pm@2.1.7)
2987 | '@types/markdown-it': 12.2.3
2988 | markdown-it: 13.0.2
2989 | markdown-it-task-lists: 2.1.1
2990 | prosemirror-markdown: 1.11.2
2991 | dev: false
2992 |
2993 | /to-fast-properties@2.0.0:
2994 | resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==}
2995 | engines: {node: '>=4'}
2996 |
2997 | /to-regex-range@5.0.1:
2998 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
2999 | engines: {node: '>=8.0'}
3000 | dependencies:
3001 | is-number: 7.0.0
3002 |
3003 | /tough-cookie@4.1.3:
3004 | resolution: {integrity: sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==}
3005 | engines: {node: '>=6'}
3006 | dependencies:
3007 | psl: 1.9.0
3008 | punycode: 2.3.1
3009 | universalify: 0.2.0
3010 | url-parse: 1.5.10
3011 | dev: false
3012 |
3013 | /tr46@0.0.3:
3014 | resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
3015 | dev: false
3016 |
3017 | /tr46@3.0.0:
3018 | resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==}
3019 | engines: {node: '>=12'}
3020 | dependencies:
3021 | punycode: 2.3.1
3022 | dev: false
3023 |
3024 | /ts-interface-checker@0.1.13:
3025 | resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
3026 |
3027 | /type-detect@4.0.8:
3028 | resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==}
3029 | engines: {node: '>=4'}
3030 | dev: false
3031 |
3032 | /type-fest@2.19.0:
3033 | resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==}
3034 | engines: {node: '>=12.20'}
3035 |
3036 | /typescript@5.0.2:
3037 | resolution: {integrity: sha512-wVORMBGO/FAs/++blGNeAVdbNKtIh1rbBL2EyQ1+J9lClJ93KiiKe8PmFIVdXhHcyv44SL9oglmfeSsndo0jRw==}
3038 | engines: {node: '>=12.20'}
3039 | hasBin: true
3040 | dev: true
3041 |
3042 | /typescript@5.0.4:
3043 | resolution: {integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==}
3044 | engines: {node: '>=12.20'}
3045 | hasBin: true
3046 | dev: true
3047 |
3048 | /uc.micro@1.0.6:
3049 | resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==}
3050 |
3051 | /undici-types@5.26.5:
3052 | resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==}
3053 | dev: false
3054 |
3055 | /undici@5.27.0:
3056 | resolution: {integrity: sha512-l3ydWhlhOJzMVOYkymLykcRRXqbUaQriERtR70B9LzNkZ4bX52Fc8wbTDneMiwo8T+AemZXvXaTx+9o5ROxrXg==}
3057 | engines: {node: '>=14.0'}
3058 | dependencies:
3059 | '@fastify/busboy': 2.1.0
3060 | dev: false
3061 |
3062 | /universalify@0.1.2:
3063 | resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==}
3064 | engines: {node: '>= 4.0.0'}
3065 | dev: true
3066 |
3067 | /universalify@0.2.0:
3068 | resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==}
3069 | engines: {node: '>= 4.0.0'}
3070 | dev: false
3071 |
3072 | /update-browserslist-db@1.0.13(browserslist@4.22.1):
3073 | resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==}
3074 | hasBin: true
3075 | peerDependencies:
3076 | browserslist: '>= 4.21.0'
3077 | dependencies:
3078 | browserslist: 4.22.1
3079 | escalade: 3.1.1
3080 | picocolors: 1.0.0
3081 | dev: true
3082 |
3083 | /uri-js@4.4.1:
3084 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
3085 | dependencies:
3086 | punycode: 2.3.1
3087 | dev: true
3088 |
3089 | /url-parse@1.5.10:
3090 | resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==}
3091 | dependencies:
3092 | querystringify: 2.2.0
3093 | requires-port: 1.0.0
3094 | dev: false
3095 |
3096 | /use-sync-external-store@1.2.0(react@18.2.0):
3097 | resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==}
3098 | peerDependencies:
3099 | react: ^16.8.0 || ^17.0.0 || ^18.0.0
3100 | dependencies:
3101 | react: 18.2.0
3102 | dev: false
3103 |
3104 | /util-deprecate@1.0.2:
3105 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
3106 |
3107 | /validator@13.11.0:
3108 | resolution: {integrity: sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==}
3109 | engines: {node: '>= 0.10'}
3110 | dev: true
3111 |
3112 | /vite-plugin-dts@3.5.3(typescript@5.0.2)(vite@4.4.5):
3113 | resolution: {integrity: sha512-h94j/+SR1PhLR9jnEtcjZILagE2QZBAV8V1y3T2Ujcet1VI0Et4dZSU1W8fbnp6obB7B3/b8hArqdi2/9HuH+w==}
3114 | engines: {node: ^14.18.0 || >=16.0.0}
3115 | peerDependencies:
3116 | typescript: '*'
3117 | vite: '*'
3118 | peerDependenciesMeta:
3119 | vite:
3120 | optional: true
3121 | dependencies:
3122 | '@microsoft/api-extractor': 7.38.3
3123 | '@rollup/pluginutils': 5.0.5
3124 | '@vue/language-core': 1.8.22(typescript@5.0.2)
3125 | debug: 4.3.4
3126 | kolorist: 1.8.0
3127 | typescript: 5.0.2
3128 | vite: 4.4.5
3129 | vue-tsc: 1.8.22(typescript@5.0.2)
3130 | transitivePeerDependencies:
3131 | - '@types/node'
3132 | - rollup
3133 | - supports-color
3134 | dev: true
3135 |
3136 | /vite@4.4.5:
3137 | resolution: {integrity: sha512-4m5kEtAWHYr0O1Fu7rZp64CfO1PsRGZlD3TAB32UmQlpd7qg15VF7ROqGN5CyqN7HFuwr7ICNM2+fDWRqFEKaA==}
3138 | engines: {node: ^14.18.0 || >=16.0.0}
3139 | hasBin: true
3140 | peerDependencies:
3141 | '@types/node': '>= 14'
3142 | less: '*'
3143 | lightningcss: ^1.21.0
3144 | sass: '*'
3145 | stylus: '*'
3146 | sugarss: '*'
3147 | terser: ^5.4.0
3148 | peerDependenciesMeta:
3149 | '@types/node':
3150 | optional: true
3151 | less:
3152 | optional: true
3153 | lightningcss:
3154 | optional: true
3155 | sass:
3156 | optional: true
3157 | stylus:
3158 | optional: true
3159 | sugarss:
3160 | optional: true
3161 | terser:
3162 | optional: true
3163 | dependencies:
3164 | esbuild: 0.18.20
3165 | postcss: 8.4.29
3166 | rollup: 3.29.4
3167 | optionalDependencies:
3168 | fsevents: 2.3.3
3169 | dev: true
3170 |
3171 | /vue-demi@0.14.6(vue@3.3.4):
3172 | resolution: {integrity: sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==}
3173 | engines: {node: '>=12'}
3174 | hasBin: true
3175 | requiresBuild: true
3176 | peerDependencies:
3177 | '@vue/composition-api': ^1.0.0-rc.1
3178 | vue: ^3.0.0-0 || ^2.6.0
3179 | peerDependenciesMeta:
3180 | '@vue/composition-api':
3181 | optional: true
3182 | dependencies:
3183 | vue: 3.3.4
3184 | dev: false
3185 |
3186 | /vue-template-compiler@2.7.15:
3187 | resolution: {integrity: sha512-yQxjxMptBL7UAog00O8sANud99C6wJF+7kgbcwqkvA38vCGF7HWE66w0ZFnS/kX5gSoJr/PQ4/oS3Ne2pW37Og==}
3188 | dependencies:
3189 | de-indent: 1.0.2
3190 | he: 1.2.0
3191 | dev: true
3192 |
3193 | /vue-tsc@1.8.22(typescript@5.0.2):
3194 | resolution: {integrity: sha512-j9P4kHtW6eEE08aS5McFZE/ivmipXy0JzrnTgbomfABMaVKx37kNBw//irL3+LlE3kOo63XpnRigyPC3w7+z+A==}
3195 | hasBin: true
3196 | peerDependencies:
3197 | typescript: '*'
3198 | dependencies:
3199 | '@volar/typescript': 1.10.10
3200 | '@vue/language-core': 1.8.22(typescript@5.0.2)
3201 | semver: 7.5.4
3202 | typescript: 5.0.2
3203 | dev: true
3204 |
3205 | /vue-tsc@1.8.5(typescript@5.0.2):
3206 | resolution: {integrity: sha512-Jr8PTghJIwp69MFsEZoADDcv2l+lXA8juyN/5AYA5zxyZNvIHjSbgKgkYIYc1qnihrOyIG1VOnfk4ZE0jqn8bw==}
3207 | hasBin: true
3208 | peerDependencies:
3209 | typescript: '*'
3210 | dependencies:
3211 | '@vue/language-core': 1.8.5(typescript@5.0.2)
3212 | '@vue/typescript': 1.8.5(typescript@5.0.2)
3213 | semver: 7.5.4
3214 | typescript: 5.0.2
3215 | dev: true
3216 |
3217 | /vue@3.3.4:
3218 | resolution: {integrity: sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==}
3219 | dependencies:
3220 | '@vue/compiler-dom': 3.3.4
3221 | '@vue/compiler-sfc': 3.3.4
3222 | '@vue/runtime-dom': 3.3.4
3223 | '@vue/server-renderer': 3.3.4(vue@3.3.4)
3224 | '@vue/shared': 3.3.4
3225 |
3226 | /w3c-keyname@2.2.8:
3227 | resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==}
3228 |
3229 | /w3c-xmlserializer@4.0.0:
3230 | resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==}
3231 | engines: {node: '>=14'}
3232 | dependencies:
3233 | xml-name-validator: 4.0.0
3234 | dev: false
3235 |
3236 | /web-streams-polyfill@4.0.0-beta.3:
3237 | resolution: {integrity: sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==}
3238 | engines: {node: '>= 14'}
3239 | dev: false
3240 |
3241 | /webidl-conversions@3.0.1:
3242 | resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
3243 | dev: false
3244 |
3245 | /webidl-conversions@7.0.0:
3246 | resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==}
3247 | engines: {node: '>=12'}
3248 | dev: false
3249 |
3250 | /whatwg-encoding@2.0.0:
3251 | resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==}
3252 | engines: {node: '>=12'}
3253 | dependencies:
3254 | iconv-lite: 0.6.3
3255 | dev: false
3256 |
3257 | /whatwg-mimetype@3.0.0:
3258 | resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==}
3259 | engines: {node: '>=12'}
3260 | dev: false
3261 |
3262 | /whatwg-url@11.0.0:
3263 | resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==}
3264 | engines: {node: '>=12'}
3265 | dependencies:
3266 | tr46: 3.0.0
3267 | webidl-conversions: 7.0.0
3268 | dev: false
3269 |
3270 | /whatwg-url@5.0.0:
3271 | resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==}
3272 | dependencies:
3273 | tr46: 0.0.3
3274 | webidl-conversions: 3.0.1
3275 | dev: false
3276 |
3277 | /wrappy@1.0.2:
3278 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
3279 |
3280 | /ws@8.14.2:
3281 | resolution: {integrity: sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==}
3282 | engines: {node: '>=10.0.0'}
3283 | peerDependencies:
3284 | bufferutil: ^4.0.1
3285 | utf-8-validate: '>=5.0.2'
3286 | peerDependenciesMeta:
3287 | bufferutil:
3288 | optional: true
3289 | utf-8-validate:
3290 | optional: true
3291 | dev: false
3292 |
3293 | /xml-name-validator@4.0.0:
3294 | resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==}
3295 | engines: {node: '>=12'}
3296 | dev: false
3297 |
3298 | /xmlchars@2.2.0:
3299 | resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==}
3300 | dev: false
3301 |
3302 | /yallist@4.0.0:
3303 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
3304 | dev: true
3305 |
3306 | /yaml@2.3.4:
3307 | resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==}
3308 | engines: {node: '>= 14'}
3309 |
3310 | /z-schema@5.0.5:
3311 | resolution: {integrity: sha512-D7eujBWkLa3p2sIpJA0d1pr7es+a7m0vFAnZLlCEKq/Ij2k0MLi9Br2UPxoxdYystm5K1yeBGzub0FlYUEWj2Q==}
3312 | engines: {node: '>=8.0.0'}
3313 | hasBin: true
3314 | dependencies:
3315 | lodash.get: 4.4.2
3316 | lodash.isequal: 4.5.0
3317 | validator: 13.11.0
3318 | optionalDependencies:
3319 | commander: 9.5.0
3320 | dev: true
3321 |
--------------------------------------------------------------------------------