Live data from Hacker News

Which NPM package has the largest version number?

adamhl.dev

11–20 of 80 posts

Re: Which NPM package has the largest version number?

#11

> Time to fetch version data for each one of those packages: ~12 hours (yikes) The author could improve the batching in fetchAllPackageData by not waiting for all 50 ( BATCH_SIZE ) promises to resolve at once. I just published a package for proper promise batching last week: https://www.npmjs.com/package/promises-batched

What's the benefit of promises like this here?

Just spin up a loop of 50 call chains. When one completes you just do the next on next tick. It's like 3 lines of code. No libraries needed. Then you're always doing 50 at a time. You can still use await.

async work() { await thing(); nextTick(work); }

for(to 50) { work(); }

then maybe a separate timer to check how many tasks are active I guess.

Re: Which NPM package has the largest version number?

#12
post #11

> Time to fetch version data for each one of those packages: ~12 hours (yikes) The author could improve the batching in fetchAllPackageData by not waiting for all 50 ( BATCH_SIZE ) promises to resolve at once. I just published a package for proper promise batching last week: https://www.npmjs.com/package/promises-batched

What's the benefit of promises like this here? Just spin up a loop of 50 call chains. When one completes you just do the next on next tick. It's like 3 lines of code. No libraries needed. Then you're always doing 50 at a time. You can still use await. async work() { await thing(); nextTick(work); } for(to 50) { work(); } then maybe a separate timer to check how many tasks are active I guess.

Promise.all waits for all 50 promises to resolve, so if one of these promises takes 3s, while the other 49 are taking 0.5s, you're waisting 2.5s awaiting each batch.

The implementation is rather simple, but more than 3 LoC: https://github.com/whilenot-dev/promises-batched/blob/main/s...

Re: Which NPM package has the largest version number?

#13
post #5

The "winner" just had its 3000th release on GitHub, already a few patch versions past the version referenced in this article (which was published today): https://github.com/wppconnect-team/wa-version

Brief reminder/clarification that these tools are used to circumvent WhatsApp ToS, and that they are used to: 1- Spam 2- Scam 3- Avoid paying for Whatsapp API (which is the only form of monetization) And that the reason this thing gets so many updates is probably because of a mouse and cat game where Meta updates their software continuously to avoid these types of hacks and the maintainers do so as well, whether in a…

Considering the 18 billions price tag and the current mixing of user data between meta and WhatsApp I believe that meta has now revenue streams in mind than just the API pricing

Re: Which NPM package has the largest version number?

#14

Incidentally I once ran into a mature package that had lived in the 0.0.x lane forever and treated every release as a patch, racking up a huge version number, and I had to remind the maintainer that users depending with caret ranges won't get those updates automatically. (In semver caret ranges never change the leftmost non-zero digit; in 0.0.x that digit is the patch version, so ^0.0.123 is just a hard pin to 0.0.12…

Maybe that is intentional? Which package is it?

Re: Which NPM package has the largest version number?

#15
post #11

Earlier quoted context omitted.

What's the benefit of promises like this here? Just spin up a loop of 50 call chains. When one completes you just do the next on next tick. It's like 3 lines of code. No libraries needed. Then you're always doing 50 at a time. You can still use await. async work() { await thing(); nextTick(work); } for(to 50) { work(); } then maybe a separate timer to check how many tasks are active I guess.

Promise.all waits for all 50 promises to resolve, so if one of these promises takes 3s, while the other 49 are taking 0.5s, you're waisting 2.5s awaiting each batch. The implementation is rather simple, but more than 3 LoC: https://github.com/whilenot-dev/promises-batched/blob/main/s...

I know. My point is you can do better without a library.

Re: Which NPM package has the largest version number?

#16
post #14

Incidentally I once ran into a mature package that had lived in the 0.0.x lane forever and treated every release as a patch, racking up a huge version number, and I had to remind the maintainer that users depending with caret ranges won't get those updates automatically. (In semver caret ranges never change the leftmost non-zero digit; in 0.0.x that digit is the patch version, so ^0.0.123 is just a hard pin to 0.0.12…

Maybe that is intentional? Which package is it?

It's the type definitions for developing chrome extensions. They'd been incrementing in the 0.0.x lane for almost a decade and bumped it to 0.1.0 after I raised the issue, so I doubt it was intentional:

https://www.npmjs.com/package/@types/chrome?activeTab=versio...

Re: Which NPM package has the largest version number?

#20
For Python (or PyPI) this is easier, since their data is available on Google BigQuery [1], so you can just run

    SELECT * FROM `bigquery-public-data.pypi.distribution_metadata` ORDER BY length(version) DESC LIMIT 10
The winner is: https://pypi.org/project/elvisgogo/#history

The package with most versions still listed on PyPI is spanishconjugator [2], which consistently published ~240 releases per month between 2020 and 2024.

[1] https://console.cloud.google.com/bigquery?p=bigquery-public-...

[2] https://pypi.org/project/spanishconjugator/#history

Post reply on HN