@elaraai/east-diagnostics

中文文档
1.0.107发布于 2026/11/13AGPL-3.0-or-laterTypeScriptES Module零依赖构建来源已验证近 30 天下载 3723

东意识诊断规则关于TypeScript检查器——一个共享引擎,用于编辑器(tserver插件),代理(无头守护进程),和CI.

中文使用文档
文档目录9 节
  1. 特征
  2. 规则
  3. 东侧平庸卫生
  4. 东方主机
  5. 部署/运行时间-故障分类,进行打字检查
  6. 主机代码持有解码后东方值
  7. 使用量
  8. Claude 代码插件
  9. 许可证

东方诊断

关于类型脚本检查器的东意识诊断规则

License Node Version

东方诊断 是共享规则引擎,可以捕获东方特有 纯类型脚本无法读取的错误—— 相同的检查浮出到代理服务器 写入时间( Claude 插件守护进程) 以及编辑器和 CI 中的开发者 (单位:千美元)@elaraai/eslint-plugin-east) (中文(简体) ). 规则与 真实 ts.Program,因此它们具有类型意识,而不是正电子热能.

每一个规则 东-内自有门 它只在有真正的东方的地方开火 代码( 东类型/ 块, a) e3 构造,或 @elaraai/* 输入),所以该集 在平版Script上通过安装和惰性选择。 没有 软件包标识允许/拒绝列表;每个项目压制是 disabled 选项, 喜欢任何linter.

特征

  • 共享规则集 - 一个引擎, runEastRules(ts, program, sourceFile, checker),在每一个表面重复使用.
  • 类型意识 - 规则参考TypeScript检查器(例如解决) BlockBuilder,变体上下文类型).
  • 没有捆绑的编译器 - 说吧 typescript 是一个对等依赖; 主机的版本被注入.
  • 诊断服务 - 说吧 createDiagnosticsService() 解决最近的 tsconfig, 持有温暖 LanguageService,然后将本地类型错误与文件的 East 规则合并。 支持未保存的缓冲器的嵌入式覆盖 .
  • 可读的东方类型出错 - 东部类型的本地TS可分配性错误通过东部的结构类型diff重写(diffTypes)),因此一个递归型内部深处的不匹配读取为一行本地化行,而不是被重报的通名的页面. 这个项目是自己的 @elaraai/east 在运行时解决,所以 diff 总是匹配项目的类型语义.
  • LSP 服务器 - 说吧 runEastLsp() 服务于语言服务器协议上的相同诊断(stdio, 零依赖性), Claude 代码插件可以使用 lspServersNeovim 或者任何LSP客户端.
  • tserver 插件 - 那个 @elaraai/east-diagnostics/tsserver-plugin 条目装饰编辑器现有的 TypeScript 语言服务( 无第二程序), 通过 East UI 预览扩展发送到 VS 代码 typescriptServerPlugins 捐款.

规则

东侧平庸卫生

  • no-redundant-east-cast - 关于价值的冗余TS类型信息 $.let编号 :$.const 东方类型的论据已经支配着——一个铸造者(as …编号 :<…>, (中文(简体) ), new Map<K,V>() 通用词,或 East.value(x, T) 包装.
  • prefer-explicit-east-type - 单弧 $.let编号 :$.const 的数值([], (中文(简体) ), {}, (中文(简体) ), new Map()) (中文(简体) ).
  • prefer-some-none - 说吧 variant("some"/"none", …) 改为 some() 编号 : none。 。 。 .
  • no-handrolled-variant - 普通物体文字,其中需要东方变体/选项,或者在导入东方的文件中,a { type, value } 在任意槽中带有字符串标记的字元, 但已公布的 API 自己类型( 声明文件, 如 East's) Resolution) (中文(简体) ). 字面上缺少"东方"的品牌 来形容一个变体.
  • no-east-namespaced-type - 说吧 East.IntegerType 等,而不是赤色导入.
  • prefer-let-const-over-east-value - 说吧 East.value(…) 已声明或返回 East.function 块.
  • no-relative-src-import - 进口 又一个 包的内部通过 ../src/… 或深处 @elaraai/x/src 路径而不是其已公布的名称。 (软件包导入其 拥有 src 相对的——例如: spec's ../src/index.js ——是免责的;它不能导入自己已公布的名称. )
  • no-let-const-in-expression - 说吧 $.let编号 :$.const 用于除a以外的任何地方 const编号 :let 初始化器, 一个赤裸的语句, a return,或简洁的箭头正文(例如:struct-field值、数组元素、调用参数,或链式目标在表达式中将声明掩埋).
  • no-unexecuted-east-expression - 一个赤裸的东方表达式声明,从未用过 $( … ) 或约束。 声明对其具有约束力,转让也具有约束力(keyFn = East.function(…),在两个函数之间作出选择).
  • no-reinlined-east-binding - 东边 Expr 受联署材料约束 const编号 :let 并在一个东体内读出两次, 或者在每个元素回调,a $.for编号 :$.while 身体或被窝 East.function,在每次读取时重新加注——并重新评价;将其绑定一次 $.let编号 :$.const单臂1个读取(.ifElse, (中文(简体) ), $.if … .else页:1 match (手)和(a)项 $.const 在任何地方读作保持沉默,在每一个东方机构之外所做的一项职能也是如此(East.function,或一个帮助者或一个条件给它:它捕捉到没有约束,所以在每次读取时再次使它重新评价无.
  • prefer-jsx-over-factory-call - 在一个 .tsx 档案,工厂的 Foo.Root(...) 其结果是JSX要素——作者: <Foo> 标记代替.
  • no-untracked-east-data - 一个赤裸的JS const 在一个区块内东型位置所消耗的文字——用 $.const编号 :$.let。 。 。 .

东方主机

这些原则有一个原则: 东区内部的代码必须是东区,主机语言可能 声明 东/ E3 程序, 但从未 计算 其数据依赖的IR、密钥或值.

  • no-host-in-east-block - 东区内部,任何主机语言结构:主机呼叫(当地TS助手、JS内建、JS阵列方法)、TS关闭/功能 声明,东行运行器上的主办操作器(a + b, (中文(简体) ), cond ? a : b, (中文(简体) ), &&编号 :||),主机索引访问(arr[i] 联合来文的价值) for编号 :while编号 :if 发送 IR, 或主机字符串插值。 (东方方法链, $.*, (中文(简体) ), East.*编号 :Expr.*, (中文(简体) ), variant编号 :some编号 :none, (中文(简体) ), East.str,以及任意 @elaraai/* 电话是东方的 从来没有标记。 )
  • no-module-scope-east-macro - 模块范围TS帮助器,每次返回都建有东IR(a) Expr 链条, East.value, (中文(简体) ), variant编号 :some 超过一个 Expr),或复合字符串键((o, l) => ${o}|${l}``} 输入 East 数据的${o}|${l}``} — 使它成为真实 East.function,或以打入的键/嵌入的东结构来建模数据。 在主机数据(一个渲染器的处理器,一个测试的固定器)和主机存储密钥上,帮助构建解码值是主机代码,并且通过. 申报工厂也这样做——帮助者返回e3定义(TaskDef, (中文(简体) ), RecordIndexDef, (中文(简体) ), MigrationDef,.)或记录的部分作为其构建者起草(.)index.on(…), (中文(简体) ), mutation.patch(), (中文(简体) ), migration.value(…)),它构成程序的结构——返回交还帮助者自己的参数,例如检查缩小(return fn as FunctionExpr<I, O>),它不建立;程序构建者,返回其程序的IR捆绑(toIR()),将它序列化;和一个函数厂,每个返回一个函数值来自主机数据(类型,声明)和其他函数,一个程序绑定和调用。 仍然检查一个使用函数以外的东值的帮助者:它返回的函数将捕获它.
  • no-compile-time-data-injection - 构建时间数据摄入(a) node:fs 进口/呼叫, JSON.parse, (中文(简体) ), process.env在模块范围——运行时通过 e3.input /数据集/平台任务. (一个没有东边读取器的真正的种子时靴子是可以接受的警告。 )
  • no-compile-time-seed-data - 主机计算数据作为第3个参数的种子传递 e3.input(name, type, variant('value', seed)) a 包括: new Map()按东道方填入的/阵列 for- loops,或主机调用的对象文字(num(cfg.x), (中文(简体) ), BigInt(...))——将构建时段快照烤入已部署程序. 默认必须是小的 作者常数 (字形,为空/字形) Map编号 :Set/阵列/结构,或东值 variant编号 :some编号 :none编号 :East.value)或省略;运行时装入真实/繁多的数据(a) BlobType 输入解析为 blob.decodeCsv(…) 在一个 e3.task,一个平台 FileSystem.readFile,或一个 e3.record 它的变异.

部署/运行时间-故障分类,进行打字检查

  • require-runner-platforms - 一个 e3.task 调用 PROJECT 宣布的平台功能(East.platform("proj.x", …) 其选项宣布不 runner.platforms { custom: … } 条目 —— 仅在“ Platform 函数... 不可用” 的数据流运行时失败 .
  • no-cross-block-builder - 一个被窝住的东方回叫 排放约束 通过一个OEER块 $ (单位:千美元)xs.map((_$, x) => { $.let(…) }))——错误地块中的束缚地.
  • no-state-outside-reactive -东来 State.* 外部a <Reactive> 构建器 — UI 函数在分析时变为同位素并被部署时拒绝.
  • prefer-const-ui-callbacks - 一个 East.function 操作员用JSX道具内写——重建每个道具 equalFor 无法区分函数值,因此被纪念的渲染器错过了互换. 捆绑一次 $.const。 。 。 .
  • no-dynamic-bind-path - 一个 Data.bind 编号 : State.bind 从东值计算出的密钥 — 绑定密钥必须是 IR- 构建常数, 或绑定从 ui() 显出.
  • no-build-time-clock - 说吧 Date.now() / 无标记 new Date() 在East/e3源的模块范围——BUILD时钟被烤入已部署的程序.
  • no-handrolled-value-type-mirror - 手写的 interface Foo {…} 镜像内镜的东向类型值 FooType,一个 as { type: …; value: … } 主张,或 *Like 介面或字面字面标注在 East 类型上 – 以 ValueTypeOf<typeof FooType> 因此它不能漂移, 并缩小一个解码的结合 在它的标签。 一个工厂的选项接口( Q)SubtypeExprOrValue<…> 成员)是输入而非镜子,并经过.
  • no-host-comparison-on-east-values - 说吧 ===编号 :< ,并排序比较器,减去它们 ——使用 equalFor(T) 编号 : compareFor(T),或 Object.is(a, b) ,指同一个对象(备忘录、缓存).
  • require-example-returns - 一个 example() 无 returns (对非NullType编号 :UIComponentType )——牵引装置运行fn作为赤裸的语句和断言假道.
  • no-duplicate-definition-name - 两个同种e3定义在一个文件中共享一个名称字符串——它们在部署时会碰撞.
  • no-inline-credentials - 字串证书(password, (中文(简体) ), secretAccessKey, (中文(简体) ), token直接或包裹在 some(…)编号 :variant("some", …))在East/e3源中——IR是内容地址,输出,复制,因此其中的秘密实际上不可信赖. 使用 Env.get("NAME") (东-节点-std),提供每个环境的价值. 与本地主机/端点(测试容器)配对的证书免责.

主机代码持有解码后东方值

一旦东方解码出东方值, 渲染器、运行时间或测试会持有东方值, 这里的每个规则都标出JavaScript的站牌 代表东方的公用事业. 每个站台的打字检查都干净, 和几个隐藏真正的错误在渲染器中 (#960,#962) (中文(简体) ). 一种价值通过它的类型来源于:a ValueTypeOf 结构, a 成员携带 [variant_symbol]页:1 SortedSet 编号 : SortedMap,或一块地, 有效载荷或元素从一个清单中读出——从不列出姓名. hostValueRuleNames 名称集( 有 no-host-comparison-on-east-values, (中文(简体) ), no-handrolled-value-type-mirror, (中文(简体) ), no-handrolled-variant, (中文(简体) ), prefer-some-none 财务报告和审定财务报表 no-struct-type-from-object以便一个只奔跑的召唤者 带有 only。 。 。 .

  • no-host-print-of-east-values - 说吧 String(x), (中文(简体) ), x.toString(), (中文(简体) ), `${x}`, (中文(简体) ), JSON.stringify(x), (中文(简体) ), x.toISOString() 在一个值 JavaScript 上与 East 不同的打印——一个浮点,一个 DateTime,一个 Blob,一个struct,一个变体,一个收藏. 使用 printFor(T),或个人的本地化格式。 字符串、整数和布尔打印方式相同,数字写作CSS长度(`${w}px`)是风格,不是指印.
  • no-host-parse-to-east-values - 说吧 BigInt(s), (中文(简体) ), Number(s), (中文(简体) ), parseFloat(s), (中文(简体) ), parseInt(s), (中文(简体) ), new Date(s), (中文(简体) ), Date.parse(s) 或者说 JSON.parse(s) 将文本读入一个东槽——一个东函数值的参数,一个变体的有效载荷,一个struct的字段. 使用 parseFor(T) 并采取行动 success。在来源中写入的文本是其作者的,但保存一个无区日期时间,该时间 new Date 在当地时间读取.
  • no-js-type-dispatch-on-east-values - 说吧 typeof x 或者说 x instanceof C ——按其东类发送isValueOf(x, T))或它的变体标记.
  • no-js-collection-for-east-collection - 一个Java脚本 Set 编号 : Map 由structs,变体或 DateTimes 在东集, Dict 或变体有效载荷中起落而来—— 它通过身份来找到一个密钥, 所以一个平等的密钥永远找不到它的入入. 使用 SortedSet 编号 : SortedMap 与 compareFor(K)弦,整数,花键和布尔键是东方自己的平和和通过.
  • no-struct-type-from-object - 东边的 StructType 给一个只在运行时才知道字段的物体—— Object.fromEntries(…)页:1 Record<string, …> 或一般结构 fields,一个分布,一个类型的计算名称 string − 或像整数一样命名字段的对象("10", (中文(简体) ), 2024),写出或类型. 物体在所有其他物体之前都列出这样的名称,无论它在哪里写,所以它不能使这个字段保持原位,以及 StructType 拒绝(# 1574) 。 宣布田地为列表, StructType([[name, type], …]),保持任何命令; Object.entries(T.fields) 列出结构类型. StructType(Object.fromEntries(list)) 固定为 StructType(list)名称已知且无一物像整数的物体——写出、记录、宣布的结晶 fields 或散取一分,一分一分.

使用量

import * as ts from "typescript";
import { runEastRules, createDiagnosticsService, hostValueRuleNames } from "@elaraai/east-diagnostics";

// Pure: run the rules over one source file you already have a program + checker for.
const diagnostics = runEastRules(ts, program, sourceFile, checker, { disabled: ["prefer-some-none"] });

// Only the rules over host code holding decoded East values.
const hostValues = runEastRules(ts, program, sourceFile, checker, { only: hostValueRuleNames });

// Or let the service resolve the project and merge native + rule diagnostics.
const service = createDiagnosticsService();
const text = service.diagnoseText("/path/to/file.ts"); // "" when clean

Claude 代码插件

东方生态系统也运载a 克劳德代码 插件 — East 语言技能, 实例搜索, 以及 East 代码的先发制人诊断 elaraai 市场:

# Inside Claude Code
/plugin marketplace add elaraai/east-workspace
/plugin install east@elaraai
# From a terminal
claude plugin marketplace add elaraai/east-workspace
claude plugin install east@elaraai

许可证

双重许可证:


开发者 Elara AI Pty有限公司

版本与发布记录

@elaraai/east-diagnostics 共发布 104 个版本,首次发布于 2026/06/09;过去 12 个月发布了 104 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
1.0.107latest2026/11/13今天
1.0.1062026/11/094 天前
1.0.1052026/11/085 天前
1.0.1042026/11/067 天前
1.0.1032026/11/049 天前
1.0.1022026/11/0310 天前

关于 @elaraai/east-diagnostics 的常见问题

@elaraai/east-diagnostics 是什么?

东意识诊断规则关于TypeScript检查器——一个共享引擎,用于编辑器(tserver插件),代理(无头守护进程),和CI.

如何安装 @elaraai/east-diagnostics?

在项目目录运行 npm install @elaraai/east-diagnostics,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:typescript(>=5.0.0 <7)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@elaraai/east-diagnostics 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@elaraai/east-diagnostics 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@elaraai/east-diagnostics 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=22.0.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@elaraai/east-diagnostics 可以商用吗?

@elaraai/east-diagnostics 使用 AGPL-3.0-or-later 许可。最严格的 Copyleft:除分发外,通过网络向用户提供基于它的服务也需要开源对应源码。闭源 SaaS 使用前务必评估。以上为概括,不构成法律意见,请以许可原文为准。

@elaraai/east-diagnostics 的下载量有多少?

根据 npm 官方下载统计,@elaraai/east-diagnostics 在 2026/10/13 – 2026/11/11 这 30 天内被下载 3,723 次,日均约 124 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@elaraai/east-diagnostics 还在维护吗?

最新版本 1.0.107 发布于 2026/11/13(今天);至今共发布 104 个版本,其中过去 12 个月发布了 104 个;首次发布于 2026/06/09。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。