Refactor API: Remove 'any' from EmbeddedChatApi and improve payload typing
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
- 72/100
- Loại issue
- Tái cấu trúc
- Độ rõ ràng
- Đặc tả rõ ràng
- Mức độ hoạt động
- Ít trao đổi
- Công nghệ
- typescript
- Lĩnh vực
- api, developer-experience
Hướng nghiên cứu
Bắt đầu với packages/api/src/EmbeddedChatApi.ts, đọc connect(), các chữ ký callback, autoLogin, sendMessage và handleUiKitInteraction. Chạy build và các bước kiểm tra lint/type của packages/api trong khi thay thế any tường minh bằng các đầu vào có kiểu và quyền truy cập stream có kiểm tra; hoàn tất nghĩa là không còn any tường minh nào và package build thành công mà không có lỗi mới.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Summary
packages/api/src/EmbeddedChatApi.ts currently relies on multiple explicit any types across callback signatures, stream payload handling, auth inputs, and message APIs. This reduces type safety and makes it easier to accidentally access unsafe or undefined fields, especially when working with dynamic DDP payloads.
Problem
- Explicit
anyappeared in:- message listeners
- action/ui interaction listeners
autoLogincredentials- DDP stream callbacks (
onStreamData) sendMessageinputhandleUiKitInteractioninput
- Stream payloads were accessed without defensive narrowing (
fields,eventName,args). - SDK callback types are broad, so local guards are needed to keep runtime behavior while improving static safety.
Acceptance Criteria
- No explicit
anyremains inpackages/api/src/EmbeddedChatApi.ts. connect()stream handling uses guarded/narrowed access.sendMessageandhandleUiKitInteractionuse typed inputs.packages/apibuilds successfully.- No lint/type errors introduced.
Impact
- Better type safety and editor intelligence.
- Lower risk of runtime errors from malformed DDP payloads.
- No intended behavior changes at runtime.
- Ngôn ngữ chính
- JavaScript
- Star
- 165
- Fork
- 381
- Merge trung bình
- 1 ngày 2 giờ
- Pull request đã merge (30 ngày)
- 1
Hướng dẫn đóng góp
Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này
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 RocketChat/EmbeddedChat
-
enhancement
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 84/100
RocketChat/EmbeddedChat#1360 · 1 bình luận ·
-
Permissions change-detection in useFetchChatData is dead — applyPermissions re-runs on every call Đang mở
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 85/100
RocketChat/EmbeddedChat#1317 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
RocketChat/EmbeddedChat#1315 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
RocketChat/EmbeddedChat#1313 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
RocketChat/EmbeddedChat#1294 ·
Tất cả issue của RocketChat/EmbeddedChat
Issue tương tự
-
bug
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 90/100
apache/cloudstack#14222 ·
-
Browser Waiting for: Product Owner
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 85/100
getsentry/sentry-javascript#24577 · 1 bình luận ·
-
curation good first issue
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
amponce/archive-movie-browser#186 ·
-
light
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 85/100
aemdemos/patients-stryker#253 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 86/100
clerk/javascript#9852 ·