@coze-editor/lang-javascript 0.1.0-alpha.7f05f7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts","../src/javascript.ts","../src/snippets.ts","../src/complete.ts","../src/eslint.ts"],"sourcesContent":["// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\nexport {\n javascriptLanguage,\n typescriptLanguage,\n jsxLanguage,\n tsxLanguage,\n autoCloseTags,\n javascript,\n} from './javascript';\nexport { snippets, typescriptSnippets } from './snippets';\nexport { esLint } from './eslint';\nexport {\n localCompletionSource,\n completionPath,\n scopeCompletionSource,\n} from './complete';\n","/* eslint-disable complexity */\nimport { parser } from '@lezer/javascript';\nimport { type SyntaxNode } from '@lezer/common';\nimport { EditorView } from '@codemirror/view';\nimport { EditorSelection, type Text } from '@codemirror/state';\nimport {\n LRLanguage,\n LanguageSupport,\n type Sublanguage,\n sublanguageProp,\n defineLanguageFacet,\n delimitedIndent,\n flatIndent,\n continuedIndent,\n indentNodeProp,\n foldNodeProp,\n foldInside,\n syntaxTree,\n} from '@codemirror/language';\nimport { completeFromList, ifNotIn } from '@codemirror/autocomplete';\n\nimport { snippets, typescriptSnippets } from './snippets';\nimport { localCompletionSource, dontComplete } from './complete';\n\n/// A language provider based on the [Lezer JavaScript\n/// parser](https://github.com/lezer-parser/javascript), extended with\n/// highlighting and indentation information.\nexport const javascriptLanguage = LRLanguage.define({\n name: 'javascript',\n parser: parser.configure({\n props: [\n indentNodeProp.add({\n IfStatement: continuedIndent({ except: /^\\s*({|else\\b)/ }),\n TryStatement: continuedIndent({ except: /^\\s*({|catch\\b|finally\\b)/ }),\n LabeledStatement: flatIndent,\n SwitchBody: context => {\n const after = context.textAfter,\n closed = /^\\s*\\}/.test(after),\n isCase = /^\\s*(case|default)\\b/.test(after);\n return (\n context.baseIndent + (closed ? 0 : isCase ? 1 : 2) * context.unit\n );\n },\n Block: delimitedIndent({ closing: '}' }),\n ArrowFunction: cx => cx.baseIndent + cx.unit,\n 'TemplateString BlockComment': () => null,\n 'Statement Property': continuedIndent({ except: /^\\s*{/ }),\n JSXElement(context) {\n const closed = /^\\s*<\\//.test(context.textAfter);\n return (\n context.lineIndent(context.node.from) + (closed ? 0 : context.unit)\n );\n },\n JSXEscape(context) {\n const closed = /\\s*\\}/.test(context.textAfter);\n return (\n context.lineIndent(context.node.from) + (closed ? 0 : context.unit)\n );\n },\n 'JSXOpenTag JSXSelfClosingTag'(context) {\n return context.column(context.node.from) + context.unit;\n },\n }),\n foldNodeProp.add({\n 'Block ClassBody SwitchBody EnumBody ObjectExpression ArrayExpression ObjectType':\n foldInside,\n BlockComment(tree) {\n return { from: tree.from + 2, to: tree.to - 2 };\n },\n JSXElement(node) {\n const first = node.firstChild;\n const start = first?.firstChild ? first.firstChild.nextSibling : null;\n\n let end = null;\n\n if (!first) {\n return null;\n }\n\n if (first.name === 'JSXSelfClosingTag') {\n end = first.lastChild;\n }\n\n if (['JSXOpenTag', 'JSXFragmentTag'].includes(first.name)) {\n end =\n node.lastChild?.name === 'JSXCloseTag' ? node.lastChild : null;\n }\n\n if (!start || !end) {\n return null;\n }\n\n return start && start.to < end.from\n ? { from: start.to, to: end.type.isError ? node.to : end.from }\n : null;\n },\n }),\n ],\n }),\n languageData: {\n closeBrackets: { brackets: ['(', '[', '{', \"'\", '\"', '`'] },\n commentTokens: { line: '//', block: { open: '/*', close: '*/' } },\n indentOnInput: /^\\s*(?:case |default:|\\{|\\}|<\\/)$/,\n wordChars: '$',\n },\n});\n\nconst jsxSublanguage: Sublanguage = {\n test: node => /^JSX/.test(node.name),\n facet: defineLanguageFacet({\n commentTokens: { block: { open: '{/*', close: '*/}' } },\n }),\n};\n\n/// A language provider for TypeScript.\nexport const typescriptLanguage = javascriptLanguage.configure(\n { dialect: 'ts' },\n 'typescript',\n);\n\n/// Language provider for JSX.\nexport const jsxLanguage = javascriptLanguage.configure({\n dialect: 'jsx',\n props: [sublanguageProp.add(n => (n.isTop ? [jsxSublanguage] : undefined))],\n});\n\n/// Language provider for JSX + TypeScript.\nexport const tsxLanguage = javascriptLanguage.configure(\n {\n dialect: 'jsx ts',\n props: [sublanguageProp.add(n => (n.isTop ? [jsxSublanguage] : undefined))],\n },\n 'typescript',\n);\n\nconst kwCompletion = (name: string) => ({ label: name, type: 'keyword' });\n\nconst keywords =\n 'break case const continue default delete export extends false finally in instanceof let new return static super switch this throw true typeof var yield'\n .split(' ')\n .map(kwCompletion);\nconst typescriptKeywords = keywords.concat(\n ['declare', 'implements', 'private', 'protected', 'public'].map(kwCompletion),\n);\n\n/// JavaScript support. Includes [snippet](#lang-javascript.snippets)\n/// and local variable completion.\nexport function javascript(\n config: { jsx?: boolean; typescript?: boolean } = {},\n) {\n const lang = config.jsx\n ? config.typescript\n ? tsxLanguage\n : jsxLanguage\n : config.typescript\n ? typescriptLanguage\n : javascriptLanguage;\n const completions = config.typescript\n ? typescriptSnippets.concat(typescriptKeywords)\n : snippets.concat(keywords);\n return new LanguageSupport(lang, [\n javascriptLanguage.data.of({\n autocomplete: ifNotIn(dontComplete, completeFromList(completions)),\n }),\n javascriptLanguage.data.of({\n autocomplete: localCompletionSource,\n }),\n config.jsx ? autoCloseTags : [],\n ]);\n}\n\nfunction findOpenTag(node: SyntaxNode) {\n for (;;) {\n if (\n node.name == 'JSXOpenTag' ||\n node.name == 'JSXSelfClosingTag' ||\n node.name == 'JSXFragmentTag'\n ) {\n return node;\n }\n if (node.name == 'JSXEscape' || !node.parent) {\n return null;\n }\n node = node.parent;\n }\n}\n\nfunction elementName(\n doc: Text,\n tree: SyntaxNode | null | undefined,\n max = doc.length,\n) {\n for (let ch = tree?.firstChild; ch; ch = ch.nextSibling) {\n if (\n ch.name == 'JSXIdentifier' ||\n ch.name == 'JSXBuiltin' ||\n ch.name == 'JSXNamespacedName' ||\n ch.name == 'JSXMemberExpression'\n ) {\n return doc.sliceString(ch.from, Math.min(ch.to, max));\n }\n }\n return '';\n}\n\nconst android =\n typeof navigator === 'object' && /Android\\b/.test(navigator.userAgent);\n\n/// Extension that will automatically insert JSX close tags when a `>` or\n/// `/` is typed.\nexport const autoCloseTags = EditorView.inputHandler.of(\n (view, from, to, text, defaultInsert) => {\n if (\n (android ? view.composing : view.compositionStarted) ||\n view.state.readOnly ||\n from != to ||\n (text != '>' && text != '/') ||\n !javascriptLanguage.isActiveAt(view.state, from, -1)\n ) {\n return false;\n }\n const base = defaultInsert(),\n { state } = base;\n const closeTags = state.changeByRange(range => {\n const { head } = range;\n let around = syntaxTree(state).resolveInner(head - 1, -1);\n let name;\n if (around.name == 'JSXStartTag') {\n around = around.parent!;\n }\n if (\n state.doc.sliceString(head - 1, head) != text ||\n (around.name == 'JSXAttributeValue' && around.to > head)\n ) {\n // Ignore input inside attribute or cases where the text wasn't actually inserted\n } else if (text == '>' && around.name == 'JSXFragmentTag') {\n return { range, changes: { from: head, insert: '</>' } };\n } else if (text == '/' && around.name == 'JSXStartCloseTag') {\n const empty = around.parent!,\n base = empty.parent;\n if (\n base &&\n empty.from == head - 2 &&\n ((name = elementName(state.doc, base.firstChild, head)) ||\n base.firstChild?.name == 'JSXFragmentTag')\n ) {\n const insert = `${name}>`;\n return {\n range: EditorSelection.cursor(head + insert.length, -1),\n changes: { from: head, insert },\n };\n }\n } else if (text == '>') {\n const openTag = findOpenTag(around);\n if (\n openTag &&\n openTag.name == 'JSXOpenTag' &&\n !/^\\/?>|^<\\//.test(state.doc.sliceString(head, head + 2)) &&\n (name = elementName(state.doc, openTag, head))\n ) {\n return { range, changes: { from: head, insert: `</${name}>` } };\n }\n }\n return { range };\n });\n if (closeTags.changes.empty) {\n return false;\n }\n view.dispatch([\n base,\n state.update(closeTags, {\n userEvent: 'input.complete',\n scrollIntoView: true,\n }),\n ]);\n return true;\n },\n);\n","import {\n type Completion,\n snippetCompletion as snip,\n} from '@codemirror/autocomplete';\n\n/// A collection of JavaScript-related\n/// [snippets](#autocomplete.snippet).\nexport const snippets: readonly Completion[] = [\n snip('function ${name}(${params}) {\\n\\t${}\\n}', {\n label: 'function',\n detail: 'definition',\n type: 'keyword',\n }),\n snip('for (let ${index} = 0; ${index} < ${bound}; ${index}++) {\\n\\t${}\\n}', {\n label: 'for',\n detail: 'loop',\n type: 'keyword',\n }),\n snip('for (let ${name} of ${collection}) {\\n\\t${}\\n}', {\n label: 'for',\n detail: 'of loop',\n type: 'keyword',\n }),\n snip('do {\\n\\t${}\\n} while (${})', {\n label: 'do',\n detail: 'loop',\n type: 'keyword',\n }),\n snip('while (${}) {\\n\\t${}\\n}', {\n label: 'while',\n detail: 'loop',\n type: 'keyword',\n }),\n snip('try {\\n\\t${}\\n} catch (${error}) {\\n\\t${}\\n}', {\n label: 'try',\n detail: '/ catch block',\n type: 'keyword',\n }),\n snip('if (${}) {\\n\\t${}\\n}', {\n label: 'if',\n detail: 'block',\n type: 'keyword',\n }),\n snip('if (${}) {\\n\\t${}\\n} else {\\n\\t${}\\n}', {\n label: 'if',\n detail: '/ else block',\n type: 'keyword',\n }),\n snip('class ${name} {\\n\\tconstructor(${params}) {\\n\\t\\t${}\\n\\t}\\n}', {\n label: 'class',\n detail: 'definition',\n type: 'keyword',\n }),\n snip('import {${names}} from \"${module}\"\\n${}', {\n label: 'import',\n detail: 'named',\n type: 'keyword',\n }),\n snip('import ${name} from \"${module}\"\\n${}', {\n label: 'import',\n detail: 'default',\n type: 'keyword',\n }),\n];\n\n/// A collection of snippet completions for TypeScript. Includes the\n/// JavaScript [snippets](#lang-javascript.snippets).\nexport const typescriptSnippets = snippets.concat([\n snip('interface ${name} {\\n\\t${}\\n}', {\n label: 'interface',\n detail: 'definition',\n type: 'keyword',\n }),\n snip('type ${name} = ${type}', {\n label: 'type',\n detail: 'definition',\n type: 'keyword',\n }),\n snip('enum ${name} {\\n\\t${}\\n}', {\n label: 'enum',\n detail: 'definition',\n type: 'keyword',\n }),\n]);\n","import {\n NodeWeakMap,\n type SyntaxNodeRef,\n type SyntaxNode,\n IterMode,\n} from '@lezer/common';\nimport { type Text } from '@codemirror/state';\nimport { syntaxTree } from '@codemirror/language';\nimport {\n type Completion,\n type CompletionContext,\n type CompletionResult,\n type CompletionSource,\n} from '@codemirror/autocomplete';\n\nconst cache = new NodeWeakMap<readonly Completion[]>();\n\nconst ScopeNodes = new Set([\n 'Script',\n 'Block',\n 'FunctionExpression',\n 'FunctionDeclaration',\n 'ArrowFunction',\n 'MethodDeclaration',\n 'ForStatement',\n]);\n\nfunction defID(type: string) {\n return (\n node: SyntaxNodeRef,\n def: (node: SyntaxNodeRef, type: string) => void,\n ) => {\n const id = node.node.getChild('VariableDefinition');\n if (id) {\n def(id, type);\n }\n return true;\n };\n}\n\nconst functionContext = ['FunctionDeclaration'];\n\nconst gatherCompletions: {\n [node: string]: (\n node: SyntaxNodeRef,\n def: (node: SyntaxNodeRef, type: string) => void,\n ) => void | boolean;\n} = {\n FunctionDeclaration: defID('function'),\n ClassDeclaration: defID('class'),\n ClassExpression: () => true,\n EnumDeclaration: defID('constant'),\n TypeAliasDeclaration: defID('type'),\n NamespaceDeclaration: defID('namespace'),\n VariableDefinition(node, def) {\n if (!node.matchContext(functionContext)) {\n def(node, 'variable');\n }\n },\n TypeDefinition(node, def) {\n def(node, 'type');\n },\n __proto__: null as any,\n};\n\nfunction getScope(doc: Text, node: SyntaxNode) {\n const cached = cache.get(node);\n if (cached) {\n return cached;\n }\n\n const completions: Completion[] = [];\n let top = true;\n function def(node: SyntaxNodeRef, type: string) {\n const name = doc.sliceString(node.from, node.to);\n completions.push({ label: name, type });\n }\n node.cursor(IterMode.IncludeAnonymous).iterate(node => {\n if (top) {\n top = false;\n } else if (node.name) {\n const gather = gatherCompletions[node.name];\n if ((gather && gather(node, def)) || ScopeNodes.has(node.name)) {\n return false;\n }\n } else if (node.to - node.from > 8192) {\n // Allow caching for bigger internal nodes\n for (const c of getScope(doc, node.node)) {\n completions.push(c);\n }\n return false;\n }\n });\n cache.set(node, completions);\n return completions;\n}\n\nconst Identifier = /^[\\w$\\xa1-\\uffff][\\w$\\d\\xa1-\\uffff]*$/;\n\nexport const dontComplete = [\n 'TemplateString',\n 'String',\n 'RegExp',\n 'LineComment',\n 'BlockComment',\n 'VariableDefinition',\n 'TypeDefinition',\n 'Label',\n 'PropertyDefinition',\n 'PropertyName',\n 'PrivatePropertyDefinition',\n 'PrivatePropertyName',\n 'JSXText',\n 'JSXAttributeValue',\n 'JSXOpenTag',\n 'JSXCloseTag',\n 'JSXSelfClosingTag',\n '.',\n '?.',\n];\n\n/// Completion source that looks up locally defined names in\n/// JavaScript code.\nexport function localCompletionSource(\n context: CompletionContext,\n): CompletionResult | null {\n const inner = syntaxTree(context.state).resolveInner(context.pos, -1);\n if (dontComplete.indexOf(inner.name) > -1) {\n return null;\n }\n const isWord =\n inner.name == 'VariableName' ||\n (inner.to - inner.from < 20 &&\n Identifier.test(context.state.sliceDoc(inner.from, inner.to)));\n if (!isWord && !context.explicit) {\n return null;\n }\n let options: Completion[] = [];\n for (let pos: SyntaxNode | null = inner; pos; pos = pos.parent) {\n if (ScopeNodes.has(pos.name)) {\n options = options.concat(getScope(context.state.doc, pos));\n }\n }\n return {\n options,\n from: isWord ? inner.from : context.pos,\n validFor: Identifier,\n };\n}\n\nfunction pathFor(\n read: (node: SyntaxNode) => string,\n member: SyntaxNode,\n name: string,\n) {\n const path: string[] = [];\n for (;;) {\n const obj = member.firstChild;\n let prop;\n if (obj?.name == 'VariableName') {\n path.push(read(obj));\n return { path: path.reverse(), name };\n } else if (\n obj?.name == 'MemberExpression' &&\n (prop = obj.lastChild)?.name == 'PropertyName'\n ) {\n path.push(read(prop!));\n member = obj;\n } else {\n return null;\n }\n }\n}\n\n/// Helper function for defining JavaScript completion sources. It\n/// returns the completable name and object path for a completion\n/// context, or null if no name/property completion should happen at\n/// that position. For example, when completing after `a.b.c` it will\n/// return `{path: [\"a\", \"b\"], name: \"c\"}`. When completing after `x`\n/// it will return `{path: [], name: \"x\"}`. When not in a property or\n/// name, it will return null if `context.explicit` is false, and\n/// `{path: [], name: \"\"}` otherwise.\nexport function completionPath(\n context: CompletionContext,\n): { path: readonly string[]; name: string } | null {\n const read = (node: SyntaxNode) =>\n context.state.doc.sliceString(node.from, node.to);\n const inner = syntaxTree(context.state).resolveInner(context.pos, -1);\n if (inner.name == 'PropertyName') {\n return pathFor(read, inner.parent!, read(inner));\n } else if (\n (inner.name == '.' || inner.name == '?.') &&\n inner.parent!.name == 'MemberExpression'\n ) {\n return pathFor(read, inner.parent!, '');\n } else if (dontComplete.indexOf(inner.name) > -1) {\n return null;\n } else if (\n inner.name == 'VariableName' ||\n (inner.to - inner.from < 20 && Identifier.test(read(inner)))\n ) {\n return { path: [], name: read(inner) };\n } else if (inner.name == 'MemberExpression') {\n return pathFor(read, inner, '');\n } else {\n return context.explicit ? { path: [], name: '' } : null;\n }\n}\n\nfunction enumeratePropertyCompletions(\n obj: any,\n top: boolean,\n): readonly Completion[] {\n const options: Completion[] = [],\n seen: Set<string> = new Set();\n for (let depth = 0; ; depth++) {\n for (const name of (Object.getOwnPropertyNames || Object.keys)(obj)) {\n if (\n !/^[a-zA-Z_$\\xaa-\\uffdc][\\w$\\xaa-\\uffdc]*$/.test(name) ||\n seen.has(name)\n ) {\n continue;\n }\n seen.add(name);\n let value;\n try {\n value = obj[name];\n } catch (_) {\n continue;\n }\n options.push({\n label: name,\n type:\n typeof value === 'function'\n ? /^[A-Z]/.test(name)\n ? 'class'\n : top\n ? 'function'\n : 'method'\n : top\n ? 'variable'\n : 'property',\n boost: -depth,\n });\n }\n const next = Object.getPrototypeOf(obj);\n if (!next) {\n return options;\n }\n obj = next;\n }\n}\n\n/// Defines a [completion source](#autocomplete.CompletionSource) that\n/// completes from the given scope object (for example `globalThis`).\n/// Will enter properties of the object when completing properties on\n/// a directly-named path.\nexport function scopeCompletionSource(scope: any): CompletionSource {\n const cache: Map<any, readonly Completion[]> = new Map();\n return (context: CompletionContext) => {\n const path = completionPath(context);\n if (!path) {\n return null;\n }\n let target = scope;\n for (const step of path.path) {\n target = target[step];\n if (!target) {\n return null;\n }\n }\n let options = cache.get(target);\n if (!options) {\n cache.set(\n target,\n (options = enumeratePropertyCompletions(target, !path.path.length)),\n );\n }\n return {\n from: context.pos - path.name.length,\n options,\n validFor: Identifier,\n };\n };\n}\n","import { type EditorView } from '@codemirror/view';\nimport { type Text } from '@codemirror/state';\nimport { type Diagnostic } from '@codemirror/lint';\n\nimport { javascriptLanguage } from './javascript';\n\n/// Connects an [ESLint](https://eslint.org/) linter to CodeMirror's\n/// [lint](#lint) integration. `eslint` should be an instance of the\n/// [`Linter`](https://eslint.org/docs/developer-guide/nodejs-api#linter)\n/// class, and `config` an optional ESLint configuration. The return\n/// value of this function can be passed to [`linter`](#lint.linter)\n/// to create a JavaScript linting extension.\n///\n/// Note that ESLint targets node, and is tricky to run in the\n/// browser. The\n/// [eslint-linter-browserify](https://github.com/UziTech/eslint-linter-browserify)\n/// package may help with that (see\n/// [example](https://github.com/UziTech/eslint-linter-browserify/blob/master/example/script.js)).\nexport function esLint(eslint: any, config?: any) {\n if (!config) {\n config = {\n parserOptions: { ecmaVersion: 2019, sourceType: 'module' },\n env: {\n browser: true,\n node: true,\n es6: true,\n es2015: true,\n es2017: true,\n es2020: true,\n },\n rules: {},\n };\n eslint.getRules().forEach((desc: any, name: string) => {\n if (desc.meta.docs?.recommended) {\n config.rules[name] = 2;\n }\n });\n }\n\n return (view: EditorView) => {\n const { state } = view,\n found: Diagnostic[] = [];\n for (const { from, to } of javascriptLanguage.findRegions(state)) {\n const fromLine = state.doc.lineAt(from),\n offset = {\n line: fromLine.number - 1,\n col: from - fromLine.from,\n pos: from,\n };\n for (const d of eslint.verify(state.sliceDoc(from, to), config)) {\n found.push(translateDiagnostic(d, state.doc, offset));\n }\n }\n return found;\n };\n}\n\nfunction mapPos(\n line: number,\n col: number,\n doc: Text,\n offset: { line: number; col: number; pos: number },\n) {\n return (\n doc.line(line + offset.line).from + col + (line == 1 ? offset.col - 1 : -1)\n );\n}\n\nfunction translateDiagnostic(\n input: any,\n doc: Text,\n offset: { line: number; col: number; pos: number },\n): Diagnostic {\n const start = mapPos(input.line, input.column, doc, offset);\n const result: Diagnostic = {\n from: start,\n to:\n input.endLine != null && input.endColumn != 1\n ? mapPos(input.endLine, input.endColumn, doc, offset)\n : start,\n message: input.message,\n source: input.ruleId ? `eslint:${input.ruleId}` : 'eslint',\n severity: input.severity == 1 ? 'warning' : 'error',\n };\n if (input.fix) {\n const { range, text } = input.fix,\n from = range[0] + offset.pos - start,\n to = range[1] + offset.pos - start;\n result.actions = [\n {\n name: 'fix',\n apply(view: EditorView, start: number) {\n view.dispatch({\n changes: { from: start + from, to: start + to, insert: text },\n scrollIntoView: true,\n });\n },\n },\n ];\n }\n return result;\n}\n"],"mappings":"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","names":["import_language","import_autocomplete","snip","node","cache","base","start"]}
package/package.json ADDED
@@ -0,0 +1,43 @@
1
+ {
2
+ "name": "@coze-editor/lang-javascript",
3
+ "version": "0.1.0-alpha.7f05f7",
4
+ "description": "lang-javascript",
5
+ "license": "MIT",
6
+ "author": "zhangyi",
7
+ "maintainers": [],
8
+ "main": "./dist/esm/index.js",
9
+ "module": "./dist/esm/index.js",
10
+ "types": "./dist/index.d.ts",
11
+ "files": [
12
+ "dist"
13
+ ],
14
+ "scripts": {
15
+ "build": "tsup",
16
+ "lint": "eslint && tsc --noEmit",
17
+ "test": "vitest --run --passWithNoTests",
18
+ "test:cov": "npm run test -- --coverage"
19
+ },
20
+ "dependencies": {
21
+ "@codemirror/autocomplete": "^6.18.0",
22
+ "@codemirror/language": "^6.10.1",
23
+ "@codemirror/lint": "^6.0.0",
24
+ "@codemirror/state": "^6.4.1",
25
+ "@codemirror/view": "^6.26.1",
26
+ "@lezer/common": "^1.2.2",
27
+ "@lezer/javascript": "^1.4.19"
28
+ },
29
+ "devDependencies": {
30
+ "@coze-arch/ts-config": "workspace:*",
31
+ "@coze-arch/vitest-config": "workspace:*",
32
+ "@coze-editor/eslint-config": "workspace:*",
33
+ "@lezer/lr": "^1.4.0",
34
+ "@vitest/coverage-v8": "^3.0.9",
35
+ "eslint": "9.14.0",
36
+ "tsup": "^8.0.1",
37
+ "vitest": "^3.0.9"
38
+ },
39
+ "publishConfig": {
40
+ "access": "public",
41
+ "registry": "https://registry.npmjs.org"
42
+ }
43
+ }