Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Proxies i programowanie na typach przy tworzeniu ergonomicznych i tree shakable bibliotek #96

Open
mieszkosabo opened this issue Sep 19, 2023 · 8 comments

Comments

@mieszkosabo
Copy link

Cześć,
tytuł jest trochę dziwny, ale ostatnio myślałem nad tym czy da się robić takie biblioteki jak np. Zod, ale tak, by user mógł sam sobie wybrać podzbiór API, który go interesuje i dzięki temu zmniejszyć bundle size swojeje aplikacji.

Tak to wygląda w Zodzie:

import { z } from "zod"; // 12.8 kB

const LoginSchema = z.object({
  email: z.string().email(),
  password: z.string().min(8),
});

Nawet jeśli potrzebujemy tylko walidatorów do string, email i min, to i tak musimy zaimportować całe z ważące 12.8 kB.

No i okazuje się, że wymyśliłem jak to zrobić i o tym chciałbym opowiedzieć. Zrobiłem taką proof-of-concept libkę, która używa tej techniki correttore:

import { email, minLength, object, initCorrettore, string } from "correttore"; // 0.54 kB

export const c = initCorrettore({
  string,
  email,
  object,
  minLength,
});

const LoginSchema = c.object({
  email: c.string().email(),
  password: c.string().minLength(8),
});

Dajcie znać, czy to brzmi ciekawie. Wiem, że jest spotkanie 10.10, jeśli jest jeszcze miejsce, to chętnie wpadnę, a jak nie, to może następnym razem.

@SebastianPozoga
Copy link

Brzmi bardzo ciekawie. Ale na najbliższe spotkanie mamy komplet, więc prezentacja pójdzie na następne. Co ciekawe zebrały nam się już 3 prezentacje, więc nie będzie trzeba długo czekać :-)

@mieszkosabo
Copy link
Author

Fajnie, to czekam na info :)

@SebastianPozoga
Copy link

Cześć
Czy pasuje Ci termin 14.11.2023 na poprowadzenie prezentacji?

@mieszkosabo
Copy link
Author

Tak

@pawk3k
Copy link

pawk3k commented Nov 3, 2023

@mieszkosabo
Copy link
Author

@pawk3k Yep, talk będzie dotyczył tego jak połączyć "najlepsze z obu światów", czyli stworzyć libkę, która jest tree shakable jak valibot, ale jednocześnie ma nice, chainable API jak zod.

I oczywiście biblioteka do walidacji schemy, to tylko przykład dla ustalenia uwagi. Myślę, że technika ma więcej use caseów.

@naugtur
Copy link
Member

naugtur commented Nov 4, 2023

Chciałbym to zobaczyć. Będzie nagranie? 😅

@SebastianPozoga
Copy link

postaram się tematu przypilnować lepiej niż ostatnio :-)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants