meetjspl / poznan

Wszystkie organizacyjne sprawy Meet.js Poznań
69 stars 1 forks source link

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

Open mieszkosabo opened 1 year ago

mieszkosabo commented 1 year ago

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 commented 1 year ago

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 commented 1 year ago

Fajnie, to czekam na info :)

SebastianPozoga commented 1 year ago

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

mieszkosabo commented 1 year ago

Tak

pawk3k commented 1 year ago

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

mieszkosabo commented 1 year ago

@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 commented 12 months ago

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

SebastianPozoga commented 12 months ago

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