FormidableLabs / FormidableLabs/react-live

docs/api.md documents props as `PropTypes`, and several entries are wrong

Aperta
#419 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub
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

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.