process.stdin.on(data/end): SC0001 for Buffer listener, setEncoding silently ignored
维护者通常 1 天内回复
还没有人认领这个 Issue。
评估
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 新手友好度
- 53/100
- Issue 类型
- 缺陷
- 描述清晰度
- 描述清楚
- 活跃度
- 活跃
- 技术栈
- typescript
- 领域
- backend
调研方向
Start with the fallback stdin declarations in packages/compiler/ambient/scriptc-node-fallback.d.ts, around lines 401–470, and trace how stdin event listeners and setEncoding are lowered. Reproduce both examples from the issue, then check the related issues #3352, #3427, and #3445 for existing design context. Done means Buffer listeners work and setEncoding either produces string chunks or fails with a diagnostic.
由索引模型根据 Issue 内容生成。
描述
scriptc 0.4.11, main at 918d80b26a, macOS arm64.
Two problems with process.stdin as an event emitter.
- Typed Buffer listener is refused:
const chunks: Buffer[] = [];
process.stdin.on("data", (c: Buffer) => chunks.push(c));
process.stdin.on("end", () => console.log(Buffer.concat(chunks).length));
Actual: SC0001: No overload matches this call ... Argument of type '"data"' is not assignable to parameter of type '"keypress"'. The fallback declarations in packages/compiler/ambient/scriptc-node-fallback.d.ts (stdin, around lines 401-470) lack the data/end overloads.
- Silent miscompile with setEncoding:
let buf = "";
process.stdin.setEncoding("utf8");
process.stdin.on("data", (c) => { buf += c; console.error(typeof c); });
process.stdin.on("end", () => console.log(JSON.stringify(buf)));
echo '{"a":1}' | ./out prints object and "123,34,97,34,58,49,125,10". Expected string and "{\\"a\\":1}\\n". The build succeeds with no diagnostic, so setEncoding is ignored and chunks stay byte arrays.
for await (const c of process.stdin) with Buffer.concat works.
Expected: either lower both forms or refuse setEncoding loudly. Related: #3352, #3427, #3445.
- 主要语言
- TypeScript
- 星标
- 6.5k
- 派生
- 212
- 平均合并
- 13 小时 46 分钟
- 30 天内合并 PR
- 787
环境准备
- 没有 Dockerfile 或 Docker Compose 文件
- 没有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
vercel-labs/scriptc 的其他 Issue
-
难度 3/5 1-2 天 新手友好度 54/100
vercel-labs/scriptc#3534 ·
维护者通常 1 天内回复
-
难度 4/5 3-5 天 新手友好度 46/100
vercel-labs/scriptc#3533 · 1 条评论 ·
维护者通常 1 天内回复
-
难度 5/5 一周以上 新手友好度 25/100
vercel-labs/scriptc#3532 ·
维护者通常 1 天内回复
-
难度 3/5 1-2 天 新手友好度 66/100
vercel-labs/scriptc#3531 ·
维护者通常 1 天内回复
-
难度 4/5 3-5 天 新手友好度 57/100
vercel-labs/scriptc#3529 ·
维护者通常 1 天内回复
查看 vercel-labs/scriptc 的全部 Issue
相似的 Issue
-
area:tooling good first issue
难度 2/5 1-3 小时 新手友好度 68/100
interledger/publisher-tools#1007 ·
维护者通常 1 天内回复
-
priority/medium roadmap/v1.1.1 stakeholder/rapr type/bug
难度 2/5 1-3 小时 新手友好度 83/100
databrickslabs/ontos#1420 ·
维护者通常 3 天内回复
-
难度 2/5 1-3 小时 新手友好度 76/100
vercel-labs/just-bash#756 ·
维护者通常 1 天内回复
-
area: ci good first issue
难度 1/5 1 小时以内 新手友好度 85/100
interledger/web-monetization-extension#1555 ·
维护者通常 1 天内回复
-
🐞 bug 🧐 unconfirmed
难度 2/5 1-3 小时 新手友好度 72/100
Tencent/tdesign-vue-next#7056 · 1 条评论 ·
维护者通常 1 天内回复