{"adoption": {"forks": 86, "observed_at": "2026-08-28T04:06:01.770678+00:00", "stars": 1981}, "canonical_url": "https://ross.abutalabs.com/products/wait-on", "card": {"archived": false, "artifact_type": "cli-tool", "description": "wait-on is a cross-platform command line utility and Node.js API which will wait for files, ports, sockets, and http(s) resources to become available", "domain": ["developer-tools"], "enriched": true, "function": ["cli", "developer-tools", "workflow-automation", "http-client"], "health_score": 96, "homepage": null, "language": "JavaScript", "license": "MIT", "license_family": "permissive", "maturity": "stable", "member_repos": ["jeffbski/wait-on"], "name": "jeffbski/wait-on", "platform": ["cli", "cross-platform", "windows"], "pushed_at": "2026-07-21T20:56:18+00:00", "repo": "jeffbski/wait-on", "stars": 1981, "tags": ["wait-for-resources", "port-waiting", "file-waiting", "tcp-sockets", "http-health-check", "npm-package", "reverse-mode", "service-readiness", "command-line", "devops", "automation", "nodejs", "linux", "macos"], "topics": [], "urls": [], "use_cases": ["wait for a dev server to start before running tests", "block a script until a file stops growing", "wait for a TCP port to be listening", "wait for an HTTP endpoint to return 2XX", "wait for a service to shut down before continuing", "sequence docker compose startup dependencies", "poll a health check endpoint in CI"], "what_it_is": "wait-on is a cross-platform CLI utility and Node.js API that waits for files, TCP ports, Unix sockets, and HTTP(S) resources to become available (or unavailable in reverse mode) before proceeding. It is commonly used to sequence commands in scripts and CI pipelines, such as waiting for a server to start before running tests.", "when_to_avoid": ["you need complex orchestration beyond simple resource readiness checks", "you want health checks with custom logic beyond HTTP 2XX status", "you are not in a Node.js-available environment", "you need service discovery or distributed coordination rather than local readiness polling"], "when_to_choose": ["you need to gate a command on files, ports, sockets, or HTTP endpoints becoming ready", "you want a simple cross-platform (Linux/macOS/Windows) wait utility with zero config", "you need both a CLI and a programmatic Node.js API", "you want reverse mode to wait for resources to disappear"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/wait-on", "repo": "jeffbski/wait-on", "role": "main", "score": 91}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:01.770678+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:03:58.294306+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "47ca4e3cfd17c9ce7eb6eaeddb0839697cbc7d76c2e078a0e3f2b9ea1961c1b5", "fetched_at": "2026-08-28T04:06:01.770678+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jeffbski/wait-on"}, {"content_hash": "45061720ef813b7fc274f537af53bdefeda63ae3c3f4c5e50763f96399d6e072", "fetched_at": "2026-08-29T10:43:43.988197+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/wait-on"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:01.770678+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:03:58.294306+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "47ca4e3cfd17c9ce7eb6eaeddb0839697cbc7d76c2e078a0e3f2b9ea1961c1b5", "fetched_at": "2026-08-28T04:06:01.770678+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jeffbski/wait-on"}, {"content_hash": "45061720ef813b7fc274f537af53bdefeda63ae3c3f4c5e50763f96399d6e072", "fetched_at": "2026-08-29T10:43:43.988197+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/wait-on"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:03:58.294306+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "47ca4e3cfd17c9ce7eb6eaeddb0839697cbc7d76c2e078a0e3f2b9ea1961c1b5", "fetched_at": "2026-08-28T04:06:01.770678+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jeffbski/wait-on"}, {"content_hash": "45061720ef813b7fc274f537af53bdefeda63ae3c3f4c5e50763f96399d6e072", "fetched_at": "2026-08-29T10:43:43.988197+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/wait-on"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:06:01.770678+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:01.770678+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:01.770678+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:03:58.294306+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "47ca4e3cfd17c9ce7eb6eaeddb0839697cbc7d76c2e078a0e3f2b9ea1961c1b5", "fetched_at": "2026-08-28T04:06:01.770678+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jeffbski/wait-on"}, {"content_hash": "45061720ef813b7fc274f537af53bdefeda63ae3c3f4c5e50763f96399d6e072", "fetched_at": "2026-08-29T10:43:43.988197+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/wait-on"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:01.770678+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:01.770678+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:03:58.294306+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "47ca4e3cfd17c9ce7eb6eaeddb0839697cbc7d76c2e078a0e3f2b9ea1961c1b5", "fetched_at": "2026-08-28T04:06:01.770678+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jeffbski/wait-on"}, {"content_hash": "45061720ef813b7fc274f537af53bdefeda63ae3c3f4c5e50763f96399d6e072", "fetched_at": "2026-08-29T10:43:43.988197+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/wait-on"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:01.770678+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:01.770678+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:01.770678+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:03:58.294306+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "47ca4e3cfd17c9ce7eb6eaeddb0839697cbc7d76c2e078a0e3f2b9ea1961c1b5", "fetched_at": "2026-08-28T04:06:01.770678+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jeffbski/wait-on"}, {"content_hash": "45061720ef813b7fc274f537af53bdefeda63ae3c3f4c5e50763f96399d6e072", "fetched_at": "2026-08-29T10:43:43.988197+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/wait-on"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:01.770678+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:01.770678+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:03:58.294306+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "47ca4e3cfd17c9ce7eb6eaeddb0839697cbc7d76c2e078a0e3f2b9ea1961c1b5", "fetched_at": "2026-08-28T04:06:01.770678+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jeffbski/wait-on"}, {"content_hash": "45061720ef813b7fc274f537af53bdefeda63ae3c3f4c5e50763f96399d6e072", "fetched_at": "2026-08-29T10:43:43.988197+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/wait-on"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:03:58.294306+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "47ca4e3cfd17c9ce7eb6eaeddb0839697cbc7d76c2e078a0e3f2b9ea1961c1b5", "fetched_at": "2026-08-28T04:06:01.770678+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jeffbski/wait-on"}, {"content_hash": "45061720ef813b7fc274f537af53bdefeda63ae3c3f4c5e50763f96399d6e072", "fetched_at": "2026-08-29T10:43:43.988197+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/wait-on"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:03:58.294306+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "47ca4e3cfd17c9ce7eb6eaeddb0839697cbc7d76c2e078a0e3f2b9ea1961c1b5", "fetched_at": "2026-08-28T04:06:01.770678+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jeffbski/wait-on"}, {"content_hash": "45061720ef813b7fc274f537af53bdefeda63ae3c3f4c5e50763f96399d6e072", "fetched_at": "2026-08-29T10:43:43.988197+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/wait-on"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:03:58.294306+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "47ca4e3cfd17c9ce7eb6eaeddb0839697cbc7d76c2e078a0e3f2b9ea1961c1b5", "fetched_at": "2026-08-28T04:06:01.770678+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jeffbski/wait-on"}, {"content_hash": "45061720ef813b7fc274f537af53bdefeda63ae3c3f4c5e50763f96399d6e072", "fetched_at": "2026-08-29T10:43:43.988197+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/wait-on"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 93, "longevity": 100, "rhythm": 82}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4059, "days_push": 43, "days_rel": 43, "gap_med": 50.0, "n_releases_24m": 13}, "score": 91, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}