-anchored `endWhitespace` regexp retried its match at every index,\nrunning in O(n^2) on inputs with a large internal whitespace run followed by a non-whitespace character (e.g. `'A' + ' '.repeat(1e5) + 'A'`).\n\nTrim trailing whitespace by scanning back from the end for the boun\n[…]\n dependencies\n(`call-bound` is already a dependency).\n`slice(this, 0)`\npreserves the original RequireObjectCoercible + ToString coercion.\n\nsee https://github.com/es-shims/String.prototype.trim/pull/13",
"is_bot": false,
"headline": "[Fix] avoid quadratic runtime trimming strings with large internal wh…",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2026-06-05T22:46:22Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "79f96868928b28ce477bcbd01d8d4b55e60753e6",
"body": null,
"is_bot": false,
"headline": "[readme] replace runkit CI badge with shields.io check-runs badge",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2026-01-13T19:21:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a465f20ab333265a79a8459e2322f26d6fd08cf5",
"body": null,
"is_bot": false,
"headline": "v1.0.9",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2024-12-11T18:20:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2f99c8bc69d50dc0c56af3900cc31129ef42bc1b",
"body": null,
"is_bot": false,
"headline": "[meta] sort package.json mildly",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2024-12-11T16:11:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9e3bbec66695b715ec38f832aa472e1a82ffe095",
"body": null,
"is_bot": false,
"headline": "[Refactor] use `call-bound` directly",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2024-12-11T16:10:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e892c32d30aaaee372c8159b7ac94d564cf7f0e9",
"body": null,
"is_bot": false,
"headline": "[Deps] update `call-bind`",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2024-12-11T16:09:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e1a59da39cc18bbe546371b12d39f86b4c947896",
"body": null,
"is_bot": false,
"headline": "[Dev Deps] add missing peer dep",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2024-12-11T16:09:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2774fe6660c9de92eacf2a8173f494aa151b1fc1",
"body": "…ngelog`, `tape`",
"is_bot": false,
"headline": "[Dev Deps] update `@es-shims/api`, `@ljharb/eslint-config`, `auto-cha…",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2024-12-11T16:09:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7e5ffdc2ab30b09e19773f35df5dceffddc660d4",
"body": null,
"is_bot": false,
"headline": "[actions] split out node 10-20, and 20+",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2024-12-11T16:08:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cb9a4623b86d2a91cb0a5b704739b6fe43078abd",
"body": null,
"is_bot": false,
"headline": "[Tests] replace `aud` with `npm audit`",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2024-12-11T16:07:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f46c829985a3c78e92482247fe30800781b4a9e3",
"body": null,
"is_bot": false,
"headline": "[meta] add missing `engines.node`",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2024-03-17T07:20:32Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "22499de3eb4c80212a7598feb342152c3718a470",
"body": null,
"is_bot": false,
"headline": "v1.0.8",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2024-03-17T06:34:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0df2b018d3ba214e2435b9841a7a03fc06c24fd0",
"body": null,
"is_bot": false,
"headline": "[Refactor] replace `es-abstract` with `es-object-atoms`",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2024-03-17T06:34:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "190e9c5d74f84d8f90f61c9e9ad4b05f657df830",
"body": null,
"is_bot": false,
"headline": "[Dev Deps] update `aud`, `npmignore`, `tape`",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2024-03-17T06:33:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "87e218bd77b0ca88b315024d1de7936d39a0c8ca",
"body": null,
"is_bot": false,
"headline": "v1.0.7",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2023-09-07T17:07:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6ba2e19a78f9c63bad2daf0627ce7f2e33f1aeb9",
"body": null,
"is_bot": false,
"headline": "[Deps] update `define-properties`, `es-abstract`",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2023-09-07T04:41:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1a102935636b564cd346d83666f62a9398864081",
"body": "…ape`",
"is_bot": false,
"headline": "[Dev Deps] update `@es-shims/api`, `@ljharb/eslint-config`, `aud`, `t…",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2023-09-07T04:41:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a4f90ea11058764f941e8a0e4b9dd1b519c421e6",
"body": null,
"is_bot": false,
"headline": "v1.0.6",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2022-11-07T19:02:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a6e476dc0120a41a22e66b5079bf3b407da387fa",
"body": null,
"is_bot": false,
"headline": "[Deps] update `es-abstract`",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2022-11-07T08:08:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1d1e71720ada81e484c9bffb386f65d7a6a1335e",
"body": null,
"is_bot": false,
"headline": "[meta] use `npmignore` to autogenerate an npmignore file",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2022-11-07T08:07:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a3a9129dd995a949bdb93d278f403aa400e088ed",
"body": null,
"is_bot": false,
"headline": "[Dev Deps] update `aud`, `tape`",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2022-11-07T08:07:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "83f268325cc37ca72bea995281167a9d2821810b",
"body": null,
"is_bot": false,
"headline": "[actions] update rebase action to use reusable workflow",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2022-11-07T08:06:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "aedeb973d8eabc39c3d2a75d5c7d597d2615727a",
"body": null,
"is_bot": false,
"headline": "v1.0.5",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2022-05-03T04:08:03Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "15617ced8ac2ea3ab8324a04d16fd294b12059b5",
"body": null,
"is_bot": false,
"headline": "[Deps] update `define-properties`",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2022-05-03T04:06:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1c4c8dab4aefc1c5823a61b5a0286bb6fe1e036c",
"body": "…ngelog`, `functions-have-names`, `tape`",
"is_bot": false,
"headline": "[Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `auto-cha…",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2022-05-03T04:06:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "10a10916e1ffc8cdab78515b2cc521cc74c08277",
"body": "…itespace",
"is_bot": false,
"headline": "[Fix] as of unicode v6, the mongolian vowel separator is no longer wh…",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2022-05-03T03:59:42Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bb1983dc27504733ab883a42f55b134f679a642d",
"body": "…ines",
"is_bot": false,
"headline": "[Fix] ensure main entry point properly checks the receiver in ES3 eng…",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2022-05-03T03:57:20Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "69a56ce95343848d5e498f8e939a0697db8ac9f2",
"body": "See https://github.com/inspect-js/is-arguments/pull/38",
"is_bot": false,
"headline": "[actions] reuse common workflows",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2021-12-14T21:43:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a08e14bfea5e27d419ef742e83f467a169a69971",
"body": "… `safe-publish-latest`, `tape`",
"is_bot": false,
"headline": "[Dev Deps] update `eslint`, `@ljharb/eslint-config`, `@es-shims/api`,…",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2021-12-14T21:43:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "70c4a7c566fd5bf72475df9318ec2cd218ceca26",
"body": null,
"is_bot": false,
"headline": "[actions] update codecov uploader",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2021-10-13T17:24:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "980550105b304385bcccb8ec05a247e02c24d04a",
"body": null,
"is_bot": false,
"headline": "[readme] add github actions/codecov badges",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2021-10-05T01:04:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4b08ed78a579585b593b3ca4ac7919d13906e840",
"body": "… `aud`, `auto-changelog`, `tape`",
"is_bot": false,
"headline": "[Dev Deps] update `eslint`, `@ljharb/eslint-config`, `@es-shims/api`,…",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2021-10-05T01:04:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bf9c32efe08e98b53302df67581dc971b7a758cd",
"body": null,
"is_bot": false,
"headline": "[actions] update workflows",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2021-10-05T01:03:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "50ec335ed42b59d1ab626dbe412f4ae23ab99b4b",
"body": null,
"is_bot": false,
"headline": "[Dev Deps] update `eslint`, `tape`",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2021-04-11T21:08:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5d7db314948faac975705db56305b6cc3dae7ba9",
"body": null,
"is_bot": false,
"headline": "[actions] use `node/install` instead of `node/run`; use `codecov` action",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2021-04-11T20:55:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9d921bdbcaf8cebebbc302e6df518cbc3e4907bd",
"body": null,
"is_bot": false,
"headline": "[meta] use `prepublishOnly` script for npm 7+",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2021-04-11T20:54:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "538c2571c1b38cf36c14e88295349695da2bd066",
"body": null,
"is_bot": false,
"headline": "v1.0.4",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2021-02-24T00:43:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e250b4a38401e7c02a067dab26cc68316da47ef7",
"body": null,
"is_bot": false,
"headline": "[Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `tape`",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2021-02-24T00:42:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "55231dfd9829277ba5c3f07be5434dc385703ca9",
"body": null,
"is_bot": false,
"headline": "[meta] gitignore coverage output",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2021-02-24T00:42:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "711e6a66660f30f7a30fef536be435af1a13d05c",
"body": null,
"is_bot": false,
"headline": "[Tests] increase coverage",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2021-02-24T00:41:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "10e0e47cb2ecfd171e68b40f8486c5d007dcf3ef",
"body": null,
"is_bot": false,
"headline": "[readme] remove travis badge",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2021-02-24T00:41:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "deb0d06f41ac1c3e1e640ecd1cf0e69303ab5799",
"body": null,
"is_bot": false,
"headline": "[actions] update workflows",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2021-02-24T00:41:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0580f5f915ecb87677764d03fe3cf023e3bee7d8",
"body": null,
"is_bot": false,
"headline": "[Deps] update `call-bind`",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2021-02-01T20:00:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0871432c70c2f6a3929acd740a5d1f57c939f345",
"body": "…names`, `has-strict-mode`, `tape`",
"is_bot": false,
"headline": "[Dev Deps] update `eslint`, `@ljharb/eslint-config`, `functions-have-…",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2021-02-01T20:00:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "08e735cd55b00ae78a9dc16c6b4e786f7931085b",
"body": null,
"is_bot": false,
"headline": "[meta] do not publish github action workflow files",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2021-02-01T19:58:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ee5ddc168e66c19df42efab6d0c5c155657e3fdf",
"body": null,
"is_bot": false,
"headline": "v1.0.3",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2020-11-22T01:47:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "122ecb726b1dc043b9ef27fa5a7b4172a4d5df37",
"body": null,
"is_bot": false,
"headline": "[Dev Deps] update `eslint`, `aud`; add `safe-publish-latest`",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2020-11-22T01:46:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f07b87dd452090a2601d666edceb1daa90d45f24",
"body": null,
"is_bot": false,
"headline": "[Deps] replace `es-abstract` with `call-bind`",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2020-11-22T01:45:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "23e7a09a4ad37c21c3db3d7761212c7d84a371a2",
"body": null,
"is_bot": false,
"headline": "[Tests] migrate tests to Github Actions",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2020-11-21T23:02:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a72a546f671c5d3ac65dff68b4db1a1cc7089bfd",
"body": null,
"is_bot": false,
"headline": "[Tests] run `nyc` on all tests",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2020-11-21T23:02:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "26e8623cf35c1859d0b482d4bb5b3450d101a810",
"body": "… `tape` runner",
"is_bot": false,
"headline": "[Tests] add `implementation` test; run `es-shim-api` in postlint; use…",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2020-11-21T23:00:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "67ada9c5494dda0ce859a5641a03d5ff549fabea",
"body": null,
"is_bot": false,
"headline": "v1.0.2",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2020-10-20T18:45:20Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a003e7166d8de16c551a14b0ec855187357cce43",
"body": "…ngelog`, `tape`",
"is_bot": false,
"headline": "[Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `auto-cha…",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2020-10-20T18:25:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "75ca6b0e9757d64013ae863cfaac49ebcb36f1cf",
"body": null,
"is_bot": false,
"headline": "[Deps] update `es-abstract`",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2020-10-20T18:21:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0b4b43cb605f7b3532e61c43dfc7f1795296c5a4",
"body": null,
"is_bot": false,
"headline": "[actions] add \"Allow Edits\" workflow",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2020-10-20T18:19:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "552016cb631ac13c12bbbc0d6dd65012e5e79583",
"body": "…vent",
"is_bot": false,
"headline": "[actions] switch Automatic Rebase workflow to `pull_request_target` e…",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2020-10-20T18:19:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "db875b3155c8711b9ee6ab4f8ed0653c94879416",
"body": null,
"is_bot": false,
"headline": "v1.0.1",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2020-04-09T20:45:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e2eaab2fd1bc27a3d224b3d76db16190c1dd6d08",
"body": null,
"is_bot": false,
"headline": "[Dev Deps] update `auto-changelog`",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2020-04-09T20:45:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6abe248ba0b57a8b0e16bbe01de07a4d37c421bc",
"body": null,
"is_bot": false,
"headline": "[meta] add some missing repo metadata",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2020-04-09T20:41:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6018f310435bd176bbda3b2bd9aefdd1d0881f58",
"body": null,
"is_bot": false,
"headline": "v1.0.0",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2020-03-30T07:35:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ed4ce0d84d53e626b48375c5959be20332464eaf",
"body": null,
"is_bot": false,
"headline": "[meta] update readme",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2020-03-30T07:35:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2c6ef13d3f0b07a9bc55e367b311dbb731780405",
"body": null,
"is_bot": false,
"headline": "[Breaking] convert to es-shim API",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2020-03-30T07:26:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "eadaf2c83f2d791b54d80d7b30a9961ebc0f246f",
"body": null,
"is_bot": false,
"headline": "[Tests] add `npm run lint`",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2020-03-30T07:10:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "44d355f7dafcb0b51c5001824b07f7a2b9f1d06e",
"body": null,
"is_bot": false,
"headline": "Only apps should have lockfiles",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2020-03-30T07:06:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e78bf8e5fc04fcb3379dd1c98360d7df4f9ea7d6",
"body": "See https://github.com/ljharb/es-abstract/pull/74",
"is_bot": false,
"headline": "[actions] add automatic rebasing / merge commit blocking",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2020-03-30T07:06:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "35139d6236ceacfc1501d08fb196d18a936ee583",
"body": null,
"is_bot": false,
"headline": "[meta] add `funding` field",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2020-03-30T07:06:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6f1fcc1739de1e9541bd603b659807646a13dd7f",
"body": null,
"is_bot": false,
"headline": "[meta] add `auto-changelog`",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2020-03-30T07:06:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "983c5639efca2c9bb8b93ebbb917fbcb2561b94c",
"body": null,
"is_bot": false,
"headline": "[Tests] use shared travis-ci configs",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2020-03-30T07:05:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a2d308b99967ca427936c54747175794ca7336e1",
"body": null,
"is_bot": false,
"headline": "[meta] fix non-updated version number",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2020-03-30T07:05:26Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f1c71a0a882e89e1c207ed2b316d91670be2b075",
"body": null,
"is_bot": false,
"headline": "updated README",
"author_name": "Khaled Al-Ansari",
"author_login": "KhaledElAnsari",
"committed_at": "2017-12-19T11:02:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d1f4558a51157833f14d8a424426d038d06576ce",
"body": null,
"is_bot": false,
"headline": "typo",
"author_name": "Khaled Al-Ansari",
"author_login": "KhaledElAnsari",
"committed_at": "2017-12-19T10:30:32Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f78628ab123171f8b7759bba331d6a589702584f",
"body": null,
"is_bot": false,
"headline": "created README file",
"author_name": "Khaled Al-Ansari",
"author_login": "KhaledElAnsari",
"committed_at": "2017-12-19T10:28:28Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e58d550ab8695924ff4221ebe91f00f29801aa4b",
"body": null,
"is_bot": false,
"headline": "finished polyfill",
"author_name": "Khaled Al-Ansari",
"author_login": "KhaledElAnsari",
"committed_at": "2017-12-18T20:04:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9199478256da953e2f5bddfc4d82a161f4537e85",
"body": null,
"is_bot": false,
"headline": "Initial commit",
"author_name": "Khaled Al-Ansari",
"author_login": "KhaledElAnsari",
"committed_at": "2017-12-18T20:04:01Z",
"body_truncated": false,
"is_coding_agent": false
}
],
"releases_count": 13,
"commits_last_year": 7,
"latest_release_at": "2026-06-06T06:19:05Z",
"latest_release_tag": "v1.0.10",
"releases_from_tags": true,
"days_since_last_push": 46,
"active_weeks_last_year": 2,
"days_since_latest_release": 46,
"mean_days_between_releases": 249.8
},
"community": {
"has_readme": true,
"has_license": true,
"has_description": true,
"has_contributing": false,
"health_percentage": 62,
"has_issue_template": false,
"has_code_of_conduct": true,
"has_pull_request_template": false
},
"ecosystem": {
"packages": [
{
"name": "string.prototype.trimend",
"exists": true,
"license": "MIT",
"keywords": [
"es6",
"es7",
"es8",
"javascript",
"prototype",
"polyfill",
"utility",
"trim",
"trimLeft",
"trimRight",
"trimStart",
"trimEnd",
"tc39"
],
"ecosystem": "npm",
"matches_repo": true,
"registry_url": "https://www.npmjs.com/package/string.prototype.trimend",
"is_deprecated": false,
"latest_version": "1.0.10",
"repository_url": "https://github.com/es-shims/String.prototype.trimEnd",
"versions_count": 13,
"total_downloads": null,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": 2,
"monthly_downloads": 312291491,
"first_published_at": "2017-12-19T10:59:43.526000Z",
"latest_published_at": "2026-06-06T06:19:59.765000Z",
"latest_version_yanked": null,
"days_since_latest_publish": 46
}
]
},
"popularity": {
"forks": 4,
"stars": 5,
"watchers": 3,
"fork_history": {
"days": [
{
"date": "2019-11-07",
"count": 1
},
{
"date": "2022-04-08",
"count": 1
},
{
"date": "2024-08-16",
"count": 1
},
{
"date": "2025-12-05",
"count": 1
}
],
"complete": true,
"collected": 4,
"total_forks": 4
},
"star_history": null,
"open_issues_and_prs": 1
},
"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": [],
"toolchain_manifests": [],
"largest_source_bytes": 1740,
"source_files_sampled": 9,
"oversized_source_files": 0,
"agent_instruction_files": [],
"agent_instruction_max_bytes": null
},
"dependencies": {
"manifests": [
"package.json"
],
"advisories": {
"error": null,
"scope": "published_package",
"source": "osv",
"findings": [],
"collected": true,
"malicious": [],
"truncated": false,
"by_severity": {},
"advisory_count": 0,
"affected_count": 0,
"assessed_count": 22,
"malicious_count": 0,
"assessed_package": "npm:string.prototype.trimend@1.0.10",
"unassessed_count": 0,
"direct_affected_count": 0
},
"ecosystems": [
"npm"
],
"dependencies": [
{
"name": "call-bind",
"manifest": "package.json",
"ecosystem": "npm",
"version_constraint": "^1.0.9"
},
{
"name": "call-bound",
"manifest": "package.json",
"ecosystem": "npm",
"version_constraint": "^1.0.4"
},
{
"name": "define-properties",
"manifest": "package.json",
"ecosystem": "npm",
"version_constraint": "^1.2.1"
},
{
"name": "es-object-atoms",
"manifest": "package.json",
"ecosystem": "npm",
"version_constraint": "^1.1.2"
}
],
"all_dependencies": {
"error": null,
"source": "github-sbom",
"packages": [
{
"name": "call-bind",
"direct": true,
"version": "^1.0.9",
"ecosystem": "npm"
},
{
"name": "call-bound",
"direct": true,
"version": "^1.0.4",
"ecosystem": "npm"
},
{
"name": "define-properties",
"direct": true,
"version": "^1.2.1",
"ecosystem": "npm"
},
{
"name": "es-object-atoms",
"direct": true,
"version": "^1.1.2",
"ecosystem": "npm"
},
{
"name": "@es-shims/api",
"direct": false,
"version": "^2.5.1",
"ecosystem": "npm"
},
{
"name": "@ljharb/eslint-config",
"direct": false,
"version": "^22.2.3",
"ecosystem": "npm"
},
{
"name": "auto-changelog",
"direct": false,
"version": "^2.6.0",
"ecosystem": "npm"
},
{
"name": "eslint",
"direct": false,
"version": "^8.57.1",
"ecosystem": "npm"
},
{
"name": "functions-have-names",
"direct": false,
"version": "^1.2.3",
"ecosystem": "npm"
},
{
"name": "has-strict-mode",
"direct": false,
"version": "^1.1.0",
"ecosystem": "npm"
},
{
"name": "in-publish",
"direct": false,
"version": "^2.0.1",
"ecosystem": "npm"
},
{
"name": "npmignore",
"direct": false,
"version": "^0.3.5",
"ecosystem": "npm"
},
{
"name": "nyc",
"direct": false,
"version": "^10.3.2",
"ecosystem": "npm"
},
{
"name": "safe-publish-latest",
"direct": false,
"version": "^2.0.0",
"ecosystem": "npm"
},
{
"name": "tape",
"direct": false,
"version": "^5.9.0",
"ecosystem": "npm"
}
],
"collected": true,
"truncated": false,
"total_count": 15,
"direct_count": 4,
"indirect_count": 11
}
},
"maintainership": {
"issues": {
"open_prs": 0,
"merged_prs": 1,
"open_issues": 1,
"closed_ratio": 0.667,
"closed_issues": 2,
"closed_unmerged_prs": 2
},
"bus_factor": 1,
"bot_contributors": 0,
"top_contributors": [
{
"type": "User",
"login": "ljharb",
"commits": 74,
"avatar_url": "https://avatars.githubusercontent.com/u/45469?v=4"
},
{
"type": "User",
"login": "KhaledElAnsari",
"commits": 5,
"avatar_url": "https://avatars.githubusercontent.com/u/10652391?v=4"
}
],
"contributors_sampled": 2,
"top_contributor_share": 0.937
},
"quality_signals": {
"has_ci": true,
"has_tests": true,
"ci_workflows": [
"node-aught.yml",
"node-pretest.yml",
"node-tens.yml",
"node-twenties.yml",
"rebase.yml",
"require-allow-edits.yml"
],
"has_docs_dir": false,
"linter_configs": [
".eslintrc"
],
"has_editorconfig": true,
"has_linter_config": true,
"has_precommit_config": false
},
"security_signals": {
"lockfiles": [],
"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": null,
"reason": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
},
{
"name": "CI-Tests",
"score": null,
"reason": "no pull request found",
"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/30 approved changesets -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
},
{
"name": "Contributors",
"score": 10,
"reason": "project has 32 contributing companies or organizations",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
},
{
"name": "Dangerous-Workflow",
"score": 10,
"reason": "no dangerous workflow patterns detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
},
{
"name": "Dependency-Update-Tool",
"score": 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": 5,
"reason": "6 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 5",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
},
{
"name": "Packaging",
"score": null,
"reason": "packaging workflow not detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
},
{
"name": "Pinned-Dependencies",
"score": 0,
"reason": "dependency not pinned by hash detected -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
},
{
"name": "SAST",
"score": 0,
"reason": "no SAST tool detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
},
{
"name": "Security-Policy",
"score": 10,
"reason": "security policy file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
},
{
"name": "Signed-Releases",
"score": null,
"reason": "no releases found",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
},
{
"name": "Token-Permissions",
"score": 0,
"reason": "detected GitHub workflow tokens with excessive permissions",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
},
{
"name": "Vulnerabilities",
"score": 10,
"reason": "0 existing vulnerabilities detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
}
],
"commit": "9f316ac605e94df4e34c54049be6eb18d3bae83c",
"ran_at": "2026-07-22T22:13:12Z",
"aggregate_score": 4.7,
"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-19T22:26:12Z",
"oldest_open_prs": [],
"last_merged_pr_at": "2020-11-22T01:42:38Z",
"ci_last_conclusion": "SUCCESS",
"oldest_open_issues": [
{
"number": 5,
"created_at": "2021-02-20T22:42:32Z",
"last_comment_at": null,
"last_comment_author": null
}
]
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/es-shims/String.prototype.trimEnd",
"host": "github.com",
"name": "String.prototype.trimEnd",
"owner": "es-shims"
},
"metrics": {
"overall": {
"key": "overall",
"band": "moderate",
"name": "Overall health",
"note": null,
"notes": [],
"value": 59,
"inputs": {
"security": 58,
"vitality": 48,
"community": 54,
"governance": 56,
"engineering": 79
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "at_risk",
"name": "Vitality",
"value": 48,
"weight": 0.22,
"metrics": [
{
"key": "development_activity",
"band": "at_risk",
"name": "Development activity",
"note": null,
"notes": [],
"value": 32,
"inputs": {
"commits_last_year": 7,
"human_commit_share": 1,
"days_since_last_push": 46,
"active_weeks_last_year": 2
},
"components": [
{
"key": "push_recency",
"name": "Push recency",
"detail": "last push 46 days ago",
"points": 18,
"status": "partial",
"details": [
{
"code": "push_recency",
"params": {
"days": 46
}
}
],
"max_points": 36
},
{
"key": "commit_cadence",
"name": "Commit cadence",
"detail": "2/52 weeks with commits",
"points": 1.4,
"status": "partial",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 2
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "7 commits in the last year",
"points": 8.1,
"status": "partial",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 7
}
}
],
"max_points": 18
},
{
"key": "openssf_scorecard_maintained",
"name": "OpenSSF Scorecard: Maintained",
"detail": "6 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 5",
"points": 5,
"status": "partial",
"details": [],
"max_points": 10
}
]
},
{
"key": "release_discipline",
"band": "good",
"name": "Release discipline",
"note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"openssf_scorecard_signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 72,
"inputs": {
"releases_count": 13,
"latest_release_tag": "v1.0.10",
"releases_from_tags": true,
"days_since_latest_release": 46,
"mean_days_between_releases": 249.8
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "13 version tags (no GitHub releases)",
"points": 16.2,
"status": "partial",
"details": [
{
"code": "version_tags_no_releases",
"params": {
"count": 13
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 46 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "release_recency",
"params": {
"days": 46
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~249.8 days",
"points": 12.6,
"status": "partial",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 249.8
}
}
],
"max_points": 27
},
{
"key": "openssf_scorecard_signed_releases",
"name": "OpenSSF Scorecard: Signed-Releases",
"detail": "no releases found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 10
}
]
},
{
"key": "abandonment",
"band": "excellent",
"name": "Abandonment",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"cap": null,
"state": "maintained",
"guards": [],
"signals": [],
"red_flag": false,
"multiplier_pct": 100,
"declared_reason": null,
"unverified_reason": null,
"unanswered_open_prs": null,
"unanswered_open_issues": null,
"days_since_last_merged_pr": null,
"days_since_last_human_commit": 46,
"days_since_last_human_commit_is_floor": false
},
"components": [
{
"key": "project_is_still_maintained",
"name": "Project is still maintained",
"detail": "last human commit 46 days ago",
"points": 100,
"status": "met",
"details": [
{
"code": "abandonment_maintained",
"params": {
"days": 46
}
}
],
"max_points": 100
}
]
}
],
"description": "Is the project alive — is code being written and are releases shipping?"
},
{
"key": "community",
"band": "moderate",
"name": "Community & Adoption",
"value": 54,
"weight": 0.18,
"metrics": [
{
"key": "popularity",
"band": "critical",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 16,
"inputs": {
"forks": 4,
"stars": 5,
"watchers": 3,
"growth_state": "unverified",
"growth_factor_pct": 100,
"growth_unverified_reason": "no_history"
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "5 stars",
"points": 9.8,
"status": "partial",
"details": [
{
"code": "stars",
"params": {
"count": 5
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "4 forks",
"points": 4,
"status": "partial",
"details": [
{
"code": "forks",
"params": {
"count": 4
}
}
],
"max_points": 25
},
{
"key": "watchers",
"name": "Watchers",
"detail": "3 watchers",
"points": 1.7,
"status": "partial",
"details": [
{
"code": "watchers",
"params": {
"count": 3
}
}
],
"max_points": 15
}
]
},
{
"key": "community_health",
"band": "moderate",
"name": "Community health",
"note": null,
"notes": [],
"value": 65,
"inputs": {
"has_readme": true,
"has_license": true,
"has_contributing": false,
"has_issue_template": false,
"has_code_of_conduct": true,
"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": 13.5,
"status": "met",
"details": [],
"max_points": 13.5
},
{
"key": "issue_template",
"name": "Issue template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.2
},
{
"key": "pr_template",
"name": "PR template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 6.3
}
]
},
{
"key": "ecosystem_adoption",
"band": "excellent",
"name": "Ecosystem adoption (downloads)",
"note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"registry_dependents"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 100,
"inputs": {
"packages": [
"string.prototype.trimend"
],
"dependents": null,
"ecosystems": "npm",
"total_downloads": null,
"monthly_downloads": 312291491
},
"components": [
{
"key": "monthly_downloads",
"name": "Monthly downloads",
"detail": "312,291,491 downloads/month across npm",
"points": 80,
"status": "met",
"details": [
{
"code": "downloads_monthly",
"params": {
"count": 312291491,
"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": 23,
"inputs": {
"bus_factor": 1,
"contributors_sampled": 2,
"top_contributor_share": 0.937
},
"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 94% of commits",
"points": 1.4,
"status": "partial",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 94
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "2 contributors",
"points": 2.7,
"status": "partial",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 2
}
}
],
"max_points": 13.5
},
{
"key": "openssf_scorecard_contributors",
"name": "OpenSSF Scorecard: Contributors",
"detail": "project has 32 contributing companies or organizations",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "responsiveness",
"band": "at_risk",
"name": "Issue & PR responsiveness",
"note": null,
"notes": [],
"value": 44,
"inputs": {
"merged_prs": 1,
"open_issues": 1,
"closed_issues": 2,
"issue_closed_ratio": 0.667,
"closed_unmerged_prs": 2
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "67% of issues closed",
"points": 31.2,
"status": "partial",
"details": [
{
"code": "issues_closed_share",
"params": {
"share": 67
}
}
],
"max_points": 46.75
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "1/3 decided PRs merged",
"points": 12.8,
"status": "partial",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 1,
"decided": 3
}
}
],
"max_points": 38.25
},
{
"key": "openssf_scorecard_code_review",
"name": "OpenSSF Scorecard: Code-Review",
"detail": "Found 0/30 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
}
]
},
{
"key": "stewardship",
"band": "good",
"name": "Ownership & stewardship",
"note": null,
"notes": [],
"value": 71,
"inputs": {
"followers": 176,
"owner_type": "Organization",
"is_verified": null,
"owner_login": "es-shims",
"public_repos": 168,
"account_age_days": 4587
},
"components": [
{
"key": "ownership_backing",
"name": "Ownership backing",
"detail": "organization-owned",
"points": 30,
"status": "met",
"details": [
{
"code": "owner_organization",
"params": {}
}
],
"max_points": 30
},
{
"key": "verified_domain",
"name": "Verified domain",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 20
},
{
"key": "owner_reach",
"name": "Owner reach",
"detail": "176 followers of es-shims",
"points": 16.2,
"status": "partial",
"details": [
{
"code": "owner_followers",
"params": {
"count": 176,
"login": "es-shims"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "168 public repos, account ~12 yr old",
"points": 25,
"status": "met",
"details": [
{
"code": "public_repos",
"params": {
"count": 168
}
},
{
"code": "account_age_years",
"params": {
"years": 12
}
}
],
"max_points": 25
}
]
},
{
"key": "package_maintenance",
"band": "excellent",
"name": "Package maintenance",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"packages": [
"string.prototype.trimend"
],
"ecosystems": "npm",
"any_deprecated": false,
"min_days_since_publish": 46
},
"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 46 days ago",
"points": 35,
"status": "met",
"details": [
{
"code": "publish_recency",
"params": {
"days": 46
}
}
],
"max_points": 35
},
{
"key": "version_history",
"name": "Version history",
"detail": "13 published versions",
"points": 20,
"status": "met",
"details": [
{
"code": "published_versions",
"params": {
"count": 13
}
}
],
"max_points": 20
},
{
"key": "not_deprecated",
"name": "Not deprecated",
"detail": "active, not deprecated or yanked",
"points": 20,
"status": "met",
"details": [
{
"code": "package_not_deprecated",
"params": {}
}
],
"max_points": 20
}
]
}
],
"description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
},
{
"key": "engineering",
"band": "good",
"name": "Engineering Quality",
"value": 79,
"weight": 0.2,
"metrics": [
{
"key": "engineering_practices",
"band": "excellent",
"name": "Engineering practices",
"note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: CI-Tests. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"openssf_scorecard_ci_tests"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 88,
"inputs": {
"has_ci": true,
"has_tests": true,
"has_editorconfig": true,
"has_linter_config": true,
"has_precommit_config": false
},
"components": [
{
"key": "ci_workflows",
"name": "CI workflows",
"detail": "6 workflow(s)",
"points": 24,
"status": "met",
"details": [
{
"code": "ci_workflows",
"params": {
"count": 6
}
}
],
"max_points": 24
},
{
"key": "tests_present",
"name": "Tests present",
"detail": null,
"points": 24,
"status": "met",
"details": [],
"max_points": 24
},
{
"key": "linter_config",
"name": "Linter config",
"detail": ".eslintrc",
"points": 16,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": ".eslintrc"
}
}
],
"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": 6.4,
"status": "met",
"details": [],
"max_points": 6.4
},
{
"key": "openssf_scorecard_ci_tests",
"name": "OpenSSF Scorecard: CI-Tests",
"detail": "no pull request found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 20
}
]
},
{
"key": "documentation",
"band": "moderate",
"name": "Documentation",
"note": null,
"notes": [],
"value": 65,
"inputs": {
"topics": [
"string",
"ecmascript",
"polyfill",
"es6",
"es7",
"es8",
"trim",
"proposal",
"tc39"
],
"has_wiki": false,
"homepage": "https://github.com/tc39/proposal-string-left-right-trim",
"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://github.com/tc39/proposal-string-left-right-trim",
"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": "9 topics",
"points": 10,
"status": "met",
"details": [
{
"code": "topics_count",
"params": {
"count": 9
}
}
],
"max_points": 10
},
{
"key": "wiki",
"name": "Wiki",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
}
],
"description": "Are baseline engineering and documentation practices in place?"
},
{
"key": "security",
"band": "moderate",
"name": "Security",
"value": 58,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "at_risk",
"name": "Security posture",
"note": "Excluded from scoring (no data or not applicable): Branch-Protection, CI-Tests, Packaging, Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"branch_protection",
"ci_tests",
"packaging",
"signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 47,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 14,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 4,
"scorecard_aggregate": 4.7
},
"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": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 7.5
},
{
"key": "ci_tests",
"name": "CI-Tests",
"detail": "no pull request found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"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/30 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "contributors",
"name": "Contributors",
"detail": "project has 32 contributing companies or organizations",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "dangerous_workflow",
"name": "Dangerous-Workflow",
"detail": "no dangerous workflow patterns detected",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "dependency_update_tool",
"name": "Dependency-Update-Tool",
"detail": "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": "6 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 5",
"points": 3.8,
"status": "partial",
"details": [],
"max_points": 7.5
},
{
"key": "packaging",
"name": "Packaging",
"detail": "packaging workflow not detected",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 5
},
{
"key": "pinned_dependencies",
"name": "Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "sast",
"name": "SAST",
"detail": "no SAST tool detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "security_policy",
"name": "Security-Policy",
"detail": "security policy file detected",
"points": 5,
"status": "met",
"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): No advisories left outstanding. Remaining weights renormalized. Matched the npm:string.prototype.trimend@1.0.10 runtime dependency closure — what installing the published package pulls in — 22 packages. Reachability is not analyzed.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"no_advisories_left_outstanding"
]
}
},
{
"code": "weights_renormalized",
"params": {}
},
{
"code": "advisories_scope_published",
"params": {
"package": "npm:string.prototype.trimend@1.0.10",
"assessed": 22
}
},
{
"code": "advisories_reachability",
"params": {}
}
],
"value": 100,
"inputs": {
"source": "osv",
"advisories": 0,
"affected_packages": 0,
"assessed_packages": 22,
"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": "no indirect dependency carries a known advisory",
"points": 25,
"status": "met",
"details": [
{
"code": "no_indirect_advisories",
"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": 22,
"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": 11
},
"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": "critical",
"name": "AI Readiness",
"value": 26,
"weight": 0,
"metrics": [
{
"key": "ai_agent_context",
"band": "critical",
"name": "Agent context & guidance",
"note": null,
"notes": [],
"value": 1,
"inputs": {
"has_llms_txt": false,
"legible_history_share": 0.013,
"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": "1 of 79 human commits state their intent (structured subject or explanatory body)",
"points": 0.7,
"status": "partial",
"details": [
{
"code": "legible_history",
"params": {
"legible": 1,
"sampled": 79
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "at_risk",
"name": "Verify loop (build / test / typecheck)",
"note": null,
"notes": [],
"value": 33,
"inputs": {
"has_nix": false,
"has_tests": true,
"lockfiles": [],
"has_dockerfile": false,
"typed_language": false,
"bootstrap_files": [],
"has_devcontainer": false,
"has_linter_config": true,
"typecheck_configs": [],
"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": 22,
"status": "met",
"details": [],
"max_points": 22
},
{
"key": "lint_format_config",
"name": "Lint / format config",
"detail": ".eslintrc",
"points": 11,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": ".eslintrc"
}
}
],
"max_points": 11
},
{
"key": "static_type_checking",
"name": "Static type checking",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 11
},
{
"key": "reproducible_environment",
"name": "Reproducible environment",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
},
{
"key": "demonstrated_agent_practice",
"name": "Demonstrated agent practice",
"detail": "no agent-authored commits among the last 79",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_agent_authored_commits",
"params": {
"sampled": 79
}
}
],
"max_points": 10
},
{
"key": "automated_maintenance",
"name": "Automated maintenance",
"detail": "no automated dependency updates observed",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_dependency_automation",
"params": {}
}
],
"max_points": 8
},
{
"key": "openssf_scorecard_pinned_dependencies",
"name": "OpenSSF Scorecard: Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "ai_code_legibility",
"band": "moderate",
"name": "Code legibility for models",
"note": null,
"notes": [],
"value": 55,
"inputs": {
"primary_language": "JavaScript",
"largest_source_bytes": 1740,
"source_files_sampled": 9,
"oversized_source_files": 0
},
"components": [
{
"key": "type_checkable_code",
"name": "Type-checkable code",
"detail": "JavaScript without a type-check config",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_typecheck_config_language",
"params": {
"language": "JavaScript"
}
}
],
"max_points": 45
},
{
"key": "manageable_file_sizes",
"name": "Manageable file sizes",
"detail": "0/9 source files over 60KB",
"points": 55,
"status": "met",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 9,
"oversized": 0
}
}
],
"max_points": 55
}
]
}
],
"description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
}
],
"metrics_version": "1.13.0"
},
"warnings": [
"Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token"
],
"report_type": "repository",
"generated_at": "2026-07-22T22:13:17.209475Z",
"schema_version": "0.27.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/e/es-shims/String.prototype.trimEnd.svg",
"full_name": "es-shims/String.prototype.trimEnd",
"license_state": "standard",
"license_spdx": "MIT"
},
"repoMeta": null,
"notFound": false,
"related": [
{
"id": 35171,
"full_name": "eslint/eslint",
"url": "https://github.com/eslint/eslint",
"description": "Find and fix problems in your JavaScript code.",
"ecosystem": "npm",
"ecosystems": [
"npm"
],
"primary_language": "JavaScript",
"languages": [
"JavaScript"
],
"topics": [
"eslint",
"javascript",
"ecmascript",
"static-code-analysis",
"linter",
"ast",
"lint",
"espree"
],
"license_spdx": "MIT",
"license_state": "standard",
"stars": 27394,
"forks": 5116,
"watchers": 343,
"monthly_downloads": 600594735,
"latest_score": 91,
"latest_band": "excellent",
"latest_scanned_at": "2026-07-22T16:00:06.291609Z",
"has_high_risk_jurisdiction_exposure": false,
"has_malicious_dependency": false,
"growth_authenticity": "unverified",
"abandonment_state": "maintained",
"red_flags": [],
"badge_url": ""
},
{
"id": 12372,
"full_name": "babel/babel",
"url": "https://github.com/babel/babel",
"description": "🐠 Babel is a compiler for writing next generation JavaScript.",
"ecosystem": "npm",
"ecosystems": [
"npm"
],
"primary_language": "TypeScript",
"languages": [
"TypeScript",
"JavaScript"
],
"topics": [
"babel",
"javascript",
"ast",
"compiler",
"flavortown",
"es6",
"es2015"
],
"license_spdx": "MIT",
"license_state": "standard",
"stars": 43952,
"forks": 5883,
"watchers": 809,
"monthly_downloads": null,
"latest_score": 86,
"latest_band": "excellent",
"latest_scanned_at": "2026-07-17T04:29:03.966066Z",
"has_high_risk_jurisdiction_exposure": false,
"has_malicious_dependency": false,
"growth_authenticity": "unverified",
"abandonment_state": "unverified",
"red_flags": [],
"badge_url": ""
},
{
"id": 35746,
"full_name": "grafana/k6",
"url": "https://github.com/grafana/k6",
"description": "A modern load testing tool, using Go and JavaScript",
"ecosystem": "go",
"ecosystems": [
"go"
],
"primary_language": "Go",
"languages": [
"Go",
"JavaScript"
],
"topics": [
"golang",
"load-testing",
"load-generator",
"javascript",
"es6",
"performance",
"go",
"hacktoberfest",
"k6"
],
"license_spdx": "AGPL-3.0",
"license_state": "standard",
"stars": 31086,
"forks": 1583,
"watchers": 326,
"monthly_downloads": null,
"latest_score": 87,
"latest_band": "excellent",
"latest_scanned_at": "2026-07-22T19:27:04.360923Z",
"has_high_risk_jurisdiction_exposure": false,
"has_malicious_dependency": false,
"growth_authenticity": "unverified",
"abandonment_state": "maintained",
"red_flags": [],
"badge_url": ""
},
{
"id": 5559,
"full_name": "carbon-design-system/carbon",
"url": "https://github.com/carbon-design-system/carbon",
"description": "A design system built by IBM",
"ecosystem": "npm",
"ecosystems": [
"npm"
],
"primary_language": "TypeScript",
"languages": [
"TypeScript",
"JavaScript",
"SCSS"
],
"topics": [
"design-system",
"hacktoberfest",
"javascript",
"react",
"scss"
],
"license_spdx": "Apache-2.0",
"license_state": "standard",
"stars": 9278,
"forks": 2223,
"watchers": 92,
"monthly_downloads": null,
"latest_score": 91,
"latest_band": "excellent",
"latest_scanned_at": "2026-07-15T01:27:44.707879Z",
"has_high_risk_jurisdiction_exposure": false,
"has_malicious_dependency": false,
"growth_authenticity": "unverified",
"abandonment_state": "unverified",
"red_flags": [],
"badge_url": ""
},
{
"id": 143,
"full_name": "strapi/strapi",
"url": "https://github.com/strapi/strapi",
"description": "🚀 Strapi is the leading open-source headless CMS. It’s 100% JavaScript/TypeScript, fully customizable, and developer-first.",
"ecosystem": "npm",
"ecosystems": [
"npm"
],
"primary_language": "TypeScript",
"languages": [
"TypeScript",
"JavaScript"
],
"topics": [
"strapi",
"nodejs",
"api",
"dashboard",
"javascript",
"graphql",
"rest",
"cms",
"headless-cms",
"jamstack",
"customizable",
"hacktoberfest",
"mysql",
"content-management",
"cms-framework",
"content-management-system",
"typescript",
"no-code",
"posgresql"
],
"license_spdx": null,
"license_state": "custom",
"stars": 72664,
"forks": 9793,
"watchers": 649,
"monthly_downloads": null,
"latest_score": 90,
"latest_band": "excellent",
"latest_scanned_at": "2026-07-15T20:41:36.268873Z",
"has_high_risk_jurisdiction_exposure": false,
"has_malicious_dependency": false,
"growth_authenticity": "unverified",
"abandonment_state": "unverified",
"red_flags": [],
"badge_url": ""
},
{
"id": 24748,
"full_name": "ionic-team/ionic-framework",
"url": "https://github.com/ionic-team/ionic-framework",
"description": "A powerful cross-platform UI toolkit for building native-quality iOS, Android, and Progressive Web Apps with HTML, CSS, and JavaScript.",
"ecosystem": "npm",
"ecosystems": [
"npm"
],
"primary_language": "TypeScript",
"languages": [
"TypeScript",
"HTML",
"SCSS"
],
"topics": [
"ionic",
"mobile",
"framework",
"angular",
"javascript",
"frontend",
"pwa",
"typescript",
"web",
"stencil",
"stenciljs",
"capacitor",
"react",
"vue",
"webcomponents",
"ios",
"material-design",
"ui-components",
"app",
"webapp",
"cordova",
"electron",
"progressive-web-app"
],
"license_spdx": "MIT",
"license_state": "standard",
"stars": 52595,
"forks": 13332,
"watchers": 1548,
"monthly_downloads": 1633198,
"latest_score": 90,
"latest_band": "excellent",
"latest_scanned_at": "2026-07-23T02:00:02.353535Z",
"has_high_risk_jurisdiction_exposure": false,
"has_malicious_dependency": false,
"growth_authenticity": "unverified",
"abandonment_state": "maintained",
"red_flags": [],
"badge_url": ""
}
]
}
}
Public recordSoftware health report schema 0.27.0 · metrics 1.13.0 · 2026-07-22 22:13 UTC
ES2019 spec-compliant String.prototype.trimEnd shim
Add score badge to README Compare to…
JavaScript MIT ★ 5 stars ⑂ 4 forks since Dec 2017 View on GitHub ↗ es-shims/String.prototype.trimEnd holds a health index of 59 out of 100, placing it in the Moderate band. It scores highest on Engineering Quality (79/100) and lowest on AI Readiness (26/100). It was last updated 46 days ago. A single contributor accounts for most of its recent work.
Software health index Metrics are grouped into weighted categories on one standardized 1–100 scale. Overall starts as their weighted mean; when public evidence triggers the High-Risk Jurisdiction Policy, the rating is adjusted and receives an At risk ceiling of 49. AI Readiness sits outside the overall score.
59
Excellent 85-100 Exemplary; meets essentially all checked criteria
Good 70-84 Healthy; minor gaps
Moderate 50-69 Acceptable with notable gaps; review recommended
At risk 30-49 Significant weaknesses; adoption warrants caution
Critical 1-29 Severe problems (abandoned, single-maintainer, no hygiene)
Vitality Community & Adoption Sustainability & Governance Engineering Quality Security AI Readiness Score profile Each axis is a category. The shape matters more than the average — a healthy subject fills the whole shape, while a spike-and-crater profile means strength in one dimension is masking risk in another.
Ownership 176 followers 168 public repos since Dec 2013
This repository is backed by an organization — shared, accountable stewardship that can outlive any single maintainer.
Package ecosystems
Metrics by category Is the project alive — is code being written and are releases shipping?
48 At risk · 22% of overall
How it's scored 18/36 Push recency — last push 46 days ago 1.4/36 Commit cadence — 2/52 weeks with commits 8.1/18 Commit volume — 7 commits in the last year 5/10 OpenSSF Scorecard: Maintained — 6 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 5
Inputs used
How it's scored 16.2/27 Ships releases — 13 version tags (no GitHub releases) 36/36 Release recency — latest release 46 days ago 12.6/27 Release cadence — a release every ~249.8 days 0/10 OpenSSF Scorecard: Signed-Releases — no data
Inputs used Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.
Does the project have users, downloads, attention, and a welcoming setup for contributors?
54 Moderate · 18% of overall
How it's scored 9.8/60 Stars — 5 stars 4/25 Forks — 4 forks 1.7/15 Watchers — 3 watchers
Inputs used
How it's scored 22.5/22.5 README 22.5/22.5 License — recognized license (MIT) 0/18 CONTRIBUTING guide 13.5/13.5 Code of conduct 0/7.2 Issue template 0/6.3 PR template
Inputs used
How it's scored 80/80 Monthly downloads — 312,291,491 downloads/month across npm 0/20 Registry dependents — not reported by this ecosystem
Inputs used Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.
Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?
56 Moderate · 24% of overall
How it's scored 9/54 Bus factor — 1 contributor(s) cover half of all commits 1.4/22.5 Commit distribution — top contributor authored 94% of commits 2.7/13.5 Contributor breadth — 2 contributors 10/10 OpenSSF Scorecard: Contributors — project has 32 contributing companies or organizations
Inputs used
How it's scored 31.2/46.8 Issue resolution — 67% of issues closed 12.8/38.3 PR acceptance — 1/3 decided PRs merged 0/15 OpenSSF Scorecard: Code-Review — Found 0/30 approved changesets -- score normalized to 0
Inputs used
How it's scored 30/30 Ownership backing — organization-owned 0/20 Verified domain 16.2/25 Owner reach — 176 followers of es-shims 25/25 Track record — 168 public repos, account ~12 yr old
Inputs used
How it's scored 25/25 Published & resolvable — 1 package(s) on npm 35/35 Publish recency — latest publish 46 days ago 20/20 Version history — 13 published versions 20/20 Not deprecated — active, not deprecated or yanked
Inputs used Are baseline engineering and documentation practices in place?
79 Good · 20% of overall
How it's scored 24/24 CI workflows — 6 workflow(s) 24/24 Tests present 16/16 Linter config — .eslintrc 0/9.6 Pre-commit hooks 6.4/6.4 .editorconfig 0/20 OpenSSF Scorecard: CI-Tests — no data
Inputs used Excluded from scoring (no data or not applicable): OpenSSF Scorecard: CI-Tests. Remaining weights renormalized.
How it's scored 30/30 README 0/25 Documentation directory 15/15 Documentation / homepage site — https://github.com/tc39/proposal-string-left-right-trim 10/10 Repository description 10/10 Topics — 9 topics 0/10 Wiki
Inputs used Are visible security and supply-chain practices strong, without unresolved high-risk jurisdiction exposure?
58 Moderate · 16% of overall
How it's scored 7.5/7.5 Binary-Artifacts — no binaries found in the repo 0/7.5 Branch-Protection — no data 0/2.5 CI-Tests — no data 0/2.5 CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected 0/7.5 Code-Review — Found 0/30 approved changesets -- score normalized to 0 2.5/2.5 Contributors — project has 32 contributing companies or organizations 10/10 Dangerous-Workflow — no dangerous workflow patterns detected 0/7.5 Dependency-Update-Tool — no update tool detected 0/5 Fuzzing — project is not fuzzed 2.5/2.5 License — license file detected 3.8/7.5 Maintained — 6 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 5 0/5 Packaging — no data 0/5 Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0 0/5 SAST — no SAST tool detected 5/5 Security-Policy — security policy file detected 0/7.5 Signed-Releases — no data 0/7.5 Token-Permissions — detected GitHub workflow tokens with excessive permissions 7.5/7.5 Vulnerabilities — 0 existing vulnerabilities detected
Inputs used Excluded from scoring (no data or not applicable): branch_protection, ci_tests, packaging, signed_releases. Remaining weights renormalized.
How it's scored 35/35 Direct dependencies free of known advisories — no direct dependency carries a known advisory 25/25 Indirect dependencies free of known advisories — no indirect dependency carries a known advisory 0/40 No advisories left outstanding — no advisory carries a publication date
Inputs used Excluded from scoring (no data or not applicable): No advisories left outstanding. Remaining weights renormalized. Matched the npm:string.prototype.trimend@1.0.10 runtime dependency closure — what installing the published package pulls in — 22 packages. Reachability is not analyzed.
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.
26 Critical · 0% of overall
How it's scored 0/45 Agent instructions — no CLAUDE.md / AGENTS.md / editor rules 0/15 Machine-readable docs (llms.txt) 0.7/40 Legible commit history — 1 of 79 human commits state their intent (structured subject or explanatory body)
Inputs used
How it's scored 0/18 One-command bootstrap 22/22 Automated tests 11/11 Lint / format config — .eslintrc 0/11 Static type checking 0/10 Reproducible environment 0/10 Demonstrated agent practice — no agent-authored commits among the last 79 0/8 Automated maintenance — no automated dependency updates observed 0/10 OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Inputs used
How it's scored 0/45 Type-checkable code — JavaScript without a type-check config 55/55 Manageable file sizes — 0/9 source files over 60KB
Inputs used
Key facts 5 GitHub stars
2 contributors
7 commits, last 12 months
46 days since last push
13 releases
1 bus factor
1 open issues
npm package ecosystems
Data collection warnings Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token
More detail Star and fork history 0 ★ / 4 ⇿ When each star and fork was added, collected from GitHub and bucketed by day. Cumulative growth sits directly above the daily additions it is made of, so the two read against each other: steady organic accretion looks nothing like an abrupt, short-lived burst. Where that difference is measurable, it is reported as growth authenticity.
Forks Forks/day Releases
All 3 years Year 3 months Month
1 2 2 3 3 4 4 4 1 2019-11 2022-11 2025-12 Major 1 Minor 0 Patch 9
Each point covers 6 days.
OpenSSF Scorecard 4.7 / 10 4.7 aggregate
Independent, tool-agnostic security assessment from the open-source OpenSSF Scorecard . Each check rewards a security practice , not a specific vendor's tool. Checks Scorecard could not determine are marked n/a and excluded from the security score (never counted as zero). Scorecard v5.5.0 · 2026-07-22 22:13 UTC
Direct dependencies 4 Registry Package Version constraint Manifest npm call-bind ^1.0.9package.json npm call-bound ^1.0.4package.json npm define-properties ^1.2.1package.json npm es-object-atoms ^1.1.2package.json
All dependencies 15 Full resolved dependency set from the GitHub dependency graph: 4 direct and 11 indirect (transitive) packages. The transitive closure is complete when the repository commits a lockfile.
Registry Package Version Relation npm call-bind ^1.0.9direct npm call-bound ^1.0.4direct npm define-properties ^1.2.1direct npm es-object-atoms ^1.1.2direct npm @es-shims/api ^2.5.1indirect npm @ljharb/eslint-config ^22.2.3indirect npm auto-changelog ^2.6.0indirect npm eslint ^8.57.1indirect npm functions-have-names ^1.2.3indirect npm has-strict-mode ^1.1.0indirect npm in-publish ^2.0.1indirect npm npmignore ^0.3.5indirect npm nyc ^10.3.2indirect npm safe-publish-latest ^2.0.0indirect npm tape ^5.9.0indirect
Dependency advisories 0 Installing npm:string.prototype.trimend@1.0.10 pulls in 22 packages, direct and transitive: 0 carry known advisories, of which 0 are direct dependencies.
No known advisories affect the assessed dependencies.
An advisory means the version recorded in the dependency graph falls inside an advisory’s affected range. Reachability is not analysed, and the graph includes development and test pins — a finding may concern tooling rather than shipped software.
Raw JSON report machine-readable {
"data": {
"repo": {
"topics": [
"string",
"ecmascript",
"polyfill",
"es6",
"es7",
"es8",
"trim",
"proposal",
"tc39"
],
"is_fork": false,
"size_kb": 145,
"has_wiki": false,
"homepage": "https://github.com/tc39/proposal-string-left-right-trim",
"languages": {
"JavaScript": 6425
},
"pushed_at": "2026-06-06T06:19:41Z",
"created_at": "2017-12-18T20:04:00Z",
"owner_type": "Organization",
"updated_at": "2026-06-06T06:19:44Z",
"description": "ES2019 spec-compliant String.prototype.trimEnd shim",
"is_archived": false,
"is_disabled": false,
"license_spdx": "MIT",
"default_branch": "main",
"license_spdx_raw": "MIT",
"primary_language": "JavaScript",
"significant_languages": [
"JavaScript"
]
},
"owner": {
"blog": "https://tc39.es/ecma262/",
"name": "ECMAScript Shims",
"type": "Organization",
"login": "es-shims",
"company": null,
"location": null,
"followers": 176,
"avatar_url": "https://avatars.githubusercontent.com/u/6288429?v=4",
"created_at": "2013-12-30T18:32:40Z",
"is_verified": null,
"public_repos": 168,
"account_age_days": 4587
},
"license": {
"state": "standard",
"spdx_id": "MIT",
"raw_spdx": "MIT",
"file_present": true,
"scorecard_found": true,
"profile_has_license": true
},
"activity": {
"releases": [
{
"tag": "v1.0.10",
"kind": "patch",
"published_at": "2026-06-06T06:19:05Z"
},
{
"tag": "v1.0.9",
"kind": "patch",
"published_at": "2024-12-11T18:20:38Z"
},
{
"tag": "v1.0.8",
"kind": "patch",
"published_at": "2024-03-17T06:34:23Z"
},
{
"tag": "v1.0.7",
"kind": "patch",
"published_at": "2023-09-07T17:07:31Z"
},
{
"tag": "v1.0.6",
"kind": "patch",
"published_at": "2022-11-07T19:02:41Z"
},
{
"tag": "v1.0.5",
"kind": "patch",
"published_at": "2022-05-03T04:08:03Z"
},
{
"tag": "v1.0.4",
"kind": "patch",
"published_at": "2021-02-24T00:43:08Z"
},
{
"tag": "v1.0.3",
"kind": "patch",
"published_at": "2020-11-22T01:47:12Z"
},
{
"tag": "v1.0.2",
"kind": "patch",
"published_at": "2020-10-20T18:45:20Z"
},
{
"tag": "v1.0.1",
"kind": "patch",
"published_at": "2020-04-09T20:45:30Z"
},
{
"tag": "v1.0.0",
"kind": "major",
"published_at": "2020-03-30T07:35:27Z"
},
{
"tag": "v0.1.0",
"kind": "minor",
"published_at": "2017-12-19T11:02:01Z"
},
{
"tag": "v0.0.1",
"kind": "patch",
"published_at": "2017-12-19T10:30:32Z"
}
],
"recent_commits": [
{
"oid": "9f316ac605e94df4e34c54049be6eb18d3bae83c",
"body": null,
"is_bot": false,
"headline": "v1.0.10",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2026-06-06T06:19:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "867fda84fa544487659ed49407ab53986cf67897",
"body": null,
"is_bot": false,
"headline": "[actions] update workflows",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2026-06-05T22:53:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5156bc89dfaceb0bbfb48c553517db9242a5c09a",
"body": null,
"is_bot": false,
"headline": "[readme] remove dead badges",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2026-06-05T22:52:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9f23631ac981b82d3f769b20538c3b429dc86e93",
"body": null,
"is_bot": false,
"headline": "[Deps] update `call-bind`, `call-bound`, `es-object-atoms`",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2026-06-05T22:52:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c1dad08e7b3410f7cf37d0031452db166a671b3f",
"body": "…, `has-strict-mode`, `npmignore`",
"is_bot": false,
"headline": "[Dev Deps] update `@ljharb/eslint-config`, `auto-changelog`, `eslint`…",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2026-06-05T22:49:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "14ee1516d13537c2c63afa56c85048ead5f2e7c8",
"body": "…itespace runs\n\nThe `$`-anchored `endWhitespace` regexp retried its match at every index,\nrunning in O(n^2) on inputs with a large internal whitespace run followed by a non-whitespace character (e.g. `'A' + ' '.repeat(1e5) + 'A'`).\n\nTrim trailing whitespace by scanning back from the end for the boun\n[…]\n dependencies\n(`call-bound` is already a dependency).\n`slice(this, 0)`\npreserves the original RequireObjectCoercible + ToString coercion.\n\nsee https://github.com/es-shims/String.prototype.trim/pull/13",
"is_bot": false,
"headline": "[Fix] avoid quadratic runtime trimming strings with large internal wh…",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2026-06-05T22:46:22Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "79f96868928b28ce477bcbd01d8d4b55e60753e6",
"body": null,
"is_bot": false,
"headline": "[readme] replace runkit CI badge with shields.io check-runs badge",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2026-01-13T19:21:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a465f20ab333265a79a8459e2322f26d6fd08cf5",
"body": null,
"is_bot": false,
"headline": "v1.0.9",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2024-12-11T18:20:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2f99c8bc69d50dc0c56af3900cc31129ef42bc1b",
"body": null,
"is_bot": false,
"headline": "[meta] sort package.json mildly",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2024-12-11T16:11:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9e3bbec66695b715ec38f832aa472e1a82ffe095",
"body": null,
"is_bot": false,
"headline": "[Refactor] use `call-bound` directly",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2024-12-11T16:10:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e892c32d30aaaee372c8159b7ac94d564cf7f0e9",
"body": null,
"is_bot": false,
"headline": "[Deps] update `call-bind`",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2024-12-11T16:09:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e1a59da39cc18bbe546371b12d39f86b4c947896",
"body": null,
"is_bot": false,
"headline": "[Dev Deps] add missing peer dep",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2024-12-11T16:09:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2774fe6660c9de92eacf2a8173f494aa151b1fc1",
"body": "…ngelog`, `tape`",
"is_bot": false,
"headline": "[Dev Deps] update `@es-shims/api`, `@ljharb/eslint-config`, `auto-cha…",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2024-12-11T16:09:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7e5ffdc2ab30b09e19773f35df5dceffddc660d4",
"body": null,
"is_bot": false,
"headline": "[actions] split out node 10-20, and 20+",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2024-12-11T16:08:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cb9a4623b86d2a91cb0a5b704739b6fe43078abd",
"body": null,
"is_bot": false,
"headline": "[Tests] replace `aud` with `npm audit`",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2024-12-11T16:07:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f46c829985a3c78e92482247fe30800781b4a9e3",
"body": null,
"is_bot": false,
"headline": "[meta] add missing `engines.node`",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2024-03-17T07:20:32Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "22499de3eb4c80212a7598feb342152c3718a470",
"body": null,
"is_bot": false,
"headline": "v1.0.8",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2024-03-17T06:34:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0df2b018d3ba214e2435b9841a7a03fc06c24fd0",
"body": null,
"is_bot": false,
"headline": "[Refactor] replace `es-abstract` with `es-object-atoms`",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2024-03-17T06:34:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "190e9c5d74f84d8f90f61c9e9ad4b05f657df830",
"body": null,
"is_bot": false,
"headline": "[Dev Deps] update `aud`, `npmignore`, `tape`",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2024-03-17T06:33:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "87e218bd77b0ca88b315024d1de7936d39a0c8ca",
"body": null,
"is_bot": false,
"headline": "v1.0.7",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2023-09-07T17:07:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6ba2e19a78f9c63bad2daf0627ce7f2e33f1aeb9",
"body": null,
"is_bot": false,
"headline": "[Deps] update `define-properties`, `es-abstract`",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2023-09-07T04:41:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1a102935636b564cd346d83666f62a9398864081",
"body": "…ape`",
"is_bot": false,
"headline": "[Dev Deps] update `@es-shims/api`, `@ljharb/eslint-config`, `aud`, `t…",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2023-09-07T04:41:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a4f90ea11058764f941e8a0e4b9dd1b519c421e6",
"body": null,
"is_bot": false,
"headline": "v1.0.6",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2022-11-07T19:02:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a6e476dc0120a41a22e66b5079bf3b407da387fa",
"body": null,
"is_bot": false,
"headline": "[Deps] update `es-abstract`",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2022-11-07T08:08:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1d1e71720ada81e484c9bffb386f65d7a6a1335e",
"body": null,
"is_bot": false,
"headline": "[meta] use `npmignore` to autogenerate an npmignore file",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2022-11-07T08:07:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a3a9129dd995a949bdb93d278f403aa400e088ed",
"body": null,
"is_bot": false,
"headline": "[Dev Deps] update `aud`, `tape`",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2022-11-07T08:07:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "83f268325cc37ca72bea995281167a9d2821810b",
"body": null,
"is_bot": false,
"headline": "[actions] update rebase action to use reusable workflow",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2022-11-07T08:06:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "aedeb973d8eabc39c3d2a75d5c7d597d2615727a",
"body": null,
"is_bot": false,
"headline": "v1.0.5",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2022-05-03T04:08:03Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "15617ced8ac2ea3ab8324a04d16fd294b12059b5",
"body": null,
"is_bot": false,
"headline": "[Deps] update `define-properties`",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2022-05-03T04:06:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1c4c8dab4aefc1c5823a61b5a0286bb6fe1e036c",
"body": "…ngelog`, `functions-have-names`, `tape`",
"is_bot": false,
"headline": "[Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `auto-cha…",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2022-05-03T04:06:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "10a10916e1ffc8cdab78515b2cc521cc74c08277",
"body": "…itespace",
"is_bot": false,
"headline": "[Fix] as of unicode v6, the mongolian vowel separator is no longer wh…",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2022-05-03T03:59:42Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bb1983dc27504733ab883a42f55b134f679a642d",
"body": "…ines",
"is_bot": false,
"headline": "[Fix] ensure main entry point properly checks the receiver in ES3 eng…",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2022-05-03T03:57:20Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "69a56ce95343848d5e498f8e939a0697db8ac9f2",
"body": "See https://github.com/inspect-js/is-arguments/pull/38",
"is_bot": false,
"headline": "[actions] reuse common workflows",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2021-12-14T21:43:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a08e14bfea5e27d419ef742e83f467a169a69971",
"body": "… `safe-publish-latest`, `tape`",
"is_bot": false,
"headline": "[Dev Deps] update `eslint`, `@ljharb/eslint-config`, `@es-shims/api`,…",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2021-12-14T21:43:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "70c4a7c566fd5bf72475df9318ec2cd218ceca26",
"body": null,
"is_bot": false,
"headline": "[actions] update codecov uploader",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2021-10-13T17:24:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "980550105b304385bcccb8ec05a247e02c24d04a",
"body": null,
"is_bot": false,
"headline": "[readme] add github actions/codecov badges",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2021-10-05T01:04:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4b08ed78a579585b593b3ca4ac7919d13906e840",
"body": "… `aud`, `auto-changelog`, `tape`",
"is_bot": false,
"headline": "[Dev Deps] update `eslint`, `@ljharb/eslint-config`, `@es-shims/api`,…",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2021-10-05T01:04:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bf9c32efe08e98b53302df67581dc971b7a758cd",
"body": null,
"is_bot": false,
"headline": "[actions] update workflows",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2021-10-05T01:03:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "50ec335ed42b59d1ab626dbe412f4ae23ab99b4b",
"body": null,
"is_bot": false,
"headline": "[Dev Deps] update `eslint`, `tape`",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2021-04-11T21:08:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5d7db314948faac975705db56305b6cc3dae7ba9",
"body": null,
"is_bot": false,
"headline": "[actions] use `node/install` instead of `node/run`; use `codecov` action",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2021-04-11T20:55:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9d921bdbcaf8cebebbc302e6df518cbc3e4907bd",
"body": null,
"is_bot": false,
"headline": "[meta] use `prepublishOnly` script for npm 7+",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2021-04-11T20:54:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "538c2571c1b38cf36c14e88295349695da2bd066",
"body": null,
"is_bot": false,
"headline": "v1.0.4",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2021-02-24T00:43:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e250b4a38401e7c02a067dab26cc68316da47ef7",
"body": null,
"is_bot": false,
"headline": "[Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `tape`",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2021-02-24T00:42:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "55231dfd9829277ba5c3f07be5434dc385703ca9",
"body": null,
"is_bot": false,
"headline": "[meta] gitignore coverage output",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2021-02-24T00:42:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "711e6a66660f30f7a30fef536be435af1a13d05c",
"body": null,
"is_bot": false,
"headline": "[Tests] increase coverage",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2021-02-24T00:41:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "10e0e47cb2ecfd171e68b40f8486c5d007dcf3ef",
"body": null,
"is_bot": false,
"headline": "[readme] remove travis badge",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2021-02-24T00:41:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "deb0d06f41ac1c3e1e640ecd1cf0e69303ab5799",
"body": null,
"is_bot": false,
"headline": "[actions] update workflows",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2021-02-24T00:41:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0580f5f915ecb87677764d03fe3cf023e3bee7d8",
"body": null,
"is_bot": false,
"headline": "[Deps] update `call-bind`",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2021-02-01T20:00:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0871432c70c2f6a3929acd740a5d1f57c939f345",
"body": "…names`, `has-strict-mode`, `tape`",
"is_bot": false,
"headline": "[Dev Deps] update `eslint`, `@ljharb/eslint-config`, `functions-have-…",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2021-02-01T20:00:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "08e735cd55b00ae78a9dc16c6b4e786f7931085b",
"body": null,
"is_bot": false,
"headline": "[meta] do not publish github action workflow files",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2021-02-01T19:58:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ee5ddc168e66c19df42efab6d0c5c155657e3fdf",
"body": null,
"is_bot": false,
"headline": "v1.0.3",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2020-11-22T01:47:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "122ecb726b1dc043b9ef27fa5a7b4172a4d5df37",
"body": null,
"is_bot": false,
"headline": "[Dev Deps] update `eslint`, `aud`; add `safe-publish-latest`",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2020-11-22T01:46:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f07b87dd452090a2601d666edceb1daa90d45f24",
"body": null,
"is_bot": false,
"headline": "[Deps] replace `es-abstract` with `call-bind`",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2020-11-22T01:45:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "23e7a09a4ad37c21c3db3d7761212c7d84a371a2",
"body": null,
"is_bot": false,
"headline": "[Tests] migrate tests to Github Actions",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2020-11-21T23:02:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a72a546f671c5d3ac65dff68b4db1a1cc7089bfd",
"body": null,
"is_bot": false,
"headline": "[Tests] run `nyc` on all tests",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2020-11-21T23:02:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "26e8623cf35c1859d0b482d4bb5b3450d101a810",
"body": "… `tape` runner",
"is_bot": false,
"headline": "[Tests] add `implementation` test; run `es-shim-api` in postlint; use…",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2020-11-21T23:00:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "67ada9c5494dda0ce859a5641a03d5ff549fabea",
"body": null,
"is_bot": false,
"headline": "v1.0.2",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2020-10-20T18:45:20Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a003e7166d8de16c551a14b0ec855187357cce43",
"body": "…ngelog`, `tape`",
"is_bot": false,
"headline": "[Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `auto-cha…",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2020-10-20T18:25:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "75ca6b0e9757d64013ae863cfaac49ebcb36f1cf",
"body": null,
"is_bot": false,
"headline": "[Deps] update `es-abstract`",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2020-10-20T18:21:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0b4b43cb605f7b3532e61c43dfc7f1795296c5a4",
"body": null,
"is_bot": false,
"headline": "[actions] add \"Allow Edits\" workflow",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2020-10-20T18:19:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "552016cb631ac13c12bbbc0d6dd65012e5e79583",
"body": "…vent",
"is_bot": false,
"headline": "[actions] switch Automatic Rebase workflow to `pull_request_target` e…",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2020-10-20T18:19:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "db875b3155c8711b9ee6ab4f8ed0653c94879416",
"body": null,
"is_bot": false,
"headline": "v1.0.1",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2020-04-09T20:45:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e2eaab2fd1bc27a3d224b3d76db16190c1dd6d08",
"body": null,
"is_bot": false,
"headline": "[Dev Deps] update `auto-changelog`",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2020-04-09T20:45:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6abe248ba0b57a8b0e16bbe01de07a4d37c421bc",
"body": null,
"is_bot": false,
"headline": "[meta] add some missing repo metadata",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2020-04-09T20:41:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6018f310435bd176bbda3b2bd9aefdd1d0881f58",
"body": null,
"is_bot": false,
"headline": "v1.0.0",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2020-03-30T07:35:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ed4ce0d84d53e626b48375c5959be20332464eaf",
"body": null,
"is_bot": false,
"headline": "[meta] update readme",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2020-03-30T07:35:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2c6ef13d3f0b07a9bc55e367b311dbb731780405",
"body": null,
"is_bot": false,
"headline": "[Breaking] convert to es-shim API",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2020-03-30T07:26:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "eadaf2c83f2d791b54d80d7b30a9961ebc0f246f",
"body": null,
"is_bot": false,
"headline": "[Tests] add `npm run lint`",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2020-03-30T07:10:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "44d355f7dafcb0b51c5001824b07f7a2b9f1d06e",
"body": null,
"is_bot": false,
"headline": "Only apps should have lockfiles",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2020-03-30T07:06:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e78bf8e5fc04fcb3379dd1c98360d7df4f9ea7d6",
"body": "See https://github.com/ljharb/es-abstract/pull/74",
"is_bot": false,
"headline": "[actions] add automatic rebasing / merge commit blocking",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2020-03-30T07:06:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "35139d6236ceacfc1501d08fb196d18a936ee583",
"body": null,
"is_bot": false,
"headline": "[meta] add `funding` field",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2020-03-30T07:06:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6f1fcc1739de1e9541bd603b659807646a13dd7f",
"body": null,
"is_bot": false,
"headline": "[meta] add `auto-changelog`",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2020-03-30T07:06:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "983c5639efca2c9bb8b93ebbb917fbcb2561b94c",
"body": null,
"is_bot": false,
"headline": "[Tests] use shared travis-ci configs",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2020-03-30T07:05:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a2d308b99967ca427936c54747175794ca7336e1",
"body": null,
"is_bot": false,
"headline": "[meta] fix non-updated version number",
"author_name": "Jordan Harband",
"author_login": "ljharb",
"committed_at": "2020-03-30T07:05:26Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f1c71a0a882e89e1c207ed2b316d91670be2b075",
"body": null,
"is_bot": false,
"headline": "updated README",
"author_name": "Khaled Al-Ansari",
"author_login": "KhaledElAnsari",
"committed_at": "2017-12-19T11:02:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d1f4558a51157833f14d8a424426d038d06576ce",
"body": null,
"is_bot": false,
"headline": "typo",
"author_name": "Khaled Al-Ansari",
"author_login": "KhaledElAnsari",
"committed_at": "2017-12-19T10:30:32Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f78628ab123171f8b7759bba331d6a589702584f",
"body": null,
"is_bot": false,
"headline": "created README file",
"author_name": "Khaled Al-Ansari",
"author_login": "KhaledElAnsari",
"committed_at": "2017-12-19T10:28:28Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e58d550ab8695924ff4221ebe91f00f29801aa4b",
"body": null,
"is_bot": false,
"headline": "finished polyfill",
"author_name": "Khaled Al-Ansari",
"author_login": "KhaledElAnsari",
"committed_at": "2017-12-18T20:04:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9199478256da953e2f5bddfc4d82a161f4537e85",
"body": null,
"is_bot": false,
"headline": "Initial commit",
"author_name": "Khaled Al-Ansari",
"author_login": "KhaledElAnsari",
"committed_at": "2017-12-18T20:04:01Z",
"body_truncated": false,
"is_coding_agent": false
}
],
"releases_count": 13,
"commits_last_year": 7,
"latest_release_at": "2026-06-06T06:19:05Z",
"latest_release_tag": "v1.0.10",
"releases_from_tags": true,
"days_since_last_push": 46,
"active_weeks_last_year": 2,
"days_since_latest_release": 46,
"mean_days_between_releases": 249.8
},
"community": {
"has_readme": true,
"has_license": true,
"has_description": true,
"has_contributing": false,
"health_percentage": 62,
"has_issue_template": false,
"has_code_of_conduct": true,
"has_pull_request_template": false
},
"ecosystem": {
"packages": [
{
"name": "string.prototype.trimend",
"exists": true,
"license": "MIT",
"keywords": [
"es6",
"es7",
"es8",
"javascript",
"prototype",
"polyfill",
"utility",
"trim",
"trimLeft",
"trimRight",
"trimStart",
"trimEnd",
"tc39"
],
"ecosystem": "npm",
"matches_repo": true,
"registry_url": "https://www.npmjs.com/package/string.prototype.trimend",
"is_deprecated": false,
"latest_version": "1.0.10",
"repository_url": "https://github.com/es-shims/String.prototype.trimEnd",
"versions_count": 13,
"total_downloads": null,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": 2,
"monthly_downloads": 312291491,
"first_published_at": "2017-12-19T10:59:43.526000Z",
"latest_published_at": "2026-06-06T06:19:59.765000Z",
"latest_version_yanked": null,
"days_since_latest_publish": 46
}
]
},
"popularity": {
"forks": 4,
"stars": 5,
"watchers": 3,
"fork_history": {
"days": [
{
"date": "2019-11-07",
"count": 1
},
{
"date": "2022-04-08",
"count": 1
},
{
"date": "2024-08-16",
"count": 1
},
{
"date": "2025-12-05",
"count": 1
}
],
"complete": true,
"collected": 4,
"total_forks": 4
},
"star_history": null,
"open_issues_and_prs": 1
},
"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": [],
"toolchain_manifests": [],
"largest_source_bytes": 1740,
"source_files_sampled": 9,
"oversized_source_files": 0,
"agent_instruction_files": [],
"agent_instruction_max_bytes": null
},
"dependencies": {
"manifests": [
"package.json"
],
"advisories": {
"error": null,
"scope": "published_package",
"source": "osv",
"findings": [],
"collected": true,
"malicious": [],
"truncated": false,
"by_severity": {},
"advisory_count": 0,
"affected_count": 0,
"assessed_count": 22,
"malicious_count": 0,
"assessed_package": "npm:string.prototype.trimend@1.0.10",
"unassessed_count": 0,
"direct_affected_count": 0
},
"ecosystems": [
"npm"
],
"dependencies": [
{
"name": "call-bind",
"manifest": "package.json",
"ecosystem": "npm",
"version_constraint": "^1.0.9"
},
{
"name": "call-bound",
"manifest": "package.json",
"ecosystem": "npm",
"version_constraint": "^1.0.4"
},
{
"name": "define-properties",
"manifest": "package.json",
"ecosystem": "npm",
"version_constraint": "^1.2.1"
},
{
"name": "es-object-atoms",
"manifest": "package.json",
"ecosystem": "npm",
"version_constraint": "^1.1.2"
}
],
"all_dependencies": {
"error": null,
"source": "github-sbom",
"packages": [
{
"name": "call-bind",
"direct": true,
"version": "^1.0.9",
"ecosystem": "npm"
},
{
"name": "call-bound",
"direct": true,
"version": "^1.0.4",
"ecosystem": "npm"
},
{
"name": "define-properties",
"direct": true,
"version": "^1.2.1",
"ecosystem": "npm"
},
{
"name": "es-object-atoms",
"direct": true,
"version": "^1.1.2",
"ecosystem": "npm"
},
{
"name": "@es-shims/api",
"direct": false,
"version": "^2.5.1",
"ecosystem": "npm"
},
{
"name": "@ljharb/eslint-config",
"direct": false,
"version": "^22.2.3",
"ecosystem": "npm"
},
{
"name": "auto-changelog",
"direct": false,
"version": "^2.6.0",
"ecosystem": "npm"
},
{
"name": "eslint",
"direct": false,
"version": "^8.57.1",
"ecosystem": "npm"
},
{
"name": "functions-have-names",
"direct": false,
"version": "^1.2.3",
"ecosystem": "npm"
},
{
"name": "has-strict-mode",
"direct": false,
"version": "^1.1.0",
"ecosystem": "npm"
},
{
"name": "in-publish",
"direct": false,
"version": "^2.0.1",
"ecosystem": "npm"
},
{
"name": "npmignore",
"direct": false,
"version": "^0.3.5",
"ecosystem": "npm"
},
{
"name": "nyc",
"direct": false,
"version": "^10.3.2",
"ecosystem": "npm"
},
{
"name": "safe-publish-latest",
"direct": false,
"version": "^2.0.0",
"ecosystem": "npm"
},
{
"name": "tape",
"direct": false,
"version": "^5.9.0",
"ecosystem": "npm"
}
],
"collected": true,
"truncated": false,
"total_count": 15,
"direct_count": 4,
"indirect_count": 11
}
},
"maintainership": {
"issues": {
"open_prs": 0,
"merged_prs": 1,
"open_issues": 1,
"closed_ratio": 0.667,
"closed_issues": 2,
"closed_unmerged_prs": 2
},
"bus_factor": 1,
"bot_contributors": 0,
"top_contributors": [
{
"type": "User",
"login": "ljharb",
"commits": 74,
"avatar_url": "https://avatars.githubusercontent.com/u/45469?v=4"
},
{
"type": "User",
"login": "KhaledElAnsari",
"commits": 5,
"avatar_url": "https://avatars.githubusercontent.com/u/10652391?v=4"
}
],
"contributors_sampled": 2,
"top_contributor_share": 0.937
},
"quality_signals": {
"has_ci": true,
"has_tests": true,
"ci_workflows": [
"node-aught.yml",
"node-pretest.yml",
"node-tens.yml",
"node-twenties.yml",
"rebase.yml",
"require-allow-edits.yml"
],
"has_docs_dir": false,
"linter_configs": [
".eslintrc"
],
"has_editorconfig": true,
"has_linter_config": true,
"has_precommit_config": false
},
"security_signals": {
"lockfiles": [],
"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": null,
"reason": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
},
{
"name": "CI-Tests",
"score": null,
"reason": "no pull request found",
"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/30 approved changesets -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
},
{
"name": "Contributors",
"score": 10,
"reason": "project has 32 contributing companies or organizations",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
},
{
"name": "Dangerous-Workflow",
"score": 10,
"reason": "no dangerous workflow patterns detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
},
{
"name": "Dependency-Update-Tool",
"score": 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": 5,
"reason": "6 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 5",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
},
{
"name": "Packaging",
"score": null,
"reason": "packaging workflow not detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
},
{
"name": "Pinned-Dependencies",
"score": 0,
"reason": "dependency not pinned by hash detected -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
},
{
"name": "SAST",
"score": 0,
"reason": "no SAST tool detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
},
{
"name": "Security-Policy",
"score": 10,
"reason": "security policy file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
},
{
"name": "Signed-Releases",
"score": null,
"reason": "no releases found",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
},
{
"name": "Token-Permissions",
"score": 0,
"reason": "detected GitHub workflow tokens with excessive permissions",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
},
{
"name": "Vulnerabilities",
"score": 10,
"reason": "0 existing vulnerabilities detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
}
],
"commit": "9f316ac605e94df4e34c54049be6eb18d3bae83c",
"ran_at": "2026-07-22T22:13:12Z",
"aggregate_score": 4.7,
"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-19T22:26:12Z",
"oldest_open_prs": [],
"last_merged_pr_at": "2020-11-22T01:42:38Z",
"ci_last_conclusion": "SUCCESS",
"oldest_open_issues": [
{
"number": 5,
"created_at": "2021-02-20T22:42:32Z",
"last_comment_at": null,
"last_comment_author": null
}
]
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/es-shims/String.prototype.trimEnd",
"host": "github.com",
"name": "String.prototype.trimEnd",
"owner": "es-shims"
},
"metrics": {
"overall": {
"key": "overall",
"band": "moderate",
"name": "Overall health",
"note": null,
"notes": [],
"value": 59,
"inputs": {
"security": 58,
"vitality": 48,
"community": 54,
"governance": 56,
"engineering": 79
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "at_risk",
"name": "Vitality",
"value": 48,
"weight": 0.22,
"metrics": [
{
"key": "development_activity",
"band": "at_risk",
"name": "Development activity",
"note": null,
"notes": [],
"value": 32,
"inputs": {
"commits_last_year": 7,
"human_commit_share": 1,
"days_since_last_push": 46,
"active_weeks_last_year": 2
},
"components": [
{
"key": "push_recency",
"name": "Push recency",
"detail": "last push 46 days ago",
"points": 18,
"status": "partial",
"details": [
{
"code": "push_recency",
"params": {
"days": 46
}
}
],
"max_points": 36
},
{
"key": "commit_cadence",
"name": "Commit cadence",
"detail": "2/52 weeks with commits",
"points": 1.4,
"status": "partial",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 2
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "7 commits in the last year",
"points": 8.1,
"status": "partial",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 7
}
}
],
"max_points": 18
},
{
"key": "openssf_scorecard_maintained",
"name": "OpenSSF Scorecard: Maintained",
"detail": "6 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 5",
"points": 5,
"status": "partial",
"details": [],
"max_points": 10
}
]
},
{
"key": "release_discipline",
"band": "good",
"name": "Release discipline",
"note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"openssf_scorecard_signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 72,
"inputs": {
"releases_count": 13,
"latest_release_tag": "v1.0.10",
"releases_from_tags": true,
"days_since_latest_release": 46,
"mean_days_between_releases": 249.8
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "13 version tags (no GitHub releases)",
"points": 16.2,
"status": "partial",
"details": [
{
"code": "version_tags_no_releases",
"params": {
"count": 13
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 46 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "release_recency",
"params": {
"days": 46
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~249.8 days",
"points": 12.6,
"status": "partial",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 249.8
}
}
],
"max_points": 27
},
{
"key": "openssf_scorecard_signed_releases",
"name": "OpenSSF Scorecard: Signed-Releases",
"detail": "no releases found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 10
}
]
},
{
"key": "abandonment",
"band": "excellent",
"name": "Abandonment",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"cap": null,
"state": "maintained",
"guards": [],
"signals": [],
"red_flag": false,
"multiplier_pct": 100,
"declared_reason": null,
"unverified_reason": null,
"unanswered_open_prs": null,
"unanswered_open_issues": null,
"days_since_last_merged_pr": null,
"days_since_last_human_commit": 46,
"days_since_last_human_commit_is_floor": false
},
"components": [
{
"key": "project_is_still_maintained",
"name": "Project is still maintained",
"detail": "last human commit 46 days ago",
"points": 100,
"status": "met",
"details": [
{
"code": "abandonment_maintained",
"params": {
"days": 46
}
}
],
"max_points": 100
}
]
}
],
"description": "Is the project alive — is code being written and are releases shipping?"
},
{
"key": "community",
"band": "moderate",
"name": "Community & Adoption",
"value": 54,
"weight": 0.18,
"metrics": [
{
"key": "popularity",
"band": "critical",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 16,
"inputs": {
"forks": 4,
"stars": 5,
"watchers": 3,
"growth_state": "unverified",
"growth_factor_pct": 100,
"growth_unverified_reason": "no_history"
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "5 stars",
"points": 9.8,
"status": "partial",
"details": [
{
"code": "stars",
"params": {
"count": 5
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "4 forks",
"points": 4,
"status": "partial",
"details": [
{
"code": "forks",
"params": {
"count": 4
}
}
],
"max_points": 25
},
{
"key": "watchers",
"name": "Watchers",
"detail": "3 watchers",
"points": 1.7,
"status": "partial",
"details": [
{
"code": "watchers",
"params": {
"count": 3
}
}
],
"max_points": 15
}
]
},
{
"key": "community_health",
"band": "moderate",
"name": "Community health",
"note": null,
"notes": [],
"value": 65,
"inputs": {
"has_readme": true,
"has_license": true,
"has_contributing": false,
"has_issue_template": false,
"has_code_of_conduct": true,
"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": 13.5,
"status": "met",
"details": [],
"max_points": 13.5
},
{
"key": "issue_template",
"name": "Issue template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.2
},
{
"key": "pr_template",
"name": "PR template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 6.3
}
]
},
{
"key": "ecosystem_adoption",
"band": "excellent",
"name": "Ecosystem adoption (downloads)",
"note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"registry_dependents"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 100,
"inputs": {
"packages": [
"string.prototype.trimend"
],
"dependents": null,
"ecosystems": "npm",
"total_downloads": null,
"monthly_downloads": 312291491
},
"components": [
{
"key": "monthly_downloads",
"name": "Monthly downloads",
"detail": "312,291,491 downloads/month across npm",
"points": 80,
"status": "met",
"details": [
{
"code": "downloads_monthly",
"params": {
"count": 312291491,
"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": 23,
"inputs": {
"bus_factor": 1,
"contributors_sampled": 2,
"top_contributor_share": 0.937
},
"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 94% of commits",
"points": 1.4,
"status": "partial",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 94
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "2 contributors",
"points": 2.7,
"status": "partial",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 2
}
}
],
"max_points": 13.5
},
{
"key": "openssf_scorecard_contributors",
"name": "OpenSSF Scorecard: Contributors",
"detail": "project has 32 contributing companies or organizations",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "responsiveness",
"band": "at_risk",
"name": "Issue & PR responsiveness",
"note": null,
"notes": [],
"value": 44,
"inputs": {
"merged_prs": 1,
"open_issues": 1,
"closed_issues": 2,
"issue_closed_ratio": 0.667,
"closed_unmerged_prs": 2
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "67% of issues closed",
"points": 31.2,
"status": "partial",
"details": [
{
"code": "issues_closed_share",
"params": {
"share": 67
}
}
],
"max_points": 46.75
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "1/3 decided PRs merged",
"points": 12.8,
"status": "partial",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 1,
"decided": 3
}
}
],
"max_points": 38.25
},
{
"key": "openssf_scorecard_code_review",
"name": "OpenSSF Scorecard: Code-Review",
"detail": "Found 0/30 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
}
]
},
{
"key": "stewardship",
"band": "good",
"name": "Ownership & stewardship",
"note": null,
"notes": [],
"value": 71,
"inputs": {
"followers": 176,
"owner_type": "Organization",
"is_verified": null,
"owner_login": "es-shims",
"public_repos": 168,
"account_age_days": 4587
},
"components": [
{
"key": "ownership_backing",
"name": "Ownership backing",
"detail": "organization-owned",
"points": 30,
"status": "met",
"details": [
{
"code": "owner_organization",
"params": {}
}
],
"max_points": 30
},
{
"key": "verified_domain",
"name": "Verified domain",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 20
},
{
"key": "owner_reach",
"name": "Owner reach",
"detail": "176 followers of es-shims",
"points": 16.2,
"status": "partial",
"details": [
{
"code": "owner_followers",
"params": {
"count": 176,
"login": "es-shims"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "168 public repos, account ~12 yr old",
"points": 25,
"status": "met",
"details": [
{
"code": "public_repos",
"params": {
"count": 168
}
},
{
"code": "account_age_years",
"params": {
"years": 12
}
}
],
"max_points": 25
}
]
},
{
"key": "package_maintenance",
"band": "excellent",
"name": "Package maintenance",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"packages": [
"string.prototype.trimend"
],
"ecosystems": "npm",
"any_deprecated": false,
"min_days_since_publish": 46
},
"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 46 days ago",
"points": 35,
"status": "met",
"details": [
{
"code": "publish_recency",
"params": {
"days": 46
}
}
],
"max_points": 35
},
{
"key": "version_history",
"name": "Version history",
"detail": "13 published versions",
"points": 20,
"status": "met",
"details": [
{
"code": "published_versions",
"params": {
"count": 13
}
}
],
"max_points": 20
},
{
"key": "not_deprecated",
"name": "Not deprecated",
"detail": "active, not deprecated or yanked",
"points": 20,
"status": "met",
"details": [
{
"code": "package_not_deprecated",
"params": {}
}
],
"max_points": 20
}
]
}
],
"description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
},
{
"key": "engineering",
"band": "good",
"name": "Engineering Quality",
"value": 79,
"weight": 0.2,
"metrics": [
{
"key": "engineering_practices",
"band": "excellent",
"name": "Engineering practices",
"note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: CI-Tests. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"openssf_scorecard_ci_tests"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 88,
"inputs": {
"has_ci": true,
"has_tests": true,
"has_editorconfig": true,
"has_linter_config": true,
"has_precommit_config": false
},
"components": [
{
"key": "ci_workflows",
"name": "CI workflows",
"detail": "6 workflow(s)",
"points": 24,
"status": "met",
"details": [
{
"code": "ci_workflows",
"params": {
"count": 6
}
}
],
"max_points": 24
},
{
"key": "tests_present",
"name": "Tests present",
"detail": null,
"points": 24,
"status": "met",
"details": [],
"max_points": 24
},
{
"key": "linter_config",
"name": "Linter config",
"detail": ".eslintrc",
"points": 16,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": ".eslintrc"
}
}
],
"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": 6.4,
"status": "met",
"details": [],
"max_points": 6.4
},
{
"key": "openssf_scorecard_ci_tests",
"name": "OpenSSF Scorecard: CI-Tests",
"detail": "no pull request found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 20
}
]
},
{
"key": "documentation",
"band": "moderate",
"name": "Documentation",
"note": null,
"notes": [],
"value": 65,
"inputs": {
"topics": [
"string",
"ecmascript",
"polyfill",
"es6",
"es7",
"es8",
"trim",
"proposal",
"tc39"
],
"has_wiki": false,
"homepage": "https://github.com/tc39/proposal-string-left-right-trim",
"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://github.com/tc39/proposal-string-left-right-trim",
"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": "9 topics",
"points": 10,
"status": "met",
"details": [
{
"code": "topics_count",
"params": {
"count": 9
}
}
],
"max_points": 10
},
{
"key": "wiki",
"name": "Wiki",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
}
],
"description": "Are baseline engineering and documentation practices in place?"
},
{
"key": "security",
"band": "moderate",
"name": "Security",
"value": 58,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "at_risk",
"name": "Security posture",
"note": "Excluded from scoring (no data or not applicable): Branch-Protection, CI-Tests, Packaging, Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"branch_protection",
"ci_tests",
"packaging",
"signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 47,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 14,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 4,
"scorecard_aggregate": 4.7
},
"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": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 7.5
},
{
"key": "ci_tests",
"name": "CI-Tests",
"detail": "no pull request found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"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/30 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "contributors",
"name": "Contributors",
"detail": "project has 32 contributing companies or organizations",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "dangerous_workflow",
"name": "Dangerous-Workflow",
"detail": "no dangerous workflow patterns detected",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "dependency_update_tool",
"name": "Dependency-Update-Tool",
"detail": "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": "6 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 5",
"points": 3.8,
"status": "partial",
"details": [],
"max_points": 7.5
},
{
"key": "packaging",
"name": "Packaging",
"detail": "packaging workflow not detected",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 5
},
{
"key": "pinned_dependencies",
"name": "Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "sast",
"name": "SAST",
"detail": "no SAST tool detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "security_policy",
"name": "Security-Policy",
"detail": "security policy file detected",
"points": 5,
"status": "met",
"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): No advisories left outstanding. Remaining weights renormalized. Matched the npm:string.prototype.trimend@1.0.10 runtime dependency closure — what installing the published package pulls in — 22 packages. Reachability is not analyzed.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"no_advisories_left_outstanding"
]
}
},
{
"code": "weights_renormalized",
"params": {}
},
{
"code": "advisories_scope_published",
"params": {
"package": "npm:string.prototype.trimend@1.0.10",
"assessed": 22
}
},
{
"code": "advisories_reachability",
"params": {}
}
],
"value": 100,
"inputs": {
"source": "osv",
"advisories": 0,
"affected_packages": 0,
"assessed_packages": 22,
"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": "no indirect dependency carries a known advisory",
"points": 25,
"status": "met",
"details": [
{
"code": "no_indirect_advisories",
"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": 22,
"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": 11
},
"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": "critical",
"name": "AI Readiness",
"value": 26,
"weight": 0,
"metrics": [
{
"key": "ai_agent_context",
"band": "critical",
"name": "Agent context & guidance",
"note": null,
"notes": [],
"value": 1,
"inputs": {
"has_llms_txt": false,
"legible_history_share": 0.013,
"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": "1 of 79 human commits state their intent (structured subject or explanatory body)",
"points": 0.7,
"status": "partial",
"details": [
{
"code": "legible_history",
"params": {
"legible": 1,
"sampled": 79
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "at_risk",
"name": "Verify loop (build / test / typecheck)",
"note": null,
"notes": [],
"value": 33,
"inputs": {
"has_nix": false,
"has_tests": true,
"lockfiles": [],
"has_dockerfile": false,
"typed_language": false,
"bootstrap_files": [],
"has_devcontainer": false,
"has_linter_config": true,
"typecheck_configs": [],
"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": 22,
"status": "met",
"details": [],
"max_points": 22
},
{
"key": "lint_format_config",
"name": "Lint / format config",
"detail": ".eslintrc",
"points": 11,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": ".eslintrc"
}
}
],
"max_points": 11
},
{
"key": "static_type_checking",
"name": "Static type checking",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 11
},
{
"key": "reproducible_environment",
"name": "Reproducible environment",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
},
{
"key": "demonstrated_agent_practice",
"name": "Demonstrated agent practice",
"detail": "no agent-authored commits among the last 79",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_agent_authored_commits",
"params": {
"sampled": 79
}
}
],
"max_points": 10
},
{
"key": "automated_maintenance",
"name": "Automated maintenance",
"detail": "no automated dependency updates observed",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_dependency_automation",
"params": {}
}
],
"max_points": 8
},
{
"key": "openssf_scorecard_pinned_dependencies",
"name": "OpenSSF Scorecard: Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "ai_code_legibility",
"band": "moderate",
"name": "Code legibility for models",
"note": null,
"notes": [],
"value": 55,
"inputs": {
"primary_language": "JavaScript",
"largest_source_bytes": 1740,
"source_files_sampled": 9,
"oversized_source_files": 0
},
"components": [
{
"key": "type_checkable_code",
"name": "Type-checkable code",
"detail": "JavaScript without a type-check config",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_typecheck_config_language",
"params": {
"language": "JavaScript"
}
}
],
"max_points": 45
},
{
"key": "manageable_file_sizes",
"name": "Manageable file sizes",
"detail": "0/9 source files over 60KB",
"points": 55,
"status": "met",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 9,
"oversized": 0
}
}
],
"max_points": 55
}
]
}
],
"description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
}
],
"metrics_version": "1.13.0"
},
"warnings": [
"Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token"
],
"report_type": "repository",
"generated_at": "2026-07-22T22:13:17.209475Z",
"schema_version": "0.27.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/e/es-shims/String.prototype.trimEnd.svg",
"full_name": "es-shims/String.prototype.trimEnd",
"license_state": "standard",
"license_spdx": "MIT"
}