diff --git a/packages/loro-demo/.gitignore b/packages/loro-demo/.gitignore
new file mode 100644
index 00000000..8f6c617e
--- /dev/null
+++ b/packages/loro-demo/.gitignore
@@ -0,0 +1,12 @@
+.DS_Store
+node_modules
+/build
+/.svelte-kit
+/package
+.env
+.env.*
+!.env.example
+.vercel
+.output
+vite.config.js.timestamp-*
+vite.config.ts.timestamp-*
diff --git a/packages/loro-demo/.npmrc b/packages/loro-demo/.npmrc
new file mode 100644
index 00000000..b6f27f13
--- /dev/null
+++ b/packages/loro-demo/.npmrc
@@ -0,0 +1 @@
+engine-strict=true
diff --git a/packages/loro-demo/Dockerfile b/packages/loro-demo/Dockerfile
new file mode 100644
index 00000000..1c163d05
--- /dev/null
+++ b/packages/loro-demo/Dockerfile
@@ -0,0 +1,29 @@
+# build the sapper app
+FROM node AS base
+ENV PNPM_HOME="/pnpm"
+ENV PATH="$PNPM_HOME:$PATH"
+RUN corepack enable
+COPY ./../.. /app/
+WORKDIR /app
+
+# FROM base AS prod-deps
+# RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --prod --frozen-lockfile
+
+FROM base AS build
+ENV CI=1
+RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile
+# RUN cd packages/website; --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile
+
+RUN cd packages/website; pnpm run build
+
+
+# copy node_modules/ and other build files over
+FROM node:alpine
+
+WORKDIR /app
+
+COPY --from=build /app/packages/website/build .
+COPY --from=build /app/packages/website/package.json ./package.json
+
+EXPOSE 3000
+CMD ["node", "."]
\ No newline at end of file
diff --git a/packages/loro-demo/package.json b/packages/loro-demo/package.json
new file mode 100644
index 00000000..10857e7e
--- /dev/null
+++ b/packages/loro-demo/package.json
@@ -0,0 +1,44 @@
+{
+ "name": "website",
+ "version": "0.0.1",
+ "scripts": {
+ "dev": "vite dev",
+ "build": "vite build",
+ "preview": "vite preview",
+ "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
+ "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch"
+ },
+ "devDependencies": {
+ "@fontsource/fira-mono": "^4.5.10",
+ "@neoconfetti/svelte": "^1.0.0",
+ "@sveltejs/adapter-auto": "^3.0.0",
+ "@sveltejs/adapter-node": "^4.0.1",
+ "@sveltejs/kit": "^2.0.0",
+ "@sveltejs/vite-plugin-svelte": "^3.0.0",
+ "@types/quill": "^2.0.14",
+ "svelte": "^4.2.7",
+ "svelte-check": "^3.6.0",
+ "tslib": "^2.4.1",
+ "typescript": "^5.0.0",
+ "vite": "^5.0.3",
+ "vite-plugin-top-level-await": "^1.4.1",
+ "vite-plugin-wasm": "^3.3.0"
+ },
+ "type": "module",
+ "dependencies": {
+ "@steeze-ui/svelte-icon": "^1.5.0",
+ "loro-crdt": "^0.11.1",
+ "prosemirror-commands": "^1.5.2",
+ "prosemirror-dropcursor": "^1.8.1",
+ "prosemirror-gapcursor": "^1.3.2",
+ "prosemirror-history": "^1.3.2",
+ "prosemirror-inputrules": "^1.4.0",
+ "prosemirror-keymap": "^1.2.2",
+ "prosemirror-model": "^1.19.4",
+ "prosemirror-schema-basic": "^1.2.2",
+ "prosemirror-schema-list": "^1.3.0",
+ "prosemirror-state": "^1.4.3",
+ "prosemirror-view": "^1.33.1",
+ "quill": "^1.3.7"
+ }
+}
diff --git a/packages/loro-demo/src/app.d.ts b/packages/loro-demo/src/app.d.ts
new file mode 100644
index 00000000..743f07b2
--- /dev/null
+++ b/packages/loro-demo/src/app.d.ts
@@ -0,0 +1,13 @@
+// See https://kit.svelte.dev/docs/types#app
+// for information about these interfaces
+declare global {
+ namespace App {
+ // interface Error {}
+ // interface Locals {}
+ // interface PageData {}
+ // interface PageState {}
+ // interface Platform {}
+ }
+}
+
+export {};
diff --git a/packages/loro-demo/src/app.html b/packages/loro-demo/src/app.html
new file mode 100644
index 00000000..5889edbd
--- /dev/null
+++ b/packages/loro-demo/src/app.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+ %sveltekit.head%
+
+
+ %sveltekit.body%
+
+
diff --git a/packages/loro-demo/src/lib/Hero.svelte b/packages/loro-demo/src/lib/Hero.svelte
new file mode 100644
index 00000000..b068cca4
--- /dev/null
+++ b/packages/loro-demo/src/lib/Hero.svelte
@@ -0,0 +1,60 @@
+
+
+
+
+

+
+
+
JadedBlueEyes
+
Finally, a website!
+
+
+
+
diff --git a/packages/loro-demo/src/lib/LiveEditor.svelte b/packages/loro-demo/src/lib/LiveEditor.svelte
new file mode 100644
index 00000000..2189b517
--- /dev/null
+++ b/packages/loro-demo/src/lib/LiveEditor.svelte
@@ -0,0 +1,108 @@
+
+
+
+
+
+
+
diff --git a/packages/loro-demo/src/lib/logo.svg b/packages/loro-demo/src/lib/logo.svg
new file mode 100644
index 00000000..771b016a
--- /dev/null
+++ b/packages/loro-demo/src/lib/logo.svg
@@ -0,0 +1,387 @@
+
+
\ No newline at end of file
diff --git a/packages/loro-demo/src/lib/menu/Menu.svelte b/packages/loro-demo/src/lib/menu/Menu.svelte
new file mode 100644
index 00000000..da9f9529
--- /dev/null
+++ b/packages/loro-demo/src/lib/menu/Menu.svelte
@@ -0,0 +1,46 @@
+
+
+
+
+
diff --git a/packages/loro-demo/src/lib/menu/MenuIcon.svelte b/packages/loro-demo/src/lib/menu/MenuIcon.svelte
new file mode 100644
index 00000000..c6b27b7d
--- /dev/null
+++ b/packages/loro-demo/src/lib/menu/MenuIcon.svelte
@@ -0,0 +1,8 @@
+
+
+
diff --git a/packages/loro-demo/src/lib/menu/index.ts b/packages/loro-demo/src/lib/menu/index.ts
new file mode 100644
index 00000000..1b69c041
--- /dev/null
+++ b/packages/loro-demo/src/lib/menu/index.ts
@@ -0,0 +1,67 @@
+import { Plugin, type Command } from "prosemirror-state";
+import { setBlockType, toggleMark } from "prosemirror-commands";
+import { richTextSchema as schema } from "../prosemirror/schema";
+
+import Menu from "./Menu.svelte";
+import type { EditorView } from "prosemirror-view";
+
+class MenuView {
+ items: { command: Command; text: string; name: string; }[];
+ editorView: EditorView;
+ dom: HTMLDivElement;
+ menu: Menu;
+ constructor(items: { command: Command; text: string; name: string; }[], editorView: EditorView) {
+ this.items = items;
+ this.editorView = editorView;
+ this.update();
+
+ const onCommand = (command: (arg0: any, arg1: any, arg2: any) => void) => {
+ editorView.focus();
+ command(editorView.state, editorView.dispatch, editorView);
+ };
+
+ this.dom = document.createElement("div");
+ this.menu = new Menu({
+ target: this.dom,
+ props: {
+ items,
+ onCommand
+ }
+ });
+ }
+
+ update() {
+ // this.items.forEach(({ command, dom }) => {
+ // let active = command(this.editorView.state, null, this.editorView);
+ // dom.style.display = active ? "" : "none";
+ // });
+ }
+
+ destroy() {
+ this.dom.remove();
+ }
+}
+
+function menuPlugin(items: { command: Command; text: string; name: string; }[]) {
+ return new Plugin({
+ view(editorView) {
+ let menuView = new MenuView(items, editorView);
+ editorView.dom?.parentNode?.insertBefore(menuView.dom, editorView.dom);
+ return menuView;
+ }
+ });
+}
+
+let menu = menuPlugin([
+ { command: toggleMark(schema.marks.strong), text: "B", name: "strong" },
+ { command: toggleMark(schema.marks.em), text: "i", name: "em" },
+ { command: toggleMark(schema.marks.code), text: "", name: "code" },
+ { command: setBlockType(schema.nodes.heading), text: "H", name: "heading" },
+ { command: setBlockType(schema.nodes.paragraph), text: "p", name: "paragraph" },
+ // {
+ // command: setBlockType(schema.nodes.paragraph),
+ // dom: icon("p", "paragraph")
+ // },
+]);
+
+export default menu;
diff --git a/packages/loro-demo/src/lib/prosemirror/Editor.svelte b/packages/loro-demo/src/lib/prosemirror/Editor.svelte
new file mode 100644
index 00000000..92de4118
--- /dev/null
+++ b/packages/loro-demo/src/lib/prosemirror/Editor.svelte
@@ -0,0 +1,216 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/packages/loro-demo/src/lib/prosemirror/editor.ts b/packages/loro-demo/src/lib/prosemirror/editor.ts
new file mode 100644
index 00000000..16afac8f
--- /dev/null
+++ b/packages/loro-demo/src/lib/prosemirror/editor.ts
@@ -0,0 +1,100 @@
+// import type { Delta, Loro, LoroText } from "loro-crdt";
+
+// import { EditorState, TextSelection, Plugin } from "prosemirror-state";
+// import { DOMParser, DOMSerializer, Node, Schema } from "prosemirror-model";
+// import { richTextSchema, EXPAND_CONFIG } from "./schema";
+
+// import { keymap } from "prosemirror-keymap";
+// import { baseKeymap } from "prosemirror-commands";
+// import { history, redo, undo } from "prosemirror-history";
+// import { dropCursor } from "prosemirror-dropcursor"
+// import { gapCursor } from "prosemirror-gapcursor"
+
+// import { richTextKeyMapPlugin } from "./keymap";
+
+
+// import { PluginKey } from 'prosemirror-state'
+// const syncPluginKey = new PluginKey('loro-sync')
+
+// /**
+// * Create an empty editor state with rich text editing capabilities
+// * @param html {string}
+// * @param plugins {array}
+// * @return {EditorState}
+// */
+// export const createRichTextEditor = (document: string, state: Loro, plugins = []) => {
+// state.configTextStyle(EXPAND_CONFIG)
+
+
+// const syncPlugin = new Plugin({
+// key: syncPluginKey,
+// state: {
+// init(config, instance) {
+// let richtext = state.getText(document);
+// richtext.
+// instance.doc = new Node()
+// richtext.subscribe(state, (event) => {
+// for (const change of event.events) {
+// console.log(change)
+// }
+// // if (!event.local && event.diff.type == "text") {
+// // console.log(state.peerId, "CRDT_EVENT", event);
+// // const eventDelta = event.diff.diff;
+// // const delta: Delta[] = [];
+// // let index = 0;
+// // for (let i = 0; i < eventDelta.length; i++) {
+// // const d = eventDelta[i];
+// // const length = d.delete || d.retain || d.insert!.length;
+// // // skip the last newline that quill automatically appends
+// // if (
+// // d.insert &&
+// // d.insert === "\n" &&
+// // // index === quill.getLength() - 1 &&
+// // i === eventDelta.length - 1 &&
+// // d.attributes != null &&
+// // Object.keys(d.attributes).length > 0
+// // ) {
+// // delta.push({
+// // retain: 1,
+// // attributes: d.attributes,
+// // });
+// // index += length;
+// // continue;
+// // }
+
+// // delta.push(d);
+// // index += length;
+// // }
+
+// // // quill.updateContents(new Delta(delta), "this" as any);
+// // // const a = this.richtext.toDelta();
+// // // const b = this.quill.getContents().ops;
+// // // console.log(this.doc.peerId, "COMPARE AFTER CRDT_EVENT");
+// // // if (!assertEqual(a, b as any)) {
+// // // quill.setContents(new Delta(a), "this" as any);
+// // // }
+// // }
+// });
+// },
+// apply(tr, value, oldState, newState) {
+// console.log(tr, value, oldState, newState)
+// },
+// }
+// });
+
+// return EditorState.create({
+// schema: richTextSchema,
+// // doc,
+// // selection,
+// plugins: [
+// // history(),
+// keymap({}), // {"Mod-z": undo, "Mod-y": redo, "Mod-Shift-z": redo}
+// keymap(baseKeymap),
+// dropCursor(),
+// gapCursor(),
+// syncPlugin,
+// richTextKeyMapPlugin,
+// ...plugins
+// ]
+// });
+// }
\ No newline at end of file
diff --git a/packages/loro-demo/src/lib/prosemirror/keymap.ts b/packages/loro-demo/src/lib/prosemirror/keymap.ts
new file mode 100644
index 00000000..85641b76
--- /dev/null
+++ b/packages/loro-demo/src/lib/prosemirror/keymap.ts
@@ -0,0 +1,111 @@
+import {
+ wrapIn, setBlockType, chainCommands, toggleMark, exitCode,
+ joinUp, joinDown, lift, selectParentNode
+} from "prosemirror-commands";
+import { wrapInList, splitListItem, liftListItem, sinkListItem } from "prosemirror-schema-list";
+import { undo, redo } from "prosemirror-history";
+import { undoInputRule } from "prosemirror-inputrules";
+import { richTextSchema } from "./schema";
+import { keymap } from "prosemirror-keymap"
+
+import type { Command, EditorState, Transaction } from "prosemirror-state";
+import type { EditorView } from "prosemirror-view";
+import type { Schema } from "prosemirror-model";
+const mac = typeof navigator != "undefined" ? /Mac/.test(navigator.platform) : false;
+type keyMap = { [x: string]: { combo: string, command: Command }[] };
+
+const addKey = (keyMap: keyMap, name: string, combo: string, command: Command) => {
+ if (!keyMap[name]) keyMap[name] = [];
+ keyMap[name].push({ combo, command });
+}
+
+const createKeyMapConfiguration = (schema: Schema) => {
+ let config: keyMap = {}
+
+ addKey(config, 'undo', "Mod-z", undo)
+
+ addKey(config, "redo", "Shift-Mod-z", redo);
+ addKey(config, "undoInputRule", "Backspace", undoInputRule);
+
+ if (!mac) addKey(config, "redo", "Mod-y", redo);
+
+ addKey(config, "joinUp", "Alt-ArrowUp", joinUp);
+ addKey(config, "joinDown", "Alt-ArrowDown", joinDown);
+ addKey(config, "lift", "Mod-BracketLeft", lift);
+ addKey(config, "selectParentNode", "Escape", selectParentNode);
+
+ if (!!schema.marks.strong) {
+ addKey(config, "toggleMarkStrong", "Mod-b", toggleMark(schema.marks.strong));
+ addKey(config, "toggleMarkStrong", "Mod-B", toggleMark(schema.marks.strong));
+ }
+
+ if (!!schema.marks.em) {
+ addKey(config, "toggleMarkEm", "Mod-i", toggleMark(schema.marks.em));
+ addKey(config, "toggleMarkEm", "Mod-I", toggleMark(schema.marks.em));
+ }
+ if (!!schema.marks.code)
+ addKey(config, "toggleMarkCode", "Mod-`", toggleMark(schema.marks.code));
+
+ if (!!schema.nodes.bullet_list)
+ addKey(config, "wrapInListUnordered", "Shift-Ctrl-8", wrapInList(schema.nodes.bullet_list));
+
+ if (!!schema.nodes.ordered_list)
+ addKey(config, "wrapInListOrdered", "Shift-Ctrl-9", wrapInList(schema.nodes.ordered_list));
+
+ if (!!schema.nodes.blockquote)
+ addKey(config, "wrapInBlockquote", "Ctrl->", wrapIn(schema.nodes.blockquote));
+
+ if (!!schema.nodes.hard_break) {
+ let br = schema.nodes.hard_break
+ const cmd = chainCommands(exitCode, (state, dispatch) => {
+ if (dispatch)
+ dispatch(state.tr.replaceSelectionWith(br.create()).scrollIntoView())
+ return true
+ })
+
+ addKey(config, "hardBreak", "Mod-Enter", cmd);
+ addKey(config, "hardBreak", "Shift-Enter", cmd);
+ if (mac) addKey(config, "hardBreak", "Ctrl-Enter", cmd);
+ }
+
+ if (!!schema.nodes.list_item) {
+ addKey(config, "splitListItem", "Enter", splitListItem(schema.nodes.list_item));
+ addKey(config, "liftListItem", "Mod-[", liftListItem(schema.nodes.list_item));
+ addKey(config, "sinkListItem", "Mod-]", sinkListItem(schema.nodes.list_item));
+ }
+ if (!!schema.nodes.paragraph)
+ addKey(config, "setBlockTypeParagraph", "Shift-Ctrl-0", setBlockType(schema.nodes.paragraph));
+
+ if (!!schema.nodes.code_block)
+ addKey(config, "setBlockTypeCode", "Shift-Ctrl-\\", setBlockType(schema.nodes.code_block));
+
+ if (!!schema.nodes.heading)
+ for (let i = 1; i <= 6; i++) {
+ addKey(config, `setHeading${i}`, `Shift-Ctrl-${i}`, setBlockType(schema.nodes.heading, { level: i }));
+ }
+
+ if (!!schema.nodes.horizontal_rule) {
+ addKey(config, "insertHorizontalRuler", "Mod-_", (state, dispatch) => {
+ let hr = schema.nodes.horizontal_rule;
+ if (dispatch)
+ dispatch(state.tr.replaceSelectionWith(hr.create()).scrollIntoView());
+ return true;
+ })
+ }
+
+ return config
+}
+
+const getKeyMapFromConfig = (config: keyMap) => {
+ const keys = Object.keys(config);
+ let bindings: { [ combo: string]: Command} = {};
+ keys.forEach(key => {
+ config[key].forEach(entry => {
+ bindings[entry.combo] = entry.command;
+ })
+ })
+ return keymap(bindings);
+}
+
+const richTextKeyMapConfiguration = createKeyMapConfiguration(richTextSchema);
+export const richTextKeyMapPlugin = getKeyMapFromConfig(richTextKeyMapConfiguration);
\ No newline at end of file
diff --git a/packages/loro-demo/src/lib/prosemirror/metadata.ts b/packages/loro-demo/src/lib/prosemirror/metadata.ts
new file mode 100644
index 00000000..d72e0197
--- /dev/null
+++ b/packages/loro-demo/src/lib/prosemirror/metadata.ts
@@ -0,0 +1,14 @@
+
+import { dev } from '$app/environment';
+
+
+
+export const SITE_TITLE = 'JadedBlueEyes';
+
+export const SITE_URL = dev ? "http://localhost:5173" : "https://jade.ellis.link"
+
+export const SITE_DOMAIN = 'jade.ellis.link';
+export const SITE_DEFAULT_DESCRIPTION =
+ "Jade's website.";
+
+export const RSS_DEFAULT_POSTS_PER_PAGE = 15;
\ No newline at end of file
diff --git a/packages/loro-demo/src/lib/prosemirror/schema.ts b/packages/loro-demo/src/lib/prosemirror/schema.ts
new file mode 100644
index 00000000..942b7cfd
--- /dev/null
+++ b/packages/loro-demo/src/lib/prosemirror/schema.ts
@@ -0,0 +1,24 @@
+
+import { Schema } from 'prosemirror-model';
+import { nodes, marks } from 'prosemirror-schema-basic';
+
+
+export const EXPAND_CONFIG: { [key in string]: { expand: "before" | "after" | "both" | "none"; } } = {
+ bold: { expand: "after" },
+ italic: { expand: "after" },
+ underline: { expand: "after" },
+ link: { expand: "none" },
+ heading: { expand: "none" },
+}
+
+
+
+/**
+ * Schema to represent rich text
+ * @type {Schema}
+ */
+export const richTextSchema = new Schema({
+ nodes,
+ marks
+ });
+// richTextSchema.nodes.heading
\ No newline at end of file
diff --git a/packages/loro-demo/src/lib/styles.css b/packages/loro-demo/src/lib/styles.css
new file mode 100644
index 00000000..0120f2f3
--- /dev/null
+++ b/packages/loro-demo/src/lib/styles.css
@@ -0,0 +1,80 @@
+:root {
+ color-scheme: light;
+ --spacing: 24px;
+ --theme: #242424;
+ --background-color: #f8f8f8;
+ --surface-color: #fff;
+ --backdrop-color: rgba(247, 247, 247, .54);
+ --shadow-color: rgba(0, 0, 0, .12);
+ --font-color: rgba(0, 0, 0, .87);
+ --font-color-contrast: rgba(255, 255, 255, 1);
+ --font-color-secondary: rgba(0, 0, 0, .6);
+ --font-family-base: Roboto, sans-serif;
+ --font-family-heading: "Sen", Roboto, sans-serif;
+ --border-radius: 8px;
+ --shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
+}
+
+@media (prefers-color-scheme: dark) {
+ :root {
+ color-scheme: dark;
+ --theme: #eee;
+ --background-color: #141414;
+ --backdrop-color: rgba(20, 20, 20, .54);
+ --shadow-color: rgba(255, 255, 255, .12);
+ --surface-color: #242424;
+ --font-color: rgba(255, 255, 255, .87);
+ --font-color-contrast: rgba(0, 0, 0, .87);
+ --font-color-secondary: rgba(255, 255, 255, .6)
+ }
+}
+
+
+
+
+html {
+ font-family: var(--font-family-base);
+ background-color: var(--background-color);
+ color: var(--font-color);
+ font-size: 16px;
+ line-height: 1.5
+}
+
+body {
+ padding: 0;
+ margin: 0
+}
+
+iframe,
+img,
+svg {
+ width: 100%;
+ height: 100%;
+ display: block;
+}
+
+.main {
+ max-width: 1056px;
+ margin: 0 auto;
+ padding: 0 var(--spacing);
+ --edge-border-radius: var(--border-radius);
+}
+
+@media screen and (max-width: 320px) {
+ .main {
+ padding: 0 0;
+ --edge-border-radius: 0;
+ }
+}
+
+
+.card {
+ border-radius: var(--border-radius);
+ box-shadow: var(--shadow);
+ background-color: var(--surface-color);
+}
+
+
+.edge {
+ border-radius: var(--edge-border-radius);
+}
\ No newline at end of file
diff --git a/packages/loro-demo/src/routes/+layout.svelte b/packages/loro-demo/src/routes/+layout.svelte
new file mode 100644
index 00000000..ea10c5fc
--- /dev/null
+++ b/packages/loro-demo/src/routes/+layout.svelte
@@ -0,0 +1,8 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/packages/loro-demo/src/routes/+page.svelte b/packages/loro-demo/src/routes/+page.svelte
new file mode 100644
index 00000000..614876f6
--- /dev/null
+++ b/packages/loro-demo/src/routes/+page.svelte
@@ -0,0 +1,9 @@
+
+
+
+
diff --git a/packages/loro-demo/static/robots.txt b/packages/loro-demo/static/robots.txt
new file mode 100644
index 00000000..e9e57dc4
--- /dev/null
+++ b/packages/loro-demo/static/robots.txt
@@ -0,0 +1,3 @@
+# https://www.robotstxt.org/robotstxt.html
+User-agent: *
+Disallow:
diff --git a/packages/loro-demo/svelte.config.js b/packages/loro-demo/svelte.config.js
new file mode 100644
index 00000000..e4150ef3
--- /dev/null
+++ b/packages/loro-demo/svelte.config.js
@@ -0,0 +1,16 @@
+import adapter from '@sveltejs/adapter-node';
+import { vitePreprocess } from '@sveltejs/vite-plugin-svelte';
+
+/** @type {import('@sveltejs/kit').Config} */
+const config = {
+ // Consult https://kit.svelte.dev/docs/integrations#preprocessors
+ // for more information about preprocessors
+ preprocess: vitePreprocess(),
+
+ kit: {
+ adapter: adapter(),
+
+ }
+};
+
+export default config;
diff --git a/packages/loro-demo/tsconfig.json b/packages/loro-demo/tsconfig.json
new file mode 100644
index 00000000..82081abc
--- /dev/null
+++ b/packages/loro-demo/tsconfig.json
@@ -0,0 +1,18 @@
+{
+ "extends": "./.svelte-kit/tsconfig.json",
+ "compilerOptions": {
+ "allowJs": true,
+ "checkJs": true,
+ "esModuleInterop": true,
+ "forceConsistentCasingInFileNames": true,
+ "resolveJsonModule": true,
+ "skipLibCheck": true,
+ "sourceMap": true,
+ "strict": true,
+ "moduleResolution": "bundler"
+ }
+ // Path aliases are handled by https://kit.svelte.dev/docs/configuration#alias
+ //
+ // If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes
+ // from the referenced tsconfig.json - TypeScript does not merge them in
+}
diff --git a/packages/loro-demo/vite.config.ts b/packages/loro-demo/vite.config.ts
new file mode 100644
index 00000000..cebdca84
--- /dev/null
+++ b/packages/loro-demo/vite.config.ts
@@ -0,0 +1,9 @@
+import { sveltekit } from '@sveltejs/kit/vite';
+import { defineConfig } from 'vite';
+
+import wasm from "vite-plugin-wasm";
+import topLevelAwait from "vite-plugin-top-level-await";
+
+export default defineConfig({
+ plugins: [wasm(), topLevelAwait(), sveltekit()]
+});
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index da8a12a4..86c7b758 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -8,6 +8,94 @@ importers:
.: {}
+ packages/loro-demo:
+ dependencies:
+ '@steeze-ui/svelte-icon':
+ specifier: ^1.5.0
+ version: 1.5.0(svelte@4.2.8)
+ loro-crdt:
+ specifier: ^0.11.1
+ version: 0.11.1
+ prosemirror-commands:
+ specifier: ^1.5.2
+ version: 1.5.2
+ prosemirror-dropcursor:
+ specifier: ^1.8.1
+ version: 1.8.1
+ prosemirror-gapcursor:
+ specifier: ^1.3.2
+ version: 1.3.2
+ prosemirror-history:
+ specifier: ^1.3.2
+ version: 1.3.2
+ prosemirror-inputrules:
+ specifier: ^1.4.0
+ version: 1.4.0
+ prosemirror-keymap:
+ specifier: ^1.2.2
+ version: 1.2.2
+ prosemirror-model:
+ specifier: ^1.19.4
+ version: 1.19.4
+ prosemirror-schema-basic:
+ specifier: ^1.2.2
+ version: 1.2.2
+ prosemirror-schema-list:
+ specifier: ^1.3.0
+ version: 1.3.0
+ prosemirror-state:
+ specifier: ^1.4.3
+ version: 1.4.3
+ prosemirror-view:
+ specifier: ^1.33.1
+ version: 1.33.1
+ quill:
+ specifier: ^1.3.7
+ version: 1.3.7
+ devDependencies:
+ '@fontsource/fira-mono':
+ specifier: ^4.5.10
+ version: 4.5.10
+ '@neoconfetti/svelte':
+ specifier: ^1.0.0
+ version: 1.0.0
+ '@sveltejs/adapter-auto':
+ specifier: ^3.0.0
+ version: 3.1.1(@sveltejs/kit@2.5.0)
+ '@sveltejs/adapter-node':
+ specifier: ^4.0.1
+ version: 4.0.1(@sveltejs/kit@2.5.0)
+ '@sveltejs/kit':
+ specifier: ^2.0.0
+ version: 2.5.0(@sveltejs/vite-plugin-svelte@3.0.1)(svelte@4.2.8)(vite@5.0.10)
+ '@sveltejs/vite-plugin-svelte':
+ specifier: ^3.0.0
+ version: 3.0.1(svelte@4.2.8)(vite@5.0.10)
+ '@types/quill':
+ specifier: ^2.0.14
+ version: 2.0.14
+ svelte:
+ specifier: ^4.2.7
+ version: 4.2.8
+ svelte-check:
+ specifier: ^3.6.0
+ version: 3.6.2(svelte@4.2.8)
+ tslib:
+ specifier: ^2.4.1
+ version: 2.6.2
+ typescript:
+ specifier: ^5.0.0
+ version: 5.3.3
+ vite:
+ specifier: ^5.0.3
+ version: 5.0.10
+ vite-plugin-top-level-await:
+ specifier: ^1.4.1
+ version: 1.4.1(vite@5.0.10)
+ vite-plugin-wasm:
+ specifier: ^3.3.0
+ version: 3.3.0(vite@5.0.10)
+
packages/website:
dependencies:
'@steeze-ui/svelte-icon':
@@ -403,6 +491,16 @@ packages:
rollup: 4.10.0
dev: true
+ /@rollup/plugin-virtual@3.0.2:
+ resolution: {integrity: sha512-10monEYsBp3scM4/ND4LNH5Rxvh3e/cVeL3jWTgZ2SrQ+BmUoQcopVQvnaMcOnykb1VkxUFuDAN+0FnpTFRy2A==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0
+ peerDependenciesMeta:
+ rollup:
+ optional: true
+ dev: true
+
/@rollup/pluginutils@5.1.0(rollup@4.10.0):
resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==}
engines: {node: '>=14.0.0'}
@@ -426,14 +524,6 @@ packages:
dev: true
optional: true
- /@rollup/rollup-android-arm-eabi@4.9.1:
- resolution: {integrity: sha512-6vMdBZqtq1dVQ4CWdhFwhKZL6E4L1dV6jUjuBvsavvNJSppzi6dLBbuV+3+IyUREaj9ZFvQefnQm28v4OCXlig==}
- cpu: [arm]
- os: [android]
- requiresBuild: true
- dev: true
- optional: true
-
/@rollup/rollup-android-arm64@4.10.0:
resolution: {integrity: sha512-lvu0jK97mZDJdpZKDnZI93I0Om8lSDaiPx3OiCk0RXn3E8CMPJNS/wxjAvSJJzhhZpfjXsjLWL8LnS6qET4VNQ==}
cpu: [arm64]
@@ -442,14 +532,6 @@ packages:
dev: true
optional: true
- /@rollup/rollup-android-arm64@4.9.1:
- resolution: {integrity: sha512-Jto9Fl3YQ9OLsTDWtLFPtaIMSL2kwGyGoVCmPC8Gxvym9TCZm4Sie+cVeblPO66YZsYH8MhBKDMGZ2NDxuk/XQ==}
- cpu: [arm64]
- os: [android]
- requiresBuild: true
- dev: true
- optional: true
-
/@rollup/rollup-darwin-arm64@4.10.0:
resolution: {integrity: sha512-uFpayx8I8tyOvDkD7X6n0PriDRWxcqEjqgtlxnUA/G9oS93ur9aZ8c8BEpzFmsed1TH5WZNG5IONB8IiW90TQg==}
cpu: [arm64]
@@ -458,14 +540,6 @@ packages:
dev: true
optional: true
- /@rollup/rollup-darwin-arm64@4.9.1:
- resolution: {integrity: sha512-LtYcLNM+bhsaKAIGwVkh5IOWhaZhjTfNOkGzGqdHvhiCUVuJDalvDxEdSnhFzAn+g23wgsycmZk1vbnaibZwwA==}
- cpu: [arm64]
- os: [darwin]
- requiresBuild: true
- dev: true
- optional: true
-
/@rollup/rollup-darwin-x64@4.10.0:
resolution: {integrity: sha512-nIdCX03qFKoR/MwQegQBK+qZoSpO3LESurVAC6s6jazLA1Mpmgzo3Nj3H1vydXp/JM29bkCiuF7tDuToj4+U9Q==}
cpu: [x64]
@@ -474,14 +548,6 @@ packages:
dev: true
optional: true
- /@rollup/rollup-darwin-x64@4.9.1:
- resolution: {integrity: sha512-KyP/byeXu9V+etKO6Lw3E4tW4QdcnzDG/ake031mg42lob5tN+5qfr+lkcT/SGZaH2PdW4Z1NX9GHEkZ8xV7og==}
- cpu: [x64]
- os: [darwin]
- requiresBuild: true
- dev: true
- optional: true
-
/@rollup/rollup-linux-arm-gnueabihf@4.10.0:
resolution: {integrity: sha512-Fz7a+y5sYhYZMQFRkOyCs4PLhICAnxRX/GnWYReaAoruUzuRtcf+Qnw+T0CoAWbHCuz2gBUwmWnUgQ67fb3FYw==}
cpu: [arm]
@@ -490,14 +556,6 @@ packages:
dev: true
optional: true
- /@rollup/rollup-linux-arm-gnueabihf@4.9.1:
- resolution: {integrity: sha512-Yqz/Doumf3QTKplwGNrCHe/B2p9xqDghBZSlAY0/hU6ikuDVQuOUIpDP/YcmoT+447tsZTmirmjgG3znvSCR0Q==}
- cpu: [arm]
- os: [linux]
- requiresBuild: true
- dev: true
- optional: true
-
/@rollup/rollup-linux-arm64-gnu@4.10.0:
resolution: {integrity: sha512-yPtF9jIix88orwfTi0lJiqINnlWo6p93MtZEoaehZnmCzEmLL0eqjA3eGVeyQhMtxdV+Mlsgfwhh0+M/k1/V7Q==}
cpu: [arm64]
@@ -506,14 +564,6 @@ packages:
dev: true
optional: true
- /@rollup/rollup-linux-arm64-gnu@4.9.1:
- resolution: {integrity: sha512-u3XkZVvxcvlAOlQJ3UsD1rFvLWqu4Ef/Ggl40WAVCuogf4S1nJPHh5RTgqYFpCOvuGJ7H5yGHabjFKEZGExk5Q==}
- cpu: [arm64]
- os: [linux]
- requiresBuild: true
- dev: true
- optional: true
-
/@rollup/rollup-linux-arm64-musl@4.10.0:
resolution: {integrity: sha512-9GW9yA30ib+vfFiwjX+N7PnjTnCMiUffhWj4vkG4ukYv1kJ4T9gHNg8zw+ChsOccM27G9yXrEtMScf1LaCuoWQ==}
cpu: [arm64]
@@ -522,14 +572,6 @@ packages:
dev: true
optional: true
- /@rollup/rollup-linux-arm64-musl@4.9.1:
- resolution: {integrity: sha512-0XSYN/rfWShW+i+qjZ0phc6vZ7UWI8XWNz4E/l+6edFt+FxoEghrJHjX1EY/kcUGCnZzYYRCl31SNdfOi450Aw==}
- cpu: [arm64]
- os: [linux]
- requiresBuild: true
- dev: true
- optional: true
-
/@rollup/rollup-linux-riscv64-gnu@4.10.0:
resolution: {integrity: sha512-X1ES+V4bMq2ws5fF4zHornxebNxMXye0ZZjUrzOrf7UMx1d6wMQtfcchZ8SqUnQPPHdOyOLW6fTcUiFgHFadRA==}
cpu: [riscv64]
@@ -538,14 +580,6 @@ packages:
dev: true
optional: true
- /@rollup/rollup-linux-riscv64-gnu@4.9.1:
- resolution: {integrity: sha512-LmYIO65oZVfFt9t6cpYkbC4d5lKHLYv5B4CSHRpnANq0VZUQXGcCPXHzbCXCz4RQnx7jvlYB1ISVNCE/omz5cw==}
- cpu: [riscv64]
- os: [linux]
- requiresBuild: true
- dev: true
- optional: true
-
/@rollup/rollup-linux-x64-gnu@4.10.0:
resolution: {integrity: sha512-w/5OpT2EnI/Xvypw4FIhV34jmNqU5PZjZue2l2Y3ty1Ootm3SqhI+AmfhlUYGBTd9JnpneZCDnt3uNOiOBkMyw==}
cpu: [x64]
@@ -554,14 +588,6 @@ packages:
dev: true
optional: true
- /@rollup/rollup-linux-x64-gnu@4.9.1:
- resolution: {integrity: sha512-kr8rEPQ6ns/Lmr/hiw8sEVj9aa07gh1/tQF2Y5HrNCCEPiCBGnBUt9tVusrcBBiJfIt1yNaXN6r1CCmpbFEDpg==}
- cpu: [x64]
- os: [linux]
- requiresBuild: true
- dev: true
- optional: true
-
/@rollup/rollup-linux-x64-musl@4.10.0:
resolution: {integrity: sha512-q/meftEe3QlwQiGYxD9rWwB21DoKQ9Q8wA40of/of6yGHhZuGfZO0c3WYkN9dNlopHlNT3mf5BPsUSxoPuVQaw==}
cpu: [x64]
@@ -570,14 +596,6 @@ packages:
dev: true
optional: true
- /@rollup/rollup-linux-x64-musl@4.9.1:
- resolution: {integrity: sha512-t4QSR7gN+OEZLG0MiCgPqMWZGwmeHhsM4AkegJ0Kiy6TnJ9vZ8dEIwHw1LcZKhbHxTY32hp9eVCMdR3/I8MGRw==}
- cpu: [x64]
- os: [linux]
- requiresBuild: true
- dev: true
- optional: true
-
/@rollup/rollup-win32-arm64-msvc@4.10.0:
resolution: {integrity: sha512-NrR6667wlUfP0BHaEIKgYM/2va+Oj+RjZSASbBMnszM9k+1AmliRjHc3lJIiOehtSSjqYiO7R6KLNrWOX+YNSQ==}
cpu: [arm64]
@@ -586,14 +604,6 @@ packages:
dev: true
optional: true
- /@rollup/rollup-win32-arm64-msvc@4.9.1:
- resolution: {integrity: sha512-7XI4ZCBN34cb+BH557FJPmh0kmNz2c25SCQeT9OiFWEgf8+dL6ZwJ8f9RnUIit+j01u07Yvrsuu1rZGxJCc51g==}
- cpu: [arm64]
- os: [win32]
- requiresBuild: true
- dev: true
- optional: true
-
/@rollup/rollup-win32-ia32-msvc@4.10.0:
resolution: {integrity: sha512-FV0Tpt84LPYDduIDcXvEC7HKtyXxdvhdAOvOeWMWbQNulxViH2O07QXkT/FffX4FqEI02jEbCJbr+YcuKdyyMg==}
cpu: [ia32]
@@ -602,14 +612,6 @@ packages:
dev: true
optional: true
- /@rollup/rollup-win32-ia32-msvc@4.9.1:
- resolution: {integrity: sha512-yE5c2j1lSWOH5jp+Q0qNL3Mdhr8WuqCNVjc6BxbVfS5cAS6zRmdiw7ktb8GNpDCEUJphILY6KACoFoRtKoqNQg==}
- cpu: [ia32]
- os: [win32]
- requiresBuild: true
- dev: true
- optional: true
-
/@rollup/rollup-win32-x64-msvc@4.10.0:
resolution: {integrity: sha512-OZoJd+o5TaTSQeFFQ6WjFCiltiYVjIdsXxwu/XZ8qRpsvMQr4UsVrE5UyT9RIvsnuF47DqkJKhhVZ2Q9YW9IpQ==}
cpu: [x64]
@@ -618,14 +620,6 @@ packages:
dev: true
optional: true
- /@rollup/rollup-win32-x64-msvc@4.9.1:
- resolution: {integrity: sha512-PyJsSsafjmIhVgaI1Zdj7m8BB8mMckFah/xbpplObyHfiXzKcI5UOUXRyOdHW7nz4DpMCuzLnF7v5IWHenCwYA==}
- cpu: [x64]
- os: [win32]
- requiresBuild: true
- dev: true
- optional: true
-
/@steeze-ui/svelte-icon@1.5.0(svelte@4.2.8):
resolution: {integrity: sha512-Y0S7Qk2kO6byzOlD5SQGbOF2ZaKXJgfTkH78QUPcq579wiWMQJ5H14zL4XwtsPJ0DfkoL5qa3WaIdYkWb9A6AA==}
peerDependencies:
@@ -718,6 +712,129 @@ packages:
- supports-color
dev: true
+ /@swc/core-darwin-arm64@1.4.2:
+ resolution: {integrity: sha512-1uSdAn1MRK5C1m/TvLZ2RDvr0zLvochgrZ2xL+lRzugLlCTlSA+Q4TWtrZaOz+vnnFVliCpw7c7qu0JouhgQIw==}
+ engines: {node: '>=10'}
+ cpu: [arm64]
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@swc/core-darwin-x64@1.4.2:
+ resolution: {integrity: sha512-TYD28+dCQKeuxxcy7gLJUCFLqrwDZnHtC2z7cdeGfZpbI2mbfppfTf2wUPzqZk3gEC96zHd4Yr37V3Tvzar+lQ==}
+ engines: {node: '>=10'}
+ cpu: [x64]
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@swc/core-linux-arm-gnueabihf@1.4.2:
+ resolution: {integrity: sha512-Eyqipf7ZPGj0vplKHo8JUOoU1un2sg5PjJMpEesX0k+6HKE2T8pdyeyXODN0YTFqzndSa/J43EEPXm+rHAsLFQ==}
+ engines: {node: '>=10'}
+ cpu: [arm]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@swc/core-linux-arm64-gnu@1.4.2:
+ resolution: {integrity: sha512-wZn02DH8VYPv3FC0ub4my52Rttsus/rFw+UUfzdb3tHMHXB66LqN+rR0ssIOZrH6K+VLN6qpTw9VizjyoH0BxA==}
+ engines: {node: '>=10'}
+ cpu: [arm64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@swc/core-linux-arm64-musl@1.4.2:
+ resolution: {integrity: sha512-3G0D5z9hUj9bXNcwmA1eGiFTwe5rWkuL3DsoviTj73TKLpk7u64ND0XjEfO0huVv4vVu9H1jodrKb7nvln/dlw==}
+ engines: {node: '>=10'}
+ cpu: [arm64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@swc/core-linux-x64-gnu@1.4.2:
+ resolution: {integrity: sha512-LFxn9U8cjmYHw3jrdPNqPAkBGglKE3tCZ8rA7hYyp0BFxuo7L2ZcEnPm4RFpmSCCsExFH+LEJWuMGgWERoktvg==}
+ engines: {node: '>=10'}
+ cpu: [x64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@swc/core-linux-x64-musl@1.4.2:
+ resolution: {integrity: sha512-dp0fAmreeVVYTUcb4u9njTPrYzKnbIH0EhH2qvC9GOYNNREUu2GezSIDgonjOXkHiTCvopG4xU7y56XtXj4VrQ==}
+ engines: {node: '>=10'}
+ cpu: [x64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@swc/core-win32-arm64-msvc@1.4.2:
+ resolution: {integrity: sha512-HlVIiLMQkzthAdqMslQhDkoXJ5+AOLUSTV6fm6shFKZKqc/9cJvr4S8UveNERL9zUficA36yM3bbfo36McwnvQ==}
+ engines: {node: '>=10'}
+ cpu: [arm64]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@swc/core-win32-ia32-msvc@1.4.2:
+ resolution: {integrity: sha512-WCF8faPGjCl4oIgugkp+kL9nl3nUATlzKXCEGFowMEmVVCFM0GsqlmGdPp1pjZoWc9tpYanoXQDnp5IvlDSLhA==}
+ engines: {node: '>=10'}
+ cpu: [ia32]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@swc/core-win32-x64-msvc@1.4.2:
+ resolution: {integrity: sha512-oV71rwiSpA5xre2C5570BhCsg1HF97SNLsZ/12xv7zayGzqr3yvFALFJN8tHKpqUdCB4FGPjoP3JFdV3i+1wUw==}
+ engines: {node: '>=10'}
+ cpu: [x64]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@swc/core@1.4.2:
+ resolution: {integrity: sha512-vWgY07R/eqj1/a0vsRKLI9o9klGZfpLNOVEnrv4nrccxBgYPjcf22IWwAoaBJ+wpA7Q4fVjCUM8lP0m01dpxcg==}
+ engines: {node: '>=10'}
+ requiresBuild: true
+ peerDependencies:
+ '@swc/helpers': ^0.5.0
+ peerDependenciesMeta:
+ '@swc/helpers':
+ optional: true
+ dependencies:
+ '@swc/counter': 0.1.3
+ '@swc/types': 0.1.5
+ optionalDependencies:
+ '@swc/core-darwin-arm64': 1.4.2
+ '@swc/core-darwin-x64': 1.4.2
+ '@swc/core-linux-arm-gnueabihf': 1.4.2
+ '@swc/core-linux-arm64-gnu': 1.4.2
+ '@swc/core-linux-arm64-musl': 1.4.2
+ '@swc/core-linux-x64-gnu': 1.4.2
+ '@swc/core-linux-x64-musl': 1.4.2
+ '@swc/core-win32-arm64-msvc': 1.4.2
+ '@swc/core-win32-ia32-msvc': 1.4.2
+ '@swc/core-win32-x64-msvc': 1.4.2
+ dev: true
+
+ /@swc/counter@0.1.3:
+ resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==}
+ dev: true
+
+ /@swc/types@0.1.5:
+ resolution: {integrity: sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw==}
+ dev: true
+
/@types/cookie@0.6.0:
resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==}
dev: true
@@ -729,6 +846,13 @@ packages:
resolution: {integrity: sha512-Sk/uYFOBAB7mb74XcpizmH0KOR2Pv3D2Hmrh1Dmy5BmK3MpdSa5kqZcg6EKBdklU0bFXX9gCfzvpnyUehrPIuA==}
dev: true
+ /@types/quill@2.0.14:
+ resolution: {integrity: sha512-zvoXCRnc2Dl8g+7/9VSAmRWPN6oH+MVhTPizmCR+GJCITplZ5VRVzMs4+a/nOE3yzNwEZqylJJrMB07bwbM1/g==}
+ dependencies:
+ parchment: 1.1.4
+ quill-delta: 5.1.0
+ dev: true
+
/@types/resolve@1.20.2:
resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==}
dev: true
@@ -800,6 +924,17 @@ packages:
engines: {node: '>=6'}
dev: true
+ /call-bind@1.0.7:
+ resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ es-define-property: 1.0.0
+ es-errors: 1.3.0
+ function-bind: 1.1.2
+ get-intrinsic: 1.2.4
+ set-function-length: 1.2.1
+ dev: false
+
/callsites@3.1.0:
resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
engines: {node: '>=6'}
@@ -820,6 +955,11 @@ packages:
fsevents: 2.3.3
dev: true
+ /clone@2.1.2:
+ resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==}
+ engines: {node: '>=0.8'}
+ dev: false
+
/code-red@1.0.4:
resolution: {integrity: sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==}
dependencies:
@@ -861,11 +1001,41 @@ packages:
ms: 2.1.2
dev: true
+ /deep-equal@1.1.2:
+ resolution: {integrity: sha512-5tdhKF6DbU7iIzrIOa1AOUt39ZRm13cmL1cGEh//aqR8x9+tNfbywRf0n5FD/18OKMdo7DNEtrX2t22ZAkI+eg==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ is-arguments: 1.1.1
+ is-date-object: 1.0.5
+ is-regex: 1.1.4
+ object-is: 1.1.5
+ object-keys: 1.1.1
+ regexp.prototype.flags: 1.5.2
+ dev: false
+
/deepmerge@4.3.1:
resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==}
engines: {node: '>=0.10.0'}
dev: true
+ /define-data-property@1.1.4:
+ resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ es-define-property: 1.0.0
+ es-errors: 1.3.0
+ gopd: 1.0.1
+ dev: false
+
+ /define-properties@1.2.1:
+ resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ define-data-property: 1.1.4
+ has-property-descriptors: 1.0.2
+ object-keys: 1.1.1
+ dev: false
+
/dequal@2.0.3:
resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
engines: {node: '>=6'}
@@ -879,6 +1049,18 @@ packages:
resolution: {integrity: sha512-KqFl6pOgOW+Y6wJgu80rHpo2/3H07vr8ntR9rkkFIRETewbf5GaYYcakYfiKz89K+sLsuPkQIZaXDMjUObZwWg==}
dev: true
+ /es-define-property@1.0.0:
+ resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ get-intrinsic: 1.2.4
+ dev: false
+
+ /es-errors@1.3.0:
+ resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
+ engines: {node: '>= 0.4'}
+ dev: false
+
/es6-promise@3.3.1:
resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==}
dev: true
@@ -933,6 +1115,22 @@ packages:
dependencies:
'@types/estree': 1.0.5
+ /eventemitter3@2.0.3:
+ resolution: {integrity: sha512-jLN68Dx5kyFHaePoXWPsCGW5qdyZQtLYHkxkg02/Mz6g0kYpDx4FyP6XfArhQdlOC4b8Mv+EMxPo/8La7Tzghg==}
+ dev: false
+
+ /extend@3.0.2:
+ resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==}
+ dev: false
+
+ /fast-diff@1.1.2:
+ resolution: {integrity: sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig==}
+ dev: false
+
+ /fast-diff@1.3.0:
+ resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==}
+ dev: true
+
/fast-glob@3.3.2:
resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==}
engines: {node: '>=8.6.0'}
@@ -971,7 +1169,21 @@ packages:
/function-bind@1.1.2:
resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
- dev: true
+
+ /functions-have-names@1.2.3:
+ resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
+ dev: false
+
+ /get-intrinsic@1.2.4:
+ resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ es-errors: 1.3.0
+ function-bind: 1.1.2
+ has-proto: 1.0.3
+ has-symbols: 1.0.3
+ hasown: 2.0.1
+ dev: false
/glob-parent@5.1.2:
resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
@@ -1010,16 +1222,44 @@ packages:
resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==}
dev: true
+ /gopd@1.0.1:
+ resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==}
+ dependencies:
+ get-intrinsic: 1.2.4
+ dev: false
+
/graceful-fs@4.2.11:
resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
dev: true
+ /has-property-descriptors@1.0.2:
+ resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==}
+ dependencies:
+ es-define-property: 1.0.0
+ dev: false
+
+ /has-proto@1.0.3:
+ resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==}
+ engines: {node: '>= 0.4'}
+ dev: false
+
+ /has-symbols@1.0.3:
+ resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==}
+ engines: {node: '>= 0.4'}
+ dev: false
+
+ /has-tostringtag@1.0.2:
+ resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ has-symbols: 1.0.3
+ dev: false
+
/hasown@2.0.1:
resolution: {integrity: sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==}
engines: {node: '>= 0.4'}
dependencies:
function-bind: 1.1.2
- dev: true
/import-fresh@3.3.0:
resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
@@ -1044,6 +1284,14 @@ packages:
resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
dev: true
+ /is-arguments@1.1.1:
+ resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.7
+ has-tostringtag: 1.0.2
+ dev: false
+
/is-binary-path@2.1.0:
resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
engines: {node: '>=8'}
@@ -1064,6 +1312,13 @@ packages:
hasown: 2.0.1
dev: true
+ /is-date-object@1.0.5:
+ resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ has-tostringtag: 1.0.2
+ dev: false
+
/is-extglob@2.1.1:
resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
engines: {node: '>=0.10.0'}
@@ -1096,6 +1351,14 @@ packages:
dependencies:
'@types/estree': 1.0.5
+ /is-regex@1.1.4:
+ resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.7
+ has-tostringtag: 1.0.2
+ dev: false
+
/js-yaml@3.14.1:
resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==}
hasBin: true
@@ -1112,6 +1375,24 @@ packages:
/locate-character@3.0.0:
resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==}
+ /lodash.clonedeep@4.5.0:
+ resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==}
+ dev: true
+
+ /lodash.isequal@4.5.0:
+ resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==}
+ dev: true
+
+ /loro-crdt@0.11.1:
+ resolution: {integrity: sha512-C4+lryPZUDqUiLqX0mVp9wRb6+MPvhNngJNQhQxwIDqzn3oP/7Qra8XgY37M4d4Yvx2ZgG+1nYnR+43/xRwq7g==}
+ dependencies:
+ loro-wasm: 0.11.1
+ dev: false
+
+ /loro-wasm@0.11.1:
+ resolution: {integrity: sha512-/AkU2uXDRrKf6iu2WeaFIXjWzcwLgn3aWZFDW5yrIZGxc/0lB60b8F5cjyU+HqGzeXqGy0KnMrio+mTRDy1W0w==}
+ dev: false
+
/magic-string@0.30.5:
resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==}
engines: {node: '>=12'}
@@ -1188,12 +1469,32 @@ packages:
engines: {node: '>=0.10.0'}
dev: true
+ /object-is@1.1.5:
+ resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ dev: false
+
+ /object-keys@1.1.1:
+ resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
+ engines: {node: '>= 0.4'}
+ dev: false
+
/once@1.4.0:
resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
dependencies:
wrappy: 1.0.2
dev: true
+ /orderedmap@2.1.1:
+ resolution: {integrity: sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g==}
+ dev: false
+
+ /parchment@1.1.4:
+ resolution: {integrity: sha512-J5FBQt/pM2inLzg4hEWmzQx/8h8D0CiDxaG3vyp9rKrQRSDgBlhjdP5jQGgosEajXPSQouXGHOmVdgo7QmJuOg==}
+
/parent-module@1.0.1:
resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
engines: {node: '>=6'}
@@ -1235,10 +1536,129 @@ packages:
source-map-js: 1.0.2
dev: true
+ /prosemirror-commands@1.5.2:
+ resolution: {integrity: sha512-hgLcPaakxH8tu6YvVAaILV2tXYsW3rAdDR8WNkeKGcgeMVQg3/TMhPdVoh7iAmfgVjZGtcOSjKiQaoeKjzd2mQ==}
+ dependencies:
+ prosemirror-model: 1.19.4
+ prosemirror-state: 1.4.3
+ prosemirror-transform: 1.8.0
+ dev: false
+
+ /prosemirror-dropcursor@1.8.1:
+ resolution: {integrity: sha512-M30WJdJZLyXHi3N8vxN6Zh5O8ZBbQCz0gURTfPmTIBNQ5pxrdU7A58QkNqfa98YEjSAL1HUyyU34f6Pm5xBSGw==}
+ dependencies:
+ prosemirror-state: 1.4.3
+ prosemirror-transform: 1.8.0
+ prosemirror-view: 1.33.1
+ dev: false
+
+ /prosemirror-gapcursor@1.3.2:
+ resolution: {integrity: sha512-wtjswVBd2vaQRrnYZaBCbyDqr232Ed4p2QPtRIUK5FuqHYKGWkEwl08oQM4Tw7DOR0FsasARV5uJFvMZWxdNxQ==}
+ dependencies:
+ prosemirror-keymap: 1.2.2
+ prosemirror-model: 1.19.4
+ prosemirror-state: 1.4.3
+ prosemirror-view: 1.33.1
+ dev: false
+
+ /prosemirror-history@1.3.2:
+ resolution: {integrity: sha512-/zm0XoU/N/+u7i5zepjmZAEnpvjDtzoPWW6VmKptcAnPadN/SStsBjMImdCEbb3seiNTpveziPTIrXQbHLtU1g==}
+ dependencies:
+ prosemirror-state: 1.4.3
+ prosemirror-transform: 1.8.0
+ prosemirror-view: 1.33.1
+ rope-sequence: 1.3.4
+ dev: false
+
+ /prosemirror-inputrules@1.4.0:
+ resolution: {integrity: sha512-6ygpPRuTJ2lcOXs9JkefieMst63wVJBgHZGl5QOytN7oSZs3Co/BYbc3Yx9zm9H37Bxw8kVzCnDsihsVsL4yEg==}
+ dependencies:
+ prosemirror-state: 1.4.3
+ prosemirror-transform: 1.8.0
+ dev: false
+
+ /prosemirror-keymap@1.2.2:
+ resolution: {integrity: sha512-EAlXoksqC6Vbocqc0GtzCruZEzYgrn+iiGnNjsJsH4mrnIGex4qbLdWWNza3AW5W36ZRrlBID0eM6bdKH4OStQ==}
+ dependencies:
+ prosemirror-state: 1.4.3
+ w3c-keyname: 2.2.8
+ dev: false
+
+ /prosemirror-model@1.19.4:
+ resolution: {integrity: sha512-RPmVXxUfOhyFdayHawjuZCxiROsm9L4FCUA6pWI+l7n2yCBsWy9VpdE1hpDHUS8Vad661YLY9AzqfjLhAKQ4iQ==}
+ dependencies:
+ orderedmap: 2.1.1
+ dev: false
+
+ /prosemirror-schema-basic@1.2.2:
+ resolution: {integrity: sha512-/dT4JFEGyO7QnNTe9UaKUhjDXbTNkiWTq/N4VpKaF79bBjSExVV2NXmJpcM7z/gD7mbqNjxbmWW5nf1iNSSGnw==}
+ dependencies:
+ prosemirror-model: 1.19.4
+ dev: false
+
+ /prosemirror-schema-list@1.3.0:
+ resolution: {integrity: sha512-Hz/7gM4skaaYfRPNgr421CU4GSwotmEwBVvJh5ltGiffUJwm7C8GfN/Bc6DR1EKEp5pDKhODmdXXyi9uIsZl5A==}
+ dependencies:
+ prosemirror-model: 1.19.4
+ prosemirror-state: 1.4.3
+ prosemirror-transform: 1.8.0
+ dev: false
+
+ /prosemirror-state@1.4.3:
+ resolution: {integrity: sha512-goFKORVbvPuAQaXhpbemJFRKJ2aixr+AZMGiquiqKxaucC6hlpHNZHWgz5R7dS4roHiwq9vDctE//CZ++o0W1Q==}
+ dependencies:
+ prosemirror-model: 1.19.4
+ prosemirror-transform: 1.8.0
+ prosemirror-view: 1.33.1
+ dev: false
+
+ /prosemirror-transform@1.8.0:
+ resolution: {integrity: sha512-BaSBsIMv52F1BVVMvOmp1yzD3u65uC3HTzCBQV1WDPqJRQ2LuHKcyfn0jwqodo8sR9vVzMzZyI+Dal5W9E6a9A==}
+ dependencies:
+ prosemirror-model: 1.19.4
+ dev: false
+
+ /prosemirror-view@1.33.1:
+ resolution: {integrity: sha512-62qkYgSJIkwIMMCpuGuPzc52DiK1Iod6TWoIMxP4ja6BTD4yO8kCUL64PZ/WhH/dJ9fW0CDO39FhH1EMyhUFEg==}
+ dependencies:
+ prosemirror-model: 1.19.4
+ prosemirror-state: 1.4.3
+ prosemirror-transform: 1.8.0
+ dev: false
+
/queue-microtask@1.2.3:
resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
dev: true
+ /quill-delta@3.6.3:
+ resolution: {integrity: sha512-wdIGBlcX13tCHOXGMVnnTVFtGRLoP0imqxM696fIPwIf5ODIYUHIvHbZcyvGlZFiFhK5XzDC2lpjbxRhnM05Tg==}
+ engines: {node: '>=0.10'}
+ dependencies:
+ deep-equal: 1.1.2
+ extend: 3.0.2
+ fast-diff: 1.1.2
+ dev: false
+
+ /quill-delta@5.1.0:
+ resolution: {integrity: sha512-X74oCeRI4/p0ucjb5Ma8adTXd9Scumz367kkMK5V/IatcX6A0vlgLgKbzXWy5nZmCGeNJm2oQX0d2Eqj+ZIlCA==}
+ engines: {node: '>= 12.0.0'}
+ dependencies:
+ fast-diff: 1.3.0
+ lodash.clonedeep: 4.5.0
+ lodash.isequal: 4.5.0
+ dev: true
+
+ /quill@1.3.7:
+ resolution: {integrity: sha512-hG/DVzh/TiknWtE6QmWAF/pxoZKYxfe3J/d/+ShUWkDvvkZQVTPeVmUJVu1uE6DDooC4fWTiCLh84ul89oNz5g==}
+ dependencies:
+ clone: 2.1.2
+ deep-equal: 1.1.2
+ eventemitter3: 2.0.3
+ extend: 3.0.2
+ parchment: 1.1.4
+ quill-delta: 3.6.3
+ dev: false
+
/readdirp@3.6.0:
resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
engines: {node: '>=8.10.0'}
@@ -1246,6 +1666,16 @@ packages:
picomatch: 2.3.1
dev: true
+ /regexp.prototype.flags@1.5.2:
+ resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-errors: 1.3.0
+ set-function-name: 2.0.2
+ dev: false
+
/resolve-from@4.0.0:
resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
engines: {node: '>=4'}
@@ -1295,26 +1725,9 @@ packages:
fsevents: 2.3.3
dev: true
- /rollup@4.9.1:
- resolution: {integrity: sha512-pgPO9DWzLoW/vIhlSoDByCzcpX92bKEorbgXuZrqxByte3JFk2xSW2JEeAcyLc9Ru9pqcNNW+Ob7ntsk2oT/Xw==}
- engines: {node: '>=18.0.0', npm: '>=8.0.0'}
- hasBin: true
- optionalDependencies:
- '@rollup/rollup-android-arm-eabi': 4.9.1
- '@rollup/rollup-android-arm64': 4.9.1
- '@rollup/rollup-darwin-arm64': 4.9.1
- '@rollup/rollup-darwin-x64': 4.9.1
- '@rollup/rollup-linux-arm-gnueabihf': 4.9.1
- '@rollup/rollup-linux-arm64-gnu': 4.9.1
- '@rollup/rollup-linux-arm64-musl': 4.9.1
- '@rollup/rollup-linux-riscv64-gnu': 4.9.1
- '@rollup/rollup-linux-x64-gnu': 4.9.1
- '@rollup/rollup-linux-x64-musl': 4.9.1
- '@rollup/rollup-win32-arm64-msvc': 4.9.1
- '@rollup/rollup-win32-ia32-msvc': 4.9.1
- '@rollup/rollup-win32-x64-msvc': 4.9.1
- fsevents: 2.3.3
- dev: true
+ /rope-sequence@1.3.4:
+ resolution: {integrity: sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ==}
+ dev: false
/run-parallel@1.2.0:
resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
@@ -1342,6 +1755,28 @@ packages:
resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==}
dev: true
+ /set-function-length@1.2.1:
+ resolution: {integrity: sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ define-data-property: 1.1.4
+ es-errors: 1.3.0
+ function-bind: 1.1.2
+ get-intrinsic: 1.2.4
+ gopd: 1.0.1
+ has-property-descriptors: 1.0.2
+ dev: false
+
+ /set-function-name@2.0.2:
+ resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ define-data-property: 1.1.4
+ es-errors: 1.3.0
+ functions-have-names: 1.2.3
+ has-property-descriptors: 1.0.2
+ dev: false
+
/sirv@2.0.4:
resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==}
engines: {node: '>= 10'}
@@ -1511,6 +1946,33 @@ packages:
hasBin: true
dev: true
+ /uuid@9.0.1:
+ resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==}
+ hasBin: true
+ dev: true
+
+ /vite-plugin-top-level-await@1.4.1(vite@5.0.10):
+ resolution: {integrity: sha512-hogbZ6yT7+AqBaV6lK9JRNvJDn4/IJvHLu6ET06arNfo0t2IsyCaon7el9Xa8OumH+ESuq//SDf8xscZFE0rWw==}
+ peerDependencies:
+ vite: '>=2.8'
+ dependencies:
+ '@rollup/plugin-virtual': 3.0.2
+ '@swc/core': 1.4.2
+ uuid: 9.0.1
+ vite: 5.0.10
+ transitivePeerDependencies:
+ - '@swc/helpers'
+ - rollup
+ dev: true
+
+ /vite-plugin-wasm@3.3.0(vite@5.0.10):
+ resolution: {integrity: sha512-tVhz6w+W9MVsOCHzxo6SSMSswCeIw4HTrXEi6qL3IRzATl83jl09JVO1djBqPSwfjgnpVHNLYcaMbaDX5WB/pg==}
+ peerDependencies:
+ vite: ^2 || ^3 || ^4 || ^5
+ dependencies:
+ vite: 5.0.10
+ dev: true
+
/vite@5.0.10:
resolution: {integrity: sha512-2P8J7WWgmc355HUMlFrwofacvr98DAjoE52BfdbwQtyLH06XKwaL/FMnmKM2crF0iX4MpmMKoDlNCB1ok7zHCw==}
engines: {node: ^18.0.0 || >=20.0.0}
@@ -1541,7 +2003,7 @@ packages:
dependencies:
esbuild: 0.19.10
postcss: 8.4.32
- rollup: 4.9.1
+ rollup: 4.10.0
optionalDependencies:
fsevents: 2.3.3
dev: true
@@ -1557,6 +2019,10 @@ packages:
vite: 5.0.10
dev: true
+ /w3c-keyname@2.2.8:
+ resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==}
+ dev: false
+
/wrappy@1.0.2:
resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
dev: true