Skip to content

fix(transform): 兼容 Sub-Store 2.36.32+ 手写 Peggy 解析器 - #40

Open
MbAIGC wants to merge 1 commit into
SaintWe:multi-tenantfrom
MbAIGC:fix/peggy-handwritten-parser
Open

fix(transform): 兼容 Sub-Store 2.36.32+ 手写 Peggy 解析器#40
MbAIGC wants to merge 1 commit into
SaintWe:multi-tenantfrom
MbAIGC:fix/peggy-handwritten-parser

Conversation

@MbAIGC

@MbAIGC MbAIGC commented Aug 10, 2026

Copy link
Copy Markdown

问题

Sub-Store 2.36.32 将 backend/src/core/proxy-utils/parsers/peggy/trojan-uri.js 从内嵌 Peggy grammar(const grammars = String.raw...)改写为手写解析器(parseTrojan + getParser()),导致 vite buildsub_store 环境报错:

[sub-store-transform] trojan-uri.js Peggy parser 预编译失败:未找到 grammars

修复

precompilePeggyParser 不再对 peggy 目录下所有文件强制要求匹配 grammar:

  • 未找到 grammar 且文件不引用 peggy 时(手写解析器),原样放行,其自带的 getParser() 接口与预编译产物一致;
  • 仍引用 peggy 却找不到 grammar 时才报错,避免未来上游格式变化被静默吞掉。

验证

  • 本地复现:拉取 Sub-Store 2.36.32,Node 24 + pnpm 11 下构建报同样错误;
  • 修复后 pnpm run build:workers 通过:sub_store 461 个模块构建成功;
  • 产物中 peggy.generate 为 0,手写 parseTrojan 已正确打包。

trojan-uri.js 已从内嵌 Peggy grammar 改写为手写解析器,
precompilePeggyParser 不再强制要求匹配 grammars;未找到 grammar
且未引用 peggy 时原样放行,仍引用 peggy 时才报错,避免构建失败。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant