feat(builder): lazy UTxO resolvers for retry-safe buildEffect
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 3/5
- Thời gian dự kiến
- 1-2 ngày
- Mức phù hợp với người mới
- 55/100
- Loại issue
- Tính năng
- Độ rõ ràng
- Đặc tả rõ ràng
- Mức độ hoạt động
- Đình trệ
- Công nghệ
- typescript
- Lĩnh vực
- backend-api-design
Hướng nghiên cứu
Bắt đầu với BuildOptions và resolveAvailableUtxos trong TransactionBuilder.ts, sau đó kiểm tra CollectFromParams.inputs và createCollectFromProgram trong Collect.ts. Xác nhận cách các mảng tĩnh được xử lý trước khi mở rộng cả hai inputs để hỗ trợ lazy Effects. Hoàn tất khi hành vi tĩnh vẫn tương thích và các lazy resolver được đánh giá tại thời điểm build hoặc thực thi chương trình, để các retry nhận được UTxOs mới.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Problem
BuildOptions.availableUtxos and collectFrom inputs are static arrays resolved before buildEffect() runs. When an action is retried via Effect.retry, the same stale UTxO arrays are reused — the provider is never queried again.
Proposed Solution
Allow availableUtxos and collectFrom.inputs to also accept a lazy resolver () => Effect<ReadonlyArray<UTxO>> evaluated at build time:
client.newTx()
.collectFrom({ inputs: () => client.Effect.getUtxos(scriptAddress), redeemer })
.buildEffect({ availableUtxos: () => client.Effect.getWalletUtxos() })
.pipe(Effect.flatMap(s => s.Effect.signAndSubmit()))
.pipe(Effect.retry(Schedule.recurs(3)))
Each retry calls the resolver fresh, so UTxOs are always up to date with no extra boilerplate required from the user.
Affected Areas
BuildOptions.availableUtxos— extend type to accept() => Effect<ReadonlyArray<UTxO>>resolveAvailableUtxosinTransactionBuilder.ts— yield the Effect at build time when lazyCollectFromParams.inputs— same lazy extensioncreateCollectFromPrograminCollect.ts— evaluate resolver at program execution time
Non-breaking — static arrays continue to work as-is.
- Ngôn ngữ chính
- TypeScript
- Star
- 22
- Fork
- 33
- Merge trung bình
- 2 ngày 1 giờ
- Pull request đã merge (30 ngày)
- 44
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Không có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của IntersectMBO/evolution-sdk
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
IntersectMBO/evolution-sdk#559 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
enhancement
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
IntersectMBO/evolution-sdk#557 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
dependencies good first issue
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 93/100
IntersectMBO/evolution-sdk#541 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 80/100
IntersectMBO/evolution-sdk#518 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
enhancement external-review
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
IntersectMBO/evolution-sdk#456 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của IntersectMBO/evolution-sdk
Issue tương tự
-
area:tui enhancement platform:macos
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 66/100
anthropics/claude-code#101490 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 66/100
netlify/netlify-mcp#75 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
atlassian-labs/compiled#1960 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
pnp/cli-microsoft365#7639 ·
Maintainer thường phản hồi trong vòng 2 ngày
-
nextjs-tracking
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 74/100
cloudflare/vinext#3887 ·
Maintainer thường phản hồi trong vòng 1 ngày