Звіт у форматі JSON машиночитний
{
"data": {
"repo": {
"topics": [
"barchart",
"chart",
"cli",
"ink",
"nodejs",
"react",
"sparkline",
"terminal",
"typescript",
"visualization"
],
"is_fork": false,
"size_kb": 2308,
"has_wiki": true,
"homepage": null,
"languages": {
"JavaScript": 31300,
"TypeScript": 292519
},
"pushed_at": "2026-07-19T23:10:01Z",
"created_at": "2025-08-29T01:44:24Z",
"owner_type": "User",
"updated_at": "2026-07-19T23:05:40Z",
"description": "Terminal visualization components for Ink CLI framework - Sparkline and BarChart components with TypeScript support",
"is_archived": false,
"is_disabled": false,
"license_spdx": "MIT",
"default_branch": "main",
"license_spdx_raw": "MIT",
"primary_language": "TypeScript",
"significant_languages": [
"TypeScript"
]
},
"owner": {
"blog": "https://pppp606.github.io/",
"name": "Takuto Yuki",
"type": "User",
"login": "pppp606",
"company": null,
"location": "Nara, Japan",
"followers": 11,
"avatar_url": "https://avatars.githubusercontent.com/u/7203958?v=4",
"created_at": "2014-04-07T11:24:48Z",
"is_verified": null,
"public_repos": 64,
"account_age_days": 4492
},
"license": {
"state": "standard",
"spdx_id": "MIT",
"raw_spdx": "MIT",
"file_present": true,
"scorecard_found": true,
"profile_has_license": true
},
"activity": {
"releases": [
{
"tag": "v0.2.7",
"kind": "patch",
"published_at": "2026-07-19T23:06:33Z"
},
{
"tag": "v0.2.6",
"kind": "patch",
"published_at": "2026-06-08T06:04:43Z"
},
{
"tag": "v0.2.5",
"kind": "patch",
"published_at": "2026-04-01T07:44:53Z"
},
{
"tag": "v0.2.4",
"kind": "patch",
"published_at": "2025-12-31T05:39:49Z"
},
{
"tag": "v0.2.3",
"kind": "patch",
"published_at": "2025-12-11T05:16:15Z"
},
{
"tag": "v0.2.2",
"kind": "patch",
"published_at": "2025-12-11T04:54:06Z"
},
{
"tag": "v0.2.1",
"kind": "patch",
"published_at": "2025-11-29T14:47:32Z"
},
{
"tag": "v0.1.1",
"kind": "patch",
"published_at": "2025-08-31T08:46:56Z"
}
],
"recent_commits": [
{
"oid": "3853f9d63febdf8bba129729a2b53e53e0281d7c",
"body": "fix(ci): pin npm to v11 in publish workflow",
"is_bot": false,
"headline": "Merge pull request #130 from pppp606/fix/publish-npm-pin-npm11",
"author_name": "Takuto Yuki",
"author_login": "pppp606",
"committed_at": "2026-07-19T23:05:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "63af2ffde754eb7f8613efb5f17794a19ba4e133",
"body": "npm@latest is now 12.x, which requires Node >= 22 and fails EBADENGINE\non the Node 20 runner. npm 11 supports Node 20 and OIDC trusted\npublishing (>= 11.5.1).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(ci): pin npm to v11 in publish workflow",
"author_name": "pppp606",
"author_login": "pppp606",
"committed_at": "2026-07-19T23:04:17Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "5cf165395ac97b60edab9e1474d6973d46bdfd44",
"body": "chore(release): bump version to 0.2.7",
"is_bot": false,
"headline": "Merge pull request #129 from pppp606/release/v0.2.7",
"author_name": "Takuto Yuki",
"author_login": "pppp606",
"committed_at": "2026-07-19T23:03:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e766a67525a31ce8350ad0888461dcc6d5825e9a",
"body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore(release): bump version to 0.2.7",
"author_name": "pppp606",
"author_login": "pppp606",
"committed_at": "2026-07-19T23:01:43Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "2ea15c0e980fcd0ebcb5473e677bf79eb832709c",
"body": "fix(deps): resolve Dependabot and npm audit vulnerabilities",
"is_bot": false,
"headline": "Merge pull request #128 from pppp606/fix/dependabot-js-yaml-babel-core",
"author_name": "Takuto Yuki",
"author_login": "pppp606",
"committed_at": "2026-07-19T23:01:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "26280d519b9876776ab94eede460342fa1b99579",
"body": "- js-yaml 3.14.2 -> 3.15.0, 4.1.1 -> 4.3.0 (quadratic-complexity DoS in merge key handling)\n- @babel/core 7.29.0 -> 7.29.7 (arbitrary file read via sourceMappingURL comment)\n- brace-expansion (numeric range DoS), ws 8.x (memory disclosure / DoS) via npm audit fix\n\nAll are transitive devDependencies; updated within existing semver ranges.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(deps): resolve Dependabot and npm audit vulnerabilities",
"author_name": "pppp606",
"author_login": "pppp606",
"committed_at": "2026-07-19T22:59:35Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "077d41fe7b3fe1f2fdcb2940ceb17c64d8c8104c",
"body": "fix(ci): restore npm upgrade step for OIDC trusted publishing",
"is_bot": false,
"headline": "Merge pull request #122 from pppp606/fix/publish-npm-oidc-upgrade",
"author_name": "Takuto Yuki",
"author_login": "pppp606",
"committed_at": "2026-06-08T06:19:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9972f97fd91b6be697a9c3c0732ab2433082f55b",
"body": "The publish-npm workflow relies on npm OIDC trusted publishing\n(`npm publish --provenance` with id-token: write and no NPM_TOKEN). That\nrequires npm >= 11.5.1, but Node 20 ships npm 10.x. The required\n`npm install -g npm@latest` step was added in 2d7ae74 specifically for OIDC\nsupport and then accide\n[…]\nWithout it, provenance signing succeeds but the registry PUT fails with\n`E404 ... is not in this registry` -- exactly the v0.2.6 publish failure.\nRestore the step so the OIDC publish is authenticated.",
"is_bot": false,
"headline": "fix(ci): restore npm upgrade step for OIDC trusted publishing",
"author_name": "pppp606",
"author_login": "pppp606",
"committed_at": "2026-06-08T06:17:44Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "d8acd3f3535933f15b44ed8412fd112e2262408b",
"body": "…eck-script\n\nchore: remove leftover license-check script and its tests",
"is_bot": false,
"headline": "Merge pull request #120 from pppp606/chore/remove-leftover-license-ch…",
"author_name": "Takuto Yuki",
"author_login": "pppp606",
"committed_at": "2026-06-08T05:45:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "329e6b61a7299ce61e93cd822952b47c1cc7265c",
"body": "The license-checker devDependency was removed in #95, but the\n`license-check` npm script (`npx license-checker --summary`) and the two\ntests asserting its presence were left behind. Remove them so no script\nreferences a dependency that is no longer declared. Ad-hoc license audits can\nstill be run on demand via `npx license-checker --summary`.",
"is_bot": false,
"headline": "chore: remove leftover license-check script and its tests",
"author_name": "pppp606",
"author_login": "pppp606",
"committed_at": "2026-06-08T05:42:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d0eb68db789a4e8f407edc4290e3a565f18d1492",
"body": "fix(security): bump lodash & fast-uri to patched versions (lockfile)",
"is_bot": false,
"headline": "Merge pull request #119 from pppp606/fix/audit-lodash-fast-uri",
"author_name": "Takuto Yuki",
"author_login": "pppp606",
"committed_at": "2026-06-08T05:36:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6147cbc4aff2ffbda60450b9588e9445fcd943c4",
"body": "Resolve 2 high-severity advisories in secretlint's transitive dependencies by\nrefreshing the lockfile (npm update), within the parents' existing semver\nranges -- no package.json changes needed:\n- lodash 4.17.23 -> 4.18.1 (GHSA-r5fr-rjxr-66jc code injection via _.template,\n GHSA-f23m-r3pf-42rh proto\n[…]\nin range (ajv: fast-uri ^3.0.1;\ntextlint-formatter: lodash ^4.17.23); the lockfile had simply frozen older\nresolutions. npm audit --audit-level high is now clean; secretlint, typecheck\nand tests pass.",
"is_bot": false,
"headline": "fix(security): bump lodash and fast-uri to patched versions in lockfile",
"author_name": "pppp606",
"author_login": "pppp606",
"committed_at": "2026-06-08T05:34:27Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "f0e123f7ab7cb57e58a64669d957c405d4561343",
"body": "…rity-X9dLh\n\nchore(security): simplify workflows and strengthen SHA-pinning validator",
"is_bot": false,
"headline": "Merge pull request #113 from pppp606/claude/audit-github-actions-secu…",
"author_name": "Takuto Yuki",
"author_login": "pppp606",
"committed_at": "2026-05-20T08:23:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e728a0038a853cbc352c09d3f6cc8c5a3e01f52d",
"body": "Apply the principle of least privilege at the workflow level by giving\nevery workflow a read-only top-level permissions block, so any job that\nforgets to declare its own permissions inherits read-only instead of\nthe broader defaults.\n\n- ci.yml: add top-level \"permissions: contents: read\".\n- publish-\n[…]\n write\"\n from the top-level block. Both guard jobs already declare these\n writes at job level for label operations, so removing them at the\n top level only narrows the default — no behavior change.",
"is_bot": false,
"headline": "chore(security): tighten top-level workflow token permissions",
"author_name": "Claude",
"author_login": "claude",
"committed_at": "2026-05-20T07:40:57Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "372385f6c93b36ad365e7ed54ed3617a4eea97ee",
"body": "Reduce GitHub Actions attack surface by removing redundant/unnecessary\nworkflows and tightening the SHA-pinning check so future violations\n(e.g. actions/upload-artifact@v6 style mutable refs) are caught by CI.\n\n- Remove .github/workflows/secretlint.yml: secretlint already runs via\n npm run lint in \n[…]\no actions. This would\n have caught the actions/upload-artifact@v6 mutable-ref violation.\n- Drop the demo-screenshot exception in security-scanning.test.ts so\n no workflow may declare contents:write.",
"is_bot": false,
"headline": "chore(security): simplify workflows and strengthen SHA-pinning validator",
"author_name": "Claude",
"author_login": "claude",
"committed_at": "2026-05-20T05:51:23Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "015bde9afce8cb79ccb75996bacb096057f1e4b9",
"body": "…ns-and-cache\n\nchore(security): tighten Actions permissions and remove publish-time cache",
"is_bot": false,
"headline": "Merge pull request #111 from pppp606/claude/harden-workflow-permissio…",
"author_name": "Takuto Yuki",
"author_login": "pppp606",
"committed_at": "2026-05-13T11:48:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f80af78aa12ddba1c4e19a0c0d78da0bfc669245",
"body": "`ACTIONS_ID_TOKEN_REQUEST_URL` / `_TOKEN` are only injected when a job\nhas `id-token: write`, but the npm publish workflow (the only workflow\nthat grants that permission) doesn't run `npm test` — it only does\n`npm ci` + `npm publish`. So the assertions in these blocks never fire\nin CI and act as no-\n[…]\nation.test.ts,\noidc-publishing.test.ts, and scripts/validate-permissions.js, so\nremoving these tautological tests doesn't reduce real coverage.\n\nhttps://claude.ai/code/session_01ErKEHjp49M1K9iNctByba9",
"is_bot": false,
"headline": "test(oidc): drop env-var-coupled OIDC tests that never execute in CI",
"author_name": "Claude",
"author_login": "claude",
"committed_at": "2026-05-13T06:16:12Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "47de27abab68b8f7fa87ac2b48fc87673c1ef563",
"body": "ACTIONS_ID_TOKEN_REQUEST_URL/TOKEN are injected by GitHub Actions only\nwhen a job has `id-token: write`. After scoping that permission to the\npublish-npm workflow, these vars are no longer present in the CI test\njob, so the previous \"if CI=true, these must be defined\" assertions\nfail. Switch to vali\n[…]\ny present; this keeps the assertions meaningful in the publish\njob without coupling the test suite to overly broad permissions on the\ntest job.\n\nhttps://claude.ai/code/session_01ErKEHjp49M1K9iNctByba9",
"is_bot": false,
"headline": "test(oidc): decouple OIDC env var assertions from process.env.CI",
"author_name": "Claude",
"author_login": "claude",
"committed_at": "2026-05-13T03:37:41Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "f683af413b6cd9f3e88ac002e938f528cda645a1",
"body": "…cache\n\n- ci.yml: drop unneeded `id-token: write` from the test job (no publishing happens here, so leaving it grants an unnecessary OIDC token to dependency code at install/test time).\n- publish-npm.yml: drop `cache: 'npm'` from the publish job to avoid restoring a cache that PR-triggered jobs could have populated.\n\nMotivated by the npm supply-chain compromise postmortem\n(https://tanstack.com/blog/npm-supply-chain-compromise-postmortem).\n\nhttps://claude.ai/code/session_01ErKEHjp49M1K9iNctByba9",
"is_bot": false,
"headline": "chore(security): tighten Actions permissions and remove publish-time …",
"author_name": "Claude",
"author_login": "claude",
"committed_at": "2026-05-13T02:37:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0c61c19072fb39c8e9c44159c705707da129a1f0",
"body": "chore(release): bump version to 0.2.6",
"is_bot": false,
"headline": "Merge pull request #110 from pppp606/claude/release-v0.2.6",
"author_name": "Takuto Yuki",
"author_login": "pppp606",
"committed_at": "2026-05-13T00:48:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c469cf16ef0896a47f1d931b6e1314de0b0877a2",
"body": "https://claude.ai/code/session_01ErKEHjp49M1K9iNctByba9",
"is_bot": false,
"headline": "chore(release): bump version to 0.2.6",
"author_name": "Claude",
"author_login": "claude",
"committed_at": "2026-05-12T07:17:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "32c3d7b3704d74d06c74dda09281afb8c6441a8c",
"body": "…GHSA-v39h-62p7-jpjc (#108)\n\nResolves Dependabot alerts for fast-uri path traversal (CWE-22) and host\nconfusion (CWE-436) vulnerabilities. Pulled in transitively via ajv from\n@secretlint/config-loader and table (devDependencies).\n\nhttps://claude.ai/code/session_01ErKEHjp49M1K9iNctByba9\n\nCo-authored-by: Claude <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(deps): bump fast-uri to 3.1.2 to address GHSA-q3j6-qgpj-74h6 and …",
"author_name": "Takuto Yuki",
"author_login": "pppp606",
"committed_at": "2026-05-12T06:58:42Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "67b4924befacf6f31040db786d14d828e5e10dcd",
"body": "…dftq\n\nSimplify npm publishing workflow and remove GitHub Packages support",
"is_bot": false,
"headline": "Merge pull request #97 from pppp606/claude/simplify-release-process-z…",
"author_name": "Takuto Yuki",
"author_login": "pppp606",
"committed_at": "2026-05-08T05:16:20Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cc5c4c2ac58abbc7858887eec48713a1752276dc",
"body": "- Drop link to non-existent docs/BRANCH-PROTECTION.md\n- Remove /docs/ ownership entry (directory does not exist)\n- Fix .eslintrc.cjs reference to actual eslint.config.js\n- Update workflow-protection test to match",
"is_bot": false,
"headline": "docs: remove dead references in SECURITY.md and CODEOWNERS",
"author_name": "Claude",
"author_login": "claude",
"committed_at": "2026-05-08T05:08:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9c948733a8cce0ccf7d1389f4160a5f6f190fdaf",
"body": "Reduce release process to bare minimum since releases are mostly\ndependency bumps without notes.\n\n- Remove publish-github.yml (GitHub Packages is unused)\n- Remove release-drafter and pr-labeler workflows\n- Replace 167-line publish-npm.yml with ~25-line OIDC publish\n- Drop dead entries from validate-permissions/sha-pinning scripts\n- Relax workflow-shape tests coupled to old verbose workflow\n\nNew release flow: npm version <patch|minor|major> && git push --follow-tags",
"is_bot": false,
"headline": "chore: simplify release workflow",
"author_name": "Claude",
"author_login": "claude",
"committed_at": "2026-05-08T04:46:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fc09b15bf817e9fb7749a38396f0922ecd468f32",
"body": "…-KQMz6\n\nImprove URL validation for OIDC endpoints using hostname parsing",
"is_bot": false,
"headline": "Merge pull request #96 from pppp606/claude/fix-code-scanning-warnings…",
"author_name": "Takuto Yuki",
"author_login": "pppp606",
"committed_at": "2026-05-08T01:35:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "19c710ffe653dd0a1fe907ef64d707242f988a28",
"body": "Replace substring-based URL check with URL-parsed hostname match to\nprevent bypass via hosts like\nactions.githubusercontent.com.attacker.com.\n\nAddresses CodeQL js/incomplete-url-substring-sanitization.\n\nhttps://claude.ai/code/session_01YSjJNL8zJKa7sonJt4xkW5",
"is_bot": false,
"headline": "fix(security): use exact hostname match for OIDC token request URL",
"author_name": "Claude",
"author_login": "claude",
"committed_at": "2026-05-08T01:30:51Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "07a0b7c451e53a9a4a6bd76bb4c8b5be91212222",
"body": "Replace substring-based registry URL check with URL-parsed hostname\nmatch to prevent bypass via hosts like\nregistry.npmjs.org.attacker.com.\n\nAddresses CodeQL js/incomplete-url-substring-sanitization.\n\nhttps://claude.ai/code/session_01YSjJNL8zJKa7sonJt4xkW5",
"is_bot": false,
"headline": "fix(security): use exact hostname match for npm registry validation",
"author_name": "Claude",
"author_login": "claude",
"committed_at": "2026-05-08T01:29:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "671b596e22b94d74af998151d4e66ff3c026b40b",
"body": "Replace substring-based hostname check with exact match plus suffix\ncheck to prevent bypass via hosts like\nevil-actions.githubusercontent.com.attacker.com.\n\nAddresses CodeQL js/incomplete-url-substring-sanitization.\n\nhttps://claude.ai/code/session_01YSjJNL8zJKa7sonJt4xkW5",
"is_bot": false,
"headline": "fix(security): use exact hostname match for OIDC endpoint validation",
"author_name": "Claude",
"author_login": "claude",
"committed_at": "2026-05-08T01:15:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7840da36ffe8ad47e0928db0d9434c524bfc8ca0",
"body": "Build demo script and remove unnecessary dev dependencies",
"is_bot": false,
"headline": "Merge pull request #95 from pppp606/claude/reduce-dependencies-Cesy8",
"author_name": "Takuto Yuki",
"author_login": "pppp606",
"committed_at": "2026-05-08T01:07:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ed3df6aa9251a39e56d711c42f367c7b122b16a1",
"body": "Remove three devDependencies without changing functionality:\n- license-checker: invoked via npx in license-check script, no local\n install needed (script still works via npx auto-fetch)\n- tsx: only used by `npm run demo`; switch demo to build+node\n- @types/jest: jest globals were only needed by a n\n[…]\ntted to dist (also fixes a packaging bug where\n test files were shipped to dist)\n\nVerified: npm run typecheck, lint, test, test:e2e, build, validate:*\nall pass. 41 packages removed from node_modules.",
"is_bot": false,
"headline": "chore(deps): remove unused devDependencies and tsx",
"author_name": "Claude",
"author_login": "claude",
"committed_at": "2026-05-08T00:52:18Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "228461ddb8a9ff0cbd8294533f885cd9721583ea",
"body": "…rity-updates-1a96d39fba\n\nchore(deps): bump the security-updates group across 1 directory with 41 updates",
"is_bot": false,
"headline": "Merge pull request #94 from pppp606/dependabot/npm_and_yarn/main/secu…",
"author_name": "Takuto Yuki",
"author_login": "pppp606",
"committed_at": "2026-05-08T00:24:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bfeca54585d1817c9b86eba089e829428ebd3f1d",
"body": "…41 updates\n\nBumps the security-updates group with 27 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `20.19.37` | `20.19.39` |\n| [@typescript-eslint/eslint-plugin](https://github.com/\n[…]\nglobby\n dependency-version: 0.2.16\n dependency-type: indirect\n update-type: version-update:semver-patch\n dependency-group: security-updates\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
"is_bot": true,
"headline": "chore(deps): bump the security-updates group across 1 directory with …",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-05-04T10:46:20Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "463994e3c3c7c5e82c72a92104c621e68ac916e5",
"body": "fix(ci): remove duplicate create-release job from publish-npm",
"is_bot": false,
"headline": "Merge pull request #86 from pppp606/fix/remove-duplicate-create-release",
"author_name": "Takuto Yuki",
"author_login": "pppp606",
"committed_at": "2026-04-01T14:34:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e9b145b0b7c92ae3889fc0e2787bb1831c6a8983",
"body": "Release Drafter already creates and manages GitHub Releases.\nThe create-release job in publish-npm.yml was attempting to create\na release with the same tag, causing \"already_exists\" errors.",
"is_bot": false,
"headline": "fix(ci): remove duplicate create-release job from publish-npm workflow",
"author_name": "pppp606",
"author_login": "pppp606",
"committed_at": "2026-04-01T13:46:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f5c5d42f1540ee84388e8c64e32b29d1445f2246",
"body": null,
"is_bot": false,
"headline": "chore: bump version to 0.2.5",
"author_name": "pppp606",
"author_login": "pppp606",
"committed_at": "2026-04-01T13:24:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b69334de658c88e344a1ca6081bd4a15431d5fc3",
"body": "…rity-updates-03e4a79442\n\nchore(deps): bump the security-updates group across 1 directory with 66 updates",
"is_bot": false,
"headline": "Merge pull request #85 from pppp606/dependabot/npm_and_yarn/main/secu…",
"author_name": "Takuto Yuki",
"author_login": "pppp606",
"committed_at": "2026-04-01T07:32:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0b00c9a130fc6ecbb86b613bbf4396c8bdd179bd",
"body": "`ignored_types: \"\"` caused `JSON.parse(\"\")` to fail with\n\"Unexpected end of JSON input\". Use `\"[]\"` (empty array) instead.",
"is_bot": false,
"headline": "fix(ci): pass valid JSON to ignored_types in pr-labeler",
"author_name": "pppp606",
"author_login": "pppp606",
"committed_at": "2026-04-01T05:23:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "54159fd25ca9ec73334a5b5ab0a8587479e4cc13",
"body": "The flag may cause compatibility issues with actions not yet tested on Node.js 24.",
"is_bot": false,
"headline": "fix(ci): remove FORCE_JAVASCRIPT_ACTIONS_TO_NODE24 env var",
"author_name": "pppp606",
"author_login": "pppp606",
"committed_at": "2026-04-01T05:20:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fb861a51cce5bc86f4af69a4fa4588ece6d57e6e",
"body": "- Run npm audit fix to resolve brace-expansion, minimatch, and picomatch vulnerabilities\n- Pin bcoe/conventional-release-labels to SHA (v1.3.1) for security\n- Add FORCE_JAVASCRIPT_ACTIONS_TO_NODE24 env var for Node.js 20 deprecation\n- Add bcoe/conventional-release-labels to SHA pinning validator",
"is_bot": false,
"headline": "fix(ci): resolve npm audit vulnerabilities and fix pr-labeler workflow",
"author_name": "pppp606",
"author_login": "pppp606",
"committed_at": "2026-04-01T04:22:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "193eec4c723073da0c7ee791c8fa7490fb7152ef",
"body": "…66 updates\n\nBumps the security-updates group with 33 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@secretlint/secretlint-rule-no-homedir](https://github.com/secretlint/secretlint) | `11.3.0` | `11.4.1` |\n| [@secretlint/secretlint-rule-preset-recommend](https://github.\n[…]\nme: ws\n dependency-version: 8.20.0\n dependency-type: indirect\n update-type: version-update:semver-minor\n dependency-group: security-updates\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
"is_bot": true,
"headline": "chore(deps): bump the security-updates group across 1 directory with …",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-03-30T09:39:37Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "3dd801c34d161fcda9674c886a4e59747f1d4446",
"body": "…rity-updates-4417429132\n\nchore(deps): bump the security-updates group across 1 directory with 48 updates",
"is_bot": false,
"headline": "Merge pull request #73 from pppp606/dependabot/npm_and_yarn/main/secu…",
"author_name": "Takuto Yuki",
"author_login": "pppp606",
"committed_at": "2026-01-24T11:10:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6b2feea0ae2f8bd0758b75fa6d2dcd7a588cc096",
"body": "ci: improve release notes exclusion and add PR auto-labeler",
"is_bot": false,
"headline": "Merge pull request #74 from pppp606/ci/improve-release-notes-exclusion",
"author_name": "Takuto Yuki",
"author_login": "pppp606",
"committed_at": "2026-01-21T04:10:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "11bfaa4b6ecff040237a309983023c70eeeb976f",
"body": "- Add ci and github-actions labels to exclude-labels in release-drafter.yml\n- Create pr-labeler.yml workflow to auto-label PRs based on conventional commit prefixes\n- Create ci label on GitHub repository",
"is_bot": false,
"headline": "ci: improve release notes exclusion and add PR auto-labeler",
"author_name": "pppp606",
"author_login": "pppp606",
"committed_at": "2026-01-21T02:56:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "86583d1f3cc5d0a9e68b70c5551d4735f9a28577",
"body": "…48 updates\n\nBumps the security-updates group with 14 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@secretlint/secretlint-rule-no-homedir](https://github.com/secretlint/secretlint) | `11.2.5` | `11.3.0` |\n| [@secretlint/secretlint-rule-preset-recommend](https://github.\n[…]\n-array\n dependency-version: 1.1.20\n dependency-type: indirect\n update-type: version-update:semver-patch\n dependency-group: security-updates\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
"is_bot": true,
"headline": "chore(deps): bump the security-updates group across 1 directory with …",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-01-19T10:28:01Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "4c2311959053ba483716277933b2a5d268f54e8a",
"body": "chore(deps-dev): bump @types/node from 20.19.11 to 20.19.30",
"is_bot": false,
"headline": "Merge pull request #71 from pppp606/chore/bump-types-node-20.19.30",
"author_name": "Takuto Yuki",
"author_login": "pppp606",
"committed_at": "2026-01-17T10:13:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "981ea5b46494b0f7c3f9aa068c49f5f36438eca8",
"body": null,
"is_bot": false,
"headline": "chore(deps-dev): bump @types/node from 20.19.11 to 20.19.30",
"author_name": "pppp606",
"author_login": "pppp606",
"committed_at": "2026-01-17T10:11:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f5358a28a61f9687e13e582f03f8c6762b5361ef",
"body": "…ates\n\nchore: ignore major version updates for @types/node",
"is_bot": false,
"headline": "Merge pull request #70 from pppp606/chore/ignore-types-node-major-upd…",
"author_name": "Takuto Yuki",
"author_login": "pppp606",
"committed_at": "2026-01-17T10:07:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4cc4833f4090d6d50f4c2aad7bae2e3f78e52fe9",
"body": "Prevents Dependabot from creating PRs for major version updates of\n@types/node, allowing only minor and patch updates.",
"is_bot": false,
"headline": "chore: ignore major version updates for @types/node",
"author_name": "pppp606",
"author_login": "pppp606",
"committed_at": "2026-01-17T10:02:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fb5aa04b12af43e8dcb57c788b9697370d1679e3",
"body": "…als-17.0.0\n\nchore(deps-dev): bump globals from 16.5.0 to 17.0.0",
"is_bot": false,
"headline": "Merge pull request #67 from pppp606/dependabot/npm_and_yarn/main/glob…",
"author_name": "Takuto Yuki",
"author_login": "pppp606",
"committed_at": "2026-01-16T04:05:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "312139e9f7ed89888d3b18709a5d7e8dff0f11cb",
"body": "…action\n\nci: add GitHub Actions workflow guard for Dependabot PRs",
"is_bot": false,
"headline": "Merge pull request #69 from pppp606/ci/dependabot-supply-chain-guard-…",
"author_name": "Takuto Yuki",
"author_login": "pppp606",
"committed_at": "2026-01-15T04:27:07Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a654c470ce15d7acb7edb5b89545d602168bce61",
"body": "- rg (ripgrep) is not pre-installed on ubuntu-latest runners\n- Use grep -P which supports the same PCRE regex syntax\n- Update workflow name to reflect both lockfile and workflow guards",
"is_bot": false,
"headline": "fix: replace rg with grep for ubuntu-latest compatibility",
"author_name": "pppp606",
"author_login": "pppp606",
"committed_at": "2026-01-14T12:54:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "90d21850b5fc4cef752cc52634372fec2f4e381c",
"body": null,
"is_bot": false,
"headline": "Update github-action",
"author_name": "pppp606",
"author_login": "pppp606",
"committed_at": "2026-01-14T12:23:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d2ef7644b651d1a451eedd0c22fe61a7ebf593b7",
"body": "…/upload-artifact-6\n\nci(deps): bump actions/upload-artifact from 4 to 6",
"is_bot": false,
"headline": "Merge pull request #63 from pppp606/dependabot/github_actions/actions…",
"author_name": "Takuto Yuki",
"author_login": "pppp606",
"committed_at": "2026-01-14T06:12:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "71c5ca2f9e479c45e899be57e26bd72a9dfb4a83",
"body": "ci: add Dependabot supply-chain guard workflow",
"is_bot": false,
"headline": "Merge pull request #68 from pppp606/ci/dependabot-supply-chain-guard",
"author_name": "Takuto Yuki",
"author_login": "pppp606",
"committed_at": "2026-01-13T04:00:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "044b10e0f8dfe96aad604e5412d9818c216ef784",
"body": null,
"is_bot": false,
"headline": "ci: add explicit job-level permissions block",
"author_name": "pppp606",
"author_login": "pppp606",
"committed_at": "2026-01-13T03:54:51Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "928cd070ceaa8082d408314910ba70cb950bb9cd",
"body": "Pin actions to specific commit SHAs for supply chain security:\n- actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 (v6.0.1)\n- actions/github-script@f28e40c7f34bde8b3046d885e986cb6290c5673b (v7.1.0)",
"is_bot": false,
"headline": "ci: use SHA pinning for GitHub Actions",
"author_name": "pppp606",
"author_login": "pppp606",
"committed_at": "2026-01-13T03:50:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "44ad78a733c627d9e4fa53f34ee7d41e97fcf3c6",
"body": "Add a GitHub Actions workflow to reduce review burden for Dependabot PRs\nby automatically labeling safe lockfile-only updates.\n\nSecurity checks performed:\n- Verify PR only modifies package-lock.json\n- Ensure all dependencies use npm registry (npmjs.org/yarnpkg.com)\n- Block dependencies with install scripts (hasInstallScript)\n- Detect dependency explosion (>50 new packages)\n\nPRs passing all checks receive the 'safe-to-merge' label.",
"is_bot": false,
"headline": "ci: add Dependabot supply-chain guard workflow",
"author_name": "pppp606",
"author_login": "pppp606",
"committed_at": "2026-01-13T03:46:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "df573323f18fff45963f54d93ed5cab179d5af1d",
"body": "…rity-updates-3464e95c8b\n\nchore(deps): bump the security-updates group with 14 updates",
"is_bot": false,
"headline": "Merge pull request #64 from pppp606/dependabot/npm_and_yarn/main/secu…",
"author_name": "Takuto Yuki",
"author_login": "pppp606",
"committed_at": "2026-01-12T13:27:07Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ca15fef0228c8304999e01a2c118467089e23030",
"body": "…aml-3.14.2\n\nchore(deps-dev): bump js-yaml from 3.14.1 to 3.14.2",
"is_bot": false,
"headline": "Merge pull request #66 from pppp606/dependabot/npm_and_yarn/main/js-y…",
"author_name": "Takuto Yuki",
"author_login": "pppp606",
"committed_at": "2026-01-12T13:25:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ac8d8b4fe8d1a47398d9864a061b49f20f5560d2",
"body": "Bumps [globals](https://github.com/sindresorhus/globals) from 16.5.0 to 17.0.0.\n- [Release notes](https://github.com/sindresorhus/globals/releases)\n- [Commits](https://github.com/sindresorhus/globals/compare/v16.5.0...v17.0.0)\n\n---\nupdated-dependencies:\n- dependency-name: globals\n dependency-version: 17.0.0\n dependency-type: direct:development\n update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
"is_bot": true,
"headline": "chore(deps-dev): bump globals from 16.5.0 to 17.0.0",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-01-12T10:51:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "16698461d67adb1a23f3017ca549b137e9da66fe",
"body": "Bumps [js-yaml](https://github.com/nodeca/js-yaml) from 3.14.1 to 3.14.2.\n- [Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md)\n- [Commits](https://github.com/nodeca/js-yaml/compare/3.14.1...3.14.2)\n\n---\nupdated-dependencies:\n- dependency-name: js-yaml\n dependency-version: 3.14.2\n dependency-type: indirect\n update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
"is_bot": true,
"headline": "chore(deps-dev): bump js-yaml from 3.14.1 to 3.14.2",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-01-12T10:50:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "09f2ab25519e5c48a9ee1a2218c31f164039bb63",
"body": "Bumps the security-updates group with 14 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) | `19.2.7` | `19.2.8` |\n| [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslin\n[…]\nme: ws\n dependency-version: 8.19.0\n dependency-type: indirect\n update-type: version-update:semver-minor\n dependency-group: security-updates\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
"is_bot": true,
"headline": "chore(deps): bump the security-updates group with 14 updates",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-01-12T10:49:03Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "5c3f670bbd2ef1d032517ce1b931c43ae6a652a4",
"body": "Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4 to 6.\n- [Release notes](https://github.com/actions/upload-artifact/releases)\n- [Commits](https://github.com/actions/upload-artifact/compare/v4...v6)\n\n---\nupdated-dependencies:\n- dependency-name: actions/upload-artifact\n dependency-version: '6'\n dependency-type: direct:production\n update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
"is_bot": true,
"headline": "ci(deps): bump actions/upload-artifact from 4 to 6",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-01-12T10:43:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "38a7226f53d0e53b8a0250f02ddc3a1a9ae97532",
"body": "docs: unify component documentation format in README",
"is_bot": false,
"headline": "Merge pull request #62 from pppp606/docs/readme-format-cleanup",
"author_name": "Takuto Yuki",
"author_login": "pppp606",
"committed_at": "2026-01-10T14:56:32Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4ead0da6df84f63066eb17bc6ac8470dce33f861",
"body": "- Add Output examples to BarChart, StackedBarChart, and Sparkline sections\n- Remove redundant Examples section (content merged into Components)\n- Remove Demo section\n- Reduce README from 468 to 292 lines while maintaining completeness",
"is_bot": false,
"headline": "docs: unify component documentation format in README",
"author_name": "pppp606",
"author_login": "pppp606",
"committed_at": "2026-01-10T14:42:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "59ff64c5482d8717b4b6eb6ea5d888324178c103",
"body": "…rity-updates-8094a5e68d\n\nchore(deps): bump the security-updates group across 1 directory with 24 updates",
"is_bot": false,
"headline": "Merge pull request #61 from pppp606/dependabot/npm_and_yarn/main/secu…",
"author_name": "Takuto Yuki",
"author_login": "pppp606",
"committed_at": "2026-01-09T05:10:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bcf5f69e739933e8a3ea07c2592bbf156cea7e88",
"body": "feat: automate demo screenshot generation in CI",
"is_bot": false,
"headline": "Merge pull request #60 from pppp606/feature/demo-screenshot-ci",
"author_name": "Takuto Yuki",
"author_login": "pppp606",
"committed_at": "2026-01-07T03:17:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d6e4fc1fc6937cd7f23992983c2eba3285f459a5",
"body": "Forces monospace character width using textLength and lengthAdjust\nattributes to prevent Unicode block characters from rendering at\ninconsistent widths.",
"is_bot": false,
"headline": "fix: use textLength for exact character positioning in SVG",
"author_name": "pppp606",
"author_login": "pppp606",
"committed_at": "2026-01-07T02:49:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "de7c7a314295290f915948c420326cef0df00075",
"body": null,
"is_bot": true,
"headline": "chore: update demo screenshot [skip ci]",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-01-07T01:13:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0e74788bc1c01b3d89833f247fd47c8609c15ded",
"body": null,
"is_bot": false,
"headline": "fix: add COLORTERM=truecolor for color support",
"author_name": "pppp606",
"author_login": "pppp606",
"committed_at": "2026-01-07T01:12:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "34e21d4de518aeb0aacbe3c9909082cd767a565c",
"body": null,
"is_bot": true,
"headline": "chore: update demo screenshot [skip ci]",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-01-07T01:11:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "dc31d448262718df8b89cc749c5247c9487abdb5",
"body": null,
"is_bot": false,
"headline": "fix: use separate wrapper file for terminal columns setting",
"author_name": "pppp606",
"author_login": "pppp606",
"committed_at": "2026-01-07T01:10:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "92bea8d75d9429ec1e8d32ba7c81f394b0bae5f5",
"body": null,
"is_bot": true,
"headline": "chore: update demo screenshot [skip ci]",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-01-07T01:08:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "afc87ca867654610a9757e0675c5d37257b7193e",
"body": "Use inline wrapper script to set process.stdout.columns before\ndynamically importing demo.js. This ensures Ink reads the correct\nterminal width in CI environment.",
"is_bot": false,
"headline": "fix: set stdout.columns before ink import for correct flex layout",
"author_name": "pppp606",
"author_login": "pppp606",
"committed_at": "2026-01-07T01:07:26Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "863978d4972ede2ec47ba9c2a9d530736ea1df44",
"body": null,
"is_bot": true,
"headline": "chore: update demo screenshot [skip ci]",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-01-07T00:59:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "696614998454b32a379938f875ec7d78c4f53019",
"body": null,
"is_bot": false,
"headline": "fix: add eslint-disable for control regex in ANSI parser",
"author_name": "pppp606",
"author_login": "pppp606",
"committed_at": "2026-01-07T00:58:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "778d478d83302678a08bf65548fa976f2a87cda9",
"body": null,
"is_bot": false,
"headline": "chore: remove ansi-to-svg dependency from workflow",
"author_name": "pppp606",
"author_login": "pppp606",
"committed_at": "2026-01-07T00:51:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5e4f8556c9540dbf84cca6b3de3996fc383e8831",
"body": "- Removed ansi-to-svg dependency\n- Direct ANSI parsing with truecolor (24-bit) support\n- Optimized output: groups consecutive same-style characters\n- File size reduced from 114KB to 20KB",
"is_bot": false,
"headline": "feat: custom SVG renderer with full truecolor support",
"author_name": "pppp606",
"author_login": "pppp606",
"committed_at": "2026-01-07T00:51:32Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3371a1c011d38b94afdf3506792c08e31c3afb3d",
"body": null,
"is_bot": false,
"headline": "fix: add truecolor support for demo screenshot generation",
"author_name": "pppp606",
"author_login": "pppp606",
"committed_at": "2026-01-06T06:41:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bdff856fd2f8187943a74769d418f70a3d340e26",
"body": null,
"is_bot": false,
"headline": "chore: increase preview image width to 730",
"author_name": "pppp606",
"author_login": "pppp606",
"committed_at": "2026-01-06T06:01:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bd235945cb2ad9b7804e61800d64747b1f1b1ceb",
"body": null,
"is_bot": false,
"headline": "chore: switch README preview from PNG to SVG",
"author_name": "pppp606",
"author_login": "pppp606",
"committed_at": "2026-01-06T05:57:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6cb1eab0a190a5792a13154ff4906873cb238cb6",
"body": null,
"is_bot": true,
"headline": "chore: update demo screenshot [skip ci]",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-01-06T05:21:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0755c735b320f2534ea064f1909d8ab84ec850e3",
"body": null,
"is_bot": false,
"headline": "fix: reduce screenshot width to ~1280px (150 columns)",
"author_name": "pppp606",
"author_login": "pppp606",
"committed_at": "2026-01-06T05:20:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f700797992f42dfbe3ab296d3984945362f08b01",
"body": null,
"is_bot": true,
"headline": "chore: update demo screenshot [skip ci]",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-01-06T04:05:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7468fdfca77f6194abe2c5013c684b0b1a83b9a8",
"body": null,
"is_bot": false,
"headline": "fix: force stdout.columns from COLUMNS env for CI screenshot generation",
"author_name": "pppp606",
"author_login": "pppp606",
"committed_at": "2026-01-06T04:04:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9f51cf3d5ea1155502a98d01a9a98f8b2a96f9ed",
"body": null,
"is_bot": false,
"headline": "fix: increase terminal width to 300 columns for flex layout",
"author_name": "pppp606",
"author_login": "pppp606",
"committed_at": "2026-01-06T03:29:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2c05cfebfc763342a869dd5d666e2f034777fa55",
"body": null,
"is_bot": false,
"headline": "fix: increase terminal width to 200 columns for flex layout",
"author_name": "pppp606",
"author_login": "pppp606",
"committed_at": "2026-01-06T03:24:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "909a2ab23cf688c0feaa6c6c5f7a46051638ab04",
"body": null,
"is_bot": true,
"headline": "chore: update demo screenshot [skip ci]",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-01-06T03:23:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a68c53a54886274f2b0cc089c6ee8cc791ccfee7",
"body": null,
"is_bot": false,
"headline": "fix: set lineHeight to 20px (pixels, not ratio)",
"author_name": "pppp606",
"author_login": "pppp606",
"committed_at": "2026-01-06T03:22:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3058a44c6d24fc469f03c8b49d30e3a59658fe7a",
"body": null,
"is_bot": true,
"headline": "chore: update demo screenshot [skip ci]",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-01-06T03:08:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1fe26b75dbbf793cf3b345bb560293f4dd32971d",
"body": null,
"is_bot": false,
"headline": "fix: output SVG with larger size (fontSize 16, COLUMNS 150)",
"author_name": "pppp606",
"author_login": "pppp606",
"committed_at": "2026-01-06T03:07:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4f2d53b54f5955eb7d89300c87222b50afde1601",
"body": null,
"is_bot": true,
"headline": "chore: update demo screenshot [skip ci]",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-01-06T03:03:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "05f445230c81029501fe748c880b3adb435a2620",
"body": null,
"is_bot": false,
"headline": "fix: output PNG instead of SVG using sharp",
"author_name": "pppp606",
"author_login": "pppp606",
"committed_at": "2026-01-06T03:02:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ccc84769dc2cf083ab7029e4dd272e9ec8d6174d",
"body": null,
"is_bot": false,
"headline": "fix: widen terminal output and remove old PNG",
"author_name": "pppp606",
"author_login": "pppp606",
"committed_at": "2026-01-06T02:00:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0b76fd7a06ed1a102f1727cec00757e87e09dfea",
"body": null,
"is_bot": true,
"headline": "chore: update demo screenshot [skip ci]",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-01-05T13:30:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0a18d9f6bbf32f6479a967bb3df87d8dd5a2bbb8",
"body": null,
"is_bot": false,
"headline": "refactor: use ansi-to-svg instead of ansi-to-image (no puppeteer)",
"author_name": "pppp606",
"author_login": "pppp606",
"committed_at": "2026-01-05T13:29:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "db25f15f17a73eafef9d3bf236988c3e907c9878",
"body": null,
"is_bot": true,
"headline": "chore: update demo screenshot [skip ci]",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-01-05T13:26:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "85f06cd0b6bc63468b188a849fc41088097dd09a",
"body": null,
"is_bot": false,
"headline": "fix: create assets directory before saving screenshot",
"author_name": "pppp606",
"author_login": "pppp606",
"committed_at": "2026-01-05T13:25:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "02b301610e1f31c53a3b1ea82ea8a46413a0aef2",
"body": null,
"is_bot": false,
"headline": "fix: remove unused imports and variables",
"author_name": "pppp606",
"author_login": "pppp606",
"committed_at": "2026-01-05T13:20:26Z",
"body_truncated": false,
"is_coding_agent": false
}
],
"releases_count": 8,
"commits_last_year": 322,
"latest_release_at": "2026-07-19T23:06:33Z",
"latest_release_tag": "v0.2.7",
"releases_from_tags": false,
"days_since_last_push": 6,
"active_weeks_last_year": 22,
"days_since_latest_release": 6,
"mean_days_between_releases": 46.1
},
"community": {
"has_readme": true,
"has_license": true,
"has_description": true,
"has_contributing": false,
"health_percentage": 57,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": false
},
"ecosystem": {
"packages": [
{
"name": "@pppp606/ink-chart",
"exists": true,
"license": "MIT",
"keywords": [
"ink",
"cli",
"chart",
"sparkline",
"barchart",
"visualization",
"react",
"terminal",
"secure",
"typescript",
"provenance"
],
"ecosystem": "npm",
"matches_repo": true,
"registry_url": "https://www.npmjs.com/package/@pppp606/ink-chart",
"is_deprecated": false,
"latest_version": "0.2.7",
"repository_url": "https://github.com/pppp606/ink-chart",
"versions_count": 9,
"total_downloads": null,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": 1,
"monthly_downloads": 9463,
"first_published_at": "2025-08-31T08:23:28.075000Z",
"latest_published_at": "2026-07-19T23:06:18.544000Z",
"latest_version_yanked": null,
"days_since_latest_publish": 6
}
]
},
"popularity": {
"forks": 1,
"stars": 24,
"watchers": 0,
"fork_history": {
"days": [
{
"date": "2025-11-28",
"count": 1
}
],
"complete": true,
"collected": 1,
"total_forks": 1
},
"star_history": null,
"open_issues_and_prs": 11
},
"ai_readiness": {
"has_nix": false,
"example_dirs": [],
"has_llms_txt": false,
"has_dockerfile": false,
"has_mcp_signal": false,
"bootstrap_files": [],
"api_schema_files": [],
"has_devcontainer": false,
"typecheck_configs": [
"tsconfig.json"
],
"toolchain_manifests": [],
"largest_source_bytes": 16885,
"source_files_sampled": 50,
"oversized_source_files": 0,
"agent_instruction_files": [],
"agent_instruction_max_bytes": null
},
"dependencies": {
"manifests": [
"package.json"
],
"advisories": {
"error": null,
"scope": "repository_graph",
"source": "osv",
"findings": [
{
"name": "brace-expansion",
"direct": false,
"version": "1.1.13",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-3jxr-9vmj-r5cp",
"GHSA-mh99-v99m-4gvg"
],
"fixed_version": "5.0.8",
"advisory_count": 2,
"oldest_advisory_days": 5
},
{
"name": "brace-expansion",
"direct": false,
"version": "5.0.7",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-mh99-v99m-4gvg"
],
"fixed_version": "5.0.8",
"advisory_count": 1,
"oldest_advisory_days": 1
},
{
"name": "fast-uri",
"direct": false,
"version": "3.1.2",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-4c8g-83qw-93j6",
"GHSA-v2hh-gcrm-f6hx"
],
"fixed_version": "4.1.1",
"advisory_count": 2,
"oldest_advisory_days": 4
}
],
"collected": true,
"malicious": [],
"truncated": false,
"by_severity": {
"high": 3
},
"advisory_count": 5,
"affected_count": 3,
"assessed_count": 583,
"malicious_count": 0,
"assessed_package": null,
"unassessed_count": 0,
"direct_affected_count": 0
},
"ecosystems": [
"npm"
],
"dependencies": [],
"all_dependencies": {
"error": null,
"source": "github-sbom",
"packages": [
{
"name": "@alcalzone/ansi-tokenize",
"direct": false,
"version": "0.2.5",
"ecosystem": "npm"
},
{
"name": "@azu/format-text",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "@azu/style-format",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "@babel/code-frame",
"direct": false,
"version": "7.29.7",
"ecosystem": "npm"
},
{
"name": "@babel/compat-data",
"direct": false,
"version": "7.29.7",
"ecosystem": "npm"
},
{
"name": "@babel/core",
"direct": false,
"version": "7.29.7",
"ecosystem": "npm"
},
{
"name": "@babel/generator",
"direct": false,
"version": "7.29.7",
"ecosystem": "npm"
},
{
"name": "@babel/helper-compilation-targets",
"direct": false,
"version": "7.29.7",
"ecosystem": "npm"
},
{
"name": "@babel/helper-globals",
"direct": false,
"version": "7.29.7",
"ecosystem": "npm"
},
{
"name": "@babel/helper-module-imports",
"direct": false,
"version": "7.29.7",
"ecosystem": "npm"
},
{
"name": "@babel/helper-module-transforms",
"direct": false,
"version": "7.29.7",
"ecosystem": "npm"
},
{
"name": "@babel/helper-plugin-utils",
"direct": false,
"version": "7.28.6",
"ecosystem": "npm"
},
{
"name": "@babel/helper-string-parser",
"direct": false,
"version": "7.29.7",
"ecosystem": "npm"
},
{
"name": "@babel/helper-validator-identifier",
"direct": false,
"version": "7.29.7",
"ecosystem": "npm"
},
{
"name": "@babel/helper-validator-option",
"direct": false,
"version": "7.29.7",
"ecosystem": "npm"
},
{
"name": "@babel/helpers",
"direct": false,
"version": "7.29.7",
"ecosystem": "npm"
},
{
"name": "@babel/parser",
"direct": false,
"version": "7.29.7",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-syntax-async-generators",
"direct": false,
"version": "7.8.4",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-syntax-bigint",
"direct": false,
"version": "7.8.3",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-syntax-class-properties",
"direct": false,
"version": "7.12.13",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-syntax-class-static-block",
"direct": false,
"version": "7.14.5",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-syntax-import-attributes",
"direct": false,
"version": "7.28.6",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-syntax-import-meta",
"direct": false,
"version": "7.10.4",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-syntax-json-strings",
"direct": false,
"version": "7.8.3",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-syntax-jsx",
"direct": false,
"version": "7.28.6",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-syntax-logical-assignment-operators",
"direct": false,
"version": "7.10.4",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-syntax-nullish-coalescing-operator",
"direct": false,
"version": "7.8.3",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-syntax-numeric-separator",
"direct": false,
"version": "7.10.4",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-syntax-object-rest-spread",
"direct": false,
"version": "7.8.3",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-syntax-optional-catch-binding",
"direct": false,
"version": "7.8.3",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-syntax-optional-chaining",
"direct": false,
"version": "7.8.3",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-syntax-private-property-in-object",
"direct": false,
"version": "7.14.5",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-syntax-top-level-await",
"direct": false,
"version": "7.14.5",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-syntax-typescript",
"direct": false,
"version": "7.28.6",
"ecosystem": "npm"
},
{
"name": "@babel/template",
"direct": false,
"version": "7.29.7",
"ecosystem": "npm"
},
{
"name": "@babel/traverse",
"direct": false,
"version": "7.29.7",
"ecosystem": "npm"
},
{
"name": "@babel/types",
"direct": false,
"version": "7.29.7",
"ecosystem": "npm"
},
{
"name": "@bcoe/v8-coverage",
"direct": false,
"version": "0.2.3",
"ecosystem": "npm"
},
{
"name": "@eslint-community/eslint-utils",
"direct": false,
"version": "4.9.1",
"ecosystem": "npm"
},
{
"name": "@eslint-community/regexpp",
"direct": false,
"version": "4.12.2",
"ecosystem": "npm"
},
{
"name": "@eslint/config-array",
"direct": false,
"version": "0.21.2",
"ecosystem": "npm"
},
{
"name": "@eslint/config-helpers",
"direct": false,
"version": "0.4.2",
"ecosystem": "npm"
},
{
"name": "@eslint/core",
"direct": false,
"version": "0.17.0",
"ecosystem": "npm"
},
{
"name": "@eslint/eslintrc",
"direct": false,
"version": "3.3.5",
"ecosystem": "npm"
},
{
"name": "@eslint/js",
"direct": false,
"version": "9.39.2",
"ecosystem": "npm"
},
{
"name": "@eslint/object-schema",
"direct": false,
"version": "2.1.7",
"ecosystem": "npm"
},
{
"name": "@eslint/plugin-kit",
"direct": false,
"version": "0.4.1",
"ecosystem": "npm"
},
{
"name": "@humanfs/core",
"direct": false,
"version": "0.19.2",
"ecosystem": "npm"
},
{
"name": "@humanfs/node",
"direct": false,
"version": "0.16.8",
"ecosystem": "npm"
},
{
"name": "@humanfs/types",
"direct": false,
"version": "0.15.0",
"ecosystem": "npm"
},
{
"name": "@humanwhocodes/module-importer",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "@humanwhocodes/retry",
"direct": false,
"version": "0.4.3",
"ecosystem": "npm"
},
{
"name": "@istanbuljs/load-nyc-config",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "@istanbuljs/schema",
"direct": false,
"version": "0.1.6",
"ecosystem": "npm"
},
{
"name": "@jest/console",
"direct": false,
"version": "29.7.0",
"ecosystem": "npm"
},
{
"name": "@jest/core",
"direct": false,
"version": "29.7.0",
"ecosystem": "npm"
},
{
"name": "@jest/environment",
"direct": false,
"version": "29.7.0",
"ecosystem": "npm"
},
{
"name": "@jest/expect",
"direct": false,
"version": "29.7.0",
"ecosystem": "npm"
},
{
"name": "@jest/expect-utils",
"direct": false,
"version": "29.7.0",
"ecosystem": "npm"
},
{
"name": "@jest/fake-timers",
"direct": false,
"version": "29.7.0",
"ecosystem": "npm"
},
{
"name": "@jest/globals",
"direct": false,
"version": "29.7.0",
"ecosystem": "npm"
},
{
"name": "@jest/reporters",
"direct": false,
"version": "29.7.0",
"ecosystem": "npm"
},
{
"name": "@jest/schemas",
"direct": false,
"version": "29.6.3",
"ecosystem": "npm"
},
{
"name": "@jest/source-map",
"direct": false,
"version": "29.6.3",
"ecosystem": "npm"
},
{
"name": "@jest/test-result",
"direct": false,
"version": "29.7.0",
"ecosystem": "npm"
},
{
"name": "@jest/test-sequencer",
"direct": false,
"version": "29.7.0",
"ecosystem": "npm"
},
{
"name": "@jest/transform",
"direct": false,
"version": "29.7.0",
"ecosystem": "npm"
},
{
"name": "@jest/types",
"direct": false,
"version": "29.6.3",
"ecosystem": "npm"
},
{
"name": "@jridgewell/gen-mapping",
"direct": false,
"version": "0.3.13",
"ecosystem": "npm"
},
{
"name": "@jridgewell/remapping",
"direct": false,
"version": "2.3.5",
"ecosystem": "npm"
},
{
"name": "@jridgewell/resolve-uri",
"direct": false,
"version": "3.1.2",
"ecosystem": "npm"
},
{
"name": "@jridgewell/sourcemap-codec",
"direct": false,
"version": "1.5.5",
"ecosystem": "npm"
},
{
"name": "@jridgewell/trace-mapping",
"direct": false,
"version": "0.3.31",
"ecosystem": "npm"
},
{
"name": "@nodelib/fs.scandir",
"direct": false,
"version": "2.1.5",
"ecosystem": "npm"
},
{
"name": "@nodelib/fs.stat",
"direct": false,
"version": "2.0.5",
"ecosystem": "npm"
},
{
"name": "@nodelib/fs.walk",
"direct": false,
"version": "1.2.8",
"ecosystem": "npm"
},
{
"name": "@secretlint/config-creator",
"direct": false,
"version": "11.4.1",
"ecosystem": "npm"
},
{
"name": "@secretlint/config-loader",
"direct": false,
"version": "11.4.1",
"ecosystem": "npm"
},
{
"name": "@secretlint/core",
"direct": false,
"version": "11.4.1",
"ecosystem": "npm"
},
{
"name": "@secretlint/formatter",
"direct": false,
"version": "11.4.1",
"ecosystem": "npm"
},
{
"name": "@secretlint/node",
"direct": false,
"version": "11.4.1",
"ecosystem": "npm"
},
{
"name": "@secretlint/profiler",
"direct": false,
"version": "11.4.1",
"ecosystem": "npm"
},
{
"name": "@secretlint/resolver",
"direct": false,
"version": "11.4.1",
"ecosystem": "npm"
},
{
"name": "@secretlint/secretlint-rule-no-homedir",
"direct": false,
"version": "11.4.1",
"ecosystem": "npm"
},
{
"name": "@secretlint/secretlint-rule-preset-recommend",
"direct": false,
"version": "11.4.1",
"ecosystem": "npm"
},
{
"name": "@secretlint/source-creator",
"direct": false,
"version": "11.4.1",
"ecosystem": "npm"
},
{
"name": "@secretlint/types",
"direct": false,
"version": "11.4.1",
"ecosystem": "npm"
},
{
"name": "@sinclair/typebox",
"direct": false,
"version": "0.27.10",
"ecosystem": "npm"
},
{
"name": "@sindresorhus/merge-streams",
"direct": false,
"version": "2.3.0",
"ecosystem": "npm"
},
{
"name": "@sinonjs/commons",
"direct": false,
"version": "3.0.1",
"ecosystem": "npm"
},
{
"name": "@sinonjs/fake-timers",
"direct": false,
"version": "10.3.0",
"ecosystem": "npm"
},
{
"name": "@textlint/ast-node-types",
"direct": false,
"version": "15.6.0",
"ecosystem": "npm"
},
{
"name": "@textlint/linter-formatter",
"direct": false,
"version": "15.6.0",
"ecosystem": "npm"
},
{
"name": "@textlint/module-interop",
"direct": false,
"version": "15.6.0",
"ecosystem": "npm"
},
{
"name": "@textlint/regexp-string-matcher",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "@textlint/resolver",
"direct": false,
"version": "15.6.0",
"ecosystem": "npm"
},
{
"name": "@textlint/types",
"direct": false,
"version": "15.6.0",
"ecosystem": "npm"
},
{
"name": "@types/babel__core",
"direct": false,
"version": "7.20.5",
"ecosystem": "npm"
},
{
"name": "@types/babel__generator",
"direct": false,
"version": "7.27.0",
"ecosystem": "npm"
},
{
"name": "@types/babel__template",
"direct": false,
"version": "7.4.4",
"ecosystem": "npm"
},
{
"name": "@types/babel__traverse",
"direct": false,
"version": "7.28.0",
"ecosystem": "npm"
},
{
"name": "@types/estree",
"direct": false,
"version": "1.0.8",
"ecosystem": "npm"
},
{
"name": "@types/graceful-fs",
"direct": false,
"version": "4.1.9",
"ecosystem": "npm"
},
{
"name": "@types/istanbul-lib-coverage",
"direct": false,
"version": "2.0.6",
"ecosystem": "npm"
},
{
"name": "@types/istanbul-lib-report",
"direct": false,
"version": "3.0.3",
"ecosystem": "npm"
},
{
"name": "@types/istanbul-reports",
"direct": false,
"version": "3.0.4",
"ecosystem": "npm"
},
{
"name": "@types/json-schema",
"direct": false,
"version": "7.0.15",
"ecosystem": "npm"
},
{
"name": "@types/node",
"direct": false,
"version": "20.19.39",
"ecosystem": "npm"
},
{
"name": "@types/normalize-package-data",
"direct": false,
"version": "2.4.4",
"ecosystem": "npm"
},
{
"name": "@types/react",
"direct": false,
"version": "19.2.14",
"ecosystem": "npm"
},
{
"name": "@types/stack-utils",
"direct": false,
"version": "2.0.3",
"ecosystem": "npm"
},
{
"name": "@types/yargs",
"direct": false,
"version": "17.0.35",
"ecosystem": "npm"
},
{
"name": "@types/yargs-parser",
"direct": false,
"version": "21.0.3",
"ecosystem": "npm"
},
{
"name": "@typescript-eslint/eslint-plugin",
"direct": false,
"version": "8.59.1",
"ecosystem": "npm"
},
{
"name": "@typescript-eslint/parser",
"direct": false,
"version": "8.59.1",
"ecosystem": "npm"
},
{
"name": "@typescript-eslint/project-service",
"direct": false,
"version": "8.59.1",
"ecosystem": "npm"
},
{
"name": "@typescript-eslint/scope-manager",
"direct": false,
"version": "8.59.1",
"ecosystem": "npm"
},
{
"name": "@typescript-eslint/tsconfig-utils",
"direct": false,
"version": "8.59.1",
"ecosystem": "npm"
},
{
"name": "@typescript-eslint/type-utils",
"direct": false,
"version": "8.59.1",
"ecosystem": "npm"
},
{
"name": "@typescript-eslint/types",
"direct": false,
"version": "8.59.1",
"ecosystem": "npm"
},
{
"name": "@typescript-eslint/typescript-estree",
"direct": false,
"version": "8.59.1",
"ecosystem": "npm"
},
{
"name": "@typescript-eslint/utils",
"direct": false,
"version": "8.59.1",
"ecosystem": "npm"
},
{
"name": "@typescript-eslint/visitor-keys",
"direct": false,
"version": "8.59.1",
"ecosystem": "npm"
},
{
"name": "acorn",
"direct": false,
"version": "8.16.0",
"ecosystem": "npm"
},
{
"name": "acorn-jsx",
"direct": false,
"version": "5.3.2",
"ecosystem": "npm"
},
{
"name": "ajv",
"direct": false,
"version": "6.14.0",
"ecosystem": "npm"
},
{
"name": "ajv",
"direct": false,
"version": "8.18.0",
"ecosystem": "npm"
},
{
"name": "ansi-escapes",
"direct": false,
"version": "4.3.2",
"ecosystem": "npm"
},
{
"name": "ansi-escapes",
"direct": false,
"version": "7.3.0",
"ecosystem": "npm"
},
{
"name": "ansi-regex",
"direct": false,
"version": "5.0.1",
"ecosystem": "npm"
},
{
"name": "ansi-regex",
"direct": false,
"version": "6.2.2",
"ecosystem": "npm"
},
{
"name": "ansi-styles",
"direct": false,
"version": "4.3.0",
"ecosystem": "npm"
},
{
"name": "ansi-styles",
"direct": false,
"version": "5.2.0",
"ecosystem": "npm"
},
{
"name": "ansi-styles",
"direct": false,
"version": "6.2.3",
"ecosystem": "npm"
},
{
"name": "anymatch",
"direct": false,
"version": "3.1.3",
"ecosystem": "npm"
},
{
"name": "argparse",
"direct": false,
"version": "1.0.10",
"ecosystem": "npm"
},
{
"name": "argparse",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "array-buffer-byte-length",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "array-includes",
"direct": false,
"version": "3.1.9",
"ecosystem": "npm"
},
{
"name": "array.prototype.findlast",
"direct": false,
"version": "1.2.5",
"ecosystem": "npm"
},
{
"name": "array.prototype.flat",
"direct": false,
"version": "1.3.3",
"ecosystem": "npm"
},
{
"name": "array.prototype.flatmap",
"direct": false,
"version": "1.3.3",
"ecosystem": "npm"
},
{
"name": "array.prototype.tosorted",
"direct": false,
"version": "1.1.4",
"ecosystem": "npm"
},
{
"name": "arraybuffer.prototype.slice",
"direct": false,
"version": "1.0.4",
"ecosystem": "npm"
},
{
"name": "astral-regex",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "async-function",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "auto-bind",
"direct": false,
"version": "5.0.1",
"ecosystem": "npm"
},
{
"name": "available-typed-arrays",
"direct": false,
"version": "1.0.7",
"ecosystem": "npm"
},
{
"name": "babel-jest",
"direct": false,
"version": "29.7.0",
"ecosystem": "npm"
},
{
"name": "babel-plugin-istanbul",
"direct": false,
"version": "6.1.1",
"ecosystem": "npm"
},
{
"name": "babel-plugin-jest-hoist",
"direct": false,
"version": "29.6.3",
"ecosystem": "npm"
},
{
"name": "babel-preset-current-node-syntax",
"direct": false,
"version": "1.2.0",
"ecosystem": "npm"
},
{
"name": "babel-preset-jest",
"direct": false,
"version": "29.6.3",
"ecosystem": "npm"
},
{
"name": "balanced-match",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "balanced-match",
"direct": false,
"version": "4.0.4",
"ecosystem": "npm"
},
{
"name": "baseline-browser-mapping",
"direct": false,
"version": "2.10.43",
"ecosystem": "npm"
},
{
"name": "binaryextensions",
"direct": false,
"version": "6.11.0",
"ecosystem": "npm"
},
{
"name": "boundary",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "brace-expansion",
"direct": false,
"version": "1.1.13",
"ecosystem": "npm"
},
{
"name": "brace-expansion",
"direct": false,
"version": "5.0.7",
"ecosystem": "npm"
},
{
"name": "braces",
"direct": false,
"version": "3.0.3",
"ecosystem": "npm"
},
{
"name": "browserslist",
"direct": false,
"version": "4.28.6",
"ecosystem": "npm"
},
{
"name": "bs-logger",
"direct": false,
"version": "0.2.6",
"ecosystem": "npm"
},
{
"name": "bser",
"direct": false,
"version": "2.1.1",
"ecosystem": "npm"
},
{
"name": "buffer-from",
"direct": false,
"version": "1.1.2",
"ecosystem": "npm"
},
{
"name": "call-bind",
"direct": false,
"version": "1.0.9",
"ecosystem": "npm"
},
{
"name": "call-bind-apply-helpers",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "call-bound",
"direct": false,
"version": "1.0.4",
"ecosystem": "npm"
},
{
"name": "callsites",
"direct": false,
"version": "3.1.0",
"ecosystem": "npm"
},
{
"name": "camelcase",
"direct": false,
"version": "5.3.1",
"ecosystem": "npm"
},
{
"name": "camelcase",
"direct": false,
"version": "6.3.0",
"ecosystem": "npm"
},
{
"name": "caniuse-lite",
"direct": false,
"version": "1.0.30001806",
"ecosystem": "npm"
},
{
"name": "chalk",
"direct": false,
"version": "4.1.2",
"ecosystem": "npm"
},
{
"name": "chalk",
"direct": false,
"version": "5.6.0",
"ecosystem": "npm"
},
{
"name": "chalk",
"direct": false,
"version": "5.6.2",
"ecosystem": "npm"
},
{
"name": "char-regex",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "ci-info",
"direct": false,
"version": "3.9.0",
"ecosystem": "npm"
},
{
"name": "cjs-module-lexer",
"direct": false,
"version": "1.4.3",
"ecosystem": "npm"
},
{
"name": "cli-boxes",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "cli-cursor",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "cli-truncate",
"direct": false,
"version": "5.2.0",
"ecosystem": "npm"
},
{
"name": "cliui",
"direct": false,
"version": "8.0.1",
"ecosystem": "npm"
},
{
"name": "co",
"direct": false,
"version": "4.6.0",
"ecosystem": "npm"
},
{
"name": "code-excerpt",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "collect-v8-coverage",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "color-convert",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "color-name",
"direct": false,
"version": "1.1.4",
"ecosystem": "npm"
},
{
"name": "concat-map",
"direct": false,
"version": "0.0.1",
"ecosystem": "npm"
},
{
"name": "convert-source-map",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "convert-to-spaces",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "create-jest",
"direct": false,
"version": "29.7.0",
"ecosystem": "npm"
},
{
"name": "cross-spawn",
"direct": false,
"version": "7.0.6",
"ecosystem": "npm"
},
{
"name": "csstype",
"direct": false,
"version": "3.2.3",
"ecosystem": "npm"
},
{
"name": "data-view-buffer",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "data-view-byte-length",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "data-view-byte-offset",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "debug",
"direct": false,
"version": "4.4.3",
"ecosystem": "npm"
},
{
"name": "dedent",
"direct": false,
"version": "1.7.2",
"ecosystem": "npm"
},
{
"name": "deep-is",
"direct": false,
"version": "0.1.4",
"ecosystem": "npm"
},
{
"name": "deepmerge",
"direct": false,
"version": "4.3.1",
"ecosystem": "npm"
},
{
"name": "define-data-property",
"direct": false,
"version": "1.1.4",
"ecosystem": "npm"
},
{
"name": "define-properties",
"direct": false,
"version": "1.2.1",
"ecosystem": "npm"
},
{
"name": "detect-newline",
"direct": false,
"version": "3.1.0",
"ecosystem": "npm"
},
{
"name": "diff-sequences",
"direct": false,
"version": "29.6.3",
"ecosystem": "npm"
},
{
"name": "doctrine",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "dunder-proto",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "editions",
"direct": false,
"version": "6.22.0",
"ecosystem": "npm"
},
{
"name": "electron-to-chromium",
"direct": false,
"version": "1.5.393",
"ecosystem": "npm"
},
{
"name": "emittery",
"direct": false,
"version": "0.13.1",
"ecosystem": "npm"
},
{
"name": "emoji-regex",
"direct": false,
"version": "10.6.0",
"ecosystem": "npm"
},
{
"name": "emoji-regex",
"direct": false,
"version": "8.0.0",
"ecosystem": "npm"
},
{
"name": "environment",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "error-ex",
"direct": false,
"version": "1.3.4",
"ecosystem": "npm"
},
{
"name": "es-abstract",
"direct": false,
"version": "1.24.2",
"ecosystem": "npm"
},
{
"name": "es-define-property",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "es-errors",
"direct": false,
"version": "1.3.0",
"ecosystem": "npm"
},
{
"name": "es-iterator-helpers",
"direct": false,
"version": "1.3.2",
"ecosystem": "npm"
},
{
"name": "es-object-atoms",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "es-set-tostringtag",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "es-shim-unscopables",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "es-to-primitive",
"direct": false,
"version": "1.3.0",
"ecosystem": "npm"
},
{
"name": "es-toolkit",
"direct": false,
"version": "1.46.1",
"ecosystem": "npm"
},
{
"name": "escalade",
"direct": false,
"version": "3.2.0",
"ecosystem": "npm"
},
{
"name": "escape-string-regexp",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "escape-string-regexp",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "escape-string-regexp",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "eslint",
"direct": false,
"version": "9.39.2",
"ecosystem": "npm"
},
{
"name": "eslint-config-prettier",
"direct": false,
"version": "10.1.8",
"ecosystem": "npm"
},
{
"name": "eslint-plugin-react",
"direct": false,
"version": "7.37.5",
"ecosystem": "npm"
},
{
"name": "eslint-plugin-react-hooks",
"direct": false,
"version": "5.2.0",
"ecosystem": "npm"
},
{
"name": "eslint-scope",
"direct": false,
"version": "8.4.0",
"ecosystem": "npm"
},
{
"name": "eslint-visitor-keys",
"direct": false,
"version": "3.4.3",
"ecosystem": "npm"
},
{
"name": "eslint-visitor-keys",
"direct": false,
"version": "4.2.1",
"ecosystem": "npm"
},
{
"name": "eslint-visitor-keys",
"direct": false,
"version": "5.0.1",
"ecosystem": "npm"
},
{
"name": "espree",
"direct": false,
"version": "10.4.0",
"ecosystem": "npm"
},
{
"name": "esprima",
"direct": false,
"version": "4.0.1",
"ecosystem": "npm"
},
{
"name": "esquery",
"direct": false,
"version": "1.7.0",
"ecosystem": "npm"
},
{
"name": "esrecurse",
"direct": false,
"version": "4.3.0",
"ecosystem": "npm"
},
{
"name": "estraverse",
"direct": false,
"version": "5.3.0",
"ecosystem": "npm"
},
{
"name": "esutils",
"direct": false,
"version": "2.0.3",
"ecosystem": "npm"
},
{
"name": "execa",
"direct": false,
"version": "5.1.1",
"ecosystem": "npm"
},
{
"name": "exit",
"direct": false,
"version": "0.1.2",
"ecosystem": "npm"
},
{
"name": "expect",
"direct": false,
"version": "29.7.0",
"ecosystem": "npm"
},
{
"name": "fast-deep-equal",
"direct": false,
"version": "3.1.3",
"ecosystem": "npm"
},
{
"name": "fast-glob",
"direct": false,
"version": "3.3.3",
"ecosystem": "npm"
},
{
"name": "fast-json-stable-stringify",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "fast-levenshtein",
"direct": false,
"version": "2.0.6",
"ecosystem": "npm"
},
{
"name": "fast-uri",
"direct": false,
"version": "3.1.2",
"ecosystem": "npm"
},
{
"name": "fastq",
"direct": false,
"version": "1.20.1",
"ecosystem": "npm"
},
{
"name": "fb-watchman",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "fdir",
"direct": false,
"version": "6.5.0",
"ecosystem": "npm"
},
{
"name": "file-entry-cache",
"direct": false,
"version": "8.0.0",
"ecosystem": "npm"
},
{
"name": "fill-range",
"direct": false,
"version": "7.1.1",
"ecosystem": "npm"
},
{
"name": "find-up",
"direct": false,
"version": "4.1.0",
"ecosystem": "npm"
},
{
"name": "find-up",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "flat-cache",
"direct": false,
"version": "4.0.1",
"ecosystem": "npm"
},
{
"name": "flatted",
"direct": false,
"version": "3.4.2",
"ecosystem": "npm"
},
{
"name": "for-each",
"direct": false,
"version": "0.3.5",
"ecosystem": "npm"
},
{
"name": "fs.realpath",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "fsevents",
"direct": false,
"version": "2.3.3",
"ecosystem": "npm"
},
{
"name": "function-bind",
"direct": false,
"version": "1.1.2",
"ecosystem": "npm"
},
{
"name": "function.prototype.name",
"direct": false,
"version": "1.1.8",
"ecosystem": "npm"
},
{
"name": "functions-have-names",
"direct": false,
"version": "1.2.3",
"ecosystem": "npm"
},
{
"name": "generator-function",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "gensync",
"direct": false,
"version": "1.0.0-beta.2",
"ecosystem": "npm"
},
{
"name": "get-caller-file",
"direct": false,
"version": "2.0.5",
"ecosystem": "npm"
},
{
"name": "get-east-asian-width",
"direct": false,
"version": "1.5.0",
"ecosystem": "npm"
},
{
"name": "get-intrinsic",
"direct": false,
"version": "1.3.0",
"ecosystem": "npm"
},
{
"name": "get-package-type",
"direct": false,
"version": "0.1.0",
"ecosystem": "npm"
},
{
"name": "get-proto",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "get-stream",
"direct": false,
"version": "6.0.1",
"ecosystem": "npm"
},
{
"name": "get-symbol-description",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "glob",
"direct": false,
"version": "7.2.3",
"ecosystem": "npm"
},
{
"name": "glob-parent",
"direct": false,
"version": "5.1.2",
"ecosystem": "npm"
},
{
"name": "glob-parent",
"direct": false,
"version": "6.0.2",
"ecosystem": "npm"
},
{
"name": "globals",
"direct": false,
"version": "14.0.0",
"ecosystem": "npm"
},
{
"name": "globals",
"direct": false,
"version": "17.6.0",
"ecosystem": "npm"
},
{
"name": "globalthis",
"direct": false,
"version": "1.0.4",
"ecosystem": "npm"
},
{
"name": "globby",
"direct": false,
"version": "14.1.0",
"ecosystem": "npm"
},
{
"name": "gopd",
"direct": false,
"version": "1.2.0",
"ecosystem": "npm"
},
{
"name": "graceful-fs",
"direct": false,
"version": "4.2.11",
"ecosystem": "npm"
},
{
"name": "handlebars",
"direct": false,
"version": "4.7.9",
"ecosystem": "npm"
},
{
"name": "has-bigints",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "has-flag",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "has-property-descriptors",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "has-proto",
"direct": false,
"version": "1.2.0",
"ecosystem": "npm"
},
{
"name": "has-symbols",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "has-tostringtag",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "hasown",
"direct": false,
"version": "2.0.3",
"ecosystem": "npm"
},
{
"name": "hosted-git-info",
"direct": false,
"version": "7.0.2",
"ecosystem": "npm"
},
{
"name": "html-escaper",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "human-signals",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "ignore",
"direct": false,
"version": "5.3.2",
"ecosystem": "npm"
},
{
"name": "ignore",
"direct": false,
"version": "7.0.5",
"ecosystem": "npm"
},
{
"name": "import-fresh",
"direct": false,
"version": "3.3.1",
"ecosystem": "npm"
},
{
"name": "import-local",
"direct": false,
"version": "3.2.0",
"ecosystem": "npm"
},
{
"name": "imurmurhash",
"direct": false,
"version": "0.1.4",
"ecosystem": "npm"
},
{
"name": "indent-string",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "index-to-position",
"direct": false,
"version": "1.2.0",
"ecosystem": "npm"
},
{
"name": "inflight",
"direct": false,
"version": "1.0.6",
"ecosystem": "npm"
},
{
"name": "inherits",
"direct": false,
"version": "2.0.4",
"ecosystem": "npm"
},
{
"name": "ink",
"direct": false,
"version": "6.8.0",
"ecosystem": "npm"
},
{
"name": "ink-testing-library",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "internal-slot",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "is-array-buffer",
"direct": false,
"version": "3.0.5",
"ecosystem": "npm"
},
{
"name": "is-arrayish",
"direct": false,
"version": "0.2.1",
"ecosystem": "npm"
},
{
"name": "is-async-function",
"direct": false,
"version": "2.1.1",
"ecosystem": "npm"
},
{
"name": "is-bigint",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "is-boolean-object",
"direct": false,
"version": "1.2.2",
"ecosystem": "npm"
},
{
"name": "is-callable",
"direct": false,
"version": "1.2.7",
"ecosystem": "npm"
},
{
"name": "is-core-module",
"direct": false,
"version": "2.16.1",
"ecosystem": "npm"
},
{
"name": "is-data-view",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "is-date-object",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "is-extglob",
"direct": false,
"version": "2.1.1",
"ecosystem": "npm"
},
{
"name": "is-finalizationregistry",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "is-fullwidth-code-point",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "is-fullwidth-code-point",
"direct": false,
"version": "5.1.0",
"ecosystem": "npm"
},
{
"name": "is-generator-fn",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "is-generator-function",
"direct": false,
"version": "1.1.2",
"ecosystem": "npm"
},
{
"name": "is-glob",
"direct": false,
"version": "4.0.3",
"ecosystem": "npm"
},
{
"name": "is-in-ci",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "is-map",
"direct": false,
"version": "2.0.3",
"ecosystem": "npm"
},
{
"name": "is-negative-zero",
"direct": false,
"version": "2.0.3",
"ecosystem": "npm"
},
{
"name": "is-number",
"direct": false,
"version": "7.0.0",
"ecosystem": "npm"
},
{
"name": "is-number-object",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "is-regex",
"direct": false,
"version": "1.2.1",
"ecosystem": "npm"
},
{
"name": "is-set",
"direct": false,
"version": "2.0.3",
"ecosystem": "npm"
},
{
"name": "is-shared-array-buffer",
"direct": false,
"version": "1.0.4",
"ecosystem": "npm"
},
{
"name": "is-stream",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "is-string",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "is-symbol",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "is-typed-array",
"direct": false,
"version": "1.1.15",
"ecosystem": "npm"
},
{
"name": "is-weakmap",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "is-weakref",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "is-weakset",
"direct": false,
"version": "2.0.4",
"ecosystem": "npm"
},
{
"name": "isarray",
"direct": false,
"version": "2.0.5",
"ecosystem": "npm"
},
{
"name": "isexe",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "istanbul-lib-coverage",
"direct": false,
"version": "3.2.2",
"ecosystem": "npm"
},
{
"name": "istanbul-lib-instrument",
"direct": false,
"version": "5.2.1",
"ecosystem": "npm"
},
{
"name": "istanbul-lib-instrument",
"direct": false,
"version": "6.0.3",
"ecosystem": "npm"
},
{
"name": "istanbul-lib-report",
"direct": false,
"version": "3.0.1",
"ecosystem": "npm"
},
{
"name": "istanbul-lib-source-maps",
"direct": false,
"version": "4.0.1",
"ecosystem": "npm"
},
{
"name": "istanbul-reports",
"direct": false,
"version": "3.2.0",
"ecosystem": "npm"
},
{
"name": "istextorbinary",
"direct": false,
"version": "9.5.0",
"ecosystem": "npm"
},
{
"name": "iterator.prototype",
"direct": false,
"version": "1.1.5",
"ecosystem": "npm"
},
{
"name": "jest",
"direct": false,
"version": "29.7.0",
"ecosystem": "npm"
},
{
"name": "jest-changed-files",
"direct": false,
"version": "29.7.0",
"ecosystem": "npm"
},
{
"name": "jest-circus",
"direct": false,
"version": "29.7.0",
"ecosystem": "npm"
},
{
"name": "jest-cli",
"direct": false,
"version": "29.7.0",
"ecosystem": "npm"
},
{
"name": "jest-config",
"direct": false,
"version": "29.7.0",
"ecosystem": "npm"
},
{
"name": "jest-diff",
"direct": false,
"version": "29.7.0",
"ecosystem": "npm"
},
{
"name": "jest-docblock",
"direct": false,
"version": "29.7.0",
"ecosystem": "npm"
},
{
"name": "jest-each",
"direct": false,
"version": "29.7.0",
"ecosystem": "npm"
},
{
"name": "jest-environment-node",
"direct": false,
"version": "29.7.0",
"ecosystem": "npm"
},
{
"name": "jest-get-type",
"direct": false,
"version": "29.6.3",
"ecosystem": "npm"
},
{
"name": "jest-haste-map",
"direct": false,
"version": "29.7.0",
"ecosystem": "npm"
},
{
"name": "jest-leak-detector",
"direct": false,
"version": "29.7.0",
"ecosystem": "npm"
},
{
"name": "jest-matcher-utils",
"direct": false,
"version": "29.7.0",
"ecosystem": "npm"
},
{
"name": "jest-message-util",
"direct": false,
"version": "29.7.0",
"ecosystem": "npm"
},
{
"name": "jest-mock",
"direct": false,
"version": "29.7.0",
"ecosystem": "npm"
},
{
"name": "jest-pnp-resolver",
"direct": false,
"version": "1.2.3",
"ecosystem": "npm"
},
{
"name": "jest-regex-util",
"direct": false,
"version": "29.6.3",
"ecosystem": "npm"
},
{
"name": "jest-resolve",
"direct": false,
"version": "29.7.0",
"ecosystem": "npm"
},
{
"name": "jest-resolve-dependencies",
"direct": false,
"version": "29.7.0",
"ecosystem": "npm"
},
{
"name": "jest-runner",
"direct": false,
"version": "29.7.0",
"ecosystem": "npm"
},
{
"name": "jest-runtime",
"direct": false,
"version": "29.7.0",
"ecosystem": "npm"
},
{
"name": "jest-snapshot",
"direct": false,
"version": "29.7.0",
"ecosystem": "npm"
},
{
"name": "jest-util",
"direct": false,
"version": "29.7.0",
"ecosystem": "npm"
},
{
"name": "jest-validate",
"direct": false,
"version": "29.7.0",
"ecosystem": "npm"
},
{
"name": "jest-watcher",
"direct": false,
"version": "29.7.0",
"ecosystem": "npm"
},
{
"name": "jest-worker",
"direct": false,
"version": "29.7.0",
"ecosystem": "npm"
},
{
"name": "js-tokens",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "js-yaml",
"direct": false,
"version": "3.15.0",
"ecosystem": "npm"
},
{
"name": "js-yaml",
"direct": false,
"version": "4.3.0",
"ecosystem": "npm"
},
{
"name": "jsesc",
"direct": false,
"version": "3.1.0",
"ecosystem": "npm"
},
{
"name": "json-buffer",
"direct": false,
"version": "3.0.1",
"ecosystem": "npm"
},
{
"name": "json-parse-even-better-errors",
"direct": false,
"version": "2.3.1",
"ecosystem": "npm"
},
{
"name": "json-schema-traverse",
"direct": false,
"version": "0.4.1",
"ecosystem": "npm"
},
{
"name": "json-schema-traverse",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "json-stable-stringify-without-jsonify",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "json5",
"direct": false,
"version": "2.2.3",
"ecosystem": "npm"
},
{
"name": "jsx-ast-utils",
"direct": false,
"version": "3.3.5",
"ecosystem": "npm"
},
{
"name": "keyv",
"direct": false,
"version": "4.5.4",
"ecosystem": "npm"
},
{
"name": "kleur",
"direct": false,
"version": "3.0.3",
"ecosystem": "npm"
},
{
"name": "leven",
"direct": false,
"version": "3.1.0",
"ecosystem": "npm"
},
{
"name": "levn",
"direct": false,
"version": "0.4.1",
"ecosystem": "npm"
},
{
"name": "lines-and-columns",
"direct": false,
"version": "1.2.4",
"ecosystem": "npm"
},
{
"name": "locate-path",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "locate-path",
"direct": false,
"version": "6.0.0",
"ecosystem": "npm"
},
{
"name": "lodash",
"direct": false,
"version": "4.18.1",
"ecosystem": "npm"
},
{
"name": "lodash.memoize",
"direct": false,
"version": "4.1.2",
"ecosystem": "npm"
},
{
"name": "lodash.merge",
"direct": false,
"version": "4.6.2",
"ecosystem": "npm"
},
{
"name": "lodash.sortby",
"direct": false,
"version": "4.7.0",
"ecosystem": "npm"
},
{
"name": "lodash.truncate",
"direct": false,
"version": "4.4.2",
"ecosystem": "npm"
},
{
"name": "lodash.uniq",
"direct": false,
"version": "4.5.0",
"ecosystem": "npm"
},
{
"name": "lodash.uniqwith",
"direct": false,
"version": "4.5.0",
"ecosystem": "npm"
},
{
"name": "loose-envify",
"direct": false,
"version": "1.4.0",
"ecosystem": "npm"
},
{
"name": "lru-cache",
"direct": false,
"version": "10.4.3",
"ecosystem": "npm"
},
{
"name": "lru-cache",
"direct": false,
"version": "5.1.1",
"ecosystem": "npm"
},
{
"name": "make-dir",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "make-error",
"direct": false,
"version": "1.3.6",
"ecosystem": "npm"
},
{
"name": "makeerror",
"direct": false,
"version": "1.0.12",
"ecosystem": "npm"
},
{
"name": "math-intrinsics",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "merge-stream",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "merge2",
"direct": false,
"version": "1.4.1",
"ecosystem": "npm"
},
{
"name": "micromatch",
"direct": false,
"version": "4.0.8",
"ecosystem": "npm"
},
{
"name": "mimic-fn",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "minimatch",
"direct": false,
"version": "10.2.5",
"ecosystem": "npm"
},
{
"name": "minimatch",
"direct": false,
"version": "3.1.5",
"ecosystem": "npm"
},
{
"name": "minimist",
"direct": false,
"version": "1.2.8",
"ecosystem": "npm"
},
{
"name": "ms",
"direct": false,
"version": "2.1.3",
"ecosystem": "npm"
},
{
"name": "natural-compare",
"direct": false,
"version": "1.4.0",
"ecosystem": "npm"
},
{
"name": "neo-async",
"direct": false,
"version": "2.6.2",
"ecosystem": "npm"
},
{
"name": "node-exports-info",
"direct": false,
"version": "1.6.0",
"ecosystem": "npm"
},
{
"name": "node-int64",
"direct": false,
"version": "0.4.0",
"ecosystem": "npm"
},
{
"name": "node-releases",
"direct": false,
"version": "2.0.51",
"ecosystem": "npm"
},
{
"name": "normalize-package-data",
"direct": false,
"version": "6.0.2",
"ecosystem": "npm"
},
{
"name": "normalize-path",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "npm-run-path",
"direct": false,
"version": "4.0.1",
"ecosystem": "npm"
},
{
"name": "object-assign",
"direct": false,
"version": "4.1.1",
"ecosystem": "npm"
},
{
"name": "object-inspect",
"direct": false,
"version": "1.13.4",
"ecosystem": "npm"
},
{
"name": "object-keys",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "object.assign",
"direct": false,
"version": "4.1.7",
"ecosystem": "npm"
},
{
"name": "object.entries",
"direct": false,
"version": "1.1.9",
"ecosystem": "npm"
},
{
"name": "object.fromentries",
"direct": false,
"version": "2.0.8",
"ecosystem": "npm"
},
{
"name": "object.values",
"direct": false,
"version": "1.2.1",
"ecosystem": "npm"
},
{
"name": "once",
"direct": false,
"version": "1.4.0",
"ecosystem": "npm"
},
{
"name": "onetime",
"direct": false,
"version": "5.1.2",
"ecosystem": "npm"
},
{
"name": "optionator",
"direct": false,
"version": "0.9.4",
"ecosystem": "npm"
},
{
"name": "own-keys",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "p-limit",
"direct": false,
"version": "2.3.0",
"ecosystem": "npm"
},
{
"name": "p-limit",
"direct": false,
"version": "3.1.0",
"ecosystem": "npm"
},
{
"name": "p-locate",
"direct": false,
"version": "4.1.0",
"ecosystem": "npm"
},
{
"name": "p-locate",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "p-map",
"direct": false,
"version": "7.0.4",
"ecosystem": "npm"
},
{
"name": "p-try",
"direct": false,
"version": "2.2.0",
"ecosystem": "npm"
},
{
"name": "parent-module",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "parse-json",
"direct": false,
"version": "5.2.0",
"ecosystem": "npm"
},
{
"name": "parse-json",
"direct": false,
"version": "8.3.0",
"ecosystem": "npm"
},
{
"name": "patch-console",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "path-exists",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "path-is-absolute",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "path-key",
"direct": false,
"version": "3.1.1",
"ecosystem": "npm"
},
{
"name": "path-parse",
"direct": false,
"version": "1.0.7",
"ecosystem": "npm"
},
{
"name": "path-type",
"direct": false,
"version": "6.0.0",
"ecosystem": "npm"
},
{
"name": "picocolors",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "picomatch",
"direct": false,
"version": "2.3.2",
"ecosystem": "npm"
},
{
"name": "picomatch",
"direct": false,
"version": "4.0.4",
"ecosystem": "npm"
},
{
"name": "pirates",
"direct": false,
"version": "4.0.7",
"ecosystem": "npm"
},
{
"name": "pkg-dir",
"direct": false,
"version": "4.2.0",
"ecosystem": "npm"
},
{
"name": "pluralize",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "pluralize",
"direct": false,
"version": "8.0.0",
"ecosystem": "npm"
},
{
"name": "possible-typed-array-names",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "prelude-ls",
"direct": false,
"version": "1.2.1",
"ecosystem": "npm"
},
{
"name": "prettier",
"direct": false,
"version": "3.8.3",
"ecosystem": "npm"
},
{
"name": "pretty-format",
"direct": false,
"version": "29.7.0",
"ecosystem": "npm"
},
{
"name": "prompts",
"direct": false,
"version": "2.4.2",
"ecosystem": "npm"
},
{
"name": "prop-types",
"direct": false,
"version": "15.8.1",
"ecosystem": "npm"
},
{
"name": "punycode",
"direct": false,
"version": "2.3.1",
"ecosystem": "npm"
},
{
"name": "pure-rand",
"direct": false,
"version": "6.1.0",
"ecosystem": "npm"
},
{
"name": "queue-microtask",
"direct": false,
"version": "1.2.3",
"ecosystem": "npm"
},
{
"name": "rc-config-loader",
"direct": false,
"version": "4.1.4",
"ecosystem": "npm"
},
{
"name": "react",
"direct": false,
"version": "19.2.5",
"ecosystem": "npm"
},
{
"name": "react-is",
"direct": false,
"version": "16.13.1",
"ecosystem": "npm"
},
{
"name": "react-is",
"direct": false,
"version": "18.3.1",
"ecosystem": "npm"
},
{
"name": "react-reconciler",
"direct": false,
"version": "0.33.0",
"ecosystem": "npm"
},
{
"name": "read-pkg",
"direct": false,
"version": "9.0.1",
"ecosystem": "npm"
},
{
"name": "reflect.getprototypeof",
"direct": false,
"version": "1.0.10",
"ecosystem": "npm"
},
{
"name": "regexp.prototype.flags",
"direct": false,
"version": "1.5.4",
"ecosystem": "npm"
},
{
"name": "require-directory",
"direct": false,
"version": "2.1.1",
"ecosystem": "npm"
},
{
"name": "require-from-string",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "resolve",
"direct": false,
"version": "1.22.12",
"ecosystem": "npm"
},
{
"name": "resolve",
"direct": false,
"version": "2.0.0-next.6",
"ecosystem": "npm"
},
{
"name": "resolve-cwd",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "resolve-from",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "resolve-from",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "resolve.exports",
"direct": false,
"version": "2.0.3",
"ecosystem": "npm"
},
{
"name": "restore-cursor",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "reusify",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "run-parallel",
"direct": false,
"version": "1.2.0",
"ecosystem": "npm"
},
{
"name": "safe-array-concat",
"direct": false,
"version": "1.1.4",
"ecosystem": "npm"
},
{
"name": "safe-push-apply",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "safe-regex-test",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "scheduler",
"direct": false,
"version": "0.27.0",
"ecosystem": "npm"
},
{
"name": "secretlint",
"direct": false,
"version": "11.4.1",
"ecosystem": "npm"
},
{
"name": "semver",
"direct": false,
"version": "6.3.1",
"ecosystem": "npm"
},
{
"name": "semver",
"direct": false,
"version": "7.7.4",
"ecosystem": "npm"
},
{
"name": "set-function-length",
"direct": false,
"version": "1.2.2",
"ecosystem": "npm"
},
{
"name": "set-function-name",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "set-proto",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "shebang-command",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "shebang-regex",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "side-channel",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "side-channel-list",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "side-channel-map",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "side-channel-weakmap",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "signal-exit",
"direct": false,
"version": "3.0.7",
"ecosystem": "npm"
},
{
"name": "sisteransi",
"direct": false,
"version": "1.0.5",
"ecosystem": "npm"
},
{
"name": "slash",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "slash",
"direct": false,
"version": "5.1.0",
"ecosystem": "npm"
},
{
"name": "slice-ansi",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "slice-ansi",
"direct": false,
"version": "8.0.0",
"ecosystem": "npm"
},
{
"name": "source-map",
"direct": false,
"version": "0.6.1",
"ecosystem": "npm"
},
{
"name": "source-map-support",
"direct": false,
"version": "0.5.13",
"ecosystem": "npm"
},
{
"name": "spdx-correct",
"direct": false,
"version": "3.2.0",
"ecosystem": "npm"
},
{
"name": "spdx-exceptions",
"direct": false,
"version": "2.5.0",
"ecosystem": "npm"
},
{
"name": "spdx-expression-parse",
"direct": false,
"version": "3.0.1",
"ecosystem": "npm"
},
{
"name": "spdx-license-ids",
"direct": false,
"version": "3.0.23",
"ecosystem": "npm"
},
{
"name": "sprintf-js",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "stack-utils",
"direct": false,
"version": "2.0.6",
"ecosystem": "npm"
},
{
"name": "stop-iteration-iterator",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "string-length",
"direct": false,
"version": "4.0.2",
"ecosystem": "npm"
},
{
"name": "string-width",
"direct": false,
"version": "4.2.3",
"ecosystem": "npm"
},
{
"name": "string-width",
"direct": false,
"version": "7.2.0",
"ecosystem": "npm"
},
{
"name": "string-width",
"direct": false,
"version": "8.2.0",
"ecosystem": "npm"
},
{
"name": "string.prototype.matchall",
"direct": false,
"version": "4.0.12",
"ecosystem": "npm"
},
{
"name": "string.prototype.repeat",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "string.prototype.trim",
"direct": false,
"version": "1.2.10",
"ecosystem": "npm"
},
{
"name": "string.prototype.trimend",
"direct": false,
"version": "1.0.9",
"ecosystem": "npm"
},
{
"name": "string.prototype.trimstart",
"direct": false,
"version": "1.0.8",
"ecosystem": "npm"
},
{
"name": "strip-ansi",
"direct": false,
"version": "6.0.1",
"ecosystem": "npm"
},
{
"name": "strip-ansi",
"direct": false,
"version": "7.1.2",
"ecosystem": "npm"
},
{
"name": "strip-ansi",
"direct": false,
"version": "7.2.0",
"ecosystem": "npm"
},
{
"name": "strip-bom",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "strip-final-newline",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "strip-json-comments",
"direct": false,
"version": "3.1.1",
"ecosystem": "npm"
},
{
"name": "structured-source",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "supports-color",
"direct": false,
"version": "7.2.0",
"ecosystem": "npm"
},
{
"name": "supports-color",
"direct": false,
"version": "8.1.1",
"ecosystem": "npm"
},
{
"name": "supports-hyperlinks",
"direct": false,
"version": "3.2.0",
"ecosystem": "npm"
},
{
"name": "supports-preserve-symlinks-flag",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "table",
"direct": false,
"version": "6.9.0",
"ecosystem": "npm"
},
{
"name": "tagged-tag",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "terminal-link",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "terminal-size",
"direct": false,
"version": "4.0.1",
"ecosystem": "npm"
},
{
"name": "test-exclude",
"direct": false,
"version": "6.0.0",
"ecosystem": "npm"
},
{
"name": "text-table",
"direct": false,
"version": "0.2.0",
"ecosystem": "npm"
},
{
"name": "textextensions",
"direct": false,
"version": "6.11.0",
"ecosystem": "npm"
},
{
"name": "tinyglobby",
"direct": false,
"version": "0.2.16",
"ecosystem": "npm"
},
{
"name": "tmpl",
"direct": false,
"version": "1.0.5",
"ecosystem": "npm"
},
{
"name": "to-regex-range",
"direct": false,
"version": "5.0.1",
"ecosystem": "npm"
},
{
"name": "ts-api-utils",
"direct": false,
"version": "2.5.0",
"ecosystem": "npm"
},
{
"name": "ts-jest",
"direct": false,
"version": "29.4.9",
"ecosystem": "npm"
},
{
"name": "type-check",
"direct": false,
"version": "0.4.0",
"ecosystem": "npm"
},
{
"name": "type-detect",
"direct": false,
"version": "4.0.8",
"ecosystem": "npm"
},
{
"name": "type-fest",
"direct": false,
"version": "0.21.3",
"ecosystem": "npm"
},
{
"name": "type-fest",
"direct": false,
"version": "4.41.0",
"ecosystem": "npm"
},
{
"name": "type-fest",
"direct": false,
"version": "5.5.0",
"ecosystem": "npm"
},
{
"name": "typed-array-buffer",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "typed-array-byte-length",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "typed-array-byte-offset",
"direct": false,
"version": "1.0.4",
"ecosystem": "npm"
},
{
"name": "typed-array-length",
"direct": false,
"version": "1.0.7",
"ecosystem": "npm"
},
{
"name": "typescript",
"direct": false,
"version": "5.9.3",
"ecosystem": "npm"
},
{
"name": "uglify-js",
"direct": false,
"version": "3.19.3",
"ecosystem": "npm"
},
{
"name": "unbox-primitive",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "undici-types",
"direct": false,
"version": "6.21.0",
"ecosystem": "npm"
},
{
"name": "unicorn-magic",
"direct": false,
"version": "0.1.0",
"ecosystem": "npm"
},
{
"name": "unicorn-magic",
"direct": false,
"version": "0.3.0",
"ecosystem": "npm"
},
{
"name": "update-browserslist-db",
"direct": false,
"version": "1.2.3",
"ecosystem": "npm"
},
{
"name": "uri-js",
"direct": false,
"version": "4.4.1",
"ecosystem": "npm"
},
{
"name": "v8-to-istanbul",
"direct": false,
"version": "9.3.0",
"ecosystem": "npm"
},
{
"name": "validate-npm-package-license",
"direct": false,
"version": "3.0.4",
"ecosystem": "npm"
},
{
"name": "version-range",
"direct": false,
"version": "4.15.0",
"ecosystem": "npm"
},
{
"name": "walker",
"direct": false,
"version": "1.0.8",
"ecosystem": "npm"
},
{
"name": "which",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "which-boxed-primitive",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "which-builtin-type",
"direct": false,
"version": "1.2.1",
"ecosystem": "npm"
},
{
"name": "which-collection",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "which-typed-array",
"direct": false,
"version": "1.1.20",
"ecosystem": "npm"
},
{
"name": "widest-line",
"direct": false,
"version": "6.0.0",
"ecosystem": "npm"
},
{
"name": "word-wrap",
"direct": false,
"version": "1.2.5",
"ecosystem": "npm"
},
{
"name": "wordwrap",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "wrap-ansi",
"direct": false,
"version": "7.0.0",
"ecosystem": "npm"
},
{
"name": "wrap-ansi",
"direct": false,
"version": "9.0.2",
"ecosystem": "npm"
},
{
"name": "wrappy",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "write-file-atomic",
"direct": false,
"version": "4.0.2",
"ecosystem": "npm"
},
{
"name": "ws",
"direct": false,
"version": "8.21.1",
"ecosystem": "npm"
},
{
"name": "y18n",
"direct": false,
"version": "5.0.8",
"ecosystem": "npm"
},
{
"name": "yallist",
"direct": false,
"version": "3.1.1",
"ecosystem": "npm"
},
{
"name": "yargs",
"direct": false,
"version": "17.7.2",
"ecosystem": "npm"
},
{
"name": "yargs-parser",
"direct": false,
"version": "21.1.1",
"ecosystem": "npm"
},
{
"name": "yocto-queue",
"direct": false,
"version": "0.1.0",
"ecosystem": "npm"
},
{
"name": "yoga-layout",
"direct": false,
"version": "3.2.1",
"ecosystem": "npm"
}
],
"collected": true,
"truncated": false,
"total_count": 583,
"direct_count": 0,
"indirect_count": 583
}
},
"maintainership": {
"issues": {
"open_prs": 11,
"merged_prs": 58,
"open_issues": 0,
"closed_ratio": 1,
"closed_issues": 7,
"closed_unmerged_prs": 55
},
"bus_factor": 1,
"bot_contributors": 2,
"top_contributors": [
{
"type": "User",
"login": "pppp606",
"commits": 253,
"avatar_url": "https://avatars.githubusercontent.com/u/7203958?v=4"
},
{
"type": "User",
"login": "claude",
"commits": 39,
"avatar_url": "https://avatars.githubusercontent.com/u/81847?v=4"
},
{
"type": "User",
"login": "Jack-Works",
"commits": 1,
"avatar_url": "https://avatars.githubusercontent.com/u/5390719?v=4"
}
],
"contributors_sampled": 3,
"top_contributor_share": 0.863
},
"quality_signals": {
"has_ci": true,
"has_tests": true,
"ci_workflows": [
"ci.yml",
"dependabot-guard.yml",
"publish-npm.yml"
],
"has_docs_dir": false,
"linter_configs": [
"eslint.config.js"
],
"has_editorconfig": false,
"has_linter_config": true,
"has_precommit_config": false
},
"security_signals": {
"lockfiles": [
"package-lock.json"
],
"scorecard": {
"checks": [
{
"name": "Binary-Artifacts",
"score": 10,
"reason": "no binaries found in the repo",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
},
{
"name": "Branch-Protection",
"score": 3,
"reason": "branch protection is not maximal on development and all release branches",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
},
{
"name": "CI-Tests",
"score": 10,
"reason": "13 out of 13 merged PRs checked by a CI test -- score normalized to 10",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
},
{
"name": "CII-Best-Practices",
"score": 0,
"reason": "no effort to earn an OpenSSF best practices badge detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
},
{
"name": "Code-Review",
"score": 0,
"reason": "Found 0/13 approved changesets -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
},
{
"name": "Contributors",
"score": 3,
"reason": "project has 1 contributing companies or organizations -- score normalized to 3",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
},
{
"name": "Dangerous-Workflow",
"score": null,
"reason": "internal error: internal error: invalid GitHub workflow:\n:73:18: could not parse as YAML: mapping values are not allowed in this context [syntax-check]",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
},
{
"name": "Dependency-Update-Tool",
"score": 10,
"reason": "update tool detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
},
{
"name": "Fuzzing",
"score": 0,
"reason": "project is not fuzzed",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
},
{
"name": "License",
"score": 10,
"reason": "license file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
},
{
"name": "Maintained",
"score": 10,
"reason": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
},
{
"name": "Packaging",
"score": null,
"reason": "internal error: internal error: invalid GitHub workflow:\n:73:18: could not parse as YAML: mapping values are not allowed in this context [syntax-check]",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
},
{
"name": "Pinned-Dependencies",
"score": null,
"reason": "internal error: internal error: invalid GitHub workflow:\n:73:18: could not parse as YAML: mapping values are not allowed in this context [syntax-check]",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
},
{
"name": "SAST",
"score": null,
"reason": "internal error: internal error: invalid GitHub workflow:\n:73:18: could not parse as YAML: mapping values are not allowed in this context [syntax-check]",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
},
{
"name": "Security-Policy",
"score": 4,
"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": null,
"reason": "internal error: internal error: invalid GitHub workflow:\n:73:18: could not parse as YAML: mapping values are not allowed in this context [syntax-check]",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
},
{
"name": "Vulnerabilities",
"score": 6,
"reason": "4 existing vulnerabilities detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
}
],
"commit": "3853f9d63febdf8bba129729a2b53e53e0281d7c",
"ran_at": "2026-07-25T23:10:32Z",
"aggregate_score": 5.7,
"scorecard_version": "v5.5.0"
},
"has_codeql_workflow": false,
"has_security_policy": true,
"has_dependabot_config": true
},
"contribution_flow": {
"collected": true,
"ci_last_run_at": "2026-07-24T13:18:16Z",
"oldest_open_prs": [
{
"number": 99,
"created_at": "2026-05-11T12:39:49Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 100,
"created_at": "2026-05-11T12:41:52Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 101,
"created_at": "2026-05-11T12:42:11Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 102,
"created_at": "2026-05-11T12:42:53Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 103,
"created_at": "2026-05-11T12:43:48Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 104,
"created_at": "2026-05-11T12:44:48Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 105,
"created_at": "2026-05-11T12:45:14Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 106,
"created_at": "2026-05-11T12:45:37Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 107,
"created_at": "2026-05-11T12:46:04Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 116,
"created_at": "2026-05-28T03:17:47Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 131,
"created_at": "2026-07-19T23:10:02Z",
"last_comment_at": null,
"last_comment_author": null
}
],
"last_merged_pr_at": "2026-07-19T23:05:36Z",
"ci_last_conclusion": "SUCCESS",
"oldest_open_issues": []
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/pppp606/ink-chart",
"host": "github.com",
"name": "ink-chart",
"owner": "pppp606"
},
"metrics": {
"overall": {
"key": "overall",
"band": "moderate",
"name": "Overall health",
"note": null,
"notes": [],
"value": 65,
"inputs": {
"security": 66,
"vitality": 84,
"community": 43,
"governance": 56,
"engineering": 74
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "good",
"name": "Vitality",
"value": 84,
"weight": 0.22,
"metrics": [
{
"key": "development_activity",
"band": "good",
"name": "Development activity",
"note": null,
"notes": [],
"value": 79,
"inputs": {
"commits_last_year": 322,
"human_commit_share": 0.82,
"days_since_last_push": 6,
"active_weeks_last_year": 22
},
"components": [
{
"key": "push_recency",
"name": "Push recency",
"detail": "last push 6 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "push_recency",
"params": {
"days": 6
}
}
],
"max_points": 36
},
{
"key": "commit_cadence",
"name": "Commit cadence",
"detail": "22/52 weeks with commits",
"points": 15.2,
"status": "partial",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 22
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "322 commits in the last year",
"points": 18,
"status": "met",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 322
}
}
],
"max_points": 18
},
{
"key": "openssf_scorecard_maintained",
"name": "OpenSSF Scorecard: Maintained",
"detail": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "release_discipline",
"band": "excellent",
"name": "Release discipline",
"note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"openssf_scorecard_signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 92,
"inputs": {
"releases_count": 8,
"latest_release_tag": "v0.2.7",
"releases_from_tags": false,
"days_since_latest_release": 6,
"mean_days_between_releases": 46.1
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "8 releases published",
"points": 27,
"status": "met",
"details": [
{
"code": "releases_published",
"params": {
"count": 8
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 6 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "release_recency",
"params": {
"days": 6
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~46.1 days",
"points": 19.8,
"status": "partial",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 46.1
}
}
],
"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": 6,
"days_since_last_human_commit_is_floor": false
},
"components": [
{
"key": "project_is_still_maintained",
"name": "Project is still maintained",
"detail": "last human commit 6 days ago",
"points": 100,
"status": "met",
"details": [
{
"code": "abandonment_maintained",
"params": {
"days": 6
}
}
],
"max_points": 100
}
]
}
],
"description": "Is the project alive — is code being written and are releases shipping?"
},
{
"key": "community",
"band": "at_risk",
"name": "Community & Adoption",
"value": 43,
"weight": 0.18,
"metrics": [
{
"key": "popularity",
"band": "critical",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 22,
"inputs": {
"forks": 1,
"stars": 24,
"watchers": 0,
"growth_state": "unverified",
"growth_factor_pct": 100,
"growth_unverified_reason": "no_history"
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "24 stars",
"points": 22.1,
"status": "partial",
"details": [
{
"code": "stars",
"params": {
"count": 24
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "1 forks",
"points": 0,
"status": "missed",
"details": [
{
"code": "forks",
"params": {
"count": 1
}
}
],
"max_points": 25
},
{
"key": "watchers",
"name": "Watchers",
"detail": "0 watchers",
"points": 0,
"status": "missed",
"details": [
{
"code": "watchers",
"params": {
"count": 0
}
}
],
"max_points": 15
}
]
},
{
"key": "community_health",
"band": "moderate",
"name": "Community health",
"note": null,
"notes": [],
"value": 50,
"inputs": {
"has_readme": true,
"has_license": true,
"has_contributing": false,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": false
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 22.5,
"status": "met",
"details": [],
"max_points": 22.5
},
{
"key": "license",
"name": "License",
"detail": "recognized license (MIT)",
"points": 22.5,
"status": "met",
"details": [
{
"code": "license_standard",
"params": {}
},
{
"code": "license_spdx",
"params": {
"spdx": "MIT"
}
}
],
"max_points": 22.5
},
{
"key": "contributing_guide",
"name": "CONTRIBUTING guide",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 18
},
{
"key": "code_of_conduct",
"name": "Code of conduct",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 13.5
},
{
"key": "issue_template",
"name": "Issue template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.2
},
{
"key": "pr_template",
"name": "PR template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 6.3
}
]
},
{
"key": "ecosystem_adoption",
"band": "moderate",
"name": "Ecosystem adoption (downloads)",
"note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"registry_dependents"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 66,
"inputs": {
"packages": [
"@pppp606/ink-chart"
],
"dependents": null,
"ecosystems": "npm",
"total_downloads": null,
"monthly_downloads": 9463
},
"components": [
{
"key": "monthly_downloads",
"name": "Monthly downloads",
"detail": "9,463 downloads/month across npm",
"points": 53,
"status": "partial",
"details": [
{
"code": "downloads_monthly",
"params": {
"count": 9463,
"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": 19,
"inputs": {
"bus_factor": 1,
"contributors_sampled": 3,
"top_contributor_share": 0.863
},
"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 86% of commits",
"points": 3.1,
"status": "partial",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 86
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "3 contributors",
"points": 4.1,
"status": "partial",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 3
}
}
],
"max_points": 13.5
},
{
"key": "openssf_scorecard_contributors",
"name": "OpenSSF Scorecard: Contributors",
"detail": "project has 1 contributing companies or organizations -- score normalized to 3",
"points": 3,
"status": "partial",
"details": [],
"max_points": 10
}
]
},
{
"key": "responsiveness",
"band": "moderate",
"name": "Issue & PR responsiveness",
"note": null,
"notes": [],
"value": 66,
"inputs": {
"merged_prs": 58,
"open_issues": 0,
"closed_issues": 7,
"issue_closed_ratio": 1,
"closed_unmerged_prs": 55
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "100% of issues closed",
"points": 46.8,
"status": "met",
"details": [
{
"code": "issues_closed_share",
"params": {
"share": 100
}
}
],
"max_points": 46.75
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "58/113 decided PRs merged",
"points": 19.6,
"status": "partial",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 58,
"decided": 113
}
}
],
"max_points": 38.25
},
{
"key": "openssf_scorecard_code_review",
"name": "OpenSSF Scorecard: Code-Review",
"detail": "Found 0/13 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
}
]
},
{
"key": "stewardship",
"band": "moderate",
"name": "Ownership & stewardship",
"note": "Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"verified_domain"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 54,
"inputs": {
"followers": 11,
"owner_type": "User",
"is_verified": null,
"owner_login": "pppp606",
"public_repos": 64,
"account_age_days": 4492
},
"components": [
{
"key": "ownership_backing",
"name": "Ownership backing",
"detail": "personal (user) account",
"points": 10,
"status": "partial",
"details": [
{
"code": "owner_personal",
"params": {}
}
],
"max_points": 30
},
{
"key": "verified_domain",
"name": "Verified domain",
"detail": "not applicable to user accounts",
"points": 0,
"status": "excluded",
"details": [
{
"code": "not_applicable_to_user_accounts",
"params": {}
}
],
"max_points": 20
},
{
"key": "owner_reach",
"name": "Owner reach",
"detail": "11 followers of pppp606",
"points": 7.8,
"status": "partial",
"details": [
{
"code": "owner_followers",
"params": {
"count": 11,
"login": "pppp606"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "64 public repos, account ~12 yr old",
"points": 25,
"status": "met",
"details": [
{
"code": "public_repos",
"params": {
"count": 64
}
},
{
"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": [
"@pppp606/ink-chart"
],
"ecosystems": "npm",
"any_deprecated": false,
"min_days_since_publish": 6
},
"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 6 days ago",
"points": 35,
"status": "met",
"details": [
{
"code": "publish_recency",
"params": {
"days": 6
}
}
],
"max_points": 35
},
{
"key": "version_history",
"name": "Version history",
"detail": "9 published versions",
"points": 20,
"status": "met",
"details": [
{
"code": "published_versions",
"params": {
"count": 9
}
}
],
"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": 74,
"weight": 0.2,
"metrics": [
{
"key": "engineering_practices",
"band": "good",
"name": "Engineering practices",
"note": null,
"notes": [],
"value": 84,
"inputs": {
"has_ci": true,
"has_tests": true,
"has_editorconfig": false,
"has_linter_config": true,
"has_precommit_config": false
},
"components": [
{
"key": "ci_workflows",
"name": "CI workflows",
"detail": "3 workflow(s)",
"points": 24,
"status": "met",
"details": [
{
"code": "ci_workflows",
"params": {
"count": 3
}
}
],
"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": "eslint.config.js",
"points": 16,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "eslint.config.js"
}
}
],
"max_points": 16
},
{
"key": "pre_commit_hooks",
"name": "Pre-commit hooks",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 9.6
},
{
"key": "editorconfig",
"name": ".editorconfig",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 6.4
},
{
"key": "openssf_scorecard_ci_tests",
"name": "OpenSSF Scorecard: CI-Tests",
"detail": "13 out of 13 merged PRs checked by a CI test -- score normalized to 10",
"points": 20,
"status": "met",
"details": [],
"max_points": 20
}
]
},
{
"key": "documentation",
"band": "moderate",
"name": "Documentation",
"note": null,
"notes": [],
"value": 60,
"inputs": {
"topics": [
"barchart",
"chart",
"cli",
"ink",
"nodejs",
"react",
"sparkline",
"terminal",
"typescript",
"visualization"
],
"has_wiki": true,
"homepage": null,
"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": null,
"points": 0,
"status": "missed",
"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": "10 topics",
"points": 10,
"status": "met",
"details": [
{
"code": "topics_count",
"params": {
"count": 10
}
}
],
"max_points": 10
},
{
"key": "wiki",
"name": "Wiki",
"detail": null,
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
}
],
"description": "Are baseline engineering and documentation practices in place?"
},
{
"key": "security",
"band": "moderate",
"name": "Security",
"value": 66,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "moderate",
"name": "Security posture",
"note": "Excluded from scoring (no data or not applicable): Dangerous-Workflow, Packaging, Pinned-Dependencies, SAST, Signed-Releases, Token-Permissions. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"dangerous_workflow",
"packaging",
"pinned_dependencies",
"sast",
"signed_releases",
"token_permissions"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 57,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 12,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 6,
"scorecard_aggregate": 5.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": "branch protection is not maximal on development and all release branches",
"points": 2.2,
"status": "partial",
"details": [],
"max_points": 7.5
},
{
"key": "ci_tests",
"name": "CI-Tests",
"detail": "13 out of 13 merged PRs checked by a CI test -- score normalized to 10",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "cii_best_practices",
"name": "CII-Best-Practices",
"detail": "no effort to earn an OpenSSF best practices badge detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 2.5
},
{
"key": "code_review",
"name": "Code-Review",
"detail": "Found 0/13 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "contributors",
"name": "Contributors",
"detail": "project has 1 contributing companies or organizations -- score normalized to 3",
"points": 0.8,
"status": "partial",
"details": [],
"max_points": 2.5
},
{
"key": "dangerous_workflow",
"name": "Dangerous-Workflow",
"detail": "internal error: internal error: invalid GitHub workflow:\n:73:18: could not parse as YAML: mapping values are not allowed in this context [syntax-check]",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 10
},
{
"key": "dependency_update_tool",
"name": "Dependency-Update-Tool",
"detail": "update tool detected",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "fuzzing",
"name": "Fuzzing",
"detail": "project is not fuzzed",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "license",
"name": "License",
"detail": "license file detected",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "maintained",
"name": "Maintained",
"detail": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "packaging",
"name": "Packaging",
"detail": "internal error: internal error: invalid GitHub workflow:\n:73:18: could not parse as YAML: mapping values are not allowed in this context [syntax-check]",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 5
},
{
"key": "pinned_dependencies",
"name": "Pinned-Dependencies",
"detail": "internal error: internal error: invalid GitHub workflow:\n:73:18: could not parse as YAML: mapping values are not allowed in this context [syntax-check]",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 5
},
{
"key": "sast",
"name": "SAST",
"detail": "internal error: internal error: invalid GitHub workflow:\n:73:18: could not parse as YAML: mapping values are not allowed in this context [syntax-check]",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 5
},
{
"key": "security_policy",
"name": "Security-Policy",
"detail": "security policy file detected",
"points": 2,
"status": "partial",
"details": [],
"max_points": 5
},
{
"key": "signed_releases",
"name": "Signed-Releases",
"detail": "no releases found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 7.5
},
{
"key": "token_permissions",
"name": "Token-Permissions",
"detail": "internal error: internal error: invalid GitHub workflow:\n:73:18: could not parse as YAML: mapping values are not allowed in this context [syntax-check]",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 7.5
},
{
"key": "vulnerabilities",
"name": "Vulnerabilities",
"detail": "4 existing vulnerabilities detected",
"points": 4.5,
"status": "partial",
"details": [],
"max_points": 7.5
}
]
},
{
"key": "dependency_advisories",
"band": "excellent",
"name": "Dependency advisories",
"note": "Excluded from scoring (no data or not applicable): Indirect dependencies free of known advisories, No advisories left outstanding. Remaining weights renormalized. Matched 583 resolved dependencies against OSV. This repository publishes no package the index resolves, so the repository dependency graph was assessed instead. That graph mixes development and test pins with shipped dependencies, so only the declared runtime dependencies are scored; transitive findings are reported as context and excluded from the score. Reachability is not analyzed.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"indirect_dependencies_free_of_known_advisories",
"no_advisories_left_outstanding"
]
}
},
{
"code": "weights_renormalized",
"params": {}
},
{
"code": "advisories_scope_repository",
"params": {
"assessed": 583
}
},
{
"code": "advisories_repo_graph_caveat",
"params": {}
},
{
"code": "advisories_reachability",
"params": {}
}
],
"value": 100,
"inputs": {
"source": "osv",
"advisories": 5,
"affected_packages": 3,
"assessed_packages": 583,
"unassessed_packages": 0,
"affected_by_severity": "high 3",
"direct_affected_packages": 0
},
"components": [
{
"key": "direct_dependencies_free_of_known_advisories",
"name": "Direct dependencies free of known advisories",
"detail": "no direct dependency carries a known advisory",
"points": 35,
"status": "met",
"details": [
{
"code": "no_direct_advisories",
"params": {}
}
],
"max_points": 35
},
{
"key": "indirect_dependencies_free_of_known_advisories",
"name": "Indirect dependencies free of known advisories",
"detail": "transitive set not separable from development and test dependencies in this scope",
"points": 0,
"status": "excluded",
"details": [
{
"code": "advisories_scope_not_separable",
"params": {}
}
],
"max_points": 25
},
{
"key": "no_advisories_left_outstanding",
"name": "No advisories left outstanding",
"detail": "no advisory carries a publication date",
"points": 0,
"status": "excluded",
"details": [
{
"code": "advisories_no_publication_date",
"params": {}
}
],
"max_points": 40
}
]
},
{
"key": "malicious_dependencies",
"band": "excellent",
"name": "Malicious dependencies",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"source": "osv",
"meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
"packages": [],
"red_flag": false,
"assessed_packages": 583,
"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": 7
},
"components": [
{
"key": "policy_exposure_multiplier",
"name": "Policy exposure multiplier",
"detail": "no confirmed policy-scope location match",
"points": 100,
"status": "met",
"details": [
{
"code": "jurisdiction_no_match",
"params": {}
}
],
"max_points": 100
}
]
}
],
"description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
},
{
"key": "ai_readiness",
"band": "moderate",
"name": "AI Readiness",
"value": 68,
"weight": 0,
"metrics": [
{
"key": "ai_agent_context",
"band": "at_risk",
"name": "Agent context & guidance",
"note": null,
"notes": [],
"value": 40,
"inputs": {
"has_llms_txt": false,
"legible_history_share": 0.988,
"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": "81 of 82 human commits state their intent (structured subject or explanatory body)",
"points": 40,
"status": "met",
"details": [
{
"code": "legible_history",
"params": {
"legible": 81,
"sampled": 82
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "good",
"name": "Verify loop (build / test / typecheck)",
"note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Pinned-Dependencies. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"openssf_scorecard_pinned_dependencies"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 78,
"inputs": {
"has_nix": false,
"has_tests": true,
"lockfiles": [
"package-lock.json"
],
"has_dockerfile": false,
"typed_language": true,
"bootstrap_files": [],
"has_devcontainer": false,
"has_linter_config": true,
"typecheck_configs": [
"tsconfig.json"
],
"agent_commit_share": 0.04,
"toolchain_manifests": [],
"dependency_bot_commit_share": 0.07
},
"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": "eslint.config.js",
"points": 11,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "eslint.config.js"
}
}
],
"max_points": 11
},
{
"key": "static_type_checking",
"name": "Static type checking",
"detail": "tsconfig.json",
"points": 11,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "tsconfig.json"
}
}
],
"max_points": 11
},
{
"key": "reproducible_environment",
"name": "Reproducible environment",
"detail": "lockfile",
"points": 10,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "lockfile"
}
}
],
"max_points": 10
},
{
"key": "demonstrated_agent_practice",
"name": "Demonstrated agent practice",
"detail": "4 of the last 100 commits agent-authored or agent-credited",
"points": 8,
"status": "partial",
"details": [
{
"code": "agent_authored_commits",
"params": {
"count": 4,
"sampled": 100
}
}
],
"max_points": 10
},
{
"key": "automated_maintenance",
"name": "Automated maintenance",
"detail": "7 of the last 100 commits are automated dependency updates",
"points": 8,
"status": "met",
"details": [
{
"code": "dependency_bot_commits",
"params": {
"count": 7,
"sampled": 100
}
}
],
"max_points": 8
},
{
"key": "openssf_scorecard_pinned_dependencies",
"name": "OpenSSF Scorecard: Pinned-Dependencies",
"detail": "internal error: internal error: invalid GitHub workflow:\n:73:18: could not parse as YAML: mapping values are not allowed in this context [syntax-check]",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 10
}
]
},
{
"key": "ai_code_legibility",
"band": "excellent",
"name": "Code legibility for models",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"primary_language": "TypeScript",
"largest_source_bytes": 16885,
"source_files_sampled": 50,
"oversized_source_files": 0
},
"components": [
{
"key": "type_checkable_code",
"name": "Type-checkable code",
"detail": "TypeScript (statically typed)",
"points": 45,
"status": "met",
"details": [
{
"code": "statically_typed_language",
"params": {
"language": "TypeScript"
}
}
],
"max_points": 45
},
{
"key": "manageable_file_sizes",
"name": "Manageable file sizes",
"detail": "0/50 source files over 60KB",
"points": 55,
"status": "met",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 50,
"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-25T23:10:47.956299Z",
"schema_version": "0.27.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/p/pppp606/ink-chart.svg",
"full_name": "pppp606/ink-chart",
"license_state": "standard",
"license_spdx": "MIT"
}