![](${item.avatar})
diff --git a/packages/docs/fluent-editor/demos/mention.vue b/packages/docs/fluent-editor/demos/mention.vue
index 8cf9d85..be44a55 100644
--- a/packages/docs/fluent-editor/demos/mention.vue
+++ b/packages/docs/fluent-editor/demos/mention.vue
@@ -29,7 +29,7 @@ onMounted(() => {
mention: {
itemKey: 'cn',
searchKey,
- search: function (term) {
+ search(term) {
return mentionList.filter((item) => {
return item[searchKey] && String(item[searchKey]).includes(term)
})
diff --git a/packages/docs/fluent-editor/demos/screenshot-upload-to-server.vue b/packages/docs/fluent-editor/demos/screenshot-upload-to-server.vue
index 3e00b7c..ca3fbf8 100644
--- a/packages/docs/fluent-editor/demos/screenshot-upload-to-server.vue
+++ b/packages/docs/fluent-editor/demos/screenshot-upload-to-server.vue
@@ -1,6 +1,6 @@
diff --git a/packages/docs/fluent-editor/docs/basic-usage.md b/packages/docs/fluent-editor/docs/basic-usage.md
index c1daf56..badbbbe 100644
--- a/packages/docs/fluent-editor/docs/basic-usage.md
+++ b/packages/docs/fluent-editor/docs/basic-usage.md
@@ -9,7 +9,7 @@
[{ header: [] }],
['bold', 'italic', 'underline', 'link'],
[{ list: 'ordered' }, { list: 'bullet' }],
- ['clean']
+ ['clean'],
]
```
diff --git a/packages/docs/fluent-editor/docs/code-block-highlight.md b/packages/docs/fluent-editor/docs/code-block-highlight.md
index 998f40c..54a16c9 100644
--- a/packages/docs/fluent-editor/docs/code-block-highlight.md
+++ b/packages/docs/fluent-editor/docs/code-block-highlight.md
@@ -8,5 +8,3 @@
:::demo src=demos/code-block-highlight.vue
:::
-
-
diff --git a/packages/docs/fluent-editor/docs/mention.md b/packages/docs/fluent-editor/docs/mention.md
index 8f2411c..65b8c4c 100644
--- a/packages/docs/fluent-editor/docs/mention.md
+++ b/packages/docs/fluent-editor/docs/mention.md
@@ -22,22 +22,22 @@
```typescript
interface MentionOption {
- containerClass?: string;
- dataAttributes?: string[];
- defaultLink?: string;
- itemActiveClass?: string;
- itemKey: string;
- itemClass?: string;
- listClass?: string;
- listHideClass?: string;
- maxHeight?: number;
- mentionChar?: string;
- remove?: (data: any) => void;
- renderMentionItem?: (data: any) => string | HTMLElement;
- renderMentionText?: (data: any) => string | HTMLElement;
- search?: (term: string) => Promise;
- searchKey: string;
- select?: (data: any) => void;
- target?: string;
+ containerClass?: string
+ dataAttributes?: string[]
+ defaultLink?: string
+ itemActiveClass?: string
+ itemKey: string
+ itemClass?: string
+ listClass?: string
+ listHideClass?: string
+ maxHeight?: number
+ mentionChar?: string
+ remove?: (data: any) => void
+ renderMentionItem?: (data: any) => string | HTMLElement
+ renderMentionText?: (data: any) => string | HTMLElement
+ search?: (term: string) => Promise
+ searchKey: string
+ select?: (data: any) => void
+ target?: string
}
```
diff --git a/packages/docs/fluent-editor/docs/table.md b/packages/docs/fluent-editor/docs/table.md
index 2ad515f..18ddc05 100644
--- a/packages/docs/fluent-editor/docs/table.md
+++ b/packages/docs/fluent-editor/docs/table.md
@@ -13,46 +13,46 @@ interface IBetterTableOptions {
items: {
copyCells: boolean | {
text: string
- },
+ }
copyTable: boolean | {
text: string
- },
+ }
cutCells: boolean | {
text: string
- },
+ }
emptyCells: boolean | {
text: string
- },
+ }
insertRowUp: boolean | {
text: string
- },
+ }
insertRowDown: boolean | {
text: string
- },
+ }
insertColumnLeft: boolean | {
text: string
- },
+ }
insertColumnRight: boolean | {
text: string
- },
+ }
mergeCells: boolean | {
text: string
- },
+ }
unmergeCells: boolean | {
text: string
- },
+ }
deleteRow: boolean | {
text: string
- },
+ }
deleteColumn: boolean | {
text: string
- },
+ }
deleteTable: boolean | {
text: string
}
}
color: boolean | {
- text: string,
+ text: string
colors: string[]
}
}
diff --git a/packages/docs/fluent-editor/index.md b/packages/docs/fluent-editor/index.md
index 2fb16ff..643b148 100644
--- a/packages/docs/fluent-editor/index.md
+++ b/packages/docs/fluent-editor/index.md
@@ -2,7 +2,7 @@
layout: home
hero:
name: Fluent Editor
- text:
+ text:
tagline: 一个基于 Quill 2.0 的富文本编辑器,在 Quill 基础上扩展了丰富的模块和格式,功能强大、开箱即用。
image:
src: logo.png
@@ -30,4 +30,4 @@ features:
- icon: ✏️
title: 兼容 Quill
details: 兼容 Quill API 和生态。
----
\ No newline at end of file
+---
diff --git a/packages/docs/fluent-editor/vite.config.ts b/packages/docs/fluent-editor/vite.config.ts
index d36831d..791f82a 100644
--- a/packages/docs/fluent-editor/vite.config.ts
+++ b/packages/docs/fluent-editor/vite.config.ts
@@ -1,6 +1,6 @@
-import { defineConfig } from 'vite'
+import path from 'node:path'
import { viteDemoPreviewPlugin } from '@vitepress-code-preview/plugin'
-import path from 'path'
+import { defineConfig } from 'vite'
const fluentEditorRoot = path.resolve(__dirname, '../../fluent-editor')
export default defineConfig({
diff --git a/packages/docs/package.json b/packages/docs/package.json
index 425e16a..d4b7fce 100644
--- a/packages/docs/package.json
+++ b/packages/docs/package.json
@@ -1,8 +1,8 @@
{
"name": "fluent-editor-docs",
- "private": true,
- "version": "0.0.0",
"type": "module",
+ "version": "0.0.0",
+ "private": true,
"scripts": {
"dev": "vitepress dev fluent-editor",
"build": "vitepress build fluent-editor",
@@ -11,6 +11,15 @@
"test": "pnpm exec playwright test",
"report": "pnpm exec playwright show-report"
},
+ "dependencies": {
+ "@opentiny/fluent-editor": "workspace:^",
+ "highlight.js": "^10.2.0",
+ "html2canvas": "^1.4.1",
+ "katex": "^0.16.11",
+ "quill": "^2.0.0",
+ "quill-markdown-shortcuts": "^0.0.10",
+ "vue": "^3.4.38"
+ },
"devDependencies": {
"@playwright/test": "^1.46.1",
"@vitepress-code-preview/container": "^1.0.8",
@@ -18,14 +27,5 @@
"less": "^4.2.0",
"vite": "^2.3.0",
"vitepress": "^1.3.2"
- },
- "dependencies": {
- "quill":"^2.0.0",
- "@opentiny/fluent-editor": "workspace:^",
- "vue": "^3.4.38",
- "katex": "^0.16.11",
- "highlight.js": "^10.2.0",
- "html2canvas": "^1.4.1",
- "quill-markdown-shortcuts": "^0.0.10"
}
}
diff --git a/packages/fluent-editor/package.json b/packages/fluent-editor/package.json
index 5de0465..3cb46ba 100644
--- a/packages/fluent-editor/package.json
+++ b/packages/fluent-editor/package.json
@@ -2,7 +2,16 @@
"name": "@opentiny/fluent-editor",
"version": "3.20.0",
"description": "A rich text editor based on Quill 2.0, which extends rich modules and formats on the basis of Quill. It's powerful and out-of-the-box.",
+ "author": "OpenTiny Team",
+ "license": "MIT",
"homepage": "https://opentiny.github.io/fluent-editor/",
+ "repository": {
+ "type": "git",
+ "url": "git@github.com:opentiny/fluent-editor.git"
+ },
+ "bugs": {
+ "url": "https://github.com/opentiny/fluent-editor/issues"
+ },
"keywords": [
"editor",
"rich-text-editor",
@@ -13,17 +22,6 @@
"opentiny",
"fluent-editor"
],
- "author": "OpenTiny Team",
- "license": "MIT",
- "repository": {
- "type": "git",
- "url": "git@github.com:opentiny/fluent-editor.git"
- },
- "bugs": {
- "url": "https://github.com/opentiny/fluent-editor/issues"
- },
- "main": "src/index.ts",
- "module": "src/index.ts",
"exports": {
".": {
"import": "./src/index.ts",
@@ -31,6 +29,8 @@
},
"./style.scss": "./src/assets/style.scss"
},
+ "main": "src/index.ts",
+ "module": "src/index.ts",
"scripts": {
"start": "vite build && vite",
"dev": "vite",
@@ -41,9 +41,11 @@
"peerDependencies": {
"quill": "^2.0.0"
},
+ "dependencies": {
+ "lodash-es": "^4.17.15"
+ },
"devDependencies": {
"@types/jest": "^26.0.23",
- "@types/node": "^15.0.2",
"commander": "^6.2.0",
"glob": "^11.0.0",
"highlight.js": "^10.2.0",
@@ -53,10 +55,7 @@
"shelljs": "^0.8.4",
"ts-jest": "^26.5.6",
"ts-node": "^9.1.1",
- "typescript": "^4.2.4",
+ "typescript": "^4.9.5",
"vite": "^5.0.0"
- },
- "dependencies": {
- "lodash-es": "^4.17.15"
}
}
diff --git a/packages/fluent-editor/scripts/pre-release.js b/packages/fluent-editor/scripts/pre-release.js
index 0918ebe..a698167 100644
--- a/packages/fluent-editor/scripts/pre-release.js
+++ b/packages/fluent-editor/scripts/pre-release.js
@@ -1,6 +1,6 @@
-const path = require('path')
-const shelljs = require('shelljs')
+const path = require('node:path')
const program = require('commander')
+const shelljs = require('shelljs')
shelljs.cp('-rf', 'package.json', 'dist')
const targetFile = path.resolve(__dirname, '../dist/package.json')
diff --git a/packages/fluent-editor/src/attributors/index.ts b/packages/fluent-editor/src/attributors/index.ts
index 00b899e..dab0c1a 100644
--- a/packages/fluent-editor/src/attributors/index.ts
+++ b/packages/fluent-editor/src/attributors/index.ts
@@ -1,4 +1,4 @@
export * from './font-size'
-export * from './line-height'
export * from './font-style'
+export * from './line-height'
export * from './text-indent'
diff --git a/packages/fluent-editor/src/config.ts b/packages/fluent-editor/src/config.ts
index 90fb420..11db9ca 100644
--- a/packages/fluent-editor/src/config.ts
+++ b/packages/fluent-editor/src/config.ts
@@ -1,3 +1,7 @@
+import { isNullOrUndefined } from './config/editor.utils'
+import { EN_US } from './config/i18n/en-us'
+
+import { ZH_CN } from './config/i18n/zh-cn'
import {
ALIGN_CENTER_ICON,
ALIGN_LEFT_ICON,
@@ -11,6 +15,7 @@ import {
COLOR_ICON,
EMOJI_ICON,
FILE_ICON,
+ FORMAT_PAINTER_ICON,
FULLSCREEN_ICON,
GLOBAL_LINK_ICON,
HELP_ICON,
@@ -27,12 +32,8 @@ import {
TRIANGLE_DOWN_ICON,
UNDERLINE_ICON,
UNDO_ICON,
- FORMAT_PAINTER_ICON,
} from './config/icons.config'
-import { isNullOrUndefined } from './config/editor.utils'
-import { EN_US } from './config/i18n/en-us'
-import { ZH_CN } from './config/i18n/zh-cn'
const localLang = localStorage.getItem('lang') || 'zh-cn'
export const LANG_CONF = localLang === 'en-us' ? EN_US : ZH_CN
diff --git a/packages/fluent-editor/src/config/base64-image.ts b/packages/fluent-editor/src/config/base64-image.ts
index 2b0ec6b..207f1b6 100644
--- a/packages/fluent-editor/src/config/base64-image.ts
+++ b/packages/fluent-editor/src/config/base64-image.ts
@@ -1,4 +1,3 @@
-/* eslint-disable max-len */
export const ERROR_IMAGE_PLACEHOLDER_CN
= 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAHCCAMAAAAgvV36AAAAwFBMVEX///8zMzP7+/v+/v7o6OhUgvLY2Nj4+Pj8TCNXV1d1dXXn5+fz8/Oenp7Hx8e1tbVRUVGlpaXPz8+tra1+fn66urpsbGw3Nzfu7u47OzvBwcHr6+vc3NxERETi4uJcXFxhYWFMTEyDg4OUlJTf399qampxcXFAQEBISEiYmJhmZmZ7e3uGhoaQkJCMjIzU1NTr6v69vb1ch/ODo/VskvT8eFr9Yj+ft/fE0/mzxvr+moTT3fj+rJn/xrr/1cyuv/FbirVfAAAAAHRSTlM2uXDMAABAFklEQVR42u2dh2LiyNatJTaDBhDZWIiMbYIxhvb0nJnpE/77/m91K0pVUolkd2R9HQwYhKSqVTtU8jwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPiJoeQnEcmnhLsCblwUZEvDkgoAwBPWIvjy+c8//vjz85dAmA/IBICU4O8/flP88XcAOwKA6WX9k8hDSOQ/8nUIBAAukC+/2UiFEGwIAIx/fvstpxCCjwWA0MCnP37LK+QTwhAAhAT+/s3B35Y2dDLYHZYE4SA0BJdTFVQGfmJcBoSbkLRm0xFrQuGgzBhkf5t2NMJZAz81SYT+5z9B8M+f+tkXo1abHSNGVacgHJXLdS6QkW0uSHyGeI8KpAF+bj5rfQS8SgdaIZ/Typ7UczIcLiGOlMDQTTJUhby0cx6AnzMG0Yr4R7b7OqX1p6rbpE2BQUn6VZJ6nduQ0NAHecE/slv+H/Q5gp8dHYLwISa8busgxLOqfKIQ4VfVDX3IHwMzZPlidMuXTB8NgJ9WIJ/kU1MgJP/Qf/7+/Lf8ZeJXaYmMwjAcT9kDoQHhWX36bEb7nz/hFoOf2MPyUhdLYLhYQh6jL5//EE8D06+S4hiEAZVKNB6bQcinP+182J9QCPiZBZIG6SL2ToN08j59+ZzU9v/kxVFi6uDUK/U0CKHP2YzxZ4xZAT8xVpr3P2ma95+/LVPw/wzHivlVpQQqDSrTNNH7Jd+n8gU3Gfy0FoQ+/eYk2334OQk6giAQygi0RIKKCEJklOIatxLgPoOfVyJ//3YOf0jLEUhlUEn+kyIZj+s6CPnH9dl/4GGBn1cg2ai6gH9CZTiIlD5Im5ByRfWEpBHNH18+fUqyvZ9xl8FPzH/+OEcgf5OOOZTlIP2MQhGECDOhxfaF9518MTJiAPykQUiBX5RLRqVRuRmhCyo80Su6BNNeFT6QPulTgY8FflqF/Ofvz+eYkD90UB5kRMJemY71aBOr2/FTvlcegB9WCY6no/PEIYOQkhsmlhHvCRlYLhZ/UuhiwaCAH59PX84XhxmEOCQSJj0hCNLBLxB0sLDj7z9/u5A/i+RBxmiTgjQvGbYD5gP8+Fwuj78LXKygFATB9MB7Sfj6cyc7CrGiKfgJYpC/LxHHH5+/jIrcq9JvF4OiAD+4UILwn/PF8fd/Agr0+BIIBPzi6igFfNj6f86qylwcvO/cSPB+iEDgYoEfUhyUznj6fEbQ8cmKNegDLQgUAn606IPsZRaOBiF/fv4yoKAwrQsXC/waskgaajEdsG5Olf2nOOj4f6PSBUAg4OfOWpVCbTq0OsRU2T+KIvJMQC4/VS+gXL5cIPVyvV4upg4HDHwzE5Ks7cbqJP9TllNlmQQ+O4IOHpHz4ew85NAqKZ/gcoEcP169jJID34TcMgsjsciCGm34JR+Rq2GIdrKKq6pyhMsFUjlKGQIB34KwbC5fJabKGmPUg+CT0Q34ifeHlwIKkumChkDKEAj4NQWifRa1Pk8mU/unCjp0Gjcdzk7mgHYpkGI/7mODdAgEfKMAJEgj8vwMJ87fshvQ/cs0UD8hEA8CAT+nQqQ4zuzNKAYCAb8mo3I9LAVFI0S+o0AIAgE/RhAyKr3XfpwWyKeLgQUBP4CH5bEgpM4FQhAIAHmFsCBkGqiuDfp6AvnYLXIgEPCtLIg3KJfD0ld3sSAQ8DMHIV9fIB4EAn5KRBDytWOQq8RBEAj4AWACCb6FBflAIBDw7cKQ8COCEAgE/MI+VjkgCiAQABwW5EOCEAgE/MpBSAgXC4ACPiLRC4GAX9TDShK9EAgATo3w0SYQCAAFiCHv9K45IRAI+LWDELVMCQQCQBYZhARfdTQvBAJ+8iAEFgQAN4NyeYAgHYDiIKQMgQBwNAiBQABw8+7RJhAI+MWDkBEEAkBxEFJ/18pYEAj4lWEVfAoLAkARfLQJhpoA4IZ4EAIXC4ACgnK9/p5ZtxAI+LVNyDuHvEMg4JcPQgYQCAAFiETv9QMWIRDwqwchMtFLEAgAziCkjiAdgCL0aJMAAgHAEYTU3zOiFwIBNxCEUOnambcQCPjlg5A6H/KOIB2AnDhkEFIfwcUCoCgIkdMKEaQD4KKkRptcFYRAIOBXd7G8EQtCArhYABT6WOVrR/RCIOCXhyd6A7oujwWBgF/f0eICCa6L0iEQ8OsHIqPr1zaBQMCvH6irRC+yWAAUBSGwIAAUmBC6foFFCAT88h7WexZYhEDADYiEByEEgQCQFwepIARjsQAo4uogBAIBt8Dg2p10IBBwC8hEbwCBAOCidG0QAoGAm2BUv26BRQgE3AThlbsVQiDghoIQCAQAJ3zIewiBAOCUB1/l/apELwQCbkMgYbleh0AAOBKEoB8EgOIg5JrRJhAIuBGuG20CgYAbIeSJXoJAADgWhFDpoiWyIBBwK5TVdp4BLAgAziCkjhgEgCNBCF065h0CAbdC6ZrRJhAIuBlGfCcdgkAAKPKx6rAgAOSQ+4RcM9oEAgG3I5MrghAIBNxUEFKGQAAoDkIuHW0CgYDbIZA76UAgADiCdDHkfXCZCYFAwA1x+WgTCATcVBBSn1IJo3kBKAxCQlgQAApgLtYIMQgAxUHIFPNBACgKQuoXLrAIgYBb4uIh7xAIuCkuXWARAgHwsSAQACSXDnmHQMBNQXptEwgEAGcQUq8HEAgABUGIXNsEAgHA5WJdONoEAgG3JRAehIwgEAAKGFy0WyEEAm4wCJFR+jmrWEMg4Ma4LAiBQMAtRSD8v7Ja24QgEADeGYRAIOB2gxAIBICcl8WHvA8gEAAKGF2wZToEAm7Sx4JAAChAJ3oJAgHAEYZcMNoEAgE3GIScP60QAgG3ZT14ZyFfYPHM3TwhEHCzQUgAgQCQtSAiCKmfu5MOBAJukIHwsSAQAJyE5fJTAIEAUByEDCAQAAoonzvaBAIBtxmElKfIYgFQGITUpwGGmgDgpnTuaBMIBNwkozNH9EIg4EZ9rPITBAJAAeeubQKBgJskHfIeQCAAXBuEQCDgZoOQ8RmJXggE3KaLFZTr0zA4OfEWAgE3qhC+tglxfQQQCAD5ICSdd0sQCAC5IKQuhrwjiwWAg0AlehGDAOCiLBK9RUYkgEDAbTOQo00KXCwIBNx6EMKi9LAoApFdJFQq1yEQcJvwIe9lKgpBAvaHAlgQcNtBSJEFYcLhWxgSBAJu18cq18eBeydP0rt8QiDgZile20SpJhxNIRBws9CxtU2CwXRc4RUWAgG3ihzyTrm+wiCsc3FUIBBw40FIssCijkSCICw/VVIgEIAgRKd1edBhiKMyfkIMAm41AJE+Vn0qAnL2nwo6tG81Hk/rZQkEAm43CHnifebBIAk6pDqmU96LWK5DIODGg5BpGGbFoS0HYwCBgBt2s3gQYonDVMcoDERvex0CAbeKsA9ucZB+AywIuFmYCzV2iYMMBZUr3xAIBPxoQQiLyJU62I9BWPJUigsCATdPSemC/1cXQQfZb6inyaxvAP8uFAr4gcL0kar+SdCR/Ca1IN8WFAr4sXws6VfpsCNnQb4lwoIQSgX8MAQDh19lUK5/awsCfYAf09vCLQAAygAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgG8N0bsWfqMPeD+ddxwqehddfBp07emDX10Nuj5yPPn33Qqw3/JQeyl4z+tm2T3naDTY73v5X4TqVcp+bf/+vl90uqNGc2C8Np7N5JFfZ7OAIBBQUJtJWg6ukAKN0NmKae73Xf06+2/hx+6PBWs/qhe2//KwvX6FPXry/fv899T5q/nzIK/h+428bOSzju/vjecV338UD2q+H6AygHzrrMwGqVrp1MdwMllPEoyH+vnQfPej75vtfaFAer6/9NQXF+gtjPwqb+eZFMg4ZfmzbAsk/a0QSO7Akrnvd71UvlIg7JKVQAg2BDg0ov+QdrsyAvFPcIVAvKDt++17Jw9aKm++zx7TNLUg6f9kWZBGrVZ2WZByrdYwPSzfX5eOWhAIBFgxSNJmklfYgrJ6Wr27u3u5y8Ffqvr+m0MgdEIgz8V6a+v37OShngwpkNeM42d+dFMgdO/7T/oytAXx1EeNS2Ie1vLpacz/Ur3b7TIrdtflbH2/yX5MUSdA3oTQ//37X3/9/vtf//r3/zkb0KGocertvWGmFjUsC0JKIInsCgQyjZnqZm5q+k3MyKx2ux1r3hc7wQMLWpqq1bcsiBYIpRaEvIy2GNtUhYNHhzT3qA8gK4/Sf5k4NH/9t0S5kMAUSMt2oAyBUM7FomILEsxY233Koxnna3DlhEDUCSWnawtkFEEg4FzfStXN/xnyEBL53xELQsHC3wTHLIgUCOVjEFt33CiEp1Ji848WCPOw5sIQsX9BpdVqsbeuWhymV/6jgqoBtEKk/fj37zn+7WW6RAwL8uL7UZzQLRKI8UVMIJSVAO1ZXa91nKTHYgHCehoOwkGXRQ7hYMD/0nsEEk6yiWWkeUGhQkSHg0MfUiEuCyLce5Oueq1IIKQtiJ0BIBZ8R6uCCP1e94KM1jLYJpKRNqnPnxIIcYGQSyDPvv9iGzIhELIFgjwWSHDqgyvESvcmFoRVvWhYOVQYh+bEbwdFFiRIYQJJHquGnNXmeMiCmUk7h1GfhxH7Akek7RAIHbcg6lJGsXDRYEHAuVbkf4Yo/vtf48n/yGFBgh1v4asqnbr1o25RDFJALM0I+wBzzlpGNU4YiEqvvnw8G8uOdW1BZFLaZUFEmpdUL3yS5iX9UU/7dUuzv5HyAoH1AEYUUjLi83953r+MSL2UF0il6vubRuzHLS4WVqOevSsEwupgab4+eGcIJPF3Mv0gBS7W2GVBxumb6pEfVQYaaj4yHljUzn8+MtP1yn924WSBBNNm/ItMgfz+X9PJEgIJWUiwHXmVje/vgjETy44KBVJ195DXVBUv87rMBPLQzTIUw08Ud9v5fMuZsWh9q2gWxyBq6KWKQeSoAENbLALZNdPwae/UcAPiALppJjPBa1uQ3/8yR5xIC9L3H0XszKprNU4Tv+4g/dSoYOICcQfpyXvarl+3CgUy0xpa+P5CP54Zb+q1w9MCQc0AWiD/97tlQcgUyO//l7UgzF1RbpCouK+e4dEcG4tVBBNIPMmyNiv9fJ2+Gul3vBUKxD+pOPKmj48L6UzVB0+SsfUjhAUBKgKxU1gZF0t2hmSzWOxz3Ye1rHfVXiC99axAXnkzf5ZAimKQbBxwMot1hkCS421VvooQbYDjWIL4V/55rqMwbPJg1o/uuj3+c70bBg6B3Pl+P1f58tWxUCD5SmsJhJwCMfLKAQs2ns3n9sG2VkIXCgGF/HVMIH9lsljUf5AxweZ5xKtVf8afRPed0BII+83K95tqVHpK3sFjAnmt18viT0LFDNKTA6g0r/qgM81rHryRkR555ojleSqQTmaA8rOHSYUgrSq/HxPI70a1ExZEdKJvHt7CpvLQuvsNe2UWGAIRH9Bzkk67WCdChvNdLLLG6VsCyQzoJ9OC1DJfPUO9AMUCoeMCCdrLzpi99OAvGnpA0+G1+pRzsZihWdayvObcmRMC4W8OFpIJi+fVww65XKzpoRIUWZCgcpiqCH3PYaoWP9+EQIzpkRAIsPRhZXmZS5V9brtY+nPhXHhWXa8wizVxVftc3aOQD1hhVbQmh64I+KNpOiU9yB/n0WlBapbRsgXSZV+RPDLYiY+FyURKdt4zRCXA8IVsi/Fve1zWv8glEM54zyWwTPqcMwIJorMEIuj5fvtIYpUJJOYTqKqspec/2ycEQlmB0EmBDExhw4KANPotHKmYjld0C8TzSr2Nn+ZyMwJh9Xdet6kUCKQX+VFzkCG0BLI1Y5Du+ywIieMzC1jmPwMxKWWQthgQCLBC10xH4WCQ7SjMCUQno4iCzroduAXyrMf/pQxSgRiDBWnnn7A1HywQiR2kw4KAQoFYQcf/7LG9f1GmH0ROxVh1unrM+tQZg4gskTlFnWyBpFRm/nsEQu8UiJoEUkuTvDEEAuwg5L/26MTM05wFIa/Kh+TOH4ehIR+yLUgptprlrAXR3z3Y8VAlem1adJjPNTwhEPpQC4I0LzgSiPxVFKRbBiSxIOHzMhY1Kdp2RsnvbYGw6luljAUJs3WvvufHYQeLdmY/d5+98EZugdCHWhA5ozhJ866R5gUu/lcUov/PWiArCdJZbH/orORgrHmn7spi3ft+xztqQcibcusx63pjvnZcV/fg0atv66PAxTpst73rLAghBgGXOVlHptx6VJjFGjeq0iUJcxZkzCr5yDvlYj34G5EDC2t8cnpXfFWfqWU9tPoh3AJJzND7XKyB6gdJvhACATmFkHvRBrIyTjmBcCE8t2XtzcwHufP9lXdCIOyFhm7EWwsmtG3Te+OSe8kEL1kXq5fMYny3QMLXOIAFAaf59/EukCKBCI00zRhEyIk7T92cDPNZrHR8VNDg4Qjvelw0019QIhDSFqTVe96IqVhugXTSUJ+J9M4I/B0CqT+u+XlCIOC0GckvHJdbxooJZFcpZKctCHkBswMv+cEaQiAFHeaj4Z3u2n4rZyajM4HM+YMnPsZXpJyiqWUa7gvSURlMgRAzWUseA62m/GOPjQSkeYGTzNKjlNPH+au7sxoXl71jLhalPYXBtNuobeQB1PitTa0x7E6TZdatGKTHZ6DwyIXCAV8NaMS+7I4uFshSpuHuxnJ5R6R5wQkLwhOedXPx6vx08nMFwkfEO2bbUtbFaj3U5u1Yf3hz1xp5094qTlc/WbyKEys9PvaUBbmnsNt9Kokz7vO3rLkV6KTCfGgU8GALpMOF0BjpjkIIBJzWh15EyjW1if+KCaTWKqSWCKQXGVPVDRuU7QfppVK47ySr9ZSa+6oe6NixPm/sMMXPb6Q/XQ2cQbpNJkgPlp1k9VH2sYqYrVVm/5fXEAgo0EhS98hygwyBHFntw8hiDe9ccwdzQXqw2cxrr53hYZA7mXK339mvqmPr7Mb2ygveTgwN2adLZDfu78ceqdVUk73k5Cvj+/uik+dpXkKQDk4pJN3N8/gWZHTiBSr6GB+jS9Z76PSHDIXoieXGGWpbd+1+tsJmWfPVw0GIygBy9cWyIGcKo7hm0iV1li6R2Zm/vlovmCgFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPi5Oblxkt6who58mL7qiR3/vbVPOX3ATaCvdhnn79VDH3C36MojYl+ea24KFdRBygqJvtE9J1Od9M3uw9WHoq9XcPRBXwBlfOAdyzSMxtN6rzc61ZjlD0wa/usxO4Te3ZLMjcpzlWE0HIaO7+jtesHJq0s+S+mJTYfDs5t4yl4TO9FWr0t6F17j963eUL8/aI2JzqrxTgN05M6SeRuTe2fcWPMTjcfkjHY7/rBkFYZ9XbesgUOrpR49R1HdWVKnrUul10t3k2z6fvOShsnx6172EMkbe+v1SJ8ayQ3IK7IeWD7Xxm8f+8p6s8z+7zt2Yn72/eCCBuTlOXMFG3/nuDJ2Pkt9RxvJjtGFnit9dGvm+P3a3+uHkf/ojV6WFwnhdjSz9311yaxu1DO/qx5h76UCYoX+lNy1nECmr0d5ylgQ9o8JpOts/byO71vmqcUFkrNLb3ITaHKWKnvfI99MmRKBkCWQCzaOvfP9WsA/HYRhOOD/Nv6DeMAIDNsnBcK/aLD212H2xGrrI7yeWRbe83EalgFnAtFnEfuvvEnapbI/xv7GLMirFoiXFQh5K/8I5lb3SiCpBbFqwNA/yvBcC6IFYtr/lrYg1pnPfL+63S63WbSWZsLAWBaEVegLLQjfDb3NvogbowfHdT16pmFZqg8tfX8iT4af3kCq8/7Y/ZEVt3ayLErHb7MfSWU0pFwify4fBbRmAvF2iWHz6Ohh2jcoEFm9bIGQKJRJo4CJXzN2RM4JxLtAIHl/TFiQ1M+njEDEC929gFWtF/nozXqTG6WHge/fZQXSlrXsEheLnUbI6nu77hbIs2irQ/G+RCB7+z3yhtO9Hz8o7ti/tT95SJ+3lEBOlcVpgSh7YTNgJ7cXyo0O6rraCw37/cKmvb2xoMS2IPaV1/yqrgudh5b1q+oFFsT0lYhKxGrTMOs+NVcmVd+fWy80cy5WL1v+qemvx/7k0YlqAJgyJu12e8NKv82pXicQcWms5V3UhYsl4C6WosTqUXe5HpguFnv35E6z9mPlzt37E+OYpdgMZJQUWVnom9pwlgV5oQlrlXqhjTxQW1f9tXww8Bbi65h32A7y9np/wyE6pQIhWTfKXoFAppHfu0QgR9MCzLq7nKpj9HICeZsLuI8jH2kHwQuYg/VWHFGyJ1tH23qlQIRNWKXxzcau29NYClcKJGRfvJgal/zspQJJT/LAzz8XprjLgnJlkZZC69hpyyCdpPG8k5+YZ8q/G/lVfTeofGuZ4MNbk1+vMwZplexC4fa30RE0OpUTAhkmAsmnM/kLc0tA6i19K+hkbXvbeqEvxME8ZubSvD4/d1RKUwXpZhTv0Yo7UHQke8o+M1fuWU26Z+8QCHn7NjMSg9dHkXGI/arKPdTVnYmm7D1cINRbs8sql9R5sNqXtNjSglAgYXezrB4GpZxAjLLouMoiIxA6KhCrscvYfW5TooqOtuaT6Y3ZjxfZaqUCedQCCWv+q10oj7nW/HoLwqrn9kjJCQe3l0QH5rsW+UCRZ6IOVjK69MK8GKcV0iaG55EGnhWD0DssCLtf7N8493UHodpSVQQIXCA8TqkNupuGuMTxxrhNUiADx0nHpkDonLKwBZJL5OmERiyyWCJrOOMm0NGYbdN75r1F/mJ0W/7Vi/R7X3Np3gNzW9ahIRCeFV2qgHDFi5WcAtH96EMVg7hjOealH7f9lMliUfKvHTGYQxRFbVeaVx6eleq8eVQgj7xeqT6UbtL9f02QTmkWYaDsRtaCeF2RseYCGW0WQ1HrXgIW08UyE20KZHRcIG1xokZZ1NRdKhZIPs9dmykif6Ifxv6a/6iyPy/Gm/k3pUXAfNtZeHMWJI1BSLtYQYPVwWXZsCCDJc9lyHZ6OlE+dk4gbe4TiX+soV+Ix+1qPoPLHSC/7xyuYvTzpVmsbA9HEoOoLpOWaKrTaJ8d/j5glbKVCVDrWiC8F2SZxOrvymKZRo9UZyWPQShtp0U7POPGj33nlGe0SixOn1eYdxf3PS9nQe76FivbgqRl4RWXRSqQXSkfg7WPx3qz9BOsTOehYZtZRVkGt2ZBKJfF6rEGPu6ZhXJgFX659SNev+pt7TfnBOKklXOeRJrz7dT4CdlRmH8PJWleR8/Bmr+jEr+UeJTbzxouw11I4p60o/AaC1LpSax2dZNNQMmmPO0oZBcX8bOdiCEpVpA+EOdIhv73GReLl8X9ibJIv9ZftHI3t+PI7VX9WPx8fXzsJPlrZp62gXnvw7lMjt+gBRFhcIfXjV6V3db51CqUth89e6UH3mf8tvbbU1fmhAlk5ep1zY7kIJms4rW3MXRn1RKBeM6xwtqCFAnEO5Bwa16HCW/sz7CVCiSYz2c6A9aWGbD5NQLRrcLU3Q2SpN5mTBxJP4gX9FfcTXwom9eVWJBONkMWF5RFqMriqEBY0Q7d575rHNKvf02/RcN7QJW9oHK39fgyW8tLolsUiOCV1w0uj2YmtXhYiFc6EY995+GJNO/xG9iM/OhOCGTPm0G7F7BTS5ix5ks/vstm5oVAhp0cae6zezQGCR2/K31FgXSbIkjnFzru1Xg/XfQwte9TIpCHoUXWxZJlQUfLIhXIHfentl3H+Ouub2aKO/Kah2lz1mJnue4872rb9tpMh/tx5RYFIrriWkIg82Y+914SrkBlzu9Qr3SqH+TI0Gvqrv3orS8E0mLN6M4eYFowmGLtFMhRWPlv72xeDAuiX2Px8r16eI0FCQaMnhDI6Gn6xBiLvwmh6XkxCxLIAGD9wFv+5m4XehdmsVhZiJulykK18MVBeqnDq/fLKFcau6SLUrmaU5F+T9qieeYkqqt9Z1gJeWY6vEGBpDHIm7tzigYd7nvNWLsyeZWNn1EoZGSIvSN+ExdF1PekQLxmzMNp8z3P223srzOjp3x/kxdIYKfBSsv7XlYgfS8disz/mjEIeR8UpJOqXM5pY2TGXtLFYgdvv6rgqpPeMkoFEk9M1rGdxRKMzLLwTqR5Bw+sIYo7xqigpUwF8lwgJ46aItHGDGuU9FsK4xgvqsva7rHTPwySgz77rq/69QVCOs1bdgw1mbZ2VX6X7ype+Mx7GKqP3WyrtROjY7XLVDBWpyGjdiUQ0RFQHdnVaqfyy0nNeU4D/aReTTuTRTp8hb0eiAERxmEO+USZIRDSEyf6csywnDhx3VgsIRBxwOe9TS+9MpJZLHainWniVnbMNmUpmoGByD8rRYsfmRhElIXvKItVcT+IsDbVtCHY5ofC1aVN9/1xcrcq5eQuUBAkBUrzSfMcV/qXtSD1vAWRnna1IXJHFPRmIlDJCKTmrlbWtBvmp0ctLxUI1ZnHsbAGN9BBDVNXtZ2YTb+33TZWr1jbubB9HT0QS7+PNYkz4TfeJ4O5lrkAOLEg9J40r3JPyOjFlNxb/mMapGuFmgKhuczhsnO0jVBGIGlZiIrbcZaFLRBPdrn4d9oMdN/eWISxfUsY8F71Z14f2s7i4+WVKL08IO9Wxpu4BOKwIOF6XWuNvPpmN5X3qN6ZR4dMobDq18swNBtQz6tvddTaT3KwPHHYtiOKub8xTEi48Ndl0x6NhXvhr7rN2IRJj/2/JsOCOIP0REA7ATvrlXw0vkYgwvhIgQgbUTXmuGy4sNPzHqyZQKbyZNfiT8yNcrxed5STNNcWxGpaMgIJJ7wsSJcFa2McZWEJRN57nvKz+vyiJz6+v6T7O+f+ixes1fAJz3BMrfKiU8n5W7AgDhdLekE82XXfVPcmzLpYs3x1vDddDOpxl3moWyQd6gRMNdXQrHGViB+XVHm8qBoju90Gexnkvox1EtM5nJvXtFar1Zv4ca9lMjYDmdyI+/dZEC6QB6PazMX1Jz0mvCvJm7pUK+d1tcXbmUDmesS7pGoJhLyR7rJjZaG+Kzw9WJG8/iQeJ2cX8rlSNODfrRqfB39mjO4xxi6Q1aDd2KT1M10sfa+eXpnPW01metuF4hj8tDRikSk3H/eqB1zecPmbsJodwPAo3AzSvSFLO4wQ/hU/Tt3M7zLPY8t/Wuf+cGRES0f2/SzkkMj2lQKhvEA8p0CGsbgfodU7x27Jjv3oqvtXOyuLpe7nWJeFGoJzJAZR9TxspjWfFXwoviwZ6tLyo6DqbyirA9uC3BpOF8udxZK3qtRiNarqEsiT7z+MFGXx/0JXEFJOcNwx2tz0hrM3+nOzRgZpsMDHr1gnVF28HlxpXh6DZJcQ2THRjG0GpkAGaQxy+CALMlGdjrwXMjYE0uDOlCX1TBbLK0UiiArvNSzKUo9quYyiuFJdFnQii+WABeMP3W53yATa5bCXykwsVpav2U7Z+P7GeFr/9ZVB7iyWYUFG+64a2FS1WpSgo5MYdqH0co3MwqggA56uGntOgfABRfYIn+BeVnce1FdtLYysfpDmA2WD9PQrt0enwEqBkEsgj9cLJO9iilNZMefyoIea9LaBQyBTM8XGiSxzZAtEvaeoLE4KpOPoZmozyzwxrvvIHNBbGPQuXfwCF4v/sqImiutCWbUfWjJET26iVSh3OefMFIjXjV4Dr0Ag3qEW2Gnh0oqPagnvja5iV0dhy0+CypxAWmsRtotgOJb/sZi4QUcsCF1qQYiyAll1U6rq+mnInKH2VGWx6BD5K8oLJJ0g0K+bAumm2VnS/SBJWXjusjgpkIO8ISqzEW9Umt4YW8wqgNHFurV7XQc3sxLQEQvS5JMsUoFURNMxqXUMFViF0s705mUE4k0zbW6/WLjsX1Bj2qjqsXKeY066eHGbpB8zAmmKfuB1z/xsj9XM0hGB0LssyOBRxCBGNlrHIHzs2TZUaV5Sc1jTfhDVldlTKmMCEuMQlUD2/mbkZWIQoyySsfZXzSgMjYVf6E1McGChSpJXSRFpXsf6Mr+4DSHW7JvD3btDQyAtFY1oCzLqi/4pnoJXuV6rULo5FycjEKuKuwVCRsvMjBvP5QYFDsIo8dziaV4gTZ5R2zaZyO6TAIYP71uVvMtiEPLGo9N5Gy6QQXvNr7g2TZmpNO/Yjx7JU8PdlbFt5SzIzo9kh2WVzz9MBMKOPS9lEya8LCKjLK4ViAzS1WSYhrqDm+fAdYW3G6STyN+GrZeJ/2IIpOFHQRqDqITT8FVkWavPI6NfTZTQShkct0CyXevZG56fydYSamy3yO5KyQiEz1mdU14g7JPcP2S+zboTiO/uMs2syD5ITiDTschxpxZk0PYz8/ALBNJtcwNQEIM8SN8p6SgMqn78pAVCiTme63D+0XSx9sZiVemiDURJWcguw2qywsx5AiFlQV4P/c6+FpIIOVRHTNPLrCQjs45EN9UFYrhY4QsfpMl7FwyBaH/XWElDuqaPrFyiUcbFGqe5LYdA6GiLlL/ZQY+X/Zy7SYtekDUvpkD45LqG8MksC7brlISyQtZYTxqhd1gm/pZbIM20WpgWhHdbb07GcnyBFD/q8SuOjcVxVBYrqWppT/o4lmowLEgYSV2wX6kZHkogpXlay2uZm6zLgi6MQabDVudxV9tW02V/xmIloINwBUJYkFQg686dmmC2fmmNeN1o6p6kGrkKhbXCh9e9nVrkvlq+pc24WKYS0hvuaIqCDm+JZ+w8hrwEJ53Q1ochEGKtsUyOZYN03dI2+do2PJ9VG3lFApk2h3NjEJIhEDF1ZXzqLvJ3xc1sPwjNjaEmtkC8jjxpLRA5R5lnDcsLP1KxOhcI//yImcG6JRAy5vhVXveXB+nWlPZosb0Leaq9s+ULBXRkw0g3LhB+/W+vKz3QP5o3DqQij213NKrzILenLcm4gNTFYjdwRicF4rzhmY+F/Tt+UlXV0d7n6o2WHStB9mz2g9QD7U7vHWosHRqRXOKh9VQoEJHQ3KSe90MiEL4m3MmqwVMFm4rnHe0o9MylRz2SWbtGakFe/DiQnaY6kyQtCIk1VJd0flmcIRBWyuv2fPXA3Tfh4zU3fPmhAy/zlfTohtYABPbGvfXC8BZEslSWY7t/C7UjMI3S5LhsuI8vd6masTi/BDSdKRCTcm8ZJaGHFYywsEdO06nXQz7TLTCENa0PwsFjusCUskPTbms/F45DrOZgLJ9bzcqolBMIc2/8Nj//0nhaDoPuxJhdN9r6p+YHBWu/WvdyAuE2OCcQMqfKcDmonssw5m8uLbmbK2bf8FSVnitT043V2cvAnhBIWA6MIF34qaJ5YTp4iWRJnpi3fhNrj+78yfK1n+n06ehVKdvdpHSKkcMbwgXvj8hNhFjosVj5ENwpkEBO0ZnsuvYHpg2pEbHkzGtSPnretlfNru8b1ObtOLGNz90SjVq1dFacdBmfWq1AxyAjZYYoTsfIqDMN1nFwyhg/blVqNBEIzdvV2L5GStK8wslZb9o8ETVJ23R+v3uxGFLQ8uMNvyD15tF63f9QgegSUgLZsdsk7BYXqLo9Ny8Qbi3KriBg1OQm9G1cSgLDdj1HuVxm/yuzzjOErik02oLQGRZEZDif+Uy7Jjk2Ehk/t0Uyh7i/wRc7sIVuVBBSeVSujfZ295Zm9bvPq6oYL3aXzUClH1RGtf2UrLC1859PZmzEAqNKIMoSi/m3s8C6enO4+5uSb1+HUqu2XDFGWBQ5pHGRKLM5IrVOMi+Lct1B+0KBiPMcyJ7Tadw+qN6ku2giDebUnhhpM366pQXkTmyC1Ns9F33w+aGnQ2FXK7urNYq+s1urHfJfW9oPA+dqiGK6r0zPh81m82D3u0/54jhvY+OV8b7zdhgZ5otSx6vZOpgfPtzdpcEJPTU56aGeZuZI4yO3Tj56fNDLUDH71Kpn7ubzPs1jDBrPjUajlYZWVDEzXnzFq27+i3oPzwUJVnreOdLR41qte+zMg2f5Ld3AEDthj6mjgtB5dvou3+v4FV1/WMpv0kZF+5U5Jzrc+8vw5Pel+/Yc2eoxO0r2zE3qHBN56UNu/uldE09ugXWz4jj/RiUhJ118ZOe+NlRUQ4widL6Hii0huSuo80woW887zYtq2tU3mU60CXRtWRJd9Am6uvx+WXnQR1w/XfEJuqq8z7U+ZF0hFTbPVHjwawzXBRX7TNnQV/r6458DFwvmW5kyKhDQ93CM6fz30PdvcelDP4dABAAAAAAAAAAAAAAAAAAAAPwI0E91AnTR588beUY/eecd/fqVkX6g+5Dt9M8NAqCvd2J0ZGgN/cwlnhsYSR8lAPoJ7lJx83OkLtFXqwL0tWsYpROqrEG9Z4/PvGZI1odsC0Af9J5zjuCsFXTsm+ijBEk/XQNyqozda+l9q4aUHM0QnZLb16ilyR5B9C0u+1tVALKWc3faEDpWDU5eO32banI1o+HQva1fUK/bk52o16sU1Qqz1aHkVmWvc9jvnjyf0Nq976vQbPUdZXE4WiqHuWYVqA+NW63SWdaBuh+2Gqc6Sr3XG5mvBavk9A4fY8JzS10FA+sSDrvtwV7TjAr9jl7v2NyA8SgxHNNW88fba/0tt/egusxxdr2ewF6hNWOS9dN6s7e/X0xCV4i5OGMPuyvWkSE76KAMuSK7T1a0etuG+lP1aNI5Jqpk0nVydh2xTlSuXpSbPfsCyjX/pURHg+zTr1JFbrlO+mysOsen8qebmXyUEEthvdLs9xr7l207NvY/EMUcucry8Nhu5ByP4NgO6uQto52exP3oWnnre1NYIc8ViLgfwWBa6bYea9U4t1i6QTJV/WMFYjJzLSQws9+z1AJpGisCPTt2YXMJ5MWzBeJND4dutzls9fjGyPMFvwGxuRYRjcyVhLPsq0cwlyvqqK2ChdKaOSHUPkogwX73UrvfztqbOL+PkNEU7P3I2sx9MB7u+XoScc4fKR0TiFhYUNvgbX6NwR9WIOdZkMND7X5eXawje1uX2cvzm8sZ5xaErhRs766QxrUC8VZiuzFxvQs/GhxpUbVAjD3glEDu8tvaVO0FEfhmci8F1107dzkSYy9tl0DCSVKN3+nMra1TmFS3fDPbVnM8SNa4ENPz+UYi4kGz7vW2yVox7dfcqg1HLQhfxEI3TKXY3/0w4QeZuzA6g6NUILvlY4FA+pltztqrfa87KnKAWCWM2yavDve9SCAvxfVoawlk08mwsQRCpkCmsd5+qem7NmLKW5CelxWIsd/benv32BtOc05TsCw0TzV/0ihg4hKI4WLZ39H5KBer89jotPrN7mE6auUXNXO0QR21egwr/U7d4R8ctSBhrDZlJ7EMcsvtt39nC/LmjDQTgdBMrtITqMVu7aWm5y+710av1eyOR4E7WCPDgthod4UGKaxQWsbT5BCvhrAW9rZGd1bp5ax0tdiCcK+3qVvy/hkCWQc5gdB4XB/xPS/nRj3IrgrJ7FOlQCBV3Yo0HlrWZ6snLYj5LeH6I2OQZGnhbv6CXAKJW91yUY0+IhCxcvyL9zabzaozuendTBN+V+uR/pfsu5yNC1MLYgokt1nBIXcHC9fZYBZksXvY8b/ix0NPr39WaBziTDJZ5seGTEQiGDf7JRKB2Cl8vmtAoQXh1Yp7wBRG5gqjxQJ5pJxAkgNzgRRktKhr27msQPiFTKOMS1u9xMXSC+e9UyDT7Lqir9YLYsvegdhGbzAaqG31Ar6BvSoLV2XLCMR6V2nDVzjuuYp+8P3yVnODWZvJdma+MlTJ27GohYlASAmEV6fuwBIIWd7UEevoyGKJjxwTiOtAw+Jlz2b+oplhYQik32fFXPXXvLQHMjafj+Sy8J2jKxpJgUR6aWx+o1iDx25cahiKLQiJtTvfjlgQYdf8Z73vaCUrECIuEFINBI+I9DJ6ZOSV3i+Q3vFlE5WChzWVPihPHqbsDHZ8q7bCTr68BUm7A/oi0GqKDRfZDWjfp3w/C3LiJrQcFmSVWpBgeDdJzAYXSGF/e3LHSKdeF3oX58xnAmMHdebP7tJnLc9a/kAaDBIWRKkxU6tPBOlmNoFfBKkNXqtyweFTFmSblrmmO003Vku3Wcumciho+4sSOQVC2tkzKiK/W5dZEPLmHyCQvnRhle/KAv+JFTQqX+PBj2XI3vAjvsT1Tu5lWGBCSmbqL9PFWOWy1xmfxJf5zvFHc5Uy8fk2pf7EeKmrrEDGgsh9BHorvVtE1sXKBR3ksiCrD+kHyVmQ9KtnfjzPEBvry5sC6Y4qgkPlwL70hT8KTwhELyVJ/Eaxwr1frcYvR5pa4/TmbqunYxCmj6UKzmuqlhcJhNVDl4vFE9UfEINQ2rTxvde6rpJMthVt86pPWiAFFMUgJK56ZWxkFYX0g+1wOIhjZk966yR5rW5Nt11tt3mOr823WlYCGduNr6rNrW6XdwQw5P/sx0E+DuycGWVdLHL2iZ0WiKgfLXKb9BNBOl+sdhz5E/4z2OfqdfOEQKzqomKQIoGQlcTjXuSMigQy4Ev/LuRdnU54spMcAkkach7O6lY+3W6g+3FBurq3OkjPbgPGznrGX+iqmqAtiHeOBTHosvbqIfngvCBM+y4hehLYPfAK+ar6yyjXLSZ2AmMCoa7c1suf3L2x9rviTvPa1NUxX5OOr8hfG91g04+zIBdlsVp8bygSfV0XCiQKMolVLpCB3nmwmu5DWM+Zoo7WV6YwhEAOrMIvt77YorPe1htJ5QRy1CNmFj76EIG00hLiOkyf6Y2NWFzON/UZlUd3/ow9CU9bkK0VFCabPPCORSYQGeuzdutxZPIDdKqPYn/K07yjKK5bTcS4VquxRm3Gfgx4Sa1VN9SyK7txLxBIcV/Y2BnQFgx9+UCBbFlN74o9NN+yDI4LZOY5BOIM0nNs/drENTiD72dHbT96Jr6XaC18W/N9od0CWb046KY3cPYx/SAnIvSxn0vW76zn2S1bKfsBj4yK8WD7vUeO8x3YMw/wjbfYd/mt6UUMwmXeqomwI1p2VEdhM63bTCCdYZP9cZCMO6v58UMOc2cz+lALEi0yRHbFrov+jMSfT7YvptNB+n2xQKaGQBxHGkX+8FVs55yJZJUFEa1qh/l+xv7vOYGMj+fsvfsPEIhI6DVVqoEPv1EP+9cLpJQTSJIs2hwXyPcNRsh7itntFBXyKcrcWEqyWGITmvilH5LuBxmqfbult3Jynz5WB9bOVJr+5Ks1boQZrqX1wv5CgZwaaiJj2cWFafZmbv8QQyD15wWzSVwgwWAQJt2bhlh6/rpUj+RGJpQTCMnRehWeh4p6ur+1nQ/SM4PMye4GuvsoCxKoTiYepMveJholAgmUZCb+XD6Y8o5CkV5oi2EB2TMIuOdhIk9+GvvxQWy3KLpYOn70YPW5tA7fVx7kBTx9q7Z0evY3AyuHkViQqt9ep2lekk5QPb2Zo8IpV3SmQBbH086TCwXS7mZo2wJZxHN/spV72HhHR/2a19K02kZKBDJ8Clpic52q6CjcF3Rybf0Hohc/HhRlsWjQ4U3RjFnryevUy29P+2zsnJ7tSCLtEHyUQFJrrg83MjNzopZsVEqS0izWUvd6ZoP0O8fpPnBfWmy3KA7Xy4yF+wFSWa/+uqxdmlKV+Q/2dXELwl5pjUUWi12WHovVSitAum/4EYWcEAjNNyZr5v9YL1Tp0hiE7K5LOwYZ+rulvymv+d7ol1qQhtm+EKtJ3aXc6DOqvQVekUBIdKQ3xeaCz9miFwKZtnZcHfHdwQsbPNyrPnZLGYHs7KO6NoVofJRAjLKYqIeT3GbFmzRnr3rSuUAczUzgzmL1+e2MEt9+rvvIfhR98ELrpUNNmLHr5GKQnjxTe6gJr9ul5M7E5OwhMrp56ZhA8s6/cw+2iwSSnVFoCSRY+GM+1ORNbdxmVPijhZIRiHLWmfd8YEfqhbKj7s6rdw/dRt6CzPyJHM69DjLFzwUiE1TVhsy1Bx3hJs4zAqkdbYs+ViBHg3SdlucCoUQglgWxhcwtiGWpJeGDZwhkbOwkWVTs35b6hpWBzHX3pX2O+i6BeDmBNOQIKbk13oLX11qesRWD0DEX64PTvMdH8+79rRyL9XKq79whkL3hhQYtXo/nXR6Slaws1lumrSduc1/VQToOCxJO1rXWiJXITsV29c48OmQEwvy4XoZsjXr9KIFM1faGrJD6at/DQyqQzlIQ+xP5oKQEQgXzOVz9ILovORHIqz8JLYLvvFrLqO3HT2aFDOZ+NDTmHxdbEJ6ZVM2IvCOuFH3zrBjE0dn3boEcDdK7EXN8l3x2XDhpqYEVKfUzg3QqDV9i3Qnx5hCILT1mtSahSkytR44YZESyjvj+fVPdjTAbg1Tzl5XdS/vuK8Qg3XwMssucRsCCq4Uox6VLIEc6Cj0SQTp/MMle3Ov3TWAN2lwOVoXkLzVPWpC33oOxF/KE74fOx9G1rZlwC6ucasxFX9XY35VhYVh5G5trNuOokhfIUxQPLxfIOjufap0KhIVaVVKjecf5UWnTEwJZaTWL0ZUTKYREIDMuEOm0DrK+WC858RdnkC6v95UdstoLnGne9UmB0OrbCKQlb2vsb8TPlxK7oTPDxXJYkMIOIm1Bhv4ZAvl29oQG1eR60wr5tPbjZlYg5NmjeXfmtOyRtClMIOVsBbYEUtBRSGb1O+QFkvNL39VRSDIV1DWn3Gb8wtEJgcyTM15M9k8qzctOJmCQEEjAnINWJgYZrP0k0bDK1mBTIOSVWgs/ecESyJPvP1j9zKNFzoLMjwrk3DGA7LJiBQuxIv3YymLpGEQdrqri9esFcrAzvOZtIu/bLgfEfaNxWynUmA/Ch9ZEcrRDmsXidsNTWSwpEFYd5n1Ka80wLxDKCKSxtLlnfzh178MFQkmQbqx+xQSiQkN6EA24FIg9EPiUuysEEieFVSmpNC/pxq8hXKyXfBaL+a7p9L96bGxyzo+lBaK/P+istZdlCYSHA3YVaWcEQkF80oLQqWWQiE4E6eLT4XAgBTKWe5lulAKuF4gt3mHkP2YSKN/QfrCYMeaW/iDnFrNG9VmNkaE+/0VgWpBu7c5ysag0MiqVVIb+UWRBzguBP9KC2MtTGVmsQzwSE6YmF9+1dLBitqPQFAhlBcLO4kX7QkIDHdk0UdaCrNoPLenhJVu9GwIhHl9kIqScBTk+WJHONSGhitDLMkivJ4TJLW1xb5QLpCbGF4Z6mPP1ArEy893YX1LxMkJfmxLP1e94yiFLwGIBFtGO5Gmx6skjhbtckM7qRKgdBpGf4gKxNo+1BEKNul7EkCjdXbZX8T7YxYojBnMKBHGUIl8Tqbeh5xkultlJSMeNSNPXeV7KC+RQqVRGwoKMnsbc9RpYjcikbhR/NZlFYAqkIvtEa5266Roaa8C001mQiQVZ2gponBzNq5PZJ9YDJi/XUWh/YsXTNFwgctxqU5fTeyzIIMkfd9f+IrTcwuCbrpbF0/cdkZTPC8Q7rP1IVtUnOSSDz5HJCSSORHQSqrWRTBeLchakz4cGesHwWZR9bz5X97IdfKwFoeh4j3yUtFTLXGU714Iszey8EYMUpnn5aI34YJb2IbZyIdqCjPq7quoOmeYtCLcOu0w9zlmQ5QmB8HMfj040yObcNT557dV8rhbmCoUHJPpBmHMl5pWPirNY5wkkXLR7gTi3XuS362Zj1a9GUfXtW5kSVq03Mjc0PgjY1TXkIzE38GnBXc3hy0bUqVXTS4N0bzqVdyhQ/mhf+cWpBVHFYAiEqO23Scyx6fH39tS8n45vep/NdOpuOkf+UguSdHw02snDbbWRPE5aR6dATjStUiBqqAhlBOLsBxFvYt5CNLT7h5l/sh47g/RwKOcUVBuDrEBW6QhqfaBsDDI4OeWWeKKyd7x+lI+1MdPEwxqrIP3VjwOZNn+nBeE57vVr3QsejOGagkc+EaZgobWvQ7NyrN8hTPpkq89lKWQ+H8Qs4qmquDV+d5IYpCCL1VKVeSETnGGs/NWtOaxdCCSzDBFdFYPwCrrxl2ESE/O7nuH+aguSTCk8QyDi4mPHej/sdm3qWkFJkK5+WXls66nvhos19jNVz2FBnk8v2sDj7xOXPjDmlq5mrLKaz0c6W9bWWawnVlqjSAvgHQKh/kwM2Zkzx95yqA4RT6024+h7jV10dsx1o21nagS+91YbOJS94KNYNXFaIEkcYggkXAgDwucxi6KhO3F3Wd1dG51meReLUhdLdFtnV9vY2a+k97TOewNqqoZWxAjwVTfri1wtkEmQZhyPCETqk0S0lz8WayQnXYcF0VXidZ91se4ck3gzAgkmpwXSU9Nw6FSeUzc1fDRvLkH8JkUvx2LN/V1HJy/oPQJhlW4lV8ujjO7FWlPPVtv03QVSMl0JdhPM5aB4HY94ldjrT/K1jazJHkux6IZ6L2vsSWc+TC20VKcZyTm0j/lFG54TCxL6J9BNdn3Ph8Omdoeedjz5uXrKCYTCtoPhCYHoeqpyE0ogS74mx/3a34jlOKrqdAbbzDpByd1d+kk+vea3xwWkw937anlOq2ZnBNI7Y+G4cOlftLCr7CjMjK1iPvMkSATS7Zba/oKyFsRqvZgdarXcDRoTiJGtmvLCil5D80rvZB0YCpHRjyIQ+0ReWPm8PjeeJdwH4PmTcsxtA3lFQ010RKEmGk9V5QpiPb93maZNm0UV/zKBHGrcD7+zB3qEjTW76ztjcfKlP2G+o/OY/aJC0Ge4COVa5yGFWz8uyQbVcTrkVRbMq3YLjnh3ay081otqLD1KlTidG+4UCAlLfVog5I22IpYprGivSSO3kw3dymr5XmXDxsO5QC9K2Usdz1QgJxImyVicKDNTb8pN/qZlXGxDVpe9e13o7yGQfK9l11lveZKctAWZbDaTBD5Muqn9qFi527QWBoNYvKkcnHHkt0vnCcSrG/Dhc+Uy+8vQr4nF37bCi+3mawUfpDQJMy5W4JrAejhlQVSBNn2ePa4ph3O32+80+91S6rUS+Y5p93o5BNa6nCsQXvcdAy9sC/Jwclq9SFEE6zg41gxPTs/Naa2ZAXl8nKcrmyS3dpkEVNcKhLU3XOnGWt9Psd8Iw4YfT38kC5KtHdvJmg83EP/Fm61cS+qumkad5SSDTmYMEuz0gEfuqMkgpKMXB2Eu+ipMVis/UA4Rg1xwT/Z+9DB2DpTuzsy5HPeioC+72U17YYeQ14C28D/EWCxKZ/jJIJ0n92pH0vfjWUV3KdRzSN239YSLhnPXiIXZDzK0Tq/w0kq7E678gzX05iU7RlvU5lFTLuWiVtHrxj0vZ0Gexk8M8R9j+pSFHALRYwleI2vAWk+ILWp9JwPiVXa7yjHzkeRA0z4+/eJYvdbc7cLsMXUis5tktFsd2TyXO91AjVhILnpcq03z31qu1Q75vi4yHmQWMOyMPOfWYOzk+8a73zq984JUU2JJmLIU1b45HKrbNupn/LLD3V1QfCszPcS9XWGNfd7p09TT+62j7Wqp5oNlcnrdI5f1NPOr54/xL+h7l67z9l5mcXhwnbzhcbX3XHN8irtga7Ve/s6Ma9ZJjl+q1Zex97ND5J216JddP8yPvGuPUOuYrg/TBUc4/YbcN9GRnXAu+cIzd73zzqyA2fz29rK1dE7vSfrRG6gVjRb7gXZFOPPMztqflM6qHx+z1iRlKus595beeYPo2sN+4Oi7C/YY7jTPPhwVtmkfdk4nqlD+RH6hDaMBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMCvyv8HPl+MvjJrLlwAAAAASUVORK5CYII='
diff --git a/packages/fluent-editor/src/config/editor.config.ts b/packages/fluent-editor/src/config/editor.config.ts
index 1f5c214..d39f514 100644
--- a/packages/fluent-editor/src/config/editor.config.ts
+++ b/packages/fluent-editor/src/config/editor.config.ts
@@ -1,7 +1,8 @@
-export const BIG_DELTA_LIMIT = 2000 // Delta数据行太多超出该限制时,加载会比较慢,需要提示用户
-
import { EN_US } from './i18n/en-us'
import { ZH_CN } from './i18n/zh-cn'
+
+// Delta数据行太多超出该限制时,加载会比较慢,需要提示用户
+export const BIG_DELTA_LIMIT = 2000
const localLang = localStorage.getItem('lang') || 'zh-cn'
export const LANG_CONF = localLang === 'en-us' ? EN_US : ZH_CN
diff --git a/packages/fluent-editor/src/config/editor.utils.ts b/packages/fluent-editor/src/config/editor.utils.ts
index 8a5ed8d..681da92 100644
--- a/packages/fluent-editor/src/config/editor.utils.ts
+++ b/packages/fluent-editor/src/config/editor.utils.ts
@@ -1,6 +1,6 @@
import Quill from 'quill'
-const Delta = Quill.imports['delta']
+const Delta = Quill.import('delta')
// color hex to rgba
export function hexToRgbA(hex: string) {
@@ -10,11 +10,11 @@ export function hexToRgbA(hex: string) {
if (color.length === 3) {
color = [color[0], color[0], color[1], color[1], color[2], color[2]]
}
- color = '0x' + color.join('')
+ color = `0x${color.join('')}`
return (
- 'rgba('
- + [(color >> 16) & 255, (color >> 8) & 255, color & 255].join(',')
- + ',1)'
+ `rgba(${
+ [(color >> 16) & 255, (color >> 8) & 255, color & 255].join(',')
+ },1)`
)
}
}
@@ -28,7 +28,7 @@ export function imageFileToUrl(imageFile) {
const reader = new FileReader()
reader.readAsDataURL(imageFile)
reader.onload = function (e) {
- resolve(e.target['result'])
+ resolve(e.target.result)
}
reader.onerror = reject
}).catch((error) => {
@@ -41,14 +41,14 @@ export function imageFileToUrl(imageFile) {
* @param imageUrl 图片的URL
*/
export function imageUrlToFile(imageUrl, isErrorImage?: boolean) {
- return new Promise(function (resolve, reject) {
+ return new Promise((resolve, reject) => {
fetch(imageUrl, {
method: 'get',
mode: 'no-cors',
})
.then(res => res.blob())
.then((blob) => {
- if (blob.type.indexOf('image') === -1 || !blob.type) {
+ if (!blob.type.includes('image') || !blob.type) {
return reject()
}
const fileType = blob.type.replace(/^.*\//, '')
@@ -168,14 +168,14 @@ export function getEventComposedPath(evt) {
return path
}
-export const sanitize = (url, protocols) => {
+export function sanitize(url, protocols) {
const anchor = document.createElement('a')
anchor.href = url
const protocol = anchor.href.slice(0, anchor.href.indexOf(':'))
- return protocols.indexOf(protocol) > -1
+ return protocols.includes(protocol)
}
-export const isInside = (position, dom) => {
+export function isInside(position, dom) {
const areaPosition = dom.getBoundingClientRect()
const { pageX, pageY } = position
// getBoundingClientRect是不考虑窗口滚动的
@@ -196,4 +196,4 @@ export const isInside = (position, dom) => {
}
// Internet Explorer 6-11
-export const isPureIE = !!document['documentMode']
+export const isPureIE = !!document.documentMode
diff --git a/packages/fluent-editor/src/config/types/additional-toolbar-item.interface.ts b/packages/fluent-editor/src/config/types/additional-toolbar-item.interface.ts
index 4cbc50a..09dbd30 100644
--- a/packages/fluent-editor/src/config/types/additional-toolbar-item.interface.ts
+++ b/packages/fluent-editor/src/config/types/additional-toolbar-item.interface.ts
@@ -1,4 +1,4 @@
-import { AnyFunction } from './type'
+import type { AnyFunction } from './type'
export interface IAdditionalToolItemData {
name: string
diff --git a/packages/fluent-editor/src/config/types/counter-option.interface.ts b/packages/fluent-editor/src/config/types/counter-option.interface.ts
index e5d2ea3..ecb5d61 100644
--- a/packages/fluent-editor/src/config/types/counter-option.interface.ts
+++ b/packages/fluent-editor/src/config/types/counter-option.interface.ts
@@ -1,4 +1,4 @@
-import { AnyFunction } from './type'
+import type { AnyFunction } from './type'
export interface ICounterOption {
format?: 'text' | 'html'
diff --git a/packages/fluent-editor/src/config/types/editor-config.interface.ts b/packages/fluent-editor/src/config/types/editor-config.interface.ts
index d9d361f..c5285da 100644
--- a/packages/fluent-editor/src/config/types/editor-config.interface.ts
+++ b/packages/fluent-editor/src/config/types/editor-config.interface.ts
@@ -1,7 +1,7 @@
import type { QuillOptions } from 'quill'
-import { IEditorModules } from './editor-modules.interface'
-import { EditorFormat } from './type'
-import { ScreenShotOptions } from '../../screenshot'
+import type { ScreenShotOptions } from '../../screenshot'
+import type { IEditorModules } from './editor-modules.interface'
+import type { EditorFormat } from './type'
export interface IEditorConfig extends QuillOptions {
format?: EditorFormat
diff --git a/packages/fluent-editor/src/config/types/editor-modules.interface.ts b/packages/fluent-editor/src/config/types/editor-modules.interface.ts
index 5baee5a..8ffb047 100644
--- a/packages/fluent-editor/src/config/types/editor-modules.interface.ts
+++ b/packages/fluent-editor/src/config/types/editor-modules.interface.ts
@@ -1,4 +1,4 @@
-import { ToolbarOption } from './type'
+import type { ToolbarOption } from './type'
export interface IEditorModules {
[key: string]: any
diff --git a/packages/fluent-editor/src/config/types/file-operation.interface.ts b/packages/fluent-editor/src/config/types/file-operation.interface.ts
index 22045ae..f1a3a3c 100644
--- a/packages/fluent-editor/src/config/types/file-operation.interface.ts
+++ b/packages/fluent-editor/src/config/types/file-operation.interface.ts
@@ -1,4 +1,4 @@
-import { AnyFunction } from './type'
+import type { AnyFunction } from './type'
export interface FileOperation {
operation: string
diff --git a/packages/fluent-editor/src/config/types/help-panel-option.interface.ts b/packages/fluent-editor/src/config/types/help-panel-option.interface.ts
index 1dace74..1d87290 100644
--- a/packages/fluent-editor/src/config/types/help-panel-option.interface.ts
+++ b/packages/fluent-editor/src/config/types/help-panel-option.interface.ts
@@ -1,4 +1,4 @@
-import { IHelpPanelItem } from './help-panel-item.interface'
+import type { IHelpPanelItem } from './help-panel-item.interface'
export interface IHelpPanelOption {
id: string
diff --git a/packages/fluent-editor/src/config/types/image-upload.interface.ts b/packages/fluent-editor/src/config/types/image-upload.interface.ts
index d67921d..3587f6e 100644
--- a/packages/fluent-editor/src/config/types/image-upload.interface.ts
+++ b/packages/fluent-editor/src/config/types/image-upload.interface.ts
@@ -1,4 +1,4 @@
-import { AnyFunction } from './type'
+import type { AnyFunction } from './type'
export interface ImageUpload {
file: File
diff --git a/packages/fluent-editor/src/config/types/index.ts b/packages/fluent-editor/src/config/types/index.ts
index 68d726d..2b0a3ff 100644
--- a/packages/fluent-editor/src/config/types/index.ts
+++ b/packages/fluent-editor/src/config/types/index.ts
@@ -4,12 +4,12 @@ export * from './content-save.interface'
export * from './counter-option.interface'
export * from './editor-config.interface'
export * from './editor-modules.interface'
+export * from './file-operation.interface'
export * from './focus-change.interface'
export * from './fullscreen-module.interface'
export * from './help-panel-option.interface'
export * from './image-module.interface'
export * from './image-upload.interface'
-export * from './file-operation.interface'
export * from './load-on-demand-module.interface'
export * from './mention-module.interface'
export * from './paste-change.interface'
@@ -18,5 +18,5 @@ export * from './range.interface'
export * from './registry-options.interface'
export * from './selection-change.interface'
export * from './toolbar-item.interface'
-export * from './validate-error.interface'
export * from './type'
+export * from './validate-error.interface'
diff --git a/packages/fluent-editor/src/config/types/paste-change.interface.ts b/packages/fluent-editor/src/config/types/paste-change.interface.ts
index 7362e8b..62c3715 100644
--- a/packages/fluent-editor/src/config/types/paste-change.interface.ts
+++ b/packages/fluent-editor/src/config/types/paste-change.interface.ts
@@ -1,4 +1,4 @@
-import { AnyFunction } from './type'
+import type { AnyFunction } from './type'
export interface IPasteChange {
files: File[]
diff --git a/packages/fluent-editor/src/config/types/selection-change.interface.ts b/packages/fluent-editor/src/config/types/selection-change.interface.ts
index 8c52fc0..0eef301 100644
--- a/packages/fluent-editor/src/config/types/selection-change.interface.ts
+++ b/packages/fluent-editor/src/config/types/selection-change.interface.ts
@@ -1,4 +1,4 @@
-import { IRange } from './range.interface'
+import type { IRange } from './range.interface'
export interface ISelectionChange {
editor: any
diff --git a/packages/fluent-editor/src/config/types/type.ts b/packages/fluent-editor/src/config/types/type.ts
index 67baee1..8398e89 100644
--- a/packages/fluent-editor/src/config/types/type.ts
+++ b/packages/fluent-editor/src/config/types/type.ts
@@ -1,4 +1,4 @@
-import { IToolbarItem } from './toolbar-item.interface'
+import type { IToolbarItem } from './toolbar-item.interface'
export type ToolbarOption = (string[] | IToolbarItem[] | string | IToolbarItem)[]
export type EditorFormat = 'object' | 'json' | 'html' | 'text'
diff --git a/packages/fluent-editor/src/counter/index.ts b/packages/fluent-editor/src/counter/index.ts
index f2edbf9..611fb63 100644
--- a/packages/fluent-editor/src/counter/index.ts
+++ b/packages/fluent-editor/src/counter/index.ts
@@ -1,6 +1,6 @@
+import type { ICounterOption } from '../config/types'
import Quill from 'quill'
import { LANG_CONF } from '../config'
-import { ICounterOption } from '../config/types'
export default class Counter {
container: HTMLDivElement
diff --git a/packages/fluent-editor/src/custom-clipboard.ts b/packages/fluent-editor/src/custom-clipboard.ts
index 6f816f4..9194dfd 100644
--- a/packages/fluent-editor/src/custom-clipboard.ts
+++ b/packages/fluent-editor/src/custom-clipboard.ts
@@ -16,7 +16,7 @@ import {
} from './config/editor.utils'
const Clipboard = Quill.imports['modules/clipboard']
-const Delta = Quill.imports['delta']
+const Delta = Quill.import('delta')
class CustomClipboard extends Clipboard {
quill
@@ -74,7 +74,7 @@ class CustomClipboard extends Clipboard {
e.clipboardData = {
types: 'text/plain',
setData: (_type, value) => {
- return window['clipboardData'].setData('Text', value)
+ return window.clipboardData.setData('Text', value)
},
}
}
@@ -107,7 +107,7 @@ class CustomClipboard extends Clipboard {
e.clipboardData = {
types: 'text/plain',
getData: () => {
- return window['clipboardData'].getData('Text')
+ return window.clipboardData.getData('Text')
},
}
}
@@ -138,7 +138,7 @@ class CustomClipboard extends Clipboard {
onPaste(range, { html, text, files: clipboardFiles, rtf }) {
const hexImages = this.extractImageDataFromRtf(rtf)
- const rootBgColor = getComputedStyle(this.quill.root)['backgroundColor']
+ const rootBgColor = getComputedStyle(this.quill.root).backgroundColor
const formats = this.quill.getFormat(range.index)
let pastedDelta = this.convert({ text, html }, formats)
pastedDelta = replaceDeltaWhiteSpace(pastedDelta, rootBgColor)
@@ -147,7 +147,7 @@ class CustomClipboard extends Clipboard {
let loadingTipsContainer
if (deltaLength > BIG_DELTA_LIMIT) {
loadingTipsContainer = this.quill.addContainer('ql-loading-tips')
- loadingTipsContainer.innerHTML = LANG_CONF['pasting']
+ loadingTipsContainer.innerHTML = LANG_CONF.pasting
}
const linePos = { index: range.index, length: range.length, fix: 0 }
@@ -160,7 +160,7 @@ class CustomClipboard extends Clipboard {
const tableBreaker = pastedContent.ops.find((op) => {
return (
op.attributes
- && (op.attributes['blockquote'] || op.attributes['code-block'])
+ && (op.attributes.blockquote || op.attributes['code-block'])
)
})
if (isInsideTable) {
@@ -185,7 +185,7 @@ class CustomClipboard extends Clipboard {
&& anchorNode.classList.contains('quill-better-table-wrapper')
) {
const list = pastedContent.filter(
- op => op.attributes && op.attributes['list'],
+ op => op.attributes && op.attributes.list,
)
if (list && list.length) {
return
@@ -212,7 +212,7 @@ class CustomClipboard extends Clipboard {
const isLine = isString && regexp.test(op.insert)
const isCellLine
= isLine && op.attributes && op.attributes['table-cell-line']
- const isList = isLine && op.attributes && op.attributes['list']
+ const isList = isLine && op.attributes && op.attributes.list
const isPureLine = isLine && !isCellLine && !isList
const isTableCol
= isLine && op.attributes && op.attributes['table-col']
@@ -232,15 +232,15 @@ class CustomClipboard extends Clipboard {
// TODO 这里的lastChild如果不存在,则可能报错
const lastChild = pastedContent.ops[pastedContent.ops.length - 1]
const hasList
- = lastChild && lastChild.attributes && lastChild.attributes['list']
+ = lastChild && lastChild.attributes && lastChild.attributes.list
if (
hasList
&& offset === 0
&& line
&& line.cache.length === 1
&& (line.statics.blotName === 'block'
- || line.statics.blotName === 'table-cell-line')
- && (!line.next || line.next.statics.blotName !== 'table-view')
+ || line.statics.blotName === 'table-cell-line')
+ && (!line.next || line.next.statics.blotName !== 'table-view')
) {
linePos.index = this.quill.getIndex(line)
linePos.length = line.length()
@@ -280,7 +280,7 @@ class CustomClipboard extends Clipboard {
if (this.quill.options.editorPaste && this.quill.options.editorPaste.observers.length !== 0) {
// 设置editorPaste回调的情况
this.quill.options.editorPaste.emit({
- files: files,
+ files,
callback: ({ code, message, data }) => {
if (code === 0) {
const { imageUrls } = data
@@ -326,7 +326,7 @@ class CustomClipboard extends Clipboard {
files2urls(files, placeholders, originalUrls, pastedDelta, imageIndexs) {
return Promise.all(
- files.map((imageFile, index) => {
+ files.map(async (imageFile, index) => {
const netImgExp = /^((http|https)\:)?\/\/([\s\S]+)$/
if (
!placeholders[index]
@@ -375,7 +375,7 @@ class CustomClipboard extends Clipboard {
hexString
.match(/\w{2}/g)
.map((char) => {
- return String.fromCharCode(parseInt(char, 16))
+ return String.fromCharCode(Number.parseInt(char, 16))
})
.join(''),
)
@@ -390,7 +390,7 @@ class CustomClipboard extends Clipboard {
const regexPictureHeader
= /{\\pict[\s\S]+?\\bliptag-?\d+(\\blipupi-?\d+)?({\\\*\\blipuid\s?[\da-fA-F]+)?[\s}]*?/
const regexPicture = new RegExp(
- '(?:(' + regexPictureHeader.source + '))([\\da-fA-F\\s]+)\\}',
+ `(?:(${regexPictureHeader.source}))([\\da-fA-F\\s]+)\\}`,
'g',
)
const images = rtfData.match(regexPicture)
@@ -535,7 +535,7 @@ function replaceStrWhiteSpace(str) {
let beginHasChar = false
for (const char of str) {
if (isWhiteSpace(char) && !beginHasChar) {
- textWithWhiteSpace += '\u00a0'
+ textWithWhiteSpace += '\u00A0'
}
else {
textWithWhiteSpace += char
@@ -560,7 +560,7 @@ function replaceDeltaWhiteSpace(delta, rootBgColor?) {
if (
fontColor === rootBgColor
|| (fontColor === 'rgba(255,255,255,1)'
- && rootBgColor === 'rgba(0, 0, 0, 0)')
+ && rootBgColor === 'rgba(0, 0, 0, 0)')
) {
delete op.attributes.color
}
@@ -605,7 +605,7 @@ function renderStyles(html) {
let collection
let pointer
const rules
- = iframeDoc.styleSheets[iframeDoc.styleSheets.length - 1]['cssRules']
+ = iframeDoc.styleSheets[iframeDoc.styleSheets.length - 1].cssRules
// Convert internal styles to inline style of respective node.
for (let idx = 0; idx < rules.length; idx++) {
@@ -623,7 +623,7 @@ function renderStyles(html) {
}
}
- const convertedString = iframeDoc.firstChild['outerHTML']
+ const convertedString = iframeDoc.firstChild.outerHTML
// Remove temporary iframe.
iframe.parentNode.removeChild(iframe)
diff --git a/packages/fluent-editor/src/custom-image/BlotFormatter.ts b/packages/fluent-editor/src/custom-image/BlotFormatter.ts
index e47cc1a..30cf693 100644
--- a/packages/fluent-editor/src/custom-image/BlotFormatter.ts
+++ b/packages/fluent-editor/src/custom-image/BlotFormatter.ts
@@ -1,10 +1,11 @@
+import type Action from './actions/Action'
+import type { Options } from './Options'
+import type BlotSpec from './specs/BlotSpec'
+import { merge as deepmerge } from 'lodash-es'
import Quill from 'quill'
-import Action from './actions/Action'
import ImageBlot, { ImageContainerBlot } from './image'
-import DefaultOptions, { Options } from './Options'
-import BlotSpec from './specs/BlotSpec'
+import DefaultOptions from './Options'
import { CustomImageSpec } from './specs/CustomImageSpec'
-import { merge as deepmerge } from 'lodash-es'
const dontMerge = (_destination: Array, source: Array) => source
diff --git a/packages/fluent-editor/src/custom-image/actions/CustomResizeAction.ts b/packages/fluent-editor/src/custom-image/actions/CustomResizeAction.ts
index bf45fb8..6e928a0 100644
--- a/packages/fluent-editor/src/custom-image/actions/CustomResizeAction.ts
+++ b/packages/fluent-editor/src/custom-image/actions/CustomResizeAction.ts
@@ -1,9 +1,12 @@
import Action from './Action'
+
const MIN_WIDTH = 40
-const getElementStyle = element => element.currentStyle
- ? element.currentStyle
- : window.getComputedStyle(element, null)
+function getElementStyle(element) {
+ return element.currentStyle
+ ? element.currentStyle
+ : window.getComputedStyle(element, null)
+}
export default class CustomResizeAction extends Action {
topLeftHandle: HTMLElement
topRightHandle: HTMLElement
@@ -67,10 +70,10 @@ export default class CustomResizeAction extends Action {
let handleYOffset = '0px'
if (handleStyle) {
if (handleStyle.width) {
- handleXOffset = `${-parseFloat(handleStyle.width) / 2}px`
+ handleXOffset = `${-Number.parseFloat(handleStyle.width) / 2}px`
}
if (handleStyle.height) {
- handleYOffset = `${-parseFloat(handleStyle.height) / 2}px`
+ handleYOffset = `${-Number.parseFloat(handleStyle.height) / 2}px`
}
}
@@ -128,8 +131,8 @@ export default class CustomResizeAction extends Action {
rootStyle = getElementStyle(root)
}
this.maxWidth = root.clientWidth
- - parseFloat(rootStyle.paddingRight)
- - parseFloat(rootStyle.paddingLeft)
+ - Number.parseFloat(rootStyle.paddingRight)
+ - Number.parseFloat(rootStyle.paddingLeft)
document.addEventListener('mousemove', this.onDrag)
document.addEventListener('mouseup', this.onMouseUp)
@@ -147,7 +150,6 @@ export default class CustomResizeAction extends Action {
else {
const parentNode = node.parentElement
if (parentNode) {
- // eslint-disable-next-line no-return-assign
return (this.findTd(parentNode, level += 1))
}
else {
diff --git a/packages/fluent-editor/src/custom-image/image.ts b/packages/fluent-editor/src/custom-image/image.ts
index e8f3fa6..293d732 100644
--- a/packages/fluent-editor/src/custom-image/image.ts
+++ b/packages/fluent-editor/src/custom-image/image.ts
@@ -1,5 +1,6 @@
import Quill from 'quill'
import { isNullOrUndefined, sanitize } from '../config/editor.utils'
+
const Embed = Quill.imports['blots/embed']
const Inline = Quill.imports['blots/inline']
@@ -24,7 +25,7 @@ class CustomImage extends Embed {
}
node.setAttribute('src', imgURL)
}
- node.setAttribute('data-image-id', 'img' + CustomImage.ID_SEED++)
+ node.setAttribute('data-image-id', `img${CustomImage.ID_SEED++}`)
node.setAttribute('devui-editorx-image', true)
node.style.verticalAlign = 'baseline'
return node
@@ -66,7 +67,7 @@ class CustomImage extends Embed {
}
format(name, value) {
- if (ATTRIBUTES.indexOf(name) > -1) {
+ if (ATTRIBUTES.includes(name)) {
if (value) {
this.domNode.setAttribute(name, value)
}
@@ -89,7 +90,7 @@ class CustomImage extends Embed {
this.parent.insertBefore(wrapper, this.next || undefined)
}
if (typeof wrapper.appendChild !== 'function') {
- throw new Error(`Cannot wrap ${name}`)
+ throw new TypeError(`Cannot wrap ${name}`)
}
wrapper.appendChild(this)
return wrapper
@@ -114,4 +115,4 @@ CustomImageContainer.className = 'ql-image-container'
CustomImageContainer.tagName = 'DIV'
CustomImageContainer.allowedChildren = [CustomImage]
-export { CustomImageContainer as ImageContainerBlot, CustomImage as default }
+export { CustomImage as default, CustomImageContainer as ImageContainerBlot }
diff --git a/packages/fluent-editor/src/custom-image/specs/BlotSpec.ts b/packages/fluent-editor/src/custom-image/specs/BlotSpec.ts
index 937ea9b..3bf6ef5 100644
--- a/packages/fluent-editor/src/custom-image/specs/BlotSpec.ts
+++ b/packages/fluent-editor/src/custom-image/specs/BlotSpec.ts
@@ -1,5 +1,3 @@
-/* eslint-disable @typescript-eslint/no-empty-function */
-
import ResizeAction from '../actions/CustomResizeAction'
import DeleteAction from '../actions/DeleteAction'
diff --git a/packages/fluent-editor/src/custom-uploader.ts b/packages/fluent-editor/src/custom-uploader.ts
index 9137e4a..423637b 100644
--- a/packages/fluent-editor/src/custom-uploader.ts
+++ b/packages/fluent-editor/src/custom-uploader.ts
@@ -1,12 +1,12 @@
-import Quill from 'quill'
+import type { Range } from 'quill/core/quill'
+import Quill from 'quill'
import {
FILE_UPLOADER_MIME_TYPES,
IMAGE_UPLOADER_MIME_TYPES,
} from './config/editor.config'
-import type { Range } from 'quill/core/quill'
-type InsertFileData = {
+interface InsertFileData {
code: number
message?: string
data: {
@@ -17,7 +17,7 @@ type InsertFileData = {
}
const Uploader = Quill.imports['modules/uploader']
-const Delta = Quill.imports['delta']
+const Delta = Quill.import('delta')
class CustomUploader extends Uploader {
quill
@@ -68,10 +68,7 @@ class CustomUploader extends Uploader {
return (
file.name
.toLowerCase()
- .indexOf(
- validType.toLowerCase(),
- file.name.toLowerCase().length - validType.toLowerCase().length,
- ) > -1
+ .includes(validType.toLowerCase(), file.name.toLowerCase().length - validType.toLowerCase().length)
)
// mime type like 'image/*'
}
@@ -137,12 +134,12 @@ class CustomUploader extends Uploader {
// 处理上传图片
handleUploadImage(range, { file, files }, hasRejectedImage) {
if (this.quill.options.uploadOption?.imageUpload) {
- const imageEnableMultiUpload = this.enableMultiUpload === true || this.enableMultiUpload?.['image']
+ const imageEnableMultiUpload = this.enableMultiUpload === true || this.enableMultiUpload?.image
const result = {
file,
data: { files: [file] },
- hasRejectedImage: hasRejectedImage,
+ hasRejectedImage,
callback: (res) => {
if (!res) {
return
@@ -156,7 +153,7 @@ class CustomUploader extends Uploader {
},
}
if (imageEnableMultiUpload) {
- result['data'] = { files }
+ result.data = { files }
}
this.quill.options.uploadOption?.imageUpload(result)
}
diff --git a/packages/fluent-editor/src/emoji/emoji-list/people.ts b/packages/fluent-editor/src/emoji/emoji-list/people.ts
index 951ee85..f6ececd 100644
--- a/packages/fluent-editor/src/emoji/emoji-list/people.ts
+++ b/packages/fluent-editor/src/emoji/emoji-list/people.ts
@@ -1,4 +1,5 @@
import { createEmoji } from '../utils'
+
const peopleEmojiArr = [
['grinning', '1f600', ':grinning:', '😀', 'p', '1'],
['grin', '1f601', ':grin:', '😁', 'p', '2'],
diff --git a/packages/fluent-editor/src/emoji/formats/emoji-blot.ts b/packages/fluent-editor/src/emoji/formats/emoji-blot.ts
index 6717a99..9bd78af 100644
--- a/packages/fluent-editor/src/emoji/formats/emoji-blot.ts
+++ b/packages/fluent-editor/src/emoji/formats/emoji-blot.ts
@@ -36,12 +36,12 @@ class EmojiBlot extends Embed {
emojiSpan.classList.add(this.emojiClass)
emojiSpan.classList.add(this.emojiPrefix + value.name)
// unicode can be '1f1f5-1f1ea',see emoji-list.js.
- emojiSpan.innerText = String.fromCodePoint(...EmojiBlot.parseUnicode(value.unicode))
+ emojiSpan.textContent = String.fromCodePoint(...EmojiBlot.parseUnicode(value.unicode))
node.appendChild(emojiSpan)
}
static parseUnicode(string) {
- return string.split('-').map(str => parseInt(str, 16))
+ return string.split('-').map(str => Number.parseInt(str, 16))
}
}
diff --git a/packages/fluent-editor/src/emoji/modules/emoji.ts b/packages/fluent-editor/src/emoji/modules/emoji.ts
index 21d7642..7dc17e1 100644
--- a/packages/fluent-editor/src/emoji/modules/emoji.ts
+++ b/packages/fluent-editor/src/emoji/modules/emoji.ts
@@ -101,13 +101,13 @@ class ShortNameEmoji extends Module {
const paletteMaxPos = atSignBounds.left + 250
if (paletteMaxPos > this.quill.container.offsetWidth) {
- this.container.style.left = (atSignBounds.left - 250) + 'px'
+ this.container.style.left = `${atSignBounds.left - 250}px`
}
else {
- this.container.style.left = atSignBounds.left + 'px'
+ this.container.style.left = `${atSignBounds.left}px`
}
- this.container.style.top = atSignBounds.top + atSignBounds.height + 'px'
+ this.container.style.top = `${atSignBounds.top + atSignBounds.height}px`
this.open = true
this.quill.on('text-change', this.onTextChange)
@@ -146,7 +146,7 @@ class ShortNameEmoji extends Module {
this.query = this.query.trim()
let emojis: any = this.emojiList
- emojis.sort(function (a: any, b: any) {
+ emojis.sort((a: any, b: any) => {
return a.emoji_order - b.emoji_order
})
@@ -189,7 +189,7 @@ class ShortNameEmoji extends Module {
while (this.container.firstChild) {
this.container.removeChild(this.container.firstChild)
}
- const buttons = Array(emojis.length)
+ const buttons = Array.from({ length: emojis.length })
this.buttons = buttons
const handler = (i, emoji) => (event) => {
@@ -224,10 +224,12 @@ class ShortNameEmoji extends Module {
emojis.forEach((emoji, i) => {
const li = makeElement(
- 'li', {},
+ 'li',
+ {},
makeElement(
- 'button', { type: 'button' },
- makeElement('span', { className: 'button-emoji ap ap-' + emoji.name, innerHTML: emoji.code_decimal }),
+ 'button',
+ { type: 'button' },
+ makeElement('span', { className: `button-emoji ap ap-${emoji.name}`, innerHTML: emoji.code_decimal }),
makeElement('span', { className: 'unmatched' }, emoji.shortname),
),
)
@@ -256,7 +258,7 @@ class ShortNameEmoji extends Module {
const windowHeight = window.innerHeight
const editorPos = this.quill.container.getBoundingClientRect().top
if (editorPos > windowHeight / 2 && this.container.offsetHeight > 0) {
- this.container.style.top = '-' + this.container.offsetHeight + 'px'
+ this.container.style.top = `-${this.container.offsetHeight}px`
}
}
@@ -285,7 +287,7 @@ class ShortNameEmoji extends Module {
}
ShortNameEmoji.DEFAULTS = {
- emojiList: emojiList,
+ emojiList,
fuse: {
shouldSort: true,
threshold: 0.1,
diff --git a/packages/fluent-editor/src/emoji/modules/toolbar-emoji.ts b/packages/fluent-editor/src/emoji/modules/toolbar-emoji.ts
index 1e9840e..87a1dcc 100644
--- a/packages/fluent-editor/src/emoji/modules/toolbar-emoji.ts
+++ b/packages/fluent-editor/src/emoji/modules/toolbar-emoji.ts
@@ -29,7 +29,7 @@ class ToolbarEmoji extends Module {
checkPalatteExist() {
const quill = this.quill
fnCheckDialogOpen(quill)
- this.quill.on('text-change', function (_delta, _oldDelta, source) {
+ this.quill.on('text-change', (_delta, _oldDelta, source) => {
if (source === 'user') {
fnClose()
fnUpdateRange(quill)
@@ -70,12 +70,12 @@ function fnShowEmojiPalatte(quill) {
const containerRect = quill.container.getBoundingClientRect()
const paletteMaxPos = atSignBounds.left + 250 // palette max width is 250
eleEmojiArea.id = 'emoji-palette'
- eleEmojiArea.style.top = 10 + atSignBounds.top + atSignBounds.height + containerRect.top + 'px'
+ eleEmojiArea.style.top = `${10 + atSignBounds.top + atSignBounds.height + containerRect.top}px`
if (paletteMaxPos > quill.container.offsetWidth) {
- eleEmojiArea.style.left = (atSignBounds.left + containerRect.left - 250) + 'px'
+ eleEmojiArea.style.left = `${atSignBounds.left + containerRect.left - 250}px`
}
else {
- eleEmojiArea.style.left = atSignBounds.left + containerRect.left + 'px'
+ eleEmojiArea.style.left = `${atSignBounds.left + containerRect.left}px`
}
const tabToolbar = document.createElement('div')
@@ -111,18 +111,18 @@ function fnShowEmojiPalatte(quill) {
document.getElementById('emoji-close-div').style.display = 'block'
}
- emojiType.forEach(function (emojiTypeItem) {
+ emojiType.forEach((emojiTypeItem) => {
// add tab bar
const tabElement = document.createElement('li')
tabElement.classList.add('emoji-tab')
- tabElement.classList.add('filter-' + emojiTypeItem.name)
+ tabElement.classList.add(`filter-${emojiTypeItem.name}`)
const tabValue = emojiTypeItem.content
tabElement.innerHTML = tabValue
tabElement.dataset.filter = emojiTypeItem.type
tabElementHolder.appendChild(tabElement)
- const emojiFilter = document.querySelector('.filter-' + emojiTypeItem.name)
- emojiFilter.addEventListener('click', function () {
+ const emojiFilter = document.querySelector(`.filter-${emojiTypeItem.name}`)
+ emojiFilter.addEventListener('click', () => {
const tab = document.querySelector('.emoji-tab.active')
if (tab) {
tab.classList.remove('active')
@@ -141,28 +141,28 @@ function fnEmojiPanelInit(panel, quill) {
function fnEmojiElementsToPanel(_type, panel, quill) {
const result = emojiList
- result.sort(function (a: any, b: any) {
+ result.sort((a: any, b: any) => {
return a.emoji_order - b.emoji_order
})
quill.focus()
const range = fnUpdateRange(quill)
- result.forEach(function (emoji: any) {
+ result.forEach((emoji: any) => {
const span = document.createElement('span')
const t = document.createTextNode(emoji.shortname)
span.appendChild(t)
span.classList.add('bem')
- span.classList.add('bem-' + emoji.name)
+ span.classList.add(`bem-${emoji.name}`)
span.classList.add('ap')
- span.classList.add('ap-' + emoji.name)
+ span.classList.add(`ap-${emoji.name}`)
const output = String(String(emoji.code_decimal))
- span.innerHTML = output + ' '
+ span.innerHTML = `${output} `
panel.appendChild(span)
- const customButton = document.querySelector('.bem-' + emoji.name)
+ const customButton = document.querySelector(`.bem-${emoji.name}`)
if (customButton) {
- customButton.addEventListener('click', function () {
+ customButton.addEventListener('click', () => {
quill.insertEmbed(range.index, 'emoji', emoji, Quill.sources.USER)
setTimeout(() => quill.setSelection(range.index + 1), 0)
fnClose()
diff --git a/packages/fluent-editor/src/file/modules/file-bar.ts b/packages/fluent-editor/src/file/modules/file-bar.ts
index 742e8af..c1fa33d 100644
--- a/packages/fluent-editor/src/file/modules/file-bar.ts
+++ b/packages/fluent-editor/src/file/modules/file-bar.ts
@@ -1,10 +1,11 @@
import Quill from 'quill'
// devui-internal api: utils\public-api.ts
+import { Range } from 'quill/core/selection'
import { unshiftString } from '../../utils/method'
import File from '../formats/file'
-const Delta = Quill.imports['delta']
-import { Range } from 'quill/core/selection'
+
+const Delta = Quill.imports.delta
export default class FileBar {
quill: any
@@ -140,6 +141,6 @@ export default class FileBar {
const day = unshiftString(`${date.getDate()}`, 2, '0')
const hour = unshiftString(`${date.getHours()}`, 2, '0')
const minute = unshiftString(`${date.getMinutes()}`, 2, '0')
- return isNaN(year) ? '--' : `${year}/${month}/${day} ${hour}:${minute}`
+ return Number.isNaN(year) ? '--' : `${year}/${month}/${day} ${hour}:${minute}`
}
}
diff --git a/packages/fluent-editor/src/fluent-editor.ts b/packages/fluent-editor/src/fluent-editor.ts
index 0c5422b..08ac11a 100644
--- a/packages/fluent-editor/src/fluent-editor.ts
+++ b/packages/fluent-editor/src/fluent-editor.ts
@@ -1,27 +1,27 @@
-import Quill from 'quill'
import type { Module, Parchment as TypeParchment } from 'quill'
-import { ICONS_CONFIG, TABLE_RIGHT_MENU_CONFIG, inputFile, getListValue } from './config'
-import Counter from './counter' // 字符统计
-import CustomClipboard from './custom-clipboard' // 粘贴板
-import CustomImage from './custom-image/BlotFormatter' // 图片
-import { CustomImageSpec } from './custom-image/specs/CustomImageSpec' // 图片拉伸模块
-import CustomUploader from './custom-uploader' // 上传
-import Emoji from './emoji' // 表情
-import FileModule from './file' // 文件
+import type { IEditorConfig } from './config/types'
+import Quill from 'quill'
+import { FontStyle, LineHeightStyle, SizeStyle, TextIndentStyle } from './attributors' // 字符统计
+import { getListValue, ICONS_CONFIG, inputFile, TABLE_RIGHT_MENU_CONFIG } from './config' // 粘贴板
+import Counter from './counter' // 图片
+import CustomClipboard from './custom-clipboard' // 图片拉伸模块
+import CustomImage from './custom-image/BlotFormatter' // 上传
+import { CustomImageSpec } from './custom-image/specs/CustomImageSpec' // 表情
+import CustomUploader from './custom-uploader' // 文件
+import Emoji from './emoji' // 超链接0
+import FileModule from './file' // @提醒
+import { FormatPainter } from './format-painter'// 截图
// import GlobalLink from './global-link' // 全局链接
-import Link from './link' // 超链接0
-import Mention from './mention/Mention' // @提醒
+import Link from './link' // 软回车
+import Mention from './mention/Mention' // 删除线
// import QuickMenu from './quick-menu' // 快捷菜单
-import { Screenshot } from './screenshot'// 截图
-import SoftBreak from './soft-break' // 软回车
-import Strike from './strike' // 删除线
-import BetterTable from './table/better-table' // 表格
-import CustomSyntax from './syntax' // 代码块高亮
-import Toolbar from './toolbar' // 工具栏
-import Video from './video' // 视频
-import { FormatPainter } from './format-painter'
-import { IEditorConfig } from './config/types'
-import { LineHeightStyle, SizeStyle, FontStyle, TextIndentStyle } from './attributors'
+import { Screenshot } from './screenshot' // 表格
+import SoftBreak from './soft-break' // 代码块高亮
+import Strike from './strike' // 工具栏
+import CustomSyntax from './syntax' // 视频
+import BetterTable from './table/better-table'
+import Toolbar from './toolbar'
+import Video from './video'
class FluentEditor extends Quill {
constructor(container: HTMLElement | string, options: IEditorConfig = {}) {
diff --git a/packages/fluent-editor/src/format-painter/index.ts b/packages/fluent-editor/src/format-painter/index.ts
index 937167c..6f05242 100644
--- a/packages/fluent-editor/src/format-painter/index.ts
+++ b/packages/fluent-editor/src/format-painter/index.ts
@@ -1,8 +1,8 @@
-import Quill from 'quill'
import type { Range } from 'quill'
import type Toolbar from 'quill/modules/toolbar'
+import Quill from 'quill'
-type FormatData = {
+interface FormatData {
formatPainter: {
rangeFormat: Record
isFormatterLock: boolean
diff --git a/packages/fluent-editor/src/global-link/formats/work-item-link.ts b/packages/fluent-editor/src/global-link/formats/work-item-link.ts
index e30354c..1e8a0f0 100644
--- a/packages/fluent-editor/src/global-link/formats/work-item-link.ts
+++ b/packages/fluent-editor/src/global-link/formats/work-item-link.ts
@@ -1,6 +1,7 @@
import Quill from 'quill'
import { ON_WORK_ITEM_LINK_REMOVE } from '../constants'
import { createTable } from '../utils/createTable'
+
const BlockEmbed = Quill.imports['blots/block/embed']
// @dynamic
diff --git a/packages/fluent-editor/src/global-link/global-link-panel.ts b/packages/fluent-editor/src/global-link/global-link-panel.ts
index 9856081..a863222 100644
--- a/packages/fluent-editor/src/global-link/global-link-panel.ts
+++ b/packages/fluent-editor/src/global-link/global-link-panel.ts
@@ -1,4 +1,4 @@
-import { EventEmitter } from '@angular/core'
+import type { EventEmitter } from '@angular/core'
interface WikiLink {
link: string
diff --git a/packages/fluent-editor/src/global-link/index.ts b/packages/fluent-editor/src/global-link/index.ts
index 2162700..98dda1d 100644
--- a/packages/fluent-editor/src/global-link/index.ts
+++ b/packages/fluent-editor/src/global-link/index.ts
@@ -6,7 +6,7 @@ import WikiLink from './formats/wiki-link'
import WorkItemLink from './formats/work-item-link'
const Module = Quill.imports['core/module']
-const Delta = Quill.imports['delta']
+const Delta = Quill.imports.delta
// @dynamic
class GlobalLink extends Module {
diff --git a/packages/fluent-editor/src/index.ts b/packages/fluent-editor/src/index.ts
index e8a421f..fba6498 100644
--- a/packages/fluent-editor/src/index.ts
+++ b/packages/fluent-editor/src/index.ts
@@ -2,4 +2,5 @@
// export * from './config/editor.config'
// export * from './config'
import FluentEditor from './fluent-editor'
+
export default FluentEditor
diff --git a/packages/fluent-editor/src/link/formats/link.ts b/packages/fluent-editor/src/link/formats/link.ts
index 8858d3a..885846d 100644
--- a/packages/fluent-editor/src/link/formats/link.ts
+++ b/packages/fluent-editor/src/link/formats/link.ts
@@ -1,5 +1,6 @@
import Quill from 'quill'
import { sanitize } from '../../config/editor.utils'
+
const Inline = Quill.imports['blots/inline']
// @dynamic
@@ -28,7 +29,7 @@ export default class Link extends Inline {
}
format(name, value) {
- if (name !== this.statics.blotName || [false, null].indexOf(value) !== -1) {
+ if (name !== this.statics.blotName || [false, null].includes(value)) {
super.format(name, value)
}
else {
diff --git a/packages/fluent-editor/src/link/index.ts b/packages/fluent-editor/src/link/index.ts
index 6a6c736..5dc1646 100644
--- a/packages/fluent-editor/src/link/index.ts
+++ b/packages/fluent-editor/src/link/index.ts
@@ -1,6 +1,7 @@
import Quill from 'quill'
import LinkBlot from './formats/link'
import Tooltip from './modules/tooltip'
+
const icons = Quill.imports['ui/icons']
const SnowTheme = Quill.imports['themes/snow']
const Module = Quill.imports['core/module']
diff --git a/packages/fluent-editor/src/link/modules/tooltip.ts b/packages/fluent-editor/src/link/modules/tooltip.ts
index 456d117..713698d 100644
--- a/packages/fluent-editor/src/link/modules/tooltip.ts
+++ b/packages/fluent-editor/src/link/modules/tooltip.ts
@@ -1,11 +1,11 @@
import Quill from 'quill'
+import Emitter from 'quill/core/emitter'
+import { Range } from 'quill/core/selection'
+import { BaseTooltip } from 'quill/themes/base'
import { debounce } from '../../../src/utils/debounce'
import { LANG_CONF } from '../../config/editor.config'
import { isNullOrUndefined } from '../../config/editor.utils'
import LinkBlot from '../formats/link'
-import { BaseTooltip } from 'quill/themes/base'
-import { Range } from 'quill/core/selection'
-import Emitter from 'quill/core/emitter'
// const Emitter = Quill.imports['core/emitter'];
// const BaseTooltip = Quill.imports['themes/BaseTooltip'];
@@ -101,8 +101,8 @@ export default class Tooltip extends BaseTooltip {
(event) => {
if (
(event.target.tagName.toUpperCase() !== 'A'
- || !event.target.classList.contains(LinkBlot.className))
- && !event.target.closest(`a.${LinkBlot.className}`)
+ || !event.target.classList.contains(LinkBlot.className))
+ && !event.target.closest(`a.${LinkBlot.className}`)
) {
return
}
diff --git a/packages/fluent-editor/src/mention/Mention.ts b/packages/fluent-editor/src/mention/Mention.ts
index 2f1a806..4151aac 100644
--- a/packages/fluent-editor/src/mention/Mention.ts
+++ b/packages/fluent-editor/src/mention/Mention.ts
@@ -3,8 +3,8 @@ import { isNullOrUndefined } from '../config/editor.utils'
import { DEFAULT_MENTION_CHAR, ON_MENTION_LINK_REMOVE } from './constants'
import MentionLink from './MentionLink'
-const { Scope } = Quill.imports['parchment']
-const Delta = Quill.imports['delta']
+const { Scope } = Quill.imports.parchment
+const Delta = Quill.imports.delta
interface MentionOption {
containerClass?: string
@@ -98,9 +98,9 @@ class Mention {
quill.keyboard.addBinding({ key: 'Enter' }, this.handleEnterKey)
quill.keyboard.addBinding({ key: 'Tab' }, this.handleEnterKey)
quill.keyboard.addBinding({ key: 'Escape' }, this.handleEscapeKey)
- quill.keyboard.bindings['Enter'].unshift(quill.keyboard.bindings['Enter'].pop())
- quill.keyboard.bindings['Tab'].unshift(quill.keyboard.bindings['Tab'].pop())
- quill.keyboard.bindings['Escape'].unshift(quill.keyboard.bindings['Escape'].pop())
+ quill.keyboard.bindings.Enter.unshift(quill.keyboard.bindings.Enter.pop())
+ quill.keyboard.bindings.Tab.unshift(quill.keyboard.bindings.Tab.pop())
+ quill.keyboard.bindings.Escape.unshift(quill.keyboard.bindings.Escape.pop())
const customKeyboardEnter = {
key: 'Enter',
@@ -145,7 +145,7 @@ class Mention {
}
// 用自定义的Enter替换内置的Enter
- quill.keyboard.bindings['Enter'] = quill.keyboard.bindings['Enter'].map((item) => {
+ quill.keyboard.bindings.Enter = quill.keyboard.bindings.Enter.map((item) => {
const buildinKeyboardEnter = item.format === undefined && item.shiftKey === null
if (buildinKeyboardEnter) {
return customKeyboardEnter
@@ -185,8 +185,7 @@ class Mention {
}
getMentionItemIndex(itemEl: Element) {
- return [].reduce.call(this.mentionListEL.children,
- (index, item, idx) => item === itemEl ? idx : index, -1)
+ return [].reduce.call(this.mentionListEL.children, (index, item, idx) => item === itemEl ? idx : index, -1)
}
handleTextChange = (_delta, _oldDelta, source) => {
@@ -203,11 +202,9 @@ class Mention {
const content = this.quill.getContents()
const beforeCaretText = content.reduce((newText, op) => {
if (typeof op.insert === 'string') {
- // eslint-disable-next-line no-return-assign
return (newText += op.insert)
}
else {
- // eslint-disable-next-line no-return-assign
return (newText += ' ') // 将图片内容和@提醒内容的非字符内容置为' ',算一个位置
}
}, '')
@@ -371,7 +368,6 @@ class Mention {
}
if (node.scrollIntoView) {
node.scrollIntoView(false)
- return
}
}
diff --git a/packages/fluent-editor/src/quick-menu/index.ts b/packages/fluent-editor/src/quick-menu/index.ts
index c65e6c5..8b30d4d 100644
--- a/packages/fluent-editor/src/quick-menu/index.ts
+++ b/packages/fluent-editor/src/quick-menu/index.ts
@@ -1,4 +1,4 @@
-import Quill from 'quill'
+import type Quill from 'quill'
interface QuickMenuOptions {
container: string
@@ -23,7 +23,7 @@ class QuickMenu {
quill.keyboard.addBinding({ key: 'ArrowUp' }, this.handleArrowUpKey)
quill.keyboard.addBinding({ key: 'ArrowDown' }, this.handleArrowDownKey)
quill.keyboard.addBinding({ key: 'Enter' }, this.handleEnterKey)
- quill.keyboard.bindings['Enter'].unshift(quill.keyboard.bindings['Enter'].pop())
+ quill.keyboard.bindings.Enter.unshift(quill.keyboard.bindings.Enter.pop())
document.body.addEventListener('click', this.hideQuickMenu.bind(this))
}
diff --git a/packages/fluent-editor/src/screenshot/index.ts b/packages/fluent-editor/src/screenshot/index.ts
index fb974d8..2d53efa 100644
--- a/packages/fluent-editor/src/screenshot/index.ts
+++ b/packages/fluent-editor/src/screenshot/index.ts
@@ -1,7 +1,7 @@
-import Quill from 'quill'
-import type Toolbar from 'quill/modules/toolbar'
import type html2canvas from 'html2canvas'
import type { Options as Html2CanvasOptions } from 'html2canvas'
+import type Toolbar from 'quill/modules/toolbar'
+import Quill from 'quill'
import { imgToBase64 } from '../utils/image'
import { lockScroll } from '../utils/scroll-lock'
@@ -12,7 +12,7 @@ export type ScreenShotOptions = Partial & {
beforeCreateCanvas: () => void | Promise
beforeCreateImage: (canvas: HTMLCanvasElement) => HTMLCanvasElement | string | Promise
}
-type ScreenShotOptionsInQuill = {
+interface ScreenShotOptionsInQuill {
quill: {
options: {
screenshot: Partial
@@ -20,7 +20,7 @@ type ScreenShotOptionsInQuill = {
}
}
-const resolveOptions = (options: Partial) => {
+function resolveOptions(options: Partial) {
return Object.assign({
// @ts-ignore
Html2Canvas: window.Html2Canvas,
diff --git a/packages/fluent-editor/src/strike/index.ts b/packages/fluent-editor/src/strike/index.ts
index f1b78ca..b534b67 100644
--- a/packages/fluent-editor/src/strike/index.ts
+++ b/packages/fluent-editor/src/strike/index.ts
@@ -1,4 +1,5 @@
import Quill from 'quill'
+
const Inline = Quill.imports['blots/inline']
// @dynamic
diff --git a/packages/fluent-editor/src/syntax/index.ts b/packages/fluent-editor/src/syntax/index.ts
index 80f97ec..c54fc3c 100644
--- a/packages/fluent-editor/src/syntax/index.ts
+++ b/packages/fluent-editor/src/syntax/index.ts
@@ -1,5 +1,5 @@
+import type TypeSyntax from 'quill/modules/syntax'
import Quill from 'quill'
-import TypeSyntax from 'quill/modules/syntax'
const Syntax = Quill.import('modules/syntax') as typeof TypeSyntax
diff --git a/packages/fluent-editor/src/table/better-table.ts b/packages/fluent-editor/src/table/better-table.ts
index 1f05d31..e3884b8 100644
--- a/packages/fluent-editor/src/table/better-table.ts
+++ b/packages/fluent-editor/src/table/better-table.ts
@@ -37,7 +37,7 @@ import {
} from './utils/node-matchers'
const Block = Quill.imports['blots/block']
-const Delta = Quill.imports['delta']
+const Delta = Quill.imports.delta
const Module = Quill.imports['core/module']
// @dynamic
@@ -161,8 +161,8 @@ class BetterTable extends Module {
// since only one matched bindings callback will execute.
// expected my binding callback execute first
// I changed the order of binding callbacks
- const thisBinding = quill.keyboard.bindings['Backspace'].pop()
- quill.keyboard.bindings['Backspace'].splice(1, 0, thisBinding)
+ const thisBinding = quill.keyboard.bindings.Backspace.pop()
+ quill.keyboard.bindings.Backspace.splice(1, 0, thisBinding)
// add Matchers to match and render quill-better-table for initialization
// or pasting
@@ -209,7 +209,7 @@ class BetterTable extends Module {
// @ts-ignore
table.parentNode.classList.add('quill-better-table-selected')
}
- else if (classes.indexOf('quill-better-table-selected') >= 0) {
+ else if (classes.includes('quill-better-table-selected')) {
// @ts-ignore
table.parentNode.classList.remove('quill-better-table-selected')
}
@@ -478,7 +478,6 @@ BetterTable.keyboardBindings = {
format: ['table-col'],
collapsed: true,
offset: 0,
- // eslint-disable-next-line @typescript-eslint/no-empty-function
handler() { },
},
'table-cell-line backspace': {
@@ -505,7 +504,7 @@ BetterTable.keyboardBindings = {
const length = line.length()
if (!line.next // 当无下一个元素且满足以下情况阻止删除操作
&& ((!line.prev && length === 1) // 单元格内只有一个table-cell-line且无内容
- || (range.index !== index && range.index + 1 >= index + length))) { // 光标在有内容的table-cell-line最后
+ || (range.index !== index && range.index + 1 >= index + length))) { // 光标在有内容的table-cell-line最后
return false
}
return true
diff --git a/packages/fluent-editor/src/table/formats/list.ts b/packages/fluent-editor/src/table/formats/list.ts
index a3bc48e..ad66ad5 100644
--- a/packages/fluent-editor/src/table/formats/list.ts
+++ b/packages/fluent-editor/src/table/formats/list.ts
@@ -153,7 +153,7 @@ class ListItem extends Block {
optimize(context) {
// 判断前一个li是否包含软回车,如果包含则将当前li与之合并后移除
const tail = this.prev && this.prev.domNode.lastChild
- if (tail && tail.className && tail.className.indexOf('ql-soft-break') >= 0) {
+ if (tail && tail.className && tail.className.includes('ql-soft-break')) {
// 合并dom
this.domNode.childNodes.forEach((v, i) => {
if (i > 0) {
@@ -189,7 +189,7 @@ class ListItem extends Block {
(formats[key] || data[key]) && this.parent.domNode.setAttribute(`data-${key}`, formats[key] || data[key]))
// 如果父容器不在表格内则用单元格包裹
if (this.parent.parent.statics.blotName !== 'table') {
- delete formats['list']
+ delete formats.list
this.wrap('table', formats)
}
}
@@ -215,7 +215,7 @@ function getFormats(dom): any {
const formats = {}
if (dom.tagName === 'OL') {
- formats['list'] = dom.classList.item(0)
+ formats.list = dom.classList.item(0)
}
return [...CELL_ATTRIBUTES, ...CELL_IDENTITY_KEYS].reduce((tableFormats, attribute) => {
diff --git a/packages/fluent-editor/src/table/formats/table.ts b/packages/fluent-editor/src/table/formats/table.ts
index 85fe450..30db893 100644
--- a/packages/fluent-editor/src/table/formats/table.ts
+++ b/packages/fluent-editor/src/table/formats/table.ts
@@ -1,6 +1,6 @@
import Quill from 'quill'
-import { compare } from '../../utils/method'
import { isNullOrUndefined } from '../../config/editor.utils'
+import { compare } from '../../utils/method'
import {
CELL_ATTRIBUTES,
CELL_DEFAULT,
@@ -57,8 +57,8 @@ class TableCellLine extends Block {
static formats(domNode) {
const formats = {}
- if (formats['list']) {
- formats['list'] = domNode.classList.item(0)
+ if (formats.list) {
+ formats.list = domNode.classList.item(0)
}
return reduceFormats(domNode, formats)
}
@@ -88,7 +88,7 @@ class TableCellLine extends Block {
}
format(name, value) {
- if ([...CELL_ATTRIBUTES, ...CELL_IDENTITY_KEYS, 'parent-bg'].indexOf(name) > -1) {
+ if ([...CELL_ATTRIBUTES, ...CELL_IDENTITY_KEYS, 'parent-bg'].includes(name)) {
if (value) {
this.domNode.setAttribute(`data-${name}`, value)
}
@@ -237,10 +237,10 @@ class TableCell extends Container {
const formats = {}
if (this.domNode.hasAttribute('data-row')) {
- formats['row'] = this.domNode.getAttribute('data-row')
+ formats.row = this.domNode.getAttribute('data-row')
}
if (this.domNode.hasAttribute('data-cell')) {
- formats['cell'] = this.domNode.getAttribute('data-cell')
+ formats.cell = this.domNode.getAttribute('data-cell')
}
return CELL_ATTRIBUTES.reduce((tableFormats, attribute) => {
@@ -267,7 +267,8 @@ class TableCell extends Container {
})
}
- /** this method is for TableCellLine to change cell background color
+ /**
+ * this method is for TableCellLine to change cell background color
* if use `format('cell-bg', value)` will loop trigger
* TableCellLine.optimize -> TableCell.format -> TableCellLine.optimize ...
*/
@@ -283,10 +284,10 @@ class TableCell extends Container {
format(name, value) {
const quill = Quill.find(this.scroll.domNode.parentNode)
switch (true) {
- case CELL_ATTRIBUTES.indexOf(name) > -1:
+ case CELL_ATTRIBUTES.includes(name):
this.toggleAttribute(name, value)
break
- case ['row', 'cell'].indexOf(name) > -1:
+ case ['row', 'cell'].includes(name):
this.toggleAttribute(`data-${name}`, value)
break
case name === 'background': {
@@ -306,12 +307,14 @@ class TableCell extends Container {
quill.format(name, value, Quill.sources.USER)
// 设置选区后需清除选区,否则会固定处理选区内容
quill.setSelection(start)
+ break
}
case name === 'cell-bg': {
this.toggleAttribute('data-cell-bg', value)
this.toggleAttribute('data-parent-bg', value)
this.formatChildren(name, value)
this.setCellBg(value)
+ break
}
}
}
@@ -360,7 +363,7 @@ class TableCell extends Container {
const formats = {}
const firstChild = domNode.childNodes[0]
if (firstChild && domNode.tagName === 'OL') {
- formats['list'] = firstChild.classList.item(0)
+ formats.list = firstChild.classList.item(0)
}
return reduceFormats(domNode, formats)
@@ -509,7 +512,7 @@ class TableCol extends Block {
}
format(name, value) {
- if (COL_ATTRIBUTES.indexOf(name) > -1) {
+ if (COL_ATTRIBUTES.includes(name)) {
this.domNode.setAttribute(`${name}`, value || COL_DEFAULT[name])
}
else {
@@ -654,7 +657,7 @@ class TableContainer extends Container {
const tableCol = col.formats()[TableCol.blotName]
let tableColWidth = COL_DEFAULT.width
if (tableCol && tableCol.width) {
- tableColWidth = parseInt(tableCol.width, 10)
+ tableColWidth = Number.parseInt(tableCol.width, 10)
}
sumWidth = sumWidth + tableColWidth
return sumWidth
@@ -678,8 +681,8 @@ class TableContainer extends Container {
}
colGroup.children.forEach((col) => {
if (maxTds && col.domNode.width === 'auto') {
- const width = getComputedStyle(maxTds[tdIndex])['width']
- const num = parseInt(width, 10)
+ const width = getComputedStyle(maxTds[tdIndex]).width
+ const num = Number.parseInt(width, 10)
col.domNode.width = (num < COL_DEFAULT.width && COL_DEFAULT.width) || num
}
tdIndex++
@@ -738,7 +741,7 @@ class TableContainer extends Container {
})
modifiedCells.forEach((cell) => {
- const cellColspan = parseInt(cell.formats().colspan, 10)
+ const cellColspan = Number.parseInt(cell.formats().colspan, 10)
// const cellWidth = parseInt(cell.formats().width, 10);
cell.format('colspan', cellColspan - delIndexes.length)
})
@@ -811,7 +814,7 @@ class TableContainer extends Container {
})
modifiedCells.forEach((cell) => {
- const cellRowspan = parseInt(cell.formats().rowspan, 10)
+ const cellRowspan = Number.parseInt(cell.formats().rowspan, 10)
const curRowspan = cellRowspan - removedRowsLength
cell.domNode.removeAttribute('style')
cell.format('rowspan', curRowspan)
@@ -913,8 +916,7 @@ class TableContainer extends Container {
const cellFormats = cell.formats()
const tableCell = this.scroll.create(
TableCell.blotName,
- { ...CELL_DEFAULT, row: rId,
- rowspan: cellFormats.rowspan },
+ { ...CELL_DEFAULT, row: rId, rowspan: cellFormats.rowspan },
)
const cellLine = this.scroll.create(TableCellLine.blotName, {
row: rId,
@@ -951,7 +953,7 @@ class TableContainer extends Container {
modifiedCells.forEach((cell) => {
const cellColspan = cell.formats().colspan
- cell.format('colspan', parseInt(cellColspan, 10) + 1)
+ cell.format('colspan', Number.parseInt(cellColspan, 10) + 1)
affectedCells.push(cell)
})
@@ -1031,7 +1033,7 @@ class TableContainer extends Container {
})
modifiedCells.forEach((cell) => {
- const cellRowspan = parseInt(cell.formats().rowspan, 10)
+ const cellRowspan = Number.parseInt(cell.formats().rowspan, 10)
cell.format('rowspan', cellRowspan + 1)
affectedCells.push(cell)
})
@@ -1067,7 +1069,7 @@ class TableContainer extends Container {
if (rowspan > 1) {
// fix: 比较当前单元格高度样式与rowspan最小高度,小于则设置高度,不判断实际高度,因为合并时这一刻实际高度可能高于最小高度
const minHeight = CELL_MIN_HEIGHT * rowspan + rowspan - 1
- const cellHeight = parseInt(tableCell.domNode.style.height, 10) || 0
+ const cellHeight = Number.parseInt(tableCell.domNode.style.height, 10) || 0
if (cellHeight < minHeight) {
tableCell.domNode.style.height = `${minHeight}px`
}
@@ -1081,11 +1083,11 @@ class TableContainer extends Container {
const cId = mergedCell.children.head.domNode.getAttribute('data-cell')
mergedCell.children.forEach((cellLine) => {
cellLine.domNode.setAttribute('data-parent-bg', mergedCell.domNode.style.backgroundColor)
- if (cellLine.children['head'].domNode.style) {
- cellLine.children['head'].domNode.style.backgroundColor = mergedCell.domNode.style.backgroundColor
+ if (cellLine.children.head.domNode.style) {
+ cellLine.children.head.domNode.style.backgroundColor = mergedCell.domNode.style.backgroundColor
}
- if (!cellLine.prev || cellLine.domNode.innerText.trim()) {
+ if (!cellLine.prev || cellLine.domNode.textContent.trim()) {
cellLine.format('cell', cId)
cellLine.format('row', rId)
cellLine.format('colspan', colspan)
diff --git a/packages/fluent-editor/src/table/modules/table-column-tool.ts b/packages/fluent-editor/src/table/modules/table-column-tool.ts
index 2bf8fe9..ba29b44 100644
--- a/packages/fluent-editor/src/table/modules/table-column-tool.ts
+++ b/packages/fluent-editor/src/table/modules/table-column-tool.ts
@@ -14,7 +14,6 @@ export default class TableColumnTool {
oldRootScrollTop: any
constructor(table, quill, dom) {
if (!table) {
- /* eslint-disable-next-line no-constructor-return */
return null
}
this.table = table
@@ -111,7 +110,7 @@ export default class TableColumnTool {
colWidth = col ? col.width : tableContainer.colGroup().domNode.children[index - 1].width
}
else {
- colWidth = parseInt(col.formats()[col.statics.blotName].width, 10)
+ colWidth = Number.parseInt(col.formats()[col.statics.blotName].width, 10)
}
// if cell already exist
let colToolCell = null
@@ -153,14 +152,14 @@ export default class TableColumnTool {
// fix: 修复 IE11/Edge 下无法拿到 height 的问题
// IE11/Edge 下 height 会变成 'auto'
- let computedHeight = row && getComputedStyle(row)['height']
+ let computedHeight = row && getComputedStyle(row).height
if (computedHeight === 'auto') {
computedHeight = row.querySelector('td').style.height || '30px'
}
- let rowHeight = row && parseFloat(computedHeight)
+ let rowHeight = row && Number.parseFloat(computedHeight)
if (rowHeight < CELL_MIN_HEIGHT) {
- const rowChildHeight = row && row.childNodes[0] && parseFloat(getComputedStyle(row.childNodes[0])['height'])
+ const rowChildHeight = row && row.childNodes[0] && Number.parseFloat(getComputedStyle(row.childNodes[0]).height)
rowHeight = rowChildHeight
}
// if cell already exist
@@ -257,14 +256,14 @@ export default class TableColumnTool {
const rowIndex = existCells.indexOf(cell)
const rows: any = Array.from(this.table.querySelectorAll('tr'))
const tds = Array.from(rows[rowIndex].childNodes)
- const hasContentTd: any = tds.find((td: any) => td.getAttribute('rowspan') === '1' && td.innerText !== '\n')
+ const hasContentTd: any = tds.find((td: any) => td.getAttribute('rowspan') === '1' && td.textContent !== '\n')
if (dragging) {
let tdHeight = `${height0 + delta}px`
if (hasContentTd) {
tds.forEach((td: any) => td.getAttribute('rowspan') === '1' && css(td, { height: tdHeight }))
- const currentHeight = getComputedStyle(hasContentTd)['height']
- tdHeight = (parseInt(currentHeight, 10) > height0 + delta && currentHeight) || tdHeight
+ const currentHeight = getComputedStyle(hasContentTd).height
+ tdHeight = (Number.parseInt(currentHeight, 10) > height0 + delta && currentHeight) || tdHeight
}
css(cell, { height: tdHeight })
tds.forEach((td: any) => td.getAttribute('rowspan') === '1' && css(td, { height: tdHeight }))
@@ -407,7 +406,7 @@ export default class TableColumnTool {
}
if (dragging) {
// fix: 防止 colWidth 是小数
- const colWidth = parseInt(width0 + delta, 10)
+ const colWidth = Number.parseInt(width0 + delta, 10)
if (colBlot.format) {
colBlot.format('width', colWidth)
}
diff --git a/packages/fluent-editor/src/table/modules/table-operation-menu.ts b/packages/fluent-editor/src/table/modules/table-operation-menu.ts
index f594a88..b53bca1 100644
--- a/packages/fluent-editor/src/table/modules/table-operation-menu.ts
+++ b/packages/fluent-editor/src/table/modules/table-operation-menu.ts
@@ -1,21 +1,20 @@
import Quill from 'quill'
import { LANG_CONF } from '../../config/editor.config'
-import { elementRemove, arrayFrom, css, getRelativeRect } from '../utils'
-import {
- OPERATE_MENU_ITEM_CLASS,
- OPERATE_MENU_COLORPICKER_ITEM_CLASS,
- OPERATE_MENU_DIVIDING_CLASS,
- OPERATE_MENU_SUBTITLE_CLASS,
- OPERATE_MENU_COLORPICKER_CLASS,
-} from '../table-config'
-
import {
ERROR_LIMIT,
MENU_ITEM_HEIGHT,
MENU_MIN_HEIGHT,
MENU_WIDTH,
+ OPERATE_MENU_COLORPICKER_CLASS,
+
+ OPERATE_MENU_COLORPICKER_ITEM_CLASS,
+ OPERATE_MENU_DIVIDING_CLASS,
+ OPERATE_MENU_ITEM_CLASS,
+ OPERATE_MENU_SUBTITLE_CLASS,
} from '../table-config'
+import { arrayFrom, css, elementRemove, getRelativeRect } from '../utils'
+
const MENU_ITEMS_DEFAULT = {
copyCells: {
text: 'Copy Cells',
@@ -268,9 +267,7 @@ const MENU_ITEMS_DEFAULT = {
}
const DEFAULT_CELL_COLORS = ['white', 'red', 'yellow', 'blue']
const NODE_EVENT_MAP = new WeakMap()
-// eslint-disable-next-line @typescript-eslint/no-unused-vars
-const MENU_MIN_HEIHGT = 150
-const DEFAULT_COLOR_SUBTITLE = LANG_CONF['subTitleBgColor']
+const DEFAULT_COLOR_SUBTITLE = LANG_CONF.subTitleBgColor
export default class TableOperationMenu {
tableSelection: any
table: any
@@ -321,10 +318,10 @@ export default class TableOperationMenu {
destroy() {
const menuItems = arrayFrom(
- this.domNode.querySelectorAll('.' + OPERATE_MENU_ITEM_CLASS),
+ this.domNode.querySelectorAll(`.${OPERATE_MENU_ITEM_CLASS}`),
)
const colorPickerItems = arrayFrom(
- this.domNode.querySelectorAll('.' + OPERATE_MENU_COLORPICKER_ITEM_CLASS),
+ this.domNode.querySelectorAll(`.${OPERATE_MENU_COLORPICKER_ITEM_CLASS}`),
)
const nodes = menuItems.concat(colorPickerItems)
@@ -362,7 +359,7 @@ export default class TableOperationMenu {
if (menuHeight + top > winHeight && menuHeight < winHeight) {
delete cssContent.top
- cssContent['bottom'] = '10px'
+ cssContent.bottom = '10px'
}
this.domNode = document.createElement('div')
@@ -404,7 +401,7 @@ export default class TableOperationMenu {
function subTitleCreator(title) {
const subTitle = document.createElement('div')
subTitle.classList.add(OPERATE_MENU_SUBTITLE_CLASS)
- subTitle.innerText = title
+ subTitle.textContent = title
return subTitle
}
}
@@ -450,7 +447,7 @@ export default class TableOperationMenu {
menuItemCreator({ text }) {
const node = document.createElement('div')
node.classList.add('qlbt-operation-menu-item')
- node.innerText = text
+ node.textContent = text
// node.addEventListener('click', handler.bind(this), false)
return node
}
diff --git a/packages/fluent-editor/src/table/modules/table-scroll-bar.ts b/packages/fluent-editor/src/table/modules/table-scroll-bar.ts
index 69bfc9d..43da9d7 100644
--- a/packages/fluent-editor/src/table/modules/table-scroll-bar.ts
+++ b/packages/fluent-editor/src/table/modules/table-scroll-bar.ts
@@ -97,7 +97,7 @@ export default class TableScrollBar {
setScrollBarMove(pos, isMouse) {
// 获取当前滑块左边距和鼠标两次事件节点之间的位移差,计算当前滑块位置及是否显示左右遮罩层,通过比例计算表格位移并赋值
- const currentBarLeft = parseInt(getComputedStyle(this.scrollBar)['left'], 10)
+ const currentBarLeft = Number.parseInt(getComputedStyle(this.scrollBar).left, 10)
let left = isMouse ? pos - this.prev + currentBarLeft : currentBarLeft + pos
this.showMask(left)
left = this.getLimitedDistance(left)
diff --git a/packages/fluent-editor/src/table/modules/table-selection.ts b/packages/fluent-editor/src/table/modules/table-selection.ts
index e8edf16..b2a4f34 100644
--- a/packages/fluent-editor/src/table/modules/table-selection.ts
+++ b/packages/fluent-editor/src/table/modules/table-selection.ts
@@ -25,7 +25,7 @@ export default class TableSelection {
bottom: any
top: any
right: any
- /* eslint-disable-next-line no-constructor-return */
+
constructor(table, quill, dom) {
if (!table) {
return null
@@ -234,9 +234,9 @@ export default class TableSelection {
const { x, y, width, height } = getRelativeRect(tableCell.domNode.getBoundingClientRect(), this.quill.root.parentNode)
const isCellIntersected
= ((x + ERROR_LIMIT >= this.boundary.x && x + ERROR_LIMIT <= this.boundary.x1)
- || (x - ERROR_LIMIT + width >= this.boundary.x && x - ERROR_LIMIT + width <= this.boundary.x1))
- && ((y + ERROR_LIMIT >= this.boundary.y && y + ERROR_LIMIT <= this.boundary.y1)
- || (y - ERROR_LIMIT + height >= this.boundary.y && y - ERROR_LIMIT + height <= this.boundary.y1))
+ || (x - ERROR_LIMIT + width >= this.boundary.x && x - ERROR_LIMIT + width <= this.boundary.x1))
+ && ((y + ERROR_LIMIT >= this.boundary.y && y + ERROR_LIMIT <= this.boundary.y1)
+ || (y - ERROR_LIMIT + height >= this.boundary.y && y - ERROR_LIMIT + height <= this.boundary.y1))
if (isCellIntersected) {
this.boundary = computeBoundaryFromRects(this.boundary, { x, y, width, height })
}
diff --git a/packages/fluent-editor/src/table/utils/node-matchers.ts b/packages/fluent-editor/src/table/utils/node-matchers.ts
index a5d2cf5..9ef2fd6 100644
--- a/packages/fluent-editor/src/table/utils/node-matchers.ts
+++ b/packages/fluent-editor/src/table/utils/node-matchers.ts
@@ -3,7 +3,7 @@ import { omit, splitWithBreak } from '../../config/editor.utils'
import { cellId as tableCellId, rowId as tableRowId, TableViewWrapper } from '../formats/table'
import { CELL_MIN_WIDTH } from '../table-config'
-const Delta = Quill.imports['delta']
+const Delta = Quill.imports.delta
const InlineBlot = Quill.imports.parchment.InlineBlot
// rebuild delta
@@ -47,22 +47,22 @@ export function matchTableCell(node, delta) {
rowspan,
colspan,
}
- if (op.attributes['table']) {
+ if (op.attributes.table) {
delete op.attributes.table
}
switch (true) {
- case !!op.attributes['header']:
- attributes = Object.assign(op.attributes['header'], cellAttributes)
+ case !!op.attributes.header:
+ attributes = Object.assign(op.attributes.header, cellAttributes)
break
- case !!op.attributes['list']:
- attributes = { list: Object.assign(op.attributes['list'], cellAttributes) }
+ case !!op.attributes.list:
+ attributes = { list: Object.assign(op.attributes.list, cellAttributes) }
break
default:
attributes = { 'table-cell-line': cellAttributes }
}
// fix: when td has background-color, quill can't set it to table-cell bolt
- if (op.attributes['background'] && attributes['table-cell-line']) {
- attributes['table-cell-line']['tdBgColor'] = op.attributes['background']
+ if (op.attributes.background && attributes['table-cell-line']) {
+ attributes['table-cell-line'].tdBgColor = op.attributes.background
}
newDelta.insert('\n', Object.assign(op.attributes, attributes))
}
@@ -181,7 +181,7 @@ export function matchTable(node, delta, scroll) {
}
else {
// 大于默认值取实际指定值
- return { 'table-col': { width: width } }
+ return { 'table-col': { width } }
}
}
@@ -215,12 +215,13 @@ export function matchTable(node, delta, scroll) {
// index为差值列索引,通过遍历差值得到mexCells行中对应索引的单元格宽度
for (let i = 0; i < fillNumber; i++) {
const index = outset + i
- const colWidth = parseInt(
+ const colWidth = Number.parseInt(
index < maxCells.length
? maxCells[index].width
// maxCells[index].style && maxCells[index].style.width ? maxCells[index].style.width :
: maxCells[maxCells.length - 1].width,
- 10)
+ 10,
+ )
newDelta.insert('\n', checkMinWidth(colWidth))
colCount++
}
@@ -232,12 +233,12 @@ export function matchTable(node, delta, scroll) {
if (colCount < maxCellsNumber) {
// 当table-col宽度一致时会合并为单一insert,insert长度大于1,截取符合实际总列数的长度来插入
const insert = op.insert.slice(0, maxCellsNumber)
- const colWidth = parseInt(attr['table-col']['width'], 10)
+ const colWidth = Number.parseInt(attr['table-col'].width, 10)
newDelta.insert(insert, checkMinWidth(colWidth))
colCount += insert.length
}
break
- case !!attr['notFilled']:
+ case !!attr.notFilled:
{ // 将标记的空tr填充对应列数的单元格
const rowId = tableRowId()
for (let x = 0; x < maxCellsNumber; x++) {
@@ -298,8 +299,8 @@ export function matchList(node, delta) {
if (typeof op.attributes.list === 'string') {
delete op.attributes.list
}
- else if (typeof op.attributes.list === 'object' && !op.attributes.list['value']) {
- op.attributes.list['value'] = value
+ else if (typeof op.attributes.list === 'object' && !op.attributes.list.value) {
+ op.attributes.list.value = value
}
})
return delta
@@ -317,7 +318,7 @@ export function matchInline(node, delta, scroll) {
// 插入节点是否存在下一个兄弟元素
const match = scroll.query(node)
const nodeHtml = node.nextElementSibling.innerHTML
- const nodeText = node.nextElementSibling.innerText
+ const nodeText = node.nextElementSibling.textContent
if (
(match && match.prototype instanceof InlineBlot) // 判断当前节点是否为内联
|| (node.tagName === 'P' && nodeHtml !== nodeText)
diff --git a/packages/fluent-editor/src/toolbar/better-picker.ts b/packages/fluent-editor/src/toolbar/better-picker.ts
index c3d4f96..507dc22 100644
--- a/packages/fluent-editor/src/toolbar/better-picker.ts
+++ b/packages/fluent-editor/src/toolbar/better-picker.ts
@@ -1,5 +1,6 @@
import Quill from 'quill'
import { isNullOrUndefined } from '../config/editor.utils'
+
const SnowTheme = Quill.imports['themes/snow']
let optionsCounter = 0
diff --git a/packages/fluent-editor/src/toolbar/index.ts b/packages/fluent-editor/src/toolbar/index.ts
index dfd3674..65a5d1a 100644
--- a/packages/fluent-editor/src/toolbar/index.ts
+++ b/packages/fluent-editor/src/toolbar/index.ts
@@ -1,7 +1,7 @@
+import type TypeToolbar from 'quill/modules/toolbar'
import Quill from 'quill'
import { isNullOrUndefined } from '../config/editor.utils'
import './better-picker'
-import type TypeToolbar from 'quill/modules/toolbar'
const Delta = Quill.import('delta')
const Parchment = Quill.import('parchment')
@@ -68,9 +68,9 @@ class BetterToolbar extends Toolbar {
let isActive
= formats[format] === input.getAttribute('value')
|| (!isNullOrUndefined(formats[format])
- && (formats[format].value === input.getAttribute('value')
- || formats[format].toString() === input.getAttribute('value')))
- || (isNullOrUndefined(formats[format]) && !input.getAttribute('value'))
+ && (formats[format].value === input.getAttribute('value')
+ || formats[format].toString() === input.getAttribute('value')))
+ || (isNullOrUndefined(formats[format]) && !input.getAttribute('value'))
if (!isActive) {
const checkFormat = formats[format]
diff --git a/packages/fluent-editor/src/types/vue.d.ts b/packages/fluent-editor/src/types/vue.d.ts
deleted file mode 100644
index 15176f5..0000000
--- a/packages/fluent-editor/src/types/vue.d.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-/* eslint-disable @typescript-eslint/ban-types */
-
-declare module '*.vue' {
- import type { DefineComponent } from 'vue'
- const component: DefineComponent<{}, {}, any>
- export default component
-}
diff --git a/packages/fluent-editor/src/utils/debounce.ts b/packages/fluent-editor/src/utils/debounce.ts
index 0f136c2..6c8f4f4 100644
--- a/packages/fluent-editor/src/utils/debounce.ts
+++ b/packages/fluent-editor/src/utils/debounce.ts
@@ -1,4 +1,5 @@
import { isObject, root } from './method'
+
export function debounce(func, wait, options = undefined) {
let lastArgs,
lastThis,
diff --git a/packages/fluent-editor/src/utils/image.ts b/packages/fluent-editor/src/utils/image.ts
index 9c01c72..5fd8d1d 100644
--- a/packages/fluent-editor/src/utils/image.ts
+++ b/packages/fluent-editor/src/utils/image.ts
@@ -1,20 +1,22 @@
-export const imgToBase64 = (imageUrl: string) => new Promise((resolve, reject) => {
- const canvas = document.createElement('canvas')
- const img = new Image()
- img.crossOrigin = 'Anonymous'
- img.src = imageUrl
- img.onload = function () {
- const ctx = canvas.getContext('2d')
- if (ctx) {
- canvas.height = img.height
- canvas.width = img.width
- ctx.clearRect(0, 0, canvas.width, canvas.height)
- ctx.drawImage(img, 0, 0)
- const dataURL = canvas.toDataURL('image/png', 1)
- resolve(dataURL)
+export function imgToBase64(imageUrl: string) {
+ return new Promise((resolve, reject) => {
+ const canvas = document.createElement('canvas')
+ const img = new Image()
+ img.crossOrigin = 'Anonymous'
+ img.src = imageUrl
+ img.onload = function () {
+ const ctx = canvas.getContext('2d')
+ if (ctx) {
+ canvas.height = img.height
+ canvas.width = img.width
+ ctx.clearRect(0, 0, canvas.width, canvas.height)
+ ctx.drawImage(img, 0, 0)
+ const dataURL = canvas.toDataURL('image/png', 1)
+ resolve(dataURL)
+ }
}
- }
- img.onerror = function () {
- reject(new Error('Could not load image at ' + imageUrl))
- }
-})
+ img.onerror = function () {
+ reject(new Error(`Could not load image at ${imageUrl}`))
+ }
+ })
+}
diff --git a/packages/fluent-editor/src/utils/method.ts b/packages/fluent-editor/src/utils/method.ts
index 618f464..d1d2d44 100644
--- a/packages/fluent-editor/src/utils/method.ts
+++ b/packages/fluent-editor/src/utils/method.ts
@@ -18,7 +18,7 @@ const freeSelf
/** Used as a reference to the global object. */
export const root
- = freeGlobalThis || freeGlobal || freeSelf || Function('return this')()
+ = freeGlobalThis || freeGlobal || freeSelf || new Function('return this')()
export function isObject(value) {
const type = typeof value
@@ -53,7 +53,7 @@ export function compare(value, other) {
if (value === other) {
return true
}
- if (value instanceof Array && other instanceof Array) {
+ if (Array.isArray(value) && Array.isArray(other)) {
return compareArray(value, other)
}
if (value instanceof Function || other instanceof Function) {
diff --git a/packages/fluent-editor/src/utils/scroll-lock.ts b/packages/fluent-editor/src/utils/scroll-lock.ts
index b0b0877..585104c 100644
--- a/packages/fluent-editor/src/utils/scroll-lock.ts
+++ b/packages/fluent-editor/src/utils/scroll-lock.ts
@@ -1,5 +1,5 @@
let scrollBarWidth: number
-export const getScrollBarWidth = ({ target = document.body } = {}): number => {
+export function getScrollBarWidth({ target = document.body } = {}): number {
if (scrollBarWidth !== undefined) return scrollBarWidth
const outer = document.createElement('div')
@@ -24,7 +24,7 @@ export const getScrollBarWidth = ({ target = document.body } = {}): number => {
return scrollBarWidth
}
-export const lockScroll = ({ target = document.body } = {}) => {
+export function lockScroll({ target = document.body } = {}) {
let scrollBarWidth = 0
let originWidth = '0'
diff --git a/packages/fluent-editor/src/video/index.ts b/packages/fluent-editor/src/video/index.ts
index b7d5078..0a82216 100644
--- a/packages/fluent-editor/src/video/index.ts
+++ b/packages/fluent-editor/src/video/index.ts
@@ -1,5 +1,5 @@
-import Quill from 'quill'
import type { Parchment as TypeParchment } from 'quill'
+import Quill from 'quill'
import { sanitize } from '../config/editor.utils'
const BlockEmbed = Quill.imports['blots/block/embed'] as TypeParchment.BlotConstructor
@@ -25,15 +25,17 @@ class Video extends BlockEmbed {
VIDEO_ATTRIBUTES.forEach((key) => {
if (value[key]) {
switch (key) {
- case 'src':
- const src = Video.sanitize(value[key])
+ case 'src':{ const src = Video.sanitize(value[key])
node.setAttribute(key, src)
break
- case 'title':
+ }
+ case 'title': {
node.setAttribute(key, value[key])
break
- default:
+ }
+ default: {
node.dataset[key] = value[key]
+ }
}
}
})
diff --git a/packages/fluent-editor/tsconfig.json b/packages/fluent-editor/tsconfig.json
index 15956b2..74df4ff 100644
--- a/packages/fluent-editor/tsconfig.json
+++ b/packages/fluent-editor/tsconfig.json
@@ -1,26 +1,26 @@
{
"compilerOptions": {
"target": "es2017",
- "module": "esnext",
- "moduleResolution": "node",
- "strict": true,
"jsx": "preserve",
- "sourceMap": true,
- "resolveJsonModule": true,
- "esModuleInterop": true,
"lib": ["esnext", "dom"],
- "types": ["vite/client", "@types/node", "@types/jest", "quill/quill.d.ts", "quill/core.d.ts"],
+ "experimentalDecorators": true,
"baseUrl": "./",
- "downlevelIteration": true,
- "importHelpers": true,
+ "module": "esnext",
+ "moduleResolution": "node",
+ "resolveJsonModule": true,
+ "types": ["vite/client", "@types/node", "@types/jest", "quill/quill.d.ts", "quill/core.d.ts"],
+ "strict": true,
+ // 不允许this有隐式的any类型
+ "strictNullChecks": false,
+ "noImplicitAny": false, // 不允许隐式的any类型
+ "noImplicitThis": false,
// "outDir": "./dist/out-tsc",
"declaration": false,
+ "downlevelIteration": true,
+ "importHelpers": true,
+ "sourceMap": true,
"allowSyntheticDefaultImports": true,
- "experimentalDecorators": true,
-
- "noImplicitAny": false, // 不允许隐式的any类型
- "noImplicitThis": false, // 不允许this有隐式的any类型
- "strictNullChecks": false // 不允许把null、undefined赋值给其他类型的变量
+ "esModuleInterop": true // 不允许把null、undefined赋值给其他类型的变量
}
}
diff --git a/packages/fluent-editor/vite.config.theme.ts b/packages/fluent-editor/vite.config.theme.ts
index 6c92d74..35a976a 100644
--- a/packages/fluent-editor/vite.config.theme.ts
+++ b/packages/fluent-editor/vite.config.theme.ts
@@ -1,5 +1,5 @@
+import { resolve } from 'node:path'
import { defineConfig } from 'vite'
-import { resolve } from 'path'
export default defineConfig({
build: {
diff --git a/packages/fluent-editor/vite.config.ts b/packages/fluent-editor/vite.config.ts
index 9755e68..f55e268 100644
--- a/packages/fluent-editor/vite.config.ts
+++ b/packages/fluent-editor/vite.config.ts
@@ -1,17 +1,17 @@
-import { resolve } from 'path'
-import { defineConfig } from 'vite'
+import { readFileSync } from 'node:fs'
+import { resolve } from 'node:path'
import * as glob from 'glob'
-import { readFileSync } from 'fs'
+import { defineConfig } from 'vite'
interface Manifest {
version: string
dependencies?: Record
peerDependencies?: Record
}
-export const getPackageManifest = (pkgPath: string): Manifest => {
+export function getPackageManifest(pkgPath: string): Manifest {
return JSON.parse(readFileSync(pkgPath, 'utf8')) as Manifest
}
-export const rollupExternalFromPackage = (pkgPath: string) => {
+export function rollupExternalFromPackage(pkgPath: string) {
const { dependencies, peerDependencies } = getPackageManifest(pkgPath)
const dependenciesKeys = Object.keys(dependencies ?? {})
const peerDependenciesKeys = Object.keys(peerDependencies ?? {})
@@ -22,14 +22,16 @@ export const rollupExternalFromPackage = (pkgPath: string) => {
}
}
-const rollupOutput = (target: string, format: string): any => ({
- format: target,
- entryFileNames: `[name].${target}.js`,
- preserveModules: true,
- dir: resolve(__dirname, 'dist', format),
- preserveModulesRoot: resolve(__dirname, 'src'),
- exports: 'named',
-})
+function rollupOutput(target: string, format: string): any {
+ return {
+ format: target,
+ entryFileNames: `[name].${target}.js`,
+ preserveModules: true,
+ dir: resolve(__dirname, 'dist', format),
+ preserveModulesRoot: resolve(__dirname, 'src'),
+ exports: 'named',
+ }
+}
const input = glob.sync('./src/**/*.ts', {
cwd: __dirname,
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index aa89242..61ef97c 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -8,30 +8,18 @@ importers:
.:
devDependencies:
- '@stylistic/eslint-plugin':
- specifier: ^2.7.2
- version: 2.7.2(eslint@8.57.0)(typescript@4.9.5)
+ '@antfu/eslint-config':
+ specifier: ^3.7.3
+ version: 3.7.3(@typescript-eslint/utils@8.7.0(eslint@9.11.1)(typescript@5.6.2))(@vue/compiler-sfc@3.4.38)(eslint@9.11.1)(typescript@5.6.2)
'@types/node':
- specifier: ^15.0.2
- version: 15.14.9
- '@typescript-eslint/eslint-plugin':
- specifier: ^5.7.0
- version: 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0)(typescript@4.9.5)
- '@typescript-eslint/parser':
- specifier: ^5.7.0
- version: 5.62.0(eslint@8.57.0)(typescript@4.9.5)
+ specifier: ^22.7.0
+ version: 22.7.4
eslint:
- specifier: ^8.57.0
- version: 8.57.0
- eslint-plugin-vue:
- specifier: ^9.27.0
- version: 9.27.0(eslint@8.57.0)
+ specifier: ^9.0.0
+ version: 9.11.1
lint-staged:
specifier: ^12.1.4
version: 12.5.0
- quill:
- specifier: ^2.0.0
- version: 2.0.2
packages/docs:
dependencies:
@@ -55,14 +43,14 @@ importers:
version: 0.0.10
vue:
specifier: ^3.4.38
- version: 3.4.38(typescript@4.9.5)
+ version: 3.4.38(typescript@5.6.2)
devDependencies:
'@playwright/test':
specifier: ^1.46.1
version: 1.46.1
'@vitepress-code-preview/container':
specifier: ^1.0.8
- version: 1.0.8(vue@3.4.38(typescript@4.9.5))
+ version: 1.0.8(vue@3.4.38(typescript@5.6.2))
'@vitepress-code-preview/plugin':
specifier: ^1.0.4
version: 1.0.4
@@ -74,7 +62,7 @@ importers:
version: 2.9.18(less@4.2.0)(sass@1.77.8)
vitepress:
specifier: ^1.3.2
- version: 1.3.2(@algolia/client-search@4.24.0)(@types/node@15.14.9)(less@4.2.0)(postcss@8.4.41)(sass@1.77.8)(search-insights@2.16.2)(typescript@4.9.5)
+ version: 1.3.2(@algolia/client-search@4.24.0)(@types/node@22.7.4)(less@4.2.0)(postcss@8.4.41)(sass@1.77.8)(search-insights@2.16.2)(typescript@5.6.2)
packages/fluent-editor:
dependencies:
@@ -88,9 +76,6 @@ importers:
'@types/jest':
specifier: ^26.0.23
version: 26.0.24
- '@types/node':
- specifier: ^15.0.2
- version: 15.14.9
commander:
specifier: ^6.2.0
version: 6.2.1
@@ -119,11 +104,11 @@ importers:
specifier: ^9.1.1
version: 9.1.1(typescript@4.9.5)
typescript:
- specifier: ^4.2.4
+ specifier: ^4.9.5
version: 4.9.5
vite:
specifier: ^5.0.0
- version: 5.4.0(@types/node@15.14.9)(less@4.2.0)(sass@1.77.8)
+ version: 5.4.0(@types/node@22.7.4)(less@4.2.0)(sass@1.77.8)
packages:
@@ -196,6 +181,58 @@ packages:
resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
engines: {node: '>=6.0.0'}
+ '@antfu/eslint-config@3.7.3':
+ resolution: {integrity: sha512-vzhKtzQT+f/xBV8T5U8SFy3D7uAqL2CEcjsJVqtA7F8tdKvGuC/96uWeEKMHk5lRfijgj+xRvb+c4qQn60YlIA==}
+ hasBin: true
+ peerDependencies:
+ '@eslint-react/eslint-plugin': ^1.5.8
+ '@prettier/plugin-xml': ^3.4.1
+ '@unocss/eslint-plugin': '>=0.50.0'
+ astro-eslint-parser: ^1.0.2
+ eslint: ^9.10.0
+ eslint-plugin-astro: ^1.2.0
+ eslint-plugin-format: '>=0.1.0'
+ eslint-plugin-react-hooks: ^4.6.0
+ eslint-plugin-react-refresh: ^0.4.4
+ eslint-plugin-solid: ^0.14.3
+ eslint-plugin-svelte: '>=2.35.1'
+ prettier-plugin-astro: ^0.13.0
+ prettier-plugin-slidev: ^1.0.5
+ svelte-eslint-parser: '>=0.37.0'
+ peerDependenciesMeta:
+ '@eslint-react/eslint-plugin':
+ optional: true
+ '@prettier/plugin-xml':
+ optional: true
+ '@unocss/eslint-plugin':
+ optional: true
+ astro-eslint-parser:
+ optional: true
+ eslint-plugin-astro:
+ optional: true
+ eslint-plugin-format:
+ optional: true
+ eslint-plugin-react-hooks:
+ optional: true
+ eslint-plugin-react-refresh:
+ optional: true
+ eslint-plugin-solid:
+ optional: true
+ eslint-plugin-svelte:
+ optional: true
+ prettier-plugin-astro:
+ optional: true
+ prettier-plugin-slidev:
+ optional: true
+ svelte-eslint-parser:
+ optional: true
+
+ '@antfu/install-pkg@0.4.1':
+ resolution: {integrity: sha512-T7yB5QNG29afhWVkVq7XeIMBa5U/vs9mX69YqayXypPRmYzUmzwnYltplHmPtZ4HPCn+sQKeXW8I47wCbuBOjw==}
+
+ '@antfu/utils@0.7.10':
+ resolution: {integrity: sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==}
+
'@babel/code-frame@7.24.7':
resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==}
engines: {node: '>=6.9.0'}
@@ -335,6 +372,14 @@ packages:
'@bcoe/v8-coverage@0.2.3':
resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==}
+ '@clack/core@0.3.4':
+ resolution: {integrity: sha512-H4hxZDXgHtWTwV3RAVenqcC4VbJZNegbBjlPvzOzCouXtS2y3sDvlO3IsbrPNWuLWPPlYVYPghQdSF64683Ldw==}
+
+ '@clack/prompts@0.7.0':
+ resolution: {integrity: sha512-0MhX9/B4iL6Re04jPrttDm+BsP8y6mS7byuv0BvXgdXhbV5PdlsHt55dvNsuBCPZ7xq1oTAOOuotR9NFbQyMSA==}
+ bundledDependencies:
+ - is-unicode-supported
+
'@cnakazawa/watch@1.0.4':
resolution: {integrity: sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==}
engines: {node: '>=0.1.95'}
@@ -363,6 +408,10 @@ packages:
search-insights:
optional: true
+ '@es-joy/jsdoccomment@0.48.0':
+ resolution: {integrity: sha512-G6QUWIcC+KvSwXNsJyDTHvqUdNoAVJPPgkc3+Uk4WBKqZvoXhlvazOgm9aL0HwihJLQf0l+tOE2UFzXBqCqgDw==}
+ engines: {node: '>=16'}
+
'@esbuild/aix-ppc64@0.21.5':
resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==}
engines: {node: '>=12'}
@@ -507,6 +556,12 @@ packages:
cpu: [x64]
os: [win32]
+ '@eslint-community/eslint-plugin-eslint-comments@4.4.0':
+ resolution: {integrity: sha512-yljsWl5Qv3IkIRmJ38h3NrHXFCm4EUl55M8doGTF6hvzvFF8kRpextgSrg2dwHev9lzBZyafCr9RelGIyQm6fw==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0
+
'@eslint-community/eslint-utils@4.4.0':
resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@@ -517,13 +572,37 @@ packages:
resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==}
engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
- '@eslint/eslintrc@2.1.4':
- resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ '@eslint/compat@1.1.1':
+ resolution: {integrity: sha512-lpHyRyplhGPL5mGEh6M9O5nnKk0Gz4bFI+Zu6tKlPpDUN7XshWvH9C/px4UVm87IAANE0W81CEsNGbS1KlzXpA==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@eslint/js@8.57.0':
- resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ '@eslint/config-array@0.18.0':
+ resolution: {integrity: sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ '@eslint/core@0.6.0':
+ resolution: {integrity: sha512-8I2Q8ykA4J0x0o7cg67FPVnehcqWTBehu/lmY+bolPFHGjh49YzGBMXTvpqVgEbBdvNCSxj6iFgiIyHzf03lzg==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ '@eslint/eslintrc@3.1.0':
+ resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ '@eslint/js@9.11.1':
+ resolution: {integrity: sha512-/qu+TWz8WwPWc7/HcIJKi+c+MOm46GdVaSlTTQcaqaL53+GsoA6MxWp5PtTx48qbSP7ylM1Kn7nhvkugfJvRSA==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ '@eslint/markdown@6.1.1':
+ resolution: {integrity: sha512-Z+1js5AeqidwhNBbnIPM6Fn4eY9D5i1NleamS0UBW6BG0J4lpvhIVOKVIi22kmH5gvxDmHUp5MHkkkjda0TehA==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ '@eslint/object-schema@2.1.4':
+ resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ '@eslint/plugin-kit@0.2.0':
+ resolution: {integrity: sha512-vH9PiIMMwvhCx31Af3HiGzsVNULDbyVkHXwlemn/B0TFj/00ho3y55efXrUZTfQipxoHC5u4xq6zblww1zm1Ig==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@floating-ui/core@1.6.7':
resolution: {integrity: sha512-yDzVT/Lm101nQ5TCVeK65LtdN7Tj4Qpr9RTXJ2vPFLqtLxwOrpoxAHAJI8J3yYWUc40J0BDBheaitK5SJmno2g==}
@@ -537,18 +616,13 @@ packages:
'@floating-ui/vue@1.1.4':
resolution: {integrity: sha512-ammH7T3vyCx7pmm9OF19Wc42zrGnUw0QvLoidgypWsCLJMtGXEwY7paYIHO+K+oLC3mbWpzIHzeTVienYenlNg==}
- '@humanwhocodes/config-array@0.11.14':
- resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==}
- engines: {node: '>=10.10.0'}
- deprecated: Use @eslint/config-array instead
-
'@humanwhocodes/module-importer@1.0.1':
resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
engines: {node: '>=12.22'}
- '@humanwhocodes/object-schema@2.0.3':
- resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==}
- deprecated: Use @eslint/object-schema instead
+ '@humanwhocodes/retry@0.3.0':
+ resolution: {integrity: sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==}
+ engines: {node: '>=18.18'}
'@isaacs/cliui@8.0.2':
resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
@@ -640,6 +714,10 @@ packages:
resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
engines: {node: '>=14'}
+ '@pkgr/core@0.1.1':
+ resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==}
+ engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
+
'@playwright/test@1.46.1':
resolution: {integrity: sha512-Fq6SwLujA/DOIvNC2EL/SojJnkKf/rAwJ//APpJJHRyMi1PdKrY3Az+4XNQ51N4RTbItbIByQ0jgd1tayq1aeA==}
engines: {node: '>=18'}
@@ -737,8 +815,8 @@ packages:
'@sinonjs/fake-timers@6.0.1':
resolution: {integrity: sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==}
- '@stylistic/eslint-plugin@2.7.2':
- resolution: {integrity: sha512-3DVLU5HEuk2pQoBmXJlzvrxbKNpu2mJ0SRqz5O/CJjyNCr12ZiPcYMEtuArTyPOk5i7bsAU44nywh1rGfe3gKQ==}
+ '@stylistic/eslint-plugin@2.8.0':
+ resolution: {integrity: sha512-Ufvk7hP+bf+pD35R/QfunF793XlSRIC7USr3/EdgduK9j13i2JjmsM0LUz3/foS+jDYp2fzyWZA9N44CPur0Ow==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: '>=8.40.0'
@@ -762,12 +840,12 @@ packages:
'@types/debug@4.1.12':
resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==}
- '@types/eslint@9.6.1':
- resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==}
-
'@types/estree@1.0.5':
resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==}
+ '@types/estree@1.0.6':
+ resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==}
+
'@types/graceful-fs@4.1.9':
resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==}
@@ -804,8 +882,8 @@ packages:
'@types/ms@0.7.34':
resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==}
- '@types/node@15.14.9':
- resolution: {integrity: sha512-qjd88DrCxupx/kJD5yQgZdcYKZKSIGBVDIBE1/LTGcNm3d2Np/jxojkdePDdfnBHJc5W7vSMpbJ1aB7p/Py69A==}
+ '@types/node@22.7.4':
+ resolution: {integrity: sha512-y+NPi1rFzDs1NdQHHToqeiX2TIS79SWEAw9GYhkkx8bD0ChpfqC+n2j5OXOCpzfojBEBt6DnEnnG9MY0zk1XLg==}
'@types/normalize-package-data@2.4.4':
resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==}
@@ -813,9 +891,6 @@ packages:
'@types/prettier@2.7.3':
resolution: {integrity: sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==}
- '@types/semver@7.5.8':
- resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==}
-
'@types/stack-utils@2.0.3':
resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==}
@@ -831,64 +906,63 @@ packages:
'@types/yargs@15.0.19':
resolution: {integrity: sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==}
- '@typescript-eslint/eslint-plugin@5.62.0':
- resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ '@typescript-eslint/eslint-plugin@8.7.0':
+ resolution: {integrity: sha512-RIHOoznhA3CCfSTFiB6kBGLQtB/sox+pJ6jeFu6FxJvqL8qRxq/FfGO/UhsGgQM9oGdXkV4xUgli+dt26biB6A==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
- '@typescript-eslint/parser': ^5.0.0
- eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
+ '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0
+ eslint: ^8.57.0 || ^9.0.0
typescript: '*'
peerDependenciesMeta:
typescript:
optional: true
- '@typescript-eslint/parser@5.62.0':
- resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ '@typescript-eslint/parser@8.7.0':
+ resolution: {integrity: sha512-lN0btVpj2unxHlNYLI//BQ7nzbMJYBVQX5+pbNXvGYazdlgYonMn4AhhHifQ+J4fGRYA/m1DjaQjx+fDetqBOQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
- eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
+ eslint: ^8.57.0 || ^9.0.0
typescript: '*'
peerDependenciesMeta:
typescript:
optional: true
- '@typescript-eslint/scope-manager@5.62.0':
- resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
-
'@typescript-eslint/scope-manager@8.3.0':
resolution: {integrity: sha512-mz2X8WcN2nVu5Hodku+IR8GgCOl4C0G/Z1ruaWN4dgec64kDBabuXyPAr+/RgJtumv8EEkqIzf3X2U5DUKB2eg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@typescript-eslint/type-utils@5.62.0':
- resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ '@typescript-eslint/scope-manager@8.7.0':
+ resolution: {integrity: sha512-87rC0k3ZlDOuz82zzXRtQ7Akv3GKhHs0ti4YcbAJtaomllXoSO8hi7Ix3ccEvCd824dy9aIX+j3d2UMAfCtVpg==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ '@typescript-eslint/type-utils@8.7.0':
+ resolution: {integrity: sha512-tl0N0Mj3hMSkEYhLkjREp54OSb/FI6qyCzfiiclvJvOqre6hsZTGSnHtmFLDU8TIM62G7ygEa1bI08lcuRwEnQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
- eslint: '*'
typescript: '*'
peerDependenciesMeta:
typescript:
optional: true
- '@typescript-eslint/types@5.62.0':
- resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
-
'@typescript-eslint/types@8.3.0':
resolution: {integrity: sha512-y6sSEeK+facMaAyixM36dQ5NVXTnKWunfD1Ft4xraYqxP0lC0POJmIaL/mw72CUMqjY9qfyVfXafMeaUj0noWw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@typescript-eslint/typescript-estree@5.62.0':
- resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ '@typescript-eslint/types@8.7.0':
+ resolution: {integrity: sha512-LLt4BLHFwSfASHSF2K29SZ+ZCsbQOM+LuarPjRUuHm+Qd09hSe3GCeaQbcCr+Mik+0QFRmep/FyZBO6fJ64U3w==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ '@typescript-eslint/typescript-estree@8.3.0':
+ resolution: {integrity: sha512-Mq7FTHl0R36EmWlCJWojIC1qn/ZWo2YiWYc1XVtasJ7FIgjo0MVv9rZWXEE7IK2CGrtwe1dVOxWwqXUdNgfRCA==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '*'
peerDependenciesMeta:
typescript:
optional: true
- '@typescript-eslint/typescript-estree@8.3.0':
- resolution: {integrity: sha512-Mq7FTHl0R36EmWlCJWojIC1qn/ZWo2YiWYc1XVtasJ7FIgjo0MVv9rZWXEE7IK2CGrtwe1dVOxWwqXUdNgfRCA==}
+ '@typescript-eslint/typescript-estree@8.7.0':
+ resolution: {integrity: sha512-MC8nmcGHsmfAKxwnluTQpNqceniT8SteVwd2voYlmiSWGOtjvGXdPl17dYu2797GVscK30Z04WRM28CrKS9WOg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '*'
@@ -896,28 +970,25 @@ packages:
typescript:
optional: true
- '@typescript-eslint/utils@5.62.0':
- resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- peerDependencies:
- eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
-
'@typescript-eslint/utils@8.3.0':
resolution: {integrity: sha512-F77WwqxIi/qGkIGOGXNBLV7nykwfjLsdauRB/DOFPdv6LTF3BHHkBpq81/b5iMPSF055oO2BiivDJV4ChvNtXA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
- '@typescript-eslint/visitor-keys@5.62.0':
- resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ '@typescript-eslint/utils@8.7.0':
+ resolution: {integrity: sha512-ZbdUdwsl2X/s3CiyAu3gOlfQzpbuG3nTWKPoIvAu1pu5r8viiJvv2NPN2AqArL35NCYtw/lrPPfM4gxrMLNLPw==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ eslint: ^8.57.0 || ^9.0.0
'@typescript-eslint/visitor-keys@8.3.0':
resolution: {integrity: sha512-RmZwrTbQ9QveF15m/Cl28n0LXD6ea2CjkhH5rQ55ewz3H24w+AMCJHPVYaZ8/0HoG8Z3cLLFFycRXxeO2tz9FA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@ungap/structured-clone@1.2.0':
- resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==}
+ '@typescript-eslint/visitor-keys@8.7.0':
+ resolution: {integrity: sha512-b1tx0orFCCh/THWPQa2ZwWzvOeyzzp36vkJYOpVg0u8UVOIsfVrnuC9FqAw9gRKn+rG2VmWQ/zDJZzkxUnj/XQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@vitejs/plugin-vue@5.1.2':
resolution: {integrity: sha512-nY9IwH12qeiJqumTCLJLE7IiNx7HZ39cbHaysEUd+Myvbz9KAqd2yq+U01Kab1R/H1BmiyM2ShTYlNH32Fzo3A==}
@@ -936,6 +1007,21 @@ packages:
resolution: {integrity: sha512-MkIosPTkMeDtCgnhn843JrW2TfcyzhqnegQXii39BUOeldbKgNDklJUhMM5xWFG7lqTiqnOJTLhahlc8+E0Bkw==}
engines: {node: '>= 16'}
+ '@vitest/eslint-plugin@1.1.4':
+ resolution: {integrity: sha512-kudjgefmJJ7xQ2WfbUU6pZbm7Ou4gLYRaao/8Ynide3G0QhVKHd978sDyWX4KOH0CCMH9cyrGAkFd55eGzJ48Q==}
+ peerDependencies:
+ '@typescript-eslint/utils': '>= 8.0'
+ eslint: '>= 8.57.0'
+ typescript: '>= 5.0.0'
+ vitest: '*'
+ peerDependenciesMeta:
+ '@typescript-eslint/utils':
+ optional: true
+ typescript:
+ optional: true
+ vitest:
+ optional: true
+
'@vue/compiler-core@3.4.38':
resolution: {integrity: sha512-8IQOTCWnLFqfHzOGm9+P8OPSEDukgg3Huc92qSG49if/xI2SAwLHQO2qaPQbjCWPBcQoO1WYfXfTACUrWV3c5A==}
@@ -1098,6 +1184,10 @@ packages:
resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
engines: {node: '>= 8'}
+ are-docs-informative@0.0.2:
+ resolution: {integrity: sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==}
+ engines: {node: '>=14'}
+
arg@4.1.3:
resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==}
@@ -1119,10 +1209,6 @@ packages:
resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==}
engines: {node: '>=0.10.0'}
- array-union@2.1.0:
- resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
- engines: {node: '>=8'}
-
array-unique@0.3.2:
resolution: {integrity: sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==}
engines: {node: '>=0.10.0'}
@@ -1224,6 +1310,10 @@ packages:
buffer-from@1.1.2:
resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
+ builtin-modules@3.3.0:
+ resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==}
+ engines: {node: '>=6'}
+
cache-base@1.0.1:
resolution: {integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==}
engines: {node: '>=0.10.0'}
@@ -1251,6 +1341,9 @@ packages:
resolution: {integrity: sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==}
engines: {node: 6.* || 8.* || >= 10.*}
+ ccount@2.0.1:
+ resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==}
+
chalk@2.4.2:
resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
engines: {node: '>=4'}
@@ -1273,6 +1366,10 @@ packages:
ci-info@2.0.0:
resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==}
+ ci-info@4.0.0:
+ resolution: {integrity: sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==}
+ engines: {node: '>=8'}
+
cjs-module-lexer@0.6.0:
resolution: {integrity: sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw==}
@@ -1280,6 +1377,10 @@ packages:
resolution: {integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==}
engines: {node: '>=0.10.0'}
+ clean-regexp@1.0.0:
+ resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==}
+ engines: {node: '>=4'}
+
clean-stack@2.2.0:
resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==}
engines: {node: '>=6'}
@@ -1299,6 +1400,10 @@ packages:
cliui@6.0.0:
resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==}
+ cliui@8.0.1:
+ resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==}
+ engines: {node: '>=12'}
+
clone@2.1.2:
resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==}
engines: {node: '>=0.8'}
@@ -1346,12 +1451,19 @@ packages:
resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==}
engines: {node: ^12.20.0 || >=14}
+ comment-parser@1.4.1:
+ resolution: {integrity: sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==}
+ engines: {node: '>= 12.0.0'}
+
component-emitter@1.3.1:
resolution: {integrity: sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==}
concat-map@0.0.1:
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
+ confbox@0.1.7:
+ resolution: {integrity: sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==}
+
convert-source-map@1.9.0:
resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==}
@@ -1369,6 +1481,9 @@ packages:
resolution: {integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==}
engines: {node: '>=0.10.0'}
+ core-js-compat@3.38.1:
+ resolution: {integrity: sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw==}
+
create-require@1.1.1:
resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==}
@@ -1413,6 +1528,14 @@ packages:
supports-color:
optional: true
+ debug@3.2.7:
+ resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+
debug@4.3.6:
resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==}
engines: {node: '>=6.0'}
@@ -1490,10 +1613,6 @@ packages:
resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==}
engines: {node: '>=0.3.1'}
- dir-glob@3.0.1:
- resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
- engines: {node: '>=8'}
-
doctrine@3.0.0:
resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==}
engines: {node: '>=6.0.0'}
@@ -1522,6 +1641,10 @@ packages:
end-of-stream@1.4.4:
resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==}
+ enhanced-resolve@5.17.1:
+ resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==}
+ engines: {node: '>=10.13.0'}
+
entities@3.0.1:
resolution: {integrity: sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==}
engines: {node: '>=0.12'}
@@ -1545,6 +1668,9 @@ packages:
resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
engines: {node: '>= 0.4'}
+ es-module-lexer@1.5.4:
+ resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==}
+
esbuild-android-64@0.14.54:
resolution: {integrity: sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==}
engines: {node: '>=12'}
@@ -1700,20 +1826,144 @@ packages:
engines: {node: '>=6.0'}
hasBin: true
- eslint-plugin-vue@9.27.0:
- resolution: {integrity: sha512-5Dw3yxEyuBSXTzT5/Ge1X5kIkRTQ3nvBn/VwPwInNiZBSJOO/timWMUaflONnFBzU6NhB68lxnCda7ULV5N7LA==}
+ eslint-compat-utils@0.5.1:
+ resolution: {integrity: sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==}
+ engines: {node: '>=12'}
+ peerDependencies:
+ eslint: '>=6.0.0'
+
+ eslint-config-flat-gitignore@0.3.0:
+ resolution: {integrity: sha512-0Ndxo4qGhcewjTzw52TK06Mc00aDtHNTdeeW2JfONgDcLkRO/n/BteMRzNVpLQYxdCC/dFEilfM9fjjpGIJ9Og==}
+ peerDependencies:
+ eslint: ^9.5.0
+
+ eslint-flat-config-utils@0.4.0:
+ resolution: {integrity: sha512-kfd5kQZC+BMO0YwTol6zxjKX1zAsk8JfSAopbKjKqmENTJcew+yBejuvccAg37cvOrN0Mh+DVbeyznuNWEjt4A==}
+
+ eslint-import-resolver-node@0.3.9:
+ resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==}
+
+ eslint-merge-processors@0.1.0:
+ resolution: {integrity: sha512-IvRXXtEajLeyssvW4wJcZ2etxkR9mUf4zpNwgI+m/Uac9RfXHskuJefkHUcawVzePnd6xp24enp5jfgdHzjRdQ==}
+ peerDependencies:
+ eslint: '*'
+
+ eslint-plugin-antfu@2.7.0:
+ resolution: {integrity: sha512-gZM3jq3ouqaoHmUNszb1Zo2Ux7RckSvkGksjLWz9ipBYGSv1EwwBETN6AdiUXn+RpVHXTbEMPAPlXJazcA6+iA==}
+ peerDependencies:
+ eslint: '*'
+
+ eslint-plugin-command@0.2.6:
+ resolution: {integrity: sha512-T0bHZ1oblW1xUHUVoBKZJR2osSNNGkfZuK4iqboNwuNS/M7tdp3pmURaJtTi/XDzitxaQ02lvOdFH0mUd5QLvQ==}
+ peerDependencies:
+ eslint: '*'
+
+ eslint-plugin-es-x@7.8.0:
+ resolution: {integrity: sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==}
+ engines: {node: ^14.18.0 || >=16.0.0}
+ peerDependencies:
+ eslint: '>=8'
+
+ eslint-plugin-import-x@4.3.0:
+ resolution: {integrity: sha512-PxGzP7gAjF2DLeRnQtbYkkgZDg1intFyYr/XS1LgTYXUDrSXMHGkXx8++6i2eDv2jMs0jfeO6G6ykyeWxiFX7w==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ eslint: ^8.57.0 || ^9.0.0
+
+ eslint-plugin-jsdoc@50.3.0:
+ resolution: {integrity: sha512-P7qDB/RckdKETpBM4CtjHRQ5qXByPmFhRi86sN3E+J+tySchq+RSOGGhI2hDIefmmKFuTi/1ACjqsnDJDDDfzg==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ eslint: ^7.0.0 || ^8.0.0 || ^9.0.0
+
+ eslint-plugin-jsonc@2.16.0:
+ resolution: {integrity: sha512-Af/ZL5mgfb8FFNleH6KlO4/VdmDuTqmM+SPnWcdoWywTetv7kq+vQe99UyQb9XO3b0OWLVuTH7H0d/PXYCMdSg==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ eslint: '>=6.0.0'
+
+ eslint-plugin-n@17.10.3:
+ resolution: {integrity: sha512-ySZBfKe49nQZWR1yFaA0v/GsH6Fgp8ah6XV0WDz6CN8WO0ek4McMzb7A2xnf4DCYV43frjCygvb9f/wx7UUxRw==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ eslint: '>=8.23.0'
+
+ eslint-plugin-no-only-tests@3.3.0:
+ resolution: {integrity: sha512-brcKcxGnISN2CcVhXJ/kEQlNa0MEfGRtwKtWA16SkqXHKitaKIMrfemJKLKX1YqDU5C/5JY3PvZXd5jEW04e0Q==}
+ engines: {node: '>=5.0.0'}
+
+ eslint-plugin-perfectionist@3.7.0:
+ resolution: {integrity: sha512-pemhfcR3LDbYVWeveHok9u048yR7GpsnfyPvn6RsDkp/UV7iqBV0y5K0aGb9ZJMsemOyWok7akxGzPLsz+mHKQ==}
+ engines: {node: ^18.0.0 || >=20.0.0}
+ peerDependencies:
+ astro-eslint-parser: ^1.0.2
+ eslint: '>=8.0.0'
+ svelte: '>=3.0.0'
+ svelte-eslint-parser: ^0.41.1
+ vue-eslint-parser: '>=9.0.0'
+ peerDependenciesMeta:
+ astro-eslint-parser:
+ optional: true
+ svelte:
+ optional: true
+ svelte-eslint-parser:
+ optional: true
+ vue-eslint-parser:
+ optional: true
+
+ eslint-plugin-regexp@2.6.0:
+ resolution: {integrity: sha512-FCL851+kislsTEQEMioAlpDuK5+E5vs0hi1bF8cFlPlHcEjeRhuAzEsGikXRreE+0j4WhW2uO54MqTjXtYOi3A==}
+ engines: {node: ^18 || >=20}
+ peerDependencies:
+ eslint: '>=8.44.0'
+
+ eslint-plugin-toml@0.11.1:
+ resolution: {integrity: sha512-Y1WuMSzfZpeMIrmlP1nUh3kT8p96mThIq4NnHrYUhg10IKQgGfBZjAWnrg9fBqguiX4iFps/x/3Hb5TxBisfdw==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ eslint: '>=6.0.0'
+
+ eslint-plugin-unicorn@55.0.0:
+ resolution: {integrity: sha512-n3AKiVpY2/uDcGrS3+QsYDkjPfaOrNrsfQxU9nt5nitd9KuvVXrfAvgCO9DYPSfap+Gqjw9EOrXIsBp5tlHZjA==}
+ engines: {node: '>=18.18'}
+ peerDependencies:
+ eslint: '>=8.56.0'
+
+ eslint-plugin-unused-imports@4.1.4:
+ resolution: {integrity: sha512-YptD6IzQjDardkl0POxnnRBhU1OEePMV0nd6siHaRBbd+lyh6NAhFEobiznKU7kTsSsDeSD62Pe7kAM1b7dAZQ==}
+ peerDependencies:
+ '@typescript-eslint/eslint-plugin': ^8.0.0-0 || ^7.0.0 || ^6.0.0 || ^5.0.0
+ eslint: ^9.0.0 || ^8.0.0
+ peerDependenciesMeta:
+ '@typescript-eslint/eslint-plugin':
+ optional: true
+
+ eslint-plugin-vue@9.28.0:
+ resolution: {integrity: sha512-ShrihdjIhOTxs+MfWun6oJWuk+g/LAhN+CiuOl/jjkG3l0F2AuK5NMTaWqyvBgkFtpYmyks6P4603mLmhNJW8g==}
engines: {node: ^14.17.0 || >=16.0.0}
peerDependencies:
eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0
- eslint-scope@5.1.1:
- resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==}
- engines: {node: '>=8.0.0'}
+ eslint-plugin-yml@1.14.0:
+ resolution: {integrity: sha512-ESUpgYPOcAYQO9czugcX5OqRvn/ydDVwGCPXY4YjPqc09rHaUVUA6IE6HLQys4rXk/S+qx3EwTd1wHCwam/OWQ==}
+ engines: {node: ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ eslint: '>=6.0.0'
+
+ eslint-processor-vue-blocks@0.1.2:
+ resolution: {integrity: sha512-PfpJ4uKHnqeL/fXUnzYkOax3aIenlwewXRX8jFinA1a2yCFnLgMuiH3xvCgvHHUlV2xJWQHbCTdiJWGwb3NqpQ==}
+ peerDependencies:
+ '@vue/compiler-sfc': ^3.3.0
+ eslint: ^8.50.0 || ^9.0.0
eslint-scope@7.2.2:
resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ eslint-scope@8.1.0:
+ resolution: {integrity: sha512-14dSvlhaVhKKsa9Fx1l8A17s7ah7Ef7wCakJ10LYk6+GYmP9yDti2oq2SEwcyndt6knfcZyhyxwY3i9yL78EQw==}
+ 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}
@@ -1722,10 +1972,15 @@ packages:
resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- eslint@8.57.0:
- resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ eslint@9.11.1:
+ resolution: {integrity: sha512-MobhYKIoAO1s1e4VUrgx1l1Sk2JBR/Gqjjgw8+mfgoLE2xwsHur4gdfTxyTgShrhvdVFTaJSgMiQBl1jv/AWxg==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
hasBin: true
+ peerDependencies:
+ jiti: '*'
+ peerDependenciesMeta:
+ jiti:
+ optional: true
espree@10.1.0:
resolution: {integrity: sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==}
@@ -1748,10 +2003,6 @@ packages:
resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
engines: {node: '>=4.0'}
- estraverse@4.3.0:
- resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==}
- engines: {node: '>=4.0'}
-
estraverse@5.3.0:
resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
engines: {node: '>=4.0'}
@@ -1839,9 +2090,9 @@ packages:
fb-watchman@2.0.2:
resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==}
- file-entry-cache@6.0.1:
- resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
- engines: {node: ^10.12.0 || >=12.0.0}
+ file-entry-cache@8.0.0:
+ resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==}
+ engines: {node: '>=16.0.0'}
fill-range@4.0.0:
resolution: {integrity: sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==}
@@ -1851,6 +2102,10 @@ packages:
resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
engines: {node: '>=8'}
+ find-up-simple@1.0.0:
+ resolution: {integrity: sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==}
+ engines: {node: '>=18'}
+
find-up@4.1.0:
resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==}
engines: {node: '>=8'}
@@ -1859,9 +2114,9 @@ packages:
resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
engines: {node: '>=10'}
- flat-cache@3.2.0:
- resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==}
- engines: {node: ^10.12.0 || >=12.0.0}
+ flat-cache@4.0.1:
+ resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==}
+ engines: {node: '>=16'}
flatted@3.3.1:
resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==}
@@ -1936,6 +2191,9 @@ packages:
resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==}
engines: {node: '>=10'}
+ get-tsconfig@4.8.1:
+ resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==}
+
get-value@2.0.6:
resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==}
engines: {node: '>=0.10.0'}
@@ -1965,9 +2223,13 @@ packages:
resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==}
engines: {node: '>=8'}
- globby@11.1.0:
- resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
- engines: {node: '>=10'}
+ globals@14.0.0:
+ resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==}
+ engines: {node: '>=18'}
+
+ globals@15.9.0:
+ resolution: {integrity: sha512-SmSKyLLKFbSr6rptvP8izbyxJL4ILwqO9Jg23UA0sDlGlu58V59D1//I3vlc0KJphVdUR7vMjHIplYnzBxorQA==}
+ engines: {node: '>=18'}
gopd@1.0.1:
resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==}
@@ -2129,6 +2391,10 @@ packages:
is-buffer@1.1.6:
resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==}
+ is-builtin-module@3.2.1:
+ resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==}
+ engines: {node: '>=6'}
+
is-ci@2.0.0:
resolution: {integrity: sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==}
hasBin: true
@@ -2417,6 +2683,10 @@ packages:
resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
hasBin: true
+ jsdoc-type-pratt-parser@4.1.0:
+ resolution: {integrity: sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg==}
+ engines: {node: '>=12.0.0'}
+
jsdom@16.7.0:
resolution: {integrity: sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==}
engines: {node: '>=10'}
@@ -2426,11 +2696,20 @@ packages:
canvas:
optional: true
+ jsesc@0.5.0:
+ resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==}
+ hasBin: true
+
jsesc@2.5.2:
resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==}
engines: {node: '>=4'}
hasBin: true
+ jsesc@3.0.2:
+ resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==}
+ engines: {node: '>=6'}
+ hasBin: true
+
json-buffer@3.0.1:
resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
@@ -2448,6 +2727,10 @@ packages:
engines: {node: '>=6'}
hasBin: true
+ jsonc-eslint-parser@2.4.0:
+ resolution: {integrity: sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+
katex@0.16.11:
resolution: {integrity: sha512-RQrI8rlHY92OLf3rho/Ts8i/XvjgguEjOkO1BEXcU3N8BqPpSzBNwV/G0Ukr+P/l3ivvJUE/Fa/CwbS6HesGNQ==}
hasBin: true
@@ -2508,6 +2791,10 @@ packages:
enquirer:
optional: true
+ local-pkg@0.5.0:
+ resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==}
+ engines: {node: '>=14'}
+
locate-path@5.0.0:
resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==}
engines: {node: '>=8'}
@@ -2580,12 +2867,36 @@ packages:
resolution: {integrity: sha512-FtwnEuuK+2yVU7goGn/MJ0WBZMM9ZPgU9spqlFs7/A/pDIUNSOQZhUgOqYCficIuR2QaFnrt8LHqBWsbTAoI5w==}
hasBin: true
+ markdown-table@3.0.3:
+ resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==}
+
+ mdast-util-find-and-replace@3.0.1:
+ resolution: {integrity: sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==}
+
mdast-util-from-markdown@2.0.1:
resolution: {integrity: sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==}
mdast-util-frontmatter@2.0.1:
resolution: {integrity: sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA==}
+ mdast-util-gfm-autolink-literal@2.0.1:
+ resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==}
+
+ mdast-util-gfm-footnote@2.0.0:
+ resolution: {integrity: sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==}
+
+ mdast-util-gfm-strikethrough@2.0.0:
+ resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==}
+
+ mdast-util-gfm-table@2.0.0:
+ resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==}
+
+ mdast-util-gfm-task-list-item@2.0.0:
+ resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==}
+
+ mdast-util-gfm@3.0.0:
+ resolution: {integrity: sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==}
+
mdast-util-phrasing@4.1.0:
resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==}
@@ -2611,6 +2922,27 @@ packages:
micromark-extension-frontmatter@2.0.0:
resolution: {integrity: sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg==}
+ micromark-extension-gfm-autolink-literal@2.1.0:
+ resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==}
+
+ micromark-extension-gfm-footnote@2.1.0:
+ resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==}
+
+ micromark-extension-gfm-strikethrough@2.1.0:
+ resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==}
+
+ micromark-extension-gfm-table@2.1.0:
+ resolution: {integrity: sha512-Ub2ncQv+fwD70/l4ou27b4YzfNaCJOvyX4HxXU15m7mpYY+rjuWzsLIPZHJL253Z643RpbcP1oeIJlQ/SKW67g==}
+
+ micromark-extension-gfm-tagfilter@2.0.0:
+ resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==}
+
+ micromark-extension-gfm-task-list-item@2.1.0:
+ resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==}
+
+ micromark-extension-gfm@3.0.0:
+ resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==}
+
micromark-factory-destination@2.0.0:
resolution: {integrity: sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==}
@@ -2696,6 +3028,10 @@ packages:
resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
engines: {node: '>=6'}
+ min-indent@1.0.1:
+ resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==}
+ engines: {node: '>=4'}
+
minimatch@10.0.1:
resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==}
engines: {node: 20 || >=22}
@@ -2729,6 +3065,9 @@ packages:
engines: {node: '>=10'}
hasBin: true
+ mlly@1.7.1:
+ resolution: {integrity: sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==}
+
ms@2.0.0:
resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==}
@@ -2862,6 +3201,9 @@ packages:
package-json-from-dist@1.0.0:
resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==}
+ package-manager-detector@0.2.0:
+ resolution: {integrity: sha512-E385OSk9qDcXhcM9LNSe4sdhx8a9mAPrZ4sMLW+tmxl5ZuGtPUcdFu+MPP2jbgiWAZ6Pfe5soGFMd+0Db5Vrog==}
+
parchment@1.1.4:
resolution: {integrity: sha512-J5FBQt/pM2inLzg4hEWmzQx/8h8D0CiDxaG3vyp9rKrQRSDgBlhjdP5jQGgosEajXPSQouXGHOmVdgo7QmJuOg==}
@@ -2872,6 +3214,14 @@ packages:
resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
engines: {node: '>=6'}
+ parse-gitignore@2.0.0:
+ resolution: {integrity: sha512-RmVuCHWsfu0QPNW+mraxh/xjQVw/lhUCUru8Zni3Ctq3AoMhpDTq0OVdKS6iesd6Kqb7viCV3isAL43dciOSog==}
+ engines: {node: '>=14'}
+
+ parse-imports@2.2.1:
+ resolution: {integrity: sha512-OL/zLggRp8mFhKL0rNORUTR4yBYujK/uU+xZL+/0Rgm2QE4nLO9v8PzEweSJEbMGKmDRjJE4R3IMJlL2di4JeQ==}
+ engines: {node: '>= 18'}
+
parse-json@5.2.0:
resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
engines: {node: '>=8'}
@@ -2910,9 +3260,8 @@ packages:
resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==}
engines: {node: 20 || >=22}
- path-type@4.0.0:
- resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
- engines: {node: '>=8'}
+ pathe@1.1.2:
+ resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==}
perfect-debounce@1.0.0:
resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==}
@@ -2920,6 +3269,9 @@ packages:
picocolors@1.0.1:
resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==}
+ picocolors@1.1.0:
+ resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==}
+
picomatch@2.3.1:
resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
engines: {node: '>=8.6'}
@@ -2945,6 +3297,9 @@ packages:
resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==}
engines: {node: '>=8'}
+ pkg-types@1.2.0:
+ resolution: {integrity: sha512-+ifYuSSqOQ8CqP4MbZA5hDpb97n3E8SVWdJe+Wms9kj745lmd3b7EZJiqvmLwAlmRfjrI7Hi5z3kdBJ93lFNPA==}
+
playwright-core@1.46.1:
resolution: {integrity: sha512-h9LqIQaAv+CYvWzsZ+h3RsrqCStkBHlgo6/TJlFst3cOTlLghBQlJwPOZKQJTKNaD3QIB7aAVQ+gfWbN3NXB7A==}
engines: {node: '>=18'}
@@ -2955,6 +3310,10 @@ packages:
engines: {node: '>=18'}
hasBin: true
+ pluralize@8.0.0:
+ resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==}
+ engines: {node: '>=4'}
+
posix-character-classes@0.1.1:
resolution: {integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==}
engines: {node: '>=0.10.0'}
@@ -3038,14 +3397,30 @@ packages:
resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==}
engines: {node: '>= 0.10'}
+ refa@0.12.1:
+ resolution: {integrity: sha512-J8rn6v4DBb2nnFqkqwy6/NnTYMcgLA+sLr0iIO41qpv0n+ngb7ksag2tMRl0inb1bbO/esUwzW1vbJi7K0sI0g==}
+ engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
+
regex-not@1.0.2:
resolution: {integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==}
engines: {node: '>=0.10.0'}
+ regexp-ast-analysis@0.7.1:
+ resolution: {integrity: sha512-sZuz1dYW/ZsfG17WSAG7eS85r5a0dDsvg+7BiiYR5o6lKCAtUrEwdmRmaGF6rwVj3LcmAeYkOWKEPlbPzN3Y3A==}
+ engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
+
+ regexp-tree@0.1.27:
+ resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==}
+ hasBin: true
+
regexp.prototype.flags@1.5.2:
resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==}
engines: {node: '>= 0.4'}
+ regjsparser@0.10.0:
+ resolution: {integrity: sha512-qx+xQGZVsy55CH0a1hiVwHmqjLryfh7wQyF5HO07XJ9f7dQMY/gPQHhlyDkIzJKC+x2fUCpCcUODUUUFrm7SHA==}
+ hasBin: true
+
remark-frontmatter@5.0.0:
resolution: {integrity: sha512-XTFYvNASMe5iPN0719nPrdItC9aU0ssC4v14mH1BCi1u0n1gAocqcujWUrByftZTbLhRtiKRyjYTSIOcr69UVQ==}
@@ -3088,6 +3463,9 @@ packages:
resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
engines: {node: '>=8'}
+ resolve-pkg-maps@1.0.0:
+ resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==}
+
resolve-url@0.2.1:
resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==}
deprecated: https://github.com/lydell/resolve-url#deprecated
@@ -3160,6 +3538,10 @@ packages:
resolution: {integrity: sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==}
engines: {node: '>=10'}
+ scslre@0.3.0:
+ resolution: {integrity: sha512-3A6sD0WYP7+QrjbfNA2FN3FsOaGGFoekCVgTyypy53gPxhbkCIjtO6YWgdrfM+n/8sI8JeXZOIxsHjMTNxQ4nQ==}
+ engines: {node: ^14.0.0 || >=16.0.0}
+
search-insights@2.16.2:
resolution: {integrity: sha512-+KrS5rnYlyWgzoCNJGsNPw7Vv+47Y7Ze7KZ+/9Xls+5BUugEbU2yv1n9JsQOqv+MLKYfg3bxI5K6tYJxXZY8FA==}
@@ -3232,6 +3614,9 @@ packages:
resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
engines: {node: '>=8'}
+ slashes@3.0.12:
+ resolution: {integrity: sha512-Q9VME8WyGkc7pJf6QEkj3wE+2CnvZMI+XJhwdTPR8Z/kWQRXi7boAWLDibRPyHRTUTPx5FaU7MsyrjI3yLB4HA==}
+
slice-ansi@3.0.0:
resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==}
engines: {node: '>=8'}
@@ -3292,6 +3677,9 @@ packages:
spdx-expression-parse@3.0.1:
resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==}
+ spdx-expression-parse@4.0.0:
+ resolution: {integrity: sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==}
+
spdx-license-ids@3.0.18:
resolution: {integrity: sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==}
@@ -3306,6 +3694,9 @@ packages:
sprintf-js@1.0.3:
resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==}
+ stable-hash@0.0.4:
+ resolution: {integrity: sha512-LjdcbuBeLcdETCrPn9i8AYAZ1eCtu4ECAWtP7UleOiZ9LzVxRzzUZEoZ8zB24nhkQnDWyET0I+3sWokSDS3E7g==}
+
stack-utils@2.0.6:
resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==}
engines: {node: '>=10'}
@@ -3350,6 +3741,10 @@ packages:
resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==}
engines: {node: '>=6'}
+ strip-indent@3.0.0:
+ resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==}
+ engines: {node: '>=8'}
+
strip-json-comments@3.1.1:
resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
engines: {node: '>=8'}
@@ -3381,9 +3776,21 @@ packages:
symbol-tree@3.2.4:
resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==}
+ synckit@0.6.2:
+ resolution: {integrity: sha512-Vhf+bUa//YSTYKseDiiEuQmhGCoIF3CVBhunm3r/DQnYiGT4JssmnKQc44BIyOZRK2pKjXXAgbhfmbeoC9CJpA==}
+ engines: {node: '>=12.20'}
+
+ synckit@0.9.1:
+ resolution: {integrity: sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==}
+ engines: {node: ^14.18.0 || >=16.0.0}
+
tabbable@6.2.0:
resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==}
+ tapable@2.2.1:
+ resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==}
+ engines: {node: '>=6'}
+
terminal-link@2.1.1:
resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==}
engines: {node: '>=8'}
@@ -3404,6 +3811,9 @@ packages:
through@2.3.8:
resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==}
+ tinyexec@0.3.0:
+ resolution: {integrity: sha512-tVGE0mVJPGb0chKhqmsoosjsS+qUnJVGJpZgsHYQcGoPlG3B51R3PouqTgEGH2Dc9jjFyOqOpix6ZHNMXp1FZg==}
+
tmpl@1.0.5:
resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==}
@@ -3427,6 +3837,10 @@ packages:
resolution: {integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==}
engines: {node: '>=0.10.0'}
+ toml-eslint-parser@0.10.0:
+ resolution: {integrity: sha512-khrZo4buq4qVmsGzS5yQjKe/WsFvV8fGfOjDQN0q4iy9FjRfPWRgTFrU8u1R2iu/SfWLhY9WnCi4Jhdrcbtg+g==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+
tough-cookie@4.1.4:
resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==}
engines: {node: '>=6'}
@@ -3459,18 +3873,9 @@ packages:
peerDependencies:
typescript: '>=2.7'
- tslib@1.14.1:
- resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
-
tslib@2.6.3:
resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==}
- tsutils@3.21.0:
- resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==}
- engines: {node: '>= 6'}
- peerDependencies:
- typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta'
-
type-check@0.4.0:
resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
engines: {node: '>= 0.8.0'}
@@ -3503,9 +3908,20 @@ packages:
engines: {node: '>=4.2.0'}
hasBin: true
+ typescript@5.6.2:
+ resolution: {integrity: sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==}
+ engines: {node: '>=14.17'}
+ hasBin: true
+
uc.micro@1.0.6:
resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==}
+ ufo@1.5.4:
+ resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==}
+
+ undici-types@6.19.8:
+ resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==}
+
unified@11.0.5:
resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==}
@@ -3748,13 +4164,26 @@ packages:
y18n@4.0.3:
resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==}
+ y18n@5.0.8:
+ resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}
+ engines: {node: '>=10'}
+
yallist@3.1.1:
resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
+ yaml-eslint-parser@1.2.3:
+ resolution: {integrity: sha512-4wZWvE398hCP7O8n3nXKu/vdq1HcH01ixYlCREaJL5NUMwQ0g3MaGFUBNSlmBtKmhbtVG/Cm6lyYmSVTEVil8A==}
+ engines: {node: ^14.17.0 || >=16.0.0}
+
yaml@1.10.2:
resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==}
engines: {node: '>= 6'}
+ yaml@2.5.1:
+ resolution: {integrity: sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==}
+ engines: {node: '>= 14'}
+ hasBin: true
+
yargs-parser@18.1.3:
resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==}
engines: {node: '>=6'}
@@ -3763,10 +4192,18 @@ packages:
resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==}
engines: {node: '>=10'}
+ yargs-parser@21.1.1:
+ resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==}
+ engines: {node: '>=12'}
+
yargs@15.4.1:
resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==}
engines: {node: '>=8'}
+ yargs@17.7.2:
+ resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==}
+ engines: {node: '>=12'}
+
yn@3.1.1:
resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==}
engines: {node: '>=6'}
@@ -3889,6 +4326,59 @@ snapshots:
'@jridgewell/gen-mapping': 0.3.5
'@jridgewell/trace-mapping': 0.3.25
+ '@antfu/eslint-config@3.7.3(@typescript-eslint/utils@8.7.0(eslint@9.11.1)(typescript@5.6.2))(@vue/compiler-sfc@3.4.38)(eslint@9.11.1)(typescript@5.6.2)':
+ dependencies:
+ '@antfu/install-pkg': 0.4.1
+ '@clack/prompts': 0.7.0
+ '@eslint-community/eslint-plugin-eslint-comments': 4.4.0(eslint@9.11.1)
+ '@eslint/markdown': 6.1.1
+ '@stylistic/eslint-plugin': 2.8.0(eslint@9.11.1)(typescript@5.6.2)
+ '@typescript-eslint/eslint-plugin': 8.7.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1)(typescript@5.6.2))(eslint@9.11.1)(typescript@5.6.2)
+ '@typescript-eslint/parser': 8.7.0(eslint@9.11.1)(typescript@5.6.2)
+ '@vitest/eslint-plugin': 1.1.4(@typescript-eslint/utils@8.7.0(eslint@9.11.1)(typescript@5.6.2))(eslint@9.11.1)(typescript@5.6.2)
+ eslint: 9.11.1
+ eslint-config-flat-gitignore: 0.3.0(eslint@9.11.1)
+ eslint-flat-config-utils: 0.4.0
+ eslint-merge-processors: 0.1.0(eslint@9.11.1)
+ eslint-plugin-antfu: 2.7.0(eslint@9.11.1)
+ eslint-plugin-command: 0.2.6(eslint@9.11.1)
+ eslint-plugin-import-x: 4.3.0(eslint@9.11.1)(typescript@5.6.2)
+ eslint-plugin-jsdoc: 50.3.0(eslint@9.11.1)
+ eslint-plugin-jsonc: 2.16.0(eslint@9.11.1)
+ eslint-plugin-n: 17.10.3(eslint@9.11.1)
+ eslint-plugin-no-only-tests: 3.3.0
+ eslint-plugin-perfectionist: 3.7.0(eslint@9.11.1)(typescript@5.6.2)(vue-eslint-parser@9.4.3(eslint@9.11.1))
+ eslint-plugin-regexp: 2.6.0(eslint@9.11.1)
+ eslint-plugin-toml: 0.11.1(eslint@9.11.1)
+ eslint-plugin-unicorn: 55.0.0(eslint@9.11.1)
+ eslint-plugin-unused-imports: 4.1.4(@typescript-eslint/eslint-plugin@8.7.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1)(typescript@5.6.2))(eslint@9.11.1)(typescript@5.6.2))(eslint@9.11.1)
+ eslint-plugin-vue: 9.28.0(eslint@9.11.1)
+ eslint-plugin-yml: 1.14.0(eslint@9.11.1)
+ eslint-processor-vue-blocks: 0.1.2(@vue/compiler-sfc@3.4.38)(eslint@9.11.1)
+ globals: 15.9.0
+ jsonc-eslint-parser: 2.4.0
+ local-pkg: 0.5.0
+ parse-gitignore: 2.0.0
+ picocolors: 1.1.0
+ toml-eslint-parser: 0.10.0
+ vue-eslint-parser: 9.4.3(eslint@9.11.1)
+ yaml-eslint-parser: 1.2.3
+ yargs: 17.7.2
+ transitivePeerDependencies:
+ - '@typescript-eslint/utils'
+ - '@vue/compiler-sfc'
+ - supports-color
+ - svelte
+ - typescript
+ - vitest
+
+ '@antfu/install-pkg@0.4.1':
+ dependencies:
+ package-manager-detector: 0.2.0
+ tinyexec: 0.3.0
+
+ '@antfu/utils@0.7.10': {}
+
'@babel/code-frame@7.24.7':
dependencies:
'@babel/highlight': 7.24.7
@@ -4065,6 +4555,17 @@ snapshots:
'@bcoe/v8-coverage@0.2.3': {}
+ '@clack/core@0.3.4':
+ dependencies:
+ picocolors: 1.1.0
+ sisteransi: 1.0.5
+
+ '@clack/prompts@0.7.0':
+ dependencies:
+ '@clack/core': 0.3.4
+ picocolors: 1.1.0
+ sisteransi: 1.0.5
+
'@cnakazawa/watch@1.0.4':
dependencies:
exec-sh: 0.3.6
@@ -4094,6 +4595,12 @@ snapshots:
transitivePeerDependencies:
- '@algolia/client-search'
+ '@es-joy/jsdoccomment@0.48.0':
+ dependencies:
+ comment-parser: 1.4.1
+ esquery: 1.6.0
+ jsdoc-type-pratt-parser: 4.1.0
+
'@esbuild/aix-ppc64@0.21.5':
optional: true
@@ -4166,19 +4673,37 @@ snapshots:
'@esbuild/win32-x64@0.21.5':
optional: true
- '@eslint-community/eslint-utils@4.4.0(eslint@8.57.0)':
+ '@eslint-community/eslint-plugin-eslint-comments@4.4.0(eslint@9.11.1)':
dependencies:
- eslint: 8.57.0
+ escape-string-regexp: 4.0.0
+ eslint: 9.11.1
+ ignore: 5.3.2
+
+ '@eslint-community/eslint-utils@4.4.0(eslint@9.11.1)':
+ dependencies:
+ eslint: 9.11.1
eslint-visitor-keys: 3.4.3
'@eslint-community/regexpp@4.11.0': {}
- '@eslint/eslintrc@2.1.4':
+ '@eslint/compat@1.1.1': {}
+
+ '@eslint/config-array@0.18.0':
+ dependencies:
+ '@eslint/object-schema': 2.1.4
+ debug: 4.3.6(supports-color@9.4.0)
+ minimatch: 3.1.2
+ transitivePeerDependencies:
+ - supports-color
+
+ '@eslint/core@0.6.0': {}
+
+ '@eslint/eslintrc@3.1.0':
dependencies:
ajv: 6.12.6
debug: 4.3.6(supports-color@9.4.0)
- espree: 9.6.1
- globals: 13.24.0
+ espree: 10.1.0
+ globals: 14.0.0
ignore: 5.3.2
import-fresh: 3.3.0
js-yaml: 4.1.0
@@ -4187,7 +4712,22 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@eslint/js@8.57.0': {}
+ '@eslint/js@9.11.1': {}
+
+ '@eslint/markdown@6.1.1':
+ dependencies:
+ '@eslint/plugin-kit': 0.2.0
+ mdast-util-from-markdown: 2.0.1
+ mdast-util-gfm: 3.0.0
+ micromark-extension-gfm: 3.0.0
+ transitivePeerDependencies:
+ - supports-color
+
+ '@eslint/object-schema@2.1.4': {}
+
+ '@eslint/plugin-kit@0.2.0':
+ dependencies:
+ levn: 0.4.1
'@floating-ui/core@1.6.7':
dependencies:
@@ -4200,26 +4740,18 @@ snapshots:
'@floating-ui/utils@0.2.7': {}
- '@floating-ui/vue@1.1.4(vue@3.4.38(typescript@4.9.5))':
+ '@floating-ui/vue@1.1.4(vue@3.4.38(typescript@5.6.2))':
dependencies:
'@floating-ui/dom': 1.6.10
'@floating-ui/utils': 0.2.7
- vue-demi: 0.14.10(vue@3.4.38(typescript@4.9.5))
+ vue-demi: 0.14.10(vue@3.4.38(typescript@5.6.2))
transitivePeerDependencies:
- '@vue/composition-api'
- vue
- '@humanwhocodes/config-array@0.11.14':
- dependencies:
- '@humanwhocodes/object-schema': 2.0.3
- debug: 4.3.6(supports-color@9.4.0)
- minimatch: 3.1.2
- transitivePeerDependencies:
- - supports-color
-
'@humanwhocodes/module-importer@1.0.1': {}
- '@humanwhocodes/object-schema@2.0.3': {}
+ '@humanwhocodes/retry@0.3.0': {}
'@isaacs/cliui@8.0.2':
dependencies:
@@ -4243,7 +4775,7 @@ snapshots:
'@jest/console@26.6.2':
dependencies:
'@jest/types': 26.6.2
- '@types/node': 15.14.9
+ '@types/node': 22.7.4
chalk: 4.1.2
jest-message-util: 26.6.2
jest-util: 26.6.2
@@ -4256,7 +4788,7 @@ snapshots:
'@jest/test-result': 26.6.2
'@jest/transform': 26.6.2
'@jest/types': 26.6.2
- '@types/node': 15.14.9
+ '@types/node': 22.7.4
ansi-escapes: 4.3.2
chalk: 4.1.2
exit: 0.1.2
@@ -4290,14 +4822,14 @@ snapshots:
dependencies:
'@jest/fake-timers': 26.6.2
'@jest/types': 26.6.2
- '@types/node': 15.14.9
+ '@types/node': 22.7.4
jest-mock: 26.6.2
'@jest/fake-timers@26.6.2':
dependencies:
'@jest/types': 26.6.2
'@sinonjs/fake-timers': 6.0.1
- '@types/node': 15.14.9
+ '@types/node': 22.7.4
jest-message-util: 26.6.2
jest-mock: 26.6.2
jest-util: 26.6.2
@@ -4390,7 +4922,7 @@ snapshots:
dependencies:
'@types/istanbul-lib-coverage': 2.0.6
'@types/istanbul-reports': 3.0.4
- '@types/node': 15.14.9
+ '@types/node': 22.7.4
'@types/yargs': 15.0.19
chalk: 4.1.2
@@ -4426,6 +4958,8 @@ snapshots:
'@pkgjs/parseargs@0.11.0':
optional: true
+ '@pkgr/core@0.1.1': {}
+
'@playwright/test@1.46.1':
dependencies:
playwright: 1.46.1
@@ -4494,11 +5028,10 @@ snapshots:
dependencies:
'@sinonjs/commons': 1.8.6
- '@stylistic/eslint-plugin@2.7.2(eslint@8.57.0)(typescript@4.9.5)':
+ '@stylistic/eslint-plugin@2.8.0(eslint@9.11.1)(typescript@5.6.2)':
dependencies:
- '@types/eslint': 9.6.1
- '@typescript-eslint/utils': 8.3.0(eslint@8.57.0)(typescript@4.9.5)
- eslint: 8.57.0
+ '@typescript-eslint/utils': 8.7.0(eslint@9.11.1)(typescript@5.6.2)
+ eslint: 9.11.1
eslint-visitor-keys: 4.0.0
espree: 10.1.0
estraverse: 5.3.0
@@ -4534,16 +5067,13 @@ snapshots:
dependencies:
'@types/ms': 0.7.34
- '@types/eslint@9.6.1':
- dependencies:
- '@types/estree': 1.0.5
- '@types/json-schema': 7.0.15
-
'@types/estree@1.0.5': {}
+ '@types/estree@1.0.6': {}
+
'@types/graceful-fs@4.1.9':
dependencies:
- '@types/node': 15.14.9
+ '@types/node': 22.7.4
'@types/hast@3.0.4':
dependencies:
@@ -4581,14 +5111,14 @@ snapshots:
'@types/ms@0.7.34': {}
- '@types/node@15.14.9': {}
+ '@types/node@22.7.4':
+ dependencies:
+ undici-types: 6.19.8
'@types/normalize-package-data@2.4.4': {}
'@types/prettier@2.7.3': {}
- '@types/semver@7.5.8': {}
-
'@types/stack-utils@2.0.3': {}
'@types/unist@3.0.2': {}
@@ -4601,139 +5131,134 @@ snapshots:
dependencies:
'@types/yargs-parser': 21.0.3
- '@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0)(typescript@4.9.5)':
+ '@typescript-eslint/eslint-plugin@8.7.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1)(typescript@5.6.2))(eslint@9.11.1)(typescript@5.6.2)':
dependencies:
'@eslint-community/regexpp': 4.11.0
- '@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@4.9.5)
- '@typescript-eslint/scope-manager': 5.62.0
- '@typescript-eslint/type-utils': 5.62.0(eslint@8.57.0)(typescript@4.9.5)
- '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@4.9.5)
- debug: 4.3.6(supports-color@9.4.0)
- eslint: 8.57.0
+ '@typescript-eslint/parser': 8.7.0(eslint@9.11.1)(typescript@5.6.2)
+ '@typescript-eslint/scope-manager': 8.7.0
+ '@typescript-eslint/type-utils': 8.7.0(eslint@9.11.1)(typescript@5.6.2)
+ '@typescript-eslint/utils': 8.7.0(eslint@9.11.1)(typescript@5.6.2)
+ '@typescript-eslint/visitor-keys': 8.7.0
+ eslint: 9.11.1
graphemer: 1.4.0
ignore: 5.3.2
- natural-compare-lite: 1.4.0
- semver: 7.6.3
- tsutils: 3.21.0(typescript@4.9.5)
+ natural-compare: 1.4.0
+ ts-api-utils: 1.3.0(typescript@5.6.2)
optionalDependencies:
- typescript: 4.9.5
+ typescript: 5.6.2
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@4.9.5)':
+ '@typescript-eslint/parser@8.7.0(eslint@9.11.1)(typescript@5.6.2)':
dependencies:
- '@typescript-eslint/scope-manager': 5.62.0
- '@typescript-eslint/types': 5.62.0
- '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5)
+ '@typescript-eslint/scope-manager': 8.7.0
+ '@typescript-eslint/types': 8.7.0
+ '@typescript-eslint/typescript-estree': 8.7.0(typescript@5.6.2)
+ '@typescript-eslint/visitor-keys': 8.7.0
debug: 4.3.6(supports-color@9.4.0)
- eslint: 8.57.0
+ eslint: 9.11.1
optionalDependencies:
- typescript: 4.9.5
+ typescript: 5.6.2
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/scope-manager@5.62.0':
- dependencies:
- '@typescript-eslint/types': 5.62.0
- '@typescript-eslint/visitor-keys': 5.62.0
-
'@typescript-eslint/scope-manager@8.3.0':
dependencies:
'@typescript-eslint/types': 8.3.0
'@typescript-eslint/visitor-keys': 8.3.0
- '@typescript-eslint/type-utils@5.62.0(eslint@8.57.0)(typescript@4.9.5)':
+ '@typescript-eslint/scope-manager@8.7.0':
+ dependencies:
+ '@typescript-eslint/types': 8.7.0
+ '@typescript-eslint/visitor-keys': 8.7.0
+
+ '@typescript-eslint/type-utils@8.7.0(eslint@9.11.1)(typescript@5.6.2)':
dependencies:
- '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5)
- '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@4.9.5)
+ '@typescript-eslint/typescript-estree': 8.7.0(typescript@5.6.2)
+ '@typescript-eslint/utils': 8.7.0(eslint@9.11.1)(typescript@5.6.2)
debug: 4.3.6(supports-color@9.4.0)
- eslint: 8.57.0
- tsutils: 3.21.0(typescript@4.9.5)
+ ts-api-utils: 1.3.0(typescript@5.6.2)
optionalDependencies:
- typescript: 4.9.5
+ typescript: 5.6.2
transitivePeerDependencies:
+ - eslint
- supports-color
- '@typescript-eslint/types@5.62.0': {}
-
'@typescript-eslint/types@8.3.0': {}
- '@typescript-eslint/typescript-estree@5.62.0(typescript@4.9.5)':
+ '@typescript-eslint/types@8.7.0': {}
+
+ '@typescript-eslint/typescript-estree@8.3.0(typescript@5.6.2)':
dependencies:
- '@typescript-eslint/types': 5.62.0
- '@typescript-eslint/visitor-keys': 5.62.0
+ '@typescript-eslint/types': 8.3.0
+ '@typescript-eslint/visitor-keys': 8.3.0
debug: 4.3.6(supports-color@9.4.0)
- globby: 11.1.0
+ fast-glob: 3.3.2
is-glob: 4.0.3
+ minimatch: 9.0.5
semver: 7.6.3
- tsutils: 3.21.0(typescript@4.9.5)
+ ts-api-utils: 1.3.0(typescript@5.6.2)
optionalDependencies:
- typescript: 4.9.5
+ typescript: 5.6.2
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/typescript-estree@8.3.0(typescript@4.9.5)':
+ '@typescript-eslint/typescript-estree@8.7.0(typescript@5.6.2)':
dependencies:
- '@typescript-eslint/types': 8.3.0
- '@typescript-eslint/visitor-keys': 8.3.0
+ '@typescript-eslint/types': 8.7.0
+ '@typescript-eslint/visitor-keys': 8.7.0
debug: 4.3.6(supports-color@9.4.0)
fast-glob: 3.3.2
is-glob: 4.0.3
minimatch: 9.0.5
semver: 7.6.3
- ts-api-utils: 1.3.0(typescript@4.9.5)
+ ts-api-utils: 1.3.0(typescript@5.6.2)
optionalDependencies:
- typescript: 4.9.5
+ typescript: 5.6.2
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/utils@5.62.0(eslint@8.57.0)(typescript@4.9.5)':
+ '@typescript-eslint/utils@8.3.0(eslint@9.11.1)(typescript@5.6.2)':
dependencies:
- '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0)
- '@types/json-schema': 7.0.15
- '@types/semver': 7.5.8
- '@typescript-eslint/scope-manager': 5.62.0
- '@typescript-eslint/types': 5.62.0
- '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5)
- eslint: 8.57.0
- eslint-scope: 5.1.1
- semver: 7.6.3
+ '@eslint-community/eslint-utils': 4.4.0(eslint@9.11.1)
+ '@typescript-eslint/scope-manager': 8.3.0
+ '@typescript-eslint/types': 8.3.0
+ '@typescript-eslint/typescript-estree': 8.3.0(typescript@5.6.2)
+ eslint: 9.11.1
transitivePeerDependencies:
- supports-color
- typescript
- '@typescript-eslint/utils@8.3.0(eslint@8.57.0)(typescript@4.9.5)':
+ '@typescript-eslint/utils@8.7.0(eslint@9.11.1)(typescript@5.6.2)':
dependencies:
- '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0)
- '@typescript-eslint/scope-manager': 8.3.0
- '@typescript-eslint/types': 8.3.0
- '@typescript-eslint/typescript-estree': 8.3.0(typescript@4.9.5)
- eslint: 8.57.0
+ '@eslint-community/eslint-utils': 4.4.0(eslint@9.11.1)
+ '@typescript-eslint/scope-manager': 8.7.0
+ '@typescript-eslint/types': 8.7.0
+ '@typescript-eslint/typescript-estree': 8.7.0(typescript@5.6.2)
+ eslint: 9.11.1
transitivePeerDependencies:
- supports-color
- typescript
- '@typescript-eslint/visitor-keys@5.62.0':
- dependencies:
- '@typescript-eslint/types': 5.62.0
- eslint-visitor-keys: 3.4.3
-
'@typescript-eslint/visitor-keys@8.3.0':
dependencies:
'@typescript-eslint/types': 8.3.0
eslint-visitor-keys: 3.4.3
- '@ungap/structured-clone@1.2.0': {}
+ '@typescript-eslint/visitor-keys@8.7.0':
+ dependencies:
+ '@typescript-eslint/types': 8.7.0
+ eslint-visitor-keys: 3.4.3
- '@vitejs/plugin-vue@5.1.2(vite@5.4.0(@types/node@15.14.9)(less@4.2.0)(sass@1.77.8))(vue@3.4.38(typescript@4.9.5))':
+ '@vitejs/plugin-vue@5.1.2(vite@5.4.0(@types/node@22.7.4)(less@4.2.0)(sass@1.77.8))(vue@3.4.38(typescript@5.6.2))':
dependencies:
- vite: 5.4.0(@types/node@15.14.9)(less@4.2.0)(sass@1.77.8)
- vue: 3.4.38(typescript@4.9.5)
+ vite: 5.4.0(@types/node@22.7.4)(less@4.2.0)(sass@1.77.8)
+ vue: 3.4.38(typescript@5.6.2)
- '@vitepress-code-preview/container@1.0.8(vue@3.4.38(typescript@4.9.5))':
+ '@vitepress-code-preview/container@1.0.8(vue@3.4.38(typescript@5.6.2))':
dependencies:
- '@floating-ui/vue': 1.1.4(vue@3.4.38(typescript@4.9.5))
- vue: 3.4.38(typescript@4.9.5)
+ '@floating-ui/vue': 1.1.4(vue@3.4.38(typescript@5.6.2))
+ vue: 3.4.38(typescript@5.6.2)
transitivePeerDependencies:
- '@vue/composition-api'
@@ -4749,6 +5274,13 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ '@vitest/eslint-plugin@1.1.4(@typescript-eslint/utils@8.7.0(eslint@9.11.1)(typescript@5.6.2))(eslint@9.11.1)(typescript@5.6.2)':
+ dependencies:
+ eslint: 9.11.1
+ optionalDependencies:
+ '@typescript-eslint/utils': 8.7.0(eslint@9.11.1)(typescript@5.6.2)
+ typescript: 5.6.2
+
'@vue/compiler-core@3.4.38':
dependencies:
'@babel/parser': 7.25.3
@@ -4813,31 +5345,31 @@ snapshots:
'@vue/shared': 3.4.38
csstype: 3.1.3
- '@vue/server-renderer@3.4.38(vue@3.4.38(typescript@4.9.5))':
+ '@vue/server-renderer@3.4.38(vue@3.4.38(typescript@5.6.2))':
dependencies:
'@vue/compiler-ssr': 3.4.38
'@vue/shared': 3.4.38
- vue: 3.4.38(typescript@4.9.5)
+ vue: 3.4.38(typescript@5.6.2)
'@vue/shared@3.4.37': {}
'@vue/shared@3.4.38': {}
- '@vueuse/core@10.11.1(vue@3.4.38(typescript@4.9.5))':
+ '@vueuse/core@10.11.1(vue@3.4.38(typescript@5.6.2))':
dependencies:
'@types/web-bluetooth': 0.0.20
'@vueuse/metadata': 10.11.1
- '@vueuse/shared': 10.11.1(vue@3.4.38(typescript@4.9.5))
- vue-demi: 0.14.10(vue@3.4.38(typescript@4.9.5))
+ '@vueuse/shared': 10.11.1(vue@3.4.38(typescript@5.6.2))
+ vue-demi: 0.14.10(vue@3.4.38(typescript@5.6.2))
transitivePeerDependencies:
- '@vue/composition-api'
- vue
- '@vueuse/integrations@10.11.1(focus-trap@7.5.4)(vue@3.4.38(typescript@4.9.5))':
+ '@vueuse/integrations@10.11.1(focus-trap@7.5.4)(vue@3.4.38(typescript@5.6.2))':
dependencies:
- '@vueuse/core': 10.11.1(vue@3.4.38(typescript@4.9.5))
- '@vueuse/shared': 10.11.1(vue@3.4.38(typescript@4.9.5))
- vue-demi: 0.14.10(vue@3.4.38(typescript@4.9.5))
+ '@vueuse/core': 10.11.1(vue@3.4.38(typescript@5.6.2))
+ '@vueuse/shared': 10.11.1(vue@3.4.38(typescript@5.6.2))
+ vue-demi: 0.14.10(vue@3.4.38(typescript@5.6.2))
optionalDependencies:
focus-trap: 7.5.4
transitivePeerDependencies:
@@ -4846,9 +5378,9 @@ snapshots:
'@vueuse/metadata@10.11.1': {}
- '@vueuse/shared@10.11.1(vue@3.4.38(typescript@4.9.5))':
+ '@vueuse/shared@10.11.1(vue@3.4.38(typescript@5.6.2))':
dependencies:
- vue-demi: 0.14.10(vue@3.4.38(typescript@4.9.5))
+ vue-demi: 0.14.10(vue@3.4.38(typescript@5.6.2))
transitivePeerDependencies:
- '@vue/composition-api'
- vue
@@ -4936,6 +5468,8 @@ snapshots:
normalize-path: 3.0.0
picomatch: 2.3.1
+ are-docs-informative@0.0.2: {}
+
arg@4.1.3: {}
argparse@1.0.10:
@@ -4950,8 +5484,6 @@ snapshots:
arr-union@3.1.0: {}
- array-union@2.1.0: {}
-
array-unique@0.3.2: {}
assign-symbols@1.0.0: {}
@@ -5084,6 +5616,8 @@ snapshots:
buffer-from@1.1.2: {}
+ builtin-modules@3.3.0: {}
+
cache-base@1.0.1:
dependencies:
collection-visit: 1.0.0
@@ -5116,6 +5650,8 @@ snapshots:
dependencies:
rsvp: 4.8.5
+ ccount@2.0.1: {}
+
chalk@2.4.2:
dependencies:
ansi-styles: 3.2.1
@@ -5145,6 +5681,8 @@ snapshots:
ci-info@2.0.0: {}
+ ci-info@4.0.0: {}
+
cjs-module-lexer@0.6.0: {}
class-utils@0.3.6:
@@ -5154,6 +5692,10 @@ snapshots:
isobject: 3.0.1
static-extend: 0.1.2
+ clean-regexp@1.0.0:
+ dependencies:
+ escape-string-regexp: 1.0.5
+
clean-stack@2.2.0: {}
cli-cursor@3.1.0:
@@ -5176,6 +5718,12 @@ snapshots:
strip-ansi: 6.0.1
wrap-ansi: 6.2.0
+ cliui@8.0.1:
+ dependencies:
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+ wrap-ansi: 7.0.0
+
clone@2.1.2: {}
co@4.6.0: {}
@@ -5211,10 +5759,14 @@ snapshots:
commander@9.5.0: {}
+ comment-parser@1.4.1: {}
+
component-emitter@1.3.1: {}
concat-map@0.0.1: {}
+ confbox@0.1.7: {}
+
convert-source-map@1.9.0: {}
convert-source-map@2.0.0: {}
@@ -5229,6 +5781,10 @@ snapshots:
copy-descriptor@0.1.1: {}
+ core-js-compat@3.38.1:
+ dependencies:
+ browserslist: 4.23.3
+
create-require@1.1.1: {}
cross-spawn@6.0.5:
@@ -5271,6 +5827,10 @@ snapshots:
dependencies:
ms: 2.0.0
+ debug@3.2.7:
+ dependencies:
+ ms: 2.1.2
+
debug@4.3.6(supports-color@9.4.0):
dependencies:
ms: 2.1.2
@@ -5339,10 +5899,6 @@ snapshots:
diff@4.0.2: {}
- dir-glob@3.0.1:
- dependencies:
- path-type: 4.0.0
-
doctrine@3.0.0:
dependencies:
esutils: 2.0.3
@@ -5365,6 +5921,11 @@ snapshots:
dependencies:
once: 1.4.0
+ enhanced-resolve@5.17.1:
+ dependencies:
+ graceful-fs: 4.2.11
+ tapable: 2.2.1
+
entities@3.0.1: {}
entities@4.5.0: {}
@@ -5384,6 +5945,8 @@ snapshots:
es-errors@1.3.0: {}
+ es-module-lexer@1.5.4: {}
+
esbuild-android-64@0.14.54:
optional: true
@@ -5512,68 +6075,246 @@ snapshots:
optionalDependencies:
source-map: 0.6.1
- eslint-plugin-vue@9.27.0(eslint@8.57.0):
+ eslint-compat-utils@0.5.1(eslint@9.11.1):
+ dependencies:
+ eslint: 9.11.1
+ semver: 7.6.3
+
+ eslint-config-flat-gitignore@0.3.0(eslint@9.11.1):
+ dependencies:
+ '@eslint/compat': 1.1.1
+ eslint: 9.11.1
+ find-up-simple: 1.0.0
+
+ eslint-flat-config-utils@0.4.0:
+ dependencies:
+ pathe: 1.1.2
+
+ eslint-import-resolver-node@0.3.9:
+ dependencies:
+ debug: 3.2.7
+ is-core-module: 2.15.0
+ resolve: 1.22.8
+ transitivePeerDependencies:
+ - supports-color
+
+ eslint-merge-processors@0.1.0(eslint@9.11.1):
+ dependencies:
+ eslint: 9.11.1
+
+ eslint-plugin-antfu@2.7.0(eslint@9.11.1):
+ dependencies:
+ '@antfu/utils': 0.7.10
+ eslint: 9.11.1
+
+ eslint-plugin-command@0.2.6(eslint@9.11.1):
+ dependencies:
+ '@es-joy/jsdoccomment': 0.48.0
+ eslint: 9.11.1
+
+ eslint-plugin-es-x@7.8.0(eslint@9.11.1):
+ dependencies:
+ '@eslint-community/eslint-utils': 4.4.0(eslint@9.11.1)
+ '@eslint-community/regexpp': 4.11.0
+ eslint: 9.11.1
+ eslint-compat-utils: 0.5.1(eslint@9.11.1)
+
+ eslint-plugin-import-x@4.3.0(eslint@9.11.1)(typescript@5.6.2):
+ dependencies:
+ '@typescript-eslint/utils': 8.3.0(eslint@9.11.1)(typescript@5.6.2)
+ debug: 4.3.6(supports-color@9.4.0)
+ doctrine: 3.0.0
+ eslint: 9.11.1
+ eslint-import-resolver-node: 0.3.9
+ get-tsconfig: 4.8.1
+ is-glob: 4.0.3
+ minimatch: 9.0.5
+ semver: 7.6.3
+ stable-hash: 0.0.4
+ tslib: 2.6.3
+ transitivePeerDependencies:
+ - supports-color
+ - typescript
+
+ eslint-plugin-jsdoc@50.3.0(eslint@9.11.1):
+ dependencies:
+ '@es-joy/jsdoccomment': 0.48.0
+ are-docs-informative: 0.0.2
+ comment-parser: 1.4.1
+ debug: 4.3.6(supports-color@9.4.0)
+ escape-string-regexp: 4.0.0
+ eslint: 9.11.1
+ espree: 10.1.0
+ esquery: 1.6.0
+ parse-imports: 2.2.1
+ semver: 7.6.3
+ spdx-expression-parse: 4.0.0
+ synckit: 0.9.1
+ transitivePeerDependencies:
+ - supports-color
+
+ eslint-plugin-jsonc@2.16.0(eslint@9.11.1):
+ dependencies:
+ '@eslint-community/eslint-utils': 4.4.0(eslint@9.11.1)
+ eslint: 9.11.1
+ eslint-compat-utils: 0.5.1(eslint@9.11.1)
+ espree: 9.6.1
+ graphemer: 1.4.0
+ jsonc-eslint-parser: 2.4.0
+ natural-compare: 1.4.0
+ synckit: 0.6.2
+
+ eslint-plugin-n@17.10.3(eslint@9.11.1):
+ dependencies:
+ '@eslint-community/eslint-utils': 4.4.0(eslint@9.11.1)
+ enhanced-resolve: 5.17.1
+ eslint: 9.11.1
+ eslint-plugin-es-x: 7.8.0(eslint@9.11.1)
+ get-tsconfig: 4.8.1
+ globals: 15.9.0
+ ignore: 5.3.2
+ minimatch: 9.0.5
+ semver: 7.6.3
+
+ eslint-plugin-no-only-tests@3.3.0: {}
+
+ eslint-plugin-perfectionist@3.7.0(eslint@9.11.1)(typescript@5.6.2)(vue-eslint-parser@9.4.3(eslint@9.11.1)):
+ dependencies:
+ '@typescript-eslint/types': 8.7.0
+ '@typescript-eslint/utils': 8.7.0(eslint@9.11.1)(typescript@5.6.2)
+ eslint: 9.11.1
+ minimatch: 9.0.5
+ natural-compare-lite: 1.4.0
+ optionalDependencies:
+ vue-eslint-parser: 9.4.3(eslint@9.11.1)
+ transitivePeerDependencies:
+ - supports-color
+ - typescript
+
+ eslint-plugin-regexp@2.6.0(eslint@9.11.1):
+ dependencies:
+ '@eslint-community/eslint-utils': 4.4.0(eslint@9.11.1)
+ '@eslint-community/regexpp': 4.11.0
+ comment-parser: 1.4.1
+ eslint: 9.11.1
+ jsdoc-type-pratt-parser: 4.1.0
+ refa: 0.12.1
+ regexp-ast-analysis: 0.7.1
+ scslre: 0.3.0
+
+ eslint-plugin-toml@0.11.1(eslint@9.11.1):
+ dependencies:
+ debug: 4.3.6(supports-color@9.4.0)
+ eslint: 9.11.1
+ eslint-compat-utils: 0.5.1(eslint@9.11.1)
+ lodash: 4.17.21
+ toml-eslint-parser: 0.10.0
+ transitivePeerDependencies:
+ - supports-color
+
+ eslint-plugin-unicorn@55.0.0(eslint@9.11.1):
+ dependencies:
+ '@babel/helper-validator-identifier': 7.24.7
+ '@eslint-community/eslint-utils': 4.4.0(eslint@9.11.1)
+ ci-info: 4.0.0
+ clean-regexp: 1.0.0
+ core-js-compat: 3.38.1
+ eslint: 9.11.1
+ esquery: 1.6.0
+ globals: 15.9.0
+ indent-string: 4.0.0
+ is-builtin-module: 3.2.1
+ jsesc: 3.0.2
+ pluralize: 8.0.0
+ read-pkg-up: 7.0.1
+ regexp-tree: 0.1.27
+ regjsparser: 0.10.0
+ semver: 7.6.3
+ strip-indent: 3.0.0
+
+ eslint-plugin-unused-imports@4.1.4(@typescript-eslint/eslint-plugin@8.7.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1)(typescript@5.6.2))(eslint@9.11.1)(typescript@5.6.2))(eslint@9.11.1):
dependencies:
- '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0)
- eslint: 8.57.0
+ eslint: 9.11.1
+ optionalDependencies:
+ '@typescript-eslint/eslint-plugin': 8.7.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1)(typescript@5.6.2))(eslint@9.11.1)(typescript@5.6.2)
+
+ eslint-plugin-vue@9.28.0(eslint@9.11.1):
+ dependencies:
+ '@eslint-community/eslint-utils': 4.4.0(eslint@9.11.1)
+ eslint: 9.11.1
globals: 13.24.0
natural-compare: 1.4.0
nth-check: 2.1.1
postcss-selector-parser: 6.1.2
semver: 7.6.3
- vue-eslint-parser: 9.4.3(eslint@8.57.0)
+ vue-eslint-parser: 9.4.3(eslint@9.11.1)
xml-name-validator: 4.0.0
transitivePeerDependencies:
- supports-color
- eslint-scope@5.1.1:
+ eslint-plugin-yml@1.14.0(eslint@9.11.1):
dependencies:
- esrecurse: 4.3.0
- estraverse: 4.3.0
+ debug: 4.3.6(supports-color@9.4.0)
+ eslint: 9.11.1
+ eslint-compat-utils: 0.5.1(eslint@9.11.1)
+ lodash: 4.17.21
+ natural-compare: 1.4.0
+ yaml-eslint-parser: 1.2.3
+ transitivePeerDependencies:
+ - supports-color
+
+ eslint-processor-vue-blocks@0.1.2(@vue/compiler-sfc@3.4.38)(eslint@9.11.1):
+ dependencies:
+ '@vue/compiler-sfc': 3.4.38
+ eslint: 9.11.1
eslint-scope@7.2.2:
dependencies:
esrecurse: 4.3.0
estraverse: 5.3.0
+ eslint-scope@8.1.0:
+ dependencies:
+ esrecurse: 4.3.0
+ estraverse: 5.3.0
+
eslint-visitor-keys@3.4.3: {}
eslint-visitor-keys@4.0.0: {}
- eslint@8.57.0:
+ eslint@9.11.1:
dependencies:
- '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0)
+ '@eslint-community/eslint-utils': 4.4.0(eslint@9.11.1)
'@eslint-community/regexpp': 4.11.0
- '@eslint/eslintrc': 2.1.4
- '@eslint/js': 8.57.0
- '@humanwhocodes/config-array': 0.11.14
+ '@eslint/config-array': 0.18.0
+ '@eslint/core': 0.6.0
+ '@eslint/eslintrc': 3.1.0
+ '@eslint/js': 9.11.1
+ '@eslint/plugin-kit': 0.2.0
'@humanwhocodes/module-importer': 1.0.1
+ '@humanwhocodes/retry': 0.3.0
'@nodelib/fs.walk': 1.2.8
- '@ungap/structured-clone': 1.2.0
+ '@types/estree': 1.0.6
+ '@types/json-schema': 7.0.15
ajv: 6.12.6
chalk: 4.1.2
cross-spawn: 7.0.3
debug: 4.3.6(supports-color@9.4.0)
- doctrine: 3.0.0
escape-string-regexp: 4.0.0
- eslint-scope: 7.2.2
- eslint-visitor-keys: 3.4.3
- espree: 9.6.1
+ eslint-scope: 8.1.0
+ eslint-visitor-keys: 4.0.0
+ espree: 10.1.0
esquery: 1.6.0
esutils: 2.0.3
fast-deep-equal: 3.1.3
- file-entry-cache: 6.0.1
+ file-entry-cache: 8.0.0
find-up: 5.0.0
glob-parent: 6.0.2
- globals: 13.24.0
- graphemer: 1.4.0
ignore: 5.3.2
imurmurhash: 0.1.4
is-glob: 4.0.3
is-path-inside: 3.0.3
- js-yaml: 4.1.0
json-stable-stringify-without-jsonify: 1.0.1
- levn: 0.4.1
lodash.merge: 4.6.2
minimatch: 3.1.2
natural-compare: 1.4.0
@@ -5605,8 +6346,6 @@ snapshots:
dependencies:
estraverse: 5.3.0
- estraverse@4.3.0: {}
-
estraverse@5.3.0: {}
estree-walker@2.0.2: {}
@@ -5730,9 +6469,9 @@ snapshots:
dependencies:
bser: 2.1.1
- file-entry-cache@6.0.1:
+ file-entry-cache@8.0.0:
dependencies:
- flat-cache: 3.2.0
+ flat-cache: 4.0.1
fill-range@4.0.0:
dependencies:
@@ -5745,6 +6484,8 @@ snapshots:
dependencies:
to-regex-range: 5.0.1
+ find-up-simple@1.0.0: {}
+
find-up@4.1.0:
dependencies:
locate-path: 5.0.0
@@ -5755,11 +6496,10 @@ snapshots:
locate-path: 6.0.0
path-exists: 4.0.0
- flat-cache@3.2.0:
+ flat-cache@4.0.1:
dependencies:
flatted: 3.3.1
keyv: 4.5.4
- rimraf: 3.0.2
flatted@3.3.1: {}
@@ -5822,6 +6562,10 @@ snapshots:
get-stream@6.0.1: {}
+ get-tsconfig@4.8.1:
+ dependencies:
+ resolve-pkg-maps: 1.0.0
+
get-value@2.0.6: {}
glob-parent@5.1.2:
@@ -5856,14 +6600,9 @@ snapshots:
dependencies:
type-fest: 0.20.2
- globby@11.1.0:
- dependencies:
- array-union: 2.1.0
- dir-glob: 3.0.1
- fast-glob: 3.3.2
- ignore: 5.3.2
- merge2: 1.4.1
- slash: 3.0.0
+ globals@14.0.0: {}
+
+ globals@15.9.0: {}
gopd@1.0.1:
dependencies:
@@ -6009,6 +6748,10 @@ snapshots:
is-buffer@1.1.6: {}
+ is-builtin-module@3.2.1:
+ dependencies:
+ builtin-modules: 3.3.0
+
is-ci@2.0.0:
dependencies:
ci-info: 2.0.0
@@ -6230,7 +6973,7 @@ snapshots:
'@jest/environment': 26.6.2
'@jest/fake-timers': 26.6.2
'@jest/types': 26.6.2
- '@types/node': 15.14.9
+ '@types/node': 22.7.4
jest-mock: 26.6.2
jest-util: 26.6.2
jsdom: 16.7.0
@@ -6245,7 +6988,7 @@ snapshots:
'@jest/environment': 26.6.2
'@jest/fake-timers': 26.6.2
'@jest/types': 26.6.2
- '@types/node': 15.14.9
+ '@types/node': 22.7.4
jest-mock: 26.6.2
jest-util: 26.6.2
@@ -6255,7 +6998,7 @@ snapshots:
dependencies:
'@jest/types': 26.6.2
'@types/graceful-fs': 4.1.9
- '@types/node': 15.14.9
+ '@types/node': 22.7.4
anymatch: 3.1.3
fb-watchman: 2.0.2
graceful-fs: 4.2.11
@@ -6278,7 +7021,7 @@ snapshots:
'@jest/source-map': 26.6.2
'@jest/test-result': 26.6.2
'@jest/types': 26.6.2
- '@types/node': 15.14.9
+ '@types/node': 22.7.4
chalk: 4.1.2
co: 4.6.0
expect: 26.6.2
@@ -6325,7 +7068,7 @@ snapshots:
jest-mock@26.6.2:
dependencies:
'@jest/types': 26.6.2
- '@types/node': 15.14.9
+ '@types/node': 22.7.4
jest-pnp-resolver@1.2.3(jest-resolve@26.6.2):
optionalDependencies:
@@ -6358,7 +7101,7 @@ snapshots:
'@jest/environment': 26.6.2
'@jest/test-result': 26.6.2
'@jest/types': 26.6.2
- '@types/node': 15.14.9
+ '@types/node': 22.7.4
chalk: 4.1.2
emittery: 0.7.2
exit: 0.1.2
@@ -6419,7 +7162,7 @@ snapshots:
jest-serializer@26.6.2:
dependencies:
- '@types/node': 15.14.9
+ '@types/node': 22.7.4
graceful-fs: 4.2.11
jest-snapshot@26.6.2:
@@ -6446,7 +7189,7 @@ snapshots:
jest-util@26.6.2:
dependencies:
'@jest/types': 26.6.2
- '@types/node': 15.14.9
+ '@types/node': 22.7.4
chalk: 4.1.2
graceful-fs: 4.2.11
is-ci: 2.0.0
@@ -6465,7 +7208,7 @@ snapshots:
dependencies:
'@jest/test-result': 26.6.2
'@jest/types': 26.6.2
- '@types/node': 15.14.9
+ '@types/node': 22.7.4
ansi-escapes: 4.3.2
chalk: 4.1.2
jest-util: 26.6.2
@@ -6473,7 +7216,7 @@ snapshots:
jest-worker@26.6.2:
dependencies:
- '@types/node': 15.14.9
+ '@types/node': 22.7.4
merge-stream: 2.0.0
supports-color: 7.2.0
@@ -6500,6 +7243,8 @@ snapshots:
dependencies:
argparse: 2.0.1
+ jsdoc-type-pratt-parser@4.1.0: {}
+
jsdom@16.7.0:
dependencies:
abab: 2.0.6
@@ -6534,8 +7279,12 @@ snapshots:
- supports-color
- utf-8-validate
+ jsesc@0.5.0: {}
+
jsesc@2.5.2: {}
+ jsesc@3.0.2: {}
+
json-buffer@3.0.1: {}
json-parse-even-better-errors@2.3.1: {}
@@ -6546,6 +7295,13 @@ snapshots:
json5@2.2.3: {}
+ jsonc-eslint-parser@2.4.0:
+ dependencies:
+ acorn: 8.12.1
+ eslint-visitor-keys: 3.4.3
+ espree: 9.6.1
+ semver: 7.6.3
+
katex@0.16.11:
dependencies:
commander: 8.3.0
@@ -6625,6 +7381,11 @@ snapshots:
through: 2.3.8
wrap-ansi: 7.0.0
+ local-pkg@0.5.0:
+ dependencies:
+ mlly: 1.7.1
+ pkg-types: 1.2.0
+
locate-path@5.0.0:
dependencies:
p-locate: 4.1.0
@@ -6696,6 +7457,15 @@ snapshots:
mdurl: 1.0.1
uc.micro: 1.0.6
+ markdown-table@3.0.3: {}
+
+ mdast-util-find-and-replace@3.0.1:
+ dependencies:
+ '@types/mdast': 4.0.4
+ escape-string-regexp: 5.0.0
+ unist-util-is: 6.0.0
+ unist-util-visit-parents: 6.0.1
+
mdast-util-from-markdown@2.0.1:
dependencies:
'@types/mdast': 4.0.4
@@ -6724,6 +7494,63 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ mdast-util-gfm-autolink-literal@2.0.1:
+ dependencies:
+ '@types/mdast': 4.0.4
+ ccount: 2.0.1
+ devlop: 1.1.0
+ mdast-util-find-and-replace: 3.0.1
+ micromark-util-character: 2.1.0
+
+ mdast-util-gfm-footnote@2.0.0:
+ dependencies:
+ '@types/mdast': 4.0.4
+ devlop: 1.1.0
+ mdast-util-from-markdown: 2.0.1
+ mdast-util-to-markdown: 2.1.0
+ micromark-util-normalize-identifier: 2.0.0
+ transitivePeerDependencies:
+ - supports-color
+
+ mdast-util-gfm-strikethrough@2.0.0:
+ dependencies:
+ '@types/mdast': 4.0.4
+ mdast-util-from-markdown: 2.0.1
+ mdast-util-to-markdown: 2.1.0
+ transitivePeerDependencies:
+ - supports-color
+
+ mdast-util-gfm-table@2.0.0:
+ dependencies:
+ '@types/mdast': 4.0.4
+ devlop: 1.1.0
+ markdown-table: 3.0.3
+ mdast-util-from-markdown: 2.0.1
+ mdast-util-to-markdown: 2.1.0
+ transitivePeerDependencies:
+ - supports-color
+
+ mdast-util-gfm-task-list-item@2.0.0:
+ dependencies:
+ '@types/mdast': 4.0.4
+ devlop: 1.1.0
+ mdast-util-from-markdown: 2.0.1
+ mdast-util-to-markdown: 2.1.0
+ transitivePeerDependencies:
+ - supports-color
+
+ mdast-util-gfm@3.0.0:
+ dependencies:
+ mdast-util-from-markdown: 2.0.1
+ mdast-util-gfm-autolink-literal: 2.0.1
+ mdast-util-gfm-footnote: 2.0.0
+ mdast-util-gfm-strikethrough: 2.0.0
+ mdast-util-gfm-table: 2.0.0
+ mdast-util-gfm-task-list-item: 2.0.0
+ mdast-util-to-markdown: 2.1.0
+ transitivePeerDependencies:
+ - supports-color
+
mdast-util-phrasing@4.1.0:
dependencies:
'@types/mdast': 4.0.4
@@ -6776,6 +7603,64 @@ snapshots:
micromark-util-symbol: 2.0.0
micromark-util-types: 2.0.0
+ micromark-extension-gfm-autolink-literal@2.1.0:
+ dependencies:
+ micromark-util-character: 2.1.0
+ micromark-util-sanitize-uri: 2.0.0
+ micromark-util-symbol: 2.0.0
+ micromark-util-types: 2.0.0
+
+ micromark-extension-gfm-footnote@2.1.0:
+ dependencies:
+ devlop: 1.1.0
+ micromark-core-commonmark: 2.0.1
+ micromark-factory-space: 2.0.0
+ micromark-util-character: 2.1.0
+ micromark-util-normalize-identifier: 2.0.0
+ micromark-util-sanitize-uri: 2.0.0
+ micromark-util-symbol: 2.0.0
+ micromark-util-types: 2.0.0
+
+ micromark-extension-gfm-strikethrough@2.1.0:
+ dependencies:
+ devlop: 1.1.0
+ micromark-util-chunked: 2.0.0
+ micromark-util-classify-character: 2.0.0
+ micromark-util-resolve-all: 2.0.0
+ micromark-util-symbol: 2.0.0
+ micromark-util-types: 2.0.0
+
+ micromark-extension-gfm-table@2.1.0:
+ dependencies:
+ devlop: 1.1.0
+ micromark-factory-space: 2.0.0
+ micromark-util-character: 2.1.0
+ micromark-util-symbol: 2.0.0
+ micromark-util-types: 2.0.0
+
+ micromark-extension-gfm-tagfilter@2.0.0:
+ dependencies:
+ micromark-util-types: 2.0.0
+
+ micromark-extension-gfm-task-list-item@2.1.0:
+ dependencies:
+ devlop: 1.1.0
+ micromark-factory-space: 2.0.0
+ micromark-util-character: 2.1.0
+ micromark-util-symbol: 2.0.0
+ micromark-util-types: 2.0.0
+
+ micromark-extension-gfm@3.0.0:
+ dependencies:
+ micromark-extension-gfm-autolink-literal: 2.1.0
+ micromark-extension-gfm-footnote: 2.1.0
+ micromark-extension-gfm-strikethrough: 2.1.0
+ micromark-extension-gfm-table: 2.1.0
+ micromark-extension-gfm-tagfilter: 2.0.0
+ micromark-extension-gfm-task-list-item: 2.1.0
+ micromark-util-combine-extensions: 2.0.0
+ micromark-util-types: 2.0.0
+
micromark-factory-destination@2.0.0:
dependencies:
micromark-util-character: 2.1.0
@@ -6924,6 +7809,8 @@ snapshots:
mimic-fn@2.1.0: {}
+ min-indent@1.0.1: {}
+
minimatch@10.0.1:
dependencies:
brace-expansion: 2.0.1
@@ -6951,6 +7838,13 @@ snapshots:
mkdirp@1.0.4: {}
+ mlly@1.7.1:
+ dependencies:
+ acorn: 8.12.1
+ pathe: 1.1.2
+ pkg-types: 1.2.0
+ ufo: 1.5.4
+
ms@2.0.0: {}
ms@2.1.2: {}
@@ -7094,6 +7988,8 @@ snapshots:
package-json-from-dist@1.0.0: {}
+ package-manager-detector@0.2.0: {}
+
parchment@1.1.4: {}
parchment@3.0.0: {}
@@ -7102,6 +7998,13 @@ snapshots:
dependencies:
callsites: 3.1.0
+ parse-gitignore@2.0.0: {}
+
+ parse-imports@2.2.1:
+ dependencies:
+ es-module-lexer: 1.5.4
+ slashes: 3.0.12
+
parse-json@5.2.0:
dependencies:
'@babel/code-frame': 7.24.7
@@ -7130,12 +8033,14 @@ snapshots:
lru-cache: 11.0.1
minipass: 7.1.2
- path-type@4.0.0: {}
+ pathe@1.1.2: {}
perfect-debounce@1.0.0: {}
picocolors@1.0.1: {}
+ picocolors@1.1.0: {}
+
picomatch@2.3.1: {}
picomatch@4.0.2: {}
@@ -7151,6 +8056,12 @@ snapshots:
dependencies:
find-up: 4.1.0
+ pkg-types@1.2.0:
+ dependencies:
+ confbox: 0.1.7
+ mlly: 1.7.1
+ pathe: 1.1.2
+
playwright-core@1.46.1: {}
playwright@1.46.1:
@@ -7159,6 +8070,8 @@ snapshots:
optionalDependencies:
fsevents: 2.3.2
+ pluralize@8.0.0: {}
+
posix-character-classes@0.1.1: {}
postcss-selector-parser@6.1.2:
@@ -7259,11 +8172,22 @@ snapshots:
dependencies:
resolve: 1.22.8
+ refa@0.12.1:
+ dependencies:
+ '@eslint-community/regexpp': 4.11.0
+
regex-not@1.0.2:
dependencies:
extend-shallow: 3.0.2
safe-regex: 1.1.0
+ regexp-ast-analysis@0.7.1:
+ dependencies:
+ '@eslint-community/regexpp': 4.11.0
+ refa: 0.12.1
+
+ regexp-tree@0.1.27: {}
+
regexp.prototype.flags@1.5.2:
dependencies:
call-bind: 1.0.7
@@ -7271,6 +8195,10 @@ snapshots:
es-errors: 1.3.0
set-function-name: 2.0.2
+ regjsparser@0.10.0:
+ dependencies:
+ jsesc: 0.5.0
+
remark-frontmatter@5.0.0:
dependencies:
'@types/mdast': 4.0.4
@@ -7315,6 +8243,8 @@ snapshots:
resolve-from@5.0.0: {}
+ resolve-pkg-maps@1.0.0: {}
+
resolve-url@0.2.1: {}
resolve@1.22.8:
@@ -7407,6 +8337,12 @@ snapshots:
dependencies:
xmlchars: 2.2.0
+ scslre@0.3.0:
+ dependencies:
+ '@eslint-community/regexpp': 4.11.0
+ refa: 0.12.1
+ regexp-ast-analysis: 0.7.1
+
search-insights@2.16.2: {}
semver@5.7.2: {}
@@ -7474,6 +8410,8 @@ snapshots:
slash@3.0.0: {}
+ slashes@3.0.12: {}
+
slice-ansi@3.0.0:
dependencies:
ansi-styles: 4.3.0
@@ -7549,6 +8487,11 @@ snapshots:
spdx-exceptions: 2.5.0
spdx-license-ids: 3.0.18
+ spdx-expression-parse@4.0.0:
+ dependencies:
+ spdx-exceptions: 2.5.0
+ spdx-license-ids: 3.0.18
+
spdx-license-ids@3.0.18: {}
speakingurl@14.0.1: {}
@@ -7559,6 +8502,8 @@ snapshots:
sprintf-js@1.0.3: {}
+ stable-hash@0.0.4: {}
+
stack-utils@2.0.6:
dependencies:
escape-string-regexp: 2.0.0
@@ -7601,6 +8546,10 @@ snapshots:
strip-final-newline@2.0.0: {}
+ strip-indent@3.0.0:
+ dependencies:
+ min-indent: 1.0.1
+
strip-json-comments@3.1.1: {}
superjson@2.2.1:
@@ -7626,8 +8575,19 @@ snapshots:
symbol-tree@3.2.4: {}
+ synckit@0.6.2:
+ dependencies:
+ tslib: 2.6.3
+
+ synckit@0.9.1:
+ dependencies:
+ '@pkgr/core': 0.1.1
+ tslib: 2.6.3
+
tabbable@6.2.0: {}
+ tapable@2.2.1: {}
+
terminal-link@2.1.1:
dependencies:
ansi-escapes: 4.3.2
@@ -7649,6 +8609,8 @@ snapshots:
through@2.3.8: {}
+ tinyexec@0.3.0: {}
+
tmpl@1.0.5: {}
to-fast-properties@2.0.0: {}
@@ -7673,6 +8635,10 @@ snapshots:
regex-not: 1.0.2
safe-regex: 1.1.0
+ toml-eslint-parser@0.10.0:
+ dependencies:
+ eslint-visitor-keys: 3.4.3
+
tough-cookie@4.1.4:
dependencies:
psl: 1.9.0
@@ -7686,9 +8652,9 @@ snapshots:
trough@2.2.0: {}
- ts-api-utils@1.3.0(typescript@4.9.5):
+ ts-api-utils@1.3.0(typescript@5.6.2):
dependencies:
- typescript: 4.9.5
+ typescript: 5.6.2
ts-jest@26.5.6(jest@26.6.3(ts-node@9.1.1(typescript@4.9.5)))(typescript@4.9.5):
dependencies:
@@ -7715,15 +8681,8 @@ snapshots:
typescript: 4.9.5
yn: 3.1.1
- tslib@1.14.1: {}
-
tslib@2.6.3: {}
- tsutils@3.21.0(typescript@4.9.5):
- dependencies:
- tslib: 1.14.1
- typescript: 4.9.5
-
type-check@0.4.0:
dependencies:
prelude-ls: 1.2.1
@@ -7744,8 +8703,14 @@ snapshots:
typescript@4.9.5: {}
+ typescript@5.6.2: {}
+
uc.micro@1.0.6: {}
+ ufo@1.5.4: {}
+
+ undici-types@6.19.8: {}
+
unified@11.0.5:
dependencies:
'@types/unist': 3.0.2
@@ -7850,35 +8815,35 @@ snapshots:
less: 4.2.0
sass: 1.77.8
- vite@5.4.0(@types/node@15.14.9)(less@4.2.0)(sass@1.77.8):
+ vite@5.4.0(@types/node@22.7.4)(less@4.2.0)(sass@1.77.8):
dependencies:
esbuild: 0.21.5
postcss: 8.4.41
rollup: 4.20.0
optionalDependencies:
- '@types/node': 15.14.9
+ '@types/node': 22.7.4
fsevents: 2.3.3
less: 4.2.0
sass: 1.77.8
- vitepress@1.3.2(@algolia/client-search@4.24.0)(@types/node@15.14.9)(less@4.2.0)(postcss@8.4.41)(sass@1.77.8)(search-insights@2.16.2)(typescript@4.9.5):
+ vitepress@1.3.2(@algolia/client-search@4.24.0)(@types/node@22.7.4)(less@4.2.0)(postcss@8.4.41)(sass@1.77.8)(search-insights@2.16.2)(typescript@5.6.2):
dependencies:
'@docsearch/css': 3.6.1
'@docsearch/js': 3.6.1(@algolia/client-search@4.24.0)(search-insights@2.16.2)
'@shikijs/core': 1.12.1
'@shikijs/transformers': 1.12.1
'@types/markdown-it': 14.1.2
- '@vitejs/plugin-vue': 5.1.2(vite@5.4.0(@types/node@15.14.9)(less@4.2.0)(sass@1.77.8))(vue@3.4.38(typescript@4.9.5))
+ '@vitejs/plugin-vue': 5.1.2(vite@5.4.0(@types/node@22.7.4)(less@4.2.0)(sass@1.77.8))(vue@3.4.38(typescript@5.6.2))
'@vue/devtools-api': 7.3.8
'@vue/shared': 3.4.37
- '@vueuse/core': 10.11.1(vue@3.4.38(typescript@4.9.5))
- '@vueuse/integrations': 10.11.1(focus-trap@7.5.4)(vue@3.4.38(typescript@4.9.5))
+ '@vueuse/core': 10.11.1(vue@3.4.38(typescript@5.6.2))
+ '@vueuse/integrations': 10.11.1(focus-trap@7.5.4)(vue@3.4.38(typescript@5.6.2))
focus-trap: 7.5.4
mark.js: 8.11.1
minisearch: 7.1.0
shiki: 1.12.1
- vite: 5.4.0(@types/node@15.14.9)(less@4.2.0)(sass@1.77.8)
- vue: 3.4.38(typescript@4.9.5)
+ vite: 5.4.0(@types/node@22.7.4)(less@4.2.0)(sass@1.77.8)
+ vue: 3.4.38(typescript@5.6.2)
optionalDependencies:
postcss: 8.4.41
transitivePeerDependencies:
@@ -7909,14 +8874,14 @@ snapshots:
- typescript
- universal-cookie
- vue-demi@0.14.10(vue@3.4.38(typescript@4.9.5)):
+ vue-demi@0.14.10(vue@3.4.38(typescript@5.6.2)):
dependencies:
- vue: 3.4.38(typescript@4.9.5)
+ vue: 3.4.38(typescript@5.6.2)
- vue-eslint-parser@9.4.3(eslint@8.57.0):
+ vue-eslint-parser@9.4.3(eslint@9.11.1):
dependencies:
debug: 4.3.6(supports-color@9.4.0)
- eslint: 8.57.0
+ eslint: 9.11.1
eslint-scope: 7.2.2
eslint-visitor-keys: 3.4.3
espree: 9.6.1
@@ -7926,15 +8891,15 @@ snapshots:
transitivePeerDependencies:
- supports-color
- vue@3.4.38(typescript@4.9.5):
+ vue@3.4.38(typescript@5.6.2):
dependencies:
'@vue/compiler-dom': 3.4.38
'@vue/compiler-sfc': 3.4.38
'@vue/runtime-dom': 3.4.38
- '@vue/server-renderer': 3.4.38(vue@3.4.38(typescript@4.9.5))
+ '@vue/server-renderer': 3.4.38(vue@3.4.38(typescript@5.6.2))
'@vue/shared': 3.4.38
optionalDependencies:
- typescript: 4.9.5
+ typescript: 5.6.2
w3c-hr-time@1.0.2:
dependencies:
@@ -8013,10 +8978,20 @@ snapshots:
y18n@4.0.3: {}
+ y18n@5.0.8: {}
+
yallist@3.1.1: {}
+ yaml-eslint-parser@1.2.3:
+ dependencies:
+ eslint-visitor-keys: 3.4.3
+ lodash: 4.17.21
+ yaml: 2.5.1
+
yaml@1.10.2: {}
+ yaml@2.5.1: {}
+
yargs-parser@18.1.3:
dependencies:
camelcase: 5.3.1
@@ -8024,6 +8999,8 @@ snapshots:
yargs-parser@20.2.9: {}
+ yargs-parser@21.1.1: {}
+
yargs@15.4.1:
dependencies:
cliui: 6.0.0
@@ -8038,6 +9015,16 @@ snapshots:
y18n: 4.0.3
yargs-parser: 18.1.3
+ yargs@17.7.2:
+ dependencies:
+ cliui: 8.0.1
+ escalade: 3.1.2
+ get-caller-file: 2.0.5
+ require-directory: 2.1.1
+ string-width: 4.2.3
+ y18n: 5.0.8
+ yargs-parser: 21.1.1
+
yn@3.1.1: {}
yocto-queue@0.1.0: {}
diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
index b2f187c..924b55f 100644
--- a/pnpm-workspace.yaml
+++ b/pnpm-workspace.yaml
@@ -1,2 +1,2 @@
packages:
- - packages/*
\ No newline at end of file
+ - packages/*
diff --git a/verifyCommit.js b/verifyCommit.js
index e2b8053..69eae9b 100644
--- a/verifyCommit.js
+++ b/verifyCommit.js
@@ -1,8 +1,7 @@
// Invoked on the commit-msg git hook by yorkie.
-
-const chalk = require('chalk')
const msgPath = process.env.GIT_PARAMS || '.git/COMMIT_EDITMSG'
-const msg = require('fs').readFileSync(msgPath, 'utf-8').trim()
+const msg = require('node:fs').readFileSync(msgPath, 'utf-8').trim()
+const chalk = require('chalk')
const releaseRE = /^v\d/
const commitRE
@@ -12,13 +11,13 @@ if (!releaseRE.test(msg) && !commitRE.test(msg)) {
console.error(
` ${chalk.bgRed.white(' ERROR ')} ${chalk.red(
`invalid commit message format.`,
- )}\n\n`
- + chalk.red(
- ` Proper commit message format is required for automated changelog generation. Examples:\n\n`,
- )
- + ` ${chalk.green(`feat: add 'comments' option`)}\n`
- + ` ${chalk.green(`fix: handle events on blur (close #28)`)}\n\n`
- + chalk.red(` See .github/commit-convention.md for more details.\n`),
+ )}\n\n${
+ chalk.red(
+ ` Proper commit message format is required for automated changelog generation. Examples:\n\n`,
+ )
+ } ${chalk.green(`feat: add 'comments' option`)}\n`
+ + ` ${chalk.green(`fix: handle events on blur (close #28)`)}\n\n${
+ chalk.red(` See .github/commit-convention.md for more details.\n`)}`,
)
process.exit(1)
}