{"adoption": {"forks": 539, "observed_at": "2026-08-28T04:10:28.826704+00:00", "stars": 9197}, "canonical_url": "https://ross.abutalabs.com/products/jsdiff", "card": {"archived": false, "artifact_type": "library", "description": "A javascript text differencing implementation.", "domain": ["developer-tools", "text-editors"], "enriched": true, "function": ["parser", "developer-tools"], "health_score": 80, "homepage": null, "language": "JavaScript", "license": "BSD-3-Clause", "license_family": "permissive", "maturity": "stable", "member_repos": ["kpdecker/jsdiff"], "name": "kpdecker/jsdiff", "platform": ["browser", "cross-platform"], "pushed_at": "2026-08-24T09:40:34+00:00", "repo": "kpdecker/jsdiff", "stars": 9197, "tags": ["text-diff", "diff-algorithm", "myers-diff", "patch-generation", "javascript", "algorithms", "nodejs"], "topics": [], "urls": [], "use_cases": ["compare two strings and show what changed", "generate unified diff patches in javascript", "highlight word-level changes between two versions of text", "diff two files line by line in node", "build a text comparison or revision history feature", "compute character-level differences for inline text highlighting"], "what_it_is": "jsdiff is a JavaScript library that computes differences between two texts using the Myers O(ND) diff algorithm. It provides functions to diff text at character, word, line, and sentence granularity, and can generate unified diff patches.", "when_to_avoid": ["you need to diff structured data like JSON trees or ASTs rather than plain text", "you need binary file diffing or three-way merge tooling", "you are outside the JavaScript ecosystem"], "when_to_choose": ["you need text diffing in JavaScript or TypeScript in Node or the browser", "you want change objects or unified patch output from comparing two texts", "you need configurable tokenization such as case-insensitive or word-level diffs"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/jsdiff", "repo": "kpdecker/jsdiff", "role": "main", "score": 77}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:10:28.826704+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:23:19.022314+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fc27dca41a01a31f6899cfb86033e8da72c16f69c6256f35a25b155ac46e9aa9", "fetched_at": "2026-08-28T04:10:28.826704+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kpdecker/jsdiff"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:10:28.826704+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:23:19.022314+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fc27dca41a01a31f6899cfb86033e8da72c16f69c6256f35a25b155ac46e9aa9", "fetched_at": "2026-08-28T04:10:28.826704+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kpdecker/jsdiff"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:23:19.022314+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fc27dca41a01a31f6899cfb86033e8da72c16f69c6256f35a25b155ac46e9aa9", "fetched_at": "2026-08-28T04:10:28.826704+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kpdecker/jsdiff"}], "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:10:28.826704+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:10:28.826704+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:10:28.826704+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:23:19.022314+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fc27dca41a01a31f6899cfb86033e8da72c16f69c6256f35a25b155ac46e9aa9", "fetched_at": "2026-08-28T04:10:28.826704+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kpdecker/jsdiff"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:10:28.826704+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:10:28.826704+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:23:19.022314+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fc27dca41a01a31f6899cfb86033e8da72c16f69c6256f35a25b155ac46e9aa9", "fetched_at": "2026-08-28T04:10:28.826704+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kpdecker/jsdiff"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:10:28.826704+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:10:28.826704+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:10:28.826704+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:23:19.022314+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fc27dca41a01a31f6899cfb86033e8da72c16f69c6256f35a25b155ac46e9aa9", "fetched_at": "2026-08-28T04:10:28.826704+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kpdecker/jsdiff"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:10:28.826704+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:10:28.826704+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:23:19.022314+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fc27dca41a01a31f6899cfb86033e8da72c16f69c6256f35a25b155ac46e9aa9", "fetched_at": "2026-08-28T04:10:28.826704+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kpdecker/jsdiff"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:23:19.022314+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fc27dca41a01a31f6899cfb86033e8da72c16f69c6256f35a25b155ac46e9aa9", "fetched_at": "2026-08-28T04:10:28.826704+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kpdecker/jsdiff"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:23:19.022314+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fc27dca41a01a31f6899cfb86033e8da72c16f69c6256f35a25b155ac46e9aa9", "fetched_at": "2026-08-28T04:10:28.826704+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kpdecker/jsdiff"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:23:19.022314+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fc27dca41a01a31f6899cfb86033e8da72c16f69c6256f35a25b155ac46e9aa9", "fetched_at": "2026-08-28T04:10:28.826704+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kpdecker/jsdiff"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 5636, "days_push": 9, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 77, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}