Vybrané projekty / 08—08
Čtyři veřejné repozitáře; keepline a Ultimate Widget se udržují
Open source
Čtyři malé nástroje pro problémy, které se pořád vracejí.
- npm
- GitHub
- macOS
import { createSocket, exponentialBackoff } from 'keepline'
const line = createSocket({
url,
heartbeat: { message: ping },
reconnect: { backoff: exponentialBackoff({ jitter: 'equal' }) },
schema: serverMessage,
onEvent: observe,
})
const releaseOrders = line.subscription({
subscribe: { type: 'subscribe', topic: 'orders' },
unsubscribe: { type: 'unsubscribe', topic: 'orders' },
})- 01 / Připojeno
- 02 / Síť vypadla
- 03 / Opakování s backoffem
- 04 / Obnoveno · odběry přehrány
01 / Příběh
Co muselo fungovat.
WebSocketové spojení není request. Je to věc, která ve tři ráno tiše umře na hotelové wi-fi a vrátí se rozbitá. keepline je přesně ta vrstva, napsaná jednou místo počtvrté: obnova spojení s jitterovaným backoffem, aby tisíc klientů neušlapalo server ve chvíli, kdy se zvedne; heartbeaty, které odhalí polootevřený socket, o kterém operační systém pořád tvrdí, že je v pořádku; validace schématu na hranici, aby byl vadný rámec typovanou chybou, a ne pádem o tři komponenty dál; a události, které se dají doopravdy vystavit na dashboard.
Jádro nemá žádné runtime závislosti a dodává ESM i CJS build. Volitelné bindingy pro React 18+ stojí vedle něj, takže jádro zůstává bez frameworku.
Vedle toho stojí Ultimate Widget: šest nativních nástrojů pro macOS v jedné klidné Swift aplikaci — launcher, historie schránky, správa oken, režim proti uspání, odpočet schůzek a průzkumník disku — plus dva publikované scroll-to hooky pro Framer Motion a react-spring.
02 / Důkazy
Co se dá ověřit.
- 010 runtime závislostí jádra
- 026 nativních nástrojů pro macOS
- 032 publikované scroll-to hooky
03 / Dodání
Podoba, která šla ven.
- Role
- Autor — všechny čtyři repozitáře
- Platformy
- npm / GitHub / macOS
- Aktuální stav
- Čtyři veřejné repozitáře; keepline a Ultimate Widget se udržují
- Postaveno s
- TypeScript / Swift 6 / AppKit + SwiftUI / ESM / React bindingy / Nula runtime závislostí
Máte něco, co musí fungovat?
Začít jednou větou