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.jsonexports 只开了 ".""./runtime" 两个入口,tsup.config.tsentry 也只有 src/index.tssrc/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 --jsonos 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.tsvalidate-flow-trigger-readiness.js 导出块里补 FLOW_TRIGGER_UNKNOWN_EVENT。顺带值得看一眼别的规则文件有没有同类漏项 —— 如果 barrel 漏项不止一处,更值得的做法是加一条「每个导出的规则 id 常量都必须在 barrel 里可达」的 gate,而不是逐个补(判定权集中,新增规则时不再依赖记性)。

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

Blocked-by: #5496


Generated by Claude Code

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions