Informe JSON sin procesar legible por máquina
{
"data": {
"repo": {
"topics": [
"ip-address",
"ipv4",
"ipv6",
"asn",
"cidr"
],
"is_fork": false,
"size_kb": 3185,
"has_wiki": true,
"homepage": "https://ip-num.github.io/ip-num/",
"languages": {
"JavaScript": 724,
"TypeScript": 388382
},
"pushed_at": "2026-07-19T09:48:37Z",
"created_at": "2017-08-20T16:12:44Z",
"owner_type": "Organization",
"updated_at": "2026-07-22T07:12:06Z",
"description": "A TypeScript/JavaScript library for working with ASN, IPv4, and IPv6 numbers. It provides representations of these internet protocol numbers with the ability to perform various IP related operations like parsing, validating etc. on them",
"is_archived": false,
"is_disabled": false,
"license_spdx": "MIT",
"default_branch": "master",
"license_spdx_raw": "MIT",
"primary_language": "TypeScript",
"significant_languages": [
"TypeScript"
]
},
"owner": {
"blog": null,
"name": null,
"type": "Organization",
"login": "ip-num",
"company": null,
"location": null,
"followers": 0,
"avatar_url": "https://avatars.githubusercontent.com/u/31667808?v=4",
"created_at": "2017-09-05T18:24:02Z",
"is_verified": null,
"public_repos": 1,
"account_age_days": 3244
},
"license": {
"state": "standard",
"spdx_id": "MIT",
"raw_spdx": "MIT",
"file_present": true,
"scorecard_found": true,
"profile_has_license": true
},
"activity": {
"releases": [
{
"tag": "v1.6.1",
"kind": "patch",
"published_at": "2026-07-19T09:48:55Z"
},
{
"tag": "v1.6.0",
"kind": "minor",
"published_at": "2026-07-19T08:38:35Z"
},
{
"tag": "v1.5.2",
"kind": "patch",
"published_at": "2025-06-08T21:59:48Z"
},
{
"tag": "v1.5.1",
"kind": "patch",
"published_at": "2023-03-12T14:58:02Z"
},
{
"tag": "v1.5.0",
"kind": "minor",
"published_at": "2022-12-02T13:52:15Z"
},
{
"tag": "v1.4.1",
"kind": "patch",
"published_at": "2022-09-03T18:43:06Z"
},
{
"tag": "v1.4.0",
"kind": "minor",
"published_at": "2022-04-16T05:38:16Z"
},
{
"tag": "v1.3.4",
"kind": "patch",
"published_at": "2021-12-23T00:24:15Z"
},
{
"tag": "v1.3.3",
"kind": "patch",
"published_at": "2021-08-15T21:17:08Z"
},
{
"tag": "v1.3.2",
"kind": "patch",
"published_at": "2021-05-09T06:51:03Z"
},
{
"tag": "v1.3.1",
"kind": "patch",
"published_at": "2021-02-17T20:04:42Z"
},
{
"tag": "v1.3.0",
"kind": "minor",
"published_at": "2021-01-06T14:07:16Z"
},
{
"tag": "v1.2.3",
"kind": "patch",
"published_at": "2020-07-08T20:38:07Z"
},
{
"tag": "v1.2.2",
"kind": "patch",
"published_at": "2020-01-11T16:28:30Z"
},
{
"tag": "v1.2.1",
"kind": "patch",
"published_at": "2019-05-20T16:56:30Z"
}
],
"recent_commits": [
{
"oid": "d566df2b2725fb571e43890b3cb604486e68ceee",
"body": null,
"is_bot": false,
"headline": "updating documentation and dist for release",
"author_name": "Dadepo Aderemi",
"author_login": "dadepo",
"committed_at": "2026-07-19T09:46:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fe8783ae582ce13566d77ee392b0aa3a3fdc605d",
"body": null,
"is_bot": false,
"headline": "1.6.1",
"author_name": "Dadepo Aderemi",
"author_login": "dadepo",
"committed_at": "2026-07-19T09:46:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "18af31a75b7f2a6b7106f411febefebe32362b97",
"body": "fix: recognize 3fff::/20 (RFC 9637) as IPv6 documentation space",
"is_bot": false,
"headline": "Merge pull request #131 from ip-num/add-rfc9637-documentation-range",
"author_name": "dadepo",
"author_login": "dadepo",
"committed_at": "2026-07-19T09:45:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bdc9b6822497578af541dbd5d431e05b9a7b959e",
"body": null,
"is_bot": false,
"headline": "fix: recognize 3fff::/20 (RFC 9637) as IPv6 documentation space",
"author_name": "Dadepo Aderemi",
"author_login": "dadepo",
"committed_at": "2026-07-19T09:39:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5b83efe4168f1256cd11e5e144213909cbd2501e",
"body": "fix: reject IPv6 strings with multiple zone id separators",
"is_bot": false,
"headline": "Merge pull request #130 from ip-num/reject-multiple-zone-separators",
"author_name": "dadepo",
"author_login": "dadepo",
"committed_at": "2026-07-19T09:34:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d76612c1dbec9725075710dce029aa7137762cf3",
"body": null,
"is_bot": false,
"headline": "fix: reject IPv6 strings with multiple zone id separators",
"author_name": "Dadepo Aderemi",
"author_login": "dadepo",
"committed_at": "2026-07-19T09:31:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "94a98c5c58b06a62238c3b26a0ecf58735419041",
"body": "docs: clarify isGlobalUnicast is not a strict publicly-routable check",
"is_bot": false,
"headline": "Merge pull request #129 from ip-num/clarify-global-unicast-docs",
"author_name": "dadepo",
"author_login": "dadepo",
"committed_at": "2026-07-19T09:28:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fa736391f03fa15f38a4981905023516efe6cdd9",
"body": null,
"is_bot": false,
"headline": "docs: clarify isGlobalUnicast is not a strict publicly-routable check",
"author_name": "Dadepo Aderemi",
"author_login": "dadepo",
"committed_at": "2026-07-19T09:20:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1a09c501c174a838beb44463c8b252681ca6d4fa",
"body": "…ne-id\n\nfix: return false from isValidIPv6String on invalid zone id instead of throwing",
"is_bot": false,
"headline": "Merge pull request #128 from ip-num/fix-validator-throw-on-invalid-zo…",
"author_name": "dadepo",
"author_login": "dadepo",
"committed_at": "2026-07-19T09:18:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fd3d7eaaa4b7b88e87d94279efbaf5f1eb197f8c",
"body": "…f throwing",
"is_bot": false,
"headline": "fix: return false from isValidIPv6String on invalid zone id instead o…",
"author_name": "Dadepo Aderemi",
"author_login": "dadepo",
"committed_at": "2026-07-19T09:11:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "83a87a9dc21271583a454953bb0065ca7464ec78",
"body": "fix: use fc00::/7 for IPv6 unique local address range",
"is_bot": false,
"headline": "Merge pull request #127 from ip-num/fix-ipv6-ula-range",
"author_name": "dadepo",
"author_login": "dadepo",
"committed_at": "2026-07-19T09:07:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "34202c27ee92a901ab28fa26ac39732641de372b",
"body": "RFC 4193 defines the whole fc00::/7 block as Unique Local Address\nspace, but isPrivate() only matched the fd00::/8 half. Addresses in\nfc00::/8 returned false and getKind() classified them as Global\nUnicast, even though ULA space is explicitly not globally routable.\nThis also aligns with the fc00::/7 range that the Go, Rust and Python\nstandard libraries use, and with the IPv6AddressKind.UNIQUE_LOCAL\ndocumentation.",
"is_bot": false,
"headline": "fix: use fc00::/7 for IPv6 unique local address range",
"author_name": "Dadepo Aderemi",
"author_login": "dadepo",
"committed_at": "2026-07-19T09:01:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "07ac78bf2f834f4e2cb50a44d6969c6cad53cac6",
"body": "Stops npm publish from warning that it auto-corrected package.json.",
"is_bot": false,
"headline": "Normalize repository.url to canonical git+https form",
"author_name": "Dadepo Aderemi",
"author_login": "dadepo",
"committed_at": "2026-07-19T08:38:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d6a7b84f56dc81c5fbede5b6095713245a10bb04",
"body": null,
"is_bot": false,
"headline": "updating documentation and dist for release",
"author_name": "Dadepo Aderemi",
"author_login": "dadepo",
"committed_at": "2026-07-19T08:27:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4e4d385e98dcb25d12536f59bc130ca1f16711e6",
"body": null,
"is_bot": false,
"headline": "1.6.0",
"author_name": "Dadepo Aderemi",
"author_login": "dadepo",
"committed_at": "2026-07-19T08:26:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d337f7e47c88492a1249061ad665fdcd411a69a5",
"body": "These files were compiled from source files that were consolidated into\nIPNumber.ts and IPRange.ts long ago. The release clean step restores\ndist/src from git before recompiling, so tsc never removed them and\nthey kept shipping in the npm package, exposing years-old code to\nanyone deep-importing paths like ip-num/IPv4 or ip-num/SubnetMask.",
"is_bot": false,
"headline": "Remove stale compiled modules from dist/src",
"author_name": "Dadepo Aderemi",
"author_login": "dadepo",
"committed_at": "2026-07-19T08:23:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ad508c214c923d290b2912e3d1fd31efe5eb156c",
"body": "Node 18 and 19 are end-of-life. Testing on 24 also covers the native\ntype-stripping behavior that previously broke the test suite. Bump\ncheckout and setup-node actions off their deprecated versions.",
"is_bot": false,
"headline": "Update CI to test on Node 20, 22 and 24",
"author_name": "Dadepo Aderemi",
"author_login": "dadepo",
"committed_at": "2026-07-19T08:11:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d6a2beeca1880f740491e3e42b6409d8e6720254",
"body": "Jasmine 5 loads spec files with a dynamic import() by default and only\nfell back to require() because older Node couldn't import .ts files.\nNode 23.6+ strips types natively, so the import succeeds and bypasses\nts-node, breaking directory imports like '../src'. Setting jsLoader to\nrequire makes the CommonJS path explicit on every Node version.",
"is_bot": false,
"headline": "Load specs via require so ts-node handles them on modern Node",
"author_name": "Dadepo Aderemi",
"author_login": "dadepo",
"committed_at": "2026-07-19T08:10:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f1e1fa6b7f3455dda6a65e921983fecece887e9c",
"body": "npm publish (including --dry-run) already runs prepublishOnly as a\nlifecycle hook, so the explicit invocation ran the build twice and\nproduced duplicate 'updating documentation and dist for release'\ncommits. In the dry-run script the duplicate commit also survived\nthe git reset, which only undoes one commit.",
"is_bot": false,
"headline": "Remove redundant prepublishOnly call from release scripts",
"author_name": "Dadepo Aderemi",
"author_login": "dadepo",
"committed_at": "2026-07-19T08:01:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6e011d0b870d8d2a40454ea0947f6661a7a2200e",
"body": "…efix\n\nfix: reject IPv6 CIDR notation without a prefix (match IPv4 validator)",
"is_bot": false,
"headline": "Merge pull request #125 from greymoth-jp/fix-ipv6-cidr-notation-no-pr…",
"author_name": "dadepo",
"author_login": "dadepo",
"committed_at": "2026-07-19T07:47:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "986e711c60ae111b08f72e538f873ca3726d73b0",
"body": "fix: detect IPv4-mapped IPv6 addresses built from a bigint",
"is_bot": false,
"headline": "Merge pull request #126 from spokodev/fix/ipv4-mapped-from-bigint",
"author_name": "dadepo",
"author_login": "dadepo",
"committed_at": "2026-07-16T15:17:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "06cac6bf8667af304d7d62fa0425b0affa401a41",
"body": null,
"is_bot": false,
"headline": "fix: detect IPv4-mapped IPv6 addresses built from a bigint",
"author_name": "Yarchik",
"author_login": "spokodev",
"committed_at": "2026-07-09T11:35:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b0509a113aee78ce955f813577ad165c227cbb07",
"body": "…ation",
"is_bot": false,
"headline": "fix: reject IPv6 CIDR notation without a prefix in isValidIPv6CidrNot…",
"author_name": "greymoth",
"author_login": "mahirhir",
"committed_at": "2026-06-30T07:47:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3a6ac085a34114bc1450ff35844f27d63172fbcb",
"body": "fix: correct asdot+ ASN formatting (divide by 65536, not 65535)",
"is_bot": false,
"headline": "Merge pull request #124 from spokodev/fix-asdotplus-divisor",
"author_name": "dadepo",
"author_login": "dadepo",
"committed_at": "2026-06-28T20:26:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "95e6744171e53d8474ccaec8fb046064ffa3d7c7",
"body": null,
"is_bot": false,
"headline": "fix: correct asdot+ ASN formatting (divide by 65536, not 65535)",
"author_name": "Yarchik",
"author_login": "spokodev",
"committed_at": "2026-06-24T01:22:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4d8f6c89168bb7209bff7716b117d0eb155f7d56",
"body": "Ipv4 ipv6 parity",
"is_bot": false,
"headline": "Merge pull request #123 from ip-num/ipv4-ipv6-parity",
"author_name": "dadepo",
"author_login": "dadepo",
"committed_at": "2026-01-15T18:54:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "932888cb0698c1d1534ab433f4dc251b523b1e87",
"body": null,
"is_bot": false,
"headline": "Implemented remaining for ipv4",
"author_name": "Dadepo Aderemi",
"author_login": "dadepo",
"committed_at": "2026-01-15T18:47:07Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b70f2794f3ab5959a50446d6730abc899124ec66",
"body": null,
"is_bot": false,
"headline": "isLinkLocal for ipv4",
"author_name": "Dadepo Aderemi",
"author_login": "dadepo",
"committed_at": "2026-01-15T18:39:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b899f299c016c0cb534e9406b622930c05780987",
"body": null,
"is_bot": false,
"headline": "isUnspecified for ipv4",
"author_name": "Dadepo Aderemi",
"author_login": "dadepo",
"committed_at": "2026-01-15T18:33:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7d8dc2a20ef35e38132b58ee5d6b40c91512532d",
"body": null,
"is_bot": false,
"headline": "isLoopback for ipv4",
"author_name": "Dadepo Aderemi",
"author_login": "dadepo",
"committed_at": "2026-01-15T18:27:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4537e6f8f6d279facfb845d414001b3f39f0fc94",
"body": null,
"is_bot": false,
"headline": "Remove obsolete content from readme",
"author_name": "Dadepo Aderemi",
"author_login": "dadepo",
"committed_at": "2026-01-15T18:13:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4e351b62fcc11818e8b9e9f5d7a6d8e823526256",
"body": "Add isPrivate to AbstractIPNum",
"is_bot": false,
"headline": "Merge pull request #122 from ip-num/is-private-abstract",
"author_name": "dadepo",
"author_login": "dadepo",
"committed_at": "2026-01-14T06:51:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "54f077b44b44eafc606fd20b14b62315ef6fa650",
"body": null,
"is_bot": false,
"headline": "Add isPrivate to AbstractIPNum",
"author_name": "Dadepo Aderemi",
"author_login": "dadepo",
"committed_at": "2026-01-14T04:26:07Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5eb981a045dd2b451b6994f84b125d4a80bf33af",
"body": "Ipv6 kind checks",
"is_bot": false,
"headline": "Merge pull request #121 from ip-num/ipv6-kind-checks",
"author_name": "dadepo",
"author_login": "dadepo",
"committed_at": "2026-01-13T14:29:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b9ec344095a51cf09e864dd4edc62da31d2dadab",
"body": null,
"is_bot": false,
"headline": "Add tests",
"author_name": "Dadepo Aderemi",
"author_login": "dadepo",
"committed_at": "2026-01-13T14:26:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5e3e2aadc5945afe549ed08ce9f7096447ec1c5e",
"body": null,
"is_bot": false,
"headline": "Add getting ipv6 kind",
"author_name": "Dadepo Aderemi",
"author_login": "dadepo",
"committed_at": "2026-01-13T14:26:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1b2bac38de53df27dc609a2f884ea1c2666de420",
"body": "Multicast checks",
"is_bot": false,
"headline": "Merge pull request #120 from ip-num/multicast-checks",
"author_name": "dadepo",
"author_login": "dadepo",
"committed_at": "2026-01-13T12:55:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4f26be0cb254177d2f6fda475818df5a52114716",
"body": null,
"is_bot": false,
"headline": "Add hasEmbeddedRP",
"author_name": "Dadepo Aderemi",
"author_login": "dadepo",
"committed_at": "2026-01-13T04:36:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c0deb514349ad563b819cf3e399987cc4461db55",
"body": null,
"is_bot": false,
"headline": "Add isMulticast check to ipv6",
"author_name": "Dadepo Aderemi",
"author_login": "dadepo",
"committed_at": "2026-01-12T12:13:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "43a205041d2b1dcbffc1170e28db7da4e7ac2fa7",
"body": null,
"is_bot": false,
"headline": "Add isMulticast check to ipv4",
"author_name": "Dadepo Aderemi",
"author_login": "dadepo",
"committed_at": "2026-01-12T12:09:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3046bc8ed64717902bfc7196eff94a39ae7ba8cc",
"body": "Fix ReDoS",
"is_bot": false,
"headline": "Merge pull request #119 from ip-num/fix-regex-ddos",
"author_name": "dadepo",
"author_login": "dadepo",
"committed_at": "2026-01-12T09:48:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "710fffc4c59602565079ab8dacc5a4e93b3be29f",
"body": null,
"is_bot": false,
"headline": "Fix ReDoS",
"author_name": "Dadepo Aderemi",
"author_login": "dadepo",
"committed_at": "2026-01-12T09:44:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "68821b1f717c10f118f2f2064aa0f54868bbe5ae",
"body": "Fix ReDoS",
"is_bot": false,
"headline": "Merge pull request #118 from ip-num/fix-regex",
"author_name": "dadepo",
"author_login": "dadepo",
"committed_at": "2026-01-12T09:35:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7f8ff7fb68b8b579cbbdf6922ee475532fe9abdd",
"body": null,
"is_bot": false,
"headline": "Fix ReDoS",
"author_name": "Dadepo Aderemi",
"author_login": "dadepo",
"committed_at": "2026-01-12T09:32:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "77de8bfe9669c58d8d6b2d70e34eafb41fb61439",
"body": "Update CodeQl job",
"is_bot": false,
"headline": "Merge pull request #117 from ip-num/update-codeql",
"author_name": "dadepo",
"author_login": "dadepo",
"committed_at": "2026-01-12T08:56:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f12a2588c68423891e5a1fb7f1c48658052dd2cd",
"body": null,
"is_bot": false,
"headline": "Update codeql job",
"author_name": "Dadepo Aderemi",
"author_login": "dadepo",
"committed_at": "2026-01-12T08:53:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "712918b582820285a3bd0108229a5c3839755728",
"body": "Only use npm",
"is_bot": false,
"headline": "Merge pull request #116 from ip-num/only-allow-npm",
"author_name": "dadepo",
"author_login": "dadepo",
"committed_at": "2026-01-12T08:49:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f5d9d42ca522237151e0fbd033994420d17f1a95",
"body": null,
"is_bot": false,
"headline": "Only use npm",
"author_name": "Dadepo Aderemi",
"author_login": "dadepo",
"committed_at": "2026-01-12T08:47:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bb142eda714eaa10f8af5dcb408a960902b2a70e",
"body": "Updates deps",
"is_bot": false,
"headline": "Merge pull request #115 from ip-num/update-deps",
"author_name": "dadepo",
"author_login": "dadepo",
"committed_at": "2026-01-12T08:40:42Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b83e9eb322e22ae9c3e047d61f9dab94dc450347",
"body": null,
"is_bot": false,
"headline": "More updates",
"author_name": "Dadepo Aderemi",
"author_login": "dadepo",
"committed_at": "2026-01-12T07:42:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fdb79c941628431b8dc6ca7def386e0906c0ae26",
"body": null,
"is_bot": false,
"headline": "Updates",
"author_name": "Dadepo Aderemi",
"author_login": "dadepo",
"committed_at": "2026-01-12T07:35:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f72d353383000375e6a8ad4db5ceaf34c64bef82",
"body": "Add checks for broadcast address",
"is_bot": false,
"headline": "Merge pull request #114 from ip-num/broadcast-addresses",
"author_name": "dadepo",
"author_login": "dadepo",
"committed_at": "2026-01-12T07:27:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "dd168554ab37c070e8003dfa0515082b68415734",
"body": null,
"is_bot": false,
"headline": "Add checks for broadcast address",
"author_name": "Dadepo Aderemi",
"author_login": "dadepo",
"committed_at": "2026-01-12T07:18:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "48c68a7988e73928a6ed9579cc6a299c96602878",
"body": "Add ability to check if an address is reserved for documentation",
"is_bot": false,
"headline": "Merge pull request #113 from ip-num/add-is-documentation",
"author_name": "dadepo",
"author_login": "dadepo",
"committed_at": "2025-12-30T06:25:26Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6efaebf40360e84074ef382fef01f178ced0ca8b",
"body": null,
"is_bot": false,
"headline": "Add tests",
"author_name": "Dadepo Aderemi",
"author_login": "dadepo",
"committed_at": "2025-12-30T06:18:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2ac8e2259ce96a7c3e47182a47199d47e4e33064",
"body": null,
"is_bot": false,
"headline": "Add ability to check if an ip is meant for documentation",
"author_name": "Dadepo Aderemi",
"author_login": "dadepo",
"committed_at": "2025-12-30T06:18:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0cb44d813714598d16a1902feecbcb63d2b892b6",
"body": "Add is private check",
"is_bot": false,
"headline": "Merge pull request #112 from ip-num/add-is-private",
"author_name": "dadepo",
"author_login": "dadepo",
"committed_at": "2025-12-30T05:56:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5e0576e0a51e0039031b6e13a6b7f08e14c0bc06",
"body": null,
"is_bot": false,
"headline": "Added tests",
"author_name": "Dadepo Aderemi",
"author_login": "dadepo",
"committed_at": "2025-12-30T05:55:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "20cabc39847aa3d10fbfaa5569ae4aef0944ba75",
"body": null,
"is_bot": false,
"headline": "Add isPrivate check",
"author_name": "Dadepo Aderemi",
"author_login": "dadepo",
"committed_at": "2025-12-30T05:55:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5ade4b68745e48da0d1e17260fe641ef9482dcbd",
"body": "…ub-issue-84\n\nFix Validator.isValidIPv6Mask error handling",
"is_bot": false,
"headline": "Merge pull request #110 from ip-num/codex/implement-feature-from-gith…",
"author_name": "dadepo",
"author_login": "dadepo",
"committed_at": "2025-07-02T19:01:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "398162186989f213b0fd835834b2985485a56d43",
"body": null,
"is_bot": false,
"headline": "fix: handle invalid IPv6 mask string",
"author_name": "dadepo",
"author_login": "dadepo",
"committed_at": "2025-07-02T19:00:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "48982a32a52356469e0a25ca97c5f863c1ab71eb",
"body": "…ue-#92\n\nEnable IPv4-mapped IPv6 parsing",
"is_bot": false,
"headline": "Merge pull request #109 from ip-num/codex/add-feature-from-github-iss…",
"author_name": "dadepo",
"author_login": "dadepo",
"committed_at": "2025-07-02T13:49:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cd46380bd9c76c49a585a929e8d48744f0a3afe3",
"body": null,
"is_bot": false,
"headline": "feat: support IPv4-mapped IPv6 strings",
"author_name": "dadepo",
"author_login": "dadepo",
"committed_at": "2025-07-02T13:46:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "06d236f3d94d9a5f991da61f79eddb518264b2b1",
"body": "Add support for IPv6 link-local addresses with zone IDs",
"is_bot": false,
"headline": "Merge pull request #108 from ip-num/feature/ipv6-zone-id",
"author_name": "dadepo",
"author_login": "dadepo",
"committed_at": "2025-06-30T15:31:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d19b0f25a449269b64663a1cb048a947ed1d23b0",
"body": null,
"is_bot": false,
"headline": "Drop toCollapsedString and reuse toString",
"author_name": "Dadepo Aderemi",
"author_login": "dadepo",
"committed_at": "2025-06-30T15:30:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "dc5ec91bd1b6cbd413ab54550f482772abedb524",
"body": "This commit introduces support for parsing, validating, and representing IPv6 link-local addresses that include a zone identifier (e.g., fe80::a505:4c3:dc6f:409c%tailscale0).\n\nChanges include:\n- Updated to correctly validate IPv6 addresses with zone IDs.\n- Modified class in to store and retrieve the zone ID.\n- Adjusted method in to properly format addresses with zone IDs.\n- Ensured and methods in preserve the zone ID.\n- Added new test file to cover the new functionality.\n\nFixes #96",
"is_bot": false,
"headline": "feat: Add support for IPv6 link-local addresses with zone IDs",
"author_name": "Dadepo Aderemi",
"author_login": "dadepo",
"committed_at": "2025-06-30T03:49:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "aca2ca68c62f88335fd44e3d1675c40bd74faa0b",
"body": null,
"is_bot": false,
"headline": "updating documentation and dist for release",
"author_name": "Dadepo Aderemi",
"author_login": "dadepo",
"committed_at": "2025-06-08T21:55:42Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "57400ce5e3cb750fcc667af9cf1dbdb0619601ec",
"body": null,
"is_bot": false,
"headline": "updating documentation and dist for release",
"author_name": "Dadepo Aderemi",
"author_login": "dadepo",
"committed_at": "2025-06-08T21:55:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d4288fd1c9395195b3edd96e35e9ed6370218f8b",
"body": null,
"is_bot": false,
"headline": "1.5.2",
"author_name": "Dadepo Aderemi",
"author_login": "dadepo",
"committed_at": "2025-06-08T21:55:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0851134e0141086e8c138b0ce46c8b74632681c1",
"body": null,
"is_bot": false,
"headline": "Improve package.json",
"author_name": "Dadepo Aderemi",
"author_login": "dadepo",
"committed_at": "2025-06-08T21:54:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "894d719e383ba594a291580783d13a78877596d8",
"body": null,
"is_bot": false,
"headline": "Update the patch release cmd",
"author_name": "Dadepo Aderemi",
"author_login": "dadepo",
"committed_at": "2025-06-08T21:41:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f4f75c899c71c77fc90660391b1dae82a2ffe3e7",
"body": "Added more tests for ipv6 collapse",
"is_bot": false,
"headline": "Merge pull request #107 from ip-num/more-ipv6-collapse-tests",
"author_name": "dadepo",
"author_login": "dadepo",
"committed_at": "2025-06-08T21:31:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "16ec5ccc9f79a32aaa81c1515650c9f66213c13c",
"body": null,
"is_bot": false,
"headline": "Added more tests",
"author_name": "Dadepo Aderemi",
"author_login": "dadepo",
"committed_at": "2025-06-08T21:29:42Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "aa952aaff4353ec38409755babac59db3c2633d7",
"body": "Fix(IPRange): Allow contains() to accept single IP addresses",
"is_bot": false,
"headline": "Merge pull request #104 from ip-num/fix-contains-ip-type",
"author_name": "dadepo",
"author_login": "dadepo",
"committed_at": "2025-06-08T21:22:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ecbd1385b9fc276a7aca3a2685fc77099ffac455",
"body": null,
"is_bot": false,
"headline": "Revert changes to build files",
"author_name": "Dadepo Aderemi",
"author_login": "dadepo",
"committed_at": "2025-06-08T21:21:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bbd1778d248e78e3c8cc7c6edb0ec2f2f4c9fc9f",
"body": null,
"is_bot": false,
"headline": "Undo changes to build files",
"author_name": "Dadepo Aderemi",
"author_login": "dadepo",
"committed_at": "2025-06-08T21:16:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "66afff724555468f31710a92396969f2fa383023",
"body": null,
"is_bot": false,
"headline": "Merge branch 'master' into fix-contains-ip-type",
"author_name": "Dadepo Aderemi",
"author_login": "dadepo",
"committed_at": "2025-06-08T21:10:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a0f189a4a63480b55f3c7c8ebb617f1bda1ebd12",
"body": "Fix: Correct IPv6 address collapsing to prevent multiple '::'",
"is_bot": false,
"headline": "Merge pull request #103 from ip-num/fix/ipv6-collapse-double-colon",
"author_name": "dadepo",
"author_login": "dadepo",
"committed_at": "2025-06-08T21:06:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0d40fe5bf539f1cb2c4547deaf1a510c3e128ec2",
"body": null,
"is_bot": false,
"headline": "Remove redundant comments",
"author_name": "Dadepo Aderemi",
"author_login": "dadepo",
"committed_at": "2025-06-08T21:05:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e742339a39aa232b805de82d9be2a7efd7ee9ea8",
"body": null,
"is_bot": false,
"headline": "Merge branch 'master' into fix/ipv6-collapse-double-colon",
"author_name": "Dadepo Aderemi",
"author_login": "dadepo",
"committed_at": "2025-06-08T21:02:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2daa58332a7e48329b76279a59f8ef438b4ea128",
"body": "Fix: Validate CIDR range in isValidIPv4CidrNotation",
"is_bot": false,
"headline": "Merge pull request #102 from ip-num/fix-ipv4-cidr-validation",
"author_name": "dadepo",
"author_login": "dadepo",
"committed_at": "2025-06-08T21:01:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "465936ab219d774028863eb825a31511ddd35191",
"body": null,
"is_bot": false,
"headline": "Remove redundant comment",
"author_name": "Dadepo Aderemi",
"author_login": "dadepo",
"committed_at": "2025-06-08T20:59:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0e24158032362dd4b74b024cfe712f003c9f5aa8",
"body": null,
"is_bot": false,
"headline": "Merge branch 'master' into fix-ipv4-cidr-validation",
"author_name": "Dadepo Aderemi",
"author_login": "dadepo",
"committed_at": "2025-06-08T20:57:51Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2ad21cd6ce98937bdb71fb2c619a25c98161bb9b",
"body": "Update dependencies and scripts",
"is_bot": false,
"headline": "Merge pull request #106 from ip-num/update-dependencies-and-scripts",
"author_name": "dadepo",
"author_login": "dadepo",
"committed_at": "2025-06-08T20:55:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c600cf744ed29559774aef264d31c0416bb3f5b9",
"body": null,
"is_bot": false,
"headline": "remove yarn.lock",
"author_name": "Dadepo Aderemi",
"author_login": "dadepo",
"committed_at": "2025-06-08T20:53:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c01bdf217b2016b177c50f92051d89f121a2d88f",
"body": null,
"is_bot": false,
"headline": "Merge branch 'master' into update-dependencies-and-scripts",
"author_name": "Dadepo Aderemi",
"author_login": "dadepo",
"committed_at": "2025-06-08T20:50:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5a52dbc6ab753102844dd470e442a6329e180975",
"body": null,
"is_bot": false,
"headline": "Update ipnum-release-dry-run",
"author_name": "Dadepo Aderemi",
"author_login": "dadepo",
"committed_at": "2025-06-08T20:33:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4b20e5c4928075c1e8dd703d9096e28fb298f9ad",
"body": null,
"is_bot": false,
"headline": "More dep upgrade",
"author_name": "Dadepo Aderemi",
"author_login": "dadepo",
"committed_at": "2025-06-08T20:17:20Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3a70d5861129dadee57cefd0b1f9be12600bb31e",
"body": null,
"is_bot": false,
"headline": "Update webpack config",
"author_name": "Dadepo Aderemi",
"author_login": "dadepo",
"committed_at": "2025-06-08T20:08:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9501080ca828ea8dc6a2ca54647af437a529f831",
"body": "This commit upgrades your project dependencies to their latest versions and resolves several vulnerabilities. Key changes include:\n\n- Updated all dependencies.\n- Resolved peer dependency conflicts between `typedoc` and `typescript` by updating `typescript` to a compatible version.\n- Removed the `cov\n[…]\n correctly use `ts-node` with `jasmine`.\n- Fixed type compatibility issues in `src/Validator.ts` and `src/IPPool.ts` that arose after updating dependencies.\n\nAll tests are passing after these changes.",
"is_bot": true,
"headline": "Upgrade dependencies and improve package.json scripts",
"author_name": "google-labs-jules[bot]",
"author_login": "google-labs-jules[bot]",
"committed_at": "2025-06-04T11:47:09Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "9d2642fad42461565dd049e747e817bbdf6c3970",
"body": "The contains() method in IPv4CidrRange and IPv6CidrRange now correctly\nhandles being passed an IPv4 or IPv6 instance directly. Previously, it\nonly worked correctly if passed another range instance, causing a\nTypeError when a single IP address was provided.\n\nThis change modifies AbstractIPRange.conta\n[…]\n edge cases.\n\nAlso, I updated the 'ipnum-build' script in package.json to include\nNODE_OPTIONS=--openssl-legacy-provider to resolve a local build issue\nwith Webpack related to OpenSSL provider errors.",
"is_bot": true,
"headline": "Fix(IPRange): Allow contains() to accept single IP addresses",
"author_name": "google-labs-jules[bot]",
"author_login": "google-labs-jules[bot]",
"committed_at": "2025-06-04T01:20:02Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "b0778a9b4965a860e67a5d278f105ce1612658c0",
"body": "The `collapseIPv6Number` function was incorrectly producing IPv6 strings\nwith multiple \"::\" segments in certain cases. This was due to a flawed\nreplacement logic that could introduce a \"::\" and then later identify\nanother segment as compressible.\n\nThe function has been rewritten to follow the standa\n[…]\nsses with no compressible zeros (single zero blocks).\n- Idempotency for already collapsed addresses.\n- Addresses with prefixes.\n\nAll tests, including the new ones (total 322), pass with these changes.",
"is_bot": true,
"headline": "Fix: Correct IPv6 address collapsing to prevent multiple '::'",
"author_name": "google-labs-jules[bot]",
"author_login": "google-labs-jules[bot]",
"committed_at": "2025-06-03T16:08:25Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "296d7e0db18f05ebe60d360780eb711f1c44e9ee",
"body": "This commit removes an explanatory comment that was added during\nthe previous fix for CIDR range validation. The comment, while\ntechnically correct, was deemed out of scope for the specific\nbug fix and could cause future confusion.\n\nThe removal of this comment does not affect the functionality\nor the logic of the `isValidIPv4CidrNotation` function. All\ntests continue to pass.",
"is_bot": true,
"headline": "Chore: Remove out-of-scope comment from isValidIPv4CidrNotation",
"author_name": "google-labs-jules[bot]",
"author_login": "google-labs-jules[bot]",
"committed_at": "2025-06-03T15:54:35Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "a99f5ac6eb661d53efeee940e37a8393efc0fb17",
"body": null,
"is_bot": false,
"headline": "updating documentation and dist for release",
"author_name": "Dadepo Aderemi",
"author_login": "dadepo",
"committed_at": "2025-04-17T06:37:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8136fbc9a55b01f93d071473e35fd308f2a857de",
"body": null,
"is_bot": false,
"headline": "1.5.1",
"author_name": "Dadepo Aderemi",
"author_login": "dadepo",
"committed_at": "2025-04-17T06:37:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e7b97b97fe08d83236eba2c5e291af2be323b303",
"body": "This reverts commit e28a1a2d9b337148bf5da04d2104f0cc0df966bc.",
"is_bot": false,
"headline": "Revert \"1.5.1\"",
"author_name": "Dadepo Aderemi",
"author_login": "dadepo",
"committed_at": "2025-04-17T06:37:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bc1adddd2f6560a3756f19568e794d3f93f6d04d",
"body": null,
"is_bot": false,
"headline": "1.5.1",
"author_name": "Dadepo Aderemi",
"author_login": "dadepo",
"committed_at": "2025-04-17T06:37:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cf047cf30a39b4c4d1b2030429f4017f8c0ba134",
"body": "Update IPRange.ts",
"is_bot": false,
"headline": "Merge pull request #94 from dwarburt/range-overlaps-self",
"author_name": "dadepo",
"author_login": "dadepo",
"committed_at": "2023-04-19T09:45:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fc345f89c54b00549ac9dd3231153d4cdb999b89",
"body": null,
"is_bot": false,
"headline": "corrected unit tests for changed overlapping range behavior",
"author_name": "David Warburton",
"author_login": "dwarburt",
"committed_at": "2023-04-18T17:30:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4a9d8965da98c4e5165d0b25c2bc8423247ec7d4",
"body": null,
"is_bot": false,
"headline": "Update IPRange.ts",
"author_name": "David Warburton",
"author_login": "dwarburt",
"committed_at": "2023-04-18T16:06:18Z",
"body_truncated": false,
"is_coding_agent": false
}
],
"releases_count": 15,
"commits_last_year": 59,
"latest_release_at": "2026-07-19T09:48:55Z",
"latest_release_tag": "v1.6.1",
"releases_from_tags": false,
"days_since_last_push": 5,
"active_weeks_last_year": 7,
"days_since_latest_release": 5,
"mean_days_between_releases": 210.8
},
"community": {
"has_readme": true,
"has_license": true,
"has_description": true,
"has_contributing": false,
"health_percentage": 50,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": false
},
"ecosystem": {
"packages": [
{
"name": "ip-num",
"exists": true,
"license": "MIT",
"keywords": [
"ip",
"ip-num",
"IP address",
"Internet Protocol",
"Ipv4",
"Ipv6",
"Asn"
],
"ecosystem": "npm",
"matches_repo": true,
"registry_url": "https://www.npmjs.com/package/ip-num",
"is_deprecated": false,
"latest_version": "1.6.1",
"repository_url": "https://github.com/ip-num/ip-num",
"versions_count": 45,
"total_downloads": null,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": 1,
"monthly_downloads": 740943,
"first_published_at": "2017-08-23T17:53:09.853000Z",
"latest_published_at": "2026-07-19T09:48:04.427000Z",
"latest_version_yanked": null,
"days_since_latest_publish": 5
}
]
},
"popularity": {
"forks": 30,
"stars": 176,
"watchers": 3,
"fork_history": {
"days": [
{
"date": "2017-12-07",
"count": 1
},
{
"date": "2019-12-29",
"count": 1
},
{
"date": "2020-07-01",
"count": 1
},
{
"date": "2020-07-07",
"count": 1
},
{
"date": "2020-12-16",
"count": 1
},
{
"date": "2021-01-22",
"count": 1
},
{
"date": "2021-04-07",
"count": 1
},
{
"date": "2021-05-09",
"count": 1
},
{
"date": "2021-07-21",
"count": 1
},
{
"date": "2021-10-24",
"count": 1
},
{
"date": "2022-04-25",
"count": 1
},
{
"date": "2022-05-18",
"count": 1
},
{
"date": "2023-04-18",
"count": 1
},
{
"date": "2023-05-30",
"count": 1
},
{
"date": "2023-08-30",
"count": 1
},
{
"date": "2024-03-28",
"count": 1
},
{
"date": "2024-08-06",
"count": 1
},
{
"date": "2024-12-16",
"count": 1
},
{
"date": "2024-12-21",
"count": 1
},
{
"date": "2025-07-07",
"count": 1
},
{
"date": "2025-10-01",
"count": 1
},
{
"date": "2025-10-02",
"count": 2
},
{
"date": "2025-10-03",
"count": 1
},
{
"date": "2025-11-17",
"count": 1
},
{
"date": "2026-02-26",
"count": 1
},
{
"date": "2026-06-22",
"count": 1
},
{
"date": "2026-06-30",
"count": 1
},
{
"date": "2026-07-22",
"count": 1
},
{
"date": "2026-07-24",
"count": 1
}
],
"complete": true,
"collected": 30,
"total_forks": 30
},
"star_history": null,
"open_issues_and_prs": 24
},
"ai_readiness": {
"has_nix": false,
"example_dirs": [],
"has_llms_txt": false,
"has_dockerfile": false,
"has_mcp_signal": false,
"bootstrap_files": [],
"api_schema_files": [],
"has_devcontainer": false,
"typecheck_configs": [
"tsconfig.json"
],
"toolchain_manifests": [],
"largest_source_bytes": 51316,
"source_files_sampled": 36,
"oversized_source_files": 0,
"agent_instruction_files": [],
"agent_instruction_max_bytes": null
},
"dependencies": {
"manifests": [
"package.json"
],
"advisories": {
"error": null,
"scope": "repository_graph",
"source": "osv",
"findings": [
{
"name": "brace-expansion",
"direct": false,
"version": "1.1.12",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-3jxr-9vmj-r5cp",
"GHSA-f886-m6hf-6m8v",
"GHSA-mh99-v99m-4gvg"
],
"fixed_version": "5.0.8",
"advisory_count": 3,
"oldest_advisory_days": 120
},
{
"name": "brace-expansion",
"direct": false,
"version": "2.0.2",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-3jxr-9vmj-r5cp",
"GHSA-f886-m6hf-6m8v",
"GHSA-mh99-v99m-4gvg"
],
"fixed_version": "5.0.8",
"advisory_count": 3,
"oldest_advisory_days": 120
},
{
"name": "fast-uri",
"direct": false,
"version": "3.0.6",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-4c8g-83qw-93j6",
"GHSA-q3j6-qgpj-74h6",
"GHSA-v2hh-gcrm-f6hx",
"GHSA-v39h-62p7-jpjc"
],
"fixed_version": "4.1.1",
"advisory_count": 4,
"oldest_advisory_days": 77
},
{
"name": "js-yaml",
"direct": false,
"version": "3.14.2",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-52cp-r559-cp3m",
"GHSA-h67p-54hq-rp68"
],
"fixed_version": "4.3.0",
"advisory_count": 2,
"oldest_advisory_days": 39
},
{
"name": "linkify-it",
"direct": false,
"version": "5.0.0",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-22p9-wv53-3rq4",
"GHSA-v245-v573-v5vm"
],
"fixed_version": "5.0.2",
"advisory_count": 2,
"oldest_advisory_days": 28
},
{
"name": "minimatch",
"direct": false,
"version": "3.1.2",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-23c5-xmqv-rm74",
"GHSA-3ppc-4f35-3m26",
"GHSA-7r86-cg39-jmmj"
],
"fixed_version": "10.2.3",
"advisory_count": 3,
"oldest_advisory_days": 156
},
{
"name": "minimatch",
"direct": false,
"version": "9.0.5",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-23c5-xmqv-rm74",
"GHSA-3ppc-4f35-3m26",
"GHSA-7r86-cg39-jmmj"
],
"fixed_version": "10.2.3",
"advisory_count": 3,
"oldest_advisory_days": 156
},
{
"name": "picomatch",
"direct": false,
"version": "2.3.1",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-3v7f-55p6-f55p",
"GHSA-c2c7-rcm5-vvqj"
],
"fixed_version": "4.0.4",
"advisory_count": 2,
"oldest_advisory_days": 121
},
{
"name": "serialize-javascript",
"direct": false,
"version": "6.0.2",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 8.1,
"advisory_ids": [
"GHSA-5c6j-r48x-rmvq",
"GHSA-qj8w-gfj5-8c6v"
],
"fixed_version": "7.0.5",
"advisory_count": 2,
"oldest_advisory_days": 147
},
{
"name": "uuid",
"direct": false,
"version": "8.3.2",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-w5hq-g745-h8pq"
],
"fixed_version": "13.0.1",
"advisory_count": 1,
"oldest_advisory_days": 93
},
{
"name": "ajv",
"direct": false,
"version": "8.17.1",
"severity": "moderate",
"ecosystem": "npm",
"cvss_score": 5.3,
"advisory_ids": [
"GHSA-2g4f-4pwh-qvx6"
],
"fixed_version": "8.18.0",
"advisory_count": 1,
"oldest_advisory_days": 163
},
{
"name": "diff",
"direct": false,
"version": "4.0.2",
"severity": "moderate",
"ecosystem": "npm",
"cvss_score": 5.3,
"advisory_ids": [
"GHSA-73rr-hh4g-fpgx"
],
"fixed_version": "8.0.3",
"advisory_count": 1,
"oldest_advisory_days": 191
},
{
"name": "markdown-it",
"direct": false,
"version": "14.1.0",
"severity": "moderate",
"ecosystem": "npm",
"cvss_score": 5.3,
"advisory_ids": [
"GHSA-38c4-r59v-3vqw",
"GHSA-6v5v-wf23-fmfq"
],
"fixed_version": "14.2.0",
"advisory_count": 2,
"oldest_advisory_days": 163
},
{
"name": "yaml",
"direct": false,
"version": "2.8.0",
"severity": "moderate",
"ecosystem": "npm",
"cvss_score": 4.3,
"advisory_ids": [
"GHSA-48c2-rrv3-qjmp"
],
"fixed_version": "2.8.3",
"advisory_count": 1,
"oldest_advisory_days": 121
},
{
"name": "@babel/core",
"direct": false,
"version": "7.28.5",
"severity": "low",
"ecosystem": "npm",
"cvss_score": 3.2,
"advisory_ids": [
"GHSA-4x5r-pxfx-6jf8"
],
"fixed_version": "8.0.0-rc.6",
"advisory_count": 1,
"oldest_advisory_days": 39
},
{
"name": "webpack",
"direct": false,
"version": "5.99.9",
"severity": "low",
"ecosystem": "npm",
"cvss_score": 3.7,
"advisory_ids": [
"GHSA-38r7-794h-5758",
"GHSA-8fgc-7cc6-rx7x"
],
"fixed_version": "5.104.1",
"advisory_count": 2,
"oldest_advisory_days": 169
}
],
"collected": true,
"malicious": [],
"truncated": false,
"by_severity": {
"low": 2,
"high": 10,
"moderate": 4
},
"advisory_count": 33,
"affected_count": 16,
"assessed_count": 309,
"malicious_count": 0,
"assessed_package": null,
"unassessed_count": 0,
"direct_affected_count": 0
},
"ecosystems": [
"npm"
],
"dependencies": [],
"all_dependencies": {
"error": null,
"source": "github-sbom",
"packages": [
{
"name": "@babel/code-frame",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/compat-data",
"direct": false,
"version": "7.28.5",
"ecosystem": "npm"
},
{
"name": "@babel/core",
"direct": false,
"version": "7.28.5",
"ecosystem": "npm"
},
{
"name": "@babel/generator",
"direct": false,
"version": "7.28.5",
"ecosystem": "npm"
},
{
"name": "@babel/helper-compilation-targets",
"direct": false,
"version": "7.27.2",
"ecosystem": "npm"
},
{
"name": "@babel/helper-globals",
"direct": false,
"version": "7.28.0",
"ecosystem": "npm"
},
{
"name": "@babel/helper-module-imports",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/helper-module-transforms",
"direct": false,
"version": "7.28.3",
"ecosystem": "npm"
},
{
"name": "@babel/helper-string-parser",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/helper-validator-identifier",
"direct": false,
"version": "7.28.5",
"ecosystem": "npm"
},
{
"name": "@babel/helper-validator-option",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/helpers",
"direct": false,
"version": "7.28.4",
"ecosystem": "npm"
},
{
"name": "@babel/parser",
"direct": false,
"version": "7.28.5",
"ecosystem": "npm"
},
{
"name": "@babel/template",
"direct": false,
"version": "7.27.2",
"ecosystem": "npm"
},
{
"name": "@babel/traverse",
"direct": false,
"version": "7.28.5",
"ecosystem": "npm"
},
{
"name": "@babel/types",
"direct": false,
"version": "7.28.5",
"ecosystem": "npm"
},
{
"name": "@cspotcode/source-map-support",
"direct": false,
"version": "0.8.1",
"ecosystem": "npm"
},
{
"name": "@discoveryjs/json-ext",
"direct": false,
"version": "0.6.3",
"ecosystem": "npm"
},
{
"name": "@gerrit0/mini-shiki",
"direct": false,
"version": "3.4.2",
"ecosystem": "npm"
},
{
"name": "@isaacs/cliui",
"direct": false,
"version": "8.0.2",
"ecosystem": "npm"
},
{
"name": "@istanbuljs/load-nyc-config",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "@istanbuljs/schema",
"direct": false,
"version": "0.1.3",
"ecosystem": "npm"
},
{
"name": "@jridgewell/gen-mapping",
"direct": false,
"version": "0.3.13",
"ecosystem": "npm"
},
{
"name": "@jridgewell/remapping",
"direct": false,
"version": "2.3.5",
"ecosystem": "npm"
},
{
"name": "@jridgewell/resolve-uri",
"direct": false,
"version": "3.1.2",
"ecosystem": "npm"
},
{
"name": "@jridgewell/source-map",
"direct": false,
"version": "0.3.6",
"ecosystem": "npm"
},
{
"name": "@jridgewell/sourcemap-codec",
"direct": false,
"version": "1.5.0",
"ecosystem": "npm"
},
{
"name": "@jridgewell/trace-mapping",
"direct": false,
"version": "0.3.31",
"ecosystem": "npm"
},
{
"name": "@jridgewell/trace-mapping",
"direct": false,
"version": "0.3.9",
"ecosystem": "npm"
},
{
"name": "@pkgjs/parseargs",
"direct": false,
"version": "0.11.0",
"ecosystem": "npm"
},
{
"name": "@shikijs/engine-oniguruma",
"direct": false,
"version": "3.5.0",
"ecosystem": "npm"
},
{
"name": "@shikijs/langs",
"direct": false,
"version": "3.5.0",
"ecosystem": "npm"
},
{
"name": "@shikijs/themes",
"direct": false,
"version": "3.5.0",
"ecosystem": "npm"
},
{
"name": "@shikijs/types",
"direct": false,
"version": "3.5.0",
"ecosystem": "npm"
},
{
"name": "@shikijs/vscode-textmate",
"direct": false,
"version": "10.0.2",
"ecosystem": "npm"
},
{
"name": "@tsconfig/node10",
"direct": false,
"version": "1.0.12",
"ecosystem": "npm"
},
{
"name": "@tsconfig/node12",
"direct": false,
"version": "1.0.11",
"ecosystem": "npm"
},
{
"name": "@tsconfig/node14",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "@tsconfig/node16",
"direct": false,
"version": "1.0.4",
"ecosystem": "npm"
},
{
"name": "@types/eslint",
"direct": false,
"version": "9.6.1",
"ecosystem": "npm"
},
{
"name": "@types/eslint-scope",
"direct": false,
"version": "3.7.7",
"ecosystem": "npm"
},
{
"name": "@types/estree",
"direct": false,
"version": "1.0.7",
"ecosystem": "npm"
},
{
"name": "@types/hast",
"direct": false,
"version": "3.0.4",
"ecosystem": "npm"
},
{
"name": "@types/jasmine",
"direct": false,
"version": "5.1.14",
"ecosystem": "npm"
},
{
"name": "@types/json-schema",
"direct": false,
"version": "7.0.15",
"ecosystem": "npm"
},
{
"name": "@types/node",
"direct": false,
"version": "22.19.5",
"ecosystem": "npm"
},
{
"name": "@types/unist",
"direct": false,
"version": "3.0.3",
"ecosystem": "npm"
},
{
"name": "@webassemblyjs/ast",
"direct": false,
"version": "1.14.1",
"ecosystem": "npm"
},
{
"name": "@webassemblyjs/floating-point-hex-parser",
"direct": false,
"version": "1.13.2",
"ecosystem": "npm"
},
{
"name": "@webassemblyjs/helper-api-error",
"direct": false,
"version": "1.13.2",
"ecosystem": "npm"
},
{
"name": "@webassemblyjs/helper-buffer",
"direct": false,
"version": "1.14.1",
"ecosystem": "npm"
},
{
"name": "@webassemblyjs/helper-numbers",
"direct": false,
"version": "1.13.2",
"ecosystem": "npm"
},
{
"name": "@webassemblyjs/helper-wasm-bytecode",
"direct": false,
"version": "1.13.2",
"ecosystem": "npm"
},
{
"name": "@webassemblyjs/helper-wasm-section",
"direct": false,
"version": "1.14.1",
"ecosystem": "npm"
},
{
"name": "@webassemblyjs/ieee754",
"direct": false,
"version": "1.13.2",
"ecosystem": "npm"
},
{
"name": "@webassemblyjs/leb128",
"direct": false,
"version": "1.13.2",
"ecosystem": "npm"
},
{
"name": "@webassemblyjs/utf8",
"direct": false,
"version": "1.13.2",
"ecosystem": "npm"
},
{
"name": "@webassemblyjs/wasm-edit",
"direct": false,
"version": "1.14.1",
"ecosystem": "npm"
},
{
"name": "@webassemblyjs/wasm-gen",
"direct": false,
"version": "1.14.1",
"ecosystem": "npm"
},
{
"name": "@webassemblyjs/wasm-opt",
"direct": false,
"version": "1.14.1",
"ecosystem": "npm"
},
{
"name": "@webassemblyjs/wasm-parser",
"direct": false,
"version": "1.14.1",
"ecosystem": "npm"
},
{
"name": "@webassemblyjs/wast-printer",
"direct": false,
"version": "1.14.1",
"ecosystem": "npm"
},
{
"name": "@webpack-cli/configtest",
"direct": false,
"version": "3.0.1",
"ecosystem": "npm"
},
{
"name": "@webpack-cli/info",
"direct": false,
"version": "3.0.1",
"ecosystem": "npm"
},
{
"name": "@webpack-cli/serve",
"direct": false,
"version": "3.0.1",
"ecosystem": "npm"
},
{
"name": "@xtuc/ieee754",
"direct": false,
"version": "1.2.0",
"ecosystem": "npm"
},
{
"name": "@xtuc/long",
"direct": false,
"version": "4.2.2",
"ecosystem": "npm"
},
{
"name": "acorn",
"direct": false,
"version": "8.14.1",
"ecosystem": "npm"
},
{
"name": "acorn-walk",
"direct": false,
"version": "8.3.4",
"ecosystem": "npm"
},
{
"name": "aggregate-error",
"direct": false,
"version": "3.1.0",
"ecosystem": "npm"
},
{
"name": "ajv",
"direct": false,
"version": "8.17.1",
"ecosystem": "npm"
},
{
"name": "ajv-formats",
"direct": false,
"version": "2.1.1",
"ecosystem": "npm"
},
{
"name": "ajv-keywords",
"direct": false,
"version": "5.1.0",
"ecosystem": "npm"
},
{
"name": "ansi-regex",
"direct": false,
"version": "5.0.1",
"ecosystem": "npm"
},
{
"name": "ansi-regex",
"direct": false,
"version": "6.2.2",
"ecosystem": "npm"
},
{
"name": "ansi-styles",
"direct": false,
"version": "4.3.0",
"ecosystem": "npm"
},
{
"name": "ansi-styles",
"direct": false,
"version": "6.2.3",
"ecosystem": "npm"
},
{
"name": "append-transform",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "archy",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "arg",
"direct": false,
"version": "4.1.3",
"ecosystem": "npm"
},
{
"name": "argparse",
"direct": false,
"version": "1.0.10",
"ecosystem": "npm"
},
{
"name": "argparse",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "balanced-match",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "brace-expansion",
"direct": false,
"version": "1.1.12",
"ecosystem": "npm"
},
{
"name": "brace-expansion",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "braces",
"direct": false,
"version": "3.0.3",
"ecosystem": "npm"
},
{
"name": "browserslist",
"direct": false,
"version": "4.25.0",
"ecosystem": "npm"
},
{
"name": "buffer-from",
"direct": false,
"version": "1.1.2",
"ecosystem": "npm"
},
{
"name": "caching-transform",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "camelcase",
"direct": false,
"version": "5.3.1",
"ecosystem": "npm"
},
{
"name": "caniuse-lite",
"direct": false,
"version": "1.0.30001721",
"ecosystem": "npm"
},
{
"name": "chalk",
"direct": false,
"version": "4.1.2",
"ecosystem": "npm"
},
{
"name": "chrome-trace-event",
"direct": false,
"version": "1.0.4",
"ecosystem": "npm"
},
{
"name": "clean-stack",
"direct": false,
"version": "2.2.0",
"ecosystem": "npm"
},
{
"name": "cliui",
"direct": false,
"version": "6.0.0",
"ecosystem": "npm"
},
{
"name": "cliui",
"direct": false,
"version": "8.0.1",
"ecosystem": "npm"
},
{
"name": "clone-deep",
"direct": false,
"version": "4.0.1",
"ecosystem": "npm"
},
{
"name": "color-convert",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "color-name",
"direct": false,
"version": "1.1.4",
"ecosystem": "npm"
},
{
"name": "colorette",
"direct": false,
"version": "2.0.20",
"ecosystem": "npm"
},
{
"name": "colors",
"direct": false,
"version": "1.4.0",
"ecosystem": "npm"
},
{
"name": "commander",
"direct": false,
"version": "12.1.0",
"ecosystem": "npm"
},
{
"name": "commander",
"direct": false,
"version": "2.20.3",
"ecosystem": "npm"
},
{
"name": "commondir",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "concat-map",
"direct": false,
"version": "0.0.1",
"ecosystem": "npm"
},
{
"name": "convert-source-map",
"direct": false,
"version": "1.9.0",
"ecosystem": "npm"
},
{
"name": "convert-source-map",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "create-require",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "cross-spawn",
"direct": false,
"version": "7.0.6",
"ecosystem": "npm"
},
{
"name": "debug",
"direct": false,
"version": "4.4.3",
"ecosystem": "npm"
},
{
"name": "decamelize",
"direct": false,
"version": "1.2.0",
"ecosystem": "npm"
},
{
"name": "default-require-extensions",
"direct": false,
"version": "3.0.1",
"ecosystem": "npm"
},
{
"name": "diff",
"direct": false,
"version": "4.0.2",
"ecosystem": "npm"
},
{
"name": "eastasianwidth",
"direct": false,
"version": "0.2.0",
"ecosystem": "npm"
},
{
"name": "electron-to-chromium",
"direct": false,
"version": "1.5.164",
"ecosystem": "npm"
},
{
"name": "emoji-regex",
"direct": false,
"version": "8.0.0",
"ecosystem": "npm"
},
{
"name": "emoji-regex",
"direct": false,
"version": "9.2.2",
"ecosystem": "npm"
},
{
"name": "enhanced-resolve",
"direct": false,
"version": "5.18.1",
"ecosystem": "npm"
},
{
"name": "enhanced-resolve",
"direct": false,
"version": "5.18.4",
"ecosystem": "npm"
},
{
"name": "entities",
"direct": false,
"version": "4.5.0",
"ecosystem": "npm"
},
{
"name": "envinfo",
"direct": false,
"version": "7.14.0",
"ecosystem": "npm"
},
{
"name": "es-module-lexer",
"direct": false,
"version": "1.7.0",
"ecosystem": "npm"
},
{
"name": "es6-error",
"direct": false,
"version": "4.1.1",
"ecosystem": "npm"
},
{
"name": "escalade",
"direct": false,
"version": "3.2.0",
"ecosystem": "npm"
},
{
"name": "eslint-scope",
"direct": false,
"version": "5.1.1",
"ecosystem": "npm"
},
{
"name": "esprima",
"direct": false,
"version": "4.0.1",
"ecosystem": "npm"
},
{
"name": "esrecurse",
"direct": false,
"version": "4.3.0",
"ecosystem": "npm"
},
{
"name": "estraverse",
"direct": false,
"version": "4.3.0",
"ecosystem": "npm"
},
{
"name": "estraverse",
"direct": false,
"version": "5.3.0",
"ecosystem": "npm"
},
{
"name": "events",
"direct": false,
"version": "3.3.0",
"ecosystem": "npm"
},
{
"name": "fast-deep-equal",
"direct": false,
"version": "3.1.3",
"ecosystem": "npm"
},
{
"name": "fast-uri",
"direct": false,
"version": "3.0.6",
"ecosystem": "npm"
},
{
"name": "fastest-levenshtein",
"direct": false,
"version": "1.0.16",
"ecosystem": "npm"
},
{
"name": "fill-range",
"direct": false,
"version": "7.1.1",
"ecosystem": "npm"
},
{
"name": "find-cache-dir",
"direct": false,
"version": "3.3.2",
"ecosystem": "npm"
},
{
"name": "find-up",
"direct": false,
"version": "4.1.0",
"ecosystem": "npm"
},
{
"name": "flat",
"direct": false,
"version": "5.0.2",
"ecosystem": "npm"
},
{
"name": "foreground-child",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "foreground-child",
"direct": false,
"version": "3.3.1",
"ecosystem": "npm"
},
{
"name": "fromentries",
"direct": false,
"version": "1.3.2",
"ecosystem": "npm"
},
{
"name": "fs.realpath",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "function-bind",
"direct": false,
"version": "1.1.2",
"ecosystem": "npm"
},
{
"name": "gensync",
"direct": false,
"version": "1.0.0-beta.2",
"ecosystem": "npm"
},
{
"name": "get-caller-file",
"direct": false,
"version": "2.0.5",
"ecosystem": "npm"
},
{
"name": "get-package-type",
"direct": false,
"version": "0.1.0",
"ecosystem": "npm"
},
{
"name": "glob",
"direct": false,
"version": "10.5.0",
"ecosystem": "npm"
},
{
"name": "glob",
"direct": false,
"version": "7.2.3",
"ecosystem": "npm"
},
{
"name": "glob-to-regexp",
"direct": false,
"version": "0.4.1",
"ecosystem": "npm"
},
{
"name": "graceful-fs",
"direct": false,
"version": "4.2.11",
"ecosystem": "npm"
},
{
"name": "has-flag",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "hasha",
"direct": false,
"version": "5.2.2",
"ecosystem": "npm"
},
{
"name": "hasown",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "html-escaper",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "iconv-lite",
"direct": false,
"version": "0.6.3",
"ecosystem": "npm"
},
{
"name": "import-local",
"direct": false,
"version": "3.2.0",
"ecosystem": "npm"
},
{
"name": "imurmurhash",
"direct": false,
"version": "0.1.4",
"ecosystem": "npm"
},
{
"name": "indent-string",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "inflight",
"direct": false,
"version": "1.0.6",
"ecosystem": "npm"
},
{
"name": "inherits",
"direct": false,
"version": "2.0.4",
"ecosystem": "npm"
},
{
"name": "interpret",
"direct": false,
"version": "3.1.1",
"ecosystem": "npm"
},
{
"name": "is-core-module",
"direct": false,
"version": "2.16.1",
"ecosystem": "npm"
},
{
"name": "is-fullwidth-code-point",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "is-number",
"direct": false,
"version": "7.0.0",
"ecosystem": "npm"
},
{
"name": "is-plain-object",
"direct": false,
"version": "2.0.4",
"ecosystem": "npm"
},
{
"name": "is-stream",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "is-typedarray",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "is-windows",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "isexe",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "isobject",
"direct": false,
"version": "3.0.1",
"ecosystem": "npm"
},
{
"name": "istanbul-lib-coverage",
"direct": false,
"version": "3.2.2",
"ecosystem": "npm"
},
{
"name": "istanbul-lib-hook",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "istanbul-lib-instrument",
"direct": false,
"version": "6.0.3",
"ecosystem": "npm"
},
{
"name": "istanbul-lib-processinfo",
"direct": false,
"version": "2.0.3",
"ecosystem": "npm"
},
{
"name": "istanbul-lib-report",
"direct": false,
"version": "3.0.1",
"ecosystem": "npm"
},
{
"name": "istanbul-lib-source-maps",
"direct": false,
"version": "4.0.1",
"ecosystem": "npm"
},
{
"name": "istanbul-reports",
"direct": false,
"version": "3.1.7",
"ecosystem": "npm"
},
{
"name": "jackspeak",
"direct": false,
"version": "3.4.3",
"ecosystem": "npm"
},
{
"name": "jasmine",
"direct": false,
"version": "5.13.0",
"ecosystem": "npm"
},
{
"name": "jasmine-core",
"direct": false,
"version": "5.13.0",
"ecosystem": "npm"
},
{
"name": "jasmine-spec-reporter",
"direct": false,
"version": "7.0.0",
"ecosystem": "npm"
},
{
"name": "jasmine-ts",
"direct": false,
"version": "0.4.0",
"ecosystem": "npm"
},
{
"name": "jest-worker",
"direct": false,
"version": "27.5.1",
"ecosystem": "npm"
},
{
"name": "js-tokens",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "js-yaml",
"direct": false,
"version": "3.14.2",
"ecosystem": "npm"
},
{
"name": "jsesc",
"direct": false,
"version": "3.1.0",
"ecosystem": "npm"
},
{
"name": "json-parse-even-better-errors",
"direct": false,
"version": "2.3.1",
"ecosystem": "npm"
},
{
"name": "json-schema-traverse",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "json5",
"direct": false,
"version": "2.2.3",
"ecosystem": "npm"
},
{
"name": "kind-of",
"direct": false,
"version": "6.0.3",
"ecosystem": "npm"
},
{
"name": "linkify-it",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "loader-runner",
"direct": false,
"version": "4.3.0",
"ecosystem": "npm"
},
{
"name": "locate-path",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "lodash.flattendeep",
"direct": false,
"version": "4.4.0",
"ecosystem": "npm"
},
{
"name": "lru-cache",
"direct": false,
"version": "10.4.3",
"ecosystem": "npm"
},
{
"name": "lru-cache",
"direct": false,
"version": "5.1.1",
"ecosystem": "npm"
},
{
"name": "lunr",
"direct": false,
"version": "2.3.9",
"ecosystem": "npm"
},
{
"name": "make-dir",
"direct": false,
"version": "3.1.0",
"ecosystem": "npm"
},
{
"name": "make-dir",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "make-error",
"direct": false,
"version": "1.3.6",
"ecosystem": "npm"
},
{
"name": "markdown-it",
"direct": false,
"version": "14.1.0",
"ecosystem": "npm"
},
{
"name": "mdurl",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "merge-stream",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "micromatch",
"direct": false,
"version": "4.0.8",
"ecosystem": "npm"
},
{
"name": "mime-db",
"direct": false,
"version": "1.52.0",
"ecosystem": "npm"
},
{
"name": "mime-types",
"direct": false,
"version": "2.1.35",
"ecosystem": "npm"
},
{
"name": "minimatch",
"direct": false,
"version": "3.1.2",
"ecosystem": "npm"
},
{
"name": "minimatch",
"direct": false,
"version": "9.0.5",
"ecosystem": "npm"
},
{
"name": "minipass",
"direct": false,
"version": "7.1.2",
"ecosystem": "npm"
},
{
"name": "ms",
"direct": false,
"version": "2.1.3",
"ecosystem": "npm"
},
{
"name": "neo-async",
"direct": false,
"version": "2.6.2",
"ecosystem": "npm"
},
{
"name": "node-preload",
"direct": false,
"version": "0.2.1",
"ecosystem": "npm"
},
{
"name": "node-releases",
"direct": false,
"version": "2.0.19",
"ecosystem": "npm"
},
{
"name": "nyc",
"direct": false,
"version": "17.1.0",
"ecosystem": "npm"
},
{
"name": "once",
"direct": false,
"version": "1.4.0",
"ecosystem": "npm"
},
{
"name": "p-limit",
"direct": false,
"version": "2.3.0",
"ecosystem": "npm"
},
{
"name": "p-locate",
"direct": false,
"version": "4.1.0",
"ecosystem": "npm"
},
{
"name": "p-map",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "p-try",
"direct": false,
"version": "2.2.0",
"ecosystem": "npm"
},
{
"name": "package-hash",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "package-json-from-dist",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "path-exists",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "path-is-absolute",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "path-key",
"direct": false,
"version": "3.1.1",
"ecosystem": "npm"
},
{
"name": "path-parse",
"direct": false,
"version": "1.0.7",
"ecosystem": "npm"
},
{
"name": "path-scurry",
"direct": false,
"version": "1.11.1",
"ecosystem": "npm"
},
{
"name": "picocolors",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "picomatch",
"direct": false,
"version": "2.3.1",
"ecosystem": "npm"
},
{
"name": "pkg-dir",
"direct": false,
"version": "4.2.0",
"ecosystem": "npm"
},
{
"name": "process-on-spawn",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "punycode.js",
"direct": false,
"version": "2.3.1",
"ecosystem": "npm"
},
{
"name": "randombytes",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "rechoir",
"direct": false,
"version": "0.8.0",
"ecosystem": "npm"
},
{
"name": "release-zalgo",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "require-directory",
"direct": false,
"version": "2.1.1",
"ecosystem": "npm"
},
{
"name": "require-from-string",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "require-main-filename",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "resolve",
"direct": false,
"version": "1.22.10",
"ecosystem": "npm"
},
{
"name": "resolve-cwd",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "resolve-from",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "rimraf",
"direct": false,
"version": "3.0.2",
"ecosystem": "npm"
},
{
"name": "safe-buffer",
"direct": false,
"version": "5.1.2",
"ecosystem": "npm"
},
{
"name": "safer-buffer",
"direct": false,
"version": "2.1.2",
"ecosystem": "npm"
},
{
"name": "schema-utils",
"direct": false,
"version": "4.3.2",
"ecosystem": "npm"
},
{
"name": "semver",
"direct": false,
"version": "6.3.1",
"ecosystem": "npm"
},
{
"name": "semver",
"direct": false,
"version": "7.7.2",
"ecosystem": "npm"
},
{
"name": "semver",
"direct": false,
"version": "7.7.3",
"ecosystem": "npm"
},
{
"name": "serialize-javascript",
"direct": false,
"version": "6.0.2",
"ecosystem": "npm"
},
{
"name": "set-blocking",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "shallow-clone",
"direct": false,
"version": "3.0.1",
"ecosystem": "npm"
},
{
"name": "shebang-command",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "shebang-regex",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "signal-exit",
"direct": false,
"version": "3.0.7",
"ecosystem": "npm"
},
{
"name": "signal-exit",
"direct": false,
"version": "4.1.0",
"ecosystem": "npm"
},
{
"name": "source-map",
"direct": false,
"version": "0.6.1",
"ecosystem": "npm"
},
{
"name": "source-map",
"direct": false,
"version": "0.7.6",
"ecosystem": "npm"
},
{
"name": "source-map-js",
"direct": false,
"version": "1.2.1",
"ecosystem": "npm"
},
{
"name": "source-map-loader",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "source-map-support",
"direct": false,
"version": "0.5.21",
"ecosystem": "npm"
},
{
"name": "spawn-wrap",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "sprintf-js",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "string-width",
"direct": false,
"version": "4.2.3",
"ecosystem": "npm"
},
{
"name": "string-width",
"direct": false,
"version": "5.1.2",
"ecosystem": "npm"
},
{
"name": "strip-ansi",
"direct": false,
"version": "6.0.1",
"ecosystem": "npm"
},
{
"name": "strip-ansi",
"direct": false,
"version": "7.1.2",
"ecosystem": "npm"
},
{
"name": "strip-bom",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "supports-color",
"direct": false,
"version": "7.2.0",
"ecosystem": "npm"
},
{
"name": "supports-color",
"direct": false,
"version": "8.1.1",
"ecosystem": "npm"
},
{
"name": "supports-preserve-symlinks-flag",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "tapable",
"direct": false,
"version": "2.2.2",
"ecosystem": "npm"
},
{
"name": "tapable",
"direct": false,
"version": "2.3.0",
"ecosystem": "npm"
},
{
"name": "terser",
"direct": false,
"version": "5.40.0",
"ecosystem": "npm"
},
{
"name": "terser-webpack-plugin",
"direct": false,
"version": "5.3.14",
"ecosystem": "npm"
},
{
"name": "test-exclude",
"direct": false,
"version": "6.0.0",
"ecosystem": "npm"
},
{
"name": "to-regex-range",
"direct": false,
"version": "5.0.1",
"ecosystem": "npm"
},
{
"name": "ts-loader",
"direct": false,
"version": "9.5.4",
"ecosystem": "npm"
},
{
"name": "ts-node",
"direct": false,
"version": "10.9.2",
"ecosystem": "npm"
},
{
"name": "tsunit.external",
"direct": false,
"version": "3.7.2",
"ecosystem": "npm"
},
{
"name": "type-fest",
"direct": false,
"version": "0.8.1",
"ecosystem": "npm"
},
{
"name": "typedarray-to-buffer",
"direct": false,
"version": "3.1.5",
"ecosystem": "npm"
},
{
"name": "typedoc",
"direct": false,
"version": "0.28.5",
"ecosystem": "npm"
},
{
"name": "typescript",
"direct": false,
"version": "5.8.3",
"ecosystem": "npm"
},
{
"name": "uc.micro",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "undici-types",
"direct": false,
"version": "6.21.0",
"ecosystem": "npm"
},
{
"name": "update-browserslist-db",
"direct": false,
"version": "1.1.3",
"ecosystem": "npm"
},
{
"name": "uuid",
"direct": false,
"version": "8.3.2",
"ecosystem": "npm"
},
{
"name": "v8-compile-cache-lib",
"direct": false,
"version": "3.0.1",
"ecosystem": "npm"
},
{
"name": "watchpack",
"direct": false,
"version": "2.4.4",
"ecosystem": "npm"
},
{
"name": "webpack",
"direct": false,
"version": "5.99.9",
"ecosystem": "npm"
},
{
"name": "webpack-auto-inject-version",
"direct": false,
"version": "1.2.2",
"ecosystem": "npm"
},
{
"name": "webpack-cli",
"direct": false,
"version": "6.0.1",
"ecosystem": "npm"
},
{
"name": "webpack-merge",
"direct": false,
"version": "6.0.1",
"ecosystem": "npm"
},
{
"name": "webpack-sources",
"direct": false,
"version": "3.3.2",
"ecosystem": "npm"
},
{
"name": "which",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "which-module",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "wildcard",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "wrap-ansi",
"direct": false,
"version": "6.2.0",
"ecosystem": "npm"
},
{
"name": "wrap-ansi",
"direct": false,
"version": "7.0.0",
"ecosystem": "npm"
},
{
"name": "wrap-ansi",
"direct": false,
"version": "8.1.0",
"ecosystem": "npm"
},
{
"name": "wrappy",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "write-file-atomic",
"direct": false,
"version": "3.0.3",
"ecosystem": "npm"
},
{
"name": "y18n",
"direct": false,
"version": "4.0.3",
"ecosystem": "npm"
},
{
"name": "y18n",
"direct": false,
"version": "5.0.8",
"ecosystem": "npm"
},
{
"name": "yallist",
"direct": false,
"version": "3.1.1",
"ecosystem": "npm"
},
{
"name": "yaml",
"direct": false,
"version": "2.8.0",
"ecosystem": "npm"
},
{
"name": "yargs",
"direct": false,
"version": "15.4.1",
"ecosystem": "npm"
},
{
"name": "yargs",
"direct": false,
"version": "17.7.2",
"ecosystem": "npm"
},
{
"name": "yargs-parser",
"direct": false,
"version": "18.1.3",
"ecosystem": "npm"
},
{
"name": "yargs-parser",
"direct": false,
"version": "21.1.1",
"ecosystem": "npm"
},
{
"name": "yn",
"direct": false,
"version": "3.1.1",
"ecosystem": "npm"
}
],
"collected": true,
"truncated": false,
"total_count": 309,
"direct_count": 0,
"indirect_count": 309
}
},
"maintainership": {
"issues": {
"open_prs": 4,
"merged_prs": 50,
"open_issues": 20,
"closed_ratio": 0.722,
"closed_issues": 52,
"closed_unmerged_prs": 8
},
"bus_factor": 1,
"bot_contributors": 2,
"top_contributors": [
{
"type": "User",
"login": "dadepo",
"commits": 489,
"avatar_url": "https://avatars.githubusercontent.com/u/272535?v=4"
},
{
"type": "User",
"login": "lenovouser",
"commits": 6,
"avatar_url": "https://avatars.githubusercontent.com/u/7549136?v=4"
},
{
"type": "User",
"login": "chri-sche",
"commits": 3,
"avatar_url": "https://avatars.githubusercontent.com/u/28889644?v=4"
},
{
"type": "User",
"login": "wibisono",
"commits": 2,
"avatar_url": "https://avatars.githubusercontent.com/u/566147?v=4"
},
{
"type": "User",
"login": "dwarburt",
"commits": 2,
"avatar_url": "https://avatars.githubusercontent.com/u/52614?v=4"
},
{
"type": "User",
"login": "spokodev",
"commits": 2,
"avatar_url": "https://avatars.githubusercontent.com/u/239690017?v=4"
},
{
"type": "User",
"login": "mahirhir",
"commits": 1,
"avatar_url": "https://avatars.githubusercontent.com/u/246701683?v=4"
}
],
"contributors_sampled": 7,
"top_contributor_share": 0.968
},
"quality_signals": {
"has_ci": true,
"has_tests": true,
"ci_workflows": [
"codeql-analysis.yml",
"main.yml"
],
"has_docs_dir": true,
"linter_configs": [],
"has_editorconfig": false,
"has_linter_config": false,
"has_precommit_config": false
},
"security_signals": {
"lockfiles": [
"package-lock.json"
],
"scorecard": {
"checks": [
{
"name": "Binary-Artifacts",
"score": 10,
"reason": "no binaries found in the repo",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
},
{
"name": "Branch-Protection",
"score": 0,
"reason": "branch protection not enabled on development/release branches",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
},
{
"name": "CI-Tests",
"score": 10,
"reason": "9 out of 9 merged PRs checked by a CI test -- score normalized to 10",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
},
{
"name": "CII-Best-Practices",
"score": 0,
"reason": "no effort to earn an OpenSSF best practices badge detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
},
{
"name": "Code-Review",
"score": 1,
"reason": "Found 3/18 approved changesets -- score normalized to 1",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
},
{
"name": "Contributors",
"score": 10,
"reason": "project has 4 contributing companies or organizations",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
},
{
"name": "Dangerous-Workflow",
"score": 10,
"reason": "no dangerous workflow patterns detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
},
{
"name": "Dependency-Update-Tool",
"score": 10,
"reason": "update tool detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
},
{
"name": "Fuzzing",
"score": 0,
"reason": "project is not fuzzed",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
},
{
"name": "License",
"score": 10,
"reason": "license file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
},
{
"name": "Maintained",
"score": 10,
"reason": "25 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
},
{
"name": "Packaging",
"score": null,
"reason": "packaging workflow not detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
},
{
"name": "Pinned-Dependencies",
"score": 0,
"reason": "dependency not pinned by hash detected -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
},
{
"name": "SAST",
"score": 7,
"reason": "SAST tool detected but not run on all commits",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
},
{
"name": "Security-Policy",
"score": 3,
"reason": "security policy file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
},
{
"name": "Signed-Releases",
"score": null,
"reason": "no releases found",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
},
{
"name": "Token-Permissions",
"score": 0,
"reason": "detected GitHub workflow tokens with excessive permissions",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
},
{
"name": "Vulnerabilities",
"score": 0,
"reason": "27 existing vulnerabilities detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
}
],
"commit": "d566df2b2725fb571e43890b3cb604486e68ceee",
"ran_at": "2026-07-25T06:50:01Z",
"aggregate_score": 4.9,
"scorecard_version": "v5.5.0"
},
"has_codeql_workflow": true,
"has_security_policy": true,
"has_dependabot_config": false
},
"contribution_flow": {
"collected": true,
"ci_last_run_at": "2026-07-19T09:49:01Z",
"oldest_open_prs": [
{
"number": 111,
"created_at": "2025-07-05T15:46:11Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 132,
"created_at": "2026-07-22T16:24:41Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 133,
"created_at": "2026-07-23T17:28:59Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 134,
"created_at": "2026-07-24T17:11:34Z",
"last_comment_at": null,
"last_comment_author": null
}
],
"last_merged_pr_at": "2026-07-19T09:45:19Z",
"ci_last_conclusion": "SUCCESS",
"oldest_open_issues": [
{
"number": 16,
"created_at": "2018-11-10T03:02:49Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 17,
"created_at": "2018-11-25T17:12:38Z",
"last_comment_at": "2018-11-26T16:57:25Z",
"last_comment_author": "dadepo"
},
{
"number": 25,
"created_at": "2019-05-18T15:51:54Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 30,
"created_at": "2019-06-16T18:02:04Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 31,
"created_at": "2019-11-01T07:40:54Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 32,
"created_at": "2019-12-13T14:09:10Z",
"last_comment_at": "2021-05-28T12:08:05Z",
"last_comment_author": "pavan66"
},
{
"number": 33,
"created_at": "2019-12-13T15:43:11Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 43,
"created_at": "2020-04-20T12:18:02Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 44,
"created_at": "2020-04-23T18:27:22Z",
"last_comment_at": "2020-04-26T14:05:04Z",
"last_comment_author": "dadepo"
},
{
"number": 45,
"created_at": "2020-04-26T14:02:52Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 47,
"created_at": "2020-06-14T13:29:58Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 54,
"created_at": "2020-12-13T17:49:40Z",
"last_comment_at": "2021-12-28T13:28:28Z",
"last_comment_author": "dadepo"
},
{
"number": 58,
"created_at": "2021-01-01T17:02:00Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 60,
"created_at": "2021-01-09T15:26:12Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 62,
"created_at": "2021-02-10T17:38:14Z",
"last_comment_at": "2021-02-12T04:52:46Z",
"last_comment_author": "dadepo"
},
{
"number": 71,
"created_at": "2021-05-08T18:12:25Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 89,
"created_at": "2023-03-14T16:03:57Z",
"last_comment_at": "2023-03-15T07:56:18Z",
"last_comment_author": "LuWa-at-work"
},
{
"number": 91,
"created_at": "2023-03-21T13:51:20Z",
"last_comment_at": "2023-03-22T08:59:59Z",
"last_comment_author": "dadepo"
},
{
"number": 95,
"created_at": "2023-06-19T15:19:14Z",
"last_comment_at": "2023-06-19T15:54:04Z",
"last_comment_author": "vovaoecoyc"
},
{
"number": 101,
"created_at": "2025-05-07T09:13:21Z",
"last_comment_at": null,
"last_comment_author": null
}
]
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/ip-num/ip-num",
"host": "github.com",
"name": "ip-num",
"owner": "ip-num"
},
"metrics": {
"overall": {
"key": "overall",
"band": "moderate",
"name": "Overall health",
"note": null,
"notes": [],
"value": 67,
"inputs": {
"security": 60,
"vitality": 74,
"community": 62,
"governance": 57,
"engineering": 81
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "good",
"name": "Vitality",
"value": 74,
"weight": 0.22,
"metrics": [
{
"key": "development_activity",
"band": "moderate",
"name": "Development activity",
"note": null,
"notes": [],
"value": 67,
"inputs": {
"commits_last_year": 59,
"human_commit_share": 0.96,
"days_since_last_push": 5,
"active_weeks_last_year": 7
},
"components": [
{
"key": "push_recency",
"name": "Push recency",
"detail": "last push 5 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "push_recency",
"params": {
"days": 5
}
}
],
"max_points": 36
},
{
"key": "commit_cadence",
"name": "Commit cadence",
"detail": "7/52 weeks with commits",
"points": 4.8,
"status": "partial",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 7
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "59 commits in the last year",
"points": 16,
"status": "partial",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 59
}
}
],
"max_points": 18
},
{
"key": "openssf_scorecard_maintained",
"name": "OpenSSF Scorecard: Maintained",
"detail": "25 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "release_discipline",
"band": "good",
"name": "Release discipline",
"note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"openssf_scorecard_signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 84,
"inputs": {
"releases_count": 15,
"latest_release_tag": "v1.6.1",
"releases_from_tags": false,
"days_since_latest_release": 5,
"mean_days_between_releases": 210.8
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "15 releases published",
"points": 27,
"status": "met",
"details": [
{
"code": "releases_published",
"params": {
"count": 15
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 5 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "release_recency",
"params": {
"days": 5
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~210.8 days",
"points": 12.6,
"status": "partial",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 210.8
}
}
],
"max_points": 27
},
{
"key": "openssf_scorecard_signed_releases",
"name": "OpenSSF Scorecard: Signed-Releases",
"detail": "no releases found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 10
}
]
},
{
"key": "abandonment",
"band": "excellent",
"name": "Abandonment",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"cap": null,
"state": "maintained",
"guards": [],
"signals": [],
"red_flag": false,
"multiplier_pct": 100,
"declared_reason": null,
"unverified_reason": null,
"unanswered_open_prs": null,
"unanswered_open_issues": null,
"days_since_last_merged_pr": null,
"days_since_last_human_commit": 5,
"days_since_last_human_commit_is_floor": false
},
"components": [
{
"key": "project_is_still_maintained",
"name": "Project is still maintained",
"detail": "last human commit 5 days ago",
"points": 100,
"status": "met",
"details": [
{
"code": "abandonment_maintained",
"params": {
"days": 5
}
}
],
"max_points": 100
}
]
}
],
"description": "Is the project alive — is code being written and are releases shipping?"
},
{
"key": "community",
"band": "moderate",
"name": "Community & Adoption",
"value": 62,
"weight": 0.18,
"metrics": [
{
"key": "popularity",
"band": "moderate",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 50,
"inputs": {
"forks": 30,
"stars": 176,
"watchers": 3,
"growth_state": "unverified",
"growth_factor_pct": 100,
"growth_unverified_reason": "no_history"
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "176 stars",
"points": 36.4,
"status": "partial",
"details": [
{
"code": "stars",
"params": {
"count": 176
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "30 forks",
"points": 12.2,
"status": "partial",
"details": [
{
"code": "forks",
"params": {
"count": 30
}
}
],
"max_points": 25
},
{
"key": "watchers",
"name": "Watchers",
"detail": "3 watchers",
"points": 1.7,
"status": "partial",
"details": [
{
"code": "watchers",
"params": {
"count": 3
}
}
],
"max_points": 15
}
]
},
{
"key": "community_health",
"band": "moderate",
"name": "Community health",
"note": null,
"notes": [],
"value": 50,
"inputs": {
"has_readme": true,
"has_license": true,
"has_contributing": false,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": false
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 22.5,
"status": "met",
"details": [],
"max_points": 22.5
},
{
"key": "license",
"name": "License",
"detail": "recognized license (MIT)",
"points": 22.5,
"status": "met",
"details": [
{
"code": "license_standard",
"params": {}
},
{
"code": "license_spdx",
"params": {
"spdx": "MIT"
}
}
],
"max_points": 22.5
},
{
"key": "contributing_guide",
"name": "CONTRIBUTING guide",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 18
},
{
"key": "code_of_conduct",
"name": "Code of conduct",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 13.5
},
{
"key": "issue_template",
"name": "Issue template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.2
},
{
"key": "pr_template",
"name": "PR template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 6.3
}
]
},
{
"key": "ecosystem_adoption",
"band": "excellent",
"name": "Ecosystem adoption (downloads)",
"note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"registry_dependents"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 98,
"inputs": {
"packages": [
"ip-num"
],
"dependents": null,
"ecosystems": "npm",
"total_downloads": null,
"monthly_downloads": 740943
},
"components": [
{
"key": "monthly_downloads",
"name": "Monthly downloads",
"detail": "740,943 downloads/month across npm",
"points": 78.3,
"status": "partial",
"details": [
{
"code": "downloads_monthly",
"params": {
"count": 740943,
"ecosystems": "npm"
}
}
],
"max_points": 80
},
{
"key": "registry_dependents",
"name": "Registry dependents",
"detail": "not reported by this ecosystem",
"points": 0,
"status": "excluded",
"details": [
{
"code": "not_reported_by_this_ecosystem",
"params": {}
}
],
"max_points": 20
}
]
}
],
"description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
},
{
"key": "governance",
"band": "moderate",
"name": "Sustainability & Governance",
"value": 57,
"weight": 0.24,
"metrics": [
{
"key": "maintainer_resilience",
"band": "critical",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 29,
"inputs": {
"bus_factor": 1,
"contributors_sampled": 7,
"top_contributor_share": 0.968
},
"components": [
{
"key": "bus_factor",
"name": "Bus factor",
"detail": "1 contributor(s) cover half of all commits",
"points": 9,
"status": "partial",
"details": [
{
"code": "bus_factor",
"params": {
"count": 1
}
}
],
"max_points": 54
},
{
"key": "commit_distribution",
"name": "Commit distribution",
"detail": "top contributor authored 97% of commits",
"points": 0.7,
"status": "partial",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 97
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "7 contributors",
"points": 9.5,
"status": "partial",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 7
}
}
],
"max_points": 13.5
},
{
"key": "openssf_scorecard_contributors",
"name": "OpenSSF Scorecard: Contributors",
"detail": "project has 4 contributing companies or organizations",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "responsiveness",
"band": "moderate",
"name": "Issue & PR responsiveness",
"note": null,
"notes": [],
"value": 68,
"inputs": {
"merged_prs": 50,
"open_issues": 20,
"closed_issues": 52,
"issue_closed_ratio": 0.722,
"closed_unmerged_prs": 8
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "72% of issues closed",
"points": 33.8,
"status": "partial",
"details": [
{
"code": "issues_closed_share",
"params": {
"share": 72
}
}
],
"max_points": 46.75
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "50/58 decided PRs merged",
"points": 33,
"status": "partial",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 50,
"decided": 58
}
}
],
"max_points": 38.25
},
{
"key": "openssf_scorecard_code_review",
"name": "OpenSSF Scorecard: Code-Review",
"detail": "Found 3/18 approved changesets -- score normalized to 1",
"points": 1.5,
"status": "partial",
"details": [],
"max_points": 15
}
]
},
{
"key": "stewardship",
"band": "at_risk",
"name": "Ownership & stewardship",
"note": null,
"notes": [],
"value": 44,
"inputs": {
"followers": 0,
"owner_type": "Organization",
"is_verified": null,
"owner_login": "ip-num",
"public_repos": 1,
"account_age_days": 3244
},
"components": [
{
"key": "ownership_backing",
"name": "Ownership backing",
"detail": "organization-owned",
"points": 30,
"status": "met",
"details": [
{
"code": "owner_organization",
"params": {}
}
],
"max_points": 30
},
{
"key": "verified_domain",
"name": "Verified domain",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 20
},
{
"key": "owner_reach",
"name": "Owner reach",
"detail": "0 followers of ip-num",
"points": 0,
"status": "missed",
"details": [
{
"code": "owner_followers",
"params": {
"count": 0,
"login": "ip-num"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "1 public repos, account ~8 yr old",
"points": 14.2,
"status": "partial",
"details": [
{
"code": "public_repos",
"params": {
"count": 1
}
},
{
"code": "account_age_years",
"params": {
"years": 8
}
}
],
"max_points": 25
}
]
},
{
"key": "package_maintenance",
"band": "excellent",
"name": "Package maintenance",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"packages": [
"ip-num"
],
"ecosystems": "npm",
"any_deprecated": false,
"min_days_since_publish": 5
},
"components": [
{
"key": "published_resolvable",
"name": "Published & resolvable",
"detail": "1 package(s) on npm",
"points": 25,
"status": "met",
"details": [
{
"code": "packages_published",
"params": {
"count": 1,
"ecosystems": "npm"
}
}
],
"max_points": 25
},
{
"key": "publish_recency",
"name": "Publish recency",
"detail": "latest publish 5 days ago",
"points": 35,
"status": "met",
"details": [
{
"code": "publish_recency",
"params": {
"days": 5
}
}
],
"max_points": 35
},
{
"key": "version_history",
"name": "Version history",
"detail": "45 published versions",
"points": 20,
"status": "met",
"details": [
{
"code": "published_versions",
"params": {
"count": 45
}
}
],
"max_points": 20
},
{
"key": "not_deprecated",
"name": "Not deprecated",
"detail": "active, not deprecated or yanked",
"points": 20,
"status": "met",
"details": [
{
"code": "package_not_deprecated",
"params": {}
}
],
"max_points": 20
}
]
}
],
"description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
},
{
"key": "engineering",
"band": "good",
"name": "Engineering Quality",
"value": 81,
"weight": 0.2,
"metrics": [
{
"key": "engineering_practices",
"band": "moderate",
"name": "Engineering practices",
"note": null,
"notes": [],
"value": 68,
"inputs": {
"has_ci": true,
"has_tests": true,
"has_editorconfig": false,
"has_linter_config": false,
"has_precommit_config": false
},
"components": [
{
"key": "ci_workflows",
"name": "CI workflows",
"detail": "2 workflow(s)",
"points": 24,
"status": "met",
"details": [
{
"code": "ci_workflows",
"params": {
"count": 2
}
}
],
"max_points": 24
},
{
"key": "tests_present",
"name": "Tests present",
"detail": null,
"points": 24,
"status": "met",
"details": [],
"max_points": 24
},
{
"key": "linter_config",
"name": "Linter config",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 16
},
{
"key": "pre_commit_hooks",
"name": "Pre-commit hooks",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 9.6
},
{
"key": "editorconfig",
"name": ".editorconfig",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 6.4
},
{
"key": "openssf_scorecard_ci_tests",
"name": "OpenSSF Scorecard: CI-Tests",
"detail": "9 out of 9 merged PRs checked by a CI test -- score normalized to 10",
"points": 20,
"status": "met",
"details": [],
"max_points": 20
}
]
},
{
"key": "documentation",
"band": "excellent",
"name": "Documentation",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"topics": [
"ip-address",
"ipv4",
"ipv6",
"asn",
"cidr"
],
"has_wiki": true,
"homepage": "https://ip-num.github.io/ip-num/",
"has_readme": true,
"has_docs_dir": true,
"has_description": true
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 30,
"status": "met",
"details": [],
"max_points": 30
},
{
"key": "documentation_directory",
"name": "Documentation directory",
"detail": null,
"points": 25,
"status": "met",
"details": [],
"max_points": 25
},
{
"key": "documentation_homepage_site",
"name": "Documentation / homepage site",
"detail": "https://ip-num.github.io/ip-num/",
"points": 15,
"status": "met",
"details": [],
"max_points": 15
},
{
"key": "repository_description",
"name": "Repository description",
"detail": null,
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "topics",
"name": "Topics",
"detail": "5 topics",
"points": 10,
"status": "met",
"details": [
{
"code": "topics_count",
"params": {
"count": 5
}
}
],
"max_points": 10
},
{
"key": "wiki",
"name": "Wiki",
"detail": null,
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
}
],
"description": "Are baseline engineering and documentation practices in place?"
},
{
"key": "security",
"band": "moderate",
"name": "Security",
"value": 60,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "moderate",
"name": "Security posture",
"note": "Excluded from scoring (no data or not applicable): Packaging, Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"packaging",
"signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 50,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 16,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 2,
"scorecard_aggregate": 4.9
},
"components": [
{
"key": "binary_artifacts",
"name": "Binary-Artifacts",
"detail": "no binaries found in the repo",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "branch_protection",
"name": "Branch-Protection",
"detail": "branch protection not enabled on development/release branches",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "ci_tests",
"name": "CI-Tests",
"detail": "9 out of 9 merged PRs checked by a CI test -- score normalized to 10",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "cii_best_practices",
"name": "CII-Best-Practices",
"detail": "no effort to earn an OpenSSF best practices badge detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 2.5
},
{
"key": "code_review",
"name": "Code-Review",
"detail": "Found 3/18 approved changesets -- score normalized to 1",
"points": 0.8,
"status": "partial",
"details": [],
"max_points": 7.5
},
{
"key": "contributors",
"name": "Contributors",
"detail": "project has 4 contributing companies or organizations",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "dangerous_workflow",
"name": "Dangerous-Workflow",
"detail": "no dangerous workflow patterns detected",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "dependency_update_tool",
"name": "Dependency-Update-Tool",
"detail": "update tool detected",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "fuzzing",
"name": "Fuzzing",
"detail": "project is not fuzzed",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "license",
"name": "License",
"detail": "license file detected",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "maintained",
"name": "Maintained",
"detail": "25 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "packaging",
"name": "Packaging",
"detail": "packaging workflow not detected",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 5
},
{
"key": "pinned_dependencies",
"name": "Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "sast",
"name": "SAST",
"detail": "SAST tool detected but not run on all commits",
"points": 3.5,
"status": "partial",
"details": [],
"max_points": 5
},
{
"key": "security_policy",
"name": "Security-Policy",
"detail": "security policy file detected",
"points": 1.5,
"status": "partial",
"details": [],
"max_points": 5
},
{
"key": "signed_releases",
"name": "Signed-Releases",
"detail": "no releases found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 7.5
},
{
"key": "token_permissions",
"name": "Token-Permissions",
"detail": "detected GitHub workflow tokens with excessive permissions",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "vulnerabilities",
"name": "Vulnerabilities",
"detail": "27 existing vulnerabilities detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
}
]
},
{
"key": "dependency_advisories",
"band": "excellent",
"name": "Dependency advisories",
"note": "Excluded from scoring (no data or not applicable): Indirect dependencies free of known advisories, No advisories left outstanding. Remaining weights renormalized. Matched 309 resolved dependencies against OSV. This repository publishes no package the index resolves, so the repository dependency graph was assessed instead. That graph mixes development and test pins with shipped dependencies, so only the declared runtime dependencies are scored; transitive findings are reported as context and excluded from the score. Reachability is not analyzed.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"indirect_dependencies_free_of_known_advisories",
"no_advisories_left_outstanding"
]
}
},
{
"code": "weights_renormalized",
"params": {}
},
{
"code": "advisories_scope_repository",
"params": {
"assessed": 309
}
},
{
"code": "advisories_repo_graph_caveat",
"params": {}
},
{
"code": "advisories_reachability",
"params": {}
}
],
"value": 100,
"inputs": {
"source": "osv",
"advisories": 33,
"affected_packages": 16,
"assessed_packages": 309,
"unassessed_packages": 0,
"affected_by_severity": "high 10, moderate 4, low 2",
"direct_affected_packages": 0
},
"components": [
{
"key": "direct_dependencies_free_of_known_advisories",
"name": "Direct dependencies free of known advisories",
"detail": "no direct dependency carries a known advisory",
"points": 35,
"status": "met",
"details": [
{
"code": "no_direct_advisories",
"params": {}
}
],
"max_points": 35
},
{
"key": "indirect_dependencies_free_of_known_advisories",
"name": "Indirect dependencies free of known advisories",
"detail": "transitive set not separable from development and test dependencies in this scope",
"points": 0,
"status": "excluded",
"details": [
{
"code": "advisories_scope_not_separable",
"params": {}
}
],
"max_points": 25
},
{
"key": "no_advisories_left_outstanding",
"name": "No advisories left outstanding",
"detail": "no advisory carries a publication date",
"points": 0,
"status": "excluded",
"details": [
{
"code": "advisories_no_publication_date",
"params": {}
}
],
"max_points": 40
}
]
},
{
"key": "malicious_dependencies",
"band": "excellent",
"name": "Malicious dependencies",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"source": "osv",
"meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
"packages": [],
"red_flag": false,
"assessed_packages": 309,
"malicious_packages": 0,
"direct_malicious_packages": 0,
"withdrawn_malicious_packages": 0,
"installable_malicious_packages": 0
},
"components": [
{
"key": "no_dependency_reported_as_a_malicious_package",
"name": "No dependency reported as a malicious package",
"detail": "no dependency is reported as a malicious package",
"points": 100,
"status": "met",
"details": [
{
"code": "no_malicious_dependencies",
"params": {}
}
],
"max_points": 100
}
]
},
{
"key": "high_risk_jurisdiction_exposure",
"band": "excellent",
"name": "High-Risk Jurisdiction Exposure",
"note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
"notes": [
{
"code": "jurisdiction_evidence_limits",
"params": {}
}
],
"value": 100,
"inputs": {
"meaning": "self-published location evidence; not nationality or citizenship",
"red_flag": false,
"exposures": [],
"policy_countries": [
"Russia",
"Iran",
"North Korea"
],
"review_only_matches": 0,
"assessed_self_published_locations": 6
},
"components": [
{
"key": "policy_exposure_multiplier",
"name": "Policy exposure multiplier",
"detail": "no confirmed policy-scope location match",
"points": 100,
"status": "met",
"details": [
{
"code": "jurisdiction_no_match",
"params": {}
}
],
"max_points": 100
}
]
}
],
"description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
},
{
"key": "ai_readiness",
"band": "moderate",
"name": "AI Readiness",
"value": 50,
"weight": 0,
"metrics": [
{
"key": "ai_agent_context",
"band": "critical",
"name": "Agent context & guidance",
"note": null,
"notes": [],
"value": 24,
"inputs": {
"has_llms_txt": false,
"legible_history_share": 0.458,
"agent_instruction_files": [],
"agent_instruction_max_bytes": null
},
"components": [
{
"key": "agent_instructions",
"name": "Agent instructions",
"detail": "no CLAUDE.md / AGENTS.md / editor rules",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_agent_instructions",
"params": {}
}
],
"max_points": 45
},
{
"key": "machine_readable_docs_llms_txt",
"name": "Machine-readable docs (llms.txt)",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
},
{
"key": "legible_commit_history",
"name": "Legible commit history",
"detail": "44 of 96 human commits state their intent (structured subject or explanatory body)",
"points": 24.4,
"status": "partial",
"details": [
{
"code": "legible_history",
"params": {
"legible": 44,
"sampled": 96
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "moderate",
"name": "Verify loop (build / test / typecheck)",
"note": null,
"notes": [],
"value": 51,
"inputs": {
"has_nix": false,
"has_tests": true,
"lockfiles": [
"package-lock.json"
],
"has_dockerfile": false,
"typed_language": true,
"bootstrap_files": [],
"has_devcontainer": false,
"has_linter_config": false,
"typecheck_configs": [
"tsconfig.json"
],
"agent_commit_share": 0.04,
"toolchain_manifests": [],
"dependency_bot_commit_share": 0
},
"components": [
{
"key": "one_command_bootstrap",
"name": "One-command bootstrap",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 18
},
{
"key": "automated_tests",
"name": "Automated tests",
"detail": null,
"points": 22,
"status": "met",
"details": [],
"max_points": 22
},
{
"key": "lint_format_config",
"name": "Lint / format config",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 11
},
{
"key": "static_type_checking",
"name": "Static type checking",
"detail": "tsconfig.json",
"points": 11,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "tsconfig.json"
}
}
],
"max_points": 11
},
{
"key": "reproducible_environment",
"name": "Reproducible environment",
"detail": "lockfile",
"points": 10,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "lockfile"
}
}
],
"max_points": 10
},
{
"key": "demonstrated_agent_practice",
"name": "Demonstrated agent practice",
"detail": "4 of the last 100 commits agent-authored or agent-credited",
"points": 8,
"status": "partial",
"details": [
{
"code": "agent_authored_commits",
"params": {
"count": 4,
"sampled": 100
}
}
],
"max_points": 10
},
{
"key": "automated_maintenance",
"name": "Automated maintenance",
"detail": "no automated dependency updates observed",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_dependency_automation",
"params": {}
}
],
"max_points": 8
},
{
"key": "openssf_scorecard_pinned_dependencies",
"name": "OpenSSF Scorecard: Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "ai_code_legibility",
"band": "excellent",
"name": "Code legibility for models",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"primary_language": "TypeScript",
"largest_source_bytes": 51316,
"source_files_sampled": 36,
"oversized_source_files": 0
},
"components": [
{
"key": "type_checkable_code",
"name": "Type-checkable code",
"detail": "TypeScript (statically typed)",
"points": 45,
"status": "met",
"details": [
{
"code": "statically_typed_language",
"params": {
"language": "TypeScript"
}
}
],
"max_points": 45
},
{
"key": "manageable_file_sizes",
"name": "Manageable file sizes",
"detail": "0/36 source files over 60KB",
"points": 55,
"status": "met",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 36,
"oversized": 0
}
}
],
"max_points": 55
}
]
}
],
"description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
}
],
"metrics_version": "1.13.0"
},
"warnings": [
"Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token"
],
"report_type": "repository",
"generated_at": "2026-07-25T06:50:17.018697Z",
"schema_version": "0.27.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/i/ip-num/ip-num.svg",
"full_name": "ip-num/ip-num",
"license_state": "standard",
"license_spdx": "MIT"
}