@lucasbernardosn/ts-utils 0.2.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +53 -0
- package/package.json +1 -1
package/README.md
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# @lucasbernardosn/ts-utils
|
|
2
|
+
|
|
3
|
+
Funções e helpers de tipo em TypeScript puro, sem React e sem dependências. Serve a qualquer
|
|
4
|
+
projeto TypeScript e é a base do [`@lucasbernardosn/react-ui`](https://www.npmjs.com/package/@lucasbernardosn/react-ui)
|
|
5
|
+
e do [`@lucasbernardosn/react-table`](https://www.npmjs.com/package/@lucasbernardosn/react-table).
|
|
6
|
+
|
|
7
|
+
Substitui o `@lucasbernardosn/utils`: a troca é só do nome no import.
|
|
8
|
+
|
|
9
|
+
## Instalação
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
pnpm add @lucasbernardosn/ts-utils
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Tudo sai da raiz do pacote:
|
|
16
|
+
|
|
17
|
+
```ts
|
|
18
|
+
import { getInitials, isDeepEqual, type DeepPartial } from '@lucasbernardosn/ts-utils';
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Funções
|
|
22
|
+
|
|
23
|
+
| Função | Para quê |
|
|
24
|
+
| ------ | -------- |
|
|
25
|
+
| `composeEventHandlers` | Junta vários handlers num só, chamados em sequência com os mesmos argumentos; os `undefined` são ignorados |
|
|
26
|
+
| `createSplitProps` | Separa um objeto de props em dois pela lista de chaves, que precisa cobrir todas as chaves do tipo pedido |
|
|
27
|
+
| `getInitials` | As iniciais de um nome, em maiúsculas: a do primeiro e a do último nome |
|
|
28
|
+
| `isDeepEqual` | Igualdade estrutural, inclusive de `Map`, `Set`, `Date`, `RegExp` e arrays tipados |
|
|
29
|
+
| `isNotNullish` | Guard que tira `null` e `undefined` do tipo, para usar no `filter` |
|
|
30
|
+
| `mergeBooleansAnd`, `mergeBooleansOr` | Combinam booleanos com E e OU, ignorando os `null` e `undefined` |
|
|
31
|
+
| `toPascalCase` | Converte texto para PascalCase, separando em `-`, `_` e espaços |
|
|
32
|
+
| `sleep` | Promise que resolve depois de um tempo, opcionalmente com um valor (para testes e protótipos) |
|
|
33
|
+
|
|
34
|
+
## Tipos
|
|
35
|
+
|
|
36
|
+
| Tipo | Para quê |
|
|
37
|
+
| ---- | -------- |
|
|
38
|
+
| `DeepPartial`, `DeepReadonly` | `Partial` e `Readonly` em todos os níveis |
|
|
39
|
+
| `DeepKeys`, `DeepKeysFlat`, `DeepValue` | Os caminhos de um objeto (`'a.b.c'`) e o tipo do valor em cada um |
|
|
40
|
+
| `KeysOfType`, `PickByValue`, `OmitByValue` | Chaves e recortes de um objeto pelo tipo do valor |
|
|
41
|
+
| `MergeOverride` | Junta dois tipos, com as chaves do segundo substituindo as do primeiro |
|
|
42
|
+
| `Optional`, `RequiredExcept` | Torna opcionais só as chaves pedidas, ou obrigatórias todas menos elas |
|
|
43
|
+
| `Recompose` | Achata uma interseção num objeto só, para o editor mostrar o tipo final |
|
|
44
|
+
| `ValueOf`, `ArrayElement`, `NonEmptyArray` | O tipo dos valores de um objeto, o elemento de um array e um array com ao menos um item |
|
|
45
|
+
| `Nullish`, `EnsureString`, `PascalCase` | `null` ou `undefined`, o tipo que só aceita `string` e o PascalCase de um literal |
|
|
46
|
+
| `SerializableValue`, `StrictEmptyObject` | Um valor que sobrevive ao `JSON.stringify` e o objeto sem chaves |
|
|
47
|
+
| `AnyType`, `UnknownType` e variantes | Os `any` e `unknown` nomeados (`AnyObject`, `UnknownFunction`…), para o uso ser explícito |
|
|
48
|
+
|
|
49
|
+
O JSDoc de cada função e tipo, no editor, traz os detalhes e os exemplos.
|
|
50
|
+
|
|
51
|
+
## Licença
|
|
52
|
+
|
|
53
|
+
MIT.
|