FormidableLabs / FormidableLabs/react-live
docs/api.md documents props as `PropTypes`, and several entries are wrong
- Lingua principale
- TypeScript
- Stelle
- 4.6k
- Fork
- 260
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Descrizione
`docs/api.md` types every prop as `PropTypes.string`, `PropTypes.bool`, and so on — 16 rows
across four tables. There is no `prop-types` dependency in the repo. The props are
TypeScript, so the notation describes runtime validation that does not happen.
The file is already inconsistent with itself: the `withLive()` table types `element` as
`React.Element`, which is not a real type either (`React.ReactElement`).
Auditing the tables to convert them turned up three entries that are wrong on the facts, not
just the notation.
### `language` default is documented as `jsx`
```
| language | `PropTypes.string` | ... (Default: `jsx`) |
```
`LiveProvider` defaults it to `tsx`:
```ts
language = "tsx",
```
### `LivePreview`'s `Component` is not a node
Documented as `PropTypes.node`. It is `React.ElementType` — a tag name or component, not
rendered output. `node` would be the wrong choice even in PropTypes terms (`elementType`).
### `transformCode`'s declared type contradicts its own call site
The docs say "accepts and returns the code to be transpiled", which matches what
`LiveProvider` actually does:
```ts
const transformResult = transformCode ? transformCode(newCode) : newCode;
const transformedCode = await Promise.resolve(transformResult);
if (typeof transformedCode !== "string") {
throw new Error("Code failed to transform");
}
```
The type says the return value is discarded:
```ts
transformCode?(code: string): void;
```
Here the docs are right and the source is wrong. TypeScript permits returning a value where
`void` is expected, so callers are not broken — but anyone reading the declarations sees a
mutator. Should be `string | Promise`.
### Order
1. Fix `transformCode`'s return type. Separate from the docs work: it ships in the published
declarations and needs a changeset.
2. Convert the four tables to TypeScript types, correcting `language`, `Component`, and
`element` along the way.
3. While in there, `LiveEditor` takes `Partial`, so the three documented props
are not its whole surface.
Guida per i contributori
Apri la guida per i contributori
Direzione di ricerca
Start with docs/api.md and audit its four prop tables against the TypeScript declarations and the LiveProvider transformCode call site. Update the documented types and defaults, correct the transformCode return type, and account for LiveEditor’s Partial surface. A changeset is needed for the published declaration change.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- react, typescript
- Ambito
- documentation, frontend
- Tipo di issue
- Bug
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Attiva
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 55/100