RocketChat / RocketChat/EmbeddedChat
Refactor API: Remove 'any' from EmbeddedChatApi and improve payload typing
Nessuno ha ancora preso questa issue.
- Lingua principale
- JavaScript
- Stelle
- 165
- Fork
- 381
- Merge medio
- 1g 2h
- PR unite (30g)
- 1
Descrizione
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.
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia da packages/api/src/EmbeddedChatApi.ts, leggendo connect(), le firme dei callback, autoLogin, sendMessage e handleUiKitInteraction. Esegui la build e i controlli di lint/tipi di packages/api sostituendo gli any espliciti con input tipizzati e accesso protetto allo stream; il lavoro è completato quando non rimane alcun any esplicito e il pacchetto viene compilato senza nuovi errori.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- typescript
- Ambito
- api, developer-experience
- Tipo di issue
- Refactoring
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Stato di attività
- Tranquilla
- Chiarezza
- Specificata chiaramente
- Idoneità per principianti
- 72/100