Repository navigation
Package text: say what each package does in the words people search for - #15
Merged
Merged
Conversation
Developers search npm with words such as user agent parser, device detection, and IP geolocation. The descriptions of the six Device Detection and IP Intelligence packages now say what each package does in those words, and the keywords add the matching terms. Existing keywords that are still true are kept, and keywords naming other companies' products are removed. Both package.json and remote_package.json change, because ci/build-package.ps1 publishes remote_package.json and the two files should match. Only the description and keywords fields change, and no version number moves.
People searching npm for WURFL, DeviceAtlas, MaxMind, or ipinfo should find these packages too. The keywords naming those products are restored exactly as they were, and each description now ends with the products the package is an alternative to. Only the description and keywords lines change, and no version number moves.
The Device Detection descriptions now say "An alternative to UAParser.js, DeviceAtlas, and WURFL." The 51Degrees fork is called 51Degrees UAParser, so the bare name could read as our own package. Only the description line changes, and no version number moves.
This was referenced Nov 4, 2026
Merged
Merged
jwrosewell
marked this pull request as ready for review
November 13, 2026 19:08
This was referenced Nov 13, 2026
Draft
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What changed and why
Developers find packages on npm by searching for the job they need done, with words such as user agent parser, device detection, IP geolocation, and geoip. The six main Device Detection and IP Intelligence packages described themselves mostly in terms of the 51Degrees Pipeline API, so those searches matched them poorly. This pull request rewrites the
descriptionandkeywordsof each package so they say what the package does in the words people search for.user-agent-parser,client-hints,ip-geolocation, andip-to-country. Existing keywords are kept, including the names of other products (WURFLandDeviceAtlason the Device Detection packages,MaxMindandipinfoon the IP Intelligence packages), so that people searching npm for those products find these packages. The first commit removed them and the second commit puts them back exactly as they were.package.jsonandremote_package.jsonchange for each package. ci/build-package.ps1 movesremote_package.jsonoverpackage.jsonbefore it packs, soremote_package.jsonholds the text that npm shows. The two descriptions had drifted apart and now match.descriptionandkeywordsfields change. No other field, no version number, and no lock file is touched.Before and after
The before text is what npm shows today for the latest version of each package (read from
https://registry.npmjs.org/<name>/latest), which matchesremote_package.jsonon main.fiftyone.devicedetection
remote_package.jsonpackage.jsonremote_package.json51degrees,device detection,user-agent,client hints,browser,os,device,cpu,mobile,phone,tablet,tv,bot,crawler,detect,WURFL,DeviceAtlas51degrees,device-detection,user-agent,user-agent-parser,client-hints,browser-detection,mobile-detection,crawler-detection,device detection,client hints,browser,os,device,cpu,mobile,phone,tablet,tv,bot,crawler,detect,WURFL,DeviceAtlasfiftyone.devicedetection.cloud
remote_package.jsonpackage.jsonremote_package.json51degrees,device detection,user-agent,client hints,browser,os,device,cpu,mobile,phone,tablet,tv,bot,crawler,cloud,WURFL,DeviceAtlas51degrees,device-detection,user-agent,user-agent-parser,client-hints,browser-detection,mobile-detection,crawler-detection,device detection,client hints,browser,os,device,cpu,mobile,phone,tablet,tv,bot,crawler,cloud,WURFL,DeviceAtlasfiftyone.devicedetection.onpremise
remote_package.jsonpackage.jsonremote_package.json51degrees,device detection,user-agent,client hints,browser,os,device,cpu,mobile,phone,tablet,tv,bot,crawler,WURFL,DeviceAtlas51degrees,device-detection,user-agent,user-agent-parser,client-hints,browser-detection,mobile-detection,crawler-detection,device detection,client hints,browser,os,device,cpu,mobile,phone,tablet,tv,bot,crawler,WURFL,DeviceAtlasfiftyone.ipintelligence
remote_package.jsonpackage.jsonremote_package.json51degrees,ip intelligence,ip,geolocation,geoip,network,asn,vpn,proxy,tor,hosting,location,country,MaxMind,ipinfo51degrees,ip-intelligence,ip-geolocation,geoip,ip-lookup,asn,ip-to-country,ip intelligence,ip,geolocation,network,vpn,proxy,tor,hosting,location,country,MaxMind,ipinfofiftyone.ipintelligence.cloud
remote_package.jsonpackage.jsonremote_package.json51degrees,ip intelligence,ip,geolocation,geoip,network,asn,vpn,proxy,tor,hosting,location,country,MaxMind,ipinfo51degrees,ip-intelligence,ip-geolocation,geoip,ip-lookup,asn,ip-to-country,ip intelligence,ip,geolocation,network,vpn,proxy,tor,hosting,location,country,MaxMind,ipinfofiftyone.ipintelligence.onpremise
remote_package.jsonpackage.jsonremote_package.json51degrees,ip intelligence,ip,geolocation,geoip,network,asn,vpn,proxy,tor,hosting,location,country,MaxMind,ipinfo51degrees,ip-intelligence,ip-geolocation,geoip,ip-lookup,asn,ip-to-country,ip intelligence,ip,geolocation,network,vpn,proxy,tor,hosting,location,country,MaxMind,ipinfoHow it was checked
jsonmodule.descriptionandkeywordsis identical, in the same key order.git diffshows 14 changed lines in each file for the first commit, and for the second commit only the description line, the comma after the last keyword, and the two restored keywords in each file, and for the third commit only the description line of each Device Detection file, andgit ls-files --eolshows the files still use LF line endings in the repository.resourceKeyand an on-premise pipeline when givendataFile. The cloud builders take aresourceKey. The Device Detection getting started examples use the User-Agent and User-Agent Client Hints, and the metadata example names Crawler as a component alongside Hardware, Software Platform, and Browser. The IP Intelligence examples read country, town, latitude, longitude, and registered name, and the metrics example listsConnectionType.rcat 24592ac, with no conflict, so the comparison withrcis still the 12 manifests and only theirdescriptionandkeywords.Build
Full build 43476815280 on the head 80a833b passed. All seven
Setting 'PullRequestSha'lines are 80a833b, and each of the six Ubuntu, Ubuntu ARM and Windows jobs on Node 22 and 24 ran 1,355 unit tests passed with 2 skipped, and 132 integration tests passed with 4 skipped. macOS was left out of this draft's full build under the 9 November decision. The rc head is built with macOS before it merges into main.Versions
No version number changes. The
versionfield in each manifest stays1.0.0, because ci/build-package.ps1 sets the published version withnpm versionwhen it packs. npm shows the new text once the next version of each package is published.With the per-package release plan in #37, a change only to
descriptionandkeywordsreleases nothing, so npm shows the new text once each package is next released for another reason. All six packages here have code changes onrcsince 4.5.102, so the next release carries the new text.