Sign in

David Sherret

@dsherret.dev
1.5K followers 80 following 153 posts

Software developer. Prev @deno.land. Working on ts-morph, dprint, and more (github.com/dsherret)

PostsRepliesMedia
David Sherret @dsherret.dev · 05/09/2026
I feel like it’s the same problem with file paths? You can get if a dir from the entry kind (then convert to url with trailing slash) and user provided info usually has context on what it is (ex. configFilePath, rootDirPath). In Deno we did urls everywhere because modules could be remote or local.
010
David Sherret @dsherret.dev · 05/09/2026
I always do this too github.com/dsherret/path (obviously slight perf implications compared to just a string. ts-morph follows something more similar to ts 6’s ts.Path)
github.com
GitHub - dsherret/path: Path class for JavaScript.
Path class for JavaScript. Contribute to dsherret/path development by creating an account on GitHub.
030
David Sherret @dsherret.dev · 05/09/2026
Simple rule to follow is if there’s a trailing slash then it’s a directory and relative paths are from it. Otherwise it’s a file and the relative path is from the parent (it’s how the rust url crate works, but I know not everything works that way).
110
Reposted by David Sherret
snek @snek.dev · 01/09/2026
bit of an update, it's been a few months now since I parted ways with Deno, and I'm starting to actively look for jobs again! I'm pretty good with big systems, compilers, and embedded. especially if rust or elixir are involved :)
33811
David Sherret @dsherret.dev · 30/07/2026
Basically a Wasm build of the typescript-go repo. Just made some updates to it now so it's all sync so it works in the console. I used AI or else this would have taken many weekends otherwise. I'm also slowly working on ts-morph using ts 7 atm.
170
David Sherret @dsherret.dev · 30/07/2026
Also, support for multiple files was added by Gerrit Birkeland.
Example showing multiple tabs representing multiple files on ts-ast-viewer.com
030
David Sherret @dsherret.dev · 30/07/2026
ts-ast-viewer.com now supports TypeScript 7 along with nightly builds of the typescript-go repository. It's not selected by default, but available in the dropdown.
Dropdown menu showing a TypeScript 7.0.2 selection on ts-ast-viewer.com
2295
David Sherret @dsherret.dev · 20/07/2026
Oh, I see fresh is in its own github org now.
051
David Sherret @dsherret.dev · 20/07/2026
Congrats!
010
David Sherret @dsherret.dev · 30/06/2026
Yeah, when the version isn't there then it does node resolution and you only need to maintain the versions in a package.json When a version is specified, dprint will read the npmrc by default (I utilized some deno crates) so that should work, but let me know if not.
000
David Sherret @dsherret.dev · 30/06/2026
Oh, I didn't realize there was a PR open to vendor them. Good you don't have to merge that lol. Things like firewall rules was one of the motivations behind this. Also, I had people in Iran complain it wasn't accessible, but usually they already have something setup to access npm.
000
David Sherret @dsherret.dev · 30/06/2026
Btw, of you specify any dependencies, dprint won't download them (only the initial package) because all it's interested in is the plugin.wasm file.
100
David Sherret @dsherret.dev · 30/06/2026
You could make the package multi-purpose maybe. I don't think there's a gofumpt formatter on npm. For example, place a plugin.wasm file for the dprint plugin, and then have an index.js with an api for formatting with gofumpt via that Wasm file in JavaScript.
200
David Sherret @dsherret.dev · 30/06/2026
Release notes outlining all the new features. github.com/dprint/dprin...
github.com
Release 0.55.0 · dprint/dprint
dprint is a pluggable and configurable code formatting platform that unifies all your formatters. This substantial release adds npm specifier plugins, brings dprint to many more CPU architectures, ...
100
David Sherret @dsherret.dev · 30/06/2026
Blog post explaining why npm formatting plugins will be recommended in the future. dsherret.dev/posts/dprint...
dsherret.dev
dprint 0.55: npm specifiers and node resolution
The gradual move to recommend plugins on npm.
100
David Sherret @dsherret.dev · 30/06/2026
Released dprint 0.55—a pluggable and configurable code formatting platform that unifies all your formatters behind a single command. This substantial release lets you specify formatting plugins from npm.
A dprint.json configuration file with npm specifiers in the plugins array.
2101
David Sherret @dsherret.dev · 26/05/2026
I was wondering that, but one of the issues I reported was that https dependencies didn’t store a checksum in the lock file. It would be possible to serve a different package to someone running bun install from a data centre ip with a bun user agent for example (ex. on deployment)
020
David Sherret @dsherret.dev · 26/05/2026
A billion dollar company not doing CVEs ever and not responding to a documented security process is worth calling out on social media so people are aware. I don’t see how my interpretation was uncharitable. They need to get their act together.
330
David Sherret @dsherret.dev · 26/05/2026
People should be aware of the practices of the critical infrastructure they rely on. pnpm is maintained by volunteers, but bun has a billion dollar company behind them and was acquired for many millions. Zero published CVEs is inexcusable and irresponsible.
140
David Sherret @dsherret.dev · 25/05/2026
Reporting the same security issue to pnpm vs bun: pnpm acknowledged it quickly, shipped a fix, backported it, and published an advisory. bun never acknowledged, silently fixed this and another issue I reported, has not published advisories. One takes security more seriously.
Prompt response from pnpm. Fixed and published.No response on github from bun.No response from bun on email.
41116
David Sherret @dsherret.dev · 16/05/2026
Thanks!
020
Reposted by David Sherret
conputer dipshit @davidcrespo.bsky.social · 16/05/2026
beautiful new docs site at dax.land for @dsherret.bsky.social's dax, one of my very favorite tools. I write nearly all my scripts in TypeScript because of it
import $ from "dax";

$.logStep("Building");
await $`deno task build`;

const env = await $.select({
  message: "Where to?",
  options: ["staging", "production"],
});

const branch = await $`git rev-parse --abbrev-ref HEAD`.text();
$.logLight(`Deploying ${branch} → ${env.value}`);

await $.all([
  $`deno task deploy ${env.value} api`,
  $`deno task deploy ${env.value} web`,
]);

$.logStep("Deployed");
4192
David Sherret @dsherret.dev · 16/05/2026
I never noticed that similarity lol. It's my cat (project initially called "ax"... name too short for jsr → added a d for Deno because it was initially built on Deno APIs... now my cat's name). @hashrock.bsky.social designed it when we used to work together at Deno github.com/dsherret/dax...
github.com
chore: add logo by hashrock · Pull Request #26 · dsherret/dax
020
David Sherret @dsherret.dev · 04/05/2026
Also, the cross-platform shell has been extracted to a dedicated JSR package jsr.io/@david/shell
jsr.io
@david/shell - JSR
@david/shell on JSR: Cross-platform shell for Deno and Node.js inspired by zx.
050
David Sherret @dsherret.dev · 04/05/2026
Or alternatively, use the new `$.all` function.
110
David Sherret @dsherret.dev · 04/05/2026
It works well with progress bars, selection, and other features that dax provides.
120
David Sherret @dsherret.dev · 04/05/2026
The latest version of dax (dax.land) can show a scrolling view of the last N lines when executing a command. This is especially useful when running multiple commands in parallel.
2141
David Sherret @dsherret.dev · 23/04/2026
Also added an `npx gagen --pull-versions` command to sync the version constraints in the TypeScript files with the .yml files after dependabot updates them. More details, including limitations, here: github.com/dsherret/gag...
github.com
Release 0.5.0 · dsherret/gagen
What's Changed feat: store pin comment inline by @dsherret in #37 feat: add npx gagen --pull-versions by @dsherret in #38 Inline pin comments (#37) The pin lockfile moved from a trailing # gagen:...
040
David Sherret @dsherret.dev · 23/04/2026
Released gagen 0.5, which simplifies the output to match dependabot.
160
David Sherret @dsherret.dev · 02/04/2026
For how we used this in Deno's repo, see this blog post david.deno.dev/posts/gagen/
david.deno.dev
gagen - Writing complex GitHub Action workflow files
Speeding up the Deno CI with the help of code generated workflow files.
0100
David Sherret @dsherret.dev · 02/04/2026
I've published a library here that also has tooling around this github.com/dsherret/gagen
github.com
GitHub - dsherret/gagen: Generate complex GitHub Actions YAML files using a declarative API.
Generate complex GitHub Actions YAML files using a declarative API. - dsherret/gagen
1182
David Sherret @dsherret.dev · 02/04/2026
I've found maintaining GitHub Actions workflow files is much easier when it's generated from Typescript. The latest realization is that the output yaml file can act like a lockfile. So I maintain `actions/checkout@v6`, but the generated output gets locked to a hash.
1492
David Sherret @dsherret.dev · 26/03/2026
I'm also working on support for plugins distributed on npm and support for using node resolution to resolve plugins. This should help users who have IT/compliance constraints.
000
David Sherret @dsherret.dev · 26/03/2026
For the official process plugins, I was unfortunately using absolute URLs in the plugin manifests, so you'll need to run `dprint config update` to get better reliability for those.
100
David Sherret @dsherret.dev · 26/03/2026
Due to terrible GitHub availability, dprint formatting plugins on plugins.dprint.dev are now served directly instead of redirecting to GH assets. Additionally, the plugins are now cached indefinitely by the server, which eliminates the risk of a repo disappearing.
plugins.dprint.dev
Plugins - dprint
Latest plugin versions for dprint.
190
David Sherret @dsherret.dev · 20/03/2026
Also released new versions of jsonc-morph (github.com/dsherret/jso...) for JavaScript, dprint-plugin-json, and dprint-plugin-jupyter, so those projects include these performance improvements.
github.com
GitHub - dsherret/jsonc-morph: Parse and edit JSONC in JavaScript.
Parse and edit JSONC in JavaScript. Contribute to dsherret/jsonc-morph development by creating an account on GitHub.
130
David Sherret @dsherret.dev · 20/03/2026
Released jsonc-parser 0.32, which allows deserializing via serde to a concrete type. It's also much faster.
160
Reposted by David Sherret
Yoshiya Hinosawa @kt3k.org · 19/03/2026
Last Monday was my last day at Deno. It was a privilege to work with such talented colleagues. The standard library has been my passion for years. I've reviewed all PRs since 2023 and learned a lot from them. Proud to see it often mentioned as one of the best parts of Deno.
1452
Reposted by David Sherret
Nayeem Rahman @nayeemrmn.bsky.social · 18/03/2026
My last day at Deno was this week. I really enjoyed maintaining the language server and working with the CLI team, and I'm sure they will keep building great things. Looking for new work in the space of native-backed JS/TS tooling, or something new!
1432
Reposted by David Sherret
William Perron @wperron.bsky.social · 17/03/2026
Yesterday was my last day at Deno. I'm sad to leave but I'm proud of everything the team and I were able to build. I'm glad I had the opportunity to work with some of the most talented people I've met. I wish them all the best! I'm actively looking for my next challenge, my DMs are open!
07614
Reposted by David Sherret
Jo Franchetti @thisisjofrank.bsky.social · 18/03/2026
Today is my last day with the Deno team 🦕💖💔 I know they're gonna keep making awesome things. But now *I* need to make awesome things for someone else! If you're looking for a DevRel with a JS focus and extra sparkle, get in touch!
419863
Reposted by David Sherret
Phil Hawksworth @philhawksworth.dev · 17/03/2026
Marvin is another lovely talented person I had the pleasure to work with who you should try and snag for your company if you can!
1192
David Sherret @dsherret.dev · 17/03/2026
There's so many cool things under Deno's hood that we haven't talked about so I'll also take some time to blog or post about them soon.
0120
David Sherret @dsherret.dev · 17/03/2026
It's been an incredible privilege to have been paid to spend these last five years working with extremely talented colleagues designing, implementing, and refactoring a large portion of Deno.
1131
David Sherret @dsherret.dev · 17/03/2026
Yesterday was my last day at Deno. I'm going to transition from two days a week to full time on a business I cofounded in the auto glass industry. My plan is to increase my contributions to my personal open source projects and keep contributing features/fixes to Deno that I need or want.
4954
Reposted by David Sherret
Luca Casonato 🏳️‍🌈 @lcas.dev · 17/03/2026
John is an absolutely incredible UX design expert. If you are looking for someone who can come up with, implement, and test your UX flows, you should hire him.
0394
Reposted by David Sherret
John Donmoyer @johndonmoyer.com · 17/03/2026
Yesterday I updated my bio as I'm no longer with the #1 🦕-themed javascript company. I'm sad to go but excited to see what's next. I've spent the last few years designing exclusively in code, building agent skills, working on command-line tools, and crafting dev docs experiences. Hit me up.
57811
Reposted by David Sherret
Jake Archibald @jakearchibald.com · 17/03/2026
Snap him up
14411
David Sherret @dsherret.dev · 12/03/2026
Also merged a perf improvement to the sharp pkg's install script. Once released, it will make all pkg managers faster installing Next.js with lifecycle scripts when brew is installed (except Bun because it overrides the maintainer's decision and always skips the install script)
020
Reposted by David Sherret
Luca Casonato 🏳️‍🌈 @lcas.dev · 27/02/2026
I've wanted this for so long - and @kettmeir.dev has finally implemented it! View changes in the public API of packages between versions: - what methods were added, changed (type signature), or removed In the future we could even indicate if you are about to publish a breaking change
0252