Raw JSON report machine-readable
{
"data": {
"repo": {
"topics": [
"javascript",
"typescript",
"utilities",
"utils",
"validation",
"web"
],
"is_fork": false,
"size_kb": 672,
"has_wiki": true,
"homepage": "https://www.npmjs.com/package/web-utils-kit",
"languages": {
"TypeScript": 199672
},
"pushed_at": "2026-07-18T19:09:42Z",
"created_at": "2024-12-03T12:27:24Z",
"owner_type": "User",
"updated_at": "2026-07-18T16:13:14Z",
"description": "The web-utils-kit package provides a collection of well-tested and thoroughly documented utility functions for various web development needs. Each function adheres to a strict coding style and best practices to ensure consistency and maintainability.",
"is_archived": false,
"is_disabled": false,
"license_spdx": "MIT",
"default_branch": "main",
"license_spdx_raw": "MIT",
"primary_language": "TypeScript",
"significant_languages": [
"TypeScript"
]
},
"owner": {
"blog": "https://jesusgraterol.dev/",
"name": "Jesus Graterol",
"type": "User",
"login": "jesusgraterol",
"company": null,
"location": "El Yaque, Nueva Esparta, Venezuela",
"followers": 105,
"avatar_url": "https://avatars.githubusercontent.com/u/136823357?v=4",
"created_at": "2023-06-16T13:48:39Z",
"is_verified": null,
"public_repos": 62,
"account_age_days": 1133
},
"license": {
"state": "standard",
"spdx_id": "MIT",
"raw_spdx": "MIT",
"file_present": true,
"scorecard_found": true,
"profile_has_license": true
},
"activity": {
"releases": [
{
"tag": "v1.3.1",
"kind": "patch",
"published_at": "2026-07-18T16:13:05Z"
},
{
"tag": "v1.3.0",
"kind": "minor",
"published_at": "2026-07-14T15:50:11Z"
},
{
"tag": "v1.2.11",
"kind": "patch",
"published_at": "2026-06-29T21:54:46Z"
},
{
"tag": "v1.2.10",
"kind": "patch",
"published_at": "2026-06-28T20:05:22Z"
},
{
"tag": "v1.2.9",
"kind": "patch",
"published_at": "2026-06-26T12:32:48Z"
},
{
"tag": "v1.2.8",
"kind": "patch",
"published_at": "2026-06-22T19:07:23Z"
},
{
"tag": "v1.2.7",
"kind": "patch",
"published_at": "2026-06-15T17:56:41Z"
},
{
"tag": "v1.2.6",
"kind": "patch",
"published_at": "2026-06-15T17:46:51Z"
},
{
"tag": "v1.2.5",
"kind": "patch",
"published_at": "2026-06-15T16:22:12Z"
},
{
"tag": "v1.2.4",
"kind": "patch",
"published_at": "2026-06-15T13:44:01Z"
},
{
"tag": "v1.2.3",
"kind": "patch",
"published_at": "2026-06-11T21:22:58Z"
},
{
"tag": "v1.2.2",
"kind": "patch",
"published_at": "2026-06-11T13:48:06Z"
},
{
"tag": "v1.2.1",
"kind": "patch",
"published_at": "2026-06-09T20:34:05Z"
},
{
"tag": "v1.2.0",
"kind": "minor",
"published_at": "2026-06-06T21:50:18Z"
},
{
"tag": "v1.1.7",
"kind": "patch",
"published_at": "2026-06-04T11:48:23Z"
},
{
"tag": "v1.1.6",
"kind": "patch",
"published_at": "2026-05-11T20:29:45Z"
},
{
"tag": "v1.1.5",
"kind": "patch",
"published_at": "2026-05-01T01:15:48Z"
},
{
"tag": "v1.1.4",
"kind": "patch",
"published_at": "2026-04-16T14:31:21Z"
},
{
"tag": "v1.1.3",
"kind": "patch",
"published_at": "2026-04-16T13:42:35Z"
},
{
"tag": "v1.1.2",
"kind": "patch",
"published_at": "2026-04-16T13:35:39Z"
},
{
"tag": "v1.1.1",
"kind": "patch",
"published_at": "2026-04-10T19:36:16Z"
},
{
"tag": "v1.1.0",
"kind": "minor",
"published_at": "2026-03-19T15:20:07Z"
},
{
"tag": "v1.0.16",
"kind": "patch",
"published_at": "2026-03-17T15:54:19Z"
},
{
"tag": "v1.0.15",
"kind": "patch",
"published_at": "2026-03-16T17:46:06Z"
},
{
"tag": "v1.0.14",
"kind": "patch",
"published_at": "2026-03-16T17:41:34Z"
},
{
"tag": "v1.0.13",
"kind": "patch",
"published_at": "2026-03-16T13:41:27Z"
},
{
"tag": "v1.0.9",
"kind": "patch",
"published_at": "2025-11-22T18:01:12Z"
},
{
"tag": "v1.0.8",
"kind": "patch",
"published_at": "2025-07-30T12:36:24Z"
},
{
"tag": "v1.0.7",
"kind": "patch",
"published_at": "2025-07-29T23:45:25Z"
},
{
"tag": "v1.0.6",
"kind": "patch",
"published_at": "2025-07-28T12:07:49Z"
},
{
"tag": "v1.0.5",
"kind": "patch",
"published_at": "2025-02-11T22:23:29Z"
},
{
"tag": "v1.0.4",
"kind": "patch",
"published_at": "2025-01-14T13:40:14Z"
},
{
"tag": "v1.0.3",
"kind": "patch",
"published_at": "2024-12-06T14:24:50Z"
},
{
"tag": "v1.0.2",
"kind": "patch",
"published_at": "2024-12-05T20:54:25Z"
},
{
"tag": "v1.0.1",
"kind": "patch",
"published_at": "2024-12-05T20:18:49Z"
},
{
"tag": "v1.0.0",
"kind": "major",
"published_at": "2024-12-05T19:46:25Z"
}
],
"recent_commits": [
{
"oid": "16accc0787600a922c91489b4315848cc4e9d619",
"body": "Implement, test and document the applyDefaults fn",
"is_bot": false,
"headline": "Merge pull request #44 from jesusgraterol/1.3.1",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-07-18T16:13:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2e151cd2f60eb286a7a1fa4fc7b479b9c2edfe33",
"body": "Signed-off-by: Jesus Graterol <jesusgraterol.dev@protonmail.com>",
"is_bot": false,
"headline": "Implement, test and document the applyDefaults fn",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-07-18T16:12:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5eda923ad77788fe2e5bee1bbfd9ee923c219be1",
"body": "Fix email validation function and prepare for v1.3.0 release",
"is_bot": false,
"headline": "Merge pull request #43 from jesusgraterol/1.3.0",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-07-14T15:50:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "28c5ce3115240d542446ef85b02bd8bc2996b180",
"body": "Signed-off-by: Jesus Graterol <jesusgraterol.dev@protonmail.com>",
"is_bot": false,
"headline": "Complete v1.3.0",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-07-14T15:47:32Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "16b37864fefc3455dfa848f211348a0859140812",
"body": "Signed-off-by: Jesus Graterol <jesusgraterol.dev@protonmail.com>",
"is_bot": false,
"headline": "The package is now production ready",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-07-14T15:46:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2c3dba14978d24280ff09f29f33cea454cb99b89",
"body": "Signed-off-by: Jesus Graterol <jesusgraterol.dev@protonmail.com>",
"is_bot": false,
"headline": "Upgrade package and implement test-utils module",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-07-14T15:31:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1ad3586486f5819ce22f5ae2e026a1cc7fd8a5d0",
"body": "Signed-off-by: Jesus Graterol <jesusgraterol.dev@protonmail.com>",
"is_bot": false,
"headline": "Fix isEmailValid fn",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-07-14T14:04:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "31453c19fb96887cf2d2a90df4eaff14b3e1622e",
"body": "Deprecate encodeError, update placeholder handling, and document function",
"is_bot": false,
"headline": "Merge pull request #42 from jesusgraterol/1.2.11",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-06-29T21:54:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "58651b587d35429b748645ed95094d54c5cf8538",
"body": "Signed-off-by: Jesus Graterol <jesusgraterol.dev@protonmail.com>",
"is_bot": false,
"headline": "Document the extractSubstitutionPlaceholderNames fn",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-06-29T21:54:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c73cb472a498a1944e8d490398763394651f9627",
"body": "Signed-off-by: Jesus Graterol <jesusgraterol.dev@protonmail.com>",
"is_bot": false,
"headline": "Empty spaces are no longer considered placeholders",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-06-29T21:52:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b0462a2cce429a2888c580e81d05d91c7ef79028",
"body": "Signed-off-by: Jesus Graterol <jesusgraterol.dev@protonmail.com>",
"is_bot": false,
"headline": "Deprecate the use of encodeError in favor of Exception",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-06-29T21:23:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "183fc52cd57337a346917652236c260871975327",
"body": "Implement, test and document normalizeQuery fn",
"is_bot": false,
"headline": "Merge pull request #41 from jesusgraterol/1.2.10",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-06-28T20:05:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d52f25dce7ddb984c19a2c5abbc1f59b2b174286",
"body": "Signed-off-by: Jesus Graterol <jesusgraterol.dev@protonmail.com>",
"is_bot": false,
"headline": "Implement, test and document normalizeQuery fn",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-06-28T20:04:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ee04a63f668dd7bf8b8086928bf96988360b7664",
"body": "Implement, test, and document generateDateId function",
"is_bot": false,
"headline": "Merge pull request #40 from jesusgraterol/1.2.9",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-06-26T12:32:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4d882d650eddcbc1403a28af5ab3131baff40e38",
"body": "Signed-off-by: Jesus Graterol <jesusgraterol.dev@protonmail.com>",
"is_bot": false,
"headline": "Include missing tests and improve docs",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-06-26T12:32:03Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "72c8fc3a622f4d312b6153bed85e7b5aeb81da28",
"body": "Signed-off-by: Jesus Graterol <jesusgraterol.dev@protonmail.com>",
"is_bot": false,
"headline": "Implement, test and document the generateDateId fn",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-06-26T12:29:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2854b0a4f3116ebc62343412e21056affc76b21e",
"body": "Implement, test and document the extractFirstMarkdownHeadingName fn",
"is_bot": false,
"headline": "Merge pull request #39 from jesusgraterol/1.2.8",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-06-22T19:07:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f0deb7bfb138583f3b9b942d1b4ad54c864209b8",
"body": "Signed-off-by: Jesus Graterol <jesusgraterol.dev@protonmail.com>",
"is_bot": false,
"headline": "Implement, test and document the extractFirstMarkdownHeadingName fn",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-06-22T19:06:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c35bdd914903868819fbd47387c2d118805f162b",
"body": "Improve typing",
"is_bot": false,
"headline": "Merge pull request #38 from jesusgraterol/1.2.7",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-06-15T17:56:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9cd149b91f9ccf1bf0a5468544f1cbd28350ccc3",
"body": "Signed-off-by: Jesus Graterol <jesusgraterol.dev@protonmail.com>",
"is_bot": false,
"headline": "Improve typing",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-06-15T17:56:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "08282d50246997966b228b2764f457921a3641dd",
"body": "Expose sortRecordsWithDateValue fn",
"is_bot": false,
"headline": "Merge pull request #37 from jesusgraterol/1.2.6",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-06-15T17:46:51Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fb365ca2fb0b24075f2be2c48ce9819549f30900",
"body": "Signed-off-by: Jesus Graterol <jesusgraterol.dev@protonmail.com>",
"is_bot": false,
"headline": "Expose sortRecordsWithDateValue fn",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-06-15T17:46:26Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c7c454f89f6faf9554a8d4858ad2ced97e93b038",
"body": "Implement, test, and document date utility functions",
"is_bot": false,
"headline": "Merge pull request #36 from jesusgraterol/1.2.5",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-06-15T16:22:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0d2419839360ef628f9e9e87275e29d984bdb6db",
"body": "Signed-off-by: Jesus Graterol <jesusgraterol.dev@protonmail.com>",
"is_bot": false,
"headline": "Implement, test and document the sortRecordsWithDateValue fn",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-06-15T16:21:32Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ba2f3a5eaa623f988e79dee9f4d159e3b6a058ac",
"body": "Signed-off-by: Jesus Graterol <jesusgraterol.dev@protonmail.com>",
"is_bot": false,
"headline": "Implement, test and document the toDate fn",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-06-15T16:06:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "df9a67f8ad814a533fecb071f5b1bb23f105e96d",
"body": "Implement and document utility functions with BigInt support",
"is_bot": false,
"headline": "Merge pull request #35 from jesusgraterol/1.2.4",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-06-15T13:44:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8edb7d3ebbbc907117989354d063f9e6d3c64f4e",
"body": "Signed-off-by: Jesus Graterol <jesusgraterol.dev@protonmail.com>",
"is_bot": false,
"headline": "Implement, test and document the sortRecordsWithBigIntString fn",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-06-15T13:42:26Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e64f2c119a4a951056b2f735d08963fe7f62d6e1",
"body": "Signed-off-by: Jesus Graterol <jesusgraterol.dev@protonmail.com>",
"is_bot": false,
"headline": "Sorting utils now support BigInt values",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-06-15T13:31:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "40ba782756567a6fe6a98282682b166973763b26",
"body": "Signed-off-by: Jesus Graterol <jesusgraterol.dev@protonmail.com>",
"is_bot": false,
"headline": "Implement, test and document prettifyPercentage fn",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-06-15T12:46:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "94cada3ae10dc30be7902ecef0aa27ef6e9bbd42",
"body": "Signed-off-by: Jesus Graterol <jesusgraterol.dev@protonmail.com>",
"is_bot": false,
"headline": "Implement, test and document the prettifyTime fn",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-06-15T12:34:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ca888f1208fb3826645fe07360b1ff2982faaf16",
"body": "Expose isEqual fn",
"is_bot": false,
"headline": "Merge pull request #34 from jesusgraterol/1.2.3",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-06-11T21:22:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "100a27a4abae0e0d0d501722e21c5924860e538a",
"body": "Signed-off-by: Jesus Graterol <jesusgraterol.dev@protonmail.com>",
"is_bot": false,
"headline": "Expose isEqual fn",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-06-11T21:22:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8e16a83f66d686e75f54799e042765e72128161b",
"body": "Implement and test the getNextPageParam fn",
"is_bot": false,
"headline": "Merge pull request #33 from jesusgraterol/1.2.2",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-06-11T13:48:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "624a3ab4eed2e94c6aed651eb8ccb2f2cb894d0d",
"body": "Signed-off-by: Jesus Graterol <jesusgraterol.dev@protonmail.com>",
"is_bot": false,
"headline": "Implement and test the getNextPageParam fn",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-06-11T13:47:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "eb5063b409c4badd6ee6881dd5cbf64d441bd24f",
"body": "Implement and test the getInitials fn",
"is_bot": false,
"headline": "Merge pull request #32 from jesusgraterol/1.2.1",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-06-09T20:34:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "04c9654aa0316876a78b0e0a584d096ea6dd3646",
"body": "Signed-off-by: Jesus Graterol <jesusgraterol.dev@protonmail.com>",
"is_bot": false,
"headline": "Implement and test the getInitials fn",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-06-09T20:33:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "afb33ccf8f12c7e4981f9054e67997101687763f",
"body": "Deprecate retryExternalRequest fn",
"is_bot": false,
"headline": "Merge pull request #31 from jesusgraterol/1.2.0",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-06-06T21:50:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "75ed0564b609f170c36b31d9710acddb86514c92",
"body": "Signed-off-by: Jesus Graterol <jesusgraterol.dev@protonmail.com>",
"is_bot": false,
"headline": "Deprecate retryExternalRequest fn",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-06-06T21:49:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c4eeb72c30b08cd04d62146933f8320ff2785287",
"body": "Fix dependency vulnerabilities and implement stringifyValue fn",
"is_bot": false,
"headline": "Merge pull request #30 from jesusgraterol/1.1.7",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-06-04T11:48:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "616ee5d9693c19e55d56604e9c2d1e3e089790b0",
"body": "…itutions fn\n\nSigned-off-by: Jesus Graterol <jesusgraterol.dev@protonmail.com>",
"is_bot": false,
"headline": "Implement and test the stringifyValue and plug it into the applySubst…",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-06-04T11:46:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "edefffe66f19674aaa604d0e7edd20a8ecfd8c29",
"body": "Signed-off-by: Jesus Graterol <jesusgraterol.dev@protonmail.com>",
"is_bot": false,
"headline": "Fix dependency vulnerabilities",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-06-04T11:29:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b5f375656d33933c1c9ea796d1d0fa073c9d0ab2",
"body": "1.1.6: Expose the isNumeric fn",
"is_bot": false,
"headline": "Merge pull request #29 from jesusgraterol/1.1.6",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-05-11T20:29:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5d979fb9abfecbf0d3bb8ab5f5976c711d037e9e",
"body": "Signed-off-by: Jesus Graterol <jesusgraterol.dev@protonmail.com>",
"is_bot": false,
"headline": "Expose the isNumeric fn",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-05-11T20:27:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3e05b7c30266dd841a4625c9c55d3b5662ed0289",
"body": "1.1.5: Implement extractTokenFromAuthorizationHeader & extractEmailUsername fns",
"is_bot": false,
"headline": "Merge pull request #28 from jesusgraterol/1.1.5",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-05-01T01:15:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1c130501fe6b8be47f6c71f0ea4d5d552696b6ea",
"body": "Signed-off-by: Jesus Graterol <jesusgraterol.dev@protonmail.com>",
"is_bot": false,
"headline": "Remove unnecessary imports",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-05-01T01:14:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fea433a86e119044257e307e7de9ead2e9c83572",
"body": "Signed-off-by: Jesus Graterol <jesusgraterol.dev@protonmail.com>",
"is_bot": false,
"headline": "Update package-lock.json file",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-05-01T01:12:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b788c578283d351688dc81246df34d35d8055f72",
"body": "Signed-off-by: Jesus Graterol <jesusgraterol.dev@protonmail.com>",
"is_bot": false,
"headline": "Implement, test and document the extractEmailUsername function",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-05-01T01:06:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8baa73c3b073c220ce106c4fb7d2bd48c2f8a4e4",
"body": "…function\n\nSigned-off-by: Jesus Graterol <jesusgraterol.dev@protonmail.com>",
"is_bot": false,
"headline": "Implement, test and document the extractTokenFromAuthorizationHeader …",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-05-01T00:50:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e1aaa5c5cdd1656f88b8503de9b8b26977ff4a0f",
"body": "… not just JWT\n\nSigned-off-by: Jesus Graterol <jesusgraterol.dev@protonmail.com>",
"is_bot": false,
"headline": "Adjust isAuthorizationHeaderValid fn so it accepts any kind of token,…",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-05-01T00:35:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "98d5a5371ddc1bc93711c1505107958c3270bcb6",
"body": "Signed-off-by: Jesus Graterol <jesusgraterol.dev@protonmail.com>",
"is_bot": false,
"headline": "Fix dependency vulnerabilities",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-05-01T00:27:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9851cd149554797de9fd0c74c0362bccb00aa1ab",
"body": "Add status code 422 to the list of nonRetryiableCodes",
"is_bot": false,
"headline": "Merge pull request #27 from jesusgraterol/1.1.4",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-04-16T14:31:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8bada1eda65cab6b9695763edbb045730736b4c4",
"body": "Signed-off-by: Jesus Graterol <jesusgraterol.dev@protonmail.com>",
"is_bot": false,
"headline": "Add status code 422 to the list of nonRetryiableCodes",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-04-16T14:30:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0113c508f8c79ce6f2dd8bc463dbb3fbd606e9d5",
"body": "Include missing export",
"is_bot": false,
"headline": "Merge pull request #26 from jesusgraterol/1.1.3",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-04-16T13:42:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8706c2538a04623474c45e9cfe0aaa56fe78290f",
"body": "Signed-off-by: Jesus Graterol <jesusgraterol.dev@protonmail.com>",
"is_bot": false,
"headline": "Include missing export",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-04-16T13:42:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "23afd595e14191d629bc690b5d244ac2be932acd",
"body": "Implement, test and document the retryExternalRequest function",
"is_bot": false,
"headline": "Merge pull request #25 from jesusgraterol/1.1.2",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-04-16T13:35:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2e59cb85073db372b8e37ad266f341df8298b728",
"body": "Signed-off-by: Jesus Graterol <jesusgraterol.dev@protonmail.com>",
"is_bot": false,
"headline": "Implement, test and document the retryExternalRequest function",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-04-16T13:34:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b692e4a9a75744ab56869189c545213c9bf6c95f",
"body": "Fix the way errors are handled in the stringifyJSON fn",
"is_bot": false,
"headline": "Merge pull request #24 from jesusgraterol/1.0.1",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-04-10T19:36:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5d1411312f3d48e35cb2be4bd84e5f1eab2dfd74",
"body": "Signed-off-by: Jesus Graterol <jesusgraterol.dev@protonmail.com>",
"is_bot": false,
"headline": "Fix the way errors are handled in the stringifyJSON fn",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-04-10T19:35:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1269770ad540cca076da31ef8e8ef846b8138087",
"body": "1.1.0 - Upgrade the isStringValid fn to also enable devs to disallow strings that only contain spaces, and improve the toSlug transformer to ensure the output is validated and URL-compatible. Finally, implemented the toMS fn based on the popular ms package",
"is_bot": false,
"headline": "Merge pull request #23 from jesusgraterol/1.1.0",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-03-19T15:20:07Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bd8437e9dbe50df2215b8130ad6a1d82fe98f993",
"body": "Signed-off-by: Jesus Graterol <jesusgraterol.dev@protonmail.com>",
"is_bot": false,
"headline": "Implement, test and document the toMS fn",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-03-19T15:12:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9e0694acda4b08bb13ba1e4454d02f06e357aef8",
"body": "Signed-off-by: Jesus Graterol <jesusgraterol.dev@protonmail.com>",
"is_bot": false,
"headline": "Complete initial implementation of the toMS fn",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-03-19T14:07:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "dc113ced37570eb99873c06255206633198ea2fa",
"body": "Signed-off-by: Jesus Graterol <jesusgraterol.dev@protonmail.com>",
"is_bot": false,
"headline": "Init the implementation of the toMS",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-03-19T13:03:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8c8073e39fc6b64d20da0b988d0282481ae2176d",
"body": "Signed-off-by: Jesus Graterol <jesusgraterol.dev@protonmail.com>",
"is_bot": false,
"headline": "Improve the structure of the modules",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-03-19T12:16:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "45c2a3ea210e8484761213b33ca9eb7f3883a293",
"body": "…s that are comprised of just spaces\n\nSigned-off-by: Jesus Graterol <jesusgraterol.dev@protonmail.com>",
"is_bot": false,
"headline": "Upgrade the isStringValid fn to enable devs to easily disallow string…",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-03-19T11:53:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "568a7b4597a46f0ca030fdea0a2637f53e043b4b",
"body": "Signed-off-by: Jesus Graterol <jesusgraterol.dev@protonmail.com>",
"is_bot": false,
"headline": "The toSlug fn now throws an error if it fails to slugify a string",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-03-19T11:02:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "172dab93f90e5c7148a122ff432c23d026cb0423",
"body": "Signed-off-by: Jesus Graterol <jesusgraterol.dev@protonmail.com>",
"is_bot": false,
"headline": "Improve slug-related fns",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-03-18T23:38:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a954ebae1d85376400994a3f61b6b4e651db0b35",
"body": "Signed-off-by: Jesus Graterol <jesusgraterol.dev@protonmail.com>",
"is_bot": false,
"headline": "Improve structure and docs",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-03-18T23:09:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4be57665c57667a6507e2d78d040d32e822ec9ca",
"body": "Update dependencies",
"is_bot": false,
"headline": "Merge pull request #22 from jesusgraterol/1.0.16",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-03-17T15:54:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "564e820288b32ee0b999025d6334c56afe2063fc",
"body": "Signed-off-by: Jesus Graterol <jesusgraterol.dev@protonmail.com>",
"is_bot": false,
"headline": "Update dependencies",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-03-17T15:53:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fdf38349df3b45f93732c9118fbd99ab05b94a87",
"body": "Bump GH actions to use Node.js v24^",
"is_bot": false,
"headline": "Merge pull request #21 from jesusgraterol/1.0.14",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-03-16T17:46:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f185e2e0de0d2f0e5c3998a04f730880b9de4aa5",
"body": "Signed-off-by: Jesus Graterol <jesusgraterol.dev@protonmail.com>",
"is_bot": false,
"headline": "Bump GH actions to use Node.js v24^",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-03-16T17:45:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "74ddd572cf893491f6869f5d4b2de2a9848287f3",
"body": "Fix npm vulnerabilities",
"is_bot": false,
"headline": "Merge pull request #20 from jesusgraterol/1.0.14",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-03-16T17:41:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f323894c1e84815bca680fabedaf09c4082940fd",
"body": "Signed-off-by: Jesus Graterol <jesusgraterol.dev@protonmail.com>",
"is_bot": false,
"headline": "Fix npm vulnerabilities",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-03-16T17:39:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8d6f9505067651c94d04ba9844d00835e241c57f",
"body": "Fix permissioning issue in the workflow",
"is_bot": false,
"headline": "Merge pull request #19 from jesusgraterol/1.0.10",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-03-16T13:41:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "471baf7aa31c93909dc0c1d77e1e1122711e7396",
"body": "Signed-off-by: Jesus Graterol <jesusgraterol.dev@protonmail.com>",
"is_bot": false,
"headline": "Fix permissioning issue in the workflow",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-03-16T13:40:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c2f87777fdf4fcef49cd9e96dd94adf469b4e2d4",
"body": "Bump version to 1.0.12 and update repository info",
"is_bot": false,
"headline": "Merge pull request #18 from jesusgraterol/1.0.10",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-03-16T13:35:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ff1144c5018574367f29360fe8cc772c74442c64",
"body": "Updated version number and repository details.",
"is_bot": false,
"headline": "Bump version to 1.0.12 and update repository info",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-03-16T13:34:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c3007889313bddffbc4c3129f8653c7e423fea3d",
"body": "Bump version from 1.0.10 to 1.0.11",
"is_bot": false,
"headline": "Merge pull request #17 from jesusgraterol/1.0.10",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-03-16T13:20:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a512c680f2aeeb9b547d2b2c9dbf5a944d9103ac",
"body": null,
"is_bot": false,
"headline": "Bump version from 1.0.10 to 1.0.11",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-03-16T13:20:26Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c97ceccb3c1280fb35dd48d42b76635cb0702190",
"body": "Update repository URL in package.json",
"is_bot": false,
"headline": "Merge pull request #16 from jesusgraterol/1.0.10",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-03-16T13:15:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a9699d89aed8c7b1ecee639fc81b8a1e2819cb9c",
"body": null,
"is_bot": false,
"headline": "Update repository URL in package.json",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-03-16T13:14:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8ef43f354d4123578d27646e5f8f9ff37ddf1f98",
"body": "Remove access flag from npm publish command",
"is_bot": false,
"headline": "Merge pull request #15 from jesusgraterol/1.0.10",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-03-16T13:13:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "44640801faffb7abf806035473934befdb71a09d",
"body": null,
"is_bot": false,
"headline": "Remove access flag from npm publish command",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-03-16T13:13:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "973f2c8e6ca7a80da7295fcf139882755e92f1ac",
"body": "Change npm publish command to public access",
"is_bot": false,
"headline": "Merge pull request #14 from jesusgraterol/1.0.10",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-03-16T13:06:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "53e3af49cc7aa90c9d015ae1ab8333caf58974bd",
"body": null,
"is_bot": false,
"headline": "Change npm publish command to public access",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-03-16T13:06:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "53c06abdd4d8b2905ea5624a180230919f322dc7",
"body": "Add provenance flag to npm publish command",
"is_bot": false,
"headline": "Merge pull request #13 from jesusgraterol/1.0.10",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-03-16T12:57:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7442fc136ca98c0f2855253547e0af1ebed20185",
"body": null,
"is_bot": false,
"headline": "Add provenance flag to npm publish command",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-03-16T12:57:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0d7eaaa46773a101e192703937931c040374411a",
"body": "Update Node.js version to 24 in publish workflow",
"is_bot": false,
"headline": "Merge pull request #12 from jesusgraterol/1.0.10",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-03-16T12:54:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d7024d8ca7a8e89db315f4c96bb84b149adbadf3",
"body": null,
"is_bot": false,
"headline": "Update Node.js version to 24 in publish workflow",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-03-16T12:54:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4aae94a52f56b377ce5b61e742c5e46e2201a7fd",
"body": "Update workflow file to match the one in the docs",
"is_bot": false,
"headline": "Merge pull request #11 from jesusgraterol/1.0.10",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-03-16T11:48:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c150c063ca2d2325486e1533d1cb1ac59f4f8d37",
"body": "Signed-off-by: Jesus Graterol <jesusgraterol.dev@protonmail.com>",
"is_bot": false,
"headline": "Update workflow file to match the one in the docs",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-03-16T11:48:32Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7c313f4a5c036febd5099a76fd48a872d0495564",
"body": "Modify workflow",
"is_bot": false,
"headline": "Merge pull request #10 from jesusgraterol/1.0.10",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-03-16T11:45:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "15162b97d748bc866cb79949523a656bc01b2906",
"body": "Signed-off-by: Jesus Graterol <jesusgraterol.dev@protonmail.com>",
"is_bot": false,
"headline": "Modify workflow",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-03-16T11:45:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "067b38afb453d339ba42ba3e79c8f52b06a4f9b3",
"body": "Fix workflow permission location",
"is_bot": false,
"headline": "Merge pull request #9 from jesusgraterol/1.0.10",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-03-16T11:41:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4e4a683f8d689de19d8c53e2ec5fed4efe3f7b82",
"body": "Signed-off-by: Jesus Graterol <jesusgraterol.dev@protonmail.com>",
"is_bot": false,
"headline": "Fix workflow permission location",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-03-16T11:41:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9f9a316a94d4d3a21d022e8b4f81c90b0350f2be",
"body": "Add workflow permissions",
"is_bot": false,
"headline": "Merge pull request #8 from jesusgraterol/1.0.10",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-03-16T11:36:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8142611b2038d4594b4e02091f0797d7b89f644e",
"body": "Signed-off-by: Jesus Graterol <jesusgraterol.dev@protonmail.com>",
"is_bot": false,
"headline": "Add workflow permissions",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-03-16T11:35:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "464cd97bd2fb79be76a337446337c0540f120ff8",
"body": "Add provenance and access as flags",
"is_bot": false,
"headline": "Merge pull request #7 from jesusgraterol/1.0.10",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-03-16T11:32:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5735d17e01457bd24e55fa68508f457fc1ed4c85",
"body": "Signed-off-by: Jesus Graterol <jesusgraterol.dev@protonmail.com>",
"is_bot": false,
"headline": "Add provenance and access as flags",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-03-16T11:32:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0d68180417c17bc74e701f2f6a9192b9c11f8161",
"body": "Fix workflow",
"is_bot": false,
"headline": "Merge pull request #6 from jesusgraterol/1.0.10",
"author_name": "Jesus Graterol",
"author_login": "jesusgraterol",
"committed_at": "2026-03-16T11:30:07Z",
"body_truncated": false,
"is_coding_agent": false
}
],
"releases_count": 36,
"commits_last_year": 121,
"latest_release_at": "2026-07-18T16:13:05Z",
"latest_release_tag": "v1.3.1",
"releases_from_tags": true,
"days_since_last_push": 5,
"active_weeks_last_year": 13,
"days_since_latest_release": 5,
"mean_days_between_releases": 3.7
},
"community": {
"has_readme": true,
"has_license": true,
"has_description": true,
"has_contributing": false,
"health_percentage": 42,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": false
},
"ecosystem": {
"packages": [
{
"name": "web-utils-kit",
"exists": true,
"license": "MIT",
"keywords": [
"web",
"utils",
"utility",
"javascript",
"typescript",
"validation"
],
"ecosystem": "npm",
"matches_repo": true,
"registry_url": "https://www.npmjs.com/package/web-utils-kit",
"is_deprecated": false,
"latest_version": "1.3.1",
"repository_url": "https://github.com/jesusgraterol/web-utils-kit",
"versions_count": 39,
"total_downloads": null,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": 1,
"monthly_downloads": 2153,
"first_published_at": "2024-12-05T20:16:12.569000Z",
"latest_published_at": "2026-07-18T16:13:34.834000Z",
"latest_version_yanked": null,
"days_since_latest_publish": 5
}
]
},
"popularity": {
"forks": 0,
"stars": 0,
"watchers": 1,
"fork_history": {
"days": [],
"complete": true,
"collected": 0,
"total_forks": 0
},
"star_history": {
"days": [],
"complete": true,
"collected": 0,
"total_stars": 0,
"collected_at": null
},
"open_issues_and_prs": 0
},
"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": 31209,
"source_files_sampled": 57,
"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": [],
"collected": true,
"malicious": [],
"truncated": false,
"by_severity": {},
"advisory_count": 0,
"affected_count": 0,
"assessed_count": 340,
"malicious_count": 0,
"assessed_package": null,
"unassessed_count": 0,
"direct_affected_count": 0
},
"ecosystems": [
"npm"
],
"dependencies": [
{
"name": "error-message-utils",
"manifest": "package.json",
"ecosystem": "npm",
"version_constraint": "1.2.10"
},
{
"name": "uuid",
"manifest": "package.json",
"ecosystem": "npm",
"version_constraint": "14.0.0"
}
],
"all_dependencies": {
"error": null,
"source": "github-sbom",
"packages": [
{
"name": "error-message-utils",
"direct": true,
"version": "1.2.10",
"ecosystem": "npm"
},
{
"name": "uuid",
"direct": true,
"version": "14.0.0",
"ecosystem": "npm"
},
{
"name": "@emnapi/core",
"direct": false,
"version": "1.11.1",
"ecosystem": "npm"
},
{
"name": "@emnapi/runtime",
"direct": false,
"version": "1.11.1",
"ecosystem": "npm"
},
{
"name": "@emnapi/wasi-threads",
"direct": false,
"version": "1.2.2",
"ecosystem": "npm"
},
{
"name": "@eslint-community/eslint-utils",
"direct": false,
"version": "4.9.1",
"ecosystem": "npm"
},
{
"name": "@eslint-community/regexpp",
"direct": false,
"version": "4.12.2",
"ecosystem": "npm"
},
{
"name": "@eslint/eslintrc",
"direct": false,
"version": "2.1.4",
"ecosystem": "npm"
},
{
"name": "@eslint/js",
"direct": false,
"version": "8.57.1",
"ecosystem": "npm"
},
{
"name": "@humanwhocodes/config-array",
"direct": false,
"version": "0.13.0",
"ecosystem": "npm"
},
{
"name": "@humanwhocodes/module-importer",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "@humanwhocodes/object-schema",
"direct": false,
"version": "2.0.3",
"ecosystem": "npm"
},
{
"name": "@jridgewell/gen-mapping",
"direct": false,
"version": "0.3.13",
"ecosystem": "npm"
},
{
"name": "@jridgewell/resolve-uri",
"direct": false,
"version": "3.1.2",
"ecosystem": "npm"
},
{
"name": "@jridgewell/source-map",
"direct": false,
"version": "0.3.11",
"ecosystem": "npm"
},
{
"name": "@jridgewell/sourcemap-codec",
"direct": false,
"version": "1.5.5",
"ecosystem": "npm"
},
{
"name": "@jridgewell/trace-mapping",
"direct": false,
"version": "0.3.31",
"ecosystem": "npm"
},
{
"name": "@napi-rs/wasm-runtime",
"direct": false,
"version": "1.1.6",
"ecosystem": "npm"
},
{
"name": "@nodelib/fs.scandir",
"direct": false,
"version": "2.1.5",
"ecosystem": "npm"
},
{
"name": "@nodelib/fs.stat",
"direct": false,
"version": "2.0.5",
"ecosystem": "npm"
},
{
"name": "@nodelib/fs.walk",
"direct": false,
"version": "1.2.8",
"ecosystem": "npm"
},
{
"name": "@oxc-project/types",
"direct": false,
"version": "0.139.0",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-android-arm64",
"direct": false,
"version": "1.1.5",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-darwin-arm64",
"direct": false,
"version": "1.1.5",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-darwin-x64",
"direct": false,
"version": "1.1.5",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-freebsd-x64",
"direct": false,
"version": "1.1.5",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-linux-arm-gnueabihf",
"direct": false,
"version": "1.1.5",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-linux-arm64-gnu",
"direct": false,
"version": "1.1.5",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-linux-arm64-musl",
"direct": false,
"version": "1.1.5",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-linux-ppc64-gnu",
"direct": false,
"version": "1.1.5",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-linux-s390x-gnu",
"direct": false,
"version": "1.1.5",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-linux-x64-gnu",
"direct": false,
"version": "1.1.5",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-linux-x64-musl",
"direct": false,
"version": "1.1.5",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-openharmony-arm64",
"direct": false,
"version": "1.1.5",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-wasm32-wasi",
"direct": false,
"version": "1.1.5",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-win32-arm64-msvc",
"direct": false,
"version": "1.1.5",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-win32-x64-msvc",
"direct": false,
"version": "1.1.5",
"ecosystem": "npm"
},
{
"name": "@rolldown/pluginutils",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "@rtsao/scc",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "@standard-schema/spec",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "@tybys/wasm-util",
"direct": false,
"version": "0.10.3",
"ecosystem": "npm"
},
{
"name": "@types/chai",
"direct": false,
"version": "5.2.3",
"ecosystem": "npm"
},
{
"name": "@types/deep-eql",
"direct": false,
"version": "4.0.2",
"ecosystem": "npm"
},
{
"name": "@types/estree",
"direct": false,
"version": "1.0.9",
"ecosystem": "npm"
},
{
"name": "@types/json5",
"direct": false,
"version": "0.0.29",
"ecosystem": "npm"
},
{
"name": "@types/node",
"direct": false,
"version": "22.10.1",
"ecosystem": "npm"
},
{
"name": "@typescript-eslint/eslint-plugin",
"direct": false,
"version": "7.18.0",
"ecosystem": "npm"
},
{
"name": "@typescript-eslint/parser",
"direct": false,
"version": "7.18.0",
"ecosystem": "npm"
},
{
"name": "@typescript-eslint/scope-manager",
"direct": false,
"version": "7.18.0",
"ecosystem": "npm"
},
{
"name": "@typescript-eslint/type-utils",
"direct": false,
"version": "7.18.0",
"ecosystem": "npm"
},
{
"name": "@typescript-eslint/types",
"direct": false,
"version": "7.18.0",
"ecosystem": "npm"
},
{
"name": "@typescript-eslint/typescript-estree",
"direct": false,
"version": "7.18.0",
"ecosystem": "npm"
},
{
"name": "@typescript-eslint/utils",
"direct": false,
"version": "7.18.0",
"ecosystem": "npm"
},
{
"name": "@typescript-eslint/visitor-keys",
"direct": false,
"version": "7.18.0",
"ecosystem": "npm"
},
{
"name": "@ungap/structured-clone",
"direct": false,
"version": "1.3.3",
"ecosystem": "npm"
},
{
"name": "@vitest/expect",
"direct": false,
"version": "4.1.8",
"ecosystem": "npm"
},
{
"name": "@vitest/mocker",
"direct": false,
"version": "4.1.8",
"ecosystem": "npm"
},
{
"name": "@vitest/pretty-format",
"direct": false,
"version": "4.1.8",
"ecosystem": "npm"
},
{
"name": "@vitest/runner",
"direct": false,
"version": "4.1.8",
"ecosystem": "npm"
},
{
"name": "@vitest/snapshot",
"direct": false,
"version": "4.1.8",
"ecosystem": "npm"
},
{
"name": "@vitest/spy",
"direct": false,
"version": "4.1.8",
"ecosystem": "npm"
},
{
"name": "@vitest/utils",
"direct": false,
"version": "4.1.8",
"ecosystem": "npm"
},
{
"name": "acorn",
"direct": false,
"version": "8.17.0",
"ecosystem": "npm"
},
{
"name": "acorn-jsx",
"direct": false,
"version": "5.3.2",
"ecosystem": "npm"
},
{
"name": "ajv",
"direct": false,
"version": "6.15.0",
"ecosystem": "npm"
},
{
"name": "ansi-regex",
"direct": false,
"version": "5.0.1",
"ecosystem": "npm"
},
{
"name": "ansi-styles",
"direct": false,
"version": "4.3.0",
"ecosystem": "npm"
},
{
"name": "argparse",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "argv-utils",
"direct": false,
"version": "1.0.5",
"ecosystem": "npm"
},
{
"name": "array-buffer-byte-length",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "array-includes",
"direct": false,
"version": "3.1.9",
"ecosystem": "npm"
},
{
"name": "array-union",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "array.prototype.findlastindex",
"direct": false,
"version": "1.2.6",
"ecosystem": "npm"
},
{
"name": "array.prototype.flat",
"direct": false,
"version": "1.3.3",
"ecosystem": "npm"
},
{
"name": "array.prototype.flatmap",
"direct": false,
"version": "1.3.3",
"ecosystem": "npm"
},
{
"name": "arraybuffer.prototype.slice",
"direct": false,
"version": "1.0.4",
"ecosystem": "npm"
},
{
"name": "assertion-error",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "async-function",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "available-typed-arrays",
"direct": false,
"version": "1.0.7",
"ecosystem": "npm"
},
{
"name": "balanced-match",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "brace-expansion",
"direct": false,
"version": "1.1.16",
"ecosystem": "npm"
},
{
"name": "brace-expansion",
"direct": false,
"version": "2.1.2",
"ecosystem": "npm"
},
{
"name": "braces",
"direct": false,
"version": "3.0.3",
"ecosystem": "npm"
},
{
"name": "buffer-from",
"direct": false,
"version": "1.1.2",
"ecosystem": "npm"
},
{
"name": "call-bind",
"direct": false,
"version": "1.0.9",
"ecosystem": "npm"
},
{
"name": "call-bind-apply-helpers",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "call-bound",
"direct": false,
"version": "1.0.4",
"ecosystem": "npm"
},
{
"name": "callsites",
"direct": false,
"version": "3.1.0",
"ecosystem": "npm"
},
{
"name": "chai",
"direct": false,
"version": "6.2.2",
"ecosystem": "npm"
},
{
"name": "chalk",
"direct": false,
"version": "4.1.2",
"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": "commander",
"direct": false,
"version": "2.20.3",
"ecosystem": "npm"
},
{
"name": "concat-map",
"direct": false,
"version": "0.0.1",
"ecosystem": "npm"
},
{
"name": "confusing-browser-globals",
"direct": false,
"version": "1.0.11",
"ecosystem": "npm"
},
{
"name": "convert-source-map",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "cross-spawn",
"direct": false,
"version": "7.0.6",
"ecosystem": "npm"
},
{
"name": "data-view-buffer",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "data-view-byte-length",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "data-view-byte-offset",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "debug",
"direct": false,
"version": "3.2.7",
"ecosystem": "npm"
},
{
"name": "debug",
"direct": false,
"version": "4.4.3",
"ecosystem": "npm"
},
{
"name": "deep-is",
"direct": false,
"version": "0.1.4",
"ecosystem": "npm"
},
{
"name": "define-data-property",
"direct": false,
"version": "1.1.4",
"ecosystem": "npm"
},
{
"name": "define-properties",
"direct": false,
"version": "1.2.1",
"ecosystem": "npm"
},
{
"name": "detect-libc",
"direct": false,
"version": "2.1.2",
"ecosystem": "npm"
},
{
"name": "dir-glob",
"direct": false,
"version": "3.0.1",
"ecosystem": "npm"
},
{
"name": "doctrine",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "doctrine",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "dunder-proto",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "es-abstract",
"direct": false,
"version": "1.24.2",
"ecosystem": "npm"
},
{
"name": "es-abstract-get",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "es-define-property",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "es-errors",
"direct": false,
"version": "1.3.0",
"ecosystem": "npm"
},
{
"name": "es-module-lexer",
"direct": false,
"version": "2.3.1",
"ecosystem": "npm"
},
{
"name": "es-object-atoms",
"direct": false,
"version": "1.1.2",
"ecosystem": "npm"
},
{
"name": "es-set-tostringtag",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "es-shim-unscopables",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "es-to-primitive",
"direct": false,
"version": "1.3.4",
"ecosystem": "npm"
},
{
"name": "escape-string-regexp",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "eslint",
"direct": false,
"version": "8.57.1",
"ecosystem": "npm"
},
{
"name": "eslint-config-airbnb-base",
"direct": false,
"version": "15.0.0",
"ecosystem": "npm"
},
{
"name": "eslint-config-airbnb-typescript",
"direct": false,
"version": "18.0.0",
"ecosystem": "npm"
},
{
"name": "eslint-config-prettier",
"direct": false,
"version": "10.1.5",
"ecosystem": "npm"
},
{
"name": "eslint-import-resolver-node",
"direct": false,
"version": "0.3.10",
"ecosystem": "npm"
},
{
"name": "eslint-module-utils",
"direct": false,
"version": "2.14.0",
"ecosystem": "npm"
},
{
"name": "eslint-plugin-import",
"direct": false,
"version": "2.32.0",
"ecosystem": "npm"
},
{
"name": "eslint-scope",
"direct": false,
"version": "7.2.2",
"ecosystem": "npm"
},
{
"name": "eslint-visitor-keys",
"direct": false,
"version": "3.4.3",
"ecosystem": "npm"
},
{
"name": "espree",
"direct": false,
"version": "9.6.1",
"ecosystem": "npm"
},
{
"name": "esquery",
"direct": false,
"version": "1.7.0",
"ecosystem": "npm"
},
{
"name": "esrecurse",
"direct": false,
"version": "4.3.0",
"ecosystem": "npm"
},
{
"name": "estraverse",
"direct": false,
"version": "5.3.0",
"ecosystem": "npm"
},
{
"name": "estree-walker",
"direct": false,
"version": "3.0.3",
"ecosystem": "npm"
},
{
"name": "esutils",
"direct": false,
"version": "2.0.3",
"ecosystem": "npm"
},
{
"name": "expect-type",
"direct": false,
"version": "1.4.0",
"ecosystem": "npm"
},
{
"name": "fast-deep-equal",
"direct": false,
"version": "3.1.3",
"ecosystem": "npm"
},
{
"name": "fast-glob",
"direct": false,
"version": "3.3.3",
"ecosystem": "npm"
},
{
"name": "fast-json-stable-stringify",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "fast-levenshtein",
"direct": false,
"version": "2.0.6",
"ecosystem": "npm"
},
{
"name": "fastq",
"direct": false,
"version": "1.20.1",
"ecosystem": "npm"
},
{
"name": "fdir",
"direct": false,
"version": "6.5.0",
"ecosystem": "npm"
},
{
"name": "file-entry-cache",
"direct": false,
"version": "6.0.1",
"ecosystem": "npm"
},
{
"name": "fill-range",
"direct": false,
"version": "7.1.1",
"ecosystem": "npm"
},
{
"name": "find-up",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "flat-cache",
"direct": false,
"version": "3.2.0",
"ecosystem": "npm"
},
{
"name": "flatted",
"direct": false,
"version": "3.4.2",
"ecosystem": "npm"
},
{
"name": "for-each",
"direct": false,
"version": "0.3.5",
"ecosystem": "npm"
},
{
"name": "fs.realpath",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "fsevents",
"direct": false,
"version": "2.3.3",
"ecosystem": "npm"
},
{
"name": "function-bind",
"direct": false,
"version": "1.1.2",
"ecosystem": "npm"
},
{
"name": "function.prototype.name",
"direct": false,
"version": "1.2.0",
"ecosystem": "npm"
},
{
"name": "functions-have-names",
"direct": false,
"version": "1.2.3",
"ecosystem": "npm"
},
{
"name": "generator-function",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "get-intrinsic",
"direct": false,
"version": "1.3.0",
"ecosystem": "npm"
},
{
"name": "get-proto",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "get-symbol-description",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "glob",
"direct": false,
"version": "7.2.3",
"ecosystem": "npm"
},
{
"name": "glob-parent",
"direct": false,
"version": "5.1.2",
"ecosystem": "npm"
},
{
"name": "glob-parent",
"direct": false,
"version": "6.0.2",
"ecosystem": "npm"
},
{
"name": "globals",
"direct": false,
"version": "13.24.0",
"ecosystem": "npm"
},
{
"name": "globalthis",
"direct": false,
"version": "1.0.4",
"ecosystem": "npm"
},
{
"name": "globby",
"direct": false,
"version": "11.1.0",
"ecosystem": "npm"
},
{
"name": "gopd",
"direct": false,
"version": "1.2.0",
"ecosystem": "npm"
},
{
"name": "graphemer",
"direct": false,
"version": "1.4.0",
"ecosystem": "npm"
},
{
"name": "has-bigints",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "has-flag",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "has-property-descriptors",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "has-proto",
"direct": false,
"version": "1.2.0",
"ecosystem": "npm"
},
{
"name": "has-symbols",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "has-tostringtag",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "hasown",
"direct": false,
"version": "2.0.4",
"ecosystem": "npm"
},
{
"name": "ignore",
"direct": false,
"version": "5.3.2",
"ecosystem": "npm"
},
{
"name": "import-fresh",
"direct": false,
"version": "3.3.1",
"ecosystem": "npm"
},
{
"name": "imurmurhash",
"direct": false,
"version": "0.1.4",
"ecosystem": "npm"
},
{
"name": "inflight",
"direct": false,
"version": "1.0.6",
"ecosystem": "npm"
},
{
"name": "inherits",
"direct": false,
"version": "2.0.4",
"ecosystem": "npm"
},
{
"name": "internal-slot",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "is-array-buffer",
"direct": false,
"version": "3.0.5",
"ecosystem": "npm"
},
{
"name": "is-async-function",
"direct": false,
"version": "2.1.1",
"ecosystem": "npm"
},
{
"name": "is-bigint",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "is-boolean-object",
"direct": false,
"version": "1.2.2",
"ecosystem": "npm"
},
{
"name": "is-callable",
"direct": false,
"version": "1.2.7",
"ecosystem": "npm"
},
{
"name": "is-core-module",
"direct": false,
"version": "2.16.2",
"ecosystem": "npm"
},
{
"name": "is-data-view",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "is-date-object",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "is-document.all",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "is-extglob",
"direct": false,
"version": "2.1.1",
"ecosystem": "npm"
},
{
"name": "is-finalizationregistry",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "is-generator-function",
"direct": false,
"version": "1.1.2",
"ecosystem": "npm"
},
{
"name": "is-glob",
"direct": false,
"version": "4.0.3",
"ecosystem": "npm"
},
{
"name": "is-map",
"direct": false,
"version": "2.0.3",
"ecosystem": "npm"
},
{
"name": "is-negative-zero",
"direct": false,
"version": "2.0.3",
"ecosystem": "npm"
},
{
"name": "is-number",
"direct": false,
"version": "7.0.0",
"ecosystem": "npm"
},
{
"name": "is-number-object",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "is-path-inside",
"direct": false,
"version": "3.0.3",
"ecosystem": "npm"
},
{
"name": "is-regex",
"direct": false,
"version": "1.2.1",
"ecosystem": "npm"
},
{
"name": "is-set",
"direct": false,
"version": "2.0.3",
"ecosystem": "npm"
},
{
"name": "is-shared-array-buffer",
"direct": false,
"version": "1.0.4",
"ecosystem": "npm"
},
{
"name": "is-string",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "is-symbol",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "is-typed-array",
"direct": false,
"version": "1.1.15",
"ecosystem": "npm"
},
{
"name": "is-weakmap",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "is-weakref",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "is-weakset",
"direct": false,
"version": "2.0.4",
"ecosystem": "npm"
},
{
"name": "isarray",
"direct": false,
"version": "2.0.5",
"ecosystem": "npm"
},
{
"name": "isexe",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "js-yaml",
"direct": false,
"version": "4.3.0",
"ecosystem": "npm"
},
{
"name": "json-buffer",
"direct": false,
"version": "3.0.1",
"ecosystem": "npm"
},
{
"name": "json-schema-traverse",
"direct": false,
"version": "0.4.1",
"ecosystem": "npm"
},
{
"name": "json-stable-stringify-without-jsonify",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "json5",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "json5",
"direct": false,
"version": "2.2.3",
"ecosystem": "npm"
},
{
"name": "keyv",
"direct": false,
"version": "4.5.4",
"ecosystem": "npm"
},
{
"name": "levn",
"direct": false,
"version": "0.4.1",
"ecosystem": "npm"
},
{
"name": "lightningcss",
"direct": false,
"version": "1.32.0",
"ecosystem": "npm"
},
{
"name": "lightningcss-android-arm64",
"direct": false,
"version": "1.32.0",
"ecosystem": "npm"
},
{
"name": "lightningcss-darwin-arm64",
"direct": false,
"version": "1.32.0",
"ecosystem": "npm"
},
{
"name": "lightningcss-darwin-x64",
"direct": false,
"version": "1.32.0",
"ecosystem": "npm"
},
{
"name": "lightningcss-freebsd-x64",
"direct": false,
"version": "1.32.0",
"ecosystem": "npm"
},
{
"name": "lightningcss-linux-arm-gnueabihf",
"direct": false,
"version": "1.32.0",
"ecosystem": "npm"
},
{
"name": "lightningcss-linux-arm64-gnu",
"direct": false,
"version": "1.32.0",
"ecosystem": "npm"
},
{
"name": "lightningcss-linux-arm64-musl",
"direct": false,
"version": "1.32.0",
"ecosystem": "npm"
},
{
"name": "lightningcss-linux-x64-gnu",
"direct": false,
"version": "1.32.0",
"ecosystem": "npm"
},
{
"name": "lightningcss-linux-x64-musl",
"direct": false,
"version": "1.32.0",
"ecosystem": "npm"
},
{
"name": "lightningcss-win32-arm64-msvc",
"direct": false,
"version": "1.32.0",
"ecosystem": "npm"
},
{
"name": "lightningcss-win32-x64-msvc",
"direct": false,
"version": "1.32.0",
"ecosystem": "npm"
},
{
"name": "locate-path",
"direct": false,
"version": "6.0.0",
"ecosystem": "npm"
},
{
"name": "lodash.merge",
"direct": false,
"version": "4.6.2",
"ecosystem": "npm"
},
{
"name": "magic-string",
"direct": false,
"version": "0.30.21",
"ecosystem": "npm"
},
{
"name": "math-intrinsics",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "merge2",
"direct": false,
"version": "1.4.1",
"ecosystem": "npm"
},
{
"name": "micromatch",
"direct": false,
"version": "4.0.8",
"ecosystem": "npm"
},
{
"name": "minimatch",
"direct": false,
"version": "3.1.5",
"ecosystem": "npm"
},
{
"name": "minimatch",
"direct": false,
"version": "9.0.9",
"ecosystem": "npm"
},
{
"name": "minimist",
"direct": false,
"version": "1.2.8",
"ecosystem": "npm"
},
{
"name": "ms",
"direct": false,
"version": "2.1.3",
"ecosystem": "npm"
},
{
"name": "nanoid",
"direct": false,
"version": "3.3.16",
"ecosystem": "npm"
},
{
"name": "natural-compare",
"direct": false,
"version": "1.4.0",
"ecosystem": "npm"
},
{
"name": "node-exports-info",
"direct": false,
"version": "1.6.2",
"ecosystem": "npm"
},
{
"name": "object-inspect",
"direct": false,
"version": "1.13.4",
"ecosystem": "npm"
},
{
"name": "object-keys",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "object.assign",
"direct": false,
"version": "4.1.7",
"ecosystem": "npm"
},
{
"name": "object.entries",
"direct": false,
"version": "1.1.9",
"ecosystem": "npm"
},
{
"name": "object.fromentries",
"direct": false,
"version": "2.0.8",
"ecosystem": "npm"
},
{
"name": "object.groupby",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "object.values",
"direct": false,
"version": "1.2.1",
"ecosystem": "npm"
},
{
"name": "obug",
"direct": false,
"version": "2.1.3",
"ecosystem": "npm"
},
{
"name": "once",
"direct": false,
"version": "1.4.0",
"ecosystem": "npm"
},
{
"name": "optionator",
"direct": false,
"version": "0.9.4",
"ecosystem": "npm"
},
{
"name": "own-keys",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "p-limit",
"direct": false,
"version": "3.1.0",
"ecosystem": "npm"
},
{
"name": "p-locate",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "parent-module",
"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-type",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "pathe",
"direct": false,
"version": "2.0.3",
"ecosystem": "npm"
},
{
"name": "picocolors",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "picomatch",
"direct": false,
"version": "2.3.2",
"ecosystem": "npm"
},
{
"name": "picomatch",
"direct": false,
"version": "4.0.5",
"ecosystem": "npm"
},
{
"name": "possible-typed-array-names",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "postcss",
"direct": false,
"version": "8.5.19",
"ecosystem": "npm"
},
{
"name": "prelude-ls",
"direct": false,
"version": "1.2.1",
"ecosystem": "npm"
},
{
"name": "prettier",
"direct": false,
"version": "3.6.2",
"ecosystem": "npm"
},
{
"name": "punycode",
"direct": false,
"version": "2.3.1",
"ecosystem": "npm"
},
{
"name": "queue-microtask",
"direct": false,
"version": "1.2.3",
"ecosystem": "npm"
},
{
"name": "reflect.getprototypeof",
"direct": false,
"version": "1.0.10",
"ecosystem": "npm"
},
{
"name": "regexp.prototype.flags",
"direct": false,
"version": "1.5.4",
"ecosystem": "npm"
},
{
"name": "resolve",
"direct": false,
"version": "2.0.0-next.7",
"ecosystem": "npm"
},
{
"name": "resolve-from",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "reusify",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "rimraf",
"direct": false,
"version": "3.0.2",
"ecosystem": "npm"
},
{
"name": "rolldown",
"direct": false,
"version": "1.1.5",
"ecosystem": "npm"
},
{
"name": "run-parallel",
"direct": false,
"version": "1.2.0",
"ecosystem": "npm"
},
{
"name": "safe-array-concat",
"direct": false,
"version": "1.1.4",
"ecosystem": "npm"
},
{
"name": "safe-push-apply",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "safe-regex-test",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "semver",
"direct": false,
"version": "6.3.1",
"ecosystem": "npm"
},
{
"name": "semver",
"direct": false,
"version": "7.8.5",
"ecosystem": "npm"
},
{
"name": "set-function-length",
"direct": false,
"version": "1.2.2",
"ecosystem": "npm"
},
{
"name": "set-function-name",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "set-proto",
"direct": false,
"version": "1.0.0",
"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": "side-channel",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "side-channel-list",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "side-channel-map",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "side-channel-weakmap",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "siginfo",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "slash",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "source-map",
"direct": false,
"version": "0.6.1",
"ecosystem": "npm"
},
{
"name": "source-map-js",
"direct": false,
"version": "1.2.1",
"ecosystem": "npm"
},
{
"name": "source-map-support",
"direct": false,
"version": "0.5.21",
"ecosystem": "npm"
},
{
"name": "stackback",
"direct": false,
"version": "0.0.2",
"ecosystem": "npm"
},
{
"name": "std-env",
"direct": false,
"version": "4.2.0",
"ecosystem": "npm"
},
{
"name": "stop-iteration-iterator",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "string.prototype.trim",
"direct": false,
"version": "1.2.11",
"ecosystem": "npm"
},
{
"name": "string.prototype.trimend",
"direct": false,
"version": "1.0.10",
"ecosystem": "npm"
},
{
"name": "string.prototype.trimstart",
"direct": false,
"version": "1.0.8",
"ecosystem": "npm"
},
{
"name": "strip-ansi",
"direct": false,
"version": "6.0.1",
"ecosystem": "npm"
},
{
"name": "strip-bom",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "strip-json-comments",
"direct": false,
"version": "3.1.1",
"ecosystem": "npm"
},
{
"name": "supports-color",
"direct": false,
"version": "7.2.0",
"ecosystem": "npm"
},
{
"name": "supports-preserve-symlinks-flag",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "terser",
"direct": false,
"version": "5.31.0",
"ecosystem": "npm"
},
{
"name": "text-table",
"direct": false,
"version": "0.2.0",
"ecosystem": "npm"
},
{
"name": "tinybench",
"direct": false,
"version": "2.9.0",
"ecosystem": "npm"
},
{
"name": "tinyexec",
"direct": false,
"version": "1.2.4",
"ecosystem": "npm"
},
{
"name": "tinyglobby",
"direct": false,
"version": "0.2.17",
"ecosystem": "npm"
},
{
"name": "tinyrainbow",
"direct": false,
"version": "3.1.0",
"ecosystem": "npm"
},
{
"name": "to-regex-range",
"direct": false,
"version": "5.0.1",
"ecosystem": "npm"
},
{
"name": "ts-api-utils",
"direct": false,
"version": "1.4.3",
"ecosystem": "npm"
},
{
"name": "ts-lib-builder",
"direct": false,
"version": "1.0.8",
"ecosystem": "npm"
},
{
"name": "tsconfig-paths",
"direct": false,
"version": "3.15.0",
"ecosystem": "npm"
},
{
"name": "tslib",
"direct": false,
"version": "2.8.1",
"ecosystem": "npm"
},
{
"name": "type-check",
"direct": false,
"version": "0.4.0",
"ecosystem": "npm"
},
{
"name": "type-fest",
"direct": false,
"version": "0.20.2",
"ecosystem": "npm"
},
{
"name": "typed-array-buffer",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "typed-array-byte-length",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "typed-array-byte-offset",
"direct": false,
"version": "1.0.4",
"ecosystem": "npm"
},
{
"name": "typed-array-length",
"direct": false,
"version": "1.0.8",
"ecosystem": "npm"
},
{
"name": "typescript",
"direct": false,
"version": "5.7.2",
"ecosystem": "npm"
},
{
"name": "unbox-primitive",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "undici-types",
"direct": false,
"version": "6.20.0",
"ecosystem": "npm"
},
{
"name": "uri-js",
"direct": false,
"version": "4.4.1",
"ecosystem": "npm"
},
{
"name": "vite",
"direct": false,
"version": "8.1.4",
"ecosystem": "npm"
},
{
"name": "vitest",
"direct": false,
"version": "4.1.8",
"ecosystem": "npm"
},
{
"name": "which",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "which-boxed-primitive",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "which-builtin-type",
"direct": false,
"version": "1.2.1",
"ecosystem": "npm"
},
{
"name": "which-collection",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "which-typed-array",
"direct": false,
"version": "1.1.22",
"ecosystem": "npm"
},
{
"name": "why-is-node-running",
"direct": false,
"version": "2.3.0",
"ecosystem": "npm"
},
{
"name": "word-wrap",
"direct": false,
"version": "1.2.5",
"ecosystem": "npm"
},
{
"name": "wrappy",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "yocto-queue",
"direct": false,
"version": "0.1.0",
"ecosystem": "npm"
},
{
"name": "zod",
"direct": false,
"version": "4.3.6",
"ecosystem": "npm"
}
],
"collected": true,
"truncated": false,
"total_count": 340,
"direct_count": 2,
"indirect_count": 338
}
},
"maintainership": {
"issues": {
"open_prs": 0,
"merged_prs": 44,
"open_issues": 0,
"closed_ratio": null,
"closed_issues": 0,
"closed_unmerged_prs": 0
},
"bus_factor": 1,
"bot_contributors": 0,
"top_contributors": [
{
"type": "User",
"login": "jesusgraterol",
"commits": 203,
"avatar_url": "https://avatars.githubusercontent.com/u/136823357?v=4"
}
],
"contributors_sampled": 1,
"top_contributor_share": 1
},
"quality_signals": {
"has_ci": true,
"has_tests": false,
"ci_workflows": [
"publish.yml"
],
"has_docs_dir": false,
"linter_configs": [
".eslintrc.json"
],
"has_editorconfig": false,
"has_linter_config": true,
"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": 0,
"reason": "0 out of 10 merged PRs checked by a CI test -- score normalized to 0",
"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": 0,
"reason": "Found 0/10 approved changesets -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
},
{
"name": "Contributors",
"score": 3,
"reason": "project has 1 contributing companies or organizations -- score normalized to 3",
"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": 0,
"reason": "no 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": "30 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": 3,
"reason": "dependency not pinned by hash detected -- score normalized to 3",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
},
{
"name": "SAST",
"score": 0,
"reason": "SAST tool is not run on all commits -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
},
{
"name": "Security-Policy",
"score": 0,
"reason": "security policy file not 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": 10,
"reason": "0 existing vulnerabilities detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
}
],
"commit": "16accc0787600a922c91489b4315848cc4e9d619",
"ran_at": "2026-07-24T00:51:15Z",
"aggregate_score": 4,
"scorecard_version": "v5.5.0"
},
"has_codeql_workflow": false,
"has_security_policy": false,
"has_dependabot_config": false
},
"contribution_flow": {
"collected": true,
"ci_last_run_at": "2026-07-18T16:13:39Z",
"oldest_open_prs": [],
"last_merged_pr_at": "2026-07-18T16:13:05Z",
"ci_last_conclusion": "SUCCESS",
"oldest_open_issues": []
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/jesusgraterol/web-utils-kit",
"host": "github.com",
"name": "web-utils-kit",
"owner": "jesusgraterol"
},
"metrics": {
"overall": {
"key": "overall",
"band": "moderate",
"name": "Overall health",
"note": null,
"notes": [],
"value": 56,
"inputs": {
"security": 52,
"vitality": 79,
"community": 32,
"governance": 56,
"engineering": 54
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "good",
"name": "Vitality",
"value": 79,
"weight": 0.22,
"metrics": [
{
"key": "development_activity",
"band": "good",
"name": "Development activity",
"note": null,
"notes": [],
"value": 73,
"inputs": {
"commits_last_year": 121,
"human_commit_share": 1,
"days_since_last_push": 5,
"active_weeks_last_year": 13
},
"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": "13/52 weeks with commits",
"points": 9,
"status": "partial",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 13
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "121 commits in the last year",
"points": 18,
"status": "met",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 121
}
}
],
"max_points": 18
},
{
"key": "openssf_scorecard_maintained",
"name": "OpenSSF Scorecard: Maintained",
"detail": "30 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": "excellent",
"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": 88,
"inputs": {
"releases_count": 36,
"latest_release_tag": "v1.3.1",
"releases_from_tags": true,
"days_since_latest_release": 5,
"mean_days_between_releases": 3.7
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "36 version tags (no GitHub releases)",
"points": 16.2,
"status": "partial",
"details": [
{
"code": "version_tags_no_releases",
"params": {
"count": 36
}
}
],
"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 ~3.7 days",
"points": 27,
"status": "met",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 3.7
}
}
],
"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": "at_risk",
"name": "Community & Adoption",
"value": 32,
"weight": 0.18,
"metrics": [
{
"key": "popularity",
"band": "critical",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 1,
"inputs": {
"forks": 0,
"stars": 0,
"watchers": 1,
"growth_state": "unverified",
"growth_factor_pct": 100,
"growth_unverified_reason": "no_history"
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "0 stars",
"points": 0,
"status": "missed",
"details": [
{
"code": "stars",
"params": {
"count": 0
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "0 forks",
"points": 0,
"status": "missed",
"details": [
{
"code": "forks",
"params": {
"count": 0
}
}
],
"max_points": 25
},
{
"key": "watchers",
"name": "Watchers",
"detail": "1 watchers",
"points": 0,
"status": "missed",
"details": [
{
"code": "watchers",
"params": {
"count": 1
}
}
],
"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": "moderate",
"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": 56,
"inputs": {
"packages": [
"web-utils-kit"
],
"dependents": null,
"ecosystems": "npm",
"total_downloads": null,
"monthly_downloads": 2153
},
"components": [
{
"key": "monthly_downloads",
"name": "Monthly downloads",
"detail": "2,153 downloads/month across npm",
"points": 44.4,
"status": "partial",
"details": [
{
"code": "downloads_monthly",
"params": {
"count": 2153,
"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": 56,
"weight": 0.24,
"metrics": [
{
"key": "maintainer_resilience",
"band": "critical",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 13,
"inputs": {
"bus_factor": 1,
"contributors_sampled": 1,
"top_contributor_share": 1
},
"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 100% of commits",
"points": 0,
"status": "missed",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 100
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "1 contributors",
"points": 1.4,
"status": "partial",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 1
}
}
],
"max_points": 13.5
},
{
"key": "openssf_scorecard_contributors",
"name": "OpenSSF Scorecard: Contributors",
"detail": "project has 1 contributing companies or organizations -- score normalized to 3",
"points": 3,
"status": "partial",
"details": [],
"max_points": 10
}
]
},
{
"key": "responsiveness",
"band": "good",
"name": "Issue & PR responsiveness",
"note": "Excluded from scoring (no data or not applicable): Issue resolution. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"issue_resolution"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 72,
"inputs": {
"merged_prs": 44,
"open_issues": 0,
"closed_issues": 0,
"issue_closed_ratio": null,
"closed_unmerged_prs": 0
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "no issues or no data",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_issues_or_data",
"params": {}
}
],
"max_points": 46.75
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "44/44 decided PRs merged",
"points": 38.2,
"status": "met",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 44,
"decided": 44
}
}
],
"max_points": 38.25
},
{
"key": "openssf_scorecard_code_review",
"name": "OpenSSF Scorecard: Code-Review",
"detail": "Found 0/10 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
}
]
},
{
"key": "stewardship",
"band": "moderate",
"name": "Ownership & stewardship",
"note": "Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"verified_domain"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 55,
"inputs": {
"followers": 105,
"owner_type": "User",
"is_verified": null,
"owner_login": "jesusgraterol",
"public_repos": 62,
"account_age_days": 1133
},
"components": [
{
"key": "ownership_backing",
"name": "Ownership backing",
"detail": "personal (user) account",
"points": 10,
"status": "partial",
"details": [
{
"code": "owner_personal",
"params": {}
}
],
"max_points": 30
},
{
"key": "verified_domain",
"name": "Verified domain",
"detail": "not applicable to user accounts",
"points": 0,
"status": "excluded",
"details": [
{
"code": "not_applicable_to_user_accounts",
"params": {}
}
],
"max_points": 20
},
{
"key": "owner_reach",
"name": "Owner reach",
"detail": "105 followers of jesusgraterol",
"points": 14.6,
"status": "partial",
"details": [
{
"code": "owner_followers",
"params": {
"count": 105,
"login": "jesusgraterol"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "62 public repos, account ~3 yr old",
"points": 19.2,
"status": "partial",
"details": [
{
"code": "public_repos",
"params": {
"count": 62
}
},
{
"code": "account_age_years",
"params": {
"years": 3
}
}
],
"max_points": 25
}
]
},
{
"key": "package_maintenance",
"band": "excellent",
"name": "Package maintenance",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"packages": [
"web-utils-kit"
],
"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": "39 published versions",
"points": 20,
"status": "met",
"details": [
{
"code": "published_versions",
"params": {
"count": 39
}
}
],
"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": "moderate",
"name": "Engineering Quality",
"value": 54,
"weight": 0.2,
"metrics": [
{
"key": "engineering_practices",
"band": "at_risk",
"name": "Engineering practices",
"note": null,
"notes": [],
"value": 40,
"inputs": {
"has_ci": true,
"has_tests": false,
"has_editorconfig": false,
"has_linter_config": true,
"has_precommit_config": false
},
"components": [
{
"key": "ci_workflows",
"name": "CI workflows",
"detail": "1 workflow(s)",
"points": 24,
"status": "met",
"details": [
{
"code": "ci_workflows",
"params": {
"count": 1
}
}
],
"max_points": 24
},
{
"key": "tests_present",
"name": "Tests present",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 24
},
{
"key": "linter_config",
"name": "Linter config",
"detail": ".eslintrc.json",
"points": 16,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": ".eslintrc.json"
}
}
],
"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": "0 out of 10 merged PRs checked by a CI test -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 20
}
]
},
{
"key": "documentation",
"band": "good",
"name": "Documentation",
"note": null,
"notes": [],
"value": 75,
"inputs": {
"topics": [
"javascript",
"typescript",
"utilities",
"utils",
"validation",
"web"
],
"has_wiki": true,
"homepage": "https://www.npmjs.com/package/web-utils-kit",
"has_readme": true,
"has_docs_dir": false,
"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": 0,
"status": "missed",
"details": [],
"max_points": 25
},
{
"key": "documentation_homepage_site",
"name": "Documentation / homepage site",
"detail": "https://www.npmjs.com/package/web-utils-kit",
"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": "6 topics",
"points": 10,
"status": "met",
"details": [
{
"code": "topics_count",
"params": {
"count": 6
}
}
],
"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": 52,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "at_risk",
"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": 40,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 16,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 2,
"scorecard_aggregate": 4
},
"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": "0 out of 10 merged PRs checked by a CI test -- score normalized to 0",
"points": 0,
"status": "missed",
"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 0/10 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "contributors",
"name": "Contributors",
"detail": "project has 1 contributing companies or organizations -- score normalized to 3",
"points": 0.8,
"status": "partial",
"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": "no update tool detected",
"points": 0,
"status": "missed",
"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": "30 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 3",
"points": 1.5,
"status": "partial",
"details": [],
"max_points": 5
},
{
"key": "sast",
"name": "SAST",
"detail": "SAST tool is not run on all commits -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "security_policy",
"name": "Security-Policy",
"detail": "security policy file not detected",
"points": 0,
"status": "missed",
"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": "0 existing vulnerabilities detected",
"points": 7.5,
"status": "met",
"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 340 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": 340
}
},
{
"code": "advisories_repo_graph_caveat",
"params": {}
},
{
"code": "advisories_reachability",
"params": {}
}
],
"value": 100,
"inputs": {
"source": "osv",
"advisories": 0,
"affected_packages": 0,
"assessed_packages": 340,
"unassessed_packages": 0,
"affected_by_severity": "none",
"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": 340,
"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": 2
},
"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": "at_risk",
"name": "AI Readiness",
"value": 42,
"weight": 0,
"metrics": [
{
"key": "ai_agent_context",
"band": "critical",
"name": "Agent context & guidance",
"note": null,
"notes": [],
"value": 22,
"inputs": {
"has_llms_txt": false,
"legible_history_share": 0.41,
"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": "41 of 100 human commits state their intent (structured subject or explanatory body)",
"points": 21.9,
"status": "partial",
"details": [
{
"code": "legible_history",
"params": {
"legible": 41,
"sampled": 100
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "at_risk",
"name": "Verify loop (build / test / typecheck)",
"note": null,
"notes": [],
"value": 35,
"inputs": {
"has_nix": false,
"has_tests": false,
"lockfiles": [
"package-lock.json"
],
"has_dockerfile": false,
"typed_language": true,
"bootstrap_files": [],
"has_devcontainer": false,
"has_linter_config": true,
"typecheck_configs": [
"tsconfig.json"
],
"agent_commit_share": 0,
"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": 0,
"status": "missed",
"details": [],
"max_points": 22
},
{
"key": "lint_format_config",
"name": "Lint / format config",
"detail": ".eslintrc.json",
"points": 11,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": ".eslintrc.json"
}
}
],
"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": "no agent-authored commits among the last 100",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_agent_authored_commits",
"params": {
"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 3",
"points": 3,
"status": "partial",
"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": 31209,
"source_files_sampled": 57,
"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/57 source files over 60KB",
"points": 55,
"status": "met",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 57,
"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": [
"deps.dev does not index npm:web-utils-kit@1.3.1; advisories assessed against the repository dependency graph instead"
],
"report_type": "repository",
"generated_at": "2026-07-24T00:51:29.764031Z",
"schema_version": "0.27.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/j/jesusgraterol/web-utils-kit.svg",
"full_name": "jesusgraterol/web-utils-kit",
"license_state": "standard",
"license_spdx": "MIT"
}