Published types: `TransactionBuilder.d.ts` imports `DeferredRedeemer`, which `stripInternal` removes
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 2/5
- 見積もり時間
- 1〜3時間
- 初心者へのやさしさ
- 82/100
- issue の種類
- バグ
- 明瞭さ
- 明確に書かれている
- 活発さ
- 活発
- 技術スタック
- typescript
- 領域
- api, testing-qa
調査の方向性
packages/evolution/src/sdk/builders/RedeemerBuilder.ts、TransactionBuilder.ts の 87 行目、および packages/evolution/tsconfig.build.json から始め、stripInternal が生成される宣言にどのような影響を与えるかを調べます。skipLibCheck を無効にして TypeScript 5.9.3 で consumer の例を再現します。公開された宣言が必要な public 型を export し、consumer がエラーなしで型チェックを通過し、DeferredRedeemerData["deferred"] がもはや any でなくなれば完了です。
索引モデルが issue の本文から書いたものです。
説明
Summary
The type declarations published in 0.5.14 don't type-check; the sources are unchanged on main at 714a6da.
dist/sdk/builders/TransactionBuilder.d.tsimportsDeferredRedeemerfrom./RedeemerBuilder.js, butRedeemerBuilder.d.tsdoesn't export it.- In
RedeemerBuilder.ts,DeferredRedeemeris marked/** @internal */, andpackages/evolution/tsconfig.build.jsonsets"stripInternal": true. The declaration is removed, while the import inTransactionBuilder.ts(line 87) stays.
Reproduce
package.json: "@evolution-sdk/evolution": "0.5.14", "typescript": "5.9.3"
tsconfig.json:
{
"compilerOptions": {
"target": "ES2022",
"module": "NodeNext",
"moduleResolution": "NodeNext",
"strict": true,
"noEmit": true,
"skipLibCheck": false
},
"include": ["index.ts"]
}
index.ts:
import * as Evolution from "@evolution-sdk/evolution"
export const sdk = Evolution
Then run npx tsc -p .
Expected
No errors.
Actual
node_modules/@evolution-sdk/evolution/dist/sdk/builders/TransactionBuilder.d.ts(54,15): error TS2305: Module '"./RedeemerBuilder.js"' has no exported member 'DeferredRedeemer'.
Notes
- It is the only such error. Type-checking all 222
.d.tsfiles indistreports just this one. - With
skipLibCheck: truethe build passes, but silently. The unresolved import becomesany, soDeferredRedeemerData["deferred"]isanyfor consumers.DeferredRedeemerDatais documented as public (@since 2.0.0,@category state), andTxBuilderState.deferredRedeemersuses it. - Restoring four declarations fixes it. I restored the four
@internaltype declarations fromRedeemerBuilder.ts(StaticRedeemer,SelfRedeemer,BatchRedeemerandDeferredRedeemer) into the publishedRedeemerBuilder.d.ts. Both the consumer above and all 222 files then type-check, anddeferredis typed again.toDeferredRedeemercan stay internal. So dropping@internalfrom those four types is enough, unlessDeferredRedeemerDataisn't meant to be public after all. - CI could catch this kind of break. A consumer compiled with
skipLibCheck: falsewould do it.
Investigated with AI assistance (Claude Code); the reproduction above was run with TypeScript 5.9.3 against 0.5.14.
- 主要言語
- TypeScript
- スター
- 22
- フォーク
- 31
- 平均マージ
- 4日 6時間
- マージ済み PR(30日)
- 27
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートなし
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
IntersectMBO/evolution-sdk のほかの issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
IntersectMBO/evolution-sdk#579 ·
メンテナーはふだん 1 日以内に返信
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 84/100
IntersectMBO/evolution-sdk#559 ·
メンテナーはふだん 1 日以内に返信
-
enhancement
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
IntersectMBO/evolution-sdk#557 ·
メンテナーはふだん 1 日以内に返信
-
dependencies good first issue
難易度 1/5 1時間未満 初心者へのやさしさ 93/100
IntersectMBO/evolution-sdk#541 ·
メンテナーはふだん 1 日以内に返信
-
bug external-review
難易度 2/5 1〜3時間 初心者へのやさしさ 86/100
IntersectMBO/evolution-sdk#530 ·
メンテナーはふだん 1 日以内に返信
IntersectMBO/evolution-sdk の issue をすべて見る
似ている issue
-
bug via-triage
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
pingdotgg/t3code#14452 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
solana-foundation/program-examples#747 · コメント 1 件 ·
メンテナーはふだん 9 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
remotion-dev/remotion#11847 ·
メンテナーはふだん 1 日以内に返信
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
openwatersio/slackwater#355 ·
メンテナーはふだん 1 日以内に返信
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 74/100
melgarafael/DeskcommCRM#1998 · コメント 3 件 ·
メンテナーはふだん 1 日以内に返信