From 5bcfc8cd3e9f7a2d6e2de7033042b863fa6a9102 Mon Sep 17 00:00:00 2001 From: Saul-Mirone Date: Mon, 14 Apr 2025 11:09:48 +0800 Subject: [PATCH 1/4] ci: add eslint to lint errors not supported by oxlint --- .github/workflows/ci.yml | 3 + .gitignore | 2 + .prettierignore | 4 +- dev/src/generate.ts | 12 +- dev/src/package.ts | 5 +- dev/src/vite.ts | 3 +- dev/src/workspace.ts | 3 +- e2e/entry.ts | 1 + e2e/playwright.config.ts | 2 +- e2e/shim.d.ts | 4 +- e2e/src/crepe/main.ts | 2 +- e2e/src/main.ts | 2 + e2e/src/multi-editor/main.ts | 24 +- e2e/src/plugin-automd/main.ts | 8 +- e2e/src/plugin-listener/main.ts | 8 +- e2e/src/preset-commonmark/main.ts | 27 +- e2e/src/preset-gfm/main.ts | 6 +- e2e/src/utils.ts | 5 +- e2e/tests/command/bold.spec.ts | 1 + e2e/tests/crepe/latex.spec.ts | 1 + e2e/tests/crepe/listener.spec.ts | 1 + e2e/tests/input/blockquote.spec.ts | 1 + e2e/tests/input/bold.spec.ts | 1 + e2e/tests/input/bullet-list.spec.ts | 1 + e2e/tests/input/code-block.spec.ts | 1 + e2e/tests/input/code-inline.spec.ts | 1 + e2e/tests/input/heading.spec.ts | 1 + e2e/tests/input/hr.spec.ts | 1 + e2e/tests/input/italic.spec.ts | 1 + e2e/tests/input/ordered-list.spec.ts | 1 + e2e/tests/input/paragraph.spec.ts | 1 + e2e/tests/input/strike-through.spec.ts | 1 + e2e/tests/input/table.spec.ts | 1 + e2e/tests/input/task-list.spec.ts | 1 + e2e/tests/misc/index.ts | 1 + e2e/tests/plugin/automd.spec.ts | 1 + e2e/tests/plugin/clipboard.spec.ts | 1 + e2e/tests/plugin/listener.spec.ts | 1 + e2e/tests/shortcut/bold.spec.ts | 1 + e2e/tests/shortcut/code-block.spec.ts | 1 + e2e/tests/shortcut/code-inline.spec.ts | 1 + e2e/tests/shortcut/heading.spec.ts | 1 + e2e/tests/shortcut/italic.spec.ts | 1 + e2e/tests/shortcut/list.spec.ts | 1 + e2e/tests/shortcut/strike-through.spec.ts | 1 + e2e/tests/shortcut/system.spec.ts | 1 + e2e/tests/transform/blockquote.spec.ts | 1 + e2e/tests/transform/code-block.spec.ts | 1 + e2e/tests/transform/hardbreak.spec.ts | 1 + e2e/tests/transform/hr.spec.ts | 1 + e2e/tests/transform/html.spec.ts | 1 + e2e/tests/transform/list.spec.ts | 1 + e2e/tests/transform/mark.spec.ts | 1 + e2e/tests/transform/paragraph.spec.ts | 1 + .../transform/preserve-empty-line.spec.ts | 1 + e2e/vite.config.mts | 1 + eslint.config.mjs | 46 ++ package.json | 5 + .../__internal__/components/image-input.tsx | 3 +- .../components/src/__internal__/helper.ts | 2 +- packages/components/src/code-block/config.ts | 6 +- packages/components/src/code-block/index.ts | 3 +- .../code-block/view/components/code-block.tsx | 9 +- .../view/components/language-picker.tsx | 18 +- .../view/components/preview-panel.tsx | 5 +- .../components/src/code-block/view/index.ts | 10 +- .../src/code-block/view/node-view.ts | 28 +- packages/components/src/image-block/config.ts | 1 + packages/components/src/image-block/index.ts | 5 +- .../src/image-block/remark-plugin.ts | 4 +- packages/components/src/image-block/schema.ts | 3 +- .../view/components/image-block.tsx | 4 +- .../view/components/image-input.tsx | 6 +- .../view/components/image-viewer.tsx | 4 +- .../components/src/image-block/view/index.ts | 22 +- .../image-inline/components/image-inline.tsx | 2 + .../components/src/image-inline/config.ts | 1 + packages/components/src/image-inline/index.ts | 1 + packages/components/src/image-inline/view.ts | 17 +- .../components/src/link-tooltip/configure.ts | 3 +- .../src/link-tooltip/edit/component.tsx | 2 + .../src/link-tooltip/edit/edit-configure.ts | 1 + .../src/link-tooltip/edit/edit-view.ts | 12 +- packages/components/src/link-tooltip/index.ts | 1 + .../src/link-tooltip/preview/component.tsx | 2 + .../link-tooltip/preview/preview-configure.ts | 6 +- .../src/link-tooltip/preview/preview-view.ts | 9 +- .../components/src/link-tooltip/slices.ts | 4 +- .../components/src/link-tooltip/tooltips.ts | 1 + packages/components/src/link-tooltip/utils.ts | 4 +- .../src/list-item-block/component.ts | 2 + .../components/src/list-item-block/config.ts | 1 + .../components/src/list-item-block/index.ts | 3 +- .../components/src/list-item-block/view.ts | 13 +- packages/components/src/table-block/config.ts | 4 +- packages/components/src/table-block/index.ts | 3 +- .../src/table-block/view/component.ts | 14 +- .../components/src/table-block/view/drag.ts | 41 +- .../src/table-block/view/operation.ts | 6 +- .../src/table-block/view/pointer.ts | 35 +- .../components/src/table-block/view/utils.ts | 38 +- .../components/src/table-block/view/view.ts | 15 +- packages/core/src/editor/editor.ts | 6 +- packages/core/src/internal-plugin/atoms.ts | 11 +- packages/core/src/internal-plugin/commands.ts | 5 +- packages/core/src/internal-plugin/config.ts | 2 + .../core/src/internal-plugin/editor-state.ts | 11 +- .../core/src/internal-plugin/editor-view.ts | 7 +- packages/core/src/internal-plugin/init.ts | 4 +- packages/core/src/internal-plugin/parser.ts | 3 +- packages/core/src/internal-plugin/schema.ts | 7 +- .../core/src/internal-plugin/serializer.ts | 5 +- packages/crepe/src/core/crepe.ts | 15 +- packages/crepe/src/core/slice.ts | 2 + .../feature/block-edit/handle/component.ts | 4 +- .../src/feature/block-edit/handle/index.ts | 13 +- .../crepe/src/feature/block-edit/index.ts | 4 +- .../src/feature/block-edit/menu/component.ts | 5 +- .../src/feature/block-edit/menu/config.ts | 9 +- .../src/feature/block-edit/menu/index.ts | 15 +- .../src/feature/block-edit/menu/utils.ts | 5 +- .../crepe/src/feature/code-mirror/index.ts | 11 +- packages/crepe/src/feature/cursor/index.ts | 2 +- .../crepe/src/feature/image-block/index.ts | 2 + packages/crepe/src/feature/index.ts | 9 +- packages/crepe/src/feature/latex/index.ts | 15 +- .../feature/latex/inline-tooltip/component.ts | 4 +- .../src/feature/latex/inline-tooltip/view.ts | 13 +- .../crepe/src/feature/latex/input-rule.ts | 7 +- packages/crepe/src/feature/latex/remark.ts | 5 +- .../crepe/src/feature/link-tooltip/index.ts | 2 + packages/crepe/src/feature/list-item/index.ts | 3 + .../crepe/src/feature/placeholder/index.ts | 9 +- packages/crepe/src/feature/table/index.ts | 2 + .../crepe/src/feature/toolbar/component.ts | 23 +- packages/crepe/src/feature/toolbar/index.ts | 11 +- packages/ctx/src/context/slice.ts | 1 + packages/ctx/src/inspector/inspector.ts | 8 +- packages/ctx/src/plugin/ctx.spec.ts | 1 + packages/ctx/src/plugin/ctx.ts | 3 +- packages/integrations/react/src/editor.tsx | 2 + packages/integrations/react/src/use-editor.ts | 2 + .../integrations/react/src/use-get-editor.ts | 2 +- .../integrations/react/src/use-instance.ts | 2 + packages/integrations/vue/src/consts.ts | 1 + packages/integrations/vue/src/editor.tsx | 4 +- packages/integrations/vue/src/use-editor.ts | 3 +- .../integrations/vue/src/use-get-editor.ts | 8 +- packages/integrations/vue/src/use-instance.ts | 2 + packages/plugins/plugin-automd/src/config.ts | 1 + packages/plugins/plugin-automd/src/context.ts | 5 +- packages/plugins/plugin-automd/src/index.ts | 1 + .../plugin-automd/src/inline-sync-plugin.ts | 1 + .../plugins/plugin-automd/src/replacer.ts | 3 +- packages/plugins/plugin-automd/src/utils.ts | 1 + .../__internal__/serialize-for-clipboard.ts | 3 +- .../plugins/plugin-block/src/block-config.ts | 3 +- .../plugins/plugin-block/src/block-plugin.ts | 3 +- .../plugin-block/src/block-provider.ts | 27 +- .../plugins/plugin-block/src/block-service.ts | 10 +- packages/plugins/plugin-block/src/index.ts | 4 +- .../plugins/plugin-clipboard/src/index.ts | 3 +- .../plugin-collab/src/collab-service.ts | 11 +- packages/plugins/plugin-collab/src/index.ts | 3 +- packages/plugins/plugin-collab/src/shim.d.ts | 4 +- packages/plugins/plugin-cursor/src/index.ts | 1 + .../src/__internal__/remark-twemoji.ts | 1 + packages/plugins/plugin-emoji/src/index.ts | 3 +- packages/plugins/plugin-history/src/index.ts | 1 + packages/plugins/plugin-indent/src/index.ts | 1 + packages/plugins/plugin-listener/src/index.ts | 5 +- .../plugin-prism/src/get-decorations.ts | 9 +- packages/plugins/plugin-prism/src/index.ts | 4 +- .../plugins/plugin-slash/src/slash-plugin.ts | 3 +- .../plugin-slash/src/slash-provider.ts | 25 +- .../plugin-tooltip/src/tooltip-plugin.ts | 3 +- .../plugin-tooltip/src/tooltip-provider.ts | 33 +- packages/plugins/plugin-trailing/src/index.ts | 1 + .../plugin-upload/src/default-uploader.ts | 3 +- packages/plugins/plugin-upload/src/index.ts | 1 + packages/plugins/plugin-upload/src/upload.ts | 7 +- .../src/__internal__/serialize-text.ts | 3 +- .../src/composed/commands.ts | 1 + .../src/composed/inputrules.ts | 13 +- .../preset-commonmark/src/composed/keymap.ts | 1 + .../preset-commonmark/src/composed/plugins.ts | 1 + .../preset-commonmark/src/composed/schema.ts | 1 + .../plugins/preset-commonmark/src/index.ts | 1 + .../preset-commonmark/src/mark/emphasis.ts | 5 +- .../preset-commonmark/src/mark/inline-code.ts | 6 +- .../preset-commonmark/src/mark/link.ts | 4 +- .../preset-commonmark/src/mark/strong.ts | 5 +- .../preset-commonmark/src/node/blockquote.ts | 4 +- .../preset-commonmark/src/node/bullet-list.ts | 1 + .../preset-commonmark/src/node/code-block.ts | 1 + .../plugins/preset-commonmark/src/node/doc.ts | 1 + .../preset-commonmark/src/node/hardbreak.ts | 1 + .../preset-commonmark/src/node/heading.ts | 4 +- .../plugins/preset-commonmark/src/node/hr.ts | 1 + .../preset-commonmark/src/node/html.ts | 1 + .../preset-commonmark/src/node/image.ts | 1 + .../preset-commonmark/src/node/list-item.ts | 6 +- .../src/node/ordered-list.ts | 1 + .../preset-commonmark/src/node/paragraph.ts | 4 +- .../preset-commonmark/src/node/text.ts | 1 + .../src/plugin/hardbreak-clear-mark-plugin.ts | 3 +- .../src/plugin/hardbreak-filter-plugin.ts | 1 + .../src/plugin/inline-nodes-cursor-plugin.ts | 1 + .../plugin/remark-add-order-in-list-plugin.ts | 1 + .../src/plugin/remark-html-transformer.ts | 4 +- .../src/plugin/remark-inline-link-plugin.ts | 1 + .../src/plugin/remark-line-break.ts | 4 +- .../src/plugin/remark-marker-plugin.ts | 4 +- .../src/plugin/remark-preserve-empty-line.ts | 4 +- .../src/plugin/sync-heading-id-plugin.ts | 6 +- .../src/plugin/sync-list-order-plugin.ts | 9 +- .../preset-gfm/src/composed/inputrules.ts | 3 +- .../plugins/preset-gfm/src/composed/keymap.ts | 1 + .../preset-gfm/src/composed/plugins.ts | 1 + .../plugins/preset-gfm/src/composed/schema.ts | 1 + .../preset-gfm/src/mark/strike-through.ts | 5 +- .../src/node/footnote/definition.ts | 1 + .../preset-gfm/src/node/footnote/reference.ts | 1 + .../preset-gfm/src/node/table/command.ts | 5 +- .../preset-gfm/src/node/table/input.ts | 5 +- .../preset-gfm/src/node/table/schema.ts | 6 +- .../preset-gfm/src/node/table/utils.ts | 5 +- .../preset-gfm/src/node/task-list-item.ts | 1 + .../src/plugin/auto-insert-span-plugin.ts | 1 + .../src/plugin/column-resizing-plugin.ts | 1 + .../src/plugin/keep-table-align-plugin.ts | 4 +- .../src/plugin/remark-gfm-plugin.ts | 4 +- .../src/plugin/table-editing-plugin.ts | 1 + packages/plugins/theme-nord/src/index.ts | 3 +- packages/plugins/theme-nord/vite.config.ts | 3 +- .../toolkit/input-rules/custom-input-rules.ts | 3 +- .../src/toolkit/input-rules/mark-rule.ts | 3 +- .../src/toolkit/input-rules/node-rule.ts | 3 +- packages/prose/src/toolkit/prose/selection.ts | 3 +- .../src/parser/stack-element.spec.ts | 1 + .../transformer/src/parser/stack-element.ts | 1 + packages/transformer/src/parser/state.spec.ts | 2 + packages/transformer/src/parser/state.ts | 6 +- packages/transformer/src/parser/types.ts | 2 +- .../src/serializer/stack-element.spec.ts | 1 + .../src/serializer/stack-element.ts | 1 + .../transformer/src/serializer/state.spec.ts | 2 + packages/transformer/src/serializer/state.ts | 6 +- .../transformer/src/utility/stack.spec.ts | 1 + packages/transformer/src/utility/types.ts | 1 + packages/utils/src/composable/$command.ts | 1 + packages/utils/src/composable/$ctx.ts | 1 + packages/utils/src/composable/$input-rule.ts | 3 +- packages/utils/src/composable/$mark.ts | 3 +- packages/utils/src/composable/$node.ts | 5 +- packages/utils/src/composable/$prose.ts | 3 +- packages/utils/src/composable/$shortcut.ts | 3 +- packages/utils/src/composable/$view.ts | 12 +- .../utils/src/composable/composed/$attr.ts | 2 + .../src/composable/composed/$mark-schema.ts | 7 +- .../src/composable/composed/$node-schema.ts | 7 +- .../utils/src/composable/composed/$remark.ts | 4 +- .../src/composable/composed/$user-keymap.ts | 4 +- packages/utils/src/composable/utils.ts | 8 +- packages/utils/src/macro/call-command.ts | 3 +- packages/utils/src/macro/force-update.ts | 1 + packages/utils/src/macro/get-html.ts | 1 + packages/utils/src/macro/get-markdown.ts | 1 + packages/utils/src/macro/insert.ts | 1 + packages/utils/src/macro/outline.ts | 1 + packages/utils/src/macro/replace-all.ts | 1 + packages/utils/src/macro/set-attr.ts | 3 +- pnpm-lock.yaml | 633 ++++++++++++++++++ scripts/changelog.mts | 2 +- .../stories/components/code-block.stories.ts | 12 +- .../stories/components/image-block.stories.ts | 2 + .../components/inline-image-block.stories.ts | 2 + .../components/link-tooltip.stories.ts | 12 +- .../components/list-item-block.stories.ts | 4 +- .../stories/components/table-block.stories.ts | 6 +- storybook/stories/crepe/crepe-dark.stories.ts | 4 +- storybook/stories/crepe/crepe.stories.ts | 4 +- storybook/stories/crepe/frame-dark.stories.ts | 4 +- storybook/stories/crepe/frame.stories.ts | 4 +- storybook/stories/crepe/nord-dark.stories.ts | 4 +- storybook/stories/crepe/nord.stories.ts | 4 +- storybook/stories/crepe/setup.ts | 8 +- storybook/stories/plugins/listener.stories.ts | 2 + storybook/stories/utils/shadow.ts | 21 +- storybook/tsconfig.json | 1 + tsconfig.eslint.json | 12 + 291 files changed, 1601 insertions(+), 467 deletions(-) create mode 100644 eslint.config.mjs create mode 100644 tsconfig.eslint.json diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d2aa49b66d5..a5ac4fc333d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -39,6 +39,9 @@ jobs: - name: Run lint run: pnpm test:lint --format github + - name: Run eslint + run: pnpm test:eslint + unit: runs-on: ubuntu-latest needs: install-deps diff --git a/.gitignore b/.gitignore index e787c26a513..7970653fb37 100644 --- a/.gitignore +++ b/.gitignore @@ -18,6 +18,8 @@ e2e/cypress/downloads sitemap.xml +.eslintcache + .env *.local *.cache diff --git a/.prettierignore b/.prettierignore index eeeb7be52f8..17a7a907e35 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1 +1,3 @@ -pnpm-lock.yaml \ No newline at end of file +pnpm-lock.yaml +**/storybook-static +**/lib \ No newline at end of file diff --git a/dev/src/generate.ts b/dev/src/generate.ts index 198292a9059..e7ccef9bd12 100644 --- a/dev/src/generate.ts +++ b/dev/src/generate.ts @@ -1,14 +1,16 @@ import { applyEdits, modify } from 'jsonc-parser' -import { Workspace } from './workspace' -import type { Path } from './path' -import { type BuiltInParserName, format } from 'prettier' import { readFileSync, writeFileSync } from 'node:fs' -import { Logger } from './logger' +import { type BuiltInParserName, format } from 'prettier' + import type { Package } from './package' +import type { Path } from './path' + +import { Logger } from './logger' +import { Workspace } from './workspace' export function generateTsConfig() { const generator = new Generator() - generator.run() + generator.run().catch(console.error) } export class Generator { diff --git a/dev/src/package.ts b/dev/src/package.ts index 5a3b5918ba5..10f1685be9f 100644 --- a/dev/src/package.ts +++ b/dev/src/package.ts @@ -1,10 +1,11 @@ import { readFileSync } from 'node:fs' import { parse } from 'node:path' -import { Path } from './path' +import type { PackageItem } from './pnpm' import type { CommonPackageJsonContent } from './types' import type { Workspace } from './workspace' -import type { PackageItem } from './pnpm' + +import { Path } from './path' import { pnpmList } from './pnpm' export function readPackageJson(path: Path): CommonPackageJsonContent { diff --git a/dev/src/vite.ts b/dev/src/vite.ts index b9e2b95c4b6..05ee3653698 100644 --- a/dev/src/vite.ts +++ b/dev/src/vite.ts @@ -1,7 +1,8 @@ +import type { BuildOptions, UserConfig } from 'vite' + import { readFileSync } from 'node:fs' import { basename, dirname, resolve } from 'node:path' import { fileURLToPath } from 'node:url' -import type { BuildOptions, UserConfig } from 'vite' import { defineConfig } from 'vite' import globalPackageJson from '../../package.json' with { type: 'json' } diff --git a/dev/src/workspace.ts b/dev/src/workspace.ts index 9993d357487..22d6fdd9926 100644 --- a/dev/src/workspace.ts +++ b/dev/src/workspace.ts @@ -1,7 +1,8 @@ +import type { CommonPackageJsonContent } from './types' + import { Logger } from './logger' import { Package, readPackageJson } from './package' import { ProjectRoot } from './path' -import type { CommonPackageJsonContent } from './types' import { pnpmList } from './pnpm' class CircularDependenciesError extends Error { diff --git a/e2e/entry.ts b/e2e/entry.ts index c2e489ffe75..aa6af6fe344 100644 --- a/e2e/entry.ts +++ b/e2e/entry.ts @@ -1,4 +1,5 @@ import { resolve } from 'node:path' + import { cases } from './src/data' const data = cases.reduce( diff --git a/e2e/playwright.config.ts b/e2e/playwright.config.ts index bd91d90d36f..ba1247cddd7 100644 --- a/e2e/playwright.config.ts +++ b/e2e/playwright.config.ts @@ -1,5 +1,5 @@ -import process from 'node:process' import { defineConfig, devices } from '@playwright/test' +import process from 'node:process' /** * Read environment variables from file. diff --git a/e2e/shim.d.ts b/e2e/shim.d.ts index 42c61640b9e..4a3be6d1d03 100644 --- a/e2e/shim.d.ts +++ b/e2e/shim.d.ts @@ -1,9 +1,9 @@ /// import type { Editor } from '@milkdown/core' -import type { EditorView } from '@milkdown/prose/view' -import type { Telemetry } from '@milkdown/ctx' import type { Crepe } from '@milkdown/crepe' +import type { Telemetry } from '@milkdown/ctx' +import type { EditorView } from '@milkdown/prose/view' declare global { var __milkdown__: Editor diff --git a/e2e/src/crepe/main.ts b/e2e/src/crepe/main.ts index d3053598bcd..e9d43fe1490 100644 --- a/e2e/src/crepe/main.ts +++ b/e2e/src/crepe/main.ts @@ -16,4 +16,4 @@ setup(async () => { globalThis.__afterCrepeCreated__(crepe) } return crepe.editor -}) +}).catch(console.error) diff --git a/e2e/src/main.ts b/e2e/src/main.ts index fe1b7e8c8e1..b0862bc5862 100644 --- a/e2e/src/main.ts +++ b/e2e/src/main.ts @@ -1,5 +1,7 @@ import './style.css' + import { c, html } from 'atomico' + import { cases } from './data' function App() { diff --git a/e2e/src/multi-editor/main.ts b/e2e/src/multi-editor/main.ts index 17d3151b88b..000d474805a 100644 --- a/e2e/src/multi-editor/main.ts +++ b/e2e/src/multi-editor/main.ts @@ -1,8 +1,8 @@ import { Editor, rootCtx } from '@milkdown/core' -import { nord } from '@milkdown/theme-nord' -import { commonmark } from '@milkdown/preset-commonmark' import { history } from '@milkdown/plugin-history' +import { commonmark } from '@milkdown/preset-commonmark' import { gfm, insertTableCommand } from '@milkdown/preset-gfm' +import { nord } from '@milkdown/theme-nord' import { callCommand } from '@milkdown/utils' import { setup } from '../utils' @@ -22,11 +22,13 @@ setup(() => { .use(gfm) .use(history) .create() -}).then((editor1) => { - globalThis.commands.addTable = () => { - editor1.action(callCommand(insertTableCommand.key)) - } }) + .then((editor1) => { + globalThis.commands.addTable = () => { + editor1.action(callCommand(insertTableCommand.key)) + } + }) + .catch(console.error) setup(() => { return Editor.make() @@ -39,8 +41,10 @@ setup(() => { .use(gfm) .use(history) .create() -}).then((editor2) => { - globalThis.commands.addTable2 = () => { - editor2.action(callCommand(insertTableCommand.key)) - } }) + .then((editor2) => { + globalThis.commands.addTable2 = () => { + editor2.action(callCommand(insertTableCommand.key)) + } + }) + .catch(console.error) diff --git a/e2e/src/plugin-automd/main.ts b/e2e/src/plugin-automd/main.ts index 7d1d0fe32c8..9da15195ac8 100644 --- a/e2e/src/plugin-automd/main.ts +++ b/e2e/src/plugin-automd/main.ts @@ -1,9 +1,9 @@ import { Editor, rootCtx } from '@milkdown/core' -import { nord } from '@milkdown/theme-nord' -import { listener, listenerCtx } from '@milkdown/plugin-listener' import { automd } from '@milkdown/plugin-automd' +import { listener, listenerCtx } from '@milkdown/plugin-listener' import { commonmark, markInputRules } from '@milkdown/preset-commonmark' import { markInputRules as GFMMarkInputRules, gfm } from '@milkdown/preset-gfm' +import { nord } from '@milkdown/theme-nord' import { setup } from '../utils' @@ -16,7 +16,7 @@ setup(() => { .config((ctx) => { ctx.set(rootCtx, document.getElementById('app')) ctx.get(listenerCtx).markdownUpdated((_, markdown) => { - // eslint-disable-next-line no-console + // oxlint-disable-next-line no-console console.log(markdown) }) }) @@ -26,4 +26,4 @@ setup(() => { .use(listener) .use(automd) .create() -}) +}).catch(console.error) diff --git a/e2e/src/plugin-listener/main.ts b/e2e/src/plugin-listener/main.ts index 411b4ce6f11..077a9b787db 100644 --- a/e2e/src/plugin-listener/main.ts +++ b/e2e/src/plugin-listener/main.ts @@ -1,7 +1,7 @@ import { Editor, defaultValueCtx, rootCtx } from '@milkdown/core' -import { nord } from '@milkdown/theme-nord' -import { commonmark } from '@milkdown/preset-commonmark' import { listener, listenerCtx } from '@milkdown/plugin-listener' +import { commonmark } from '@milkdown/preset-commonmark' +import { nord } from '@milkdown/theme-nord' import { setup } from '../utils' @@ -15,7 +15,7 @@ setup(() => { ctx.set(rootCtx, document.getElementById('app')) ctx.set(defaultValueCtx, 'test') ctx.get(listenerCtx).markdownUpdated((_, markdown, prevMarkdown) => { - // eslint-disable-next-line no-console + // oxlint-disable-next-line no-console console.log(markdown, prevMarkdown) }) }) @@ -23,4 +23,4 @@ setup(() => { .use(commonmark) .use(listener) .create() -}) +}).catch(console.error) diff --git a/e2e/src/preset-commonmark/main.ts b/e2e/src/preset-commonmark/main.ts index 1e8eec66be7..a819948ac4a 100644 --- a/e2e/src/preset-commonmark/main.ts +++ b/e2e/src/preset-commonmark/main.ts @@ -1,12 +1,12 @@ import { Editor, rootCtx } from '@milkdown/core' -import { nord } from '@milkdown/theme-nord' +import { clipboard } from '@milkdown/plugin-clipboard' +import { history } from '@milkdown/plugin-history' import { commonmark, toggleEmphasisCommand, toggleStrongCommand, } from '@milkdown/preset-commonmark' -import { clipboard } from '@milkdown/plugin-clipboard' -import { history } from '@milkdown/plugin-history' +import { nord } from '@milkdown/theme-nord' import { callCommand } from '@milkdown/utils' import { setup } from '../utils' @@ -27,13 +27,16 @@ setup(() => { .use(clipboard) .create() - editor.then((instance) => { - globalThis.commands.toggleStrong = () => { - instance.action(callCommand(toggleStrongCommand.key)) - } - globalThis.commands.toggleEmphasis = () => { - instance.action(callCommand(toggleEmphasisCommand.key)) - } - }) + editor + .then((instance) => { + globalThis.commands.toggleStrong = () => { + instance.action(callCommand(toggleStrongCommand.key)) + } + globalThis.commands.toggleEmphasis = () => { + instance.action(callCommand(toggleEmphasisCommand.key)) + } + }) + .catch(console.error) + return editor -}) +}).catch(console.error) diff --git a/e2e/src/preset-gfm/main.ts b/e2e/src/preset-gfm/main.ts index 365926e1d11..932d8416b75 100644 --- a/e2e/src/preset-gfm/main.ts +++ b/e2e/src/preset-gfm/main.ts @@ -1,8 +1,8 @@ import { Editor, rootCtx } from '@milkdown/core' -import { nord } from '@milkdown/theme-nord' -import { commonmark } from '@milkdown/preset-commonmark' import { history } from '@milkdown/plugin-history' +import { commonmark } from '@milkdown/preset-commonmark' import { gfm } from '@milkdown/preset-gfm' +import { nord } from '@milkdown/theme-nord' import { setup } from '../utils' @@ -21,4 +21,4 @@ setup(() => { .use(gfm) .use(history) .create() -}) +}).catch(console.error) diff --git a/e2e/src/utils.ts b/e2e/src/utils.ts index cf725b5e42a..8cab9abe664 100644 --- a/e2e/src/utils.ts +++ b/e2e/src/utils.ts @@ -1,4 +1,5 @@ import type { Editor } from '@milkdown/core' + import { editorViewCtx, parserCtx, serializerCtx } from '@milkdown/core' import { Slice } from '@milkdown/prose/model' @@ -33,13 +34,13 @@ export async function setup(createEditor: () => Promise) { const logButton = document.querySelector('#log') if (logButton) { - // eslint-disable-next-line no-console + // oxlint-disable-next-line no-console logButton.onclick = () => console.log(globalThis.__getMarkdown__()) } const inspectButton = document.querySelector('#inspect') if (inspectButton) { - // eslint-disable-next-line no-console + // oxlint-disable-next-line no-console inspectButton.onclick = () => console.log(globalThis.__inspect__()) } return editor diff --git a/e2e/tests/command/bold.spec.ts b/e2e/tests/command/bold.spec.ts index 6ae5acdbb3f..d1249645c7d 100644 --- a/e2e/tests/command/bold.spec.ts +++ b/e2e/tests/command/bold.spec.ts @@ -1,4 +1,5 @@ import { expect, test } from '@playwright/test' + import { focusEditor, loadFixture, selectAll, setMarkdown } from '../misc' test.beforeEach(async ({ page }) => { diff --git a/e2e/tests/crepe/latex.spec.ts b/e2e/tests/crepe/latex.spec.ts index cc17ed2e8a0..5f641b1e71e 100644 --- a/e2e/tests/crepe/latex.spec.ts +++ b/e2e/tests/crepe/latex.spec.ts @@ -1,4 +1,5 @@ import { expect, test } from '@playwright/test' + import { focusEditor, getMarkdown } from '../misc' test.beforeEach(async ({ page }) => { diff --git a/e2e/tests/crepe/listener.spec.ts b/e2e/tests/crepe/listener.spec.ts index 48d6c300909..61e01f0f5f0 100644 --- a/e2e/tests/crepe/listener.spec.ts +++ b/e2e/tests/crepe/listener.spec.ts @@ -1,4 +1,5 @@ import { expect, test } from '@playwright/test' + import { focusEditor } from '../misc' test('listen change before editor is created', async ({ page }) => { diff --git a/e2e/tests/input/blockquote.spec.ts b/e2e/tests/input/blockquote.spec.ts index 492ea1ceed5..e05b6684a56 100644 --- a/e2e/tests/input/blockquote.spec.ts +++ b/e2e/tests/input/blockquote.spec.ts @@ -1,4 +1,5 @@ import { expect, test } from '@playwright/test' + import { focusEditor, getMarkdown } from '../misc' test.beforeEach(async ({ page }) => { diff --git a/e2e/tests/input/bold.spec.ts b/e2e/tests/input/bold.spec.ts index b99f964e549..3c1805cff20 100644 --- a/e2e/tests/input/bold.spec.ts +++ b/e2e/tests/input/bold.spec.ts @@ -1,4 +1,5 @@ import { expect, test } from '@playwright/test' + import { focusEditor, getMarkdown } from '../misc' test.beforeEach(async ({ page }) => { diff --git a/e2e/tests/input/bullet-list.spec.ts b/e2e/tests/input/bullet-list.spec.ts index c1e53185810..942a6609867 100644 --- a/e2e/tests/input/bullet-list.spec.ts +++ b/e2e/tests/input/bullet-list.spec.ts @@ -1,4 +1,5 @@ import { expect, test } from '@playwright/test' + import { focusEditor, getMarkdown } from '../misc' test.beforeEach(async ({ page }) => { diff --git a/e2e/tests/input/code-block.spec.ts b/e2e/tests/input/code-block.spec.ts index 411debb35e4..7d2f37d8916 100644 --- a/e2e/tests/input/code-block.spec.ts +++ b/e2e/tests/input/code-block.spec.ts @@ -1,4 +1,5 @@ import { expect, test } from '@playwright/test' + import { focusEditor, getMarkdown } from '../misc' test.beforeEach(async ({ page }) => { diff --git a/e2e/tests/input/code-inline.spec.ts b/e2e/tests/input/code-inline.spec.ts index 5305b838c2b..73c0ef738c3 100644 --- a/e2e/tests/input/code-inline.spec.ts +++ b/e2e/tests/input/code-inline.spec.ts @@ -1,4 +1,5 @@ import { expect, test } from '@playwright/test' + import { focusEditor, getMarkdown } from '../misc' test.beforeEach(async ({ page }) => { diff --git a/e2e/tests/input/heading.spec.ts b/e2e/tests/input/heading.spec.ts index 3c61234a1a4..5aeb99f04c8 100644 --- a/e2e/tests/input/heading.spec.ts +++ b/e2e/tests/input/heading.spec.ts @@ -1,4 +1,5 @@ import { expect, test } from '@playwright/test' + import { focusEditor, getMarkdown, waitNextFrame } from '../misc' test.beforeEach(async ({ page }) => { diff --git a/e2e/tests/input/hr.spec.ts b/e2e/tests/input/hr.spec.ts index d207b64b94e..730c44cf48b 100644 --- a/e2e/tests/input/hr.spec.ts +++ b/e2e/tests/input/hr.spec.ts @@ -1,4 +1,5 @@ import { expect, test } from '@playwright/test' + import { focusEditor, getMarkdown } from '../misc' test.beforeEach(async ({ page }) => { diff --git a/e2e/tests/input/italic.spec.ts b/e2e/tests/input/italic.spec.ts index c26fcf2ac3d..019916a9d2d 100644 --- a/e2e/tests/input/italic.spec.ts +++ b/e2e/tests/input/italic.spec.ts @@ -1,4 +1,5 @@ import { expect, test } from '@playwright/test' + import { focusEditor, getMarkdown } from '../misc' test.beforeEach(async ({ page }) => { diff --git a/e2e/tests/input/ordered-list.spec.ts b/e2e/tests/input/ordered-list.spec.ts index b20a83b42ac..29ec9723c45 100644 --- a/e2e/tests/input/ordered-list.spec.ts +++ b/e2e/tests/input/ordered-list.spec.ts @@ -1,4 +1,5 @@ import { expect, test } from '@playwright/test' + import { focusEditor, getMarkdown } from '../misc' test.beforeEach(async ({ page }) => { diff --git a/e2e/tests/input/paragraph.spec.ts b/e2e/tests/input/paragraph.spec.ts index 7786f095f23..ab129ec15ea 100644 --- a/e2e/tests/input/paragraph.spec.ts +++ b/e2e/tests/input/paragraph.spec.ts @@ -1,4 +1,5 @@ import { expect, test } from '@playwright/test' + import { focusEditor, getMarkdown } from '../misc' test.beforeEach(async ({ page }) => { diff --git a/e2e/tests/input/strike-through.spec.ts b/e2e/tests/input/strike-through.spec.ts index 82b315fc210..1897d5c9586 100644 --- a/e2e/tests/input/strike-through.spec.ts +++ b/e2e/tests/input/strike-through.spec.ts @@ -1,4 +1,5 @@ import { expect, test } from '@playwright/test' + import { focusEditor } from '../misc' test.beforeEach(async ({ page }) => { diff --git a/e2e/tests/input/table.spec.ts b/e2e/tests/input/table.spec.ts index 97bef33a62f..ace9814b5dd 100644 --- a/e2e/tests/input/table.spec.ts +++ b/e2e/tests/input/table.spec.ts @@ -1,4 +1,5 @@ import { expect, test } from '@playwright/test' + import { focusEditor, pressMetaKey } from '../misc' test.beforeEach(async ({ page }) => { diff --git a/e2e/tests/input/task-list.spec.ts b/e2e/tests/input/task-list.spec.ts index dd5ab7448cd..45113fa6b4b 100644 --- a/e2e/tests/input/task-list.spec.ts +++ b/e2e/tests/input/task-list.spec.ts @@ -1,4 +1,5 @@ import { expect, test } from '@playwright/test' + import { focusEditor } from '../misc' test.beforeEach(async ({ page }) => { diff --git a/e2e/tests/misc/index.ts b/e2e/tests/misc/index.ts index aeea24c12b2..cecdb201811 100644 --- a/e2e/tests/misc/index.ts +++ b/e2e/tests/misc/index.ts @@ -1,4 +1,5 @@ import type { Page } from '@playwright/test' + import fs from 'node:fs/promises' import path from 'node:path' diff --git a/e2e/tests/plugin/automd.spec.ts b/e2e/tests/plugin/automd.spec.ts index 7b18d5c06ff..9fd7d14d359 100644 --- a/e2e/tests/plugin/automd.spec.ts +++ b/e2e/tests/plugin/automd.spec.ts @@ -1,4 +1,5 @@ import { expect, test } from '@playwright/test' + import { focusEditor, getMarkdown, waitNextFrame } from '../misc' test.beforeEach(async ({ page }) => { diff --git a/e2e/tests/plugin/clipboard.spec.ts b/e2e/tests/plugin/clipboard.spec.ts index ed31cee582d..23a8bf8b404 100644 --- a/e2e/tests/plugin/clipboard.spec.ts +++ b/e2e/tests/plugin/clipboard.spec.ts @@ -1,4 +1,5 @@ import { expect, test } from '@playwright/test' + import { focusEditor, paste, diff --git a/e2e/tests/plugin/listener.spec.ts b/e2e/tests/plugin/listener.spec.ts index 9dc971a0684..c6f884eca73 100644 --- a/e2e/tests/plugin/listener.spec.ts +++ b/e2e/tests/plugin/listener.spec.ts @@ -1,4 +1,5 @@ import { expect, test } from '@playwright/test' + import { focusEditor, selectAll } from '../misc' test.beforeEach(async ({ page }) => { diff --git a/e2e/tests/shortcut/bold.spec.ts b/e2e/tests/shortcut/bold.spec.ts index 73048883493..3fd7a3ab072 100644 --- a/e2e/tests/shortcut/bold.spec.ts +++ b/e2e/tests/shortcut/bold.spec.ts @@ -1,4 +1,5 @@ import { expect, test } from '@playwright/test' + import { focusEditor, getMarkdown, pressMetaKey, selectAll } from '../misc' test.beforeEach(async ({ page }) => { diff --git a/e2e/tests/shortcut/code-block.spec.ts b/e2e/tests/shortcut/code-block.spec.ts index 529ee71a93e..89040acd4d8 100644 --- a/e2e/tests/shortcut/code-block.spec.ts +++ b/e2e/tests/shortcut/code-block.spec.ts @@ -1,4 +1,5 @@ import { expect, test } from '@playwright/test' + import { focusEditor, pressMetaKey } from '../misc' test.beforeEach(async ({ page }) => { diff --git a/e2e/tests/shortcut/code-inline.spec.ts b/e2e/tests/shortcut/code-inline.spec.ts index 8400c431374..971a1544bdc 100644 --- a/e2e/tests/shortcut/code-inline.spec.ts +++ b/e2e/tests/shortcut/code-inline.spec.ts @@ -1,4 +1,5 @@ import { expect, test } from '@playwright/test' + import { focusEditor, pressMetaKey, selectAll } from '../misc' test.beforeEach(async ({ page }) => { diff --git a/e2e/tests/shortcut/heading.spec.ts b/e2e/tests/shortcut/heading.spec.ts index 9cad09b4285..73d47be110e 100644 --- a/e2e/tests/shortcut/heading.spec.ts +++ b/e2e/tests/shortcut/heading.spec.ts @@ -1,4 +1,5 @@ import { expect, test } from '@playwright/test' + import { focusEditor, pressMetaKey } from '../misc' test.beforeEach(async ({ page }) => { diff --git a/e2e/tests/shortcut/italic.spec.ts b/e2e/tests/shortcut/italic.spec.ts index 68a6e5cb0ea..c21bf16a66d 100644 --- a/e2e/tests/shortcut/italic.spec.ts +++ b/e2e/tests/shortcut/italic.spec.ts @@ -1,4 +1,5 @@ import { expect, test } from '@playwright/test' + import { focusEditor, pressMetaKey, selectAll } from '../misc' test.beforeEach(async ({ page }) => { diff --git a/e2e/tests/shortcut/list.spec.ts b/e2e/tests/shortcut/list.spec.ts index 821b367be49..ccd2071fbc2 100644 --- a/e2e/tests/shortcut/list.spec.ts +++ b/e2e/tests/shortcut/list.spec.ts @@ -1,4 +1,5 @@ import { expect, test } from '@playwright/test' + import { focusEditor, pressMetaKey } from '../misc' test.beforeEach(async ({ page }) => { diff --git a/e2e/tests/shortcut/strike-through.spec.ts b/e2e/tests/shortcut/strike-through.spec.ts index a663b50b806..d4cf7e92ae0 100644 --- a/e2e/tests/shortcut/strike-through.spec.ts +++ b/e2e/tests/shortcut/strike-through.spec.ts @@ -1,4 +1,5 @@ import { expect, test } from '@playwright/test' + import { focusEditor, pressMetaKey, selectAll } from '../misc' test.beforeEach(async ({ page }) => { diff --git a/e2e/tests/shortcut/system.spec.ts b/e2e/tests/shortcut/system.spec.ts index 718d460878d..042a0469433 100644 --- a/e2e/tests/shortcut/system.spec.ts +++ b/e2e/tests/shortcut/system.spec.ts @@ -1,4 +1,5 @@ import { expect, test } from '@playwright/test' + import { focusEditor, selectAll } from '../misc' test.beforeEach(async ({ page }) => { diff --git a/e2e/tests/transform/blockquote.spec.ts b/e2e/tests/transform/blockquote.spec.ts index 9f74a7d5c46..ce5c09c3c18 100644 --- a/e2e/tests/transform/blockquote.spec.ts +++ b/e2e/tests/transform/blockquote.spec.ts @@ -1,4 +1,5 @@ import { expect, test } from '@playwright/test' + import { focusEditor, loadFixture, setMarkdown } from '../misc' test.beforeEach(async ({ page }) => { diff --git a/e2e/tests/transform/code-block.spec.ts b/e2e/tests/transform/code-block.spec.ts index e6947942b1e..ce23e7ba12c 100644 --- a/e2e/tests/transform/code-block.spec.ts +++ b/e2e/tests/transform/code-block.spec.ts @@ -1,4 +1,5 @@ import { expect, test } from '@playwright/test' + import { focusEditor, loadFixture, setMarkdown } from '../misc' test.beforeEach(async ({ page }) => { diff --git a/e2e/tests/transform/hardbreak.spec.ts b/e2e/tests/transform/hardbreak.spec.ts index ef5c4454dcc..ab3a23b1aa0 100644 --- a/e2e/tests/transform/hardbreak.spec.ts +++ b/e2e/tests/transform/hardbreak.spec.ts @@ -1,4 +1,5 @@ import { expect, test } from '@playwright/test' + import { focusEditor, loadFixture, selectAll, setMarkdown } from '../misc' test.beforeEach(async ({ page }) => { diff --git a/e2e/tests/transform/hr.spec.ts b/e2e/tests/transform/hr.spec.ts index 2776f19ca2b..b7ee5c68039 100644 --- a/e2e/tests/transform/hr.spec.ts +++ b/e2e/tests/transform/hr.spec.ts @@ -1,4 +1,5 @@ import { expect, test } from '@playwright/test' + import { focusEditor, loadFixture, setMarkdown } from '../misc' test.beforeEach(async ({ page }) => { diff --git a/e2e/tests/transform/html.spec.ts b/e2e/tests/transform/html.spec.ts index d48e005e978..8a6a282616b 100644 --- a/e2e/tests/transform/html.spec.ts +++ b/e2e/tests/transform/html.spec.ts @@ -1,4 +1,5 @@ import { expect, test } from '@playwright/test' + import { focusEditor, loadFixture, setMarkdown } from '../misc' test.beforeEach(async ({ page }) => { diff --git a/e2e/tests/transform/list.spec.ts b/e2e/tests/transform/list.spec.ts index 5c2150b734f..f54c5a4dd96 100644 --- a/e2e/tests/transform/list.spec.ts +++ b/e2e/tests/transform/list.spec.ts @@ -1,4 +1,5 @@ import { expect, test } from '@playwright/test' + import { focusEditor, loadFixture, setMarkdown } from '../misc' test.beforeEach(async ({ page }) => { diff --git a/e2e/tests/transform/mark.spec.ts b/e2e/tests/transform/mark.spec.ts index 9ceea33ef25..b03393e5904 100644 --- a/e2e/tests/transform/mark.spec.ts +++ b/e2e/tests/transform/mark.spec.ts @@ -1,4 +1,5 @@ import { expect, test } from '@playwright/test' + import { focusEditor, loadFixture, setMarkdown, getMarkdown } from '../misc' test.beforeEach(async ({ page }) => { diff --git a/e2e/tests/transform/paragraph.spec.ts b/e2e/tests/transform/paragraph.spec.ts index 4cdcdab2f32..af5722b9cdb 100644 --- a/e2e/tests/transform/paragraph.spec.ts +++ b/e2e/tests/transform/paragraph.spec.ts @@ -1,4 +1,5 @@ import { expect, test } from '@playwright/test' + import { focusEditor, loadFixture, setMarkdown } from '../misc' test.beforeEach(async ({ page }) => { diff --git a/e2e/tests/transform/preserve-empty-line.spec.ts b/e2e/tests/transform/preserve-empty-line.spec.ts index e6456026c5d..08d59d09806 100644 --- a/e2e/tests/transform/preserve-empty-line.spec.ts +++ b/e2e/tests/transform/preserve-empty-line.spec.ts @@ -1,4 +1,5 @@ import { expect, test } from '@playwright/test' + import { focusEditor, getMarkdown, loadFixture, setMarkdown } from '../misc' test.beforeEach(async ({ page }) => { diff --git a/e2e/vite.config.mts b/e2e/vite.config.mts index ab5be2f4499..2b71e313443 100644 --- a/e2e/vite.config.mts +++ b/e2e/vite.config.mts @@ -1,4 +1,5 @@ import { defineConfig } from 'vite' + import { input } from './entry' export default defineConfig({ diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 00000000000..519cd371791 --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,46 @@ +import { defineConfig } from "eslint/config"; +import { readFileSync } from 'node:fs'; +import tseslint from 'typescript-eslint'; +import tsParser from '@typescript-eslint/parser'; +import perfectionist from 'eslint-plugin-perfectionist'; + +const ignoreList = readFileSync('.prettierignore', 'utf-8') + .split('\n') + .filter(line => line.trim() && !line.startsWith('#')); + +const configFiles = ['**/*.config.mjs', '**/*.config.cjs', '**/*.config.js']; +const typeScriptExtensions = ['.ts', '.tsx', '.cts', '.mts']; + +export default defineConfig(tseslint.config( + { + ignores: [...ignoreList, ...configFiles], + }, + { + languageOptions: { + parser: tsParser, + ecmaVersion: 'latest', + parserOptions: { + project: './tsconfig.eslint.json', + tsconfigRootDir: import.meta.dirname, + }, + }, + }, + { + files: [...typeScriptExtensions].map(ext => `**/*${ext}`), + plugins: { + '@typescript-eslint': tseslint.plugin, + perfectionist, + }, + rules: { + 'perfectionist/sort-imports': 'error', + '@typescript-eslint/no-floating-promises': [ + 'error', + { + ignoreVoid: false, + ignoreIIFE: false, + }, + ], + '@typescript-eslint/await-thenable': 'error', + }, + } +)) \ No newline at end of file diff --git a/package.json b/package.json index 3bf9ba2f225..35546467c4d 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ "test:unit": "vitest run", "test:unit:watch": "vitest", "test:lint": "oxlint -c .oxlintrc.json", + "test:eslint": "eslint . --cache", "test:e2e": "pnpm --filter=@milkdown/e2e test", "test:e2e:build": "pnpm --filter=@milkdown/e2e run build", "format": "lint-staged", @@ -45,6 +46,7 @@ "@tailwindcss/vite": "^4.0.0", "@types/node": "^22.0.0", "@types/rollup-plugin-auto-external": "^2.0.2", + "@typescript-eslint/parser": "^8.29.1", "@vitejs/plugin-react": "^4.0.0", "@vitejs/plugin-vue": "^5.0.0", "@vitejs/plugin-vue-jsx": "^4.0.0", @@ -52,6 +54,8 @@ "concurrently": "^9.0.0", "cross-env": "^7.0.3", "esbuild": "^0.25.0", + "eslint": "^9.24.0", + "eslint-plugin-perfectionist": "^4.11.0", "git-cz": "^4.7.6", "husky": "^9.0.10", "jsdom": "^26.0.0", @@ -73,6 +77,7 @@ "tslib": "^2.8.1", "tsx": "^4.19.3", "typescript": "^5.4.4", + "typescript-eslint": "^8.29.1", "vite": "^6.0.0", "vitest": "^3.0.0" }, diff --git a/packages/components/src/__internal__/components/image-input.tsx b/packages/components/src/__internal__/components/image-input.tsx index eeb9aca3dcd..13e5bf91cfa 100644 --- a/packages/components/src/__internal__/components/image-input.tsx +++ b/packages/components/src/__internal__/components/image-input.tsx @@ -1,6 +1,7 @@ -import { defineComponent, ref, h, type Ref } from 'vue' import clsx from 'clsx' import { customAlphabet } from 'nanoid' +import { defineComponent, ref, h, type Ref } from 'vue' + import { Icon } from './icon' h diff --git a/packages/components/src/__internal__/helper.ts b/packages/components/src/__internal__/helper.ts index 9aca796a4f8..37e6459f07a 100644 --- a/packages/components/src/__internal__/helper.ts +++ b/packages/components/src/__internal__/helper.ts @@ -10,6 +10,6 @@ export function defIfNotExists( if (current === element) return - // eslint-disable-next-line no-console + console.warn(`Custom element ${tagName} has been defined before.`) } diff --git a/packages/components/src/code-block/config.ts b/packages/components/src/code-block/config.ts index bee50318cf0..abb55ffdb5a 100644 --- a/packages/components/src/code-block/config.ts +++ b/packages/components/src/code-block/config.ts @@ -1,6 +1,8 @@ -import { $ctx } from '@milkdown/utils' -import type { Extension } from '@codemirror/state' import type { LanguageDescription } from '@codemirror/language' +import type { Extension } from '@codemirror/state' + +import { $ctx } from '@milkdown/utils' + import { withMeta } from '../__internal__/meta' export interface CodeBlockConfig { diff --git a/packages/components/src/code-block/index.ts b/packages/components/src/code-block/index.ts index 6fb4faa1f04..1bd9f7506ef 100644 --- a/packages/components/src/code-block/index.ts +++ b/packages/components/src/code-block/index.ts @@ -1,6 +1,7 @@ import type { MilkdownPlugin } from '@milkdown/ctx' -import { codeBlockView } from './view' + import { codeBlockConfig } from './config' +import { codeBlockView } from './view' export * from './config' export * from './view' diff --git a/packages/components/src/code-block/view/components/code-block.tsx b/packages/components/src/code-block/view/components/code-block.tsx index 32734157607..5a77aa0baaf 100644 --- a/packages/components/src/code-block/view/components/code-block.tsx +++ b/packages/components/src/code-block/view/components/code-block.tsx @@ -1,4 +1,6 @@ import type { EditorView as CodeMirror } from '@codemirror/view' + +import clsx from 'clsx' import { defineComponent, ref, @@ -8,12 +10,13 @@ import { computed, onMounted, } from 'vue' + import type { CodeBlockConfig } from '../../config' import type { LanguageInfo } from '../loader' -import { PreviewPanel } from './preview-panel' -import { LanguagePicker } from './language-picker' + import { Icon } from '../../../__internal__/components/icon' -import clsx from 'clsx' +import { LanguagePicker } from './language-picker' +import { PreviewPanel } from './preview-panel' h Fragment diff --git a/packages/components/src/code-block/view/components/language-picker.tsx b/packages/components/src/code-block/view/components/language-picker.tsx index 792629b2b9c..3c676a442e7 100644 --- a/packages/components/src/code-block/view/components/language-picker.tsx +++ b/packages/components/src/code-block/view/components/language-picker.tsx @@ -1,3 +1,5 @@ +import { computePosition } from '@floating-ui/dom' +import clsx from 'clsx' import { computed, defineComponent, @@ -8,9 +10,9 @@ import { onUnmounted, watch, } from 'vue' + import type { CodeBlockProps } from './code-block' -import clsx from 'clsx' -import { computePosition } from '@floating-ui/dom' + import { Icon } from '../../../__internal__/components/icon' type LanguagePickerProps = Pick< @@ -58,12 +60,14 @@ export const LanguagePicker = defineComponent({ computePosition(picker, languageList, { placement: 'bottom-start', - }).then(({ x, y }) => { - Object.assign(languageList.style, { - left: `${x}px`, - top: `${y}px`, - }) }) + .then(({ x, y }) => { + Object.assign(languageList.style, { + left: `${x}px`, + top: `${y}px`, + }) + }) + .catch(console.error) }) const onTogglePicker = (e: Event) => { diff --git a/packages/components/src/code-block/view/components/preview-panel.tsx b/packages/components/src/code-block/view/components/preview-panel.tsx index 678e1e6b39c..68be87fd21e 100644 --- a/packages/components/src/code-block/view/components/preview-panel.tsx +++ b/packages/components/src/code-block/view/components/preview-panel.tsx @@ -1,3 +1,5 @@ +import clsx from 'clsx' +import DOMPurify from 'dompurify' import { defineComponent, ref, @@ -7,9 +9,8 @@ import { Fragment, type ComputedRef, } from 'vue' + import type { CodeBlockProps } from './code-block' -import clsx from 'clsx' -import DOMPurify from 'dompurify' h Fragment diff --git a/packages/components/src/code-block/view/index.ts b/packages/components/src/code-block/view/index.ts index f532e71bb94..91b701c8ee1 100644 --- a/packages/components/src/code-block/view/index.ts +++ b/packages/components/src/code-block/view/index.ts @@ -1,10 +1,12 @@ -import { $view } from '@milkdown/utils' -import { codeBlockSchema } from '@milkdown/preset-commonmark' import type { NodeViewConstructor } from '@milkdown/prose/view' -import { codeBlockConfig } from '../config' + +import { codeBlockSchema } from '@milkdown/preset-commonmark' +import { $view } from '@milkdown/utils' + import { withMeta } from '../../__internal__/meta' -import { CodeMirrorBlock } from './node-view' +import { codeBlockConfig } from '../config' import { LanguageLoader } from './loader' +import { CodeMirrorBlock } from './node-view' export const codeBlockView = $view( codeBlockSchema.node, diff --git a/packages/components/src/code-block/view/node-view.ts b/packages/components/src/code-block/view/node-view.ts index 42567d601c6..a178be4a2c3 100644 --- a/packages/components/src/code-block/view/node-view.ts +++ b/packages/components/src/code-block/view/node-view.ts @@ -1,20 +1,22 @@ +import type { Line, SelectionRange } from '@codemirror/state' +import type { Node } from '@milkdown/prose/model' import type { EditorView, NodeView } from '@milkdown/prose/view' + +import { Compartment, EditorState } from '@codemirror/state' import { EditorView as CodeMirror, type KeyBinding, type ViewUpdate, keymap as cmKeymap, } from '@codemirror/view' -import type { Node } from '@milkdown/prose/model' -import { redo, undo } from '@milkdown/prose/history' -import { Compartment, EditorState } from '@codemirror/state' -import type { Line, SelectionRange } from '@codemirror/state' import { exitCode } from '@milkdown/prose/commands' +import { redo, undo } from '@milkdown/prose/history' import { TextSelection } from '@milkdown/prose/state' import { createApp, ref, watchEffect, type App, type WatchHandle } from 'vue' import type { CodeBlockConfig } from '../config' import type { LanguageLoader } from './loader' + import { CodeBlock } from './components/code-block' export class CodeMirrorBlock implements NodeView { @@ -125,14 +127,16 @@ export class CodeMirrorBlock implements NodeView { this.language.value = languageName const language = this.loader.load(languageName ?? '') - language.then((lang) => { - if (lang) { - this.cm.dispatch({ - effects: this.languageConf.reconfigure(lang), - }) - this.languageName = languageName - } - }) + language + .then((lang) => { + if (lang) { + this.cm.dispatch({ + effects: this.languageConf.reconfigure(lang), + }) + this.languageName = languageName + } + }) + .catch(console.error) } private codeMirrorKeymap = (): KeyBinding[] => { diff --git a/packages/components/src/image-block/config.ts b/packages/components/src/image-block/config.ts index 80d7f23cb9f..0255a72528d 100644 --- a/packages/components/src/image-block/config.ts +++ b/packages/components/src/image-block/config.ts @@ -1,4 +1,5 @@ import { $ctx } from '@milkdown/utils' + import { withMeta } from '../__internal__/meta' export interface ImageBlockConfig { diff --git a/packages/components/src/image-block/index.ts b/packages/components/src/image-block/index.ts index d8156bc86db..e11768799e7 100644 --- a/packages/components/src/image-block/index.ts +++ b/packages/components/src/image-block/index.ts @@ -1,8 +1,9 @@ import type { MilkdownPlugin } from '@milkdown/ctx' -import { imageBlockSchema } from './schema' + +import { imageBlockConfig } from './config' import { remarkImageBlockPlugin } from './remark-plugin' +import { imageBlockSchema } from './schema' import { imageBlockView } from './view' -import { imageBlockConfig } from './config' export * from './schema' export * from './remark-plugin' diff --git a/packages/components/src/image-block/remark-plugin.ts b/packages/components/src/image-block/remark-plugin.ts index 282b954120e..13ee051a470 100644 --- a/packages/components/src/image-block/remark-plugin.ts +++ b/packages/components/src/image-block/remark-plugin.ts @@ -1,6 +1,8 @@ import type { Node } from '@milkdown/transformer' -import { visit } from 'unist-util-visit' + import { $remark } from '@milkdown/utils' +import { visit } from 'unist-util-visit' + import { withMeta } from '../__internal__/meta' function visitImage(ast: Node) { diff --git a/packages/components/src/image-block/schema.ts b/packages/components/src/image-block/schema.ts index 02555d6d51c..6790c76b0a1 100644 --- a/packages/components/src/image-block/schema.ts +++ b/packages/components/src/image-block/schema.ts @@ -1,5 +1,6 @@ -import { $nodeSchema } from '@milkdown/utils' import { expectDomTypeError } from '@milkdown/exception' +import { $nodeSchema } from '@milkdown/utils' + import { withMeta } from '../__internal__/meta' export const IMAGE_DATA_TYPE = 'image-block' diff --git a/packages/components/src/image-block/view/components/image-block.tsx b/packages/components/src/image-block/view/components/image-block.tsx index 34e5e76f7f9..046bbb66354 100644 --- a/packages/components/src/image-block/view/components/image-block.tsx +++ b/packages/components/src/image-block/view/components/image-block.tsx @@ -1,7 +1,9 @@ import { h, Fragment, type Ref, defineComponent } from 'vue' + import type { ImageBlockConfig } from '../../config' -import { ImageViewer } from './image-viewer' + import { ImageInput } from '../../../__internal__/components/image-input' +import { ImageViewer } from './image-viewer' h Fragment diff --git a/packages/components/src/image-block/view/components/image-input.tsx b/packages/components/src/image-block/view/components/image-input.tsx index 9967ee8c130..b955facc5ee 100644 --- a/packages/components/src/image-block/view/components/image-input.tsx +++ b/packages/components/src/image-block/view/components/image-input.tsx @@ -1,7 +1,9 @@ -import { defineComponent, ref, h } from 'vue' -import type { MilkdownImageBlockProps } from './image-block' import clsx from 'clsx' import { customAlphabet } from 'nanoid' +import { defineComponent, ref, h } from 'vue' + +import type { MilkdownImageBlockProps } from './image-block' + import { Icon } from '../../../__internal__/components/icon' h diff --git a/packages/components/src/image-block/view/components/image-viewer.tsx b/packages/components/src/image-block/view/components/image-viewer.tsx index a0cc117bcab..e488b690d65 100644 --- a/packages/components/src/image-block/view/components/image-viewer.tsx +++ b/packages/components/src/image-block/view/components/image-viewer.tsx @@ -1,7 +1,9 @@ import { defineComponent, ref, h, Fragment } from 'vue' + import type { MilkdownImageBlockProps } from './image-block' -import { IMAGE_DATA_TYPE } from '../../schema' + import { Icon } from '../../../__internal__/components/icon' +import { IMAGE_DATA_TYPE } from '../../schema' h Fragment diff --git a/packages/components/src/image-block/view/index.ts b/packages/components/src/image-block/view/index.ts index abf7f86edce..08205c7a416 100644 --- a/packages/components/src/image-block/view/index.ts +++ b/packages/components/src/image-block/view/index.ts @@ -1,12 +1,14 @@ -import { $view } from '@milkdown/utils' -import type { NodeViewConstructor } from '@milkdown/prose/view' import type { Node } from '@milkdown/prose/model' -import { imageBlockSchema } from '../schema' -import { imageBlockConfig } from '../config' -import { withMeta } from '../../__internal__/meta' +import type { NodeViewConstructor } from '@milkdown/prose/view' + +import { $view } from '@milkdown/utils' +import DOMPurify from 'dompurify' import { createApp, ref, watchEffect } from 'vue' + +import { withMeta } from '../../__internal__/meta' +import { imageBlockConfig } from '../config' +import { imageBlockSchema } from '../schema' import { MilkdownImageBlock } from './components/image-block' -import DOMPurify from 'dompurify' export const imageBlockView = $view( imageBlockSchema.node, @@ -58,9 +60,11 @@ export const imageBlockView = $view( if (typeof proxiedURL === 'string') { src.value = proxiedURL } else { - proxiedURL.then((url) => { - src.value = url - }) + proxiedURL + .then((url) => { + src.value = url + }) + .catch(console.error) } } ratio.value = node.attrs.ratio diff --git a/packages/components/src/image-inline/components/image-inline.tsx b/packages/components/src/image-inline/components/image-inline.tsx index 2c39d146ab8..e8b494dca86 100644 --- a/packages/components/src/image-inline/components/image-inline.tsx +++ b/packages/components/src/image-inline/components/image-inline.tsx @@ -1,5 +1,7 @@ import { h, Fragment, type Ref, defineComponent } from 'vue' + import type { InlineImageConfig } from '../config' + import { ImageInput } from '../../__internal__/components/image-input' h diff --git a/packages/components/src/image-inline/config.ts b/packages/components/src/image-inline/config.ts index da1b4899cef..f4adc998ddd 100644 --- a/packages/components/src/image-inline/config.ts +++ b/packages/components/src/image-inline/config.ts @@ -1,5 +1,6 @@ import { $ctx } from '@milkdown/utils' import { html } from 'atomico' + import { withMeta } from '../__internal__/meta' export interface InlineImageConfig { diff --git a/packages/components/src/image-inline/index.ts b/packages/components/src/image-inline/index.ts index 1f7c772c4db..d26efd74b55 100644 --- a/packages/components/src/image-inline/index.ts +++ b/packages/components/src/image-inline/index.ts @@ -1,4 +1,5 @@ import type { MilkdownPlugin } from '@milkdown/ctx' + import { inlineImageConfig } from './config' import { inlineImageView } from './view' diff --git a/packages/components/src/image-inline/view.ts b/packages/components/src/image-inline/view.ts index 986dcc87c79..2bcb953a38a 100644 --- a/packages/components/src/image-inline/view.ts +++ b/packages/components/src/image-inline/view.ts @@ -1,13 +1,14 @@ -import { $view } from '@milkdown/utils' +import type { Node } from '@milkdown/prose/model' import type { NodeViewConstructor } from '@milkdown/prose/view' + import { imageSchema } from '@milkdown/preset-commonmark' -import type { Node } from '@milkdown/prose/model' -import { createApp, ref, watchEffect } from 'vue' +import { $view } from '@milkdown/utils' import DOMPurify from 'dompurify' +import { createApp, ref, watchEffect } from 'vue' import { withMeta } from '../__internal__/meta' -import { inlineImageConfig } from './config' import { MilkdownImageInline } from './components/image-inline' +import { inlineImageConfig } from './config' export const inlineImageView = $view( imageSchema.node, @@ -60,9 +61,11 @@ export const inlineImageView = $view( if (typeof proxiedURL === 'string') { src.value = proxiedURL } else { - proxiedURL.then((url) => { - src.value = url - }) + proxiedURL + .then((url) => { + src.value = url + }) + .catch(console.error) } } alt.value = node.attrs.alt diff --git a/packages/components/src/link-tooltip/configure.ts b/packages/components/src/link-tooltip/configure.ts index 012bafd1199..80bdedcd289 100644 --- a/packages/components/src/link-tooltip/configure.ts +++ b/packages/components/src/link-tooltip/configure.ts @@ -1,6 +1,7 @@ import type { Ctx } from '@milkdown/ctx' -import { configureLinkPreviewTooltip } from './preview/preview-configure' + import { configureLinkEditTooltip } from './edit/edit-configure' +import { configureLinkPreviewTooltip } from './preview/preview-configure' export function configureLinkTooltip(ctx: Ctx) { configureLinkPreviewTooltip(ctx) diff --git a/packages/components/src/link-tooltip/edit/component.tsx b/packages/components/src/link-tooltip/edit/component.tsx index e38986db30b..9938182b9ed 100644 --- a/packages/components/src/link-tooltip/edit/component.tsx +++ b/packages/components/src/link-tooltip/edit/component.tsx @@ -1,5 +1,7 @@ import { defineComponent, ref, watch, type Ref, h } from 'vue' + import type { LinkTooltipConfig } from '../slices' + import { Icon } from '../../__internal__/components/icon' h diff --git a/packages/components/src/link-tooltip/edit/edit-configure.ts b/packages/components/src/link-tooltip/edit/edit-configure.ts index 18761e34e9a..c104c6a974f 100644 --- a/packages/components/src/link-tooltip/edit/edit-configure.ts +++ b/packages/components/src/link-tooltip/edit/edit-configure.ts @@ -1,4 +1,5 @@ import type { Ctx } from '@milkdown/ctx' + import { linkTooltipAPI } from '../slices' import { linkEditTooltip } from '../tooltips' import { LinkEditTooltip } from './edit-view' diff --git a/packages/components/src/link-tooltip/edit/edit-view.ts b/packages/components/src/link-tooltip/edit/edit-view.ts index 99882631534..7c3ba4f243e 100644 --- a/packages/components/src/link-tooltip/edit/edit-view.ts +++ b/packages/components/src/link-tooltip/edit/edit-view.ts @@ -1,20 +1,22 @@ import type { Ctx } from '@milkdown/ctx' -import { TextSelection } from '@milkdown/prose/state' -import type { PluginView } from '@milkdown/prose/state' import type { Mark } from '@milkdown/prose/model' +import type { PluginView } from '@milkdown/prose/state' import type { EditorView } from '@milkdown/prose/view' -import { TooltipProvider } from '@milkdown/plugin-tooltip' + import { editorViewCtx } from '@milkdown/core' +import { TooltipProvider } from '@milkdown/plugin-tooltip' import { linkSchema } from '@milkdown/preset-commonmark' import { posToDOMRect } from '@milkdown/prose' +import { TextSelection } from '@milkdown/prose/state' +import DOMPurify from 'dompurify' +import { createApp, ref, type App, type Ref } from 'vue' + import { linkTooltipConfig, linkTooltipState, type LinkTooltipConfig, } from '../slices' -import { createApp, ref, type App, type Ref } from 'vue' import { EditLink } from './component' -import DOMPurify from 'dompurify' interface Data { from: number diff --git a/packages/components/src/link-tooltip/index.ts b/packages/components/src/link-tooltip/index.ts index 05883f93663..b485442fc9d 100644 --- a/packages/components/src/link-tooltip/index.ts +++ b/packages/components/src/link-tooltip/index.ts @@ -1,4 +1,5 @@ import type { MilkdownPlugin } from '@milkdown/ctx' + import { linkTooltipAPI, linkTooltipConfig, linkTooltipState } from './slices' import { linkEditTooltip, linkPreviewTooltip } from './tooltips' diff --git a/packages/components/src/link-tooltip/preview/component.tsx b/packages/components/src/link-tooltip/preview/component.tsx index 3bdde225f89..fbe338ab434 100644 --- a/packages/components/src/link-tooltip/preview/component.tsx +++ b/packages/components/src/link-tooltip/preview/component.tsx @@ -1,5 +1,7 @@ import { defineComponent, type Ref, h } from 'vue' + import type { LinkTooltipConfig } from '../slices' + import { Icon } from '../../__internal__/components/icon' type PreviewLinkProps = { diff --git a/packages/components/src/link-tooltip/preview/preview-configure.ts b/packages/components/src/link-tooltip/preview/preview-configure.ts index 5f89e79f326..cdb19fd252c 100644 --- a/packages/components/src/link-tooltip/preview/preview-configure.ts +++ b/packages/components/src/link-tooltip/preview/preview-configure.ts @@ -1,10 +1,12 @@ import type { Ctx } from '@milkdown/ctx' -import debounce from 'lodash.debounce' import type { EditorView } from '@milkdown/prose/view' + import { posToDOMRect } from '@milkdown/prose' +import debounce from 'lodash.debounce' + import { linkTooltipState } from '../slices' -import { findMarkPosition, shouldShowPreviewWhenHover } from '../utils' import { linkPreviewTooltip } from '../tooltips' +import { findMarkPosition, shouldShowPreviewWhenHover } from '../utils' import { LinkPreviewTooltip } from './preview-view' export function configureLinkPreviewTooltip(ctx: Ctx) { diff --git a/packages/components/src/link-tooltip/preview/preview-view.ts b/packages/components/src/link-tooltip/preview/preview-view.ts index 0bbc6dd6f31..6ad5089306f 100644 --- a/packages/components/src/link-tooltip/preview/preview-view.ts +++ b/packages/components/src/link-tooltip/preview/preview-view.ts @@ -1,11 +1,14 @@ +import type { Ctx, Slice } from '@milkdown/ctx' +import type { Mark } from '@milkdown/prose/model' import type { PluginView } from '@milkdown/prose/state' import type { EditorView } from '@milkdown/prose/view' -import type { Mark } from '@milkdown/prose/model' + import { TooltipProvider } from '@milkdown/plugin-tooltip' -import type { Ctx, Slice } from '@milkdown/ctx' +import { createApp, ref, type App, type Ref } from 'vue' + import type { LinkTooltipConfig, LinkToolTipState } from '../slices' + import { linkTooltipAPI, linkTooltipConfig, linkTooltipState } from '../slices' -import { createApp, ref, type App, type Ref } from 'vue' import { PreviewLink } from './component' export class LinkPreviewTooltip implements PluginView { diff --git a/packages/components/src/link-tooltip/slices.ts b/packages/components/src/link-tooltip/slices.ts index a751d1e4de7..1c0d160d9fd 100644 --- a/packages/components/src/link-tooltip/slices.ts +++ b/packages/components/src/link-tooltip/slices.ts @@ -1,5 +1,7 @@ -import { $ctx } from '@milkdown/utils' import type { Mark } from '@milkdown/prose/model' + +import { $ctx } from '@milkdown/utils' + import { withMeta } from '../__internal__/meta' export interface LinkToolTipState { diff --git a/packages/components/src/link-tooltip/tooltips.ts b/packages/components/src/link-tooltip/tooltips.ts index 270f6dd532a..f1963ec4132 100644 --- a/packages/components/src/link-tooltip/tooltips.ts +++ b/packages/components/src/link-tooltip/tooltips.ts @@ -1,4 +1,5 @@ import { tooltipFactory } from '@milkdown/plugin-tooltip' + import { withMeta } from '../__internal__/meta' export const linkPreviewTooltip = tooltipFactory('LINK_PREVIEW') diff --git a/packages/components/src/link-tooltip/utils.ts b/packages/components/src/link-tooltip/utils.ts index d126ae69a2e..cfae788b720 100644 --- a/packages/components/src/link-tooltip/utils.ts +++ b/packages/components/src/link-tooltip/utils.ts @@ -1,7 +1,9 @@ -import type { Mark, Node } from '@milkdown/prose/model' import type { Ctx } from '@milkdown/ctx' +import type { Mark, Node } from '@milkdown/prose/model' import type { EditorView } from '@milkdown/prose/view' + import { linkSchema } from '@milkdown/preset-commonmark' + import { linkPreviewTooltip } from './tooltips' export function findMarkPosition( diff --git a/packages/components/src/list-item-block/component.ts b/packages/components/src/list-item-block/component.ts index 661facca423..ada91629f75 100644 --- a/packages/components/src/list-item-block/component.ts +++ b/packages/components/src/list-item-block/component.ts @@ -1,5 +1,7 @@ import type { Component } from 'atomico' + import { c, html, useHost, useLayoutEffect, useRef } from 'atomico' + import type { ListItemBlockConfig } from './config' interface Attrs { diff --git a/packages/components/src/list-item-block/config.ts b/packages/components/src/list-item-block/config.ts index 0135ac749f0..75606ec7732 100644 --- a/packages/components/src/list-item-block/config.ts +++ b/packages/components/src/list-item-block/config.ts @@ -1,5 +1,6 @@ import { $ctx } from '@milkdown/utils' import { html } from 'atomico' + import { withMeta } from '../__internal__/meta' interface RenderLabelProps { diff --git a/packages/components/src/list-item-block/index.ts b/packages/components/src/list-item-block/index.ts index 5be602cef33..5c90253e202 100644 --- a/packages/components/src/list-item-block/index.ts +++ b/packages/components/src/list-item-block/index.ts @@ -1,6 +1,7 @@ import type { MilkdownPlugin } from '@milkdown/ctx' -import { listItemBlockView } from './view' + import { listItemBlockConfig } from './config' +import { listItemBlockView } from './view' export * from './component' export * from './config' diff --git a/packages/components/src/list-item-block/view.ts b/packages/components/src/list-item-block/view.ts index ccb16fb77d4..5d27b94d41b 100644 --- a/packages/components/src/list-item-block/view.ts +++ b/packages/components/src/list-item-block/view.ts @@ -1,11 +1,14 @@ -import { $view } from '@milkdown/utils' -import type { NodeViewConstructor } from '@milkdown/prose/view' -import { TextSelection } from '@milkdown/prose/state' import type { Node } from '@milkdown/prose/model' +import type { NodeViewConstructor } from '@milkdown/prose/view' + import { listItemSchema } from '@milkdown/preset-commonmark' -import { withMeta } from '../__internal__/meta' -import { defIfNotExists } from '../__internal__/helper' +import { TextSelection } from '@milkdown/prose/state' +import { $view } from '@milkdown/utils' + import type { ListItemComponentProps } from './component' + +import { defIfNotExists } from '../__internal__/helper' +import { withMeta } from '../__internal__/meta' import { ListItemElement } from './component' import { listItemBlockConfig } from './config' diff --git a/packages/components/src/table-block/config.ts b/packages/components/src/table-block/config.ts index 9b1995aa116..9fefacdb8ab 100644 --- a/packages/components/src/table-block/config.ts +++ b/packages/components/src/table-block/config.ts @@ -1,5 +1,7 @@ -import { $ctx } from '@milkdown/utils' import type { html } from 'atomico' + +import { $ctx } from '@milkdown/utils' + import { withMeta } from '../__internal__/meta' export type RenderType = diff --git a/packages/components/src/table-block/index.ts b/packages/components/src/table-block/index.ts index 360d847da1b..4058f4b33ba 100644 --- a/packages/components/src/table-block/index.ts +++ b/packages/components/src/table-block/index.ts @@ -1,6 +1,7 @@ import type { MilkdownPlugin } from '@milkdown/ctx' -import { tableBlockView } from './view' + import { tableBlockConfig } from './config' +import { tableBlockView } from './view' export * from './view' export * from './config' diff --git a/packages/components/src/table-block/view/component.ts b/packages/components/src/table-block/view/component.ts index 85119225f44..772f6ba4a57 100644 --- a/packages/components/src/table-block/view/component.ts +++ b/packages/components/src/table-block/view/component.ts @@ -1,16 +1,18 @@ -import type { Component } from 'atomico' -import { c, html, useHost, useLayoutEffect, useMemo, useRef } from 'atomico' +import type { Ctx } from '@milkdown/ctx' import type { Node } from '@milkdown/prose/model' import type { EditorView } from '@milkdown/prose/view' -import type { Ctx } from '@milkdown/ctx' +import type { Component } from 'atomico' +import { c, html, useHost, useLayoutEffect, useMemo, useRef } from 'atomico' import clsx from 'clsx' + import type { TableBlockConfig } from '../config' -import { useDragHandlers } from './drag' import type { CellIndex, DragInfo, Refs } from './types' -import { recoveryStateBetweenUpdate } from './utils' -import { usePointerHandlers } from './pointer' + +import { useDragHandlers } from './drag' import { useOperation } from './operation' +import { usePointerHandlers } from './pointer' +import { recoveryStateBetweenUpdate } from './utils' export interface TableComponentProps { view: EditorView diff --git a/packages/components/src/table-block/view/drag.ts b/packages/components/src/table-block/view/drag.ts index dfe66454e65..e0c2e5996da 100644 --- a/packages/components/src/table-block/view/drag.ts +++ b/packages/components/src/table-block/view/drag.ts @@ -1,6 +1,6 @@ -import throttle from 'lodash.throttle' +import type { Ctx } from '@milkdown/ctx' + import { computePosition, offset } from '@floating-ui/dom' -import { useEffect, useHost, useMemo } from 'atomico' import { commandsCtx, editorViewCtx } from '@milkdown/core' import { moveColCommand, @@ -8,13 +8,16 @@ import { selectColCommand, selectRowCommand, } from '@milkdown/preset-gfm' -import type { Ctx } from '@milkdown/ctx' +import { useEffect, useHost, useMemo } from 'atomico' +import throttle from 'lodash.throttle' + +import type { CellIndex, DragContext, Refs } from './types' + import { computeColHandlePositionByIndex, computeRowHandlePositionByIndex, getRelatedDOM, } from './utils' -import type { CellIndex, DragContext, Refs } from './types' function prepareDndContext(refs: Refs): DragContext | undefined { const { @@ -281,14 +284,16 @@ export function createDragOverHandler(refs: Refs): (e: DragEvent) => void { computePosition(col, yHandle, { placement: direction === 'left' ? 'left' : 'right', middleware: [offset(direction === 'left' ? -1 * yHandleWidth : 0)], - }).then(({ x }) => { - yHandle.dataset.show = 'true' - Object.assign(yHandle.style, { - height: `${contentBoundary.height}px`, - left: `${x}px`, - top: `${wrapperOffsetTop}px`, - }) }) + .then(({ x }) => { + yHandle.dataset.show = 'true' + Object.assign(yHandle.style, { + height: `${contentBoundary.height}px`, + left: `${x}px`, + top: `${wrapperOffsetTop}px`, + }) + }) + .catch(console.error) } } else if (info.type === 'row') { const height = dom.row.getBoundingClientRect().height @@ -341,13 +346,15 @@ export function createDragOverHandler(refs: Refs): (e: DragEvent) => void { computePosition(row, xHandle, { placement: direction === 'up' ? 'top' : 'bottom', middleware: [offset(direction === 'up' ? -1 * xHandleHeight : 0)], - }).then(({ y }) => { - xHandle.dataset.show = 'true' - Object.assign(xHandle.style, { - width: `${contentBoundary.width}px`, - top: `${y}px`, - }) }) + .then(({ y }) => { + xHandle.dataset.show = 'true' + Object.assign(xHandle.style, { + width: `${contentBoundary.width}px`, + top: `${y}px`, + }) + }) + .catch(console.error) } } }, 20) diff --git a/packages/components/src/table-block/view/operation.ts b/packages/components/src/table-block/view/operation.ts index 26a12a3121e..8d573d734f8 100644 --- a/packages/components/src/table-block/view/operation.ts +++ b/packages/components/src/table-block/view/operation.ts @@ -1,4 +1,5 @@ -import { useCallback } from 'atomico' +import type { Ctx } from '@milkdown/ctx' + import { commandsCtx, editorViewCtx } from '@milkdown/core' import { addColAfterCommand, @@ -10,7 +11,8 @@ import { selectRowCommand, setAlignCommand, } from '@milkdown/preset-gfm' -import type { Ctx } from '@milkdown/ctx' +import { useCallback } from 'atomico' + import type { Refs } from './types' export function useOperation( diff --git a/packages/components/src/table-block/view/pointer.ts b/packages/components/src/table-block/view/pointer.ts index 694f122ff98..3147c268a22 100644 --- a/packages/components/src/table-block/view/pointer.ts +++ b/packages/components/src/table-block/view/pointer.ts @@ -1,8 +1,11 @@ -import { computePosition, offset } from '@floating-ui/dom' import type { EditorView } from '@milkdown/prose/view' -import throttle from 'lodash.throttle' + +import { computePosition, offset } from '@floating-ui/dom' import { useMemo } from 'atomico' +import throttle from 'lodash.throttle' + import type { Refs } from './types' + import { computeColHandlePositionByIndex, computeRowHandlePositionByIndex, @@ -78,13 +81,15 @@ export function createPointerMoveHandler( computePosition(dom.col, yHandle, { placement: closeToBoundaryLeft ? 'left' : 'right', middleware: [offset(closeToBoundaryLeft ? -1 * yHandleWidth : 0)], - }).then(({ x }) => { - yHandle.dataset.show = 'true' - Object.assign(yHandle.style, { - height: `${contentBoundary.height}px`, - left: `${x}px`, - }) }) + .then(({ x }) => { + yHandle.dataset.show = 'true' + Object.assign(yHandle.style, { + height: `${contentBoundary.height}px`, + left: `${x}px`, + }) + }) + .catch(console.error) } else { yHandle.dataset.show = 'false' } @@ -98,13 +103,15 @@ export function createPointerMoveHandler( computePosition(dom.row, xHandle, { placement: closeToBoundaryTop ? 'top' : 'bottom', middleware: [offset(closeToBoundaryTop ? -1 * xHandleHeight : 0)], - }).then(({ y }) => { - xHandle.dataset.show = 'true' - Object.assign(xHandle.style, { - width: `${contentBoundary.width}px`, - top: `${y}px`, - }) }) + .then(({ y }) => { + xHandle.dataset.show = 'true' + Object.assign(xHandle.style, { + width: `${contentBoundary.width}px`, + top: `${y}px`, + }) + }) + .catch(console.error) } else { xHandle.dataset.show = 'false' } diff --git a/packages/components/src/table-block/view/utils.ts b/packages/components/src/table-block/view/utils.ts index a89895948fa..fb51ae19611 100644 --- a/packages/components/src/table-block/view/utils.ts +++ b/packages/components/src/table-block/view/utils.ts @@ -1,12 +1,14 @@ +import type { Ctx } from '@milkdown/ctx' import type { Node } from '@milkdown/prose/model' import type { EditorView } from '@milkdown/prose/view' -import { findParent } from '@milkdown/prose' import type { Ref } from 'atomico' + +import { computePosition } from '@floating-ui/dom' import { editorViewCtx } from '@milkdown/core' -import { CellSelection } from '@milkdown/prose/tables' import { findTable } from '@milkdown/preset-gfm' -import { computePosition } from '@floating-ui/dom' -import type { Ctx } from '@milkdown/ctx' +import { findParent } from '@milkdown/prose' +import { CellSelection } from '@milkdown/prose/tables' + import type { CellIndex, Refs } from './types' export function findNodeIndex(parent: Node, child: Node) { @@ -150,13 +152,15 @@ export function computeColHandlePositionByIndex({ const { headerCol: col } = dom colHandle.dataset.show = 'true' if (before) before(colHandle) - computePosition(col, colHandle, { placement: 'top' }).then(({ x, y }) => { - Object.assign(colHandle.style, { - left: `${x}px`, - top: `${y}px`, + computePosition(col, colHandle, { placement: 'top' }) + .then(({ x, y }) => { + Object.assign(colHandle.style, { + left: `${x}px`, + top: `${y}px`, + }) + if (after) after(colHandle) }) - if (after) after(colHandle) - }) + .catch(console.error) } export function computeRowHandlePositionByIndex({ @@ -175,11 +179,13 @@ export function computeRowHandlePositionByIndex({ const { row } = dom rowHandle.dataset.show = 'true' if (before) before(rowHandle) - computePosition(row, rowHandle, { placement: 'left' }).then(({ x, y }) => { - Object.assign(rowHandle.style, { - left: `${x}px`, - top: `${y}px`, + computePosition(row, rowHandle, { placement: 'left' }) + .then(({ x, y }) => { + Object.assign(rowHandle.style, { + left: `${x}px`, + top: `${y}px`, + }) + if (after) after(rowHandle) }) - if (after) after(rowHandle) - }) + .catch(console.error) } diff --git a/packages/components/src/table-block/view/view.ts b/packages/components/src/table-block/view/view.ts index 1434fdf2366..3a8cb7eb540 100644 --- a/packages/components/src/table-block/view/view.ts +++ b/packages/components/src/table-block/view/view.ts @@ -1,5 +1,4 @@ -import { $view } from '@milkdown/utils' -import { tableSchema } from '@milkdown/preset-gfm' +import type { Ctx } from '@milkdown/ctx' import type { Node } from '@milkdown/prose/model' import type { EditorView, @@ -7,14 +6,18 @@ import type { NodeViewConstructor, ViewMutationRecord, } from '@milkdown/prose/view' -import type { Ctx } from '@milkdown/ctx' -import { NodeSelection, TextSelection } from '@milkdown/prose/state' + +import { tableSchema } from '@milkdown/preset-gfm' import { findParent } from '@milkdown/prose' +import { NodeSelection, TextSelection } from '@milkdown/prose/state' import { CellSelection } from '@milkdown/prose/tables' +import { $view } from '@milkdown/utils' + +import type { TableComponentProps } from './component' + import { defIfNotExists } from '../../__internal__/helper' -import { tableBlockConfig } from '../config' import { withMeta } from '../../__internal__/meta' -import type { TableComponentProps } from './component' +import { tableBlockConfig } from '../config' import { TableElement } from './component' export class TableNodeView implements NodeView { diff --git a/packages/core/src/editor/editor.ts b/packages/core/src/editor/editor.ts index fa326f01f4c..e6aba96440e 100644 --- a/packages/core/src/editor/editor.ts +++ b/packages/core/src/editor/editor.ts @@ -1,7 +1,9 @@ import type { CtxRunner, MilkdownPlugin, Telemetry } from '@milkdown/ctx' + import { Clock, Container, Ctx } from '@milkdown/ctx' import type { Config } from '../internal-plugin' + import { commands, config, @@ -208,7 +210,7 @@ export class Editor { plugins: MilkdownPlugin | MilkdownPlugin[] ): Promise => { if (this.#status === EditorStatus.OnCreate) { - // eslint-disable-next-line no-console + console.warn( '[Milkdown]: You are trying to remove plugins when the editor is creating, this is not recommended, please check your code.' ) @@ -281,7 +283,7 @@ export class Editor { /// Make sure you have enabled inspector by `editor.enableInspector()` before calling this method. readonly inspect = (): Telemetry[] => { if (!this.#enableInspector) { - // eslint-disable-next-line no-console + console.warn( '[Milkdown]: You are trying to collect inspection when inspector is disabled, please enable inspector by `editor.enableInspector()` first.' ) diff --git a/packages/core/src/internal-plugin/atoms.ts b/packages/core/src/internal-plugin/atoms.ts index b2aaae98053..955c22fdb68 100644 --- a/packages/core/src/internal-plugin/atoms.ts +++ b/packages/core/src/internal-plugin/atoms.ts @@ -1,18 +1,21 @@ -import { createSlice } from '@milkdown/ctx' +import type { SliceType, TimerType } from '@milkdown/ctx' +import type { InputRule } from '@milkdown/prose/inputrules' import type { EditorState, Plugin } from '@milkdown/prose/state' import type { EditorView, MarkViewConstructor, NodeViewConstructor, } from '@milkdown/prose/view' -import type { SliceType, TimerType } from '@milkdown/ctx' -import type { InputRule } from '@milkdown/prose/inputrules' import type { RemarkParser, RemarkPlugin } from '@milkdown/transformer' -import remarkParse from 'remark-parse' import type { Options } from 'remark-stringify' + +import { createSlice } from '@milkdown/ctx' +import remarkParse from 'remark-parse' import remarkStringify from 'remark-stringify' import { unified } from 'unified' + import type { Editor } from '../editor' + import { remarkHandlers } from '../__internal__' /// A slice which contains the editor view instance. diff --git a/packages/core/src/internal-plugin/commands.ts b/packages/core/src/internal-plugin/commands.ts index e713babd4bb..8b3ae81edaa 100644 --- a/packages/core/src/internal-plugin/commands.ts +++ b/packages/core/src/internal-plugin/commands.ts @@ -1,11 +1,12 @@ import type { Ctx, MilkdownPlugin, SliceType } from '@milkdown/ctx' +import type { Command } from '@milkdown/prose/state' + import { Container, createSlice, createTimer } from '@milkdown/ctx' import { callCommandBeforeEditorView } from '@milkdown/exception' -import type { Command } from '@milkdown/prose/state' import { withMeta } from '../__internal__' -import { SchemaReady } from './schema' import { editorViewCtx } from './atoms' +import { SchemaReady } from './schema' /// @internal export type Cmd = (payload?: T) => Command diff --git a/packages/core/src/internal-plugin/config.ts b/packages/core/src/internal-plugin/config.ts index d2dc14c96a8..b8dec2ad03f 100644 --- a/packages/core/src/internal-plugin/config.ts +++ b/packages/core/src/internal-plugin/config.ts @@ -1,5 +1,7 @@ import type { Ctx, MilkdownPlugin } from '@milkdown/ctx' + import { createTimer } from '@milkdown/ctx' + import { withMeta } from '../__internal__' /// @internal diff --git a/packages/core/src/internal-plugin/editor-state.ts b/packages/core/src/internal-plugin/editor-state.ts index cf21b503d35..947a533d927 100644 --- a/packages/core/src/internal-plugin/editor-state.ts +++ b/packages/core/src/internal-plugin/editor-state.ts @@ -1,4 +1,8 @@ import type { MilkdownPlugin, TimerType } from '@milkdown/ctx' +import type { Schema } from '@milkdown/prose/model' +import type { Command } from '@milkdown/prose/state' +import type { JSONRecord, Parser } from '@milkdown/transformer' + import { createSlice, createTimer } from '@milkdown/ctx' import { docTypeError } from '@milkdown/exception' import { customInputRules as createInputRules } from '@milkdown/prose' @@ -11,18 +15,15 @@ import { } from '@milkdown/prose/commands' import { undoInputRule } from '@milkdown/prose/inputrules' import { keymap as createKeymap } from '@milkdown/prose/keymap' -import type { Schema } from '@milkdown/prose/model' import { DOMParser, Node } from '@milkdown/prose/model' -import type { Command } from '@milkdown/prose/state' import { EditorState, Plugin, PluginKey } from '@milkdown/prose/state' -import type { JSONRecord, Parser } from '@milkdown/transformer' import { withMeta } from '../__internal__' +import { editorStateCtx, inputRulesCtx, prosePluginsCtx } from './atoms' +import { CommandsReady } from './commands' import { ParserReady, parserCtx } from './parser' import { schemaCtx } from './schema' import { SerializerReady } from './serializer' -import { CommandsReady } from './commands' -import { editorStateCtx, inputRulesCtx, prosePluginsCtx } from './atoms' /// @internal export type DefaultValue = diff --git a/packages/core/src/internal-plugin/editor-view.ts b/packages/core/src/internal-plugin/editor-view.ts index d0560d7d67f..ddf7175dbf8 100644 --- a/packages/core/src/internal-plugin/editor-view.ts +++ b/packages/core/src/internal-plugin/editor-view.ts @@ -1,12 +1,11 @@ import type { Ctx, MilkdownPlugin, TimerType } from '@milkdown/ctx' +import type { DirectEditorProps } from '@milkdown/prose/view' + import { createSlice, createTimer } from '@milkdown/ctx' import { Plugin, PluginKey } from '@milkdown/prose/state' -import type { DirectEditorProps } from '@milkdown/prose/view' import { EditorView } from '@milkdown/prose/view' import { withMeta } from '../__internal__' -import { EditorStateReady } from './editor-state' -import { InitReady } from './init' import { editorStateCtx, editorViewCtx, @@ -14,6 +13,8 @@ import { nodeViewCtx, prosePluginsCtx, } from './atoms' +import { EditorStateReady } from './editor-state' +import { InitReady } from './init' type EditorOptions = Omit diff --git a/packages/core/src/internal-plugin/init.ts b/packages/core/src/internal-plugin/init.ts index c8511b27e24..930f72ef73d 100644 --- a/packages/core/src/internal-plugin/init.ts +++ b/packages/core/src/internal-plugin/init.ts @@ -1,12 +1,13 @@ import type { MilkdownPlugin } from '@milkdown/ctx' + import { createTimer } from '@milkdown/ctx' import remarkParse from 'remark-parse' import remarkStringify from 'remark-stringify' import { unified } from 'unified' import type { Editor } from '../editor' + import { remarkHandlers, withMeta } from '../__internal__' -import { ConfigReady } from './config' import { editorCtx, initTimerCtx, @@ -18,6 +19,7 @@ import { remarkPluginsCtx, remarkStringifyOptionsCtx, } from './atoms' +import { ConfigReady } from './config' /// The timer which will be resolved when the init plugin is ready. export const InitReady = createTimer('InitReady') diff --git a/packages/core/src/internal-plugin/parser.ts b/packages/core/src/internal-plugin/parser.ts index 579600533b1..95954e4801f 100644 --- a/packages/core/src/internal-plugin/parser.ts +++ b/packages/core/src/internal-plugin/parser.ts @@ -1,7 +1,8 @@ import type { MilkdownPlugin, TimerType } from '@milkdown/ctx' +import type { Parser } from '@milkdown/transformer' + import { createSlice, createTimer } from '@milkdown/ctx' import { ctxCallOutOfScope } from '@milkdown/exception' -import type { Parser } from '@milkdown/transformer' import { ParserState } from '@milkdown/transformer' import { withMeta } from '../__internal__' diff --git a/packages/core/src/internal-plugin/schema.ts b/packages/core/src/internal-plugin/schema.ts index 92eabb207cf..f3628804924 100644 --- a/packages/core/src/internal-plugin/schema.ts +++ b/packages/core/src/internal-plugin/schema.ts @@ -1,15 +1,16 @@ import type { MilkdownPlugin, TimerType } from '@milkdown/ctx' -import { createSlice, createTimer } from '@milkdown/ctx' -import { Schema } from '@milkdown/prose/model' import type { MarkSchema, NodeSchema, RemarkParser, } from '@milkdown/transformer' +import { createSlice, createTimer } from '@milkdown/ctx' +import { Schema } from '@milkdown/prose/model' + import { withMeta } from '../__internal__' -import { InitReady } from './init' import { remarkCtx, remarkPluginsCtx } from './atoms' +import { InitReady } from './init' /// The timer which will be resolved when the schema plugin is ready. export const SchemaReady = createTimer('SchemaReady') diff --git a/packages/core/src/internal-plugin/serializer.ts b/packages/core/src/internal-plugin/serializer.ts index 9ca3b790f24..bd2fae5355c 100644 --- a/packages/core/src/internal-plugin/serializer.ts +++ b/packages/core/src/internal-plugin/serializer.ts @@ -1,9 +1,10 @@ import type { MilkdownPlugin, TimerType } from '@milkdown/ctx' -import { createSlice, createTimer } from '@milkdown/ctx' import type { Serializer } from '@milkdown/transformer' -import { SerializerState } from '@milkdown/transformer' +import { createSlice, createTimer } from '@milkdown/ctx' import { ctxCallOutOfScope } from '@milkdown/exception' +import { SerializerState } from '@milkdown/transformer' + import { withMeta } from '../__internal__' import { remarkCtx } from './atoms' import { SchemaReady, schemaCtx } from './schema' diff --git a/packages/crepe/src/core/crepe.ts b/packages/crepe/src/core/crepe.ts index 86dafa8e3c8..31db9b5cbc6 100644 --- a/packages/crepe/src/core/crepe.ts +++ b/packages/crepe/src/core/crepe.ts @@ -1,4 +1,6 @@ import type { DefaultValue } from '@milkdown/kit/core' +import type { ListenerManager } from '@milkdown/kit/plugin/listener' + import { Editor, EditorStatus, @@ -6,20 +8,19 @@ import { editorViewOptionsCtx, rootCtx, } from '@milkdown/kit/core' - -import { commonmark } from '@milkdown/kit/preset/commonmark' -import { gfm } from '@milkdown/kit/preset/gfm' +import { clipboard } from '@milkdown/kit/plugin/clipboard' import { history } from '@milkdown/kit/plugin/history' import { indent, indentConfig } from '@milkdown/kit/plugin/indent' -import { getMarkdown } from '@milkdown/kit/utils' -import { clipboard } from '@milkdown/kit/plugin/clipboard' +import { listener, listenerCtx } from '@milkdown/kit/plugin/listener' import { trailing } from '@milkdown/kit/plugin/trailing' +import { commonmark } from '@milkdown/kit/preset/commonmark' +import { gfm } from '@milkdown/kit/preset/gfm' +import { getMarkdown } from '@milkdown/kit/utils' import type { CrepeFeatureConfig } from '../feature' + import { CrepeFeature, defaultFeatures, loadFeature } from '../feature' import { configureFeatures, crepeCtx } from './slice' -import type { ListenerManager } from '@milkdown/kit/plugin/listener' -import { listener, listenerCtx } from '@milkdown/kit/plugin/listener' export interface CrepeConfig { features?: Partial> diff --git a/packages/crepe/src/core/slice.ts b/packages/crepe/src/core/slice.ts index 69e1450cb40..560de2123d4 100644 --- a/packages/crepe/src/core/slice.ts +++ b/packages/crepe/src/core/slice.ts @@ -1,5 +1,7 @@ import type { Ctx } from '@milkdown/kit/ctx' + import { createSlice } from '@milkdown/kit/ctx' + import type { CrepeFeature } from '../feature' import type { Crepe } from './crepe' diff --git a/packages/crepe/src/feature/block-edit/handle/component.ts b/packages/crepe/src/feature/block-edit/handle/component.ts index 9c4c3ab6c0a..803fc0abfa2 100644 --- a/packages/crepe/src/feature/block-edit/handle/component.ts +++ b/packages/crepe/src/feature/block-edit/handle/component.ts @@ -1,7 +1,9 @@ import { type Component, c, html, useEffect, useRef } from 'atomico' -import { menuIcon, plusIcon } from '../../../icons' + import type { Icon } from '../../shared' +import { menuIcon, plusIcon } from '../../../icons' + export interface BlockHandleProps { show: boolean onAdd: () => void diff --git a/packages/crepe/src/feature/block-edit/handle/index.ts b/packages/crepe/src/feature/block-edit/handle/index.ts index 9d1c919305c..e012107dab2 100644 --- a/packages/crepe/src/feature/block-edit/handle/index.ts +++ b/packages/crepe/src/feature/block-edit/handle/index.ts @@ -1,15 +1,18 @@ -import type { PluginView } from '@milkdown/kit/prose/state' -import { TextSelection } from '@milkdown/kit/prose/state' -import { BlockProvider, block, blockConfig } from '@milkdown/kit/plugin/block' import type { Ctx } from '@milkdown/kit/ctx' +import type { PluginView } from '@milkdown/kit/prose/state' import type { AtomicoThis } from 'atomico/types/dom' + import { editorViewCtx } from '@milkdown/kit/core' +import { BlockProvider, block, blockConfig } from '@milkdown/kit/plugin/block' import { paragraphSchema } from '@milkdown/kit/preset/commonmark' import { findParent } from '@milkdown/kit/prose' -import { menuAPI } from '../menu' -import { defIfNotExists } from '../../../utils' +import { TextSelection } from '@milkdown/kit/prose/state' + import type { BlockEditFeatureConfig } from '../index' import type { BlockHandleProps } from './component' + +import { defIfNotExists } from '../../../utils' +import { menuAPI } from '../menu' import { BlockHandleElement } from './component' export class BlockHandleView implements PluginView { diff --git a/packages/crepe/src/feature/block-edit/index.ts b/packages/crepe/src/feature/block-edit/index.ts index 533803de5be..e7f6dade270 100644 --- a/packages/crepe/src/feature/block-edit/index.ts +++ b/packages/crepe/src/feature/block-edit/index.ts @@ -1,8 +1,10 @@ import { block } from '@milkdown/kit/plugin/block' + import type { DefineFeature, Icon } from '../shared' +import type { GroupBuilder } from './menu/group-builder' + import { configureBlockHandle } from './handle' import { configureMenu, menu, menuAPI } from './menu' -import type { GroupBuilder } from './menu/group-builder' interface BlockEditConfig { handleAddIcon: Icon diff --git a/packages/crepe/src/feature/block-edit/menu/component.ts b/packages/crepe/src/feature/block-edit/menu/component.ts index eef7c7b314a..f7f0c8e3117 100644 --- a/packages/crepe/src/feature/block-edit/menu/component.ts +++ b/packages/crepe/src/feature/block-edit/menu/component.ts @@ -1,4 +1,6 @@ +import type { Ctx } from '@milkdown/kit/ctx' import type { Component } from 'atomico' + import { c, html, @@ -9,8 +11,9 @@ import { useRef, useState, } from 'atomico' -import type { Ctx } from '@milkdown/kit/ctx' + import type { BlockEditFeatureConfig } from '../index' + import { getGroups } from './config' export interface MenuProps { diff --git a/packages/crepe/src/feature/block-edit/menu/config.ts b/packages/crepe/src/feature/block-edit/menu/config.ts index 95366884c8e..786ec59fc8e 100644 --- a/packages/crepe/src/feature/block-edit/menu/config.ts +++ b/packages/crepe/src/feature/block-edit/menu/config.ts @@ -1,6 +1,7 @@ +import type { Ctx } from '@milkdown/kit/ctx' + import { imageBlockSchema } from '@milkdown/kit/component/image-block' import { editorViewCtx } from '@milkdown/kit/core' -import type { Ctx } from '@milkdown/kit/ctx' import { blockquoteSchema, bulletListSchema, @@ -13,6 +14,10 @@ import { } from '@milkdown/kit/preset/commonmark' import { createTable } from '@milkdown/kit/preset/gfm' import { TextSelection } from '@milkdown/kit/prose/state' + +import type { BlockEditFeatureConfig } from '../index' +import type { MenuItemGroup } from './utils' + import { CrepeFeature } from '../../..' import { FeaturesCtx } from '../../../core/slice' import { @@ -33,9 +38,7 @@ import { textIcon, todoListIcon, } from '../../../icons' -import type { BlockEditFeatureConfig } from '../index' import { GroupBuilder } from './group-builder' -import type { MenuItemGroup } from './utils' import { clearContentAndAddBlockType, clearContentAndSetBlockType, diff --git a/packages/crepe/src/feature/block-edit/menu/index.ts b/packages/crepe/src/feature/block-edit/menu/index.ts index c1db949c532..3cff5867ca0 100644 --- a/packages/crepe/src/feature/block-edit/menu/index.ts +++ b/packages/crepe/src/feature/block-edit/menu/index.ts @@ -1,16 +1,19 @@ +import type { Ctx } from '@milkdown/kit/ctx' +import type { EditorView } from '@milkdown/kit/prose/view' +import type { AtomicoThis } from 'atomico/types/dom' + +import { SlashProvider, slashFactory } from '@milkdown/kit/plugin/slash' import { TextSelection, type PluginView, type Selection, } from '@milkdown/kit/prose/state' -import type { EditorView } from '@milkdown/kit/prose/view' -import { SlashProvider, slashFactory } from '@milkdown/kit/plugin/slash' -import type { Ctx } from '@milkdown/kit/ctx' -import type { AtomicoThis } from 'atomico/types/dom' import { $ctx } from '@milkdown/kit/utils' -import { defIfNotExists, isInCodeBlock, isInList } from '../../../utils' + import type { BlockEditFeatureConfig } from '../index' import type { MenuProps } from './component' + +import { defIfNotExists, isInCodeBlock, isInList } from '../../../utils' import { MenuElement } from './component' export const menu = slashFactory('CREPE_MENU') @@ -45,7 +48,7 @@ class MenuView implements PluginView { this.#content.hide = this.hide this.#content.ctx = ctx this.#content.config = config - // eslint-disable-next-line ts/no-this-alias + // oxlint-disable-next-line ts/no-this-alias const self = this this.#slashProvider = new SlashProvider({ content: this.#content, diff --git a/packages/crepe/src/feature/block-edit/menu/utils.ts b/packages/crepe/src/feature/block-edit/menu/utils.ts index 5695513fe8f..90c263e688f 100644 --- a/packages/crepe/src/feature/block-edit/menu/utils.ts +++ b/packages/crepe/src/feature/block-edit/menu/utils.ts @@ -1,7 +1,8 @@ -import type { html } from 'atomico' import type { Ctx } from '@milkdown/kit/ctx' -import type { Command, Transaction } from '@milkdown/kit/prose/state' import type { Attrs, NodeType } from '@milkdown/kit/prose/model' +import type { Command, Transaction } from '@milkdown/kit/prose/state' +import type { html } from 'atomico' + import { findWrapping } from '@milkdown/kit/prose/transform' export interface MenuItem { diff --git a/packages/crepe/src/feature/code-mirror/index.ts b/packages/crepe/src/feature/code-mirror/index.ts index 0ee58557b3e..d7233830c63 100644 --- a/packages/crepe/src/feature/code-mirror/index.ts +++ b/packages/crepe/src/feature/code-mirror/index.ts @@ -1,13 +1,16 @@ +import type { LanguageDescription } from '@codemirror/language' +import type { Extension } from '@codemirror/state' + +import { defaultKeymap, indentWithTab } from '@codemirror/commands' +import { keymap } from '@codemirror/view' import { codeBlockComponent, codeBlockConfig, } from '@milkdown/kit/component/code-block' -import type { LanguageDescription } from '@codemirror/language' -import type { Extension } from '@codemirror/state' import { basicSetup } from 'codemirror' -import { keymap } from '@codemirror/view' -import { defaultKeymap, indentWithTab } from '@codemirror/commands' + import type { DefineFeature, Icon } from '../shared' + import { chevronDownIcon, clearIcon, editIcon, searchIcon } from '../../icons' import { visibilityOffIcon } from '../../icons/visibility-off' diff --git a/packages/crepe/src/feature/cursor/index.ts b/packages/crepe/src/feature/cursor/index.ts index 533baddcc58..c63de875db6 100644 --- a/packages/crepe/src/feature/cursor/index.ts +++ b/packages/crepe/src/feature/cursor/index.ts @@ -1,8 +1,8 @@ import { cursor, dropCursorConfig } from '@milkdown/kit/plugin/cursor' +import { $prose } from '@milkdown/kit/utils' import { createVirtualCursor } from 'prosemirror-virtual-cursor' import type { DefineFeature } from '../shared' -import { $prose } from '@milkdown/kit/utils' interface CursorConfig { color: string | false diff --git a/packages/crepe/src/feature/image-block/index.ts b/packages/crepe/src/feature/image-block/index.ts index 920ed3ade5d..7d55dac5019 100644 --- a/packages/crepe/src/feature/image-block/index.ts +++ b/packages/crepe/src/feature/image-block/index.ts @@ -6,7 +6,9 @@ import { imageInlineComponent, inlineImageConfig, } from '@milkdown/kit/component/image-inline' + import type { DefineFeature, Icon } from '../shared' + import { captionIcon, imageIcon, confirmIcon } from '../../icons' interface ImageBlockConfig { diff --git a/packages/crepe/src/feature/index.ts b/packages/crepe/src/feature/index.ts index 6c0b03e2fb1..cd56a53d0e1 100644 --- a/packages/crepe/src/feature/index.ts +++ b/packages/crepe/src/feature/index.ts @@ -1,14 +1,15 @@ import type { Editor } from '@milkdown/kit/core' -import type { PlaceHolderFeatureConfig } from './placeholder' -import type { CodeMirrorFeatureConfig } from './code-mirror' + import type { BlockEditFeatureConfig } from './block-edit' +import type { CodeMirrorFeatureConfig } from './code-mirror' import type { CursorFeatureConfig } from './cursor' import type { ImageBlockFeatureConfig } from './image-block' +import type { LatexFeatureConfig } from './latex' import type { LinkTooltipFeatureConfig } from './link-tooltip' import type { ListItemFeatureConfig } from './list-item' -import type { ToolbarFeatureConfig } from './toolbar' +import type { PlaceHolderFeatureConfig } from './placeholder' import type { TableFeatureConfig } from './table' -import type { LatexFeatureConfig } from './latex' +import type { ToolbarFeatureConfig } from './toolbar' export enum CrepeFeature { CodeMirror = 'code-mirror', diff --git a/packages/crepe/src/feature/latex/index.ts b/packages/crepe/src/feature/latex/index.ts index f9beb621d1e..6411dc8ea12 100644 --- a/packages/crepe/src/feature/latex/index.ts +++ b/packages/crepe/src/feature/latex/index.ts @@ -1,18 +1,21 @@ import type { KatexOptions } from 'katex' -import katex from 'katex' + import { codeBlockConfig } from '@milkdown/kit/component/code-block' +import katex from 'katex' + +import type { DefineFeature, Icon } from '../shared' + import { CrepeFeature } from '../..' import { FeaturesCtx } from '../../core/slice' -import type { DefineFeature, Icon } from '../shared' -import { remarkMathBlockPlugin, remarkMathPlugin } from './remark' -import { mathInlineSchema } from './inline-latex' +import { legacyConfirmIcon } from '../../icons' import { defIfNotExists } from '../../utils' +import { blockLatexSchema } from './block-latex' +import { mathInlineSchema } from './inline-latex' import { LatexInlineEditElement } from './inline-tooltip/component' import { inlineLatexTooltip } from './inline-tooltip/tooltip' import { LatexInlineTooltip } from './inline-tooltip/view' -import { legacyConfirmIcon } from '../../icons' import { mathBlockInputRule, mathInlineInputRule } from './input-rule' -import { blockLatexSchema } from './block-latex' +import { remarkMathBlockPlugin, remarkMathPlugin } from './remark' export interface LatexConfig { katexOptions: KatexOptions diff --git a/packages/crepe/src/feature/latex/inline-tooltip/component.ts b/packages/crepe/src/feature/latex/inline-tooltip/component.ts index 1937c5307d7..e1da7d3c60b 100644 --- a/packages/crepe/src/feature/latex/inline-tooltip/component.ts +++ b/packages/crepe/src/feature/latex/inline-tooltip/component.ts @@ -1,6 +1,8 @@ +import type { EditorView } from '@milkdown/kit/prose/view' + import { c, h, html, type Component } from 'atomico' + import type { LatexConfig } from '..' -import type { EditorView } from '@milkdown/kit/prose/view' type LatexEditComponentProps = { config: Partial diff --git a/packages/crepe/src/feature/latex/inline-tooltip/view.ts b/packages/crepe/src/feature/latex/inline-tooltip/view.ts index 6ddc02f1714..74e8c29299d 100644 --- a/packages/crepe/src/feature/latex/inline-tooltip/view.ts +++ b/packages/crepe/src/feature/latex/inline-tooltip/view.ts @@ -1,14 +1,17 @@ import type { Ctx } from '@milkdown/kit/ctx' -import { TooltipProvider } from '@milkdown/kit/plugin/tooltip' import type { PluginView } from '@milkdown/kit/prose/state' + +import { TooltipProvider } from '@milkdown/kit/plugin/tooltip' +import { redo, undo } from '@milkdown/kit/prose/history' +import { keymap } from '@milkdown/kit/prose/keymap' +import { Schema } from '@milkdown/kit/prose/model' import { EditorState, NodeSelection } from '@milkdown/kit/prose/state' import { EditorView } from '@milkdown/kit/prose/view' + +import type { LatexConfig } from '..' + import { mathInlineId } from '../inline-latex' import { LatexInlineEditElement } from './component' -import type { LatexConfig } from '..' -import { keymap } from '@milkdown/kit/prose/keymap' -import { redo, undo } from '@milkdown/kit/prose/history' -import { Schema } from '@milkdown/kit/prose/model' export class LatexInlineTooltip implements PluginView { #content = new LatexInlineEditElement() diff --git a/packages/crepe/src/feature/latex/input-rule.ts b/packages/crepe/src/feature/latex/input-rule.ts index aaaad07b411..baa32ec0c15 100644 --- a/packages/crepe/src/feature/latex/input-rule.ts +++ b/packages/crepe/src/feature/latex/input-rule.ts @@ -1,8 +1,9 @@ -import { $inputRule } from '@milkdown/kit/utils' -import { nodeRule } from '@milkdown/kit/prose' -import { mathInlineSchema } from './inline-latex' import { codeBlockSchema } from '@milkdown/kit/preset/commonmark' +import { nodeRule } from '@milkdown/kit/prose' import { textblockTypeInputRule } from '@milkdown/kit/prose/inputrules' +import { $inputRule } from '@milkdown/kit/utils' + +import { mathInlineSchema } from './inline-latex' /// Input rule for inline math. /// When you type $E=MC^2$, it will create an inline math node. diff --git a/packages/crepe/src/feature/latex/remark.ts b/packages/crepe/src/feature/latex/remark.ts index 514d55c76c0..b1ef50eff97 100644 --- a/packages/crepe/src/feature/latex/remark.ts +++ b/packages/crepe/src/feature/latex/remark.ts @@ -1,6 +1,7 @@ -import remarkMath from 'remark-math' -import { $remark } from '@milkdown/kit/utils' import type { Node } from '@milkdown/kit/transformer' + +import { $remark } from '@milkdown/kit/utils' +import remarkMath from 'remark-math' import { visit } from 'unist-util-visit' export const remarkMathPlugin = $remark<'remarkMath', undefined>( diff --git a/packages/crepe/src/feature/link-tooltip/index.ts b/packages/crepe/src/feature/link-tooltip/index.ts index 0190f54970d..9fafa8adb98 100644 --- a/packages/crepe/src/feature/link-tooltip/index.ts +++ b/packages/crepe/src/feature/link-tooltip/index.ts @@ -3,7 +3,9 @@ import { linkTooltipConfig, linkTooltipPlugin, } from '@milkdown/kit/component/link-tooltip' + import type { DefineFeature, Icon } from '../shared' + import { copyIcon, editIcon, removeIcon, confirmIcon } from '../../icons' interface LinkTooltipConfig { diff --git a/packages/crepe/src/feature/list-item/index.ts b/packages/crepe/src/feature/list-item/index.ts index 9c24458e7f2..d14951fc9cc 100644 --- a/packages/crepe/src/feature/list-item/index.ts +++ b/packages/crepe/src/feature/list-item/index.ts @@ -1,11 +1,14 @@ import type { Ctx } from '@milkdown/kit/ctx' + import { listItemBlockComponent, listItemBlockConfig, } from '@milkdown/kit/component/list-item-block' import { html } from 'atomico' import clsx from 'clsx' + import type { DefineFeature, Icon } from '../shared' + import { bulletIcon, checkBoxCheckedIcon, diff --git a/packages/crepe/src/feature/placeholder/index.ts b/packages/crepe/src/feature/placeholder/index.ts index 244d36c3064..586856e3701 100644 --- a/packages/crepe/src/feature/placeholder/index.ts +++ b/packages/crepe/src/feature/placeholder/index.ts @@ -1,10 +1,13 @@ -import { $ctx, $prose } from '@milkdown/kit/utils' +import type { Node } from '@milkdown/kit/prose/model' import type { EditorState } from '@milkdown/kit/prose/state' + +import { findParent } from '@milkdown/kit/prose' import { Plugin, PluginKey } from '@milkdown/kit/prose/state' -import type { Node } from '@milkdown/kit/prose/model' import { Decoration, DecorationSet } from '@milkdown/kit/prose/view' -import { findParent } from '@milkdown/kit/prose' +import { $ctx, $prose } from '@milkdown/kit/utils' + import type { DefineFeature } from '../shared' + import { isInCodeBlock, isInList } from '../../utils' function isDocEmpty(doc: Node) { diff --git a/packages/crepe/src/feature/table/index.ts b/packages/crepe/src/feature/table/index.ts index 41fb0475038..5aac4d57c0c 100644 --- a/packages/crepe/src/feature/table/index.ts +++ b/packages/crepe/src/feature/table/index.ts @@ -2,7 +2,9 @@ import { tableBlock, tableBlockConfig, } from '@milkdown/kit/component/table-block' + import type { DefineFeature, Icon } from '../shared' + import { alignCenterIcon, alignLeftIcon, diff --git a/packages/crepe/src/feature/toolbar/component.ts b/packages/crepe/src/feature/toolbar/component.ts index 6bd0b6c35f8..d4dd07037f4 100644 --- a/packages/crepe/src/feature/toolbar/component.ts +++ b/packages/crepe/src/feature/toolbar/component.ts @@ -1,6 +1,9 @@ -import type { Component } from 'atomico' -import { c, html, useEffect, useUpdate } from 'atomico' import type { Ctx } from '@milkdown/kit/ctx' +import type { MarkType, Node, NodeType } from '@milkdown/kit/prose/model' +import type { Selection } from '@milkdown/kit/prose/state' +import type { Component } from 'atomico' + +import { linkTooltipAPI } from '@milkdown/kit/component/link-tooltip' import { commandsCtx, editorViewCtx } from '@milkdown/kit/core' import { emphasisSchema, @@ -11,14 +14,18 @@ import { toggleInlineCodeCommand, toggleStrongCommand, } from '@milkdown/kit/preset/commonmark' -import type { MarkType, Node, NodeType } from '@milkdown/kit/prose/model' -import type { Selection } from '@milkdown/kit/prose/state' -import clsx from 'clsx' -import { linkTooltipAPI } from '@milkdown/kit/component/link-tooltip' import { strikethroughSchema, toggleStrikethroughCommand, } from '@milkdown/kit/preset/gfm' +import { NodeSelection, TextSelection } from '@milkdown/kit/prose/state' +import { c, html, useEffect, useUpdate } from 'atomico' +import clsx from 'clsx' + +import type { ToolbarFeatureConfig } from './index' + +import { CrepeFeature } from '../..' +import { FeaturesCtx } from '../../core/slice' import { boldIcon, codeIcon, @@ -27,11 +34,7 @@ import { strikethroughIcon, functionsIcon, } from '../../icons' -import type { ToolbarFeatureConfig } from './index' -import { NodeSelection, TextSelection } from '@milkdown/kit/prose/state' import { mathInlineSchema } from '../latex/inline-latex' -import { FeaturesCtx } from '../../core/slice' -import { CrepeFeature } from '../..' export interface ToolbarProps { ctx: Ctx diff --git a/packages/crepe/src/feature/toolbar/index.ts b/packages/crepe/src/feature/toolbar/index.ts index 1e14203f967..b1b5ebd5775 100644 --- a/packages/crepe/src/feature/toolbar/index.ts +++ b/packages/crepe/src/feature/toolbar/index.ts @@ -1,12 +1,15 @@ -import { TooltipProvider, tooltipFactory } from '@milkdown/kit/plugin/tooltip' -import type { EditorState, PluginView } from '@milkdown/kit/prose/state' -import { TextSelection } from '@milkdown/kit/prose/state' import type { Ctx } from '@milkdown/kit/ctx' +import type { EditorState, PluginView } from '@milkdown/kit/prose/state' import type { EditorView } from '@milkdown/kit/prose/view' import type { AtomicoThis } from 'atomico/types/dom' + +import { TooltipProvider, tooltipFactory } from '@milkdown/kit/plugin/tooltip' +import { TextSelection } from '@milkdown/kit/prose/state' + import type { DefineFeature, Icon } from '../shared' -import { defIfNotExists } from '../../utils' import type { ToolbarProps } from './component' + +import { defIfNotExists } from '../../utils' import { ToolbarElement } from './component' interface ToolbarConfig { diff --git a/packages/ctx/src/context/slice.ts b/packages/ctx/src/context/slice.ts index 238e871f8ad..f272ed953ed 100644 --- a/packages/ctx/src/context/slice.ts +++ b/packages/ctx/src/context/slice.ts @@ -1,4 +1,5 @@ import { ctxCallOutOfScope } from '@milkdown/exception' + import type { SliceMap } from './container' /// Slice is a value of slice type. diff --git a/packages/ctx/src/inspector/inspector.ts b/packages/ctx/src/inspector/inspector.ts index 7c268d217f2..f0c114d16bd 100644 --- a/packages/ctx/src/inspector/inspector.ts +++ b/packages/ctx/src/inspector/inspector.ts @@ -90,9 +90,11 @@ export class Inspector { /// @internal readonly onWait = (timerType: TimerType, promise: Promise) => { const start = Date.now() - promise.finally(() => { - this.#waitTimers.set(timerType, { duration: Date.now() - start }) - }) + promise + .finally(() => { + this.#waitTimers.set(timerType, { duration: Date.now() - start }) + }) + .catch(console.error) } /// @internal diff --git a/packages/ctx/src/plugin/ctx.spec.ts b/packages/ctx/src/plugin/ctx.spec.ts index 4abc05e09d6..ce3fe33c2ae 100644 --- a/packages/ctx/src/plugin/ctx.spec.ts +++ b/packages/ctx/src/plugin/ctx.spec.ts @@ -1,4 +1,5 @@ import { describe, expect, it } from 'vitest' + import { Container, createSlice } from '../context' import { Clock, createTimer } from '../timer' import { Ctx } from './ctx' diff --git a/packages/ctx/src/plugin/ctx.ts b/packages/ctx/src/plugin/ctx.ts index ba0cf1f91d9..2f06faab48d 100644 --- a/packages/ctx/src/plugin/ctx.ts +++ b/packages/ctx/src/plugin/ctx.ts @@ -1,7 +1,8 @@ import type { Container, Slice, SliceType } from '../context' +import type { Meta } from '../inspector' import type { Clock, TimerType } from '../timer' + import { Inspector } from '../inspector' -import type { Meta } from '../inspector' /// The ctx object that can be accessed in plugin and action. export class Ctx { diff --git a/packages/integrations/react/src/editor.tsx b/packages/integrations/react/src/editor.tsx index f2e35ede8f6..90207841036 100644 --- a/packages/integrations/react/src/editor.tsx +++ b/packages/integrations/react/src/editor.tsx @@ -1,8 +1,10 @@ import type { Editor } from '@milkdown/kit/core' import type { FC, ReactNode } from 'react' + import React, { useMemo, useRef, useState } from 'react' import type { EditorInfoCtx, GetEditor } from './types' + import { editorInfoContext, useGetEditor } from './use-get-editor' export const Milkdown: FC = () => { diff --git a/packages/integrations/react/src/use-editor.ts b/packages/integrations/react/src/use-editor.ts index 3c518f14337..658a21bad84 100644 --- a/packages/integrations/react/src/use-editor.ts +++ b/packages/integrations/react/src/use-editor.ts @@ -1,7 +1,9 @@ import type { DependencyList } from 'react' + import { useCallback, useContext, useLayoutEffect } from 'react' import type { GetEditor, UseEditorReturn } from './types' + import { editorInfoContext } from './use-get-editor' export function useEditor( diff --git a/packages/integrations/react/src/use-get-editor.ts b/packages/integrations/react/src/use-get-editor.ts index f3e50467c9f..ff13260c1cd 100644 --- a/packages/integrations/react/src/use-get-editor.ts +++ b/packages/integrations/react/src/use-get-editor.ts @@ -39,7 +39,7 @@ export function useGetEditor() { .catch(console.error) return () => { - editor.destroy() + editor.destroy().catch(console.error) } }, [dom, editorRef, getEditor, setLoading]) diff --git a/packages/integrations/react/src/use-instance.ts b/packages/integrations/react/src/use-instance.ts index 45234b74c09..d044f215df6 100644 --- a/packages/integrations/react/src/use-instance.ts +++ b/packages/integrations/react/src/use-instance.ts @@ -1,5 +1,7 @@ import type { Editor } from '@milkdown/kit/core' + import { useCallback, useContext } from 'react' + import { editorInfoContext } from './use-get-editor' export type Instance = [true, () => undefined] | [false, () => Editor] diff --git a/packages/integrations/vue/src/consts.ts b/packages/integrations/vue/src/consts.ts index b23b5860c03..c258f61d996 100644 --- a/packages/integrations/vue/src/consts.ts +++ b/packages/integrations/vue/src/consts.ts @@ -1,4 +1,5 @@ import type { InjectionKey } from 'vue' + import type { EditorInfoCtx } from './types' export const editorInfoCtxKey: InjectionKey = diff --git a/packages/integrations/vue/src/editor.tsx b/packages/integrations/vue/src/editor.tsx index 02629b3164e..ba35607d9e4 100644 --- a/packages/integrations/vue/src/editor.tsx +++ b/packages/integrations/vue/src/editor.tsx @@ -1,10 +1,12 @@ import type { Editor } from '@milkdown/kit/core' import type { Ref } from 'vue' + import { Fragment, defineComponent, h, provide, ref } from 'vue' import type { GetEditor } from './types' -import { useGetEditor } from './use-get-editor' + import { editorInfoCtxKey } from './consts' +import { useGetEditor } from './use-get-editor' h Fragment diff --git a/packages/integrations/vue/src/use-editor.ts b/packages/integrations/vue/src/use-editor.ts index a93470d96bc..140f78904f7 100644 --- a/packages/integrations/vue/src/use-editor.ts +++ b/packages/integrations/vue/src/use-editor.ts @@ -1,8 +1,9 @@ import { inject } from 'vue' -import { editorInfoCtxKey } from './consts' import type { GetEditor, UseEditorReturn } from './types' +import { editorInfoCtxKey } from './consts' + export function useEditor(getEditor: GetEditor): UseEditorReturn { const { editorFactory, loading, editor } = inject(editorInfoCtxKey)! diff --git a/packages/integrations/vue/src/use-get-editor.ts b/packages/integrations/vue/src/use-get-editor.ts index 639c5280246..15ed04a9a1d 100644 --- a/packages/integrations/vue/src/use-get-editor.ts +++ b/packages/integrations/vue/src/use-get-editor.ts @@ -1,9 +1,11 @@ +import type { Crepe } from '@milkdown/crepe' +import type { Editor } from '@milkdown/kit/core' + import { inject, onMounted, onUnmounted, ref } from 'vue' import type { EditorInfoCtx } from './types' + import { editorInfoCtxKey } from './consts' -import type { Crepe } from '@milkdown/crepe' -import type { Editor } from '@milkdown/kit/core' export function useGetEditor() { const { @@ -33,7 +35,7 @@ export function useGetEditor() { .catch(console.error) }) onUnmounted(() => { - currentEditorRef.value?.destroy() + currentEditorRef.value?.destroy().catch(console.error) }) return dom diff --git a/packages/integrations/vue/src/use-instance.ts b/packages/integrations/vue/src/use-instance.ts index 232e2fe124f..2aacb0bc03f 100644 --- a/packages/integrations/vue/src/use-instance.ts +++ b/packages/integrations/vue/src/use-instance.ts @@ -1,6 +1,8 @@ import type { Editor } from '@milkdown/kit/core' import type { Ref } from 'vue' + import { inject } from 'vue' + import { editorInfoCtxKey } from './consts' export type Instance = [Ref, () => undefined] | [Ref, () => Editor] diff --git a/packages/plugins/plugin-automd/src/config.ts b/packages/plugins/plugin-automd/src/config.ts index bb38e35ad43..e341ad4cb18 100644 --- a/packages/plugins/plugin-automd/src/config.ts +++ b/packages/plugins/plugin-automd/src/config.ts @@ -1,6 +1,7 @@ import type { Ctx } from '@milkdown/ctx' import type { Node, NodeType } from '@milkdown/prose/model' import type { Transaction } from '@milkdown/prose/state' + import { $ctx } from '@milkdown/utils' import { withMeta } from './__internal__' diff --git a/packages/plugins/plugin-automd/src/context.ts b/packages/plugins/plugin-automd/src/context.ts index 84809347c0e..7939a3b4d1a 100644 --- a/packages/plugins/plugin-automd/src/context.ts +++ b/packages/plugins/plugin-automd/src/context.ts @@ -1,17 +1,18 @@ import type { Ctx } from '@milkdown/ctx' -import { parserCtx, serializerCtx } from '@milkdown/core' import type { Node } from '@milkdown/prose/model' import type { EditorState } from '@milkdown/prose/state' + +import { parserCtx, serializerCtx } from '@milkdown/core' import { pipe } from '@milkdown/utils' import { inlineSyncConfig } from './config' +import { asterisk, asteriskHolder, underline, underlineHolder } from './regexp' import { calculatePlaceholder, keepLink, mergeSlash, replacePunctuation, } from './utils' -import { asterisk, asteriskHolder, underline, underlineHolder } from './regexp' export interface InlineSyncContext { text: string diff --git a/packages/plugins/plugin-automd/src/index.ts b/packages/plugins/plugin-automd/src/index.ts index feeb8d40ccc..90e073b0ff8 100644 --- a/packages/plugins/plugin-automd/src/index.ts +++ b/packages/plugins/plugin-automd/src/index.ts @@ -1,4 +1,5 @@ import type { MilkdownPlugin } from '@milkdown/ctx' + import { inlineSyncConfig } from './config' import { inlineSyncPlugin } from './inline-sync-plugin' diff --git a/packages/plugins/plugin-automd/src/inline-sync-plugin.ts b/packages/plugins/plugin-automd/src/inline-sync-plugin.ts index 9502ec19c89..c7a4e4493cd 100644 --- a/packages/plugins/plugin-automd/src/inline-sync-plugin.ts +++ b/packages/plugins/plugin-automd/src/inline-sync-plugin.ts @@ -1,4 +1,5 @@ import type { Ctx } from '@milkdown/ctx' + import { editorViewCtx } from '@milkdown/core' import { Plugin, PluginKey } from '@milkdown/prose/state' import { $prose } from '@milkdown/utils' diff --git a/packages/plugins/plugin-automd/src/replacer.ts b/packages/plugins/plugin-automd/src/replacer.ts index 140d07dc326..7ce0d0f50db 100644 --- a/packages/plugins/plugin-automd/src/replacer.ts +++ b/packages/plugins/plugin-automd/src/replacer.ts @@ -1,12 +1,13 @@ import type { Ctx } from '@milkdown/ctx' import type { Attrs } from '@milkdown/prose/model' import type { EditorState, PluginKey, Transaction } from '@milkdown/prose/state' + import { TextSelection } from '@milkdown/prose/state' import { inlineSyncConfig } from './config' import { getContextByState } from './context' -import { calcOffset } from './utils' import { linkRegexp } from './regexp' +import { calcOffset } from './utils' export function runReplacer( ctx: Ctx, diff --git a/packages/plugins/plugin-automd/src/utils.ts b/packages/plugins/plugin-automd/src/utils.ts index 4a3dab91419..2566311993d 100644 --- a/packages/plugins/plugin-automd/src/utils.ts +++ b/packages/plugins/plugin-automd/src/utils.ts @@ -1,6 +1,7 @@ import type { Node } from '@milkdown/prose/model' import type { SyncNodePlaceholder } from './config' + import { asterisk, asteriskHolder, diff --git a/packages/plugins/plugin-block/src/__internal__/serialize-for-clipboard.ts b/packages/plugins/plugin-block/src/__internal__/serialize-for-clipboard.ts index 26a1efc677d..8bf3f9c918e 100644 --- a/packages/plugins/plugin-block/src/__internal__/serialize-for-clipboard.ts +++ b/packages/plugins/plugin-block/src/__internal__/serialize-for-clipboard.ts @@ -3,9 +3,10 @@ */ import type { NodeType, Slice } from '@milkdown/prose/model' -import { DOMSerializer } from '@milkdown/prose/model' import type { EditorView } from '@milkdown/prose/view' +import { DOMSerializer } from '@milkdown/prose/model' + let _detachedDoc: Document | null = null function detachedDoc() { return ( diff --git a/packages/plugins/plugin-block/src/block-config.ts b/packages/plugins/plugin-block/src/block-config.ts index eaf3dc5b3c8..675027f5450 100644 --- a/packages/plugins/plugin-block/src/block-config.ts +++ b/packages/plugins/plugin-block/src/block-config.ts @@ -1,7 +1,8 @@ import type { Node, ResolvedPos } from '@milkdown/prose/model' -import { $ctx } from '@milkdown/utils' import { findParent } from '@milkdown/prose' +import { $ctx } from '@milkdown/utils' + import { withMeta } from './__internal__/with-meta' /// @internal diff --git a/packages/plugins/plugin-block/src/block-plugin.ts b/packages/plugins/plugin-block/src/block-plugin.ts index fd7a5e29001..1048e7a98a9 100644 --- a/packages/plugins/plugin-block/src/block-plugin.ts +++ b/packages/plugins/plugin-block/src/block-plugin.ts @@ -1,9 +1,10 @@ import type { PluginSpec } from '@milkdown/prose/state' + import { Plugin, PluginKey } from '@milkdown/prose/state' import { $ctx, $prose } from '@milkdown/utils' -import { BlockService } from './block-service' import { withMeta } from './__internal__/with-meta' +import { BlockService } from './block-service' /// @internal export const blockService = $ctx(() => new BlockService(), 'blockService') diff --git a/packages/plugins/plugin-block/src/block-provider.ts b/packages/plugins/plugin-block/src/block-provider.ts index 9f1c47d39b0..b51e9c0a894 100644 --- a/packages/plugins/plugin-block/src/block-provider.ts +++ b/packages/plugins/plugin-block/src/block-provider.ts @@ -1,20 +1,21 @@ -import type { Ctx } from '@milkdown/ctx' -import type { EditorState } from '@milkdown/prose/state' -import type { EditorView } from '@milkdown/prose/view' - import type { ComputePositionConfig, Middleware, Placement, VirtualElement, } from '@floating-ui/dom' -import { computePosition, flip, offset } from '@floating-ui/dom' +import type { Ctx } from '@milkdown/ctx' +import type { EditorState } from '@milkdown/prose/state' +import type { EditorView } from '@milkdown/prose/view' +import { computePosition, flip, offset } from '@floating-ui/dom' import { editorViewCtx } from '@milkdown/core' + import type { BlockService } from './block-service' -import { blockServiceInstance } from './block-plugin' import type { ActiveNode } from './types' +import { blockServiceInstance } from './block-plugin' + /// The context of the block provider. export interface DeriveContext { ctx: Ctx @@ -185,13 +186,15 @@ export class BlockProvider { : 'left', middleware: [...middleware, ...this.#middleware], ...this.#floatingUIOptions, - }).then(({ x, y }) => { - Object.assign(this.#element.style, { - left: `${x}px`, - top: `${y}px`, - }) - this.#element.dataset.show = 'true' }) + .then(({ x, y }) => { + Object.assign(this.#element.style, { + left: `${x}px`, + top: `${y}px`, + }) + this.#element.dataset.show = 'true' + }) + .catch(console.error) } /// Hide the block. diff --git a/packages/plugins/plugin-block/src/block-service.ts b/packages/plugins/plugin-block/src/block-service.ts index 0fc7e397d2a..59e676e53cd 100644 --- a/packages/plugins/plugin-block/src/block-service.ts +++ b/packages/plugins/plugin-block/src/block-service.ts @@ -1,16 +1,18 @@ import type { Ctx } from '@milkdown/ctx' +import type { Selection } from '@milkdown/prose/state' +import type { EditorView } from '@milkdown/prose/view' + import { editorViewCtx } from '@milkdown/core' import { browser } from '@milkdown/prose' -import type { Selection } from '@milkdown/prose/state' import { NodeSelection } from '@milkdown/prose/state' -import type { EditorView } from '@milkdown/prose/view' import throttle from 'lodash.throttle' import type { FilterNodes } from './block-config' -import { blockConfig } from './block-config' +import type { ActiveNode } from './types' + import { selectRootNodeByDom } from './__internal__/select-node-by-dom' import { serializeForClipboard } from './__internal__/serialize-for-clipboard' -import type { ActiveNode } from './types' +import { blockConfig } from './block-config' const brokenClipboardAPI = (browser.ie && browser.ie_version < 15) || diff --git a/packages/plugins/plugin-block/src/index.ts b/packages/plugins/plugin-block/src/index.ts index 32dd648812c..5d4309863b3 100644 --- a/packages/plugins/plugin-block/src/index.ts +++ b/packages/plugins/plugin-block/src/index.ts @@ -1,7 +1,10 @@ import type { SliceType } from '@milkdown/ctx' import type { PluginSpec } from '@milkdown/prose/state' import type { $Ctx, $Prose } from '@milkdown/utils' + import type { FilterNodes } from './block-config' +import type { BlockService } from './block-service' + import { blockConfig } from './block-config' import { blockPlugin, @@ -9,7 +12,6 @@ import { blockServiceInstance, blockSpec, } from './block-plugin' -import type { BlockService } from './block-service' export * from './block-plugin' export * from './block-provider' diff --git a/packages/plugins/plugin-clipboard/src/index.ts b/packages/plugins/plugin-clipboard/src/index.ts index 73718018d17..9bbabd76b53 100644 --- a/packages/plugins/plugin-clipboard/src/index.ts +++ b/packages/plugins/plugin-clipboard/src/index.ts @@ -1,3 +1,5 @@ +import type { Node, Slice } from '@milkdown/prose/model' + import { editorViewOptionsCtx, parserCtx, @@ -5,7 +7,6 @@ import { serializerCtx, } from '@milkdown/core' import { getNodeFromSchema } from '@milkdown/prose' -import type { Node, Slice } from '@milkdown/prose/model' import { DOMParser, DOMSerializer } from '@milkdown/prose/model' import { Plugin, PluginKey, TextSelection } from '@milkdown/prose/state' import { $prose } from '@milkdown/utils' diff --git a/packages/plugins/plugin-collab/src/collab-service.ts b/packages/plugins/plugin-collab/src/collab-service.ts index f1263bfec4e..25c8c10e90b 100644 --- a/packages/plugins/plugin-collab/src/collab-service.ts +++ b/packages/plugins/plugin-collab/src/collab-service.ts @@ -1,5 +1,10 @@ -import type { Ctx } from '@milkdown/ctx' import type { DefaultValue } from '@milkdown/core' +import type { Ctx } from '@milkdown/ctx' +import type { Node } from '@milkdown/prose/model' +import type { DecorationAttrs } from '@milkdown/prose/view' +import type { Awareness } from 'y-protocols/awareness' +import type { Doc, PermanentUserData, XmlFragment } from 'yjs' + import { editorViewCtx, getDoc, @@ -9,9 +14,7 @@ import { } from '@milkdown/core' import { ctxNotBind, missingYjsDoc } from '@milkdown/exception' import { keydownHandler } from '@milkdown/prose/keymap' -import type { Node } from '@milkdown/prose/model' import { Plugin, PluginKey } from '@milkdown/prose/state' -import type { DecorationAttrs } from '@milkdown/prose/view' import { prosemirrorToYDoc, redo, @@ -24,8 +27,6 @@ import { yUndoPlugin, yUndoPluginKey, } from 'y-prosemirror' -import type { Awareness } from 'y-protocols/awareness' -import type { Doc, PermanentUserData, XmlFragment } from 'yjs' import { applyUpdate, encodeStateAsUpdate } from 'yjs' /// @internal diff --git a/packages/plugins/plugin-collab/src/index.ts b/packages/plugins/plugin-collab/src/index.ts index 2f3a6a33af8..2c5d52c476d 100644 --- a/packages/plugins/plugin-collab/src/index.ts +++ b/packages/plugins/plugin-collab/src/index.ts @@ -1,6 +1,7 @@ import type { MilkdownPlugin } from '@milkdown/ctx' -import { createSlice, createTimer } from '@milkdown/ctx' + import { EditorViewReady } from '@milkdown/core' +import { createSlice, createTimer } from '@milkdown/ctx' import { CollabService } from './collab-service' diff --git a/packages/plugins/plugin-collab/src/shim.d.ts b/packages/plugins/plugin-collab/src/shim.d.ts index 790192dde7f..8cb149beeb4 100644 --- a/packages/plugins/plugin-collab/src/shim.d.ts +++ b/packages/plugins/plugin-collab/src/shim.d.ts @@ -1,9 +1,9 @@ declare module 'y-prosemirror' { - import type { Plugin, PluginKey } from '@milkdown/prose/state' import type { Node, Schema } from '@milkdown/prose/model' + import type { Plugin, PluginKey } from '@milkdown/prose/state' import type { DecorationAttrs } from '@milkdown/prose/view' - import type * as Y from 'yjs' import type { Awareness } from 'y-protocols/awareness' + import type * as Y from 'yjs' interface ColorDef { light: string diff --git a/packages/plugins/plugin-cursor/src/index.ts b/packages/plugins/plugin-cursor/src/index.ts index b1ef4f99e98..46fd32b7e42 100644 --- a/packages/plugins/plugin-cursor/src/index.ts +++ b/packages/plugins/plugin-cursor/src/index.ts @@ -1,4 +1,5 @@ import type { Meta, MilkdownPlugin } from '@milkdown/ctx' + import { dropCursor } from '@milkdown/prose/dropcursor' import { gapCursor } from '@milkdown/prose/gapcursor' import { $ctx, $prose } from '@milkdown/utils' diff --git a/packages/plugins/plugin-emoji/src/__internal__/remark-twemoji.ts b/packages/plugins/plugin-emoji/src/__internal__/remark-twemoji.ts index 1f1032cc26a..6e3e6ee17e5 100644 --- a/packages/plugins/plugin-emoji/src/__internal__/remark-twemoji.ts +++ b/packages/plugins/plugin-emoji/src/__internal__/remark-twemoji.ts @@ -1,4 +1,5 @@ import type { Node, RemarkPluginRaw } from '@milkdown/transformer' + import emojiRegex from 'emoji-regex' import { type TwemojiOptions, parse } from './parse' diff --git a/packages/plugins/plugin-emoji/src/index.ts b/packages/plugins/plugin-emoji/src/index.ts index 2a2dd7e9e4d..c89d2961f88 100644 --- a/packages/plugins/plugin-emoji/src/index.ts +++ b/packages/plugins/plugin-emoji/src/index.ts @@ -1,10 +1,11 @@ import type { MilkdownPlugin } from '@milkdown/ctx' import type { RemarkPluginRaw } from '@milkdown/transformer' +import type { RemarkEmojiOptions } from 'remark-emoji' + import { expectDomTypeError } from '@milkdown/exception' import { InputRule } from '@milkdown/prose/inputrules' import { $inputRule, $nodeAttr, $nodeSchema, $remark } from '@milkdown/utils' import { get } from 'node-emoji' -import type { RemarkEmojiOptions } from 'remark-emoji' import remarkEmoji from 'remark-emoji' import { parse } from './__internal__/parse' diff --git a/packages/plugins/plugin-history/src/index.ts b/packages/plugins/plugin-history/src/index.ts index e29b26e3b8f..beca1a592fe 100644 --- a/packages/plugins/plugin-history/src/index.ts +++ b/packages/plugins/plugin-history/src/index.ts @@ -1,4 +1,5 @@ import type { Meta, MilkdownPlugin } from '@milkdown/ctx' + import { commandsCtx } from '@milkdown/core' import { history as prosemirrorHistory, diff --git a/packages/plugins/plugin-indent/src/index.ts b/packages/plugins/plugin-indent/src/index.ts index 784cf3d3474..d0a57b24a9f 100644 --- a/packages/plugins/plugin-indent/src/index.ts +++ b/packages/plugins/plugin-indent/src/index.ts @@ -1,5 +1,6 @@ import type { MilkdownPlugin } from '@milkdown/ctx' import type { Transaction } from '@milkdown/prose/state' + import { AllSelection, TextSelection } from '@milkdown/prose/state' import { $ctx, $shortcut } from '@milkdown/utils' diff --git a/packages/plugins/plugin-listener/src/index.ts b/packages/plugins/plugin-listener/src/index.ts index 085828a1c10..a6aa07d8553 100644 --- a/packages/plugins/plugin-listener/src/index.ts +++ b/packages/plugins/plugin-listener/src/index.ts @@ -1,5 +1,6 @@ -import { createSlice } from '@milkdown/ctx' import type { Ctx, MilkdownPlugin } from '@milkdown/ctx' +import type { Node as ProseNode } from '@milkdown/prose/model' + import { EditorViewReady, InitReady, @@ -7,7 +8,7 @@ import { prosePluginsCtx, serializerCtx, } from '@milkdown/core' -import type { Node as ProseNode } from '@milkdown/prose/model' +import { createSlice } from '@milkdown/ctx' import { Plugin, PluginKey } from '@milkdown/prose/state' import debounce from 'lodash.debounce' diff --git a/packages/plugins/plugin-prism/src/get-decorations.ts b/packages/plugins/plugin-prism/src/get-decorations.ts index 5efcbade90b..8aef581dbd0 100644 --- a/packages/plugins/plugin-prism/src/get-decorations.ts +++ b/packages/plugins/plugin-prism/src/get-decorations.ts @@ -1,8 +1,9 @@ -import { findChildren } from '@milkdown/prose' import type { Node } from '@milkdown/prose/model' -import { Decoration, DecorationSet } from '@milkdown/prose/view' -import type { Refractor } from 'refractor/core' import type { RootContent, Text } from 'hast' +import type { Refractor } from 'refractor/core' + +import { findChildren } from '@milkdown/prose' +import { Decoration, DecorationSet } from '@milkdown/prose/view' export interface FlattedNode { text: string @@ -29,7 +30,7 @@ export function getDecorations(doc: Node, name: string, refractor: Refractor) { let from = block.pos + 1 const { language } = block.node.attrs if (!language || !allLanguages.includes(language)) { - // eslint-disable-next-line no-console + console.warn( 'Unsupported language detected, this language has not been supported by current prism config: ', language diff --git a/packages/plugins/plugin-prism/src/index.ts b/packages/plugins/plugin-prism/src/index.ts index 928d82846c4..fc82761b7c2 100644 --- a/packages/plugins/plugin-prism/src/index.ts +++ b/packages/plugins/plugin-prism/src/index.ts @@ -1,11 +1,11 @@ +import type { MilkdownPlugin } from '@milkdown/ctx' import type { Refractor } from 'refractor/core' import { findChildren } from '@milkdown/prose' import { Plugin, PluginKey } from '@milkdown/prose/state' +import { $ctx, $prose } from '@milkdown/utils' import { refractor } from 'refractor' -import { $ctx, $prose } from '@milkdown/utils' -import type { MilkdownPlugin } from '@milkdown/ctx' import { getDecorations } from './get-decorations' /// @internal diff --git a/packages/plugins/plugin-slash/src/slash-plugin.ts b/packages/plugins/plugin-slash/src/slash-plugin.ts index c82b4fc9a45..14c3fb4dd26 100644 --- a/packages/plugins/plugin-slash/src/slash-plugin.ts +++ b/packages/plugins/plugin-slash/src/slash-plugin.ts @@ -1,7 +1,8 @@ import type { SliceType } from '@milkdown/ctx' import type { PluginSpec } from '@milkdown/prose/state' -import { Plugin, PluginKey } from '@milkdown/prose/state' import type { $Ctx, $Prose } from '@milkdown/utils' + +import { Plugin, PluginKey } from '@milkdown/prose/state' import { $ctx, $prose } from '@milkdown/utils' /// @internal diff --git a/packages/plugins/plugin-slash/src/slash-provider.ts b/packages/plugins/plugin-slash/src/slash-provider.ts index 92c40e4b4c5..ca725dedfae 100644 --- a/packages/plugins/plugin-slash/src/slash-provider.ts +++ b/packages/plugins/plugin-slash/src/slash-provider.ts @@ -1,15 +1,16 @@ -import { findParentNode, posToDOMRect } from '@milkdown/prose' -import type { EditorState } from '@milkdown/prose/state' -import type { Node } from '@milkdown/prose/model' -import { TextSelection } from '@milkdown/prose/state' -import type { EditorView } from '@milkdown/prose/view' -import debounce from 'lodash.debounce' import type { ComputePositionConfig, Middleware, VirtualElement, } from '@floating-ui/dom' +import type { Node } from '@milkdown/prose/model' +import type { EditorState } from '@milkdown/prose/state' +import type { EditorView } from '@milkdown/prose/view' + import { computePosition, flip, offset } from '@floating-ui/dom' +import { findParentNode, posToDOMRect } from '@milkdown/prose' +import { TextSelection } from '@milkdown/prose/state' +import debounce from 'lodash.debounce' /// Options for slash provider. export interface SlashProviderOptions { @@ -119,12 +120,14 @@ export class SlashProvider { placement: 'bottom-start', middleware: [flip(), offset(this.#offset), ...this.#middleware], ...this.#floatingUIOptions, - }).then(({ x, y }) => { - Object.assign(this.element.style, { - left: `${x}px`, - top: `${y}px`, - }) }) + .then(({ x, y }) => { + Object.assign(this.element.style, { + left: `${x}px`, + top: `${y}px`, + }) + }) + .catch(console.error) this.show() } diff --git a/packages/plugins/plugin-tooltip/src/tooltip-plugin.ts b/packages/plugins/plugin-tooltip/src/tooltip-plugin.ts index 53857a5ec5f..0577c9bcb79 100644 --- a/packages/plugins/plugin-tooltip/src/tooltip-plugin.ts +++ b/packages/plugins/plugin-tooltip/src/tooltip-plugin.ts @@ -1,7 +1,8 @@ import type { SliceType } from '@milkdown/ctx' import type { PluginSpec } from '@milkdown/prose/state' -import { Plugin, PluginKey } from '@milkdown/prose/state' import type { $Ctx, $Prose } from '@milkdown/utils' + +import { Plugin, PluginKey } from '@milkdown/prose/state' import { $ctx, $prose } from '@milkdown/utils' /// @internal diff --git a/packages/plugins/plugin-tooltip/src/tooltip-provider.ts b/packages/plugins/plugin-tooltip/src/tooltip-provider.ts index 1bfac4b712d..6f3df6d462a 100644 --- a/packages/plugins/plugin-tooltip/src/tooltip-provider.ts +++ b/packages/plugins/plugin-tooltip/src/tooltip-provider.ts @@ -1,14 +1,15 @@ -import type { EditorState } from '@milkdown/prose/state' -import { TextSelection } from '@milkdown/prose/state' -import type { EditorView } from '@milkdown/prose/view' -import throttle from 'lodash.throttle' import type { ComputePositionConfig, Middleware, VirtualElement, } from '@floating-ui/dom' +import type { EditorState } from '@milkdown/prose/state' +import type { EditorView } from '@milkdown/prose/view' + import { computePosition, flip, offset, shift } from '@floating-ui/dom' import { posToDOMRect } from '@milkdown/prose' +import { TextSelection } from '@milkdown/prose/state' +import throttle from 'lodash.throttle' /// Options for tooltip provider. export interface TooltipProviderOptions { @@ -112,12 +113,14 @@ export class TooltipProvider { computePosition(virtualEl, this.element, { placement: this.#floatingUIOptions.placement ?? 'top', middleware: [flip(), offset(this.#offset), shift(), ...this.#middleware], - }).then(({ x, y }) => { - Object.assign(this.element.style, { - left: `${x}px`, - top: `${y}px`, - }) }) + .then(({ x, y }) => { + Object.assign(this.element.style, { + left: `${x}px`, + top: `${y}px`, + }) + }) + .catch(console.error) this.show() } @@ -161,12 +164,14 @@ export class TooltipProvider { placement: 'top', middleware: [flip(), offset(this.#offset)], ...this.#floatingUIOptions, - }).then(({ x, y }) => { - Object.assign(this.element.style, { - left: `${x}px`, - top: `${y}px`, - }) }) + .then(({ x, y }) => { + Object.assign(this.element.style, { + left: `${x}px`, + top: `${y}px`, + }) + }) + .catch(console.error) } this.onShow() diff --git a/packages/plugins/plugin-trailing/src/index.ts b/packages/plugins/plugin-trailing/src/index.ts index 6821cfcac87..cc9473ae70d 100644 --- a/packages/plugins/plugin-trailing/src/index.ts +++ b/packages/plugins/plugin-trailing/src/index.ts @@ -1,6 +1,7 @@ import type { MilkdownPlugin } from '@milkdown/ctx' import type { Node } from '@milkdown/prose/model' import type { EditorState } from '@milkdown/prose/state' + import { Plugin, PluginKey } from '@milkdown/prose/state' import { $ctx, $prose } from '@milkdown/utils' diff --git a/packages/plugins/plugin-upload/src/default-uploader.ts b/packages/plugins/plugin-upload/src/default-uploader.ts index f4ef77a6bc6..cd1b6f7db60 100644 --- a/packages/plugins/plugin-upload/src/default-uploader.ts +++ b/packages/plugins/plugin-upload/src/default-uploader.ts @@ -1,6 +1,7 @@ -import { missingNodeInSchema } from '@milkdown/exception' import type { Node } from '@milkdown/prose/model' +import { missingNodeInSchema } from '@milkdown/exception' + import type { Uploader } from './upload' /// Read the image file as base64. diff --git a/packages/plugins/plugin-upload/src/index.ts b/packages/plugins/plugin-upload/src/index.ts index e742a7ea44b..d7b3c848037 100644 --- a/packages/plugins/plugin-upload/src/index.ts +++ b/packages/plugins/plugin-upload/src/index.ts @@ -1,4 +1,5 @@ import type { MilkdownPlugin } from '@milkdown/ctx' + import { uploadConfig, uploadPlugin } from './upload' export * from './upload' diff --git a/packages/plugins/plugin-upload/src/upload.ts b/packages/plugins/plugin-upload/src/upload.ts index 876ca314ad6..458be1dc906 100644 --- a/packages/plugins/plugin-upload/src/upload.ts +++ b/packages/plugins/plugin-upload/src/upload.ts @@ -1,8 +1,9 @@ -import { schemaCtx } from '@milkdown/core' import type { Fragment, Node, Schema } from '@milkdown/prose/model' import type { EditorState } from '@milkdown/prose/state' -import { Plugin, PluginKey } from '@milkdown/prose/state' import type { EditorView } from '@milkdown/prose/view' + +import { schemaCtx } from '@milkdown/core' +import { Plugin, PluginKey } from '@milkdown/prose/state' import { Decoration, DecorationSet } from '@milkdown/prose/view' import { $ctx, $prose } from '@milkdown/utils' @@ -105,7 +106,7 @@ export const uploadPlugin = $prose((ctx) => { ) }) .catch((e) => { - // eslint-disable-next-line no-console + console.error(e) }) return true diff --git a/packages/plugins/preset-commonmark/src/__internal__/serialize-text.ts b/packages/plugins/preset-commonmark/src/__internal__/serialize-text.ts index ccd0bd4eb36..27626359db1 100644 --- a/packages/plugins/preset-commonmark/src/__internal__/serialize-text.ts +++ b/packages/plugins/preset-commonmark/src/__internal__/serialize-text.ts @@ -1,5 +1,6 @@ -import type { SerializerState } from '@milkdown/transformer' import type { Node } from '@milkdown/prose/model' +import type { SerializerState } from '@milkdown/transformer' + import { Fragment } from '@milkdown/prose/model' export function serializeText(state: SerializerState, node: Node) { diff --git a/packages/plugins/preset-commonmark/src/composed/commands.ts b/packages/plugins/preset-commonmark/src/composed/commands.ts index 7da1a22a231..b4cb1df41a2 100644 --- a/packages/plugins/preset-commonmark/src/composed/commands.ts +++ b/packages/plugins/preset-commonmark/src/composed/commands.ts @@ -1,4 +1,5 @@ import type { MilkdownPlugin } from '@milkdown/ctx' + import { toggleEmphasisCommand, toggleInlineCodeCommand, diff --git a/packages/plugins/preset-commonmark/src/composed/inputrules.ts b/packages/plugins/preset-commonmark/src/composed/inputrules.ts index a1796efe292..7d8d8fc041c 100644 --- a/packages/plugins/preset-commonmark/src/composed/inputrules.ts +++ b/packages/plugins/preset-commonmark/src/composed/inputrules.ts @@ -1,4 +1,11 @@ import type { MilkdownPlugin } from '@milkdown/ctx' + +import { + emphasisStarInputRule, + emphasisUnderscoreInputRule, + inlineCodeInputRule, + strongInputRule, +} from '../mark' import { createCodeBlockInputRule, insertHrInputRule, @@ -7,12 +14,6 @@ import { wrapInHeadingInputRule, wrapInOrderedListInputRule, } from '../node' -import { - emphasisStarInputRule, - emphasisUnderscoreInputRule, - inlineCodeInputRule, - strongInputRule, -} from '../mark' /// @internal export const inputRules: MilkdownPlugin[] = [ diff --git a/packages/plugins/preset-commonmark/src/composed/keymap.ts b/packages/plugins/preset-commonmark/src/composed/keymap.ts index 4698ccd1653..3506ba17457 100644 --- a/packages/plugins/preset-commonmark/src/composed/keymap.ts +++ b/packages/plugins/preset-commonmark/src/composed/keymap.ts @@ -1,4 +1,5 @@ import type { MilkdownPlugin } from '@milkdown/ctx' + import { emphasisKeymap, inlineCodeKeymap, strongKeymap } from '../mark' import { blockquoteKeymap, diff --git a/packages/plugins/preset-commonmark/src/composed/plugins.ts b/packages/plugins/preset-commonmark/src/composed/plugins.ts index 2b07f3d46fa..d1c29721312 100644 --- a/packages/plugins/preset-commonmark/src/composed/plugins.ts +++ b/packages/plugins/preset-commonmark/src/composed/plugins.ts @@ -1,4 +1,5 @@ import type { MilkdownPlugin } from '@milkdown/ctx' + import { hardbreakClearMarkPlugin, hardbreakFilterNodes, diff --git a/packages/plugins/preset-commonmark/src/composed/schema.ts b/packages/plugins/preset-commonmark/src/composed/schema.ts index 529e0f63cbc..cabe3e44945 100644 --- a/packages/plugins/preset-commonmark/src/composed/schema.ts +++ b/packages/plugins/preset-commonmark/src/composed/schema.ts @@ -1,4 +1,5 @@ import type { MilkdownPlugin } from '@milkdown/ctx' + import { emphasisAttr, emphasisSchema, diff --git a/packages/plugins/preset-commonmark/src/index.ts b/packages/plugins/preset-commonmark/src/index.ts index 7f2d66fb820..5614988581a 100644 --- a/packages/plugins/preset-commonmark/src/index.ts +++ b/packages/plugins/preset-commonmark/src/index.ts @@ -1,4 +1,5 @@ import type { MilkdownPlugin } from '@milkdown/ctx' + import { commands, inputRules, diff --git a/packages/plugins/preset-commonmark/src/mark/emphasis.ts b/packages/plugins/preset-commonmark/src/mark/emphasis.ts index cc5b1a168bc..61cea79c324 100644 --- a/packages/plugins/preset-commonmark/src/mark/emphasis.ts +++ b/packages/plugins/preset-commonmark/src/mark/emphasis.ts @@ -1,4 +1,6 @@ import { commandsCtx, remarkStringifyOptionsCtx } from '@milkdown/core' +import { markRule } from '@milkdown/prose' +import { toggleMark } from '@milkdown/prose/commands' import { $command, $inputRule, @@ -6,8 +8,7 @@ import { $markSchema, $useKeymap, } from '@milkdown/utils' -import { toggleMark } from '@milkdown/prose/commands' -import { markRule } from '@milkdown/prose' + import { withMeta } from '../__internal__' /// HTML attributes for the emphasis mark. diff --git a/packages/plugins/preset-commonmark/src/mark/inline-code.ts b/packages/plugins/preset-commonmark/src/mark/inline-code.ts index b532923869a..452ba76bc06 100644 --- a/packages/plugins/preset-commonmark/src/mark/inline-code.ts +++ b/packages/plugins/preset-commonmark/src/mark/inline-code.ts @@ -1,5 +1,7 @@ -import { commandsCtx } from '@milkdown/core' import type { MarkType } from '@milkdown/prose/model' + +import { commandsCtx } from '@milkdown/core' +import { markRule } from '@milkdown/prose' import { $command, $inputRule, @@ -7,7 +9,7 @@ import { $markSchema, $useKeymap, } from '@milkdown/utils' -import { markRule } from '@milkdown/prose' + import { withMeta } from '../__internal__' /// HTML attributes for the inlineCode mark. diff --git a/packages/plugins/preset-commonmark/src/mark/link.ts b/packages/plugins/preset-commonmark/src/mark/link.ts index f45ec0399bc..09e608d2bc4 100644 --- a/packages/plugins/preset-commonmark/src/mark/link.ts +++ b/packages/plugins/preset-commonmark/src/mark/link.ts @@ -1,8 +1,10 @@ +import type { Node as ProseNode } from '@milkdown/prose/model' + import { expectDomTypeError } from '@milkdown/exception' import { toggleMark } from '@milkdown/prose/commands' -import type { Node as ProseNode } from '@milkdown/prose/model' import { TextSelection } from '@milkdown/prose/state' import { $command, $markAttr, $markSchema } from '@milkdown/utils' + import { withMeta } from '../__internal__' /// HTML attributes for the link mark. diff --git a/packages/plugins/preset-commonmark/src/mark/strong.ts b/packages/plugins/preset-commonmark/src/mark/strong.ts index ac002f4fce3..670322b918f 100644 --- a/packages/plugins/preset-commonmark/src/mark/strong.ts +++ b/packages/plugins/preset-commonmark/src/mark/strong.ts @@ -1,4 +1,6 @@ import { commandsCtx, remarkStringifyOptionsCtx } from '@milkdown/core' +import { markRule } from '@milkdown/prose' +import { toggleMark } from '@milkdown/prose/commands' import { $command, $inputRule, @@ -6,8 +8,7 @@ import { $markSchema, $useKeymap, } from '@milkdown/utils' -import { toggleMark } from '@milkdown/prose/commands' -import { markRule } from '@milkdown/prose' + import { withMeta } from '../__internal__' /// HTML attributes for the strong mark. diff --git a/packages/plugins/preset-commonmark/src/node/blockquote.ts b/packages/plugins/preset-commonmark/src/node/blockquote.ts index 7e22f9e1557..c1a54dbab52 100644 --- a/packages/plugins/preset-commonmark/src/node/blockquote.ts +++ b/packages/plugins/preset-commonmark/src/node/blockquote.ts @@ -1,7 +1,8 @@ +import type { $NodeSchema } from '@milkdown/utils' + import { commandsCtx } from '@milkdown/core' import { wrapIn } from '@milkdown/prose/commands' import { wrappingInputRule } from '@milkdown/prose/inputrules' -import type { $NodeSchema } from '@milkdown/utils' import { $command, $inputRule, @@ -9,6 +10,7 @@ import { $nodeSchema, $useKeymap, } from '@milkdown/utils' + import { withMeta } from '../__internal__' /// HTML attributes for blockquote node. diff --git a/packages/plugins/preset-commonmark/src/node/bullet-list.ts b/packages/plugins/preset-commonmark/src/node/bullet-list.ts index 2b51e85c51d..d9ea4a9dd57 100644 --- a/packages/plugins/preset-commonmark/src/node/bullet-list.ts +++ b/packages/plugins/preset-commonmark/src/node/bullet-list.ts @@ -9,6 +9,7 @@ import { $nodeSchema, $useKeymap, } from '@milkdown/utils' + import { withMeta } from '../__internal__' /// HTML attributes for bullet list node. diff --git a/packages/plugins/preset-commonmark/src/node/code-block.ts b/packages/plugins/preset-commonmark/src/node/code-block.ts index 9e12ce48ae9..64eebbb7685 100644 --- a/packages/plugins/preset-commonmark/src/node/code-block.ts +++ b/packages/plugins/preset-commonmark/src/node/code-block.ts @@ -9,6 +9,7 @@ import { $nodeSchema, $useKeymap, } from '@milkdown/utils' + import { withMeta } from '../__internal__' /// HTML attributes for code block node. diff --git a/packages/plugins/preset-commonmark/src/node/doc.ts b/packages/plugins/preset-commonmark/src/node/doc.ts index 01429c0ce78..4304f6ffc37 100644 --- a/packages/plugins/preset-commonmark/src/node/doc.ts +++ b/packages/plugins/preset-commonmark/src/node/doc.ts @@ -1,4 +1,5 @@ import { $node } from '@milkdown/utils' + import { withMeta } from '../__internal__' /// The top-level document node. diff --git a/packages/plugins/preset-commonmark/src/node/hardbreak.ts b/packages/plugins/preset-commonmark/src/node/hardbreak.ts index 7a3a1dafcff..e59feae0b04 100644 --- a/packages/plugins/preset-commonmark/src/node/hardbreak.ts +++ b/packages/plugins/preset-commonmark/src/node/hardbreak.ts @@ -1,6 +1,7 @@ import { commandsCtx } from '@milkdown/core' import { Selection, TextSelection } from '@milkdown/prose/state' import { $command, $nodeAttr, $nodeSchema, $useKeymap } from '@milkdown/utils' + import { withMeta } from '../__internal__' /// HTML attributes for the hardbreak node. diff --git a/packages/plugins/preset-commonmark/src/node/heading.ts b/packages/plugins/preset-commonmark/src/node/heading.ts index 07b44276d95..bc6d8308b90 100644 --- a/packages/plugins/preset-commonmark/src/node/heading.ts +++ b/packages/plugins/preset-commonmark/src/node/heading.ts @@ -1,8 +1,9 @@ +import type { Node } from '@milkdown/prose/model' + import { commandsCtx, editorViewCtx } from '@milkdown/core' import { expectDomTypeError } from '@milkdown/exception' import { setBlockType } from '@milkdown/prose/commands' import { textblockTypeInputRule } from '@milkdown/prose/inputrules' -import type { Node } from '@milkdown/prose/model' import { $command, $ctx, @@ -11,6 +12,7 @@ import { $nodeSchema, $useKeymap, } from '@milkdown/utils' + import { serializeText, withMeta } from '../__internal__' import { paragraphSchema } from './paragraph' diff --git a/packages/plugins/preset-commonmark/src/node/hr.ts b/packages/plugins/preset-commonmark/src/node/hr.ts index a9a061cd9bf..27578e0fe66 100644 --- a/packages/plugins/preset-commonmark/src/node/hr.ts +++ b/packages/plugins/preset-commonmark/src/node/hr.ts @@ -1,6 +1,7 @@ import { InputRule } from '@milkdown/prose/inputrules' import { Selection } from '@milkdown/prose/state' import { $command, $inputRule, $nodeAttr, $nodeSchema } from '@milkdown/utils' + import { withMeta } from '../__internal__' import { paragraphSchema } from './paragraph' diff --git a/packages/plugins/preset-commonmark/src/node/html.ts b/packages/plugins/preset-commonmark/src/node/html.ts index c44987353fd..bd48fbff974 100644 --- a/packages/plugins/preset-commonmark/src/node/html.ts +++ b/packages/plugins/preset-commonmark/src/node/html.ts @@ -1,4 +1,5 @@ import { $nodeAttr, $nodeSchema } from '@milkdown/utils' + import { withMeta } from '../__internal__' export const htmlAttr = $nodeAttr('html') diff --git a/packages/plugins/preset-commonmark/src/node/image.ts b/packages/plugins/preset-commonmark/src/node/image.ts index a371642c6f1..1854d19aa5f 100644 --- a/packages/plugins/preset-commonmark/src/node/image.ts +++ b/packages/plugins/preset-commonmark/src/node/image.ts @@ -2,6 +2,7 @@ import { expectDomTypeError } from '@milkdown/exception' import { findSelectedNodeOfType } from '@milkdown/prose' import { InputRule } from '@milkdown/prose/inputrules' import { $command, $inputRule, $nodeAttr, $nodeSchema } from '@milkdown/utils' + import { withMeta } from '../__internal__' /// HTML attributes for image node. diff --git a/packages/plugins/preset-commonmark/src/node/list-item.ts b/packages/plugins/preset-commonmark/src/node/list-item.ts index 056b8a591df..a30e8b0835b 100644 --- a/packages/plugins/preset-commonmark/src/node/list-item.ts +++ b/packages/plugins/preset-commonmark/src/node/list-item.ts @@ -1,3 +1,5 @@ +import type { Ctx } from '@milkdown/ctx' + import { commandsCtx } from '@milkdown/core' import { expectDomTypeError } from '@milkdown/exception' import { @@ -5,9 +7,9 @@ import { sinkListItem, splitListItem, } from '@milkdown/prose/schema-list' -import { $command, $nodeAttr, $nodeSchema, $useKeymap } from '@milkdown/utils' import { type Command, TextSelection } from '@milkdown/prose/state' -import type { Ctx } from '@milkdown/ctx' +import { $command, $nodeAttr, $nodeSchema, $useKeymap } from '@milkdown/utils' + import { withMeta } from '../__internal__' /// HTML attributes for list item node. diff --git a/packages/plugins/preset-commonmark/src/node/ordered-list.ts b/packages/plugins/preset-commonmark/src/node/ordered-list.ts index 2bf66189875..97c441419f0 100644 --- a/packages/plugins/preset-commonmark/src/node/ordered-list.ts +++ b/packages/plugins/preset-commonmark/src/node/ordered-list.ts @@ -9,6 +9,7 @@ import { $nodeSchema, $useKeymap, } from '@milkdown/utils' + import { withMeta } from '../__internal__' /// HTML attributes for ordered list node. diff --git a/packages/plugins/preset-commonmark/src/node/paragraph.ts b/packages/plugins/preset-commonmark/src/node/paragraph.ts index fc7aad65a60..4cb35442998 100644 --- a/packages/plugins/preset-commonmark/src/node/paragraph.ts +++ b/packages/plugins/preset-commonmark/src/node/paragraph.ts @@ -1,9 +1,11 @@ +import type { Ctx } from '@milkdown/ctx' + import { commandsCtx } from '@milkdown/core' import { setBlockType } from '@milkdown/prose/commands' import { $command, $nodeAttr, $nodeSchema, $useKeymap } from '@milkdown/utils' + import { serializeText, withMeta } from '../__internal__' import { remarkPreserveEmptyLinePlugin } from '../plugin/remark-preserve-empty-line' -import type { Ctx } from '@milkdown/ctx' /// HTML attributes for paragraph node. export const paragraphAttr = $nodeAttr('paragraph') diff --git a/packages/plugins/preset-commonmark/src/node/text.ts b/packages/plugins/preset-commonmark/src/node/text.ts index 7ccb8e8d4c4..b1ea9d49805 100644 --- a/packages/plugins/preset-commonmark/src/node/text.ts +++ b/packages/plugins/preset-commonmark/src/node/text.ts @@ -1,4 +1,5 @@ import { $node } from '@milkdown/utils' + import { withMeta } from '../__internal__' /// The bottom-level node. diff --git a/packages/plugins/preset-commonmark/src/plugin/hardbreak-clear-mark-plugin.ts b/packages/plugins/preset-commonmark/src/plugin/hardbreak-clear-mark-plugin.ts index d7d2c6fd028..2480f409fd3 100644 --- a/packages/plugins/preset-commonmark/src/plugin/hardbreak-clear-mark-plugin.ts +++ b/packages/plugins/preset-commonmark/src/plugin/hardbreak-clear-mark-plugin.ts @@ -1,8 +1,9 @@ import { Plugin, PluginKey } from '@milkdown/prose/state' import { AddMarkStep, ReplaceStep } from '@milkdown/prose/transform' import { $prose } from '@milkdown/utils' -import { hardbreakSchema } from '../node' + import { withMeta } from '../__internal__' +import { hardbreakSchema } from '../node' /// This plugin is used to clear the marks around the hardbreak node. export const hardbreakClearMarkPlugin = $prose((ctx) => { diff --git a/packages/plugins/preset-commonmark/src/plugin/hardbreak-filter-plugin.ts b/packages/plugins/preset-commonmark/src/plugin/hardbreak-filter-plugin.ts index 24f8e4f032c..e7fcd815c8c 100644 --- a/packages/plugins/preset-commonmark/src/plugin/hardbreak-filter-plugin.ts +++ b/packages/plugins/preset-commonmark/src/plugin/hardbreak-filter-plugin.ts @@ -1,5 +1,6 @@ import { Plugin, PluginKey } from '@milkdown/prose/state' import { $ctx, $prose } from '@milkdown/utils' + import { withMeta } from '../__internal__' /// This slice contains the nodes that within which the hardbreak will be ignored. diff --git a/packages/plugins/preset-commonmark/src/plugin/inline-nodes-cursor-plugin.ts b/packages/plugins/preset-commonmark/src/plugin/inline-nodes-cursor-plugin.ts index 11e32fc1e59..917c19f5b77 100644 --- a/packages/plugins/preset-commonmark/src/plugin/inline-nodes-cursor-plugin.ts +++ b/packages/plugins/preset-commonmark/src/plugin/inline-nodes-cursor-plugin.ts @@ -1,6 +1,7 @@ import { Plugin, PluginKey } from '@milkdown/prose/state' import { Decoration, DecorationSet } from '@milkdown/prose/view' import { $prose } from '@milkdown/utils' + import { withMeta } from '../__internal__' /// This plugin is to solve the [chrome 98 bug](https://discuss.prosemirror.net/t/cursor-jumps-at-the-end-of-line-when-it-betweens-two-inline-nodes/4641). diff --git a/packages/plugins/preset-commonmark/src/plugin/remark-add-order-in-list-plugin.ts b/packages/plugins/preset-commonmark/src/plugin/remark-add-order-in-list-plugin.ts index 5321e82b898..cfe26926d02 100644 --- a/packages/plugins/preset-commonmark/src/plugin/remark-add-order-in-list-plugin.ts +++ b/packages/plugins/preset-commonmark/src/plugin/remark-add-order-in-list-plugin.ts @@ -1,5 +1,6 @@ import { $remark } from '@milkdown/utils' import { visit } from 'unist-util-visit' + import { withMeta } from '../__internal__' /// This plugin is used to add order in list for remark AST. diff --git a/packages/plugins/preset-commonmark/src/plugin/remark-html-transformer.ts b/packages/plugins/preset-commonmark/src/plugin/remark-html-transformer.ts index c5ecfa6b358..bdc45b7ea22 100644 --- a/packages/plugins/preset-commonmark/src/plugin/remark-html-transformer.ts +++ b/packages/plugins/preset-commonmark/src/plugin/remark-html-transformer.ts @@ -1,5 +1,7 @@ -import { $remark } from '@milkdown/utils' import type { Node } from '@milkdown/transformer' + +import { $remark } from '@milkdown/utils' + import { withMeta } from '../__internal__' const isParent = (node: Node): node is Node & { children: Node[] } => diff --git a/packages/plugins/preset-commonmark/src/plugin/remark-inline-link-plugin.ts b/packages/plugins/preset-commonmark/src/plugin/remark-inline-link-plugin.ts index bd7dbb0a0d9..169b003b0a3 100644 --- a/packages/plugins/preset-commonmark/src/plugin/remark-inline-link-plugin.ts +++ b/packages/plugins/preset-commonmark/src/plugin/remark-inline-link-plugin.ts @@ -1,5 +1,6 @@ import { $remark } from '@milkdown/utils' import remarkInlineLinks from 'remark-inline-links' + import { withMeta } from '../__internal__' /// This plugin wraps [remark-inline-links](https://github.com/remarkjs/remark-inline-links). diff --git a/packages/plugins/preset-commonmark/src/plugin/remark-line-break.ts b/packages/plugins/preset-commonmark/src/plugin/remark-line-break.ts index e565ccca5ce..6dac679d994 100644 --- a/packages/plugins/preset-commonmark/src/plugin/remark-line-break.ts +++ b/packages/plugins/preset-commonmark/src/plugin/remark-line-break.ts @@ -1,6 +1,8 @@ -import { $remark } from '@milkdown/utils' import type { Node } from '@milkdown/transformer' + +import { $remark } from '@milkdown/utils' import { visit } from 'unist-util-visit' + import { withMeta } from '../__internal__' /// This plugin is used to add inline line break for remark AST. diff --git a/packages/plugins/preset-commonmark/src/plugin/remark-marker-plugin.ts b/packages/plugins/preset-commonmark/src/plugin/remark-marker-plugin.ts index 3448202c966..ab8ea9f59d1 100644 --- a/packages/plugins/preset-commonmark/src/plugin/remark-marker-plugin.ts +++ b/packages/plugins/preset-commonmark/src/plugin/remark-marker-plugin.ts @@ -1,6 +1,8 @@ -import { $remark } from '@milkdown/utils' import type { Node } from '@milkdown/transformer' + +import { $remark } from '@milkdown/utils' import { visit } from 'unist-util-visit' + import { withMeta } from '../__internal__' /// This plugin is used to keep the marker (`_` and `*`) of emphasis and strong nodes. diff --git a/packages/plugins/preset-commonmark/src/plugin/remark-preserve-empty-line.ts b/packages/plugins/preset-commonmark/src/plugin/remark-preserve-empty-line.ts index 94bb2b7974b..2aeeafce560 100644 --- a/packages/plugins/preset-commonmark/src/plugin/remark-preserve-empty-line.ts +++ b/packages/plugins/preset-commonmark/src/plugin/remark-preserve-empty-line.ts @@ -1,6 +1,8 @@ import type { Node } from '@milkdown/transformer' -import { visit } from 'unist-util-visit' + import { $remark } from '@milkdown/utils' +import { visit } from 'unist-util-visit' + import { withMeta } from '../__internal__' function visitImage(ast: Node) { diff --git a/packages/plugins/preset-commonmark/src/plugin/sync-heading-id-plugin.ts b/packages/plugins/preset-commonmark/src/plugin/sync-heading-id-plugin.ts index f96a0fbc7d3..2feeebb54e5 100644 --- a/packages/plugins/preset-commonmark/src/plugin/sync-heading-id-plugin.ts +++ b/packages/plugins/preset-commonmark/src/plugin/sync-heading-id-plugin.ts @@ -1,8 +1,10 @@ -import { Plugin, PluginKey } from '@milkdown/prose/state' import type { EditorView } from '@milkdown/prose/view' + +import { Plugin, PluginKey } from '@milkdown/prose/state' import { $prose } from '@milkdown/utils' -import { headingIdGenerator, headingSchema } from '../node/heading' + import { withMeta } from '../__internal__' +import { headingIdGenerator, headingSchema } from '../node/heading' /// This plugin is used to sync the heading id when the heading content changes. /// It will use the `headingIdGenerator` to generate the id. diff --git a/packages/plugins/preset-commonmark/src/plugin/sync-list-order-plugin.ts b/packages/plugins/preset-commonmark/src/plugin/sync-list-order-plugin.ts index 64d8d1a3e88..1a4076a347e 100644 --- a/packages/plugins/preset-commonmark/src/plugin/sync-list-order-plugin.ts +++ b/packages/plugins/preset-commonmark/src/plugin/sync-list-order-plugin.ts @@ -1,11 +1,12 @@ +import type { EditorView } from '@milkdown/prose/view' + import { Plugin, PluginKey } from '@milkdown/prose/state' import { $prose } from '@milkdown/utils' -import type { EditorView } from '@milkdown/prose/view' -import { listItemSchema } from '../node/list-item' -import { orderedListSchema } from '../node/ordered-list' -import { bulletListSchema } from '../node' import { withMeta } from '../__internal__' +import { bulletListSchema } from '../node' +import { listItemSchema } from '../node/list-item' +import { orderedListSchema } from '../node/ordered-list' /// This plugin is used to keep the label of list item up to date in ordered list. export const syncListOrderPlugin = $prose((ctx) => { diff --git a/packages/plugins/preset-gfm/src/composed/inputrules.ts b/packages/plugins/preset-gfm/src/composed/inputrules.ts index 27b4c6347e6..c4520bbfae9 100644 --- a/packages/plugins/preset-gfm/src/composed/inputrules.ts +++ b/packages/plugins/preset-gfm/src/composed/inputrules.ts @@ -1,6 +1,7 @@ import type { MilkdownPlugin } from '@milkdown/ctx' -import { insertTableInputRule, wrapInTaskListInputRule } from '../node' + import { strikethroughInputRule } from '../mark' +import { insertTableInputRule, wrapInTaskListInputRule } from '../node' /// @internal export const inputRules: MilkdownPlugin[] = [ diff --git a/packages/plugins/preset-gfm/src/composed/keymap.ts b/packages/plugins/preset-gfm/src/composed/keymap.ts index 02a301c76f3..e8ea6dede39 100644 --- a/packages/plugins/preset-gfm/src/composed/keymap.ts +++ b/packages/plugins/preset-gfm/src/composed/keymap.ts @@ -1,4 +1,5 @@ import type { MilkdownPlugin } from '@milkdown/ctx' + import { strikethroughKeymap } from '../mark' import { tableKeymap } from '../node' diff --git a/packages/plugins/preset-gfm/src/composed/plugins.ts b/packages/plugins/preset-gfm/src/composed/plugins.ts index 7c11fcd3171..92b2ab6ce1e 100644 --- a/packages/plugins/preset-gfm/src/composed/plugins.ts +++ b/packages/plugins/preset-gfm/src/composed/plugins.ts @@ -1,4 +1,5 @@ import type { MilkdownPlugin } from '@milkdown/ctx' + import { autoInsertSpanPlugin, keepTableAlignPlugin, diff --git a/packages/plugins/preset-gfm/src/composed/schema.ts b/packages/plugins/preset-gfm/src/composed/schema.ts index 160b84a284f..09f0d1b94b6 100644 --- a/packages/plugins/preset-gfm/src/composed/schema.ts +++ b/packages/plugins/preset-gfm/src/composed/schema.ts @@ -1,4 +1,5 @@ import type { MilkdownPlugin } from '@milkdown/ctx' + import { strikethroughAttr, strikethroughSchema } from '../mark' import { extendListItemSchemaForTask, diff --git a/packages/plugins/preset-gfm/src/mark/strike-through.ts b/packages/plugins/preset-gfm/src/mark/strike-through.ts index 21b1887251c..3b4ddae3796 100644 --- a/packages/plugins/preset-gfm/src/mark/strike-through.ts +++ b/packages/plugins/preset-gfm/src/mark/strike-through.ts @@ -1,4 +1,6 @@ import { commandsCtx } from '@milkdown/core' +import { markRule } from '@milkdown/prose' +import { toggleMark } from '@milkdown/prose/commands' import { $command, $inputRule, @@ -6,8 +8,7 @@ import { $markSchema, $useKeymap, } from '@milkdown/utils' -import { toggleMark } from '@milkdown/prose/commands' -import { markRule } from '@milkdown/prose' + import { withMeta } from '../__internal__' /// HTML attributes for the strikethrough mark. diff --git a/packages/plugins/preset-gfm/src/node/footnote/definition.ts b/packages/plugins/preset-gfm/src/node/footnote/definition.ts index 85817635147..c364f3c7abf 100644 --- a/packages/plugins/preset-gfm/src/node/footnote/definition.ts +++ b/packages/plugins/preset-gfm/src/node/footnote/definition.ts @@ -1,5 +1,6 @@ import { expectDomTypeError } from '@milkdown/exception' import { $nodeSchema } from '@milkdown/utils' + import { withMeta } from '../../__internal__' const id = 'footnote_definition' diff --git a/packages/plugins/preset-gfm/src/node/footnote/reference.ts b/packages/plugins/preset-gfm/src/node/footnote/reference.ts index 80049360dcb..dbfb424f131 100644 --- a/packages/plugins/preset-gfm/src/node/footnote/reference.ts +++ b/packages/plugins/preset-gfm/src/node/footnote/reference.ts @@ -1,5 +1,6 @@ import { expectDomTypeError } from '@milkdown/exception' import { $nodeSchema } from '@milkdown/utils' + import { withMeta } from '../../__internal__' const id = 'footnote_reference' diff --git a/packages/plugins/preset-gfm/src/node/table/command.ts b/packages/plugins/preset-gfm/src/node/table/command.ts index b859fdc96fa..f40334d741a 100644 --- a/packages/plugins/preset-gfm/src/node/table/command.ts +++ b/packages/plugins/preset-gfm/src/node/table/command.ts @@ -1,4 +1,5 @@ import { paragraphSchema } from '@milkdown/preset-commonmark' +import { findParentNodeType } from '@milkdown/prose' import { Selection } from '@milkdown/prose/state' import { CellSelection, @@ -13,8 +14,9 @@ import { setCellAttr, } from '@milkdown/prose/tables' import { $command } from '@milkdown/utils' -import { findParentNodeType } from '@milkdown/prose' + import { withMeta } from '../../__internal__' +import { tableSchema } from './schema' import { addRowWithAlignment, createTable, @@ -24,7 +26,6 @@ import { selectRow, selectTable, } from './utils' -import { tableSchema } from './schema' /// A command for moving cursor to previous cell. export const goToPrevTableCellCommand = $command( diff --git a/packages/plugins/preset-gfm/src/node/table/input.ts b/packages/plugins/preset-gfm/src/node/table/input.ts index 5a6d0e1595a..cca24a5f767 100644 --- a/packages/plugins/preset-gfm/src/node/table/input.ts +++ b/packages/plugins/preset-gfm/src/node/table/input.ts @@ -2,14 +2,15 @@ import { commandsCtx } from '@milkdown/core' import { InputRule } from '@milkdown/prose/inputrules' import { TextSelection } from '@milkdown/prose/state' import { $inputRule, $useKeymap } from '@milkdown/utils' + import { withMeta } from '../../__internal__' -import { createTable } from './utils' -import { tableSchema } from './schema' import { exitTable, goToNextTableCellCommand, goToPrevTableCellCommand, } from './command' +import { tableSchema } from './schema' +import { createTable } from './utils' /// A input rule for creating table. /// For example, `|2x2|` will create a 2x2 table. diff --git a/packages/plugins/preset-gfm/src/node/table/schema.ts b/packages/plugins/preset-gfm/src/node/table/schema.ts index 576377d0b00..9238027d674 100644 --- a/packages/plugins/preset-gfm/src/node/table/schema.ts +++ b/packages/plugins/preset-gfm/src/node/table/schema.ts @@ -1,7 +1,9 @@ +import type { NodeType } from '@milkdown/prose/model' +import type { MarkdownNode } from '@milkdown/transformer' + import { tableNodes } from '@milkdown/prose/tables' import { $nodeSchema } from '@milkdown/utils' -import type { MarkdownNode } from '@milkdown/transformer' -import type { NodeType } from '@milkdown/prose/model' + import { withMeta } from '../../__internal__' const originalSchema = tableNodes({ diff --git a/packages/plugins/preset-gfm/src/node/table/utils.ts b/packages/plugins/preset-gfm/src/node/table/utils.ts index 337ee8413d9..286dcfa0159 100644 --- a/packages/plugins/preset-gfm/src/node/table/utils.ts +++ b/packages/plugins/preset-gfm/src/node/table/utils.ts @@ -1,11 +1,12 @@ +import type { Ctx } from '@milkdown/ctx' import type { ContentNodeWithPos } from '@milkdown/prose' -import { cloneTr, findParentNodeClosestToPos } from '@milkdown/prose' import type { Node, ResolvedPos } from '@milkdown/prose/model' import type { Selection, Transaction } from '@milkdown/prose/state' import type { TableRect } from '@milkdown/prose/tables' + +import { cloneTr, findParentNodeClosestToPos } from '@milkdown/prose' import { CellSelection, TableMap } from '@milkdown/prose/tables' -import type { Ctx } from '@milkdown/ctx' import { tableCellSchema, tableHeaderRowSchema, diff --git a/packages/plugins/preset-gfm/src/node/task-list-item.ts b/packages/plugins/preset-gfm/src/node/task-list-item.ts index 9f5369e348e..6bdc89b3833 100644 --- a/packages/plugins/preset-gfm/src/node/task-list-item.ts +++ b/packages/plugins/preset-gfm/src/node/task-list-item.ts @@ -2,6 +2,7 @@ import { expectDomTypeError } from '@milkdown/exception' import { listItemSchema } from '@milkdown/preset-commonmark' import { InputRule } from '@milkdown/prose/inputrules' import { $inputRule } from '@milkdown/utils' + import { withMeta } from '../__internal__' /// This schema extends the [list item](/preset-commonmark#list-item) schema and add task list support for it. diff --git a/packages/plugins/preset-gfm/src/plugin/auto-insert-span-plugin.ts b/packages/plugins/preset-gfm/src/plugin/auto-insert-span-plugin.ts index 2a0da366261..bfb2e8a92cb 100644 --- a/packages/plugins/preset-gfm/src/plugin/auto-insert-span-plugin.ts +++ b/packages/plugins/preset-gfm/src/plugin/auto-insert-span-plugin.ts @@ -1,5 +1,6 @@ import { $prose } from '@milkdown/utils' import { imeSpan } from 'prosemirror-safari-ime-span' + import { withMeta } from '../__internal__' /// This plugin is used to fix the bug of IME composing in table in Safari browser. diff --git a/packages/plugins/preset-gfm/src/plugin/column-resizing-plugin.ts b/packages/plugins/preset-gfm/src/plugin/column-resizing-plugin.ts index 1a0abb3e6fc..2a5d73d9e07 100644 --- a/packages/plugins/preset-gfm/src/plugin/column-resizing-plugin.ts +++ b/packages/plugins/preset-gfm/src/plugin/column-resizing-plugin.ts @@ -1,5 +1,6 @@ import { columnResizing } from '@milkdown/prose/tables' import { $prose } from '@milkdown/utils' + import { withMeta } from '../__internal__' /// This plugin is wrapping the `columnResizing` plugin from [prosemirror-tables](https://github.com/ProseMirror/prosemirror-tables). diff --git a/packages/plugins/preset-gfm/src/plugin/keep-table-align-plugin.ts b/packages/plugins/preset-gfm/src/plugin/keep-table-align-plugin.ts index 6e73760e3dc..f9d2284d723 100644 --- a/packages/plugins/preset-gfm/src/plugin/keep-table-align-plugin.ts +++ b/packages/plugins/preset-gfm/src/plugin/keep-table-align-plugin.ts @@ -1,7 +1,9 @@ +import type { Node } from '@milkdown/prose/model' import type { Transaction } from '@milkdown/prose/state' + import { Plugin, PluginKey } from '@milkdown/prose/state' -import type { Node } from '@milkdown/prose/model' import { $prose } from '@milkdown/utils' + import { withMeta } from '../__internal__' const pluginKey = new PluginKey('MILKDOWN_KEEP_TABLE_ALIGN_PLUGIN') diff --git a/packages/plugins/preset-gfm/src/plugin/remark-gfm-plugin.ts b/packages/plugins/preset-gfm/src/plugin/remark-gfm-plugin.ts index a643bbc2535..7f5e193a074 100644 --- a/packages/plugins/preset-gfm/src/plugin/remark-gfm-plugin.ts +++ b/packages/plugins/preset-gfm/src/plugin/remark-gfm-plugin.ts @@ -1,7 +1,9 @@ import type { $Remark } from '@milkdown/utils' -import { $remark } from '@milkdown/utils' import type { Options } from 'remark-gfm' + +import { $remark } from '@milkdown/utils' import remarkGFM from 'remark-gfm' + import { withMeta } from '../__internal__' /// This plugin is wrapping the [remark-gfm](https://github.com/remarkjs/remark-gfm). diff --git a/packages/plugins/preset-gfm/src/plugin/table-editing-plugin.ts b/packages/plugins/preset-gfm/src/plugin/table-editing-plugin.ts index 636318dc56c..d5064eb16c1 100644 --- a/packages/plugins/preset-gfm/src/plugin/table-editing-plugin.ts +++ b/packages/plugins/preset-gfm/src/plugin/table-editing-plugin.ts @@ -1,5 +1,6 @@ import { tableEditing } from '@milkdown/prose/tables' import { $prose } from '@milkdown/utils' + import { withMeta } from '../__internal__' /// This plugin is wrapping the `tableEditing` plugin from [prosemirror-tables](https://github.com/ProseMirror/prosemirror-tables). diff --git a/packages/plugins/theme-nord/src/index.ts b/packages/plugins/theme-nord/src/index.ts index c5d4df516b7..b8c04947da8 100644 --- a/packages/plugins/theme-nord/src/index.ts +++ b/packages/plugins/theme-nord/src/index.ts @@ -1,9 +1,10 @@ import type { Ctx } from '@milkdown/ctx' + import { editorViewOptionsCtx } from '@milkdown/core' import clsx from 'clsx' - import '@milkdown/prose/view/style/prosemirror.css' import '@milkdown/prose/tables/style/tables.css' + import './style.css' export function nord(ctx: Ctx): void { diff --git a/packages/plugins/theme-nord/vite.config.ts b/packages/plugins/theme-nord/vite.config.ts index c92b47890e6..e476ceaff6c 100644 --- a/packages/plugins/theme-nord/vite.config.ts +++ b/packages/plugins/theme-nord/vite.config.ts @@ -1,6 +1,7 @@ import type { LibraryOptions } from 'vite' -import tailwindcss from '@tailwindcss/vite' + import { pluginViteConfig } from '@milkdown/dev/vite' +import tailwindcss from '@tailwindcss/vite' export default pluginViteConfig(import.meta.url, { plugins: [tailwindcss()], diff --git a/packages/prose/src/toolkit/input-rules/custom-input-rules.ts b/packages/prose/src/toolkit/input-rules/custom-input-rules.ts index 0051e1b216c..29c90927f10 100644 --- a/packages/prose/src/toolkit/input-rules/custom-input-rules.ts +++ b/packages/prose/src/toolkit/input-rules/custom-input-rules.ts @@ -1,8 +1,9 @@ import type { InputRule } from '../../inputrules' import type { EditorState, TextSelection, Transaction } from '../../state' -import { Plugin, PluginKey } from '../../state' import type { EditorView } from '../../view' +import { Plugin, PluginKey } from '../../state' + function run( view: EditorView, from: number, diff --git a/packages/prose/src/toolkit/input-rules/mark-rule.ts b/packages/prose/src/toolkit/input-rules/mark-rule.ts index 299571f6198..2c662d9df8b 100644 --- a/packages/prose/src/toolkit/input-rules/mark-rule.ts +++ b/packages/prose/src/toolkit/input-rules/mark-rule.ts @@ -1,7 +1,8 @@ -import { InputRule } from '../../inputrules' import type { Mark, MarkType } from '../../model' import type { Captured, Options } from './common' +import { InputRule } from '../../inputrules' + /// Create an input rule for a mark. export function markRule( regexp: RegExp, diff --git a/packages/prose/src/toolkit/input-rules/node-rule.ts b/packages/prose/src/toolkit/input-rules/node-rule.ts index 97d9522201f..a7c30e521f2 100644 --- a/packages/prose/src/toolkit/input-rules/node-rule.ts +++ b/packages/prose/src/toolkit/input-rules/node-rule.ts @@ -1,7 +1,8 @@ -import { InputRule } from '../../inputrules' import type { NodeType } from '../../model' import type { Captured, Options } from './common' +import { InputRule } from '../../inputrules' + /// Create an input rule for a node. export function nodeRule( regexp: RegExp, diff --git a/packages/prose/src/toolkit/prose/selection.ts b/packages/prose/src/toolkit/prose/selection.ts index 7e404537dde..ec0974e0da2 100644 --- a/packages/prose/src/toolkit/prose/selection.ts +++ b/packages/prose/src/toolkit/prose/selection.ts @@ -1,8 +1,9 @@ import type { NodeType, Node as ProseNode, ResolvedPos } from '../../model' import type { Selection } from '../../state' +import type { Predicate } from './types' + import { NodeSelection } from '../../state' import { equalNodeType } from './helper' -import type { Predicate } from './types' export interface ContentNodeWithPos { pos: number diff --git a/packages/transformer/src/parser/stack-element.spec.ts b/packages/transformer/src/parser/stack-element.spec.ts index 7726ad15d94..422918f660e 100644 --- a/packages/transformer/src/parser/stack-element.spec.ts +++ b/packages/transformer/src/parser/stack-element.spec.ts @@ -1,4 +1,5 @@ import { expect, it } from 'vitest' + import { ParserStackElement } from './stack-element' it('parser-stack-element', () => { diff --git a/packages/transformer/src/parser/stack-element.ts b/packages/transformer/src/parser/stack-element.ts index 82bfb64eb3a..600819533ca 100644 --- a/packages/transformer/src/parser/stack-element.ts +++ b/packages/transformer/src/parser/stack-element.ts @@ -1,4 +1,5 @@ import type { Attrs, Node, NodeType } from '@milkdown/prose/model' + import { StackElement } from '../utility' export class ParserStackElement extends StackElement { diff --git a/packages/transformer/src/parser/state.spec.ts b/packages/transformer/src/parser/state.spec.ts index a14a39599cc..afe91489865 100644 --- a/packages/transformer/src/parser/state.spec.ts +++ b/packages/transformer/src/parser/state.spec.ts @@ -1,5 +1,7 @@ import type { MarkType, NodeType, Schema } from '@milkdown/prose/model' + import { describe, expect, it, vi } from 'vitest' + import { ParserState } from './state' const docNodeType = { diff --git a/packages/transformer/src/parser/state.ts b/packages/transformer/src/parser/state.ts index 752d99cf61a..d6df07f84f2 100644 --- a/packages/transformer/src/parser/state.ts +++ b/packages/transformer/src/parser/state.ts @@ -5,22 +5,24 @@ import type { NodeType, Schema, } from '@milkdown/prose/model' + import { createNodeInParserFail, parserMatchError, stackOverFlow, } from '@milkdown/exception' import { Mark } from '@milkdown/prose/model' + import type { MarkSchema, MarkdownNode, NodeSchema, RemarkParser, } from '../utility' -import { Stack } from '../utility' +import type { Parser } from './types' +import { Stack } from '../utility' import { ParserStackElement } from './stack-element' -import type { Parser } from './types' /// A state machine for parser. Transform remark AST into prosemirror state. export class ParserState extends Stack { diff --git a/packages/transformer/src/parser/types.ts b/packages/transformer/src/parser/types.ts index 73ea7d8bfdc..387e29c0642 100644 --- a/packages/transformer/src/parser/types.ts +++ b/packages/transformer/src/parser/types.ts @@ -1,6 +1,6 @@ import type { MarkType, Node, NodeType } from '@milkdown/prose/model' -import type { MarkdownNode } from '../utility/types' +import type { MarkdownNode } from '../utility/types' import type { ParserState } from './state' /// The parser type which is used to transform markdown text into prosemirror node. diff --git a/packages/transformer/src/serializer/stack-element.spec.ts b/packages/transformer/src/serializer/stack-element.spec.ts index 5344fd872a0..049fc901fec 100644 --- a/packages/transformer/src/serializer/stack-element.spec.ts +++ b/packages/transformer/src/serializer/stack-element.spec.ts @@ -1,4 +1,5 @@ import { expect, it } from 'vitest' + import { SerializerStackElement } from './stack-element' it('serializer-stack-element', () => { diff --git a/packages/transformer/src/serializer/stack-element.ts b/packages/transformer/src/serializer/stack-element.ts index 34b6ee18e41..7a8f229dbd2 100644 --- a/packages/transformer/src/serializer/stack-element.ts +++ b/packages/transformer/src/serializer/stack-element.ts @@ -1,5 +1,6 @@ import type { MarkdownNode } from '..' import type { JSONRecord } from '../utility' + import { StackElement } from '../utility' export class SerializerStackElement extends StackElement { diff --git a/packages/transformer/src/serializer/state.spec.ts b/packages/transformer/src/serializer/state.spec.ts index a2ca1b3aedb..4c12c070215 100644 --- a/packages/transformer/src/serializer/state.spec.ts +++ b/packages/transformer/src/serializer/state.spec.ts @@ -1,5 +1,7 @@ import type { Mark, Schema } from '@milkdown/prose/model' + import { describe, expect, it } from 'vitest' + import { SerializerState } from './state' const boldMark = { diff --git a/packages/transformer/src/serializer/state.ts b/packages/transformer/src/serializer/state.ts index e936e5b651f..446fc89754f 100644 --- a/packages/transformer/src/serializer/state.ts +++ b/packages/transformer/src/serializer/state.ts @@ -1,4 +1,3 @@ -import { serializerMatchError } from '@milkdown/exception' import type { Fragment, MarkType, @@ -6,6 +5,8 @@ import type { NodeType, Schema, } from '@milkdown/prose/model' + +import { serializerMatchError } from '@milkdown/exception' import { Mark } from '@milkdown/prose/model' import type { @@ -16,9 +17,10 @@ import type { RemarkParser, Root, } from '../utility' +import type { Serializer } from './types' + import { Stack } from '../utility' import { SerializerStackElement } from './stack-element' -import type { Serializer } from './types' const isFragment = (x: Node | Fragment): x is Fragment => Object.prototype.hasOwnProperty.call(x, 'size') diff --git a/packages/transformer/src/utility/stack.spec.ts b/packages/transformer/src/utility/stack.spec.ts index be6716bf3f0..8d2e4a03c9d 100644 --- a/packages/transformer/src/utility/stack.spec.ts +++ b/packages/transformer/src/utility/stack.spec.ts @@ -1,4 +1,5 @@ import { expect, it } from 'vitest' + import { Stack } from './stack' it('stack', () => { diff --git a/packages/transformer/src/utility/types.ts b/packages/transformer/src/utility/types.ts index 0a405d6ada1..535560a855e 100644 --- a/packages/transformer/src/utility/types.ts +++ b/packages/transformer/src/utility/types.ts @@ -1,6 +1,7 @@ import type { MarkSpec, NodeSpec } from '@milkdown/prose/model' import type { remark } from 'remark' import type { Plugin, Transformer } from 'unified' + import type { MarkParserSpec, NodeParserSpec } from '../parser/types' import type { MarkSerializerSpec, diff --git a/packages/utils/src/composable/$command.ts b/packages/utils/src/composable/$command.ts index 3c70087c8c8..49219dd9c5a 100644 --- a/packages/utils/src/composable/$command.ts +++ b/packages/utils/src/composable/$command.ts @@ -1,5 +1,6 @@ import type { Cmd, CmdKey } from '@milkdown/core' import type { Ctx, MilkdownPlugin } from '@milkdown/ctx' + import { CommandsReady, commandsCtx, diff --git a/packages/utils/src/composable/$ctx.ts b/packages/utils/src/composable/$ctx.ts index 08b479447a8..943f6d50640 100644 --- a/packages/utils/src/composable/$ctx.ts +++ b/packages/utils/src/composable/$ctx.ts @@ -1,4 +1,5 @@ import type { MilkdownPlugin, SliceType } from '@milkdown/ctx' + import { createSlice } from '@milkdown/ctx' /// @internal diff --git a/packages/utils/src/composable/$input-rule.ts b/packages/utils/src/composable/$input-rule.ts index 1e72adebeb5..ebcc060931b 100644 --- a/packages/utils/src/composable/$input-rule.ts +++ b/packages/utils/src/composable/$input-rule.ts @@ -1,7 +1,8 @@ import type { Ctx, MilkdownPlugin } from '@milkdown/ctx' -import { SchemaReady, editorStateTimerCtx, inputRulesCtx } from '@milkdown/core' import type { InputRule } from '@milkdown/prose/inputrules' +import { SchemaReady, editorStateTimerCtx, inputRulesCtx } from '@milkdown/core' + import { addTimer } from './utils' /// @internal diff --git a/packages/utils/src/composable/$mark.ts b/packages/utils/src/composable/$mark.ts index 0bdbed3b29d..fbb005f74a5 100644 --- a/packages/utils/src/composable/$mark.ts +++ b/packages/utils/src/composable/$mark.ts @@ -1,8 +1,9 @@ import type { Ctx, MilkdownPlugin } from '@milkdown/ctx' +import type { MarkType } from '@milkdown/prose/model' import type { MarkSchema } from '@milkdown/transformer' + import { marksCtx, schemaCtx, schemaTimerCtx } from '@milkdown/core' import { missingMarkInSchema } from '@milkdown/exception' -import type { MarkType } from '@milkdown/prose/model' import { addTimer } from './utils' diff --git a/packages/utils/src/composable/$node.ts b/packages/utils/src/composable/$node.ts index ece5d9f787c..c70ebb1ac82 100644 --- a/packages/utils/src/composable/$node.ts +++ b/packages/utils/src/composable/$node.ts @@ -1,9 +1,10 @@ import type { Ctx, MilkdownPlugin } from '@milkdown/ctx' +import type { NodeType } from '@milkdown/prose/model' +import type { NodeSchema } from '@milkdown/transformer' + import { nodesCtx, schemaCtx, schemaTimerCtx } from '@milkdown/core' import { missingNodeInSchema } from '@milkdown/exception' -import type { NodeType } from '@milkdown/prose/model' -import type { NodeSchema } from '@milkdown/transformer' import { addTimer } from './utils' /// @internal diff --git a/packages/utils/src/composable/$prose.ts b/packages/utils/src/composable/$prose.ts index 2b687c3501a..b441f986802 100644 --- a/packages/utils/src/composable/$prose.ts +++ b/packages/utils/src/composable/$prose.ts @@ -1,10 +1,11 @@ import type { Ctx, MilkdownPlugin } from '@milkdown/ctx' +import type { Plugin, PluginKey } from '@milkdown/prose/state' + import { SchemaReady, editorStateTimerCtx, prosePluginsCtx, } from '@milkdown/core' -import type { Plugin, PluginKey } from '@milkdown/prose/state' import { addTimer } from './utils' diff --git a/packages/utils/src/composable/$shortcut.ts b/packages/utils/src/composable/$shortcut.ts index fc04fb80dca..c8cbe749997 100644 --- a/packages/utils/src/composable/$shortcut.ts +++ b/packages/utils/src/composable/$shortcut.ts @@ -1,11 +1,12 @@ import type { Ctx, MilkdownPlugin } from '@milkdown/ctx' +import type { Command } from '@milkdown/prose/state' + import { SchemaReady, editorStateTimerCtx, prosePluginsCtx, } from '@milkdown/core' import { keymap } from '@milkdown/prose/keymap' -import type { Command } from '@milkdown/prose/state' import { addTimer } from './utils' diff --git a/packages/utils/src/composable/$view.ts b/packages/utils/src/composable/$view.ts index 1e8cd3e7bf8..e2420dc9a98 100644 --- a/packages/utils/src/composable/$view.ts +++ b/packages/utils/src/composable/$view.ts @@ -1,4 +1,9 @@ import type { Ctx, MilkdownPlugin } from '@milkdown/ctx' +import type { + MarkViewConstructor, + NodeViewConstructor, +} from '@milkdown/prose/view' + import { SchemaReady, editorViewTimerCtx, @@ -6,14 +11,11 @@ import { nodeViewCtx, } from '@milkdown/core' import { NodeType } from '@milkdown/prose/model' -import type { - MarkViewConstructor, - NodeViewConstructor, -} from '@milkdown/prose/view' -import { addTimer } from './utils' import type { $Mark, $Node } from '.' +import { addTimer } from './utils' + /// @internal export type $View< T extends $Node | $Mark, diff --git a/packages/utils/src/composable/composed/$attr.ts b/packages/utils/src/composable/composed/$attr.ts index 9387e8e7baf..63bc230026f 100644 --- a/packages/utils/src/composable/composed/$attr.ts +++ b/packages/utils/src/composable/composed/$attr.ts @@ -1,5 +1,7 @@ import type { Mark, Node } from '@milkdown/prose/model' + import type { $Ctx } from '../$ctx' + import { $ctx } from '../$ctx' /// @internal diff --git a/packages/utils/src/composable/composed/$mark-schema.ts b/packages/utils/src/composable/composed/$mark-schema.ts index 678d9661e23..0ee78d0eb40 100644 --- a/packages/utils/src/composable/composed/$mark-schema.ts +++ b/packages/utils/src/composable/composed/$mark-schema.ts @@ -1,9 +1,12 @@ import type { Ctx, MilkdownPlugin } from '@milkdown/ctx' -import { marksCtx } from '@milkdown/core' import type { MarkSchema } from '@milkdown/transformer' + +import { marksCtx } from '@milkdown/core' + import type { $Ctx } from '../$ctx' -import { $ctx } from '../$ctx' import type { $Mark } from '../$mark' + +import { $ctx } from '../$ctx' import { $mark } from '../$mark' /// @internal diff --git a/packages/utils/src/composable/composed/$node-schema.ts b/packages/utils/src/composable/composed/$node-schema.ts index f05cf4b5002..9dd41051b92 100644 --- a/packages/utils/src/composable/composed/$node-schema.ts +++ b/packages/utils/src/composable/composed/$node-schema.ts @@ -1,9 +1,12 @@ import type { Ctx, MilkdownPlugin } from '@milkdown/ctx' -import { nodesCtx } from '@milkdown/core' import type { NodeSchema } from '@milkdown/transformer' + +import { nodesCtx } from '@milkdown/core' + import type { $Ctx } from '../$ctx' -import { $ctx } from '../$ctx' import type { $Node } from '../$node' + +import { $ctx } from '../$ctx' import { $node } from '../$node' /// @internal diff --git a/packages/utils/src/composable/composed/$remark.ts b/packages/utils/src/composable/composed/$remark.ts index f68e2944a25..c51c15c6861 100644 --- a/packages/utils/src/composable/composed/$remark.ts +++ b/packages/utils/src/composable/composed/$remark.ts @@ -1,8 +1,10 @@ import type { Ctx, MilkdownPlugin } from '@milkdown/ctx' +import type { RemarkPlugin, RemarkPluginRaw } from '@milkdown/transformer' + import { InitReady, remarkPluginsCtx } from '@milkdown/core' -import type { RemarkPlugin, RemarkPluginRaw } from '@milkdown/transformer' import type { $Ctx } from '../$ctx' + import { $ctx } from '../$ctx' /// @internal diff --git a/packages/utils/src/composable/composed/$user-keymap.ts b/packages/utils/src/composable/composed/$user-keymap.ts index 35aed35d80c..0528def0efd 100644 --- a/packages/utils/src/composable/composed/$user-keymap.ts +++ b/packages/utils/src/composable/composed/$user-keymap.ts @@ -1,8 +1,10 @@ import type { Ctx, SliceType } from '@milkdown/ctx' import type { Command } from '@milkdown/prose/state' + import type { $Ctx } from '../$ctx' -import { $ctx } from '../$ctx' import type { $Shortcut, Keymap } from '../$shortcut' + +import { $ctx } from '../$ctx' import { $shortcut } from '../$shortcut' /// @internal diff --git a/packages/utils/src/composable/utils.ts b/packages/utils/src/composable/utils.ts index 5168c7bbdf2..e95c44d96fb 100644 --- a/packages/utils/src/composable/utils.ts +++ b/packages/utils/src/composable/utils.ts @@ -5,6 +5,7 @@ import type { SliceType, TimerType, } from '@milkdown/ctx' + import { createTimer } from '@milkdown/ctx' import { customAlphabet } from 'nanoid' @@ -47,7 +48,12 @@ export function addTimer< return () => { ctx.update(injectTo, (x) => x.filter((y) => y !== timer)) ctx.clearTimer(timer) - cleanup?.() + if (cleanup) { + const result = cleanup() + if (result && 'then' in result) { + result.catch(console.error) + } + } } } } diff --git a/packages/utils/src/macro/call-command.ts b/packages/utils/src/macro/call-command.ts index 7e46529d328..aa907189d4a 100644 --- a/packages/utils/src/macro/call-command.ts +++ b/packages/utils/src/macro/call-command.ts @@ -1,7 +1,8 @@ import type { CmdKey } from '@milkdown/core' -import { commandsCtx } from '@milkdown/core' import type { Ctx } from '@milkdown/ctx' +import { commandsCtx } from '@milkdown/core' + type InferParams = T extends CmdKey ? U : never /// Call a command. You can pass the command key and the payload to the macro. diff --git a/packages/utils/src/macro/force-update.ts b/packages/utils/src/macro/force-update.ts index 893e6dbfc84..0027bd5629c 100644 --- a/packages/utils/src/macro/force-update.ts +++ b/packages/utils/src/macro/force-update.ts @@ -1,4 +1,5 @@ import type { Ctx } from '@milkdown/ctx' + import { editorViewCtx } from '@milkdown/core' /// Force update the editor. diff --git a/packages/utils/src/macro/get-html.ts b/packages/utils/src/macro/get-html.ts index fa92d4b9e24..5f50c75c668 100644 --- a/packages/utils/src/macro/get-html.ts +++ b/packages/utils/src/macro/get-html.ts @@ -1,4 +1,5 @@ import type { Ctx } from '@milkdown/ctx' + import { editorViewCtx, schemaCtx } from '@milkdown/core' import { DOMSerializer } from '@milkdown/prose/model' diff --git a/packages/utils/src/macro/get-markdown.ts b/packages/utils/src/macro/get-markdown.ts index f923692ce84..3751eb49ac5 100644 --- a/packages/utils/src/macro/get-markdown.ts +++ b/packages/utils/src/macro/get-markdown.ts @@ -1,4 +1,5 @@ import type { Ctx } from '@milkdown/ctx' + import { editorViewCtx, serializerCtx } from '@milkdown/core' /// Get content of the editor as markdown string. diff --git a/packages/utils/src/macro/insert.ts b/packages/utils/src/macro/insert.ts index ef615a80fd8..6654bf49bcf 100644 --- a/packages/utils/src/macro/insert.ts +++ b/packages/utils/src/macro/insert.ts @@ -1,4 +1,5 @@ import type { Ctx } from '@milkdown/ctx' + import { editorViewCtx, parserCtx } from '@milkdown/core' import { Slice } from '@milkdown/prose/model' diff --git a/packages/utils/src/macro/outline.ts b/packages/utils/src/macro/outline.ts index 65deda65b63..aa6199523ce 100644 --- a/packages/utils/src/macro/outline.ts +++ b/packages/utils/src/macro/outline.ts @@ -1,4 +1,5 @@ import type { Ctx } from '@milkdown/ctx' + import { editorViewCtx } from '@milkdown/core' /// Get outline of the editor. diff --git a/packages/utils/src/macro/replace-all.ts b/packages/utils/src/macro/replace-all.ts index b07a48def72..4c84e0cd01f 100644 --- a/packages/utils/src/macro/replace-all.ts +++ b/packages/utils/src/macro/replace-all.ts @@ -1,4 +1,5 @@ import type { Ctx } from '@milkdown/ctx' + import { editorStateOptionsCtx, editorViewCtx, diff --git a/packages/utils/src/macro/set-attr.ts b/packages/utils/src/macro/set-attr.ts index 89b91c9a983..3edd0ef7e44 100644 --- a/packages/utils/src/macro/set-attr.ts +++ b/packages/utils/src/macro/set-attr.ts @@ -1,7 +1,8 @@ import type { Ctx } from '@milkdown/ctx' -import { editorViewCtx } from '@milkdown/core' import type { Attrs } from '@milkdown/prose/model' +import { editorViewCtx } from '@milkdown/core' + /// Set the attributes of the node at the given position. export function setAttr(pos: number, update: (prevAttrs: Attrs) => Attrs) { return (ctx: Ctx) => { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c01f6af5598..ce3832f7249 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -82,6 +82,9 @@ importers: '@types/rollup-plugin-auto-external': specifier: ^2.0.2 version: 2.0.5 + '@typescript-eslint/parser': + specifier: ^8.29.1 + version: 8.29.1(eslint@9.24.0(jiti@2.4.2))(typescript@5.8.3) '@vitejs/plugin-react': specifier: ^4.0.0 version: 4.3.4(vite@6.2.6(@types/node@22.14.1)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.3)(yaml@2.7.1)) @@ -103,6 +106,12 @@ importers: esbuild: specifier: ^0.25.0 version: 0.25.2 + eslint: + specifier: ^9.24.0 + version: 9.24.0(jiti@2.4.2) + eslint-plugin-perfectionist: + specifier: ^4.11.0 + version: 4.11.0(eslint@9.24.0(jiti@2.4.2))(typescript@5.8.3) git-cz: specifier: ^4.7.6 version: 4.9.0 @@ -166,6 +175,9 @@ importers: typescript: specifier: ^5.4.4 version: 5.8.3 + typescript-eslint: + specifier: ^8.29.1 + version: 8.29.1(eslint@9.24.0(jiti@2.4.2))(typescript@5.8.3) vite: specifier: ^6.0.0 version: 6.2.6(@types/node@22.14.1)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.3)(yaml@2.7.1) @@ -1839,6 +1851,48 @@ packages: cpu: [x64] os: [win32] + '@eslint-community/eslint-utils@4.6.0': + resolution: {integrity: sha512-WhCn7Z7TauhBtmzhvKpoQs0Wwb/kBcy4CwpuI0/eEIr2Lx2auxmulAzLr91wVZJaz47iUZdkXOK7WlAfxGKCnA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.12.1': + resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/config-array@0.20.0': + resolution: {integrity: sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/config-helpers@0.2.1': + resolution: {integrity: sha512-RI17tsD2frtDu/3dmI7QRrD4bedNKPM08ziRYaC5AhkGrzIAJelm9kJU1TznK+apx6V+cqRz8tfpEeG3oIyjxw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/core@0.12.0': + resolution: {integrity: sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/core@0.13.0': + resolution: {integrity: sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/eslintrc@3.3.1': + resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/js@9.24.0': + resolution: {integrity: sha512-uIY/y3z0uvOGX8cp1C2fiC4+ZmBhp6yZWkojtHL1YEMnRt1Y63HB9TM17proGEmeG7HeUY+UP36F0aknKYTpYA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/object-schema@2.1.6': + resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/plugin-kit@0.2.8': + resolution: {integrity: sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@floating-ui/core@1.6.9': resolution: {integrity: sha512-uMXCuQ3BItDUbAMhIXw7UPXRfAlOAvZzdK9BWpE60MCn+Svt3aLn9jsPTi/WNGlRUu2uI0v5S7JiIUsbsvh3fw==} @@ -1848,6 +1902,26 @@ packages: '@floating-ui/utils@0.2.9': resolution: {integrity: sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==} + '@humanfs/core@0.19.1': + resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} + engines: {node: '>=18.18.0'} + + '@humanfs/node@0.16.6': + resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} + engines: {node: '>=18.18.0'} + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/retry@0.3.1': + resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} + engines: {node: '>=18.18'} + + '@humanwhocodes/retry@0.4.2': + resolution: {integrity: sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==} + engines: {node: '>=18.18'} + '@isaacs/cliui@8.0.2': resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} @@ -2613,6 +2687,9 @@ packages: '@types/hast@3.0.4': resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + '@types/katex@0.16.7': resolution: {integrity: sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ==} @@ -2675,6 +2752,53 @@ packages: '@types/uuid@9.0.8': resolution: {integrity: sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==} + '@typescript-eslint/eslint-plugin@8.29.1': + resolution: {integrity: sha512-ba0rr4Wfvg23vERs3eB+P3lfj2E+2g3lhWcCVukUuhtcdUx5lSIFZlGFEBHKr+3zizDa/TvZTptdNHVZWAkSBg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/parser@8.29.1': + resolution: {integrity: sha512-zczrHVEqEaTwh12gWBIJWj8nx+ayDcCJs06yoNMY0kwjMWDM6+kppljY+BxWI06d2Ja+h4+WdufDcwMnnMEWmg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/scope-manager@8.29.1': + resolution: {integrity: sha512-2nggXGX5F3YrsGN08pw4XpMLO1Rgtnn4AzTegC2MDesv6q3QaTU5yU7IbS1tf1IwCR0Hv/1EFygLn9ms6LIpDA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/type-utils@8.29.1': + resolution: {integrity: sha512-DkDUSDwZVCYN71xA4wzySqqcZsHKic53A4BLqmrWFFpOpNSoxX233lwGu/2135ymTCR04PoKiEEEvN1gFYg4Tw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/types@8.29.1': + resolution: {integrity: sha512-VT7T1PuJF1hpYC3AGm2rCgJBjHL3nc+A/bhOp9sGMKfi5v0WufsX/sHCFBfNTx2F+zA6qBc/PD0/kLRLjdt8mQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@8.29.1': + resolution: {integrity: sha512-l1enRoSaUkQxOQnbi0KPUtqeZkSiFlqrx9/3ns2rEDhGKfTa+88RmXqedC1zmVTOWrLc2e6DEJrTA51C9iLH5g==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/utils@8.29.1': + resolution: {integrity: sha512-QAkFEbytSaB8wnmB+DflhUPz6CLbFWE2SnSCrRMEa+KnXIzDYbpsn++1HGvnfAsUY44doDXmvRkO5shlM/3UfA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/visitor-keys@8.29.1': + resolution: {integrity: sha512-RGLh5CRaUEf02viP5c1Vh1cMGffQscyHe7HPAzGpfmfflFg1wUz2rYxd+OZqwpeypYvZ8UxSxuIpF++fmOzEcg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@uiw/codemirror-theme-basic@4.23.10': resolution: {integrity: sha512-S5sgMzRUbzyZP5V5SpmlAno/RawuI2UhK0JxrlGOkmpTkSQ5ksqC8Nxuh1/ML4nr8bj+arwWv+PasaBG185YWg==} @@ -2802,6 +2926,11 @@ packages: resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} engines: {node: '>= 0.6'} + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + acorn@8.14.1: resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} engines: {node: '>=0.4.0'} @@ -2811,6 +2940,9 @@ packages: resolution: {integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==} engines: {node: '>= 14'} + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + ajv@8.12.0: resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} @@ -3232,6 +3364,9 @@ packages: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} engines: {node: '>=4.0.0'} + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + deepmerge@4.3.1: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} @@ -3353,15 +3488,63 @@ packages: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + escape-string-regexp@5.0.0: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} + eslint-plugin-perfectionist@4.11.0: + resolution: {integrity: sha512-5s+ehXydnLPQpLDj5mJ0CnYj2fQe6v6gKA3tS+FZVBLzwMOh8skH+l+1Gni08rG0SdEcNhJyjQp/mEkDYK8czw==} + engines: {node: ^18.0.0 || >=20.0.0} + peerDependencies: + eslint: '>=8.45.0' + + eslint-scope@8.3.0: + resolution: {integrity: sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@4.2.0: + resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint@9.24.0: + resolution: {integrity: sha512-eh/jxIEJyZrvbWRe4XuVclLPDYSYYYgLy5zXGGxD6j8zjSAxFEzI2fL/8xNq6O2yKqVt+eF2YhV+hxjV6UKXwQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true + + espree@10.3.0: + resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} hasBin: true + esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + estree-walker@0.6.1: resolution: {integrity: sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==} @@ -3371,6 +3554,10 @@ packages: estree-walker@3.0.3: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + eventemitter3@4.0.7: resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} @@ -3406,6 +3593,12 @@ packages: resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} engines: {node: '>=8.6.0'} + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + fast-uri@3.0.6: resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==} @@ -3420,6 +3613,10 @@ packages: picomatch: optional: true + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} + fill-range@7.1.1: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} @@ -3428,10 +3625,21 @@ packages: resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} engines: {node: '>=8'} + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + find-up@7.0.0: resolution: {integrity: sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==} engines: {node: '>=18'} + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} + + flatted@3.3.3: + resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + foreground-child@3.3.1: resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} engines: {node: '>=14'} @@ -3503,6 +3711,10 @@ packages: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + glob@11.0.1: resolution: {integrity: sha512-zrQDm8XPnYEKawJScsnM0QzobJxlT/kHOOlRTio8IH/GrmxRE5fjllkzdaHclIuNjUQTJYH2xHNIGfdpJkDJUw==} engines: {node: 20 || >=22} @@ -3520,6 +3732,10 @@ packages: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} + globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} + globby@10.0.1: resolution: {integrity: sha512-sSs4inE1FB2YQiymcmTv6NWENryABjUNPeWhOvmn4SjtKybglsyPZxFB3U1/+L1bYi0rNZDqCLlHyLYDl1Pq5A==} engines: {node: '>=8'} @@ -3531,6 +3747,9 @@ packages: graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} @@ -3618,6 +3837,10 @@ packages: import-meta-resolve@4.1.0: resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==} + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. @@ -3772,15 +3995,24 @@ packages: engines: {node: '>=6'} hasBin: true + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + json-parse-better-errors@1.0.2: resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + json-schema-traverse@1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + json5@2.2.3: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} @@ -3806,6 +4038,13 @@ packages: resolution: {integrity: sha512-XCHRdUw4lf3SKBaJe4EvgqIuWwkPSo9XoeO8GjQW94Bp7TWv9hNhzZjZ+OH9yf1UmLygb7DIT5GSFQiyt16zYg==} hasBin: true + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + lib0@0.2.104: resolution: {integrity: sha512-1tqKRANSPTcjs/yjPoKh52oRM2u5AYdd8jie8sDiN8/5kpWWiQSHUGgtB4VEXLw1chVL3QPSPp8q9RWqzSn2FA==} engines: {node: '>=16'} @@ -3907,6 +4146,10 @@ packages: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} engines: {node: '>=8'} + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + locate-path@7.2.0: resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -4171,6 +4414,10 @@ packages: minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} @@ -4198,6 +4445,13 @@ packages: engines: {node: ^18 || >=20} hasBin: true + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + natural-orderby@5.0.0: + resolution: {integrity: sha512-kKHJhxwpR/Okycz4HhQKKlhWe4ASEfPgkSWNmKFHd7+ezuQlxkA5cM3+XkBPvm1gmHen3w53qsYAv+8GwRrBlg==} + engines: {node: '>=18'} + negotiator@0.6.3: resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} engines: {node: '>= 0.6'} @@ -4267,6 +4521,10 @@ packages: resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} engines: {node: '>=12'} + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + orderedmap@2.1.1: resolution: {integrity: sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g==} @@ -4297,6 +4555,10 @@ packages: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + p-limit@4.0.0: resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -4305,6 +4567,10 @@ packages: resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} engines: {node: '>=8'} + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + p-locate@6.0.0: resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -4698,6 +4964,10 @@ packages: resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} engines: {node: ^10 || ^12 || >=14} + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + prettier@2.8.8: resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} engines: {node: '>=10.13.0'} @@ -5143,6 +5413,10 @@ packages: resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} engines: {node: '>=0.10.0'} + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + style-inject@0.3.0: resolution: {integrity: sha512-IezA2qp+vcdlhJaVm5SOdPPTUu0FCEqfNSli2vRuSIBbu5Nq5UvygTk/VzeCqfLz2Atj3dVII5QBKGZRZ0edzw==} @@ -5254,6 +5528,12 @@ packages: trough@2.2.0: resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} + ts-api-utils@2.1.0: + resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} + engines: {node: '>=18.12'} + peerDependencies: + typescript: '>=4.8.4' + ts-dedent@2.2.0: resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} engines: {node: '>=6.10'} @@ -5272,10 +5552,21 @@ packages: twemoji@14.0.2: resolution: {integrity: sha512-BzOoXIe1QVdmsUmZ54xbEH+8AgtOKUiG53zO5vVP2iUu6h5u9lN15NcuS6te4OY96qx0H7JK9vjjl9WQbkTRuA==} + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + type-fest@2.19.0: resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} engines: {node: '>=12.20'} + typescript-eslint@8.29.1: + resolution: {integrity: sha512-f8cDkvndhbQMPcysk6CUSGBWV+g1utqdn71P5YKwMumVMOG/5k7cHq0KyG4O52nB0oKS4aN2Tp5+wB4APJGC+w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + typescript@5.8.3: resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} engines: {node: '>=14.17'} @@ -5485,6 +5776,10 @@ packages: resolution: {integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==} engines: {node: '>=12'} + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} @@ -5563,6 +5858,10 @@ packages: resolution: {integrity: sha512-xn/pYLTZa3uD1uDG8lpxfLRo5SR/rp0frdASOl2a71aYNvUXdWcLtVL91s2y7j+Q8ppmjZ9H3jsGVgoFMbT2VA==} engines: {node: '>=16.0.0', npm: '>=8.0.0'} + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + yocto-queue@1.2.1: resolution: {integrity: sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==} engines: {node: '>=12.20'} @@ -6559,6 +6858,54 @@ snapshots: '@esbuild/win32-x64@0.25.2': optional: true + '@eslint-community/eslint-utils@4.6.0(eslint@9.24.0(jiti@2.4.2))': + dependencies: + eslint: 9.24.0(jiti@2.4.2) + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.12.1': {} + + '@eslint/config-array@0.20.0': + dependencies: + '@eslint/object-schema': 2.1.6 + debug: 4.4.0 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@eslint/config-helpers@0.2.1': {} + + '@eslint/core@0.12.0': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/core@0.13.0': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/eslintrc@3.3.1': + dependencies: + ajv: 6.12.6 + debug: 4.4.0 + espree: 10.3.0 + globals: 14.0.0 + ignore: 5.3.2 + import-fresh: 3.3.1 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@9.24.0': {} + + '@eslint/object-schema@2.1.6': {} + + '@eslint/plugin-kit@0.2.8': + dependencies: + '@eslint/core': 0.13.0 + levn: 0.4.1 + '@floating-ui/core@1.6.9': dependencies: '@floating-ui/utils': 0.2.9 @@ -6570,6 +6917,19 @@ snapshots: '@floating-ui/utils@0.2.9': {} + '@humanfs/core@0.19.1': {} + + '@humanfs/node@0.16.6': + dependencies: + '@humanfs/core': 0.19.1 + '@humanwhocodes/retry': 0.3.1 + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/retry@0.3.1': {} + + '@humanwhocodes/retry@0.4.2': {} + '@isaacs/cliui@8.0.2': dependencies: string-width: 5.1.2 @@ -7336,6 +7696,8 @@ snapshots: dependencies: '@types/unist': 3.0.3 + '@types/json-schema@7.0.15': {} + '@types/katex@0.16.7': {} '@types/lodash-es@4.17.12': @@ -7393,6 +7755,83 @@ snapshots: '@types/uuid@9.0.8': {} + '@typescript-eslint/eslint-plugin@8.29.1(@typescript-eslint/parser@8.29.1(eslint@9.24.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.24.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@eslint-community/regexpp': 4.12.1 + '@typescript-eslint/parser': 8.29.1(eslint@9.24.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/scope-manager': 8.29.1 + '@typescript-eslint/type-utils': 8.29.1(eslint@9.24.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/utils': 8.29.1(eslint@9.24.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.29.1 + eslint: 9.24.0(jiti@2.4.2) + graphemer: 1.4.0 + ignore: 5.3.2 + natural-compare: 1.4.0 + ts-api-utils: 2.1.0(typescript@5.8.3) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@8.29.1(eslint@9.24.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@typescript-eslint/scope-manager': 8.29.1 + '@typescript-eslint/types': 8.29.1 + '@typescript-eslint/typescript-estree': 8.29.1(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.29.1 + debug: 4.4.0 + eslint: 9.24.0(jiti@2.4.2) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@8.29.1': + dependencies: + '@typescript-eslint/types': 8.29.1 + '@typescript-eslint/visitor-keys': 8.29.1 + + '@typescript-eslint/type-utils@8.29.1(eslint@9.24.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@typescript-eslint/typescript-estree': 8.29.1(typescript@5.8.3) + '@typescript-eslint/utils': 8.29.1(eslint@9.24.0(jiti@2.4.2))(typescript@5.8.3) + debug: 4.4.0 + eslint: 9.24.0(jiti@2.4.2) + ts-api-utils: 2.1.0(typescript@5.8.3) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/types@8.29.1': {} + + '@typescript-eslint/typescript-estree@8.29.1(typescript@5.8.3)': + dependencies: + '@typescript-eslint/types': 8.29.1 + '@typescript-eslint/visitor-keys': 8.29.1 + debug: 4.4.0 + fast-glob: 3.3.3 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.7.1 + ts-api-utils: 2.1.0(typescript@5.8.3) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.29.1(eslint@9.24.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@eslint-community/eslint-utils': 4.6.0(eslint@9.24.0(jiti@2.4.2)) + '@typescript-eslint/scope-manager': 8.29.1 + '@typescript-eslint/types': 8.29.1 + '@typescript-eslint/typescript-estree': 8.29.1(typescript@5.8.3) + eslint: 9.24.0(jiti@2.4.2) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/visitor-keys@8.29.1': + dependencies: + '@typescript-eslint/types': 8.29.1 + eslint-visitor-keys: 4.2.0 + '@uiw/codemirror-theme-basic@4.23.10(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.36.5)': dependencies: '@uiw/codemirror-themes': 4.23.10(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.36.5) @@ -7582,10 +8021,21 @@ snapshots: mime-types: 2.1.35 negotiator: 0.6.3 + acorn-jsx@5.3.2(acorn@8.14.1): + dependencies: + acorn: 8.14.1 + acorn@8.14.1: {} agent-base@7.1.3: {} + ajv@6.12.6: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + ajv@8.12.0: dependencies: fast-deep-equal: 3.1.3 @@ -8022,6 +8472,8 @@ snapshots: deep-extend@0.6.0: {} + deep-is@0.1.4: {} + deepmerge@4.3.1: {} define-lazy-prop@2.0.0: {} @@ -8147,10 +8599,89 @@ snapshots: escalade@3.2.0: {} + escape-string-regexp@4.0.0: {} + escape-string-regexp@5.0.0: {} + eslint-plugin-perfectionist@4.11.0(eslint@9.24.0(jiti@2.4.2))(typescript@5.8.3): + dependencies: + '@typescript-eslint/types': 8.29.1 + '@typescript-eslint/utils': 8.29.1(eslint@9.24.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.24.0(jiti@2.4.2) + natural-orderby: 5.0.0 + transitivePeerDependencies: + - supports-color + - typescript + + eslint-scope@8.3.0: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@3.4.3: {} + + eslint-visitor-keys@4.2.0: {} + + eslint@9.24.0(jiti@2.4.2): + dependencies: + '@eslint-community/eslint-utils': 4.6.0(eslint@9.24.0(jiti@2.4.2)) + '@eslint-community/regexpp': 4.12.1 + '@eslint/config-array': 0.20.0 + '@eslint/config-helpers': 0.2.1 + '@eslint/core': 0.12.0 + '@eslint/eslintrc': 3.3.1 + '@eslint/js': 9.24.0 + '@eslint/plugin-kit': 0.2.8 + '@humanfs/node': 0.16.6 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.4.2 + '@types/estree': 1.0.7 + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.0 + escape-string-regexp: 4.0.0 + eslint-scope: 8.3.0 + eslint-visitor-keys: 4.2.0 + espree: 10.3.0 + esquery: 1.6.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 8.0.0 + find-up: 5.0.0 + glob-parent: 6.0.2 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + json-stable-stringify-without-jsonify: 1.0.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.4 + optionalDependencies: + jiti: 2.4.2 + transitivePeerDependencies: + - supports-color + + espree@10.3.0: + dependencies: + acorn: 8.14.1 + acorn-jsx: 5.3.2(acorn@8.14.1) + eslint-visitor-keys: 4.2.0 + esprima@4.0.1: {} + esquery@1.6.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@5.3.0: {} + estree-walker@0.6.1: {} estree-walker@2.0.2: {} @@ -8159,6 +8690,8 @@ snapshots: dependencies: '@types/estree': 1.0.7 + esutils@2.0.3: {} + eventemitter3@4.0.7: {} eventemitter3@5.0.1: {} @@ -8209,6 +8742,10 @@ snapshots: merge2: 1.4.1 micromatch: 4.0.8 + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + fast-uri@3.0.6: {} fastq@1.19.1: @@ -8219,6 +8756,10 @@ snapshots: optionalDependencies: picomatch: 4.0.2 + file-entry-cache@8.0.0: + dependencies: + flat-cache: 4.0.1 + fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 @@ -8228,12 +8769,24 @@ snapshots: locate-path: 5.0.0 path-exists: 4.0.0 + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + find-up@7.0.0: dependencies: locate-path: 7.2.0 path-exists: 5.0.0 unicorn-magic: 0.1.0 + flat-cache@4.0.1: + dependencies: + flatted: 3.3.3 + keyv: 4.5.4 + + flatted@3.3.3: {} + foreground-child@3.3.1: dependencies: cross-spawn: 7.0.6 @@ -8297,6 +8850,10 @@ snapshots: dependencies: is-glob: 4.0.3 + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + glob@11.0.1: dependencies: foreground-child: 3.3.1 @@ -8321,6 +8878,8 @@ snapshots: globals@11.12.0: {} + globals@14.0.0: {} + globby@10.0.1: dependencies: '@types/glob': 7.2.0 @@ -8343,6 +8902,8 @@ snapshots: graceful-fs@4.2.11: {} + graphemer@1.4.0: {} + has-flag@4.0.0: {} hast-util-parse-selector@4.0.0: @@ -8436,6 +8997,8 @@ snapshots: import-meta-resolve@4.1.0: {} + imurmurhash@0.1.4: {} + inflight@1.0.6: dependencies: once: 1.4.0 @@ -8568,12 +9131,18 @@ snapshots: jsesc@3.1.0: {} + json-buffer@3.0.1: {} + json-parse-better-errors@1.0.2: {} json-parse-even-better-errors@2.3.1: {} + json-schema-traverse@0.4.1: {} + json-schema-traverse@1.0.0: {} + json-stable-stringify-without-jsonify@1.0.1: {} + json5@2.2.3: {} jsonc-parser@3.3.1: {} @@ -8600,6 +9169,15 @@ snapshots: dependencies: commander: 8.3.0 + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + lib0@0.2.104: dependencies: isomorphic.js: 0.2.5 @@ -8692,6 +9270,10 @@ snapshots: dependencies: p-locate: 4.1.0 + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + locate-path@7.2.0: dependencies: p-locate: 6.0.0 @@ -9130,6 +9712,10 @@ snapshots: dependencies: brace-expansion: 1.1.11 + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.1 + minimist@1.2.8: {} minipass@7.1.2: {} @@ -9144,6 +9730,10 @@ snapshots: nanoid@5.1.5: {} + natural-compare@1.4.0: {} + + natural-orderby@5.0.0: {} + negotiator@0.6.3: {} node-emoji@2.2.0: @@ -9215,6 +9805,15 @@ snapshots: is-docker: 2.2.1 is-wsl: 2.2.0 + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + orderedmap@2.1.1: {} os-tmpdir@1.0.2: {} @@ -9258,6 +9857,10 @@ snapshots: dependencies: p-try: 2.2.0 + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + p-limit@4.0.0: dependencies: yocto-queue: 1.2.1 @@ -9266,6 +9869,10 @@ snapshots: dependencies: p-limit: 2.3.0 + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + p-locate@6.0.0: dependencies: p-limit: 4.0.0 @@ -9624,6 +10231,8 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 + prelude-ls@1.2.1: {} + prettier@2.8.8: {} prettier@3.5.3: {} @@ -10164,6 +10773,8 @@ snapshots: strip-json-comments@2.0.1: {} + strip-json-comments@3.1.1: {} + style-inject@0.3.0: {} style-mod@4.1.2: {} @@ -10253,6 +10864,10 @@ snapshots: trough@2.2.0: {} + ts-api-utils@2.1.0(typescript@5.8.3): + dependencies: + typescript: 5.8.3 + ts-dedent@2.2.0: {} tslib@2.8.1: {} @@ -10273,8 +10888,22 @@ snapshots: twemoji-parser: 14.0.0 universalify: 0.1.2 + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + type-fest@2.19.0: {} + typescript-eslint@8.29.1(eslint@9.24.0(jiti@2.4.2))(typescript@5.8.3): + dependencies: + '@typescript-eslint/eslint-plugin': 8.29.1(@typescript-eslint/parser@8.29.1(eslint@9.24.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.24.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/parser': 8.29.1(eslint@9.24.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/utils': 8.29.1(eslint@9.24.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.24.0(jiti@2.4.2) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + typescript@5.8.3: {} undici-types@6.21.0: {} @@ -10497,6 +11126,8 @@ snapshots: dependencies: string-width: 5.1.2 + word-wrap@1.2.5: {} + wrap-ansi@7.0.0: dependencies: ansi-styles: 4.3.0 @@ -10561,6 +11192,8 @@ snapshots: dependencies: lib0: 0.2.104 + yocto-queue@0.1.0: {} + yocto-queue@1.2.1: {} zwitch@2.0.4: {} diff --git a/scripts/changelog.mts b/scripts/changelog.mts index d8b25d44496..497f26d9655 100644 --- a/scripts/changelog.mts +++ b/scripts/changelog.mts @@ -1,7 +1,7 @@ +import { Logger } from '@milkdown/dev/logger' import { execSync } from 'child_process' import { appendFileSync, readdirSync, existsSync } from 'fs' import { join, basename } from 'path' -import { Logger } from '@milkdown/dev/logger' const logger = new Logger('changelog') diff --git a/storybook/stories/components/code-block.stories.ts b/storybook/stories/components/code-block.stories.ts index b7b6d91326e..12b7f2ba4db 100644 --- a/storybook/stories/components/code-block.stories.ts +++ b/storybook/stories/components/code-block.stories.ts @@ -1,16 +1,18 @@ import type { Meta, StoryObj } from '@storybook/html' + +import { defaultKeymap } from '@codemirror/commands' +import { languages } from '@codemirror/language-data' +import { oneDark } from '@codemirror/theme-one-dark' +import { keymap } from '@codemirror/view' import { codeBlockComponent, codeBlockConfig, } from '@milkdown/kit/component/code-block' -import { oneDark } from '@codemirror/theme-one-dark' -import { languages } from '@codemirror/language-data' -import { basicSetup } from 'codemirror' -import { defaultKeymap } from '@codemirror/commands' -import { keymap } from '@codemirror/view' import { html } from 'atomico' +import { basicSetup } from 'codemirror' import type { CommonArgs } from '../utils/shadow' + import { setupMilkdown } from '../utils/shadow' import style from './code-block.css?inline' diff --git a/storybook/stories/components/image-block.stories.ts b/storybook/stories/components/image-block.stories.ts index 183c4304bdd..0aa70c2f9ec 100644 --- a/storybook/stories/components/image-block.stories.ts +++ b/storybook/stories/components/image-block.stories.ts @@ -1,7 +1,9 @@ import type { Meta, StoryObj } from '@storybook/html' + import { imageBlockComponent } from '@milkdown/kit/component/image-block' import type { CommonArgs } from '../utils/shadow' + import { setupMilkdown } from '../utils/shadow' import style from './image-block.css?inline' diff --git a/storybook/stories/components/inline-image-block.stories.ts b/storybook/stories/components/inline-image-block.stories.ts index ff80af67778..94e1f5bd461 100644 --- a/storybook/stories/components/inline-image-block.stories.ts +++ b/storybook/stories/components/inline-image-block.stories.ts @@ -1,7 +1,9 @@ import type { Meta, StoryObj } from '@storybook/html' + import { imageInlineComponent } from '@milkdown/kit/component/image-inline' import type { CommonArgs } from '../utils/shadow' + import { setupMilkdown } from '../utils/shadow' import style from './inline-image-block.css?inline' diff --git a/storybook/stories/components/link-tooltip.stories.ts b/storybook/stories/components/link-tooltip.stories.ts index 40486e789c7..2d4a6c96fc0 100644 --- a/storybook/stories/components/link-tooltip.stories.ts +++ b/storybook/stories/components/link-tooltip.stories.ts @@ -1,18 +1,20 @@ +import type { Ctx } from '@milkdown/kit/ctx' +import type { EditorState } from '@milkdown/kit/prose/state' +import type { EditorView } from '@milkdown/kit/prose/view' import type { Meta, StoryObj } from '@storybook/html' -import { editorViewCtx } from '@milkdown/kit/core' -import { linkSchema } from '@milkdown/kit/preset/commonmark' + import { configureLinkTooltip, linkTooltipAPI, linkTooltipPlugin, linkTooltipState, } from '@milkdown/kit/component/link-tooltip' +import { editorViewCtx } from '@milkdown/kit/core' import { TooltipProvider, tooltipFactory } from '@milkdown/kit/plugin/tooltip' -import type { Ctx } from '@milkdown/kit/ctx' -import type { EditorView } from '@milkdown/kit/prose/view' -import type { EditorState } from '@milkdown/kit/prose/state' +import { linkSchema } from '@milkdown/kit/preset/commonmark' import type { CommonArgs } from '../utils/shadow' + import { setupMilkdown } from '../utils/shadow' import style from './link-tooltip.css?inline' diff --git a/storybook/stories/components/list-item-block.stories.ts b/storybook/stories/components/list-item-block.stories.ts index f10829ded32..76682986506 100644 --- a/storybook/stories/components/list-item-block.stories.ts +++ b/storybook/stories/components/list-item-block.stories.ts @@ -1,8 +1,10 @@ import type { Meta, StoryObj } from '@storybook/html' -import { gfm } from '@milkdown/kit/preset/gfm' + import { listItemBlockComponent } from '@milkdown/kit/component/list-item-block' +import { gfm } from '@milkdown/kit/preset/gfm' import type { CommonArgs } from '../utils/shadow' + import { setupMilkdown } from '../utils/shadow' import style from './list-item-block.css?inline' diff --git a/storybook/stories/components/table-block.stories.ts b/storybook/stories/components/table-block.stories.ts index d91b33c5846..828a0b5e3f3 100644 --- a/storybook/stories/components/table-block.stories.ts +++ b/storybook/stories/components/table-block.stories.ts @@ -1,11 +1,13 @@ import type { Meta, StoryObj } from '@storybook/html' -import { gfm } from '@milkdown/kit/preset/gfm' import { tableBlock } from '@milkdown/kit/component/table-block' -import tableStyle from '@milkdown/kit/prose/tables/style/tables.css?inline' import { cursor } from '@milkdown/kit/plugin/cursor' import { history } from '@milkdown/kit/plugin/history' +import { gfm } from '@milkdown/kit/preset/gfm' +import tableStyle from '@milkdown/kit/prose/tables/style/tables.css?inline' + import type { CommonArgs } from '../utils/shadow' + import { setupMilkdown } from '../utils/shadow' import style from './table-block.css?inline' diff --git a/storybook/stories/crepe/crepe-dark.stories.ts b/storybook/stories/crepe/crepe-dark.stories.ts index 718d4cffb83..7503dfe4461 100644 --- a/storybook/stories/crepe/crepe-dark.stories.ts +++ b/storybook/stories/crepe/crepe-dark.stories.ts @@ -1,8 +1,10 @@ import type { Meta, StoryObj } from '@storybook/html' -import { basicDark } from '@uiw/codemirror-theme-basic' import crepeDark from '@milkdown/crepe/theme/crepe-dark.css?inline' +import { basicDark } from '@uiw/codemirror-theme-basic' + import type { Args } from './setup' + import { longContent, setup, wikiContent } from './setup' const meta: Meta = { diff --git a/storybook/stories/crepe/crepe.stories.ts b/storybook/stories/crepe/crepe.stories.ts index 1939eecedf4..405fcf088d3 100644 --- a/storybook/stories/crepe/crepe.stories.ts +++ b/storybook/stories/crepe/crepe.stories.ts @@ -1,8 +1,10 @@ import type { Meta, StoryObj } from '@storybook/html' -import { basicLight } from '@uiw/codemirror-theme-basic' import crepe from '@milkdown/crepe/theme/crepe.css?inline' +import { basicLight } from '@uiw/codemirror-theme-basic' + import type { Args } from './setup' + import { longContent, setup, wikiContent } from './setup' const meta: Meta = { diff --git a/storybook/stories/crepe/frame-dark.stories.ts b/storybook/stories/crepe/frame-dark.stories.ts index 216bc76c70f..57d38ec38a1 100644 --- a/storybook/stories/crepe/frame-dark.stories.ts +++ b/storybook/stories/crepe/frame-dark.stories.ts @@ -1,8 +1,10 @@ import type { Meta, StoryObj } from '@storybook/html' -import { basicDark } from '@uiw/codemirror-theme-basic' import frameDark from '@milkdown/crepe/theme/frame-dark.css?inline' +import { basicDark } from '@uiw/codemirror-theme-basic' + import type { Args } from './setup' + import { longContent, setup, wikiContent } from './setup' const meta: Meta = { diff --git a/storybook/stories/crepe/frame.stories.ts b/storybook/stories/crepe/frame.stories.ts index a85223de269..8f085394465 100644 --- a/storybook/stories/crepe/frame.stories.ts +++ b/storybook/stories/crepe/frame.stories.ts @@ -1,8 +1,10 @@ import type { Meta, StoryObj } from '@storybook/html' -import { basicLight } from '@uiw/codemirror-theme-basic' import frame from '@milkdown/crepe/theme/frame.css?inline' +import { basicLight } from '@uiw/codemirror-theme-basic' + import type { Args } from './setup' + import { longContent, setup, wikiContent } from './setup' const meta: Meta = { diff --git a/storybook/stories/crepe/nord-dark.stories.ts b/storybook/stories/crepe/nord-dark.stories.ts index e77664fccf9..1f5380f1f63 100644 --- a/storybook/stories/crepe/nord-dark.stories.ts +++ b/storybook/stories/crepe/nord-dark.stories.ts @@ -1,8 +1,10 @@ import type { Meta, StoryObj } from '@storybook/html' -import { nord } from '@uiw/codemirror-theme-nord' import nordDark from '@milkdown/crepe/theme/nord-dark.css?inline' +import { nord } from '@uiw/codemirror-theme-nord' + import type { Args } from './setup' + import { longContent, setup, wikiContent } from './setup' const meta: Meta = { diff --git a/storybook/stories/crepe/nord.stories.ts b/storybook/stories/crepe/nord.stories.ts index c29ce4adbfd..97035dc6cef 100644 --- a/storybook/stories/crepe/nord.stories.ts +++ b/storybook/stories/crepe/nord.stories.ts @@ -1,8 +1,10 @@ import type { Meta, StoryObj } from '@storybook/html' -import { basicLight } from '@uiw/codemirror-theme-basic' import nord from '@milkdown/crepe/theme/nord.css?inline' +import { basicLight } from '@uiw/codemirror-theme-basic' + import type { Args } from './setup' + import { longContent, setup, wikiContent } from './setup' const meta: Meta = { diff --git a/storybook/stories/crepe/setup.ts b/storybook/stories/crepe/setup.ts index e0e3e5216df..2a664bb2baa 100644 --- a/storybook/stories/crepe/setup.ts +++ b/storybook/stories/crepe/setup.ts @@ -1,8 +1,10 @@ +import type { Extension } from '@codemirror/state' + import { Crepe } from '@milkdown/crepe' import all from '@milkdown/crepe/theme/common/style.css?inline' -import localStyle from './style.css?inline' -import type { Extension } from '@codemirror/state' + import { injectMarkdown, wrapInShadow } from '../utils/shadow' +import localStyle from './style.css?inline' export interface Args { instance: Crepe @@ -117,7 +119,7 @@ export function setup({ args, style, theme }: setupConfig) { .then(() => { args.instance = crepe }) - + .catch(console.error) return root } diff --git a/storybook/stories/plugins/listener.stories.ts b/storybook/stories/plugins/listener.stories.ts index 7e40517cbec..998eb933c77 100644 --- a/storybook/stories/plugins/listener.stories.ts +++ b/storybook/stories/plugins/listener.stories.ts @@ -1,9 +1,11 @@ import type { Meta, StoryObj } from '@storybook/html' + import { EditorStatus } from '@milkdown/kit/core' import { listener, listenerCtx } from '@milkdown/kit/plugin/listener' import { action } from '@storybook/addon-actions' import type { CommonArgs } from '../utils/shadow' + import { setupMilkdown } from '../utils/shadow' import style from './listener.css?inline' diff --git a/storybook/stories/utils/shadow.ts b/storybook/stories/utils/shadow.ts index 8298d93566b..0a4d9c28cf8 100644 --- a/storybook/stories/utils/shadow.ts +++ b/storybook/stories/utils/shadow.ts @@ -1,18 +1,19 @@ -import nordStyle from '@milkdown/theme-nord/style.css?inline' -import pmStyle from '@milkdown/kit/prose/view/style/prosemirror.css?inline' import { Editor, defaultValueCtx, editorViewOptionsCtx, rootCtx, } from '@milkdown/kit/core' -import { nord } from '@milkdown/theme-nord' -import { commonmark } from '@milkdown/kit/preset/commonmark' import { history } from '@milkdown/kit/plugin/history' -import commonStyle from './style.css?inline' import { listener, listenerCtx } from '@milkdown/kit/plugin/listener' +import { commonmark } from '@milkdown/kit/preset/commonmark' +import pmStyle from '@milkdown/kit/prose/view/style/prosemirror.css?inline' +import { nord } from '@milkdown/theme-nord' +import nordStyle from '@milkdown/theme-nord/style.css?inline' import { codeToHtml } from 'shiki' +import commonStyle from './style.css?inline' + export function wrapInShadow(styles: string[]) { const root = document.createElement('div') const shadow = root.attachShadow({ mode: 'open' }) @@ -53,6 +54,7 @@ export function injectMarkdown( .finally(() => { running = false }) + .catch(console.error) } export interface CommonArgs { @@ -98,9 +100,12 @@ export function setupMilkdown( setup?.(editor, root, wrapper) - editor.create().then(() => { - args.instance = editor - }) + editor + .create() + .then(() => { + args.instance = editor + }) + .catch(console.error) return root } diff --git a/storybook/tsconfig.json b/storybook/tsconfig.json index aa9070bab01..34a648f35b0 100644 --- a/storybook/tsconfig.json +++ b/storybook/tsconfig.json @@ -6,6 +6,7 @@ "sourceMap": false, "tsBuildInfoFile": "./lib/tsconfig.tsbuildinfo" }, + "include": ["**/*.ts", "**/*.tsx"], "ts-node": { "compilerOptions": { "module": "es2022", diff --git a/tsconfig.eslint.json b/tsconfig.eslint.json new file mode 100644 index 00000000000..b1868c55b88 --- /dev/null +++ b/tsconfig.eslint.json @@ -0,0 +1,12 @@ +{ + "extends": "./tsconfig.json", + "include": [".", "**/.storybook/**/*.ts"], + "exclude": [ + "**/node_modules", + "**/dist", + "**/lib", + "**/storybook-static", + "**/test-results", + "**/coverage" + ] +} From 0fa4c4b1f1b666fcf4653ea0cbdc635c6253b5ae Mon Sep 17 00:00:00 2001 From: Saul-Mirone Date: Mon, 14 Apr 2025 11:15:25 +0800 Subject: [PATCH 2/4] chore: fix --- .../stories/components/code-block.stories.ts | 18 ------------------ storybook/tsconfig.json | 3 ++- 2 files changed, 2 insertions(+), 19 deletions(-) diff --git a/storybook/stories/components/code-block.stories.ts b/storybook/stories/components/code-block.stories.ts index 12b7f2ba4db..baee20721ee 100644 --- a/storybook/stories/components/code-block.stories.ts +++ b/storybook/stories/components/code-block.stories.ts @@ -8,7 +8,6 @@ import { codeBlockComponent, codeBlockConfig, } from '@milkdown/kit/component/code-block' -import { html } from 'atomico' import { basicSetup } from 'codemirror' import type { CommonArgs } from '../utils/shadow' @@ -22,23 +21,6 @@ const meta: Meta = { export default meta -const check = html` - - - -` - const markdown = ` # Code Block diff --git a/storybook/tsconfig.json b/storybook/tsconfig.json index 34a648f35b0..d2dc039e37a 100644 --- a/storybook/tsconfig.json +++ b/storybook/tsconfig.json @@ -3,10 +3,11 @@ "compilerOptions": { "baseUrl": ".", "rootDir": ".", + "outDir": "./lib", "sourceMap": false, "tsBuildInfoFile": "./lib/tsconfig.tsbuildinfo" }, - "include": ["**/*.ts", "**/*.tsx"], + "include": ["stories", ".storybook", "shim.d.ts"], "ts-node": { "compilerOptions": { "module": "es2022", From 80aad01c9105474c33e1974b6f242e6ce86a738b Mon Sep 17 00:00:00 2001 From: Saul-Mirone Date: Mon, 14 Apr 2025 11:20:03 +0800 Subject: [PATCH 3/4] chore: fix --- .prettierignore | 3 ++- storybook/tsconfig.json | 2 +- tsconfig.eslint.json | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.prettierignore b/.prettierignore index 17a7a907e35..b03944268fc 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,3 +1,4 @@ pnpm-lock.yaml **/storybook-static -**/lib \ No newline at end of file +**/lib +**/.storybook \ No newline at end of file diff --git a/storybook/tsconfig.json b/storybook/tsconfig.json index d2dc039e37a..f6c6cb2263d 100644 --- a/storybook/tsconfig.json +++ b/storybook/tsconfig.json @@ -7,7 +7,7 @@ "sourceMap": false, "tsBuildInfoFile": "./lib/tsconfig.tsbuildinfo" }, - "include": ["stories", ".storybook", "shim.d.ts"], + "include": ["./stories", "./.storybook", "./shim.d.ts"], "ts-node": { "compilerOptions": { "module": "es2022", diff --git a/tsconfig.eslint.json b/tsconfig.eslint.json index b1868c55b88..80ea87b983c 100644 --- a/tsconfig.eslint.json +++ b/tsconfig.eslint.json @@ -1,6 +1,6 @@ { "extends": "./tsconfig.json", - "include": [".", "**/.storybook/**/*.ts"], + "include": ["."], "exclude": [ "**/node_modules", "**/dist", From 29d00101c525059f8fe74aeea3dea384246c84c9 Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Mon, 14 Apr 2025 03:21:05 +0000 Subject: [PATCH 4/4] [autofix.ci] apply automated fixes --- eslint.config.mjs | 78 ++++++++++--------- .../components/src/__internal__/helper.ts | 1 - packages/core/src/editor/editor.ts | 2 - .../plugin-prism/src/get-decorations.ts | 1 - packages/plugins/plugin-upload/src/upload.ts | 1 - 5 files changed, 40 insertions(+), 43 deletions(-) diff --git a/eslint.config.mjs b/eslint.config.mjs index 519cd371791..2be04b30f8b 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -1,46 +1,48 @@ -import { defineConfig } from "eslint/config"; -import { readFileSync } from 'node:fs'; -import tseslint from 'typescript-eslint'; -import tsParser from '@typescript-eslint/parser'; -import perfectionist from 'eslint-plugin-perfectionist'; +import { defineConfig } from 'eslint/config' +import { readFileSync } from 'node:fs' +import tseslint from 'typescript-eslint' +import tsParser from '@typescript-eslint/parser' +import perfectionist from 'eslint-plugin-perfectionist' const ignoreList = readFileSync('.prettierignore', 'utf-8') .split('\n') - .filter(line => line.trim() && !line.startsWith('#')); + .filter((line) => line.trim() && !line.startsWith('#')) -const configFiles = ['**/*.config.mjs', '**/*.config.cjs', '**/*.config.js']; -const typeScriptExtensions = ['.ts', '.tsx', '.cts', '.mts']; +const configFiles = ['**/*.config.mjs', '**/*.config.cjs', '**/*.config.js'] +const typeScriptExtensions = ['.ts', '.tsx', '.cts', '.mts'] -export default defineConfig(tseslint.config( - { - ignores: [...ignoreList, ...configFiles], - }, - { - languageOptions: { - parser: tsParser, - ecmaVersion: 'latest', - parserOptions: { - project: './tsconfig.eslint.json', - tsconfigRootDir: import.meta.dirname, - }, - }, - }, - { - files: [...typeScriptExtensions].map(ext => `**/*${ext}`), - plugins: { - '@typescript-eslint': tseslint.plugin, - perfectionist, +export default defineConfig( + tseslint.config( + { + ignores: [...ignoreList, ...configFiles], }, - rules: { - 'perfectionist/sort-imports': 'error', - '@typescript-eslint/no-floating-promises': [ - 'error', - { - ignoreVoid: false, - ignoreIIFE: false, + { + languageOptions: { + parser: tsParser, + ecmaVersion: 'latest', + parserOptions: { + project: './tsconfig.eslint.json', + tsconfigRootDir: import.meta.dirname, }, - ], - '@typescript-eslint/await-thenable': 'error', + }, }, - } -)) \ No newline at end of file + { + files: [...typeScriptExtensions].map((ext) => `**/*${ext}`), + plugins: { + '@typescript-eslint': tseslint.plugin, + perfectionist, + }, + rules: { + 'perfectionist/sort-imports': 'error', + '@typescript-eslint/no-floating-promises': [ + 'error', + { + ignoreVoid: false, + ignoreIIFE: false, + }, + ], + '@typescript-eslint/await-thenable': 'error', + }, + } + ) +) diff --git a/packages/components/src/__internal__/helper.ts b/packages/components/src/__internal__/helper.ts index 37e6459f07a..8ed88f0baa7 100644 --- a/packages/components/src/__internal__/helper.ts +++ b/packages/components/src/__internal__/helper.ts @@ -10,6 +10,5 @@ export function defIfNotExists( if (current === element) return - console.warn(`Custom element ${tagName} has been defined before.`) } diff --git a/packages/core/src/editor/editor.ts b/packages/core/src/editor/editor.ts index e6aba96440e..5f51dc5517c 100644 --- a/packages/core/src/editor/editor.ts +++ b/packages/core/src/editor/editor.ts @@ -210,7 +210,6 @@ export class Editor { plugins: MilkdownPlugin | MilkdownPlugin[] ): Promise => { if (this.#status === EditorStatus.OnCreate) { - console.warn( '[Milkdown]: You are trying to remove plugins when the editor is creating, this is not recommended, please check your code.' ) @@ -283,7 +282,6 @@ export class Editor { /// Make sure you have enabled inspector by `editor.enableInspector()` before calling this method. readonly inspect = (): Telemetry[] => { if (!this.#enableInspector) { - console.warn( '[Milkdown]: You are trying to collect inspection when inspector is disabled, please enable inspector by `editor.enableInspector()` first.' ) diff --git a/packages/plugins/plugin-prism/src/get-decorations.ts b/packages/plugins/plugin-prism/src/get-decorations.ts index 8aef581dbd0..fcd8a897680 100644 --- a/packages/plugins/plugin-prism/src/get-decorations.ts +++ b/packages/plugins/plugin-prism/src/get-decorations.ts @@ -30,7 +30,6 @@ export function getDecorations(doc: Node, name: string, refractor: Refractor) { let from = block.pos + 1 const { language } = block.node.attrs if (!language || !allLanguages.includes(language)) { - console.warn( 'Unsupported language detected, this language has not been supported by current prism config: ', language diff --git a/packages/plugins/plugin-upload/src/upload.ts b/packages/plugins/plugin-upload/src/upload.ts index 458be1dc906..2af88438200 100644 --- a/packages/plugins/plugin-upload/src/upload.ts +++ b/packages/plugins/plugin-upload/src/upload.ts @@ -106,7 +106,6 @@ export const uploadPlugin = $prose((ctx) => { ) }) .catch((e) => { - console.error(e) }) return true