From 644bc9abb7e0fdd6b3d2085b77e856f2f86d38d4 Mon Sep 17 00:00:00 2001
From: npmrun <1549469775@qq.com>
Date: Mon, 17 Feb 2025 23:28:24 +0800
Subject: [PATCH] =?UTF-8?q?feat:=20=E8=A7=84=E8=8C=83=E5=8C=96=E8=BE=93?=
=?UTF-8?q?=E5=87=BA?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.npmrc | 1 +
examples/basic/index.html | 5 +-
examples/basic/main.ts | 6 +-
examples/basic/package.json | 5 +-
examples/basic/vite.config.ts | 12 +-
package.json | 11 +-
packages/core/build/build.config.base.ts | 26 --
packages/core/build/build.config.dev.ts | 12 -
packages/core/build/build.config.prod.ts | 8 -
packages/core/package.json | 10 +-
packages/core/src/index.ts | 146 +++++++----
packages/core/src/style/index.scss | 6 +-
pnpm-lock.yaml | 433 ++++++++++++++++++++++++++++---
scripts/build-one.ts | 40 +++
scripts/build.ts | 25 ++
15 files changed, 591 insertions(+), 155 deletions(-)
create mode 100644 .npmrc
delete mode 100644 packages/core/build/build.config.base.ts
delete mode 100644 packages/core/build/build.config.dev.ts
delete mode 100644 packages/core/build/build.config.prod.ts
create mode 100644 scripts/build-one.ts
create mode 100644 scripts/build.ts
diff --git a/.npmrc b/.npmrc
new file mode 100644
index 0000000..ee96585
--- /dev/null
+++ b/.npmrc
@@ -0,0 +1 @@
+link-workspace-packages=true
\ No newline at end of file
diff --git a/examples/basic/index.html b/examples/basic/index.html
index 7a2000b..7d0a56a 100644
--- a/examples/basic/index.html
+++ b/examples/basic/index.html
@@ -10,7 +10,10 @@
-
+
啊啊啊啊
diff --git a/examples/basic/main.ts b/examples/basic/main.ts
index c34087a..aaa082b 100644
--- a/examples/basic/main.ts
+++ b/examples/basic/main.ts
@@ -1,5 +1,5 @@
-import "@inkeon/core/dist/style.css"
+import "@inkeon/core/dist/style.css";
-import XxEditor from "@inkeon/core"
+import XxEditor from "@inkeon/core";
-const editor = new XxEditor("#app")
+const editor = new XxEditor("#app");
diff --git a/examples/basic/package.json b/examples/basic/package.json
index ceca0c1..ab0ddb9 100644
--- a/examples/basic/package.json
+++ b/examples/basic/package.json
@@ -9,5 +9,8 @@
},
"keywords": [],
"author": "",
- "license": "ISC"
+ "license": "ISC",
+ "devDependencies": {
+ "@inkeon/core": "workspace:*"
+ }
}
\ No newline at end of file
diff --git a/examples/basic/vite.config.ts b/examples/basic/vite.config.ts
index e574c0b..6150f9a 100644
--- a/examples/basic/vite.config.ts
+++ b/examples/basic/vite.config.ts
@@ -1,11 +1,3 @@
-import { defineConfig } from "vite"
-import { resolve } from 'node:path'
+import { defineConfig } from "vite";
-export default defineConfig({
- resolve: {
- alias: {
- "@inkeon/core/dist/style.css": resolve(__dirname, "../../packages/core/dist/style.css"),
- "@inkeon/core": resolve(__dirname, "../../packages/core/dist/index.mjs"),
- }
- }
-})
\ No newline at end of file
+export default defineConfig({});
diff --git a/package.json b/package.json
index 2bc5eb4..02dd19a 100644
--- a/package.json
+++ b/package.json
@@ -1,18 +1,23 @@
{
"private": true,
"name": "inkeon",
+ "type": "module",
"scripts": {
- "dev": "pnpm -C packages/%npm_config_dir% dev",
- "start": "pnpm -C examples/%npm_config_dir% start"
+ "example": "cd examples/basic && pnpm start",
+ "build": "tsx scripts/build.ts build",
+ "dev": "tsx scripts/build.ts dev watch",
+ "stub": "tsx scripts/build.ts dev stub"
},
"devDependencies": {
"@types/lodash-es": "^4.17.12",
"@types/node": "^22.10.5",
+ "fast-glob": "^3.3.3",
"lodash-es": "^4.17.21",
"rollup-plugin-scss": "^4.0.1",
"sass": "^1.83.1",
+ "tsx": "^4.19.2",
"typescript": "^5.7.2",
"unbuild": "^3.0.1",
"vite": "^6.0.5"
}
-}
\ No newline at end of file
+}
diff --git a/packages/core/build/build.config.base.ts b/packages/core/build/build.config.base.ts
deleted file mode 100644
index 0073f82..0000000
--- a/packages/core/build/build.config.base.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-import { BuildConfig, defineBuildConfig } from "unbuild";
-import { merge } from "lodash-es";
-import scss from 'rollup-plugin-scss'
-
-// OR tsup
-
-const BaseConfig = {
- entries: ["src/index.ts"],
- declaration: true,
- replace: {},
- hooks: {
- "rollup:options"(ctx, options) {
- options.plugins.push(scss({ fileName: 'style.css' }))
- }
- },
- rollup: {
- emitCJS: true,
- output: {
- exports: "named",
- },
- },
-} as BuildConfig;
-
-export function mergeConfig(targetConfig: BuildConfig) {
- return defineBuildConfig(merge(BaseConfig, targetConfig));
-}
diff --git a/packages/core/build/build.config.dev.ts b/packages/core/build/build.config.dev.ts
deleted file mode 100644
index c43be2a..0000000
--- a/packages/core/build/build.config.dev.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-import { mergeConfig } from "./build.config.base";
-
-export default mergeConfig({
- declaration: false,
- replace: {
- __DEV__: "true",
- __PROD__: "false"
- },
- rollup: {
- emitCJS: false
- }
-});
diff --git a/packages/core/build/build.config.prod.ts b/packages/core/build/build.config.prod.ts
deleted file mode 100644
index 0ff8f36..0000000
--- a/packages/core/build/build.config.prod.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-import { mergeConfig } from "./build.config.base";
-
-export default mergeConfig({
- replace: {
- __DEV__: "false",
- __PROD__: "true"
- }
-});
diff --git a/packages/core/package.json b/packages/core/package.json
index 0e9cb04..1081aee 100644
--- a/packages/core/package.json
+++ b/packages/core/package.json
@@ -24,11 +24,6 @@
"require": "./dist/style.css"
}
},
- "scripts": {
- "build": "unbuild --config build/build.config.prod.ts",
- "dev": "unbuild --config build/build.config.dev.ts --watch",
- "build:stub": "unbuild --config build/build.config.prod.ts --stub"
- },
"files": [
"index.js",
"index.mjs",
@@ -43,6 +38,7 @@
"@tiptap/extension-character-count": "^2.10.4",
"@tiptap/extension-image": "^2.10.4",
"@tiptap/pm": "^2.10.4",
- "@tiptap/starter-kit": "^2.10.4"
+ "@tiptap/starter-kit": "^2.10.4",
+ "tiptap-markdown": "^0.8.10"
}
-}
\ No newline at end of file
+}
diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts
index f80030b..54955f9 100644
--- a/packages/core/src/index.ts
+++ b/packages/core/src/index.ts
@@ -1,58 +1,102 @@
-import { Editor } from '@tiptap/core'
-import StarterKit from '@tiptap/starter-kit'
-import CharacterCount from '@tiptap/extension-character-count'
-import BubbleMenu, { BubbleMenuPlugin } from '@tiptap/extension-bubble-menu'
-import Image from '@tiptap/extension-image'
-import { getDom } from './utils.js'
+import { Editor } from "@tiptap/core";
+import StarterKit from "@tiptap/starter-kit";
+import CharacterCount from "@tiptap/extension-character-count";
+import BubbleMenu, { BubbleMenuPlugin } from "@tiptap/extension-bubble-menu";
+import Image from "@tiptap/extension-image";
+import { Markdown } from "tiptap-markdown";
+import { getDom } from "./utils.js";
-import "./style/index.scss"
+import "./style/index.scss";
class Inkeon {
- constructor(dom: string | Element) {
- const domEl = getDom(dom)
- this.#init(domEl)
- }
+ constructor(dom: string | Element) {
+ const domEl = getDom(dom);
+ this.#init(domEl);
+ }
- #editor: Editor
+ #editor: Editor;
- #init(dom: Element) {
- this.#editor = new Editor({
- element: getDom(dom),
- autofocus: true,
- extensions: [
- StarterKit,
- Image,
- CharacterCount.configure({
- limit: 240,
- }),
- BubbleMenu.configure({
- element: document.querySelector('.bubble-menu'),
- shouldShow: ({ editor, view, state, oldState, from, to }) => {
- console.log(editor, view, state, oldState, from, to);
- //如果是图片或链接才显示菜单
- return editor.isActive('image') || editor.isActive('link')
- },
- }),
- ],
- })
- console.log(this.#editor);
- document.querySelector(".aa").addEventListener("click", () => {
- // console.log(this.#editor.getJSON());
- // console.log(this.#editor.getHTML());
- console.log(this.#editor.getText());
- })
- // this.#editor.options.element = getDom(dom)
- // setTimeout(() => {
- // this.#editor.registerPlugin(BubbleMenuPlugin({
- // updateDelay: 0,
- // editor: this.#editor,
- // pluginKey: "bubbleMenu",
- // element: document.querySelector('.bubble-menu'),
- // }))
- // }, 0);
- this.#editor.chain().setContent(`Hello World!
`).run()
- }
+ #init(dom: Element) {
+ const BubbleMenuElement = document.querySelector(
+ ".bubble-menu"
+ ) as HTMLElement;
+ BubbleMenuElement.querySelector("button").addEventListener("click", () => {
+ if (!this.#editor) return;
+ const altInput = BubbleMenuElement.querySelector(
+ ".alt-input"
+ ) as HTMLInputElement;
+ const altText = altInput.value;
+ if (altText) {
+ const { state, view } = this.#editor;
+ const { from, to } = state.selection;
+ state.doc.nodesBetween(from, to, (node, pos) => {
+ if (node.type.name === "image") {
+ // 创建一个新的事务来修改节点属性
+ const tr = state.tr.setNodeMarkup(pos, undefined, {
+ ...node.attrs,
+ alt: altText,
+ });
+ // 应用事务到视图
+ view.dispatch(tr);
+ }
+ });
+ }
+ });
+ this.#editor = new Editor({
+ element: getDom(dom),
+ autofocus: true,
+ extensions: [
+ StarterKit,
+ Markdown,
+ Image.configure({
+ inline: true,
+ }),
+ CharacterCount.configure({
+ limit: 240,
+ }),
+ BubbleMenu.configure({
+ element: BubbleMenuElement,
+ shouldShow: ({ editor, view, state, oldState, from, to }) => {
+ console.log(editor, view, state, oldState, from, to);
+ //如果是图片或链接才显示菜单
+ if (editor.isActive("image")) {
+ const altInput = BubbleMenuElement.querySelector(
+ "input"
+ ) as HTMLInputElement;
+ const currentImage = editor.getAttributes("image");
+ altInput.value = currentImage.alt || "";
+ }
+ return editor.isActive("image") || editor.isActive("link");
+ },
+ }),
+ ],
+ });
+ document.querySelector(".aa").addEventListener("click", () => {
+ // console.log(this.#editor.getJSON());
+ // console.log(this.#editor.getHTML());
+ console.log(this.#editor.getText());
+ console.log(this.#editor.getHTML());
+ console.log(this.#editor);
+ console.log(this.#editor.storage);
+ console.log(this.#editor.storage.markdown.getMarkdown());
+ });
+ // this.#editor.options.element = getDom(dom)
+ // setTimeout(() => {
+ // this.#editor.registerPlugin(BubbleMenuPlugin({
+ // updateDelay: 0,
+ // editor: this.#editor,
+ // pluginKey: "bubbleMenu",
+ // element: document.querySelector('.bubble-menu'),
+ // }))
+ // }, 0);
+ this.#editor
+ .chain()
+ .setContent(
+ `Hello World!
阿松大`
+ )
+ .run();
+ }
}
-export { Inkeon }
-export default Inkeon
\ No newline at end of file
+export { Inkeon };
+export default Inkeon;
diff --git a/packages/core/src/style/index.scss b/packages/core/src/style/index.scss
index 2296940..905d7cd 100644
--- a/packages/core/src/style/index.scss
+++ b/packages/core/src/style/index.scss
@@ -1,7 +1,7 @@
* {
- color: aqua;
+ // color: aqua;
}
h2 {
- color: red;
-}
\ No newline at end of file
+ color: red;
+}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 9d9d50b..22070e6 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -14,6 +14,9 @@ importers:
'@types/node':
specifier: ^22.10.5
version: 22.10.5
+ fast-glob:
+ specifier: ^3.3.3
+ version: 3.3.3
lodash-es:
specifier: ^4.17.21
version: 4.17.21
@@ -23,6 +26,9 @@ importers:
sass:
specifier: ^1.83.1
version: 1.83.1
+ tsx:
+ specifier: ^4.19.2
+ version: 4.19.2
typescript:
specifier: ^5.7.2
version: 5.7.2
@@ -31,9 +37,13 @@ importers:
version: 3.0.1(sass@1.83.1)(typescript@5.7.2)
vite:
specifier: ^6.0.5
- version: 6.0.5(@types/node@22.10.5)(jiti@2.4.2)(sass@1.83.1)
+ version: 6.0.5(@types/node@22.10.5)(jiti@2.4.2)(sass@1.83.1)(tsx@4.19.2)
- examples/basic: {}
+ examples/basic:
+ devDependencies:
+ '@inkeon/core':
+ specifier: workspace:*
+ version: link:../../packages/core
packages/core:
dependencies:
@@ -55,6 +65,9 @@ importers:
'@tiptap/starter-kit':
specifier: ^2.10.4
version: 2.10.4
+ tiptap-markdown:
+ specifier: ^0.8.10
+ version: 0.8.10(@tiptap/core@2.10.4(@tiptap/pm@2.10.4))
packages:
@@ -129,144 +142,288 @@ packages:
resolution: {integrity: sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==}
engines: {node: '>=6.9.0'}
+ '@esbuild/aix-ppc64@0.23.1':
+ resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==}
+ engines: {node: '>=18'}
+ cpu: [ppc64]
+ os: [aix]
+
'@esbuild/aix-ppc64@0.24.0':
resolution: {integrity: sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==}
engines: {node: '>=18'}
cpu: [ppc64]
os: [aix]
+ '@esbuild/android-arm64@0.23.1':
+ resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [android]
+
'@esbuild/android-arm64@0.24.0':
resolution: {integrity: sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==}
engines: {node: '>=18'}
cpu: [arm64]
os: [android]
+ '@esbuild/android-arm@0.23.1':
+ resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==}
+ engines: {node: '>=18'}
+ cpu: [arm]
+ os: [android]
+
'@esbuild/android-arm@0.24.0':
resolution: {integrity: sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==}
engines: {node: '>=18'}
cpu: [arm]
os: [android]
+ '@esbuild/android-x64@0.23.1':
+ resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [android]
+
'@esbuild/android-x64@0.24.0':
resolution: {integrity: sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==}
engines: {node: '>=18'}
cpu: [x64]
os: [android]
+ '@esbuild/darwin-arm64@0.23.1':
+ resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [darwin]
+
'@esbuild/darwin-arm64@0.24.0':
resolution: {integrity: sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==}
engines: {node: '>=18'}
cpu: [arm64]
os: [darwin]
+ '@esbuild/darwin-x64@0.23.1':
+ resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [darwin]
+
'@esbuild/darwin-x64@0.24.0':
resolution: {integrity: sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==}
engines: {node: '>=18'}
cpu: [x64]
os: [darwin]
+ '@esbuild/freebsd-arm64@0.23.1':
+ resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [freebsd]
+
'@esbuild/freebsd-arm64@0.24.0':
resolution: {integrity: sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==}
engines: {node: '>=18'}
cpu: [arm64]
os: [freebsd]
+ '@esbuild/freebsd-x64@0.23.1':
+ resolution: {integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [freebsd]
+
'@esbuild/freebsd-x64@0.24.0':
resolution: {integrity: sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==}
engines: {node: '>=18'}
cpu: [x64]
os: [freebsd]
+ '@esbuild/linux-arm64@0.23.1':
+ resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [linux]
+
'@esbuild/linux-arm64@0.24.0':
resolution: {integrity: sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==}
engines: {node: '>=18'}
cpu: [arm64]
os: [linux]
+ '@esbuild/linux-arm@0.23.1':
+ resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==}
+ engines: {node: '>=18'}
+ cpu: [arm]
+ os: [linux]
+
'@esbuild/linux-arm@0.24.0':
resolution: {integrity: sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==}
engines: {node: '>=18'}
cpu: [arm]
os: [linux]
+ '@esbuild/linux-ia32@0.23.1':
+ resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==}
+ engines: {node: '>=18'}
+ cpu: [ia32]
+ os: [linux]
+
'@esbuild/linux-ia32@0.24.0':
resolution: {integrity: sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==}
engines: {node: '>=18'}
cpu: [ia32]
os: [linux]
+ '@esbuild/linux-loong64@0.23.1':
+ resolution: {integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==}
+ engines: {node: '>=18'}
+ cpu: [loong64]
+ os: [linux]
+
'@esbuild/linux-loong64@0.24.0':
resolution: {integrity: sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==}
engines: {node: '>=18'}
cpu: [loong64]
os: [linux]
+ '@esbuild/linux-mips64el@0.23.1':
+ resolution: {integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==}
+ engines: {node: '>=18'}
+ cpu: [mips64el]
+ os: [linux]
+
'@esbuild/linux-mips64el@0.24.0':
resolution: {integrity: sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==}
engines: {node: '>=18'}
cpu: [mips64el]
os: [linux]
+ '@esbuild/linux-ppc64@0.23.1':
+ resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==}
+ engines: {node: '>=18'}
+ cpu: [ppc64]
+ os: [linux]
+
'@esbuild/linux-ppc64@0.24.0':
resolution: {integrity: sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==}
engines: {node: '>=18'}
cpu: [ppc64]
os: [linux]
+ '@esbuild/linux-riscv64@0.23.1':
+ resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==}
+ engines: {node: '>=18'}
+ cpu: [riscv64]
+ os: [linux]
+
'@esbuild/linux-riscv64@0.24.0':
resolution: {integrity: sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==}
engines: {node: '>=18'}
cpu: [riscv64]
os: [linux]
+ '@esbuild/linux-s390x@0.23.1':
+ resolution: {integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==}
+ engines: {node: '>=18'}
+ cpu: [s390x]
+ os: [linux]
+
'@esbuild/linux-s390x@0.24.0':
resolution: {integrity: sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==}
engines: {node: '>=18'}
cpu: [s390x]
os: [linux]
+ '@esbuild/linux-x64@0.23.1':
+ resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [linux]
+
'@esbuild/linux-x64@0.24.0':
resolution: {integrity: sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==}
engines: {node: '>=18'}
cpu: [x64]
os: [linux]
+ '@esbuild/netbsd-x64@0.23.1':
+ resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [netbsd]
+
'@esbuild/netbsd-x64@0.24.0':
resolution: {integrity: sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==}
engines: {node: '>=18'}
cpu: [x64]
os: [netbsd]
+ '@esbuild/openbsd-arm64@0.23.1':
+ resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [openbsd]
+
'@esbuild/openbsd-arm64@0.24.0':
resolution: {integrity: sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==}
engines: {node: '>=18'}
cpu: [arm64]
os: [openbsd]
+ '@esbuild/openbsd-x64@0.23.1':
+ resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [openbsd]
+
'@esbuild/openbsd-x64@0.24.0':
resolution: {integrity: sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==}
engines: {node: '>=18'}
cpu: [x64]
os: [openbsd]
+ '@esbuild/sunos-x64@0.23.1':
+ resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [sunos]
+
'@esbuild/sunos-x64@0.24.0':
resolution: {integrity: sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==}
engines: {node: '>=18'}
cpu: [x64]
os: [sunos]
+ '@esbuild/win32-arm64@0.23.1':
+ resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [win32]
+
'@esbuild/win32-arm64@0.24.0':
resolution: {integrity: sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==}
engines: {node: '>=18'}
cpu: [arm64]
os: [win32]
+ '@esbuild/win32-ia32@0.23.1':
+ resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==}
+ engines: {node: '>=18'}
+ cpu: [ia32]
+ os: [win32]
+
'@esbuild/win32-ia32@0.24.0':
resolution: {integrity: sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==}
engines: {node: '>=18'}
cpu: [ia32]
os: [win32]
+ '@esbuild/win32-x64@0.23.1':
+ resolution: {integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [win32]
+
'@esbuild/win32-x64@0.24.0':
resolution: {integrity: sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==}
engines: {node: '>=18'}
@@ -291,6 +448,18 @@ packages:
'@jridgewell/trace-mapping@0.3.25':
resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
+ '@nodelib/fs.scandir@2.1.5':
+ resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
+ engines: {node: '>= 8'}
+
+ '@nodelib/fs.stat@2.0.5':
+ resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
+ engines: {node: '>= 8'}
+
+ '@nodelib/fs.walk@1.2.8':
+ resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
+ engines: {node: '>= 8'}
+
'@parcel/watcher-android-arm64@2.5.0':
resolution: {integrity: sha512-qlX4eS28bUcQCdribHkg/herLe+0A9RyYC+mm2PXpncit8z5b3nSqGVzMNR3CmtAOgRutiZ02eIJJgP/b1iEFQ==}
engines: {node: '>= 10.0.0'}
@@ -320,42 +489,36 @@ packages:
engines: {node: '>= 10.0.0'}
cpu: [arm]
os: [linux]
- libc: [glibc]
'@parcel/watcher-linux-arm-musl@2.5.0':
resolution: {integrity: sha512-6uHywSIzz8+vi2lAzFeltnYbdHsDm3iIB57d4g5oaB9vKwjb6N6dRIgZMujw4nm5r6v9/BQH0noq6DzHrqr2pA==}
engines: {node: '>= 10.0.0'}
cpu: [arm]
os: [linux]
- libc: [musl]
'@parcel/watcher-linux-arm64-glibc@2.5.0':
resolution: {integrity: sha512-BfNjXwZKxBy4WibDb/LDCriWSKLz+jJRL3cM/DllnHH5QUyoiUNEp3GmL80ZqxeumoADfCCP19+qiYiC8gUBjA==}
engines: {node: '>= 10.0.0'}
cpu: [arm64]
os: [linux]
- libc: [glibc]
'@parcel/watcher-linux-arm64-musl@2.5.0':
resolution: {integrity: sha512-S1qARKOphxfiBEkwLUbHjCY9BWPdWnW9j7f7Hb2jPplu8UZ3nes7zpPOW9bkLbHRvWM0WDTsjdOTUgW0xLBN1Q==}
engines: {node: '>= 10.0.0'}
cpu: [arm64]
os: [linux]
- libc: [musl]
'@parcel/watcher-linux-x64-glibc@2.5.0':
resolution: {integrity: sha512-d9AOkusyXARkFD66S6zlGXyzx5RvY+chTP9Jp0ypSTC9d4lzyRs9ovGf/80VCxjKddcUvnsGwCHWuF2EoPgWjw==}
engines: {node: '>= 10.0.0'}
cpu: [x64]
os: [linux]
- libc: [glibc]
'@parcel/watcher-linux-x64-musl@2.5.0':
resolution: {integrity: sha512-iqOC+GoTDoFyk/VYSFHwjHhYrk8bljW6zOhPuhi5t9ulqiYq1togGJB5e3PwYVFFfeVgc6pbz3JdQyDoBszVaA==}
engines: {node: '>= 10.0.0'}
cpu: [x64]
os: [linux]
- libc: [musl]
'@parcel/watcher-win32-arm64@2.5.0':
resolution: {integrity: sha512-twtft1d+JRNkM5YbmexfcH/N4znDtjgysFaV9zvZmmJezQsKpkfLYJ+JFV3uygugK6AtIM2oADPkB2AdhBrNig==}
@@ -473,61 +636,51 @@ packages:
resolution: {integrity: sha512-Py5vFd5HWYN9zxBv3WMrLAXY3yYJ6Q/aVERoeUFwiDGiMOWsMs7FokXihSOaT/PMWUty/Pj60XDQndK3eAfE6A==}
cpu: [arm]
os: [linux]
- libc: [glibc]
'@rollup/rollup-linux-arm-musleabihf@4.29.1':
resolution: {integrity: sha512-RiWpGgbayf7LUcuSNIbahr0ys2YnEERD4gYdISA06wa0i8RALrnzflh9Wxii7zQJEB2/Eh74dX4y/sHKLWp5uQ==}
cpu: [arm]
os: [linux]
- libc: [musl]
'@rollup/rollup-linux-arm64-gnu@4.29.1':
resolution: {integrity: sha512-Z80O+taYxTQITWMjm/YqNoe9d10OX6kDh8X5/rFCMuPqsKsSyDilvfg+vd3iXIqtfmp+cnfL1UrYirkaF8SBZA==}
cpu: [arm64]
os: [linux]
- libc: [glibc]
'@rollup/rollup-linux-arm64-musl@4.29.1':
resolution: {integrity: sha512-fOHRtF9gahwJk3QVp01a/GqS4hBEZCV1oKglVVq13kcK3NeVlS4BwIFzOHDbmKzt3i0OuHG4zfRP0YoG5OF/rA==}
cpu: [arm64]
os: [linux]
- libc: [musl]
'@rollup/rollup-linux-loongarch64-gnu@4.29.1':
resolution: {integrity: sha512-5a7q3tnlbcg0OodyxcAdrrCxFi0DgXJSoOuidFUzHZ2GixZXQs6Tc3CHmlvqKAmOs5eRde+JJxeIf9DonkmYkw==}
cpu: [loong64]
os: [linux]
- libc: [glibc]
'@rollup/rollup-linux-powerpc64le-gnu@4.29.1':
resolution: {integrity: sha512-9b4Mg5Yfz6mRnlSPIdROcfw1BU22FQxmfjlp/CShWwO3LilKQuMISMTtAu/bxmmrE6A902W2cZJuzx8+gJ8e9w==}
cpu: [ppc64]
os: [linux]
- libc: [glibc]
'@rollup/rollup-linux-riscv64-gnu@4.29.1':
resolution: {integrity: sha512-G5pn0NChlbRM8OJWpJFMX4/i8OEU538uiSv0P6roZcbpe/WfhEO+AT8SHVKfp8qhDQzaz7Q+1/ixMy7hBRidnQ==}
cpu: [riscv64]
os: [linux]
- libc: [glibc]
'@rollup/rollup-linux-s390x-gnu@4.29.1':
resolution: {integrity: sha512-WM9lIkNdkhVwiArmLxFXpWndFGuOka4oJOZh8EP3Vb8q5lzdSCBuhjavJsw68Q9AKDGeOOIHYzYm4ZFvmWez5g==}
cpu: [s390x]
os: [linux]
- libc: [glibc]
'@rollup/rollup-linux-x64-gnu@4.29.1':
resolution: {integrity: sha512-87xYCwb0cPGZFoGiErT1eDcssByaLX4fc0z2nRM6eMtV9njAfEE6OW3UniAoDhX4Iq5xQVpE6qO9aJbCFumKYQ==}
cpu: [x64]
os: [linux]
- libc: [glibc]
'@rollup/rollup-linux-x64-musl@4.29.1':
resolution: {integrity: sha512-xufkSNppNOdVRCEC4WKvlR1FBDyqCSCpQeMMgv9ZyXqqtKBfkw1yfGMTUTs9Qsl6WQbJnsGboWCp7pJGkeMhKA==}
cpu: [x64]
os: [linux]
- libc: [musl]
'@rollup/rollup-win32-arm64-msvc@4.29.1':
resolution: {integrity: sha512-F2OiJ42m77lSkizZQLuC+jiZ2cgueWQL5YC9tjo3AgaEw+KJmVxHGSyQfDUoYR9cci0lAywv2Clmckzulcq6ig==}
@@ -679,6 +832,9 @@ packages:
'@types/estree@1.0.6':
resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==}
+ '@types/linkify-it@3.0.5':
+ resolution: {integrity: sha512-yg6E+u0/+Zjva+buc3EIb+29XEg4wltq7cSmd4Uc2EE/1nUVmxyzpX6gUXD0V8jIrG0r7YeOGVIbYRkxeooCtw==}
+
'@types/linkify-it@5.0.0':
resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==}
@@ -688,9 +844,15 @@ packages:
'@types/lodash@4.17.13':
resolution: {integrity: sha512-lfx+dftrEZcdBPczf9d0Qv0x+j/rfNCMuC6OcfXmO8gkfeNAY88PgKUbvG56whcN23gc27yenwF6oJZXGFpYxg==}
+ '@types/markdown-it@13.0.9':
+ resolution: {integrity: sha512-1XPwR0+MgXLWfTn9gCsZ55AHOKW1WN+P9vr0PaQh5aerR9LLQXUbjfEAFhjmEmyoYFWAyuN2Mqkn40MZ4ukjBw==}
+
'@types/markdown-it@14.1.2':
resolution: {integrity: sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==}
+ '@types/mdurl@1.0.5':
+ resolution: {integrity: sha512-6L6VymKTzYSrEf4Nev4Xa1LCHKrlTlYCBMTlQKFuddo1CvQcE52I0mwfOJayueUC7MJuXOeHTcIU683lzd0cUA==}
+
'@types/mdurl@2.0.0':
resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==}
@@ -852,6 +1014,11 @@ packages:
resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
engines: {node: '>=0.12'}
+ esbuild@0.23.1:
+ resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==}
+ engines: {node: '>=18'}
+ hasBin: true
+
esbuild@0.24.0:
resolution: {integrity: sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==}
engines: {node: '>=18'}
@@ -871,6 +1038,13 @@ packages:
estree-walker@2.0.2:
resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
+ fast-glob@3.3.3:
+ resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==}
+ engines: {node: '>=8.6.0'}
+
+ fastq@1.19.0:
+ resolution: {integrity: sha512-7SFSRCNjBQIZH/xZR3iy5iQYR8aGBE0h3VG6/cwlbrpdciNYBMotQav8c1XI3HjHH+NikUpP53nPdlZSdWmFzA==}
+
fdir@6.4.2:
resolution: {integrity: sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==}
peerDependencies:
@@ -898,6 +1072,13 @@ packages:
resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
engines: {node: '>=6.9.0'}
+ get-tsconfig@4.10.0:
+ resolution: {integrity: sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==}
+
+ glob-parent@5.1.2:
+ resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
+ engines: {node: '>= 6'}
+
globals@11.12.0:
resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
engines: {node: '>=4'}
@@ -980,6 +1161,9 @@ packages:
magic-string@0.30.17:
resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==}
+ markdown-it-task-lists@2.1.1:
+ resolution: {integrity: sha512-TxFAc76Jnhb2OUu+n3yz9RMu4CwGfaT788br6HhEDlvWfdeJcLUsxk1Hgw2yJio0OXsxv7pyIPmvECY7bMbluA==}
+
markdown-it@14.1.0:
resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==}
hasBin: true
@@ -993,6 +1177,10 @@ packages:
mdurl@2.0.0:
resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==}
+ merge2@1.4.1:
+ resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
+ engines: {node: '>= 8'}
+
micromatch@4.0.8:
resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
engines: {node: '>=8.6'}
@@ -1311,15 +1499,25 @@ packages:
resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==}
engines: {node: '>=6'}
+ queue-microtask@1.2.3:
+ resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
+
readdirp@4.0.2:
resolution: {integrity: sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==}
engines: {node: '>= 14.16.0'}
+ resolve-pkg-maps@1.0.0:
+ resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==}
+
resolve@1.22.10:
resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==}
engines: {node: '>= 0.4'}
hasBin: true
+ reusify@1.0.4:
+ resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
+ engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
+
rollup-plugin-dts@6.1.1:
resolution: {integrity: sha512-aSHRcJ6KG2IHIioYlvAOcEq6U99sVtqDDKVhnwt70rW6tsz3tv5OSjEiWcgzfsHdLyGXZ/3b/7b/+Za3Y6r1XA==}
engines: {node: '>=16'}
@@ -1341,6 +1539,9 @@ packages:
rope-sequence@1.3.4:
resolution: {integrity: sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ==}
+ run-parallel@1.2.0:
+ resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
+
sass@1.83.1:
resolution: {integrity: sha512-EVJbDaEs4Rr3F0glJzFSOvtg2/oy2V/YrGFPqPY24UqcLDWcI9ZY5sN+qyO3c/QCZwzgfirvhXvINiJCE/OLcA==}
engines: {node: '>=14.0.0'}
@@ -1384,10 +1585,20 @@ packages:
tippy.js@6.3.7:
resolution: {integrity: sha512-E1d3oP2emgJ9dRQZdf3Kkn0qJgI6ZLpyS5z6ZkY1DF3kaQaBsGZsndEpHwx+eC+tYM41HaSNvNtLx8tU57FzTQ==}
+ tiptap-markdown@0.8.10:
+ resolution: {integrity: sha512-iDVkR2BjAqkTDtFX0h94yVvE2AihCXlF0Q7RIXSJPRSR5I0PA1TMuAg6FHFpmqTn4tPxJ0by0CK7PUMlnFLGEQ==}
+ peerDependencies:
+ '@tiptap/core': ^2.0.3
+
to-regex-range@5.0.1:
resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
engines: {node: '>=8.0'}
+ tsx@4.19.2:
+ resolution: {integrity: sha512-pOUl6Vo2LUq/bSa8S5q7b91cgNSjctn9ugq/+Mvow99qW6x/UZYwzxy/3NmqoT66eHYfCVvFvACC58UBPFf28g==}
+ engines: {node: '>=18.0.0'}
+ hasBin: true
+
typescript@5.7.2:
resolution: {integrity: sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==}
engines: {node: '>=14.17'}
@@ -1577,75 +1788,147 @@ snapshots:
'@babel/helper-string-parser': 7.25.9
'@babel/helper-validator-identifier': 7.25.9
+ '@esbuild/aix-ppc64@0.23.1':
+ optional: true
+
'@esbuild/aix-ppc64@0.24.0':
optional: true
+ '@esbuild/android-arm64@0.23.1':
+ optional: true
+
'@esbuild/android-arm64@0.24.0':
optional: true
+ '@esbuild/android-arm@0.23.1':
+ optional: true
+
'@esbuild/android-arm@0.24.0':
optional: true
+ '@esbuild/android-x64@0.23.1':
+ optional: true
+
'@esbuild/android-x64@0.24.0':
optional: true
+ '@esbuild/darwin-arm64@0.23.1':
+ optional: true
+
'@esbuild/darwin-arm64@0.24.0':
optional: true
+ '@esbuild/darwin-x64@0.23.1':
+ optional: true
+
'@esbuild/darwin-x64@0.24.0':
optional: true
+ '@esbuild/freebsd-arm64@0.23.1':
+ optional: true
+
'@esbuild/freebsd-arm64@0.24.0':
optional: true
+ '@esbuild/freebsd-x64@0.23.1':
+ optional: true
+
'@esbuild/freebsd-x64@0.24.0':
optional: true
+ '@esbuild/linux-arm64@0.23.1':
+ optional: true
+
'@esbuild/linux-arm64@0.24.0':
optional: true
+ '@esbuild/linux-arm@0.23.1':
+ optional: true
+
'@esbuild/linux-arm@0.24.0':
optional: true
+ '@esbuild/linux-ia32@0.23.1':
+ optional: true
+
'@esbuild/linux-ia32@0.24.0':
optional: true
+ '@esbuild/linux-loong64@0.23.1':
+ optional: true
+
'@esbuild/linux-loong64@0.24.0':
optional: true
+ '@esbuild/linux-mips64el@0.23.1':
+ optional: true
+
'@esbuild/linux-mips64el@0.24.0':
optional: true
+ '@esbuild/linux-ppc64@0.23.1':
+ optional: true
+
'@esbuild/linux-ppc64@0.24.0':
optional: true
+ '@esbuild/linux-riscv64@0.23.1':
+ optional: true
+
'@esbuild/linux-riscv64@0.24.0':
optional: true
+ '@esbuild/linux-s390x@0.23.1':
+ optional: true
+
'@esbuild/linux-s390x@0.24.0':
optional: true
+ '@esbuild/linux-x64@0.23.1':
+ optional: true
+
'@esbuild/linux-x64@0.24.0':
optional: true
+ '@esbuild/netbsd-x64@0.23.1':
+ optional: true
+
'@esbuild/netbsd-x64@0.24.0':
optional: true
+ '@esbuild/openbsd-arm64@0.23.1':
+ optional: true
+
'@esbuild/openbsd-arm64@0.24.0':
optional: true
+ '@esbuild/openbsd-x64@0.23.1':
+ optional: true
+
'@esbuild/openbsd-x64@0.24.0':
optional: true
+ '@esbuild/sunos-x64@0.23.1':
+ optional: true
+
'@esbuild/sunos-x64@0.24.0':
optional: true
+ '@esbuild/win32-arm64@0.23.1':
+ optional: true
+
'@esbuild/win32-arm64@0.24.0':
optional: true
+ '@esbuild/win32-ia32@0.23.1':
+ optional: true
+
'@esbuild/win32-ia32@0.24.0':
optional: true
+ '@esbuild/win32-x64@0.23.1':
+ optional: true
+
'@esbuild/win32-x64@0.24.0':
optional: true
@@ -1666,6 +1949,18 @@ snapshots:
'@jridgewell/resolve-uri': 3.1.2
'@jridgewell/sourcemap-codec': 1.5.0
+ '@nodelib/fs.scandir@2.1.5':
+ dependencies:
+ '@nodelib/fs.stat': 2.0.5
+ run-parallel: 1.2.0
+
+ '@nodelib/fs.stat@2.0.5': {}
+
+ '@nodelib/fs.walk@1.2.8':
+ dependencies:
+ '@nodelib/fs.scandir': 2.1.5
+ fastq: 1.19.0
+
'@parcel/watcher-android-arm64@2.5.0':
optional: true
@@ -1984,6 +2279,8 @@ snapshots:
'@types/estree@1.0.6': {}
+ '@types/linkify-it@3.0.5': {}
+
'@types/linkify-it@5.0.0': {}
'@types/lodash-es@4.17.12':
@@ -1992,11 +2289,18 @@ snapshots:
'@types/lodash@4.17.13': {}
+ '@types/markdown-it@13.0.9':
+ dependencies:
+ '@types/linkify-it': 3.0.5
+ '@types/mdurl': 1.0.5
+
'@types/markdown-it@14.1.2':
dependencies:
'@types/linkify-it': 5.0.0
'@types/mdurl': 2.0.0
+ '@types/mdurl@1.0.5': {}
+
'@types/mdurl@2.0.0': {}
'@types/node@22.10.5':
@@ -2024,7 +2328,6 @@ snapshots:
braces@3.0.3:
dependencies:
fill-range: 7.1.1
- optional: true
browserslist@4.24.3:
dependencies:
@@ -2171,6 +2474,33 @@ snapshots:
entities@4.5.0: {}
+ esbuild@0.23.1:
+ optionalDependencies:
+ '@esbuild/aix-ppc64': 0.23.1
+ '@esbuild/android-arm': 0.23.1
+ '@esbuild/android-arm64': 0.23.1
+ '@esbuild/android-x64': 0.23.1
+ '@esbuild/darwin-arm64': 0.23.1
+ '@esbuild/darwin-x64': 0.23.1
+ '@esbuild/freebsd-arm64': 0.23.1
+ '@esbuild/freebsd-x64': 0.23.1
+ '@esbuild/linux-arm': 0.23.1
+ '@esbuild/linux-arm64': 0.23.1
+ '@esbuild/linux-ia32': 0.23.1
+ '@esbuild/linux-loong64': 0.23.1
+ '@esbuild/linux-mips64el': 0.23.1
+ '@esbuild/linux-ppc64': 0.23.1
+ '@esbuild/linux-riscv64': 0.23.1
+ '@esbuild/linux-s390x': 0.23.1
+ '@esbuild/linux-x64': 0.23.1
+ '@esbuild/netbsd-x64': 0.23.1
+ '@esbuild/openbsd-arm64': 0.23.1
+ '@esbuild/openbsd-x64': 0.23.1
+ '@esbuild/sunos-x64': 0.23.1
+ '@esbuild/win32-arm64': 0.23.1
+ '@esbuild/win32-ia32': 0.23.1
+ '@esbuild/win32-x64': 0.23.1
+
esbuild@0.24.0:
optionalDependencies:
'@esbuild/aix-ppc64': 0.24.0
@@ -2206,6 +2536,18 @@ snapshots:
estree-walker@2.0.2: {}
+ fast-glob@3.3.3:
+ dependencies:
+ '@nodelib/fs.stat': 2.0.5
+ '@nodelib/fs.walk': 1.2.8
+ glob-parent: 5.1.2
+ merge2: 1.4.1
+ micromatch: 4.0.8
+
+ fastq@1.19.0:
+ dependencies:
+ reusify: 1.0.4
+
fdir@6.4.2(picomatch@4.0.2):
optionalDependencies:
picomatch: 4.0.2
@@ -2213,7 +2555,6 @@ snapshots:
fill-range@7.1.1:
dependencies:
to-regex-range: 5.0.1
- optional: true
fraction.js@4.3.7: {}
@@ -2224,6 +2565,14 @@ snapshots:
gensync@1.0.0-beta.2: {}
+ get-tsconfig@4.10.0:
+ dependencies:
+ resolve-pkg-maps: 1.0.0
+
+ glob-parent@5.1.2:
+ dependencies:
+ is-glob: 4.0.3
+
globals@11.12.0: {}
hasown@2.0.2:
@@ -2238,18 +2587,15 @@ snapshots:
dependencies:
hasown: 2.0.2
- is-extglob@2.1.1:
- optional: true
+ is-extglob@2.1.1: {}
is-glob@4.0.3:
dependencies:
is-extglob: 2.1.1
- optional: true
is-module@1.0.0: {}
- is-number@7.0.0:
- optional: true
+ is-number@7.0.0: {}
is-reference@1.2.1:
dependencies:
@@ -2287,6 +2633,8 @@ snapshots:
dependencies:
'@jridgewell/sourcemap-codec': 1.5.0
+ markdown-it-task-lists@2.1.1: {}
+
markdown-it@14.1.0:
dependencies:
argparse: 2.0.1
@@ -2302,11 +2650,12 @@ snapshots:
mdurl@2.0.0: {}
+ merge2@1.4.1: {}
+
micromatch@4.0.8:
dependencies:
braces: 3.0.3
picomatch: 2.3.1
- optional: true
mkdist@2.1.0(sass@1.83.1)(typescript@5.7.2):
dependencies:
@@ -2357,8 +2706,7 @@ snapshots:
picocolors@1.1.1: {}
- picomatch@2.3.1:
- optional: true
+ picomatch@2.3.1: {}
picomatch@4.0.2: {}
@@ -2647,14 +2995,20 @@ snapshots:
punycode.js@2.3.1: {}
+ queue-microtask@1.2.3: {}
+
readdirp@4.0.2: {}
+ resolve-pkg-maps@1.0.0: {}
+
resolve@1.22.10:
dependencies:
is-core-module: 2.16.1
path-parse: 1.0.7
supports-preserve-symlinks-flag: 1.0.0
+ reusify@1.0.4: {}
+
rollup-plugin-dts@6.1.1(rollup@4.29.1)(typescript@5.7.2):
dependencies:
magic-string: 0.30.17
@@ -2698,6 +3052,10 @@ snapshots:
rope-sequence@1.3.4: {}
+ run-parallel@1.2.0:
+ dependencies:
+ queue-microtask: 1.2.3
+
sass@1.83.1:
dependencies:
chokidar: 4.0.3
@@ -2741,10 +3099,24 @@ snapshots:
dependencies:
'@popperjs/core': 2.11.8
+ tiptap-markdown@0.8.10(@tiptap/core@2.10.4(@tiptap/pm@2.10.4)):
+ dependencies:
+ '@tiptap/core': 2.10.4(@tiptap/pm@2.10.4)
+ '@types/markdown-it': 13.0.9
+ markdown-it: 14.1.0
+ markdown-it-task-lists: 2.1.1
+ prosemirror-markdown: 1.13.1
+
to-regex-range@5.0.1:
dependencies:
is-number: 7.0.0
- optional: true
+
+ tsx@4.19.2:
+ dependencies:
+ esbuild: 0.23.1
+ get-tsconfig: 4.10.0
+ optionalDependencies:
+ fsevents: 2.3.3
typescript@5.7.2: {}
@@ -2809,7 +3181,7 @@ snapshots:
util-deprecate@1.0.2: {}
- vite@6.0.5(@types/node@22.10.5)(jiti@2.4.2)(sass@1.83.1):
+ vite@6.0.5(@types/node@22.10.5)(jiti@2.4.2)(sass@1.83.1)(tsx@4.19.2):
dependencies:
esbuild: 0.24.0
postcss: 8.4.49
@@ -2819,6 +3191,7 @@ snapshots:
fsevents: 2.3.3
jiti: 2.4.2
sass: 1.83.1
+ tsx: 4.19.2
w3c-keyname@2.2.8: {}
diff --git a/scripts/build-one.ts b/scripts/build-one.ts
new file mode 100644
index 0000000..48fb0bb
--- /dev/null
+++ b/scripts/build-one.ts
@@ -0,0 +1,40 @@
+import path, { resolve } from "node:path";
+import URL from "node:url";
+import { build } from "unbuild";
+import scss from "rollup-plugin-scss";
+
+export async function buildOne(
+ dir: string,
+ isDev: boolean = false,
+ type?: "stub" | "watch"
+) {
+ const rootDir = resolve("packages/" + dir);
+ const pkgInfo = await import(
+ URL.pathToFileURL(path.resolve(rootDir, "package.json")).href
+ );
+ const alias = { [pkgInfo.name]: path.resolve(rootDir, "./src") };
+
+ return build(rootDir, false, {
+ stub: type === "stub",
+ watch: type === "watch",
+ rootDir: rootDir,
+ entries: ["src/index.ts"],
+ declaration: true,
+ replace: {
+ __DEV__: `${isDev}`,
+ __PROD__: `${!isDev}`,
+ },
+ alias,
+ hooks: {
+ "rollup:options"(ctx, options) {
+ options.plugins.push(scss({ fileName: "style.css" }));
+ },
+ },
+ rollup: {
+ emitCJS: !isDev,
+ output: {
+ exports: "named",
+ },
+ },
+ });
+}
diff --git a/scripts/build.ts b/scripts/build.ts
new file mode 100644
index 0000000..fd68315
--- /dev/null
+++ b/scripts/build.ts
@@ -0,0 +1,25 @@
+import { resolve } from "node:path";
+import fg from "fast-glob";
+import { buildOne } from "./build-one";
+
+const [mode, type, dir] = process.argv.slice(2);
+
+if (dir) {
+ const isDev = mode === "dev";
+ buildOne(dir, isDev, type as any);
+} else {
+ const dirs = fg.sync(["*"], {
+ cwd: resolve("packages"),
+ onlyDirectories: true,
+ ignore: [".vitepress", "guide"],
+ });
+ for (let i = 0; i < dirs.length; i++) {
+ const dir = dirs[i];
+ console.log(`开始构建${dir}`);
+ try {
+ await buildOne(dir, false);
+ } catch (error) {
+ console.error(error);
+ }
+ }
+}
\ No newline at end of file