Blog
Note tecniche su come TinyDI è stato davvero progettato e costruito — trade-off reali, vicoli ciechi reali, senza marketing.
Quello che il piano di rilascio non poteva prevedere: pubblicare per davvero
Il nome del pacchetto npm bloccato proprio al momento della pubblicazione, lo stallo tra OTP e CI che ne è seguito, e alcuni bug del docs-app rivelati solo da traffico reale (o da un browser vero).
Perché niente reflect-metadata
La scelta "explicit over magic" dietro TinyDI: cosa offre la DI basata su reflection, cosa costa, e perché abbiamo collegato le dipendenze a mano.
Progettare token type-safe senza generics espliciti
Come createToken
Rilevare le dipendenze circolari
Come TinyDI intercetta A -> B -> C -> A al momento della risoluzione con un semplice stack di percorso, e perché il formato del messaggio d'errore è stato progettato così.
Una gerarchia di errori, invece di throw new Error(...)
Perché TinyDI ha ContainerError, RegistrationError, ResolutionError e CircularDependencyError invece di un unico tipo di errore generico, e cosa ha davvero comportato questa decisione.
Cosa non abbiamo ancora costruito (e perché)
Lifetime scoped, child container, risoluzione asincrona e plugin non fanno parte di TinyDI oggi — un minimalismo deliberato, non una dimenticanza, e cosa servirebbe per aggiungere ciascuno.
Costruire un sito di documentazione senza framework
Perché questo sito è un generatore statico Node scritto a mano invece di 11ty/Astro/Next, e tre bug reali emersi solo aprendo un browser vero.
Preparare TinyDI per npm: package.json, exports map e tree-shaking
Cosa comporta davvero pubblicare una libreria ESM/CJS a dipendenze zero: una build dual-package con tsup, una exports map a doppia condizione, e una stranezza del build tool che non era compito nostro risolvere.