poznan icon indicating copy to clipboard operation
poznan copied to clipboard

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

Open mieszkosabo opened this issue 1 year ago • 8 comments

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.

mieszkosabo avatar Sep 19 '23 14:09 mieszkosabo

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ć :-)

SebastianPozoga avatar Sep 19 '23 17:09 SebastianPozoga

Fajnie, to czekam na info :)

mieszkosabo avatar Sep 19 '23 18:09 mieszkosabo

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

SebastianPozoga avatar Oct 06 '23 08:10 SebastianPozoga

Tak

mieszkosabo avatar Oct 06 '23 10:10 mieszkosabo

https://github.com/fabian-hiller/valibot

pawk3k avatar Nov 03 '23 16:11 pawk3k

@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.

mieszkosabo avatar Nov 03 '23 18:11 mieszkosabo

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

naugtur avatar Nov 04 '23 11:11 naugtur

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

SebastianPozoga avatar Nov 04 '23 17:11 SebastianPozoga