Skip to content

FLOW_TRIGGER_UNKNOWN_EVENT 规则 id 常量没从 @objectstack/lint 导出 —— 消费者拿不到,只能对字面量 #5648

Description

@os-zhuang

发现于 #5496 的实测。观察类(observation-class):今天没有用户会踩到,消费者可以退化成比对字符串字面量。挂 finding,不挂 pm:queue,交 PM 分诊轮定级。

事实

packages/lint/src/validate-flow-trigger-readiness.ts 导出三个规则 id 常量,其中两个在包的 barrel 里再导出,一个没有:

常量 src/index.ts src/runtime.ts
FLOW_TRIGGER_UNKNOWN_OBJECT 有(index.ts:54) 无
FLOW_DRAFT_STATUS_AMBIGUOUS 有(index.ts:55) 无
FLOW_TRIGGER_UNKNOWN_EVENT 无 无

packages/lint/package.json 的 exports 只开了 "." 和 "./runtime" 两个入口,tsup.config.ts 的 entry 也只有 src/index.ts 与 src/runtime.ts,所以没进 barrel 就等于消费者完全拿不到 —— 无法 import { FLOW_TRIGGER_UNKNOWN_EVENT } from '@objectstack/lint',也没有深路径可绕。

FLOW_TRIGGER_UNKNOWN_EVENT 是 §1c/§1d 两条规则(#3427 的不可映射 token、#3457/#3481 的数组形 triggerType)共用的 id,os lint --json 与 os validate 输出里 f.rule 就是这个字符串,所以消费者(Studio 渲染、下游按规则过滤/抑制)只能写 'flow-trigger-unknown-event' 字面量,拿不到常量。

看起来是新增规则时漏加 barrel 一行,而不是刻意决定:同文件另两个 id 都导出了,且没有任何注释说明为何这条例外。

为什么不在 #5496 里顺手修

#5496 的 PR 只往 barrel 加了它自己新增的那一行(FLOW_TIME_RELATIVE_DESCRIPTOR_INVALID,否则新规则的 id 同样不可达),补别人的漏项属于范围外(PD:scope = the issue)。一行的事,但归属清楚更好。

建议

packages/lint/src/index.ts 的 validate-flow-trigger-readiness.js 导出块里补 FLOW_TRIGGER_UNKNOWN_EVENT。顺带值得看一眼别的规则文件有没有同类漏项 —— 如果 barrel 漏项不止一处,更值得的做法是加一条「每个导出的规则 id 常量都必须在 barrel 里可达」的 gate,而不是逐个补(判定权集中,新增规则时不再依赖记性)。

关联:#5496(发现来源)、#3427、#3457、#3481(该 id 服务的规则)。

Blocked-by: #5496


Generated by Claude Code

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions