# JS Ledger > JS Ledger examines JavaScript, TypeScript, and the runtimes, frameworks, and tooling behind modern web applications. - Language: en - Full text: https://jsledger.com/llms-full.txt - Feed: https://jsledger.com/rss.xml ## Posts - [Reading a Lockfile: Supply Chain in Practice](https://jsledger.com/blog/reading-a-lockfile/) — 2026-08-26 — What package-lock.json actually records, what its integrity hashes do and do not prove, and where the real install-time risk sits. (Markdown: https://jsledger.com/blog/reading-a-lockfile.md) - [Type-Level Narrowing: How TypeScript Decides What You Meant](https://jsledger.com/blog/type-level-narrowing-in-typescript/) — 2026-08-19 — Control flow analysis is a graph walk over your code. Knowing what widens a type again explains most of the errors that look wrong. (Markdown: https://jsledger.com/blog/type-level-narrowing-in-typescript.md) - [The Event Loop You Think You Know](https://jsledger.com/blog/the-event-loop-you-think-you-know/) — 2026-08-12 — Microtasks, rendering opportunities and starvation — what the loop actually does between your callbacks, in the browser and in Node. (Markdown: https://jsledger.com/blog/the-event-loop-you-think-you-know.md) - [What Actually Happens When Vite Serves a Module](https://jsledger.com/blog/what-happens-when-vite-serves-a-module/) — 2026-08-04 — A walk through one request to a Vite dev server: resolution, the transform pipeline, import rewriting, pre-bundling, and why production differs. (Markdown: https://jsledger.com/blog/what-happens-when-vite-serves-a-module.md) - [Signals Are Not Magic: The Dependency Graph Underneath](https://jsledger.com/blog/signals-are-not-magic/) — 2026-07-22 — Every signals library is the same forty lines of bookkeeping. Here is what those lines do, and where the four popular implementations diverge. (Markdown: https://jsledger.com/blog/signals-are-not-magic.md) - [How V8 Decides to Optimize Your Function](https://jsledger.com/blog/how-v8-decides-to-optimize-your-function/) — 2026-07-09 — Two functions that look identical can run at very different speeds. The difference is usually shapes, inline caches, and a deoptimization you never saw. (Markdown: https://jsledger.com/blog/how-v8-decides-to-optimize-your-function.md) ## Pages - [About JS Ledger](https://jsledger.com/about/) — Who writes this site, what it covers, how it is built, and the standard every article on it has to meet. - [Terms of Use](https://jsledger.com/terms/) — The terms on which JS Ledger is published: what you may do with the articles and the code, and the limits of what is promised. - [Privacy Policy](https://jsledger.com/privacy/) — What JS Ledger processes when you read it, why, on what legal basis, and the rights you have under the GDPR. - [Cookie Policy](https://jsledger.com/cookies/) — JS Ledger sets no cookies. This page explains exactly what is stored on your device, why, and why no consent banner appears.