{"id":15010568,"url":"https://github.com/nodejs/gzemnid","last_synced_at":"2025-10-19T22:30:52.893Z","repository":{"id":57259901,"uuid":"51015856","full_name":"nodejs/Gzemnid","owner":"nodejs","description":"An npm beholder that deceives you","archived":false,"fork":false,"pushed_at":"2024-12-21T09:34:26.000Z","size":215,"stargazers_count":33,"open_issues_count":12,"forks_count":17,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-09-24T00:35:31.776Z","etag":null,"topics":["javascript","node","nodejs","npm"],"latest_commit_sha":null,"homepage":"https://gzemnid.nodejs.org/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nodejs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":"nodejs","open_collective":"nodejs"}},"created_at":"2016-02-03T17:07:02.000Z","updated_at":"2025-06-14T01:26:32.000Z","dependencies_parsed_at":"2025-05-26T02:22:31.709Z","dependency_job_id":"3026228b-17c2-444d-ba9b-3adfbb9b6c26","html_url":"https://github.com/nodejs/Gzemnid","commit_stats":null,"previous_names":["chalker/gzemnid"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/nodejs/Gzemnid","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nodejs%2FGzemnid","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nodejs%2FGzemnid/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nodejs%2FGzemnid/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nodejs%2FGzemnid/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nodejs","download_url":"https://codeload.github.com/nodejs/Gzemnid/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nodejs%2FGzemnid/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279927564,"owners_count":26245503,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-19T02:00:07.647Z","response_time":64,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["javascript","node","nodejs","npm"],"created_at":"2024-09-24T19:34:46.150Z","updated_at":"2025-10-19T22:30:52.623Z","avatar_url":"https://github.com/nodejs.png","language":"JavaScript","funding_links":["https://github.com/sponsors/nodejs","https://opencollective.com/nodejs"],"categories":[],"sub_categories":[],"readme":"# Gzemnid\n\nNotice: some commands might require `--max-old-space-size=2000` or above.\n\n## Using pre-built datasets\n\nSee documentation on [Using pre-built datasets](/doc/Using_pre-built_datasets.md) page.\n\n## Data structures\n\nAll data files are stored inside the `./pool/` dir by default.\n\nSee documentation on [Data structures](/doc/Data_structures.md) page.\n\n## Commands\n\nThe main script is invoked as `gzemnid command [subcommand]` (or `./gzemnid.js command [subcommand]`),\nwhere `[subcommand]` is optional.\n\nHere is the list of the current commands:\n  * `fetch` — builds `byField.info.json`.\n    _Should take about 2 minutes._\n    * `fetch run byField.json` — builds `byField.info.json` locally without network connection,\n      but you need to download `byField.json` manually from the registry to run that.\n  * `stats` — runs subcommand `rebuild`.\n    * `stats rebuild` — rebuilds `stats.json`, downloading stats for all packages present in\n      `byField.info.json`. _Should take about 25 minutes._\n    * `stats update` — updates `stats.json` for only newly added packages, keeping the numbers for\n      already present packages.\n  * `meta` — builds `meta/` directory, downloading meta info for all packages present in\n    `byField.info.json`. Outdated files that were present in the `meta/` directory are moved to\n    `meta.old/`.\n  * `depsdb` — runs subcommands `plain`, `resolved`, `nested`, `stats`,\n    * `depsdb plain` — builds `deps/deps.json`. Requires `meta/` dir contents.\n    * `depsdb resolved` — builds `deps/deps-resolved.json`. Requires `deps/deps.json`.\n    * `depsdb nested` — builds `deps/deps-nested.json`.\n      Requires `stats.json` and `deps/deps-resolved.json`.\n      _Should take about 6 minutes._\n    * `depsdb stats` — builds `deps/deps-nested.txt`.\n      Requires `stats.json` and `deps/deps-nested.json`.\n      _Should take about 30 seconds._\n  * `packages` — builds `current/` directory, downloading `latest` versions for all packages present\n    in `byField.info.json`. Outdated files that were present in the `current/` directory are moved\n    to `outdated/`.\n  * `extract` — runs subcommands `partials`, `totals`,\n    * `extract partials` —\n    * `extract totals` —\n  * `code search {regex}` — performs a code search over a specified regular expression using the\n    pre-built dataset.\n  * `ast execute {file.js}` — performs an AST search using the pre-built dataset. Example script\n    is located in `examples/ast_status.js`, run with `gzemnid ast execute ./examples/ast_status.js`.\n  * `server` — starts the web server providing the search API endpoints.\n\nTimes are given for reference, could depend significantly on the internet connection speed and/or\nCPU speed, and increase over time with npm registry growth.\n\n## Server\n\n_TODO: document server._\n\nStarted via `gzemnid server`.\n\n## Deception\n\nNote: think twice before relying on the data obtained from Gzemnid or using it to decide on something.\n\nCode search has both false negatives and false positives — some files are ignored, some files are unused, and some lines could be in a middle of a comment block. Also, your regexps are never ideal.\n\nAST tree also ignores a list of excluded files and directories and minified code and includes unused code and files if those are present in the package for some reason.\n\nDownloads/month are not equal to popularity, and you can't see which version is being used.\n\nCode and AST search, among other things, takes only `latest` released package versions into an account. That could be significantly different from `master`, beta branches, also older versions could be much more popular that `latest`.\n\nAll datasets get out of date the moment you build them.\n\nScoped packages are ignored completely.\n\nGzemnid deceives you, keep that in mind.\nBut it's still better than nothing.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnodejs%2Fgzemnid","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnodejs%2Fgzemnid","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnodejs%2Fgzemnid/lists"}