Звіт у форматі JSON машиночитний
{
"data": {
"repo": {
"topics": [],
"is_fork": false,
"size_kb": 7749,
"has_wiki": true,
"homepage": "https://discuss.flarum.org/d/20586",
"languages": {
"PHP": 301943,
"Less": 16427,
"Blade": 872,
"JavaScript": 735,
"TypeScript": 192471
},
"pushed_at": "2026-07-23T13:44:22Z",
"created_at": "2019-07-02T20:15:03Z",
"owner_type": "Organization",
"updated_at": "2026-06-10T22:17:54Z",
"description": "A Flarum extension that adds polls to your discussions",
"is_archived": false,
"is_disabled": false,
"license_spdx": "MIT",
"default_branch": "2.x",
"license_spdx_raw": "MIT",
"primary_language": "PHP",
"significant_languages": [
"PHP",
"TypeScript"
]
},
"owner": {
"blog": "https://friendsofflarum.org",
"name": "Friends of Flarum",
"type": "Organization",
"login": "FriendsOfFlarum",
"company": null,
"location": null,
"followers": 100,
"avatar_url": "https://avatars.githubusercontent.com/u/43339973?v=4",
"created_at": "2018-09-17T11:10:19Z",
"is_verified": null,
"public_repos": 105,
"account_age_days": 2866
},
"license": {
"state": "standard",
"spdx_id": "MIT",
"raw_spdx": "MIT",
"file_present": true,
"scorecard_found": true,
"profile_has_license": true
},
"activity": {
"releases": [
{
"tag": "2.3.4",
"kind": "patch",
"published_at": "2026-05-21T21:43:44Z"
},
{
"tag": "3.0.0-beta.4",
"kind": "prerelease",
"published_at": "2026-05-21T21:43:19Z"
},
{
"tag": "3.0.0-beta.3",
"kind": "prerelease",
"published_at": "2026-05-06T09:34:29Z"
},
{
"tag": "3.0.0-beta.2",
"kind": "prerelease",
"published_at": "2026-04-30T23:56:16Z"
},
{
"tag": "3.0.0-beta.1",
"kind": "prerelease",
"published_at": "2026-04-17T20:14:56Z"
},
{
"tag": "2.3.3",
"kind": "patch",
"published_at": "2026-04-15T20:27:59Z"
},
{
"tag": "2.3.2",
"kind": "patch",
"published_at": "2026-03-31T12:14:56Z"
},
{
"tag": "2.3.1",
"kind": "patch",
"published_at": "2025-11-25T15:08:53Z"
},
{
"tag": "2.3.0",
"kind": "minor",
"published_at": "2025-11-05T10:00:13Z"
},
{
"tag": "2.2.15",
"kind": "patch",
"published_at": "2025-10-03T08:26:23Z"
},
{
"tag": "2.2.14",
"kind": "patch",
"published_at": "2025-04-23T14:31:14Z"
},
{
"tag": "2.2.13",
"kind": "patch",
"published_at": "2025-03-17T05:56:13Z"
},
{
"tag": "2.2.12",
"kind": "patch",
"published_at": "2025-01-22T12:00:58Z"
},
{
"tag": "2.2.11",
"kind": "patch",
"published_at": "2024-12-09T10:48:27Z"
},
{
"tag": "2.2.10",
"kind": "patch",
"published_at": "2024-12-09T09:42:39Z"
},
{
"tag": "2.2.9",
"kind": "patch",
"published_at": "2024-10-30T12:50:45Z"
},
{
"tag": "2.2.8",
"kind": "patch",
"published_at": "2024-10-17T20:12:48Z"
},
{
"tag": "2.2.7",
"kind": "patch",
"published_at": "2024-10-07T12:33:56Z"
},
{
"tag": "2.2.6",
"kind": "patch",
"published_at": "2024-10-07T11:10:17Z"
},
{
"tag": "2.2.5",
"kind": "patch",
"published_at": "2024-09-16T15:09:02Z"
},
{
"tag": "2.2.4",
"kind": "patch",
"published_at": "2024-07-30T09:06:29Z"
},
{
"tag": "2.2.3",
"kind": "patch",
"published_at": "2024-07-07T14:32:11Z"
},
{
"tag": "2.2.2",
"kind": "patch",
"published_at": "2024-06-08T20:02:35Z"
},
{
"tag": "2.2.0",
"kind": "minor",
"published_at": "2024-06-08T20:01:58Z"
},
{
"tag": "2.1.2",
"kind": "patch",
"published_at": "2023-11-12T17:26:05Z"
},
{
"tag": "2.0.1",
"kind": "patch",
"published_at": "2023-07-15T22:29:18Z"
},
{
"tag": "2.0.0",
"kind": "major",
"published_at": "2023-07-12T15:48:28Z"
},
{
"tag": "1.4.2",
"kind": "patch",
"published_at": "2023-06-21T00:30:27Z"
},
{
"tag": "1.4.1",
"kind": "patch",
"published_at": "2023-06-14T16:01:34Z"
},
{
"tag": "1.4.0",
"kind": "minor",
"published_at": "2023-06-06T15:12:07Z"
},
{
"tag": "1.3.0",
"kind": "minor",
"published_at": "2022-11-21T15:56:26Z"
},
{
"tag": "1.2.1",
"kind": "patch",
"published_at": "2022-10-09T01:59:31Z"
},
{
"tag": "1.2.0",
"kind": "minor",
"published_at": "2022-09-22T14:32:31Z"
},
{
"tag": "1.1.0",
"kind": "minor",
"published_at": "2022-05-26T19:34:30Z"
},
{
"tag": "1.0.5",
"kind": "patch",
"published_at": "2021-12-22T17:50:39Z"
},
{
"tag": "1.0.3",
"kind": "patch",
"published_at": "2021-07-02T20:27:32Z"
},
{
"tag": "1.0.2",
"kind": "patch",
"published_at": "2021-06-13T13:54:44Z"
},
{
"tag": "1.0.1",
"kind": "patch",
"published_at": "2021-05-29T08:26:11Z"
},
{
"tag": "1.0.0",
"kind": "major",
"published_at": "2021-05-27T10:17:42Z"
},
{
"tag": "0.4.1",
"kind": "patch",
"published_at": "2021-04-08T19:42:50Z"
},
{
"tag": "0.4.0",
"kind": "minor",
"published_at": "2021-04-08T16:53:31Z"
},
{
"tag": "0.3.3",
"kind": "patch",
"published_at": "2021-04-08T16:51:50Z"
},
{
"tag": "0.3.2",
"kind": "patch",
"published_at": "2020-12-23T08:48:32Z"
},
{
"tag": "0.3.1",
"kind": "patch",
"published_at": "2020-12-21T16:48:42Z"
},
{
"tag": "0.3.0",
"kind": "minor",
"published_at": "2020-12-16T11:14:35Z"
},
{
"tag": "0.2.1",
"kind": "patch",
"published_at": "2020-12-01T21:21:04Z"
},
{
"tag": "0.1.5",
"kind": "patch",
"published_at": "2020-12-01T21:20:06Z"
},
{
"tag": "0.2.0",
"kind": "minor",
"published_at": "2020-11-24T18:47:23Z"
},
{
"tag": "0.1.4",
"kind": "patch",
"published_at": "2020-11-24T18:41:49Z"
},
{
"tag": "0.1.3",
"kind": "patch",
"published_at": "2020-11-14T22:18:38Z"
},
{
"tag": "0.1.2",
"kind": "patch",
"published_at": "2020-03-22T23:32:33Z"
}
],
"recent_commits": [
{
"oid": "a63780dc36612cd86fc3d2734fe40fc229391a6f",
"body": "Includes transpiled JS/TS, and Typescript declaration files (typings).\n\n[skip ci]",
"is_bot": false,
"headline": "Bundled output for commit 3c3d1ab123a3048ee39ba546475ae4b86b16c0e0",
"author_name": "flarum-bot",
"author_login": "flarum-bot",
"committed_at": "2026-05-21T18:00:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3c3d1ab123a3048ee39ba546475ae4b86b16c0e0",
"body": "* fix: prevent URL-deprecation notice on freshly uploaded images\n\nNewly created poll options never had `isImageUpload` set on the model,\nso after an upload the deprecation check `hasImage && !isUpload`\nincorrectly fired for new uploads. Sync the flag via pushAttributes()\nin both the poll-level and o\n[…]\n filter signature that didn't constrain the type.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "[2.x] feat: draft support global polls (#128)",
"author_name": "Gianni Guida",
"author_login": "gianniguida",
"committed_at": "2026-05-21T17:59:27Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "e8f0f6a1b6d72328347852f148964db57b9ee7ce",
"body": "Includes transpiled JS/TS, and Typescript declaration files (typings).\n\n[skip ci]",
"is_bot": false,
"headline": "Bundled output for commit 4ec289f793cf3456502ada842e3af80f83d89e5d",
"author_name": "flarum-bot",
"author_login": "flarum-bot",
"committed_at": "2026-05-06T09:32:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4ec289f793cf3456502ada842e3af80f83d89e5d",
"body": "…es not warn (#118) (#126)",
"is_bot": false,
"headline": "fix(polls): clear pendingSubmit after instant vote so beforeunload do…",
"author_name": "Sai Asish Y",
"author_login": "SAY-5",
"committed_at": "2026-05-06T09:31:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1fa3257adcd2b4ec368bd48fd88af7b56dbf7f15",
"body": null,
"is_bot": false,
"headline": "chore: ignore IDE files",
"author_name": "Rafał Całka",
"author_login": "rafaucau",
"committed_at": "2026-05-06T09:17:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0ad50878471da735a5c5e9f94fa9e3a3b4c7c420",
"body": "…ivate (0700) (#125)\n\nFlarum's local filesystem driver wraps League\\Flysystem v3, which\ndefaults the directory visibility to PRIVATE (0700) when no explicit\nvisibility is supplied. As a result, every new daily folder created\nunder public/assets/polls during an upload is 0700, so the web server\ncanno\n[…]\neDisk so the underlying PortableVisibilityConverter uses\nPUBLIC (0755) as the default for new directories. File-level\nvisibility is unchanged.\n\nCloses #123.\n\nSigned-off-by: SAY-5 <say.apm35@gmail.com>",
"is_bot": false,
"headline": "fix(polls): create poll-image subdirectories as public (0755), not pr…",
"author_name": "Sai Asish Y",
"author_login": "SAY-5",
"committed_at": "2026-04-30T23:54:08Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "7949a84fa6f9a490f5741476c955ed1d0a3e2fc2",
"body": "Includes transpiled JS/TS, and Typescript declaration files (typings).\n\n[skip ci]",
"is_bot": false,
"headline": "Bundled output for commit a21392ff0d475d5580bc42ad9af6ac5683d7cef0",
"author_name": "flarum-bot",
"author_login": "flarum-bot",
"committed_at": "2026-04-17T20:13:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a21392ff0d475d5580bc42ad9af6ac5683d7cef0",
"body": "* chore(2.0): update dependencies\n\nUpdate dependencies to Flarum 2.0 compatible versions.\n\n* chore(2.0): update infrastructure\n\nUpdate the extension infrastructure\n\n* chore(2.0): adapt to extending lazy modules\n\nSome Flarum modules are now lazy loaded. Extending them requires a different approach.\n\n\n[…]\nrade for 2.0, mostly working\n\n* Apply fixes from StyleCI\n\n* feat: feature toggles\n\n* fix: phpstan\n\n* fix: ci errors\n\n* Apply fixes from StyleCI\n\n---------\n\nCo-authored-by: StyleCI Bot <bot@styleci.io>",
"is_bot": false,
"headline": "feat: Flarum 2.0 refactor (#116)",
"author_name": "IanM",
"author_login": "imorland",
"committed_at": "2026-04-17T20:12:35Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "bd5b8f4404f8beeff512a0e159cb81a6d82c4016",
"body": "Includes transpiled JS/TS, and Typescript declaration files (typings).\n\n[skip ci]",
"is_bot": false,
"headline": "Bundled output for commit 557556cf9909cf8f57b4963c74d7e2e70519a54c",
"author_name": "flarum-bot",
"author_login": "flarum-bot",
"committed_at": "2026-04-15T20:26:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "557556cf9909cf8f57b4963c74d7e2e70519a54c",
"body": "…#114)\n\n* fix: correct inverted logic in PollIsEndedFilter\n\nThe filter had two bugs:\n- The negate/non-negate branches were swapped, causing\n filter[isEnded]=1 to return active polls and vice versa.\n- The orWhere for null end_date was not scoped inside a\n closure, leaking into the outer query and r\n[…]\n6 <noreply@anthropic.com>\n\n* style: fix prettier formatting in PollShowcase\n\nCo-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix: correct PollIsEndedFilter logic and showcase page poll display (…",
"author_name": "Rafael Horvat",
"author_login": "iPurpl3x",
"committed_at": "2026-04-15T20:26:10Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "c412a413e862dba19a0b5d203c69d141c17e4780",
"body": null,
"is_bot": false,
"headline": "Change main_git_branch from master to 1.x",
"author_name": "IanM",
"author_login": "imorland",
"committed_at": "2026-04-15T20:25:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3af76c0b67512dfe68200279d1d6110ec1490892",
"body": "* perf: poc refactoring queries, avoid n+1\n\n* chore: improve",
"is_bot": false,
"headline": "perf: improve querying, avoid n+1 (#115)",
"author_name": "Davide Iadeluca",
"author_login": "DavideIadeluca",
"committed_at": "2026-03-31T12:14:03Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c5f465c2272814f13c40a9bb80aad1bdd8e55c4c",
"body": null,
"is_bot": false,
"headline": "chore: add release notification",
"author_name": "IanM",
"author_login": "imorland",
"committed_at": "2026-02-15T21:20:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8517a9edadad7f6e1a8ed758626d0e36018d08c9",
"body": "Includes transpiled JS/TS, and Typescript declaration files (typings).\n\n[skip ci]",
"is_bot": false,
"headline": "Bundled output for commit 0f0c4c83487a2d273e312a111487371e6a3c0751",
"author_name": "flarum-bot",
"author_login": "flarum-bot",
"committed_at": "2025-11-25T15:08:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0f0c4c83487a2d273e312a111487371e6a3c0751",
"body": "* feat: add sorting functionality to ListGlobalPollsController\n\n* feat: update default sort option for polls directory and add serialization to forum\n\n* feat: update sorting options in PollsDirectory and improve query parameter handling\n\n* feat: enhance sorting functionality in PollsPage and PollListState\n\n* feat: add sorting options text keys\n\n* feat: add PHP versions to backend workflow configuration",
"is_bot": false,
"headline": "fix: sort dropdown polls page (#113)",
"author_name": "Gianni Guida",
"author_login": "gianniguida",
"committed_at": "2025-11-25T15:07:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "129d4159d4f6eb3363e6e0a5d115d3b1b150d76e",
"body": "Includes transpiled JS/TS, and Typescript declaration files (typings).\n\n[skip ci]",
"is_bot": false,
"headline": "Bundled output for commit 942d5b53be5bd08b4e76df384ba10b246107d191",
"author_name": "flarum-bot",
"author_login": "flarum-bot",
"committed_at": "2025-11-05T09:59:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "942d5b53be5bd08b4e76df384ba10b246107d191",
"body": "* feat: implement poll group\n\n* Apply fixes from StyleCI\n\n* chore: add isolation again for tests\n\n* feat: implement saving event for poll group\n\n* Apply fixes from StyleCI\n\n* fix: pass data to create poll command\n\n* feat: add support for associating polls with poll groups\n\n* Apply fixes from StyleCI\n[…]\nup none static\n\n---------\n\nCo-authored-by: StyleCI Bot <bot@styleci.io>\nCo-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>\nCo-authored-by: Gianni Guida <gianni.guida@glowingblue.com>",
"is_bot": false,
"headline": "feat: implement PollGroup (#108)",
"author_name": "Simon",
"author_login": "novacuum",
"committed_at": "2025-11-05T09:58:38Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "6ab407d62e9cd955b549110c0bc50804b6e721da",
"body": "Includes transpiled JS/TS, and Typescript declaration files (typings).\n\n[skip ci]",
"is_bot": false,
"headline": "Bundled output for commit cf6c80bc43b00ea556dc2b33ef1f488c918d59ab",
"author_name": "flarum-bot",
"author_login": "flarum-bot",
"committed_at": "2025-10-03T08:24:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cf6c80bc43b00ea556dc2b33ef1f488c918d59ab",
"body": "* feat: add loading indicator to PollShowcase while loading state\n\n* chore: increase size of loading indicator\n\n---------\n\nCo-authored-by: Davide Iadeluca <davide.iadeluca@glowingblue.com>",
"is_bot": false,
"headline": "feat: add loading indicator to PollShowcase while loading state (#109)",
"author_name": "Gianni Guida",
"author_login": "gianniguida",
"committed_at": "2025-10-03T08:23:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cf74125dd700f564ab639731cb75d247c0f7854e",
"body": "Includes transpiled JS/TS, and Typescript declaration files (typings).\n\n[skip ci]",
"is_bot": false,
"headline": "Bundled output for commit 453130274952e7a3e0b442baa8ed31fd84951ab3",
"author_name": "flarum-bot",
"author_login": "flarum-bot",
"committed_at": "2025-10-03T08:18:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "453130274952e7a3e0b442baa8ed31fd84951ab3",
"body": "Allows for easier extending / conditional logic",
"is_bot": false,
"headline": "feat: add poll to `app.current` (#112)",
"author_name": "Davide Iadeluca",
"author_login": "DavideIadeluca",
"committed_at": "2025-10-03T08:17:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3628f4bdcfbc1c1adedf3ddf847a2584019e05d2",
"body": "Includes transpiled JS/TS, and Typescript declaration files (typings).\n\n[skip ci]",
"is_bot": false,
"headline": "Bundled output for commit 0ba0f3ab230e9c216eb9aa8e1df9178872c5db04",
"author_name": "flarum-bot",
"author_login": "flarum-bot",
"committed_at": "2025-04-23T14:29:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0ba0f3ab230e9c216eb9aa8e1df9178872c5db04",
"body": "* fix: remove start discussion button from polls page\n\n* Apply fixes from StyleCI\n\n---------\n\nCo-authored-by: StyleCI Bot <bot@styleci.io>",
"is_bot": false,
"headline": "fix: remove start discussion button from polls page (#107)",
"author_name": "Davide Iadeluca",
"author_login": "DavideIadeluca",
"committed_at": "2025-04-23T14:28:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6f5079f8cd98092eb42f21ebb663aad9eeab9a69",
"body": "* chore: add serializer checks\n\n* Apply fixes from StyleCI\n\n* fix: add extra sanity check\n\n---------\n\nCo-authored-by: StyleCI Bot <bot@styleci.io>",
"is_bot": false,
"headline": "chore: add serializer checks (#105)",
"author_name": "Davide Iadeluca",
"author_login": "DavideIadeluca",
"committed_at": "2025-03-17T05:54:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2bea099eef013a0bef52a965b3205a20fbb67196",
"body": "Includes transpiled JS/TS, and Typescript declaration files (typings).\n\n[skip ci]",
"is_bot": false,
"headline": "Bundled output for commit 0a23d6eb937d9db3645aca4b4128fac62789ac4b",
"author_name": "flarum-bot",
"author_login": "flarum-bot",
"committed_at": "2025-01-22T11:57:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0a23d6eb937d9db3645aca4b4128fac62789ac4b",
"body": "* feat: show total vote count in the footer.\r\nAdditionally hide max vote info once poll is ended or voted.\r\n\r\n* style: use icon fa-poll icon instead of fa-chart-bar",
"is_bot": false,
"headline": "feat: show total vote count in the footer. (#104)",
"author_name": "Gianni Guida",
"author_login": "gianniguida",
"committed_at": "2025-01-22T11:56:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a788a5e8ed15ca297bdf2b8f7e168ac6773352c9",
"body": "Includes transpiled JS/TS, and Typescript declaration files (typings).\n\n[skip ci]",
"is_bot": false,
"headline": "Bundled output for commit 9775b978c575573082a47a1ea39220255fa87db3",
"author_name": "flarum-bot",
"author_login": "flarum-bot",
"committed_at": "2024-12-09T10:44:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9775b978c575573082a47a1ea39220255fa87db3",
"body": "* feat: votes always visible to poll author\r\n\r\n* Apply fixes from StyleCI\r\n\r\n---------\r\n\r\nCo-authored-by: StyleCI Bot <bot@styleci.io>",
"is_bot": false,
"headline": "feat: votes always visible to poll author (#103)",
"author_name": "IanM",
"author_login": "imorland",
"committed_at": "2024-12-09T10:43:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "de5680cb95cd5655ff0934e6fac7a38c7c8ad0cf",
"body": "* fix: cannot vote when do not have the permission to change votes\r\n\r\n* fix mistake in the comment",
"is_bot": false,
"headline": "fix: cannot vote when do not have the permission to change votes (#102)",
"author_name": "Messy Ghost",
"author_login": "MessyGhost",
"committed_at": "2024-12-09T09:38:32Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9d30e39a01bd420e3a37985849699f2c010e3611",
"body": "Includes transpiled JS/TS, and Typescript declaration files (typings).\n\n[skip ci]",
"is_bot": false,
"headline": "Bundled output for commit 4c892b1dcfdb27267dce7fd410a83b8f53fd32ae",
"author_name": "flarum-bot",
"author_login": "flarum-bot",
"committed_at": "2024-10-28T22:02:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4c892b1dcfdb27267dce7fd410a83b8f53fd32ae",
"body": null,
"is_bot": false,
"headline": "import Post",
"author_name": "IanM",
"author_login": "imorland",
"committed_at": "2024-10-28T22:01:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a18c87d8c2f3641e0a65399744dab648212c447c",
"body": "Includes transpiled JS/TS, and Typescript declaration files (typings).\n\n[skip ci]",
"is_bot": false,
"headline": "Bundled output for commit e676131f5e082fcaf4771672a766472fe462a360",
"author_name": "flarum-bot",
"author_login": "flarum-bot",
"committed_at": "2024-10-23T14:12:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e676131f5e082fcaf4771672a766472fe462a360",
"body": "* fix some ts types\r\n\r\n* another one\r\n\r\n* chore: format",
"is_bot": false,
"headline": "chore: fix some ts types (#101)",
"author_name": "IanM",
"author_login": "imorland",
"committed_at": "2024-10-23T14:11:32Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c2db9fafd2cffb2155513759557c620b467e7148",
"body": "Includes transpiled JS/TS, and Typescript declaration files (typings).\n\n[skip ci]",
"is_bot": false,
"headline": "Bundled output for commit 515840f02ee388f6eead4ac4048bc3a61f06a44d",
"author_name": "flarum-bot",
"author_login": "flarum-bot",
"committed_at": "2024-10-22T19:17:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "515840f02ee388f6eead4ac4048bc3a61f06a44d",
"body": null,
"is_bot": false,
"headline": "chore: bump js deps",
"author_name": "IanM",
"author_login": "imorland",
"committed_at": "2024-10-22T19:16:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ddf35a0ca64c7a8c68e283de8ab7a94891a76203",
"body": null,
"is_bot": false,
"headline": "chore: cleanup comments",
"author_name": "IanM",
"author_login": "imorland",
"committed_at": "2024-10-22T19:16:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6807f6496df941477e05c769443f961d8d4f34b0",
"body": "Includes transpiled JS/TS, and Typescript declaration files (typings).\n\n[skip ci]",
"is_bot": false,
"headline": "Bundled output for commit 4bf1113fd1002b48a134886e52679c671c665d6c",
"author_name": "flarum-bot",
"author_login": "flarum-bot",
"committed_at": "2024-10-17T20:07:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4bf1113fd1002b48a134886e52679c671c665d6c",
"body": null,
"is_bot": false,
"headline": "chore: refactor settings, make extensible (#100)",
"author_name": "IanM",
"author_login": "imorland",
"committed_at": "2024-10-17T20:06:42Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e859ea4711db67b0e432b9923973dde469bcc5a5",
"body": "Includes transpiled JS/TS, and Typescript declaration files (typings).\n\n[skip ci]",
"is_bot": false,
"headline": "Bundled output for commit c86833eda11895f2766fff589be07292c96c2cc7",
"author_name": "flarum-bot",
"author_login": "flarum-bot",
"committed_at": "2024-10-07T12:28:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c86833eda11895f2766fff589be07292c96c2cc7",
"body": null,
"is_bot": false,
"headline": "feat: allow extending the includes used by PollListState (#99)",
"author_name": "IanM",
"author_login": "imorland",
"committed_at": "2024-10-07T12:27:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "452deac74363dca4a893b89d413583ea6dad5413",
"body": "Includes transpiled JS/TS, and Typescript declaration files (typings).\n\n[skip ci]",
"is_bot": false,
"headline": "Bundled output for commit 7181a694187033954ca00fefe67a10302826a4fb",
"author_name": "flarum-bot",
"author_login": "flarum-bot",
"committed_at": "2024-10-07T11:07:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7181a694187033954ca00fefe67a10302826a4fb",
"body": "… party extensions (#98)\n\n* feat: make it possible to modify the poll title and subtitle from 3rd party extensions\r\n\r\n* export additional components",
"is_bot": false,
"headline": "feat: make it possible to modify the poll title and subtitle from 3rd…",
"author_name": "IanM",
"author_login": "imorland",
"committed_at": "2024-10-07T11:06:28Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "58cdf7aad6d29e7c59071cbb6f588c297fe4f837",
"body": null,
"is_bot": false,
"headline": "chore: add codeowners",
"author_name": "IanM",
"author_login": "imorland",
"committed_at": "2024-10-04T08:50:03Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cfa40bd86dbbe4f2da5cbea774e134c23e6fec43",
"body": "…#96)\n\n* fix: api allows user to change vote when they should not be able to\r\n\r\n* Apply fixes from StyleCI\r\n\r\n* fix: phpstan\r\n\r\n* more test scenarios\r\n\r\n* Apply fixes from StyleCI\r\n\r\n* fix: phpstan\r\n\r\n* chore: remove debug statements\r\n\r\n* chore: return type\r\n\r\n---------\r\n\r\nCo-authored-by: StyleCI Bot <bot@styleci.io>",
"is_bot": false,
"headline": "fix: api allows user to change vote when they should not be able to (…",
"author_name": "IanM",
"author_login": "imorland",
"committed_at": "2024-09-16T15:03:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bdb6d525e0b37a0b5b9dcf73c052c0b572a70763",
"body": "Includes transpiled JS/TS, and Typescript declaration files (typings).\n\n[skip ci]",
"is_bot": false,
"headline": "Bundled output for commit 1a5f4781f2b926a24e90e44f0548cd90a5b07f0a",
"author_name": "flarum-bot",
"author_login": "flarum-bot",
"committed_at": "2024-07-30T09:00:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1a5f4781f2b926a24e90e44f0548cd90a5b07f0a",
"body": "* chore: remove unused dev dependency\r\n\r\n* chore: remove console logs",
"is_bot": false,
"headline": "Minor Cleanup (#95)",
"author_name": "Davide Iadeluca",
"author_login": "DavideIadeluca",
"committed_at": "2024-07-30T08:59:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "40af3e8c41fc8b414c6682d263f0d49774db7a65",
"body": "* fix: deleting images does not have any permission checks\r\n\r\n* add tests for poll image deletion\r\n\r\n* Apply fixes from StyleCI\r\n\r\n* fix test due to no file on fileystem\r\n\r\n---------\r\n\r\nCo-authored-by: StyleCI Bot <bot@styleci.io>",
"is_bot": false,
"headline": "fix: deleting images does not have any permission checks (#94)",
"author_name": "IanM",
"author_login": "imorland",
"committed_at": "2024-07-30T08:48:28Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2a6e199a6cf08ed39ea4af7c7a429985c666c188",
"body": "Includes transpiled JS/TS, and Typescript declaration files (typings).\n\n[skip ci]",
"is_bot": false,
"headline": "Bundled output for commit a43ccc84dfbcb0905a87c90a195ed6a483b0b60c",
"author_name": "flarum-bot",
"author_login": "flarum-bot",
"committed_at": "2024-07-07T14:27:42Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a43ccc84dfbcb0905a87c90a195ed6a483b0b60c",
"body": null,
"is_bot": false,
"headline": "Update JS dependencies",
"author_name": "David Sevilla Martin",
"author_login": "dsevillamartin",
"committed_at": "2024-07-07T14:27:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cb48551079ceea34d2cb5737aebe4957ef8c2be5",
"body": null,
"is_bot": false,
"headline": "Fix poll answer image URLs not saving",
"author_name": "David Sevilla Martin",
"author_login": "dsevillamartin",
"committed_at": "2024-07-07T14:25:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ef998b5e7eb3cfa53289a2b5d178697c31d38374",
"body": "`EventEmitter` Flarum util was added then. The extension doesn't work in previous Flarum versions.",
"is_bot": false,
"headline": "Require Flarum ^1.8.0",
"author_name": "David Sevilla Martin",
"author_login": "dsevillamartin",
"committed_at": "2024-06-08T19:47:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fba280cf330d6a55761ccca9e3fd1dd6c8d9e7b0",
"body": null,
"is_bot": false,
"headline": "fix phpstan issue in UploadPollImageController",
"author_name": "David Sevilla Martin",
"author_login": "dsevillamartin",
"committed_at": "2024-05-22T02:38:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6db3cd298a414b34c4d3a192d7a607b710535771",
"body": null,
"is_bot": false,
"headline": "build js",
"author_name": "David Sevilla Martin",
"author_login": "dsevillamartin",
"committed_at": "2024-05-20T23:40:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "db8d93f45ee488c0e96e04d65da2db581ed1b4a0",
"body": null,
"is_bot": false,
"headline": "lazy load poll & option images",
"author_name": "David Sevilla Martin",
"author_login": "dsevillamartin",
"committed_at": "2024-05-20T23:40:32Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "474c745a9e943f8c6c220595048bd891ecbbd2e2",
"body": "Includes transpiled JS/TS, and Typescript declaration files (typings).\n\n[skip ci]",
"is_bot": false,
"headline": "Bundled output for commit 082b280f3aafed75b2903cb1e71f8f7c5f3d7cb4",
"author_name": "flarum-bot",
"author_login": "flarum-bot",
"committed_at": "2024-05-20T23:35:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "082b280f3aafed75b2903cb1e71f8f7c5f3d7cb4",
"body": null,
"is_bot": false,
"headline": "Always allow use of image urls, even with upload perm",
"author_name": "David Sevilla Martin",
"author_login": "dsevillamartin",
"committed_at": "2024-05-20T23:34:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "99c6d0d8d7476a1112d5afb4194bf04a2b02a0bb",
"body": "…ng back image URL inputs",
"is_bot": false,
"headline": "Add permissions and settings to disable & prevent image uploads + bri…",
"author_name": "David Sevilla Martin",
"author_login": "dsevillamartin",
"committed_at": "2024-05-20T23:20:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "54753a8140f719ea1e8e76dcf52d490db444d703",
"body": null,
"is_bot": false,
"headline": "only check if user can edit poll for existing polls!",
"author_name": "David Sevilla Martin",
"author_login": "dsevillamartin",
"committed_at": "2024-05-20T21:55:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0c344b532ecfbea9203f0a9c81cc95d5d24cc760",
"body": "Includes transpiled JS/TS, and Typescript declaration files (typings).\n\n[skip ci]",
"is_bot": false,
"headline": "Bundled output for commit 054cdb29ca6102495678004fd8361e0d9719ca1c",
"author_name": "flarum-bot",
"author_login": "flarum-bot",
"committed_at": "2024-05-20T21:38:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "054cdb29ca6102495678004fd8361e0d9719ca1c",
"body": "… for them",
"is_bot": false,
"headline": "resolve issues with non-global post polls & switch back to old layout…",
"author_name": "David Sevilla Martin",
"author_login": "dsevillamartin",
"committed_at": "2024-05-20T21:35:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5acd5c7d1d4d117f6ca22710f52e858a95087650",
"body": "Includes transpiled JS/TS, and Typescript declaration files (typings).\n\n[skip ci]",
"is_bot": false,
"headline": "Bundled output for commit 269bffc79d345e88a0aa67fe93bc7b42504ece78",
"author_name": "flarum-bot",
"author_login": "flarum-bot",
"committed_at": "2024-05-07T07:45:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "269bffc79d345e88a0aa67fe93bc7b42504ece78",
"body": "* chore: ts\r\n\r\n* add nav item\r\n\r\n* wip: add polls route, begin to setup state, controls, etc\r\n\r\n* Apply fixes from StyleCI\r\n\r\n* fix: some model props incorrect\r\n\r\n* chore: format\r\n\r\n* feat: list polls controller\r\n\r\n* Apply fixes from StyleCI\r\n\r\n* fix: return type\r\n\r\n* chore: ts-ignore\r\n\r\n* use sort\r\n[…]\n-by: Davide Iadeluca <davide.iadeluca@glowingblue.com>\r\nCo-authored-by: Gianni Guida <gianni.guida@glowingblue.com>\r\nCo-authored-by: Davide Iadeluca <146922689+DavideIadeluca@users.noreply.github.com>",
"is_bot": false,
"headline": "wip: global polls (#86)",
"author_name": "IanM",
"author_login": "imorland",
"committed_at": "2024-05-07T07:44:39Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "7365c678c5058b9cd7ae717f6a99e1639f9586a6",
"body": "* chore: forum serializer test\r\n\r\n* Apply fixes from StyleCI\r\n\r\n---------\r\n\r\nCo-authored-by: StyleCI Bot <bot@styleci.io>",
"is_bot": false,
"headline": "chore: add tests for forum serializer props (#85)",
"author_name": "IanM",
"author_login": "imorland",
"committed_at": "2024-01-29T14:01:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f4600733ba63f975fb0bfae7286e12de7f02e1a0",
"body": "* chore: cleanup extend, create serializer mutators\r\n\r\n* Apply fixes from StyleCI\r\n\r\n---------\r\n\r\nCo-authored-by: StyleCI Bot <bot@styleci.io>",
"is_bot": false,
"headline": "chore: cleanup extend, create serializer mutators (#84)",
"author_name": "IanM",
"author_login": "imorland",
"committed_at": "2024-01-29T11:46:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9acbd740ae7f4cb65b0a98a2790f8a69dac98403",
"body": null,
"is_bot": false,
"headline": "Chore: include discuss link",
"author_name": "IanM",
"author_login": "imorland",
"committed_at": "2024-01-29T11:10:32Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a2af1153e279c093139717a26044499ea2eaf6ce",
"body": null,
"is_bot": false,
"headline": "chore: use 1.x workflows",
"author_name": "IanM",
"author_login": "imorland",
"committed_at": "2024-01-29T11:00:51Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "effb511445c77fdcbf2f27644c5122f193e31457",
"body": "Includes transpiled JS/TS, and Typescript declaration files (typings).\n\n[skip ci]",
"is_bot": false,
"headline": "Bundled output for commit 889bd8dc3bee821932fdd44f9ce4203cf29d300f",
"author_name": "flarum-bot",
"author_login": "flarum-bot",
"committed_at": "2023-11-12T17:24:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "889bd8dc3bee821932fdd44f9ce4203cf29d300f",
"body": "* chore: enable phpstan\r\n\r\n* fix: phpstan errors\r\n\r\n* Apply fixes from StyleCI\r\n\r\n* chore: npm audit fix\r\n\r\n---------\r\n\r\nCo-authored-by: StyleCI Bot <bot@styleci.io>",
"is_bot": false,
"headline": "chore: enable phpstan (#83)",
"author_name": "IanM",
"author_login": "imorland",
"committed_at": "2023-11-12T17:23:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "aa4f010e42b03fb138f6da286efacbd949878f45",
"body": "Includes transpiled JS/TS.\n\n[skip ci]",
"is_bot": false,
"headline": "Bundled output for commit 59be77c8635aed71ff5771efbe537a7edf9bf246",
"author_name": "flarum-bot",
"author_login": "flarum-bot",
"committed_at": "2023-07-25T01:47:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "59be77c8635aed71ff5771efbe537a7edf9bf246",
"body": "* Fix CSS targeting voted options\r\n* Use mix-blend-mode to make option text more readable\r\n* Add setting to toggle color blending\r\n* Adjust some colors to use Flarum CSS variables instead of hardcoded",
"is_bot": false,
"headline": "Improve readability of options text & distinct voted options (#79)",
"author_name": "David Sevilla Martin",
"author_login": "dsevillamartin",
"committed_at": "2023-07-25T01:47:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7061c24caa37fb0763f8c334d88a55e7a70144cd",
"body": "Includes transpiled JS/TS.\n\n[skip ci]",
"is_bot": false,
"headline": "Bundled output for commit b326cff7d63f195be57d19abdaaf3908ee7d147a",
"author_name": "flarum-bot",
"author_login": "flarum-bot",
"committed_at": "2023-07-21T21:06:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b326cff7d63f195be57d19abdaaf3908ee7d147a",
"body": "* Make help text sticky\r\n* Add 'vote' button for multiple votes at once w/o vote change perm\r\n* Add poll option to prevent users from changing their vote",
"is_bot": false,
"headline": "Allow voting for multiple options without change perm (#78)",
"author_name": "David Sevilla Martin",
"author_login": "dsevillamartin",
"committed_at": "2023-07-21T21:06:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "19f4708ed315485be5ab85a8114c8a2521b32696",
"body": null,
"is_bot": false,
"headline": "Prevent seeing voters list if user cannot see votes count",
"author_name": "David Sevilla Martin",
"author_login": "dsevillamartin",
"committed_at": "2023-07-15T22:19:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "39ff9ff23b7fc5d41af8a03e9f15dafcdc849196",
"body": "…rise",
"is_bot": false,
"headline": "Disable extra poll columns deletion migration just in case problems a…",
"author_name": "David Sevilla Martin",
"author_login": "dsevillamartin",
"committed_at": "2023-07-15T22:15:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4e0a837f344ff11bf5eac6e650ff424edf72f2e0",
"body": "Includes transpiled JS/TS.\n\n[skip ci]",
"is_bot": false,
"headline": "Bundled output for commit 7eb6264d3e9d6f6459c53465a53bd707a0203a0c",
"author_name": "flarum-bot",
"author_login": "flarum-bot",
"committed_at": "2023-07-15T22:12:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7eb6264d3e9d6f6459c53465a53bd707a0203a0c",
"body": null,
"is_bot": false,
"headline": "Apply fixes from StyleCI",
"author_name": "StyleCI Bot",
"author_login": "StyleCIBot",
"committed_at": "2023-07-15T22:12:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6737cf6ca4857bba59a71efff43d8871836f5d57",
"body": null,
"is_bot": false,
"headline": "Update JS dependencies",
"author_name": "David Sevilla Martin",
"author_login": "dsevillamartin",
"committed_at": "2023-07-15T22:11:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ec4aa1aea7f543d8306c9c35ccf5594927373622",
"body": null,
"is_bot": false,
"headline": "Fix poll end date when editing poll through composer modal",
"author_name": "David Sevilla Martin",
"author_login": "dsevillamartin",
"committed_at": "2023-07-15T22:08:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9ee486582a146d54a8898a7123df7638e3d7ce67",
"body": null,
"is_bot": false,
"headline": "Set max of 'endDate' and perform validation during edit",
"author_name": "David Sevilla Martin",
"author_login": "dsevillamartin",
"committed_at": "2023-07-15T22:08:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "926bd7c2fec335c236e6ca0de69fc214fc736019",
"body": "Fixes #2",
"is_bot": false,
"headline": "Add 'hide votes' option until poll has ended",
"author_name": "David Sevilla Martin",
"author_login": "dsevillamartin",
"committed_at": "2023-07-15T22:08:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fb50043a44c4a6f2952943daec0c46d2ae158400",
"body": null,
"is_bot": false,
"headline": "Change Poll model & editing to use new settings column",
"author_name": "David Sevilla Martin",
"author_login": "dsevillamartin",
"committed_at": "2023-07-15T22:08:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "77f8c7ee50174fe012560fca476ac97c96f28e5b",
"body": null,
"is_bot": false,
"headline": "Create migrations to transfer data to single `polls.settings` column",
"author_name": "David Sevilla Martin",
"author_login": "dsevillamartin",
"committed_at": "2023-07-15T22:08:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "91aeca5bd0d04e55d222d63774e00e8786f8b937",
"body": "Fixes #70",
"is_bot": false,
"headline": "Add setting to change max options allowed in polls",
"author_name": "David Sevilla Martin",
"author_login": "dsevillamartin",
"committed_at": "2023-07-14T16:38:26Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8e7cfd8dadc4fe94cefc42918ffd08bcc73424a3",
"body": "Includes transpiled JS/TS.\n\n[skip ci]",
"is_bot": false,
"headline": "Bundled output for commit 533b54bd0053aa518cf29323feaaaf0632ad785a",
"author_name": "flarum-bot",
"author_login": "flarum-bot",
"committed_at": "2023-07-12T15:44:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "533b54bd0053aa518cf29323feaaaf0632ad785a",
"body": "* Move voters button next to heading & fix no permission error after poll ends\r\n\r\n* Create endpoint for new poll to add to existing post (refs #67, #16)\r\n\r\n* Drop 'newPollVote' websocket message (fixes #38)\r\n\r\n* Remove deprecated single vote API endpoint\r\n\r\n* Drop ReFlar/polls database compatibility\n[…]\ntion\r\n\r\n* Fix check for being able to start poll in non-existing post\r\n\r\n* Fix frontend not allowing clearing existing poll's end date\r\n\r\n* Separate edit permission into own polls & polls in own posts",
"is_bot": false,
"headline": "More features & breaking v2 changes (#74)",
"author_name": "David Sevilla Martin",
"author_login": "dsevillamartin",
"committed_at": "2023-07-12T15:41:21Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "1d54e7d33cd9d455942ce6e65dd33fa2d4a11995",
"body": "* Move poll relation from one per discussion to many per post\r\n\r\n* Rename permissions & add tag scoping to start, view results, and vote\r\n\r\n* Change error message to explicitly state the user cannot start a poll\r\n\r\n* Improve migrations - permissions delete on down, log deleted poll IDs\r\n\r\n* Split di\n[…]\nee check\r\n\r\nAdding/removing poll options still doesn't work, but that functionality is fixed in the follow-up PR #74\r\n\r\n* Always return 'voteCount' field in API response to properly update in frontend",
"is_bot": false,
"headline": "Move posts to polls (#73)",
"author_name": "David Sevilla Martin",
"author_login": "dsevillamartin",
"committed_at": "2023-07-12T15:21:04Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "9e99d23396cb1fbff62cd81fc6f99e300a622ab2",
"body": null,
"is_bot": false,
"headline": "Replace 'flatpickr' with 'datetime-local' input (#72)",
"author_name": "David Sevilla Martin",
"author_login": "dsevillamartin",
"committed_at": "2023-07-06T14:11:42Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "64b8fdb625576a8d41266f0a4e09c574e22320fa",
"body": "Includes transpiled JS/TS.\n\n[skip ci]",
"is_bot": false,
"headline": "Bundled output for commit 47aa7212bced439d79c07c53beb9a52d8f10dcba",
"author_name": "flarum-bot",
"author_login": "flarum-bot",
"committed_at": "2023-06-21T00:25:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "47aa7212bced439d79c07c53beb9a52d8f10dcba",
"body": "* Convert `float` to `grid` for options list and `flex` for the options themselves\r\n* Fix duplicate timing message when the poll timer has ended\r\n* Load votes for votes modal after opening, instead of before\r\n* Improve layout margin & image positioning\r\n* Use grid for voters list in modal",
"is_bot": false,
"headline": "UI & UX improvements (#71)",
"author_name": "David Sevilla Martin",
"author_login": "dsevillamartin",
"committed_at": "2023-06-21T00:25:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d3fc89ccfc38be11d3fb0f5579c476e23d3389a4",
"body": "Includes transpiled JS/TS.\n\n[skip ci]",
"is_bot": false,
"headline": "Bundled output for commit 57158ccb07b2523279bf1da1122ec81a94fa442b",
"author_name": "flarum-bot",
"author_login": "flarum-bot",
"committed_at": "2023-06-14T15:54:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "57158ccb07b2523279bf1da1122ec81a94fa442b",
"body": null,
"is_bot": false,
"headline": "Fix poll creation not saving multiple votes or max votes options",
"author_name": "David Sevilla Martin",
"author_login": "dsevillamartin",
"committed_at": "2023-06-14T15:53:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "361d6b1e1ef79fc87eb016ccc3e85838ec07c996",
"body": "Includes transpiled JS/TS.\n\n[skip ci]",
"is_bot": false,
"headline": "Bundled output for commit fb2ccf90d0b1e0edcf1e48f729d60aac1f9a9c52",
"author_name": "flarum-bot",
"author_login": "flarum-bot",
"committed_at": "2023-06-06T15:00:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fb2ccf90d0b1e0edcf1e48f729d60aac1f9a9c52",
"body": "* Add option for allowing multiple option votes from users\r\n* Add option for max votes allowed per user if the poll allows multiple option votes\r\n* Reorganize help section display to always have icons and show multiple instances, plus max votes\r\n* Creates new API endpoint due to the inability to adapt the existing one without breaking changes\r\n* Reduce amount of database queries when voting",
"is_bot": false,
"headline": "Add an option for polls to allow users to vote for multiple items (#69)",
"author_name": "David Sevilla Martin",
"author_login": "dsevillamartin",
"committed_at": "2023-06-06T14:59:42Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "04ebb189491834a7132fca94e41a8f8fcad35062",
"body": null,
"is_bot": false,
"headline": "Update build.yml",
"author_name": "IanM",
"author_login": "imorland",
"committed_at": "2023-03-15T09:05:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b18752167b2ce366713e601879c4fcb6ff9541a0",
"body": "Bumps [webpack](https://github.com/webpack/webpack) from 5.75.0 to 5.76.0.\r\n- [Release notes](https://github.com/webpack/webpack/releases)\r\n- [Commits](https://github.com/webpack/webpack/compare/v5.75.0...v5.76.0)\r\n\r\n---\r\nupdated-dependencies:\r\n- dependency-name: webpack\r\n dependency-type: direct:production\r\n...\r\n\r\nSigned-off-by: dependabot[bot] <support@github.com>\r\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "Bump webpack from 5.75.0 to 5.76.0 in /js (#66)",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2023-03-15T09:03:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7b4e6fd80020239454a27fc37e4eee83eea6761d",
"body": "Bumps [json5](https://github.com/json5/json5) from 2.2.1 to 2.2.3.\r\n- [Release notes](https://github.com/json5/json5/releases)\r\n- [Changelog](https://github.com/json5/json5/blob/main/CHANGELOG.md)\r\n- [Commits](https://github.com/json5/json5/compare/v2.2.1...v2.2.3)\r\n\r\n---\r\nupdated-dependencies:\r\n- dependency-name: json5\r\n dependency-type: indirect\r\n...\r\n\r\nSigned-off-by: dependabot[bot] <support@github.com>\r\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "Bump json5 from 2.2.1 to 2.2.3 in /js (#65)",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2023-03-15T09:03:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "36e87a6c0484960bd4328bec25babd179e3c2f0a",
"body": null,
"is_bot": false,
"headline": "Update dependencies",
"author_name": "Clark Winkelmann",
"author_login": "clarkwinkelmann",
"committed_at": "2022-11-21T15:52:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "846a869640d3d0d8bb3131a59c7dd158b8b3048f",
"body": "Includes transpiled JS/TS.\n\n[skip ci]",
"is_bot": false,
"headline": "Bundled output for commit 08c34356019583225dfea9e0a69e0c57ae4ce1f6",
"author_name": "flarum-bot",
"author_login": "flarum-bot",
"committed_at": "2022-11-21T15:50:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "08c34356019583225dfea9e0a69e0c57ae4ce1f6",
"body": null,
"is_bot": false,
"headline": "Option images and more extensibility (#62)",
"author_name": "Clark Winkelmann",
"author_login": "clarkwinkelmann",
"committed_at": "2022-11-21T15:50:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2589475de3f1a8a8f7578f4a038b0bc6d19ef909",
"body": "Includes transpiled JS/TS.\n\n[skip ci]",
"is_bot": false,
"headline": "Bundled output for commit 315a63f090214d95f929b4b92ba12d07a947cb99",
"author_name": "flarum-bot",
"author_login": "flarum-bot",
"committed_at": "2022-10-09T01:57:08Z",
"body_truncated": false,
"is_coding_agent": false
}
],
"releases_count": 51,
"commits_last_year": 21,
"latest_release_at": "2026-05-21T21:43:44Z",
"latest_release_tag": "2.3.4",
"releases_from_tags": false,
"days_since_last_push": 0,
"active_weeks_last_year": 9,
"days_since_latest_release": 62,
"mean_days_between_releases": 25.6
},
"community": {
"has_readme": true,
"has_license": true,
"has_description": true,
"has_contributing": false,
"health_percentage": 62,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": true
},
"ecosystem": {
"packages": [
{
"name": "fof/polls",
"exists": true,
"license": "MIT",
"keywords": [
"flarum"
],
"ecosystem": "packagist",
"matches_repo": true,
"registry_url": "https://packagist.org/packages/fof/polls",
"is_deprecated": false,
"latest_version": "3.0.0-beta.4",
"repository_url": "https://github.com/FriendsOfFlarum/polls",
"versions_count": 89,
"total_downloads": 136264,
"dependents_count": 8,
"deprecation_note": null,
"maintainers_count": null,
"monthly_downloads": 3578,
"first_published_at": null,
"latest_published_at": "2026-05-21T18:00:34Z",
"latest_version_yanked": null,
"days_since_latest_publish": 62
}
]
},
"popularity": {
"forks": 17,
"stars": 25,
"watchers": 3,
"fork_history": {
"days": [
{
"date": "2019-07-09",
"count": 1
},
{
"date": "2019-07-22",
"count": 1
},
{
"date": "2019-10-30",
"count": 1
},
{
"date": "2021-05-18",
"count": 1
},
{
"date": "2022-08-19",
"count": 1
},
{
"date": "2022-09-27",
"count": 1
},
{
"date": "2023-02-06",
"count": 1
},
{
"date": "2024-02-27",
"count": 1
},
{
"date": "2024-05-09",
"count": 1
},
{
"date": "2025-02-17",
"count": 2
},
{
"date": "2025-07-03",
"count": 1
},
{
"date": "2025-08-28",
"count": 1
},
{
"date": "2026-02-19",
"count": 1
},
{
"date": "2026-04-08",
"count": 1
},
{
"date": "2026-04-30",
"count": 1
},
{
"date": "2026-06-10",
"count": 1
}
],
"complete": true,
"collected": 17,
"total_forks": 17
},
"star_history": null,
"open_issues_and_prs": 13
},
"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": [
"js/tsconfig.json"
],
"toolchain_manifests": [],
"largest_source_bytes": 33110,
"source_files_sampled": 238,
"oversized_source_files": 0,
"agent_instruction_files": [],
"agent_instruction_max_bytes": null
},
"dependencies": {
"manifests": [
"composer.json",
"js/package.json"
],
"advisories": {
"error": null,
"scope": "repository_graph",
"source": "osv",
"findings": [
{
"name": "@babel/plugin-transform-modules-systemjs",
"direct": false,
"version": "7.29.0",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 8.2,
"advisory_ids": [
"GHSA-fv7c-fp4j-7gwp"
],
"fixed_version": "8.0.0-alpha.13",
"advisory_count": 1,
"oldest_advisory_days": 75
},
{
"name": "brace-expansion",
"direct": false,
"version": "1.1.11",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-3jxr-9vmj-r5cp",
"GHSA-f886-m6hf-6m8v",
"GHSA-v6h2-p8h4-qcjw"
],
"fixed_version": "5.0.7",
"advisory_count": 3,
"oldest_advisory_days": 408
},
{
"name": "brace-expansion",
"direct": false,
"version": "2.0.1",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-3jxr-9vmj-r5cp",
"GHSA-f886-m6hf-6m8v",
"GHSA-v6h2-p8h4-qcjw"
],
"fixed_version": "5.0.7",
"advisory_count": 3,
"oldest_advisory_days": 408
},
{
"name": "fast-uri",
"direct": false,
"version": "3.1.0",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-4c8g-83qw-93j6",
"GHSA-q3j6-qgpj-74h6",
"GHSA-v2hh-gcrm-f6hx",
"GHSA-v39h-62p7-jpjc"
],
"fixed_version": "4.1.1",
"advisory_count": 4,
"oldest_advisory_days": 75
},
{
"name": "form-data",
"direct": false,
"version": "4.0.5",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-hmw2-7cc7-3qxx"
],
"fixed_version": "4.0.6",
"advisory_count": 1,
"oldest_advisory_days": 37
},
{
"name": "js-yaml",
"direct": false,
"version": "3.14.2",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-52cp-r559-cp3m",
"GHSA-h67p-54hq-rp68"
],
"fixed_version": "4.3.0",
"advisory_count": 2,
"oldest_advisory_days": 37
},
{
"name": "js-yaml",
"direct": false,
"version": "4.1.1",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-52cp-r559-cp3m",
"GHSA-h67p-54hq-rp68"
],
"fixed_version": "4.3.0",
"advisory_count": 2,
"oldest_advisory_days": 37
},
{
"name": "lodash",
"direct": false,
"version": "4.17.21",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 8.1,
"advisory_ids": [
"GHSA-f23m-r3pf-42rh",
"GHSA-r5fr-rjxr-66jc",
"GHSA-xxjr-mmjv-4gpg"
],
"fixed_version": "4.18.0",
"advisory_count": 3,
"oldest_advisory_days": 182
},
{
"name": "minimatch",
"direct": false,
"version": "10.0.1",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-23c5-xmqv-rm74",
"GHSA-3ppc-4f35-3m26",
"GHSA-7r86-cg39-jmmj"
],
"fixed_version": "10.2.3",
"advisory_count": 3,
"oldest_advisory_days": 154
},
{
"name": "minimatch",
"direct": false,
"version": "3.1.2",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-23c5-xmqv-rm74",
"GHSA-3ppc-4f35-3m26",
"GHSA-7r86-cg39-jmmj"
],
"fixed_version": "10.2.3",
"advisory_count": 3,
"oldest_advisory_days": 154
},
{
"name": "picomatch",
"direct": false,
"version": "2.3.1",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-3v7f-55p6-f55p",
"GHSA-c2c7-rcm5-vvqj"
],
"fixed_version": "4.0.4",
"advisory_count": 2,
"oldest_advisory_days": 119
},
{
"name": "ws",
"direct": false,
"version": "7.5.10",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-96hv-2xvq-fx4p"
],
"fixed_version": "8.21.0",
"advisory_count": 1,
"oldest_advisory_days": 37
},
{
"name": "ws",
"direct": false,
"version": "8.20.0",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-58qx-3vcg-4xpx",
"GHSA-96hv-2xvq-fx4p"
],
"fixed_version": "8.21.0",
"advisory_count": 2,
"oldest_advisory_days": 65
},
{
"name": "@babel/runtime",
"direct": false,
"version": "7.26.0",
"severity": "moderate",
"ecosystem": "npm",
"cvss_score": 6.2,
"advisory_ids": [
"GHSA-968p-4wvh-cqc8"
],
"fixed_version": "8.0.0-alpha.17",
"advisory_count": 1,
"oldest_advisory_days": 498
},
{
"name": "ajv",
"direct": false,
"version": "6.12.6",
"severity": "moderate",
"ecosystem": "npm",
"cvss_score": 5.3,
"advisory_ids": [
"GHSA-2g4f-4pwh-qvx6"
],
"fixed_version": "8.18.0",
"advisory_count": 1,
"oldest_advisory_days": 161
},
{
"name": "@babel/core",
"direct": false,
"version": "7.29.0",
"severity": "low",
"ecosystem": "npm",
"cvss_score": 3.2,
"advisory_ids": [
"GHSA-4x5r-pxfx-6jf8"
],
"fixed_version": "8.0.0-rc.6",
"advisory_count": 1,
"oldest_advisory_days": 37
},
{
"name": "@tootallnate/once",
"direct": false,
"version": "2.0.0",
"severity": "low",
"ecosystem": "npm",
"cvss_score": 3.3,
"advisory_ids": [
"GHSA-vpq2-c234-7xj6"
],
"fixed_version": "3.0.1",
"advisory_count": 1,
"oldest_advisory_days": 142
}
],
"collected": true,
"malicious": [],
"truncated": false,
"by_severity": {
"low": 2,
"high": 13,
"moderate": 2
},
"advisory_count": 34,
"affected_count": 17,
"assessed_count": 677,
"malicious_count": 0,
"assessed_package": null,
"unassessed_count": 3,
"direct_affected_count": 0
},
"ecosystems": [
"npm",
"packagist"
],
"dependencies": [
{
"name": "flarum/core",
"manifest": "composer.json",
"ecosystem": "packagist",
"version_constraint": "^2.0.0"
}
],
"all_dependencies": {
"error": null,
"source": "github-sbom",
"packages": [
{
"name": "flarum/core",
"direct": true,
"version": null,
"ecosystem": "packagist"
},
{
"name": "@asamuzakjp/css-color",
"direct": false,
"version": "3.2.0",
"ecosystem": "npm"
},
{
"name": "@babel/code-frame",
"direct": false,
"version": "7.29.0",
"ecosystem": "npm"
},
{
"name": "@babel/compat-data",
"direct": false,
"version": "7.29.0",
"ecosystem": "npm"
},
{
"name": "@babel/core",
"direct": false,
"version": "7.29.0",
"ecosystem": "npm"
},
{
"name": "@babel/generator",
"direct": false,
"version": "7.29.1",
"ecosystem": "npm"
},
{
"name": "@babel/helper-annotate-as-pure",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/helper-annotate-as-pure",
"direct": false,
"version": "7.27.3",
"ecosystem": "npm"
},
{
"name": "@babel/helper-compilation-targets",
"direct": false,
"version": "7.28.6",
"ecosystem": "npm"
},
{
"name": "@babel/helper-create-class-features-plugin",
"direct": false,
"version": "7.28.6",
"ecosystem": "npm"
},
{
"name": "@babel/helper-create-regexp-features-plugin",
"direct": false,
"version": "7.26.3",
"ecosystem": "npm"
},
{
"name": "@babel/helper-create-regexp-features-plugin",
"direct": false,
"version": "7.28.5",
"ecosystem": "npm"
},
{
"name": "@babel/helper-define-polyfill-provider",
"direct": false,
"version": "0.6.8",
"ecosystem": "npm"
},
{
"name": "@babel/helper-globals",
"direct": false,
"version": "7.28.0",
"ecosystem": "npm"
},
{
"name": "@babel/helper-member-expression-to-functions",
"direct": false,
"version": "7.28.5",
"ecosystem": "npm"
},
{
"name": "@babel/helper-module-imports",
"direct": false,
"version": "7.28.6",
"ecosystem": "npm"
},
{
"name": "@babel/helper-module-transforms",
"direct": false,
"version": "7.28.6",
"ecosystem": "npm"
},
{
"name": "@babel/helper-optimise-call-expression",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/helper-plugin-utils",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/helper-plugin-utils",
"direct": false,
"version": "7.28.6",
"ecosystem": "npm"
},
{
"name": "@babel/helper-remap-async-to-generator",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/helper-replace-supers",
"direct": false,
"version": "7.28.6",
"ecosystem": "npm"
},
{
"name": "@babel/helper-skip-transparent-expression-wrappers",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/helper-string-parser",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/helper-string-parser",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/helper-validator-identifier",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/helper-validator-identifier",
"direct": false,
"version": "7.28.5",
"ecosystem": "npm"
},
{
"name": "@babel/helper-validator-option",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/helper-wrap-function",
"direct": false,
"version": "7.28.6",
"ecosystem": "npm"
},
{
"name": "@babel/helpers",
"direct": false,
"version": "7.29.2",
"ecosystem": "npm"
},
{
"name": "@babel/parser",
"direct": false,
"version": "7.29.2",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-bugfix-firefox-class-in-computed-class-key",
"direct": false,
"version": "7.28.5",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-bugfix-safari-class-field-initializer-scope",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly",
"direct": false,
"version": "7.28.6",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-proposal-private-property-in-object",
"direct": false,
"version": "7.21.0-placeholder-for-preset-env.2",
"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-assertions",
"direct": false,
"version": "7.28.6",
"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/plugin-syntax-unicode-sets-regex",
"direct": false,
"version": "7.18.6",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-arrow-functions",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-async-generator-functions",
"direct": false,
"version": "7.29.0",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-async-to-generator",
"direct": false,
"version": "7.28.6",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-block-scoped-functions",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-block-scoping",
"direct": false,
"version": "7.28.6",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-class-properties",
"direct": false,
"version": "7.28.6",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-class-static-block",
"direct": false,
"version": "7.28.6",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-classes",
"direct": false,
"version": "7.28.6",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-computed-properties",
"direct": false,
"version": "7.28.6",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-destructuring",
"direct": false,
"version": "7.28.5",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-dotall-regex",
"direct": false,
"version": "7.28.6",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-duplicate-keys",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-duplicate-named-capturing-groups-regex",
"direct": false,
"version": "7.29.0",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-dynamic-import",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-explicit-resource-management",
"direct": false,
"version": "7.28.6",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-exponentiation-operator",
"direct": false,
"version": "7.28.6",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-export-namespace-from",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-for-of",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-function-name",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-json-strings",
"direct": false,
"version": "7.28.6",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-literals",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-logical-assignment-operators",
"direct": false,
"version": "7.28.6",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-member-expression-literals",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-modules-amd",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-modules-commonjs",
"direct": false,
"version": "7.28.6",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-modules-systemjs",
"direct": false,
"version": "7.29.0",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-modules-umd",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-named-capturing-groups-regex",
"direct": false,
"version": "7.29.0",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-new-target",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-nullish-coalescing-operator",
"direct": false,
"version": "7.28.6",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-numeric-separator",
"direct": false,
"version": "7.28.6",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-object-assign",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-object-rest-spread",
"direct": false,
"version": "7.28.6",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-object-super",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-optional-catch-binding",
"direct": false,
"version": "7.28.6",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-optional-chaining",
"direct": false,
"version": "7.28.6",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-parameters",
"direct": false,
"version": "7.27.7",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-private-methods",
"direct": false,
"version": "7.28.6",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-private-property-in-object",
"direct": false,
"version": "7.28.6",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-property-literals",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-react-display-name",
"direct": false,
"version": "7.28.0",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-react-jsx",
"direct": false,
"version": "7.28.6",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-react-jsx-development",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-react-pure-annotations",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-regenerator",
"direct": false,
"version": "7.29.0",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-regexp-modifiers",
"direct": false,
"version": "7.28.6",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-reserved-words",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-runtime",
"direct": false,
"version": "7.29.0",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-shorthand-properties",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-spread",
"direct": false,
"version": "7.28.6",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-sticky-regex",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-template-literals",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-typeof-symbol",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-typescript",
"direct": false,
"version": "7.28.6",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-unicode-escapes",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-unicode-property-regex",
"direct": false,
"version": "7.28.6",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-unicode-regex",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-unicode-sets-regex",
"direct": false,
"version": "7.28.6",
"ecosystem": "npm"
},
{
"name": "@babel/preset-env",
"direct": false,
"version": "7.29.2",
"ecosystem": "npm"
},
{
"name": "@babel/preset-modules",
"direct": false,
"version": "0.1.6-no-external-plugins",
"ecosystem": "npm"
},
{
"name": "@babel/preset-react",
"direct": false,
"version": "7.28.5",
"ecosystem": "npm"
},
{
"name": "@babel/preset-typescript",
"direct": false,
"version": "7.28.5",
"ecosystem": "npm"
},
{
"name": "@babel/runtime",
"direct": false,
"version": "7.26.0",
"ecosystem": "npm"
},
{
"name": "@babel/runtime",
"direct": false,
"version": "7.29.2",
"ecosystem": "npm"
},
{
"name": "@babel/template",
"direct": false,
"version": "7.28.6",
"ecosystem": "npm"
},
{
"name": "@babel/traverse",
"direct": false,
"version": "7.29.0",
"ecosystem": "npm"
},
{
"name": "@babel/types",
"direct": false,
"version": "7.26.3",
"ecosystem": "npm"
},
{
"name": "@babel/types",
"direct": false,
"version": "7.29.0",
"ecosystem": "npm"
},
{
"name": "@bcoe/v8-coverage",
"direct": false,
"version": "0.2.3",
"ecosystem": "npm"
},
{
"name": "@colors/colors",
"direct": false,
"version": "1.5.0",
"ecosystem": "npm"
},
{
"name": "@csstools/color-helpers",
"direct": false,
"version": "5.1.0",
"ecosystem": "npm"
},
{
"name": "@csstools/css-calc",
"direct": false,
"version": "2.1.4",
"ecosystem": "npm"
},
{
"name": "@csstools/css-color-parser",
"direct": false,
"version": "3.1.0",
"ecosystem": "npm"
},
{
"name": "@csstools/css-parser-algorithms",
"direct": false,
"version": "3.0.5",
"ecosystem": "npm"
},
{
"name": "@csstools/css-tokenizer",
"direct": false,
"version": "3.0.4",
"ecosystem": "npm"
},
{
"name": "@discoveryjs/json-ext",
"direct": false,
"version": "0.5.7",
"ecosystem": "npm"
},
{
"name": "@flarum/jest-config",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "@flarum/prettier-config",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "@hypnosphi/create-react-context",
"direct": false,
"version": "0.3.1",
"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/gen-mapping",
"direct": false,
"version": "0.3.5",
"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/set-array",
"direct": false,
"version": "1.2.1",
"ecosystem": "npm"
},
{
"name": "@jridgewell/source-map",
"direct": false,
"version": "0.3.6",
"ecosystem": "npm"
},
{
"name": "@jridgewell/sourcemap-codec",
"direct": false,
"version": "1.5.0",
"ecosystem": "npm"
},
{
"name": "@jridgewell/sourcemap-codec",
"direct": false,
"version": "1.5.5",
"ecosystem": "npm"
},
{
"name": "@jridgewell/trace-mapping",
"direct": false,
"version": "0.3.25",
"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": "@polka/url",
"direct": false,
"version": "1.0.0-next.28",
"ecosystem": "npm"
},
{
"name": "@semantic-ui-react/event-stack",
"direct": false,
"version": "3.1.3",
"ecosystem": "npm"
},
{
"name": "@sinclair/typebox",
"direct": false,
"version": "0.27.10",
"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": "@stardust-ui/react-component-event-listener",
"direct": false,
"version": "0.38.0",
"ecosystem": "npm"
},
{
"name": "@stardust-ui/react-component-ref",
"direct": false,
"version": "0.38.0",
"ecosystem": "npm"
},
{
"name": "@tootallnate/once",
"direct": false,
"version": "2.0.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/eslint",
"direct": false,
"version": "9.6.1",
"ecosystem": "npm"
},
{
"name": "@types/eslint-scope",
"direct": false,
"version": "3.7.7",
"ecosystem": "npm"
},
{
"name": "@types/estree",
"direct": false,
"version": "1.0.6",
"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/jest",
"direct": false,
"version": "29.5.14",
"ecosystem": "npm"
},
{
"name": "@types/jquery",
"direct": false,
"version": "3.5.32",
"ecosystem": "npm"
},
{
"name": "@types/jsdom",
"direct": false,
"version": "20.0.1",
"ecosystem": "npm"
},
{
"name": "@types/json-schema",
"direct": false,
"version": "7.0.15",
"ecosystem": "npm"
},
{
"name": "@types/mithril",
"direct": false,
"version": "2.2.7",
"ecosystem": "npm"
},
{
"name": "@types/node",
"direct": false,
"version": "22.10.1",
"ecosystem": "npm"
},
{
"name": "@types/sizzle",
"direct": false,
"version": "2.3.9",
"ecosystem": "npm"
},
{
"name": "@types/stack-utils",
"direct": false,
"version": "2.0.3",
"ecosystem": "npm"
},
{
"name": "@types/throttle-debounce",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "@types/tough-cookie",
"direct": false,
"version": "4.0.5",
"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": "@webassemblyjs/ast",
"direct": false,
"version": "1.14.1",
"ecosystem": "npm"
},
{
"name": "@webassemblyjs/floating-point-hex-parser",
"direct": false,
"version": "1.13.2",
"ecosystem": "npm"
},
{
"name": "@webassemblyjs/helper-api-error",
"direct": false,
"version": "1.13.2",
"ecosystem": "npm"
},
{
"name": "@webassemblyjs/helper-buffer",
"direct": false,
"version": "1.14.1",
"ecosystem": "npm"
},
{
"name": "@webassemblyjs/helper-numbers",
"direct": false,
"version": "1.13.2",
"ecosystem": "npm"
},
{
"name": "@webassemblyjs/helper-wasm-bytecode",
"direct": false,
"version": "1.13.2",
"ecosystem": "npm"
},
{
"name": "@webassemblyjs/helper-wasm-section",
"direct": false,
"version": "1.14.1",
"ecosystem": "npm"
},
{
"name": "@webassemblyjs/ieee754",
"direct": false,
"version": "1.13.2",
"ecosystem": "npm"
},
{
"name": "@webassemblyjs/leb128",
"direct": false,
"version": "1.13.2",
"ecosystem": "npm"
},
{
"name": "@webassemblyjs/utf8",
"direct": false,
"version": "1.13.2",
"ecosystem": "npm"
},
{
"name": "@webassemblyjs/wasm-edit",
"direct": false,
"version": "1.14.1",
"ecosystem": "npm"
},
{
"name": "@webassemblyjs/wasm-gen",
"direct": false,
"version": "1.14.1",
"ecosystem": "npm"
},
{
"name": "@webassemblyjs/wasm-opt",
"direct": false,
"version": "1.14.1",
"ecosystem": "npm"
},
{
"name": "@webassemblyjs/wasm-parser",
"direct": false,
"version": "1.14.1",
"ecosystem": "npm"
},
{
"name": "@webassemblyjs/wast-printer",
"direct": false,
"version": "1.14.1",
"ecosystem": "npm"
},
{
"name": "@webpack-cli/configtest",
"direct": false,
"version": "1.2.0",
"ecosystem": "npm"
},
{
"name": "@webpack-cli/info",
"direct": false,
"version": "1.5.0",
"ecosystem": "npm"
},
{
"name": "@webpack-cli/serve",
"direct": false,
"version": "1.7.0",
"ecosystem": "npm"
},
{
"name": "@xtuc/ieee754",
"direct": false,
"version": "1.2.0",
"ecosystem": "npm"
},
{
"name": "@xtuc/long",
"direct": false,
"version": "4.2.2",
"ecosystem": "npm"
},
{
"name": "abab",
"direct": false,
"version": "2.0.6",
"ecosystem": "npm"
},
{
"name": "acorn",
"direct": false,
"version": "8.14.0",
"ecosystem": "npm"
},
{
"name": "acorn",
"direct": false,
"version": "8.16.0",
"ecosystem": "npm"
},
{
"name": "acorn-globals",
"direct": false,
"version": "7.0.1",
"ecosystem": "npm"
},
{
"name": "acorn-import-phases",
"direct": false,
"version": "1.0.4",
"ecosystem": "npm"
},
{
"name": "acorn-walk",
"direct": false,
"version": "8.3.4",
"ecosystem": "npm"
},
{
"name": "acorn-walk",
"direct": false,
"version": "8.3.5",
"ecosystem": "npm"
},
{
"name": "agent-base",
"direct": false,
"version": "6.0.2",
"ecosystem": "npm"
},
{
"name": "agent-base",
"direct": false,
"version": "7.1.4",
"ecosystem": "npm"
},
{
"name": "ajv",
"direct": false,
"version": "6.12.6",
"ecosystem": "npm"
},
{
"name": "ajv",
"direct": false,
"version": "8.18.0",
"ecosystem": "npm"
},
{
"name": "ajv-formats",
"direct": false,
"version": "2.1.1",
"ecosystem": "npm"
},
{
"name": "ajv-keywords",
"direct": false,
"version": "3.5.2",
"ecosystem": "npm"
},
{
"name": "ajv-keywords",
"direct": false,
"version": "5.1.0",
"ecosystem": "npm"
},
{
"name": "ansi-escapes",
"direct": false,
"version": "4.3.2",
"ecosystem": "npm"
},
{
"name": "ansi-regex",
"direct": false,
"version": "5.0.1",
"ecosystem": "npm"
},
{
"name": "ansi-styles",
"direct": false,
"version": "3.2.1",
"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": "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": "asynckit",
"direct": false,
"version": "0.4.0",
"ecosystem": "npm"
},
{
"name": "babel-jest",
"direct": false,
"version": "29.7.0",
"ecosystem": "npm"
},
{
"name": "babel-loader",
"direct": false,
"version": "9.2.1",
"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-plugin-polyfill-corejs2",
"direct": false,
"version": "0.4.17",
"ecosystem": "npm"
},
{
"name": "babel-plugin-polyfill-corejs3",
"direct": false,
"version": "0.13.0",
"ecosystem": "npm"
},
{
"name": "babel-plugin-polyfill-corejs3",
"direct": false,
"version": "0.14.2",
"ecosystem": "npm"
},
{
"name": "babel-plugin-polyfill-regenerator",
"direct": false,
"version": "0.6.8",
"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": "baseline-browser-mapping",
"direct": false,
"version": "2.10.19",
"ecosystem": "npm"
},
{
"name": "big.js",
"direct": false,
"version": "5.2.2",
"ecosystem": "npm"
},
{
"name": "brace-expansion",
"direct": false,
"version": "1.1.11",
"ecosystem": "npm"
},
{
"name": "brace-expansion",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "braces",
"direct": false,
"version": "3.0.3",
"ecosystem": "npm"
},
{
"name": "browserslist",
"direct": false,
"version": "4.24.2",
"ecosystem": "npm"
},
{
"name": "browserslist",
"direct": false,
"version": "4.28.2",
"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.8",
"ecosystem": "npm"
},
{
"name": "call-bind-apply-helpers",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "call-bind-apply-helpers",
"direct": false,
"version": "1.0.2",
"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.30001687",
"ecosystem": "npm"
},
{
"name": "caniuse-lite",
"direct": false,
"version": "1.0.30001788",
"ecosystem": "npm"
},
{
"name": "chalk",
"direct": false,
"version": "2.4.2",
"ecosystem": "npm"
},
{
"name": "chalk",
"direct": false,
"version": "4.1.2",
"ecosystem": "npm"
},
{
"name": "char-regex",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "chrome-trace-event",
"direct": false,
"version": "1.0.4",
"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": "classnames",
"direct": false,
"version": "2.5.1",
"ecosystem": "npm"
},
{
"name": "cli-table3",
"direct": false,
"version": "0.6.5",
"ecosystem": "npm"
},
{
"name": "cliui",
"direct": false,
"version": "8.0.1",
"ecosystem": "npm"
},
{
"name": "clone-deep",
"direct": false,
"version": "4.0.1",
"ecosystem": "npm"
},
{
"name": "co",
"direct": false,
"version": "4.6.0",
"ecosystem": "npm"
},
{
"name": "collect-v8-coverage",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "color-convert",
"direct": false,
"version": "1.9.3",
"ecosystem": "npm"
},
{
"name": "color-convert",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "color-name",
"direct": false,
"version": "1.1.3",
"ecosystem": "npm"
},
{
"name": "color-name",
"direct": false,
"version": "1.1.4",
"ecosystem": "npm"
},
{
"name": "colorette",
"direct": false,
"version": "2.0.20",
"ecosystem": "npm"
},
{
"name": "combined-stream",
"direct": false,
"version": "1.0.8",
"ecosystem": "npm"
},
{
"name": "commander",
"direct": false,
"version": "2.20.3",
"ecosystem": "npm"
},
{
"name": "commander",
"direct": false,
"version": "3.0.2",
"ecosystem": "npm"
},
{
"name": "commander",
"direct": false,
"version": "5.1.0",
"ecosystem": "npm"
},
{
"name": "commander",
"direct": false,
"version": "7.2.0",
"ecosystem": "npm"
},
{
"name": "common-path-prefix",
"direct": false,
"version": "3.0.0",
"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": "core-js-compat",
"direct": false,
"version": "3.49.0",
"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": "cssom",
"direct": false,
"version": "0.3.8",
"ecosystem": "npm"
},
{
"name": "cssom",
"direct": false,
"version": "0.5.0",
"ecosystem": "npm"
},
{
"name": "cssstyle",
"direct": false,
"version": "2.3.0",
"ecosystem": "npm"
},
{
"name": "cssstyle",
"direct": false,
"version": "4.6.0",
"ecosystem": "npm"
},
{
"name": "data-urls",
"direct": false,
"version": "3.0.2",
"ecosystem": "npm"
},
{
"name": "data-urls",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "dayjs",
"direct": false,
"version": "1.11.13",
"ecosystem": "npm"
},
{
"name": "dayjs",
"direct": false,
"version": "1.11.20",
"ecosystem": "npm"
},
{
"name": "debounce",
"direct": false,
"version": "1.2.1",
"ecosystem": "npm"
},
{
"name": "debug",
"direct": false,
"version": "4.4.0",
"ecosystem": "npm"
},
{
"name": "debug",
"direct": false,
"version": "4.4.3",
"ecosystem": "npm"
},
{
"name": "decimal.js",
"direct": false,
"version": "10.6.0",
"ecosystem": "npm"
},
{
"name": "dedent",
"direct": false,
"version": "1.7.2",
"ecosystem": "npm"
},
{
"name": "deep-equal",
"direct": false,
"version": "1.1.2",
"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": "delayed-stream",
"direct": false,
"version": "1.0.0",
"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": "domexception",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "domino",
"direct": false,
"version": "2.1.6",
"ecosystem": "npm"
},
{
"name": "dunder-proto",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "dunder-proto",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "duplexer",
"direct": false,
"version": "0.1.2",
"ecosystem": "npm"
},
{
"name": "electron-to-chromium",
"direct": false,
"version": "1.5.337",
"ecosystem": "npm"
},
{
"name": "electron-to-chromium",
"direct": false,
"version": "1.5.71",
"ecosystem": "npm"
},
{
"name": "emittery",
"direct": false,
"version": "0.13.1",
"ecosystem": "npm"
},
{
"name": "emoji-regex",
"direct": false,
"version": "8.0.0",
"ecosystem": "npm"
},
{
"name": "emojis-list",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "enhanced-resolve",
"direct": false,
"version": "5.20.1",
"ecosystem": "npm"
},
{
"name": "entities",
"direct": false,
"version": "6.0.1",
"ecosystem": "npm"
},
{
"name": "envinfo",
"direct": false,
"version": "7.14.0",
"ecosystem": "npm"
},
{
"name": "error-ex",
"direct": false,
"version": "1.3.4",
"ecosystem": "npm"
},
{
"name": "es-define-property",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "es-errors",
"direct": false,
"version": "1.3.0",
"ecosystem": "npm"
},
{
"name": "es-module-lexer",
"direct": false,
"version": "2.0.0",
"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": "escalade",
"direct": false,
"version": "3.2.0",
"ecosystem": "npm"
},
{
"name": "escape-string-regexp",
"direct": false,
"version": "1.0.5",
"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": "escodegen",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "eslint-scope",
"direct": false,
"version": "5.1.1",
"ecosystem": "npm"
},
{
"name": "esprima",
"direct": false,
"version": "4.0.1",
"ecosystem": "npm"
},
{
"name": "esrecurse",
"direct": false,
"version": "4.3.0",
"ecosystem": "npm"
},
{
"name": "estraverse",
"direct": false,
"version": "4.3.0",
"ecosystem": "npm"
},
{
"name": "estraverse",
"direct": false,
"version": "5.3.0",
"ecosystem": "npm"
},
{
"name": "esutils",
"direct": false,
"version": "2.0.3",
"ecosystem": "npm"
},
{
"name": "events",
"direct": false,
"version": "3.3.0",
"ecosystem": "npm"
},
{
"name": "execa",
"direct": false,
"version": "5.1.1",
"ecosystem": "npm"
},
{
"name": "exenv",
"direct": false,
"version": "1.2.2",
"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.2",
"ecosystem": "npm"
},
{
"name": "fast-json-stable-stringify",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "fast-uri",
"direct": false,
"version": "3.1.0",
"ecosystem": "npm"
},
{
"name": "fastest-levenshtein",
"direct": false,
"version": "1.0.16",
"ecosystem": "npm"
},
{
"name": "fastq",
"direct": false,
"version": "1.17.1",
"ecosystem": "npm"
},
{
"name": "fb-watchman",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "fill-range",
"direct": false,
"version": "7.1.1",
"ecosystem": "npm"
},
{
"name": "find-cache-dir",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "find-up",
"direct": false,
"version": "4.1.0",
"ecosystem": "npm"
},
{
"name": "find-up",
"direct": false,
"version": "6.3.0",
"ecosystem": "npm"
},
{
"name": "flarum-tsconfig",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "flarum-webpack-config",
"direct": false,
"version": "3.0.4",
"ecosystem": "npm"
},
{
"name": "flat",
"direct": false,
"version": "5.0.2",
"ecosystem": "npm"
},
{
"name": "form-data",
"direct": false,
"version": "4.0.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": "functions-have-names",
"direct": false,
"version": "1.2.3",
"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-intrinsic",
"direct": false,
"version": "1.2.5",
"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": "glob",
"direct": false,
"version": "7.2.3",
"ecosystem": "npm"
},
{
"name": "glob-parent",
"direct": false,
"version": "5.1.2",
"ecosystem": "npm"
},
{
"name": "glob-to-regexp",
"direct": false,
"version": "0.4.1",
"ecosystem": "npm"
},
{
"name": "gopd",
"direct": false,
"version": "1.2.0",
"ecosystem": "npm"
},
{
"name": "graceful-fs",
"direct": false,
"version": "4.2.11",
"ecosystem": "npm"
},
{
"name": "gud",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "gzip-size",
"direct": false,
"version": "6.0.0",
"ecosystem": "npm"
},
{
"name": "handlebars",
"direct": false,
"version": "4.7.9",
"ecosystem": "npm"
},
{
"name": "has-flag",
"direct": false,
"version": "3.0.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-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.2",
"ecosystem": "npm"
},
{
"name": "html-encoding-sniffer",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "html-encoding-sniffer",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "html-escaper",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "http-proxy-agent",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "http-proxy-agent",
"direct": false,
"version": "7.0.2",
"ecosystem": "npm"
},
{
"name": "https-proxy-agent",
"direct": false,
"version": "5.0.1",
"ecosystem": "npm"
},
{
"name": "https-proxy-agent",
"direct": false,
"version": "7.0.6",
"ecosystem": "npm"
},
{
"name": "human-signals",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "iconv-lite",
"direct": false,
"version": "0.6.3",
"ecosystem": "npm"
},
{
"name": "import-local",
"direct": false,
"version": "3.2.0",
"ecosystem": "npm"
},
{
"name": "imurmurhash",
"direct": false,
"version": "0.1.4",
"ecosystem": "npm"
},
{
"name": "inflight",
"direct": false,
"version": "1.0.6",
"ecosystem": "npm"
},
{
"name": "inherits",
"direct": false,
"version": "2.0.4",
"ecosystem": "npm"
},
{
"name": "interpret",
"direct": false,
"version": "2.2.0",
"ecosystem": "npm"
},
{
"name": "is-arguments",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "is-arrayish",
"direct": false,
"version": "0.2.1",
"ecosystem": "npm"
},
{
"name": "is-core-module",
"direct": false,
"version": "2.16.1",
"ecosystem": "npm"
},
{
"name": "is-date-object",
"direct": false,
"version": "1.0.5",
"ecosystem": "npm"
},
{
"name": "is-extglob",
"direct": false,
"version": "2.1.1",
"ecosystem": "npm"
},
{
"name": "is-fullwidth-code-point",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "is-generator-fn",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "is-glob",
"direct": false,
"version": "4.0.3",
"ecosystem": "npm"
},
{
"name": "is-number",
"direct": false,
"version": "7.0.0",
"ecosystem": "npm"
},
{
"name": "is-plain-object",
"direct": false,
"version": "2.0.4",
"ecosystem": "npm"
},
{
"name": "is-potential-custom-element-name",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "is-regex",
"direct": false,
"version": "1.2.0",
"ecosystem": "npm"
},
{
"name": "is-stream",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "isexe",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "isobject",
"direct": false,
"version": "3.0.1",
"ecosystem": "npm"
},
{
"name": "istanbul-lib-coverage",
"direct": false,
"version": "3.2.2",
"ecosystem": "npm"
},
{
"name": "istanbul-lib-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": "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-jsdom",
"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": "27.5.1",
"ecosystem": "npm"
},
{
"name": "jest-worker",
"direct": false,
"version": "29.7.0",
"ecosystem": "npm"
},
{
"name": "jquery",
"direct": false,
"version": "3.7.1",
"ecosystem": "npm"
},
{
"name": "js-tokens",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "js-yaml",
"direct": false,
"version": "3.14.2",
"ecosystem": "npm"
},
{
"name": "js-yaml",
"direct": false,
"version": "4.1.1",
"ecosystem": "npm"
},
{
"name": "jsdom",
"direct": false,
"version": "20.0.3",
"ecosystem": "npm"
},
{
"name": "jsdom",
"direct": false,
"version": "24.1.3",
"ecosystem": "npm"
},
{
"name": "jsesc",
"direct": false,
"version": "3.0.2",
"ecosystem": "npm"
},
{
"name": "jsesc",
"direct": false,
"version": "3.1.0",
"ecosystem": "npm"
},
{
"name": "json-parse-even-better-errors",
"direct": false,
"version": "2.3.1",
"ecosystem": "npm"
},
{
"name": "json-schema-traverse",
"direct": false,
"version": "0.4.1",
"ecosystem": "npm"
},
{
"name": "json-schema-traverse",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "json5",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "json5",
"direct": false,
"version": "2.2.3",
"ecosystem": "npm"
},
{
"name": "keyboard-key",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "kind-of",
"direct": false,
"version": "6.0.3",
"ecosystem": "npm"
},
{
"name": "kleur",
"direct": false,
"version": "3.0.3",
"ecosystem": "npm"
},
{
"name": "leven",
"direct": false,
"version": "3.1.0",
"ecosystem": "npm"
},
{
"name": "lines-and-columns",
"direct": false,
"version": "1.2.4",
"ecosystem": "npm"
},
{
"name": "loader-runner",
"direct": false,
"version": "4.3.1",
"ecosystem": "npm"
},
{
"name": "loader-utils",
"direct": false,
"version": "1.4.2",
"ecosystem": "npm"
},
{
"name": "locate-path",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "locate-path",
"direct": false,
"version": "7.2.0",
"ecosystem": "npm"
},
{
"name": "lodash",
"direct": false,
"version": "4.17.21",
"ecosystem": "npm"
},
{
"name": "lodash.debounce",
"direct": false,
"version": "4.0.8",
"ecosystem": "npm"
},
{
"name": "lodash.memoize",
"direct": false,
"version": "4.1.2",
"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": "mime-db",
"direct": false,
"version": "1.52.0",
"ecosystem": "npm"
},
{
"name": "mime-db",
"direct": false,
"version": "1.54.0",
"ecosystem": "npm"
},
{
"name": "mime-types",
"direct": false,
"version": "2.1.35",
"ecosystem": "npm"
},
{
"name": "mimic-fn",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "minimatch",
"direct": false,
"version": "10.0.1",
"ecosystem": "npm"
},
{
"name": "minimatch",
"direct": false,
"version": "3.1.2",
"ecosystem": "npm"
},
{
"name": "minimatch",
"direct": false,
"version": "3.1.5",
"ecosystem": "npm"
},
{
"name": "minimist",
"direct": false,
"version": "1.2.8",
"ecosystem": "npm"
},
{
"name": "mithril",
"direct": false,
"version": "2.3.8",
"ecosystem": "npm"
},
{
"name": "mithril-query",
"direct": false,
"version": "4.0.1",
"ecosystem": "npm"
},
{
"name": "mrmime",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "ms",
"direct": false,
"version": "2.1.3",
"ecosystem": "npm"
},
{
"name": "natural-compare",
"direct": false,
"version": "1.4.0",
"ecosystem": "npm"
},
{
"name": "ncp",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "neo-async",
"direct": false,
"version": "2.6.2",
"ecosystem": "npm"
},
{
"name": "node-int64",
"direct": false,
"version": "0.4.0",
"ecosystem": "npm"
},
{
"name": "node-releases",
"direct": false,
"version": "2.0.18",
"ecosystem": "npm"
},
{
"name": "node-releases",
"direct": false,
"version": "2.0.37",
"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": "nwsapi",
"direct": false,
"version": "2.2.23",
"ecosystem": "npm"
},
{
"name": "object-assign",
"direct": false,
"version": "4.1.1",
"ecosystem": "npm"
},
{
"name": "object-is",
"direct": false,
"version": "1.1.6",
"ecosystem": "npm"
},
{
"name": "object-keys",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "once",
"direct": false,
"version": "1.4.0",
"ecosystem": "npm"
},
{
"name": "onetime",
"direct": false,
"version": "5.1.2",
"ecosystem": "npm"
},
{
"name": "opener",
"direct": false,
"version": "1.5.2",
"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-limit",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "p-locate",
"direct": false,
"version": "4.1.0",
"ecosystem": "npm"
},
{
"name": "p-locate",
"direct": false,
"version": "6.0.0",
"ecosystem": "npm"
},
{
"name": "p-try",
"direct": false,
"version": "2.2.0",
"ecosystem": "npm"
},
{
"name": "parse-json",
"direct": false,
"version": "5.2.0",
"ecosystem": "npm"
},
{
"name": "parse5",
"direct": false,
"version": "7.3.0",
"ecosystem": "npm"
},
{
"name": "path-exists",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "path-exists",
"direct": false,
"version": "5.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": "picocolors",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "picomatch",
"direct": false,
"version": "2.3.1",
"ecosystem": "npm"
},
{
"name": "picomatch",
"direct": false,
"version": "2.3.2",
"ecosystem": "npm"
},
{
"name": "pirates",
"direct": false,
"version": "4.0.7",
"ecosystem": "npm"
},
{
"name": "pkg-dir",
"direct": false,
"version": "4.2.0",
"ecosystem": "npm"
},
{
"name": "pkg-dir",
"direct": false,
"version": "7.0.0",
"ecosystem": "npm"
},
{
"name": "popper.js",
"direct": false,
"version": "1.16.1",
"ecosystem": "npm"
},
{
"name": "prettier",
"direct": false,
"version": "1.19.1",
"ecosystem": "npm"
},
{
"name": "prettier",
"direct": false,
"version": "3.4.2",
"ecosystem": "npm"
},
{
"name": "pretty-format",
"direct": false,
"version": "29.7.0",
"ecosystem": "npm"
},
{
"name": "pretty-html-log",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "prompts",
"direct": false,
"version": "2.4.2",
"ecosystem": "npm"
},
{
"name": "prop-types",
"direct": false,
"version": "15.8.1",
"ecosystem": "npm"
},
{
"name": "psl",
"direct": false,
"version": "1.15.0",
"ecosystem": "npm"
},
{
"name": "punycode",
"direct": false,
"version": "2.3.1",
"ecosystem": "npm"
},
{
"name": "pure-rand",
"direct": false,
"version": "6.1.0",
"ecosystem": "npm"
},
{
"name": "querystringify",
"direct": false,
"version": "2.2.0",
"ecosystem": "npm"
},
{
"name": "queue-microtask",
"direct": false,
"version": "1.2.3",
"ecosystem": "npm"
},
{
"name": "react",
"direct": false,
"version": "16.14.0",
"ecosystem": "npm"
},
{
"name": "react-dom",
"direct": false,
"version": "16.14.0",
"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-popper",
"direct": false,
"version": "1.3.11",
"ecosystem": "npm"
},
{
"name": "rechoir",
"direct": false,
"version": "0.7.1",
"ecosystem": "npm"
},
{
"name": "regenerate",
"direct": false,
"version": "1.4.2",
"ecosystem": "npm"
},
{
"name": "regenerate-unicode-properties",
"direct": false,
"version": "10.2.0",
"ecosystem": "npm"
},
{
"name": "regenerate-unicode-properties",
"direct": false,
"version": "10.2.2",
"ecosystem": "npm"
},
{
"name": "regenerator-runtime",
"direct": false,
"version": "0.14.1",
"ecosystem": "npm"
},
{
"name": "regexp.prototype.flags",
"direct": false,
"version": "1.5.3",
"ecosystem": "npm"
},
{
"name": "regexpu-core",
"direct": false,
"version": "6.2.0",
"ecosystem": "npm"
},
{
"name": "regexpu-core",
"direct": false,
"version": "6.4.0",
"ecosystem": "npm"
},
{
"name": "regjsgen",
"direct": false,
"version": "0.8.0",
"ecosystem": "npm"
},
{
"name": "regjsparser",
"direct": false,
"version": "0.12.0",
"ecosystem": "npm"
},
{
"name": "regjsparser",
"direct": false,
"version": "0.13.1",
"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": "requires-port",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "resolve",
"direct": false,
"version": "1.22.12",
"ecosystem": "npm"
},
{
"name": "resolve-cwd",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "resolve-from",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "resolve.exports",
"direct": false,
"version": "2.0.3",
"ecosystem": "npm"
},
{
"name": "reusify",
"direct": false,
"version": "1.0.4",
"ecosystem": "npm"
},
{
"name": "rimraf",
"direct": false,
"version": "3.0.2",
"ecosystem": "npm"
},
{
"name": "rrweb-cssom",
"direct": false,
"version": "0.7.1",
"ecosystem": "npm"
},
{
"name": "rrweb-cssom",
"direct": false,
"version": "0.8.0",
"ecosystem": "npm"
},
{
"name": "run-parallel",
"direct": false,
"version": "1.2.0",
"ecosystem": "npm"
},
{
"name": "safer-buffer",
"direct": false,
"version": "2.1.2",
"ecosystem": "npm"
},
{
"name": "saxes",
"direct": false,
"version": "6.0.0",
"ecosystem": "npm"
},
{
"name": "scheduler",
"direct": false,
"version": "0.19.1",
"ecosystem": "npm"
},
{
"name": "schema-utils",
"direct": false,
"version": "3.3.0",
"ecosystem": "npm"
},
{
"name": "schema-utils",
"direct": false,
"version": "4.3.3",
"ecosystem": "npm"
},
{
"name": "semantic-ui-react",
"direct": false,
"version": "0.88.2",
"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": "shallow-clone",
"direct": false,
"version": "3.0.1",
"ecosystem": "npm"
},
{
"name": "shallowequal",
"direct": false,
"version": "1.1.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": "signal-exit",
"direct": false,
"version": "3.0.7",
"ecosystem": "npm"
},
{
"name": "sirv",
"direct": false,
"version": "2.0.4",
"ecosystem": "npm"
},
{
"name": "sisteransi",
"direct": false,
"version": "1.0.5",
"ecosystem": "npm"
},
{
"name": "slash",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "source-map",
"direct": false,
"version": "0.6.1",
"ecosystem": "npm"
},
{
"name": "source-map-support",
"direct": false,
"version": "0.5.13",
"ecosystem": "npm"
},
{
"name": "source-map-support",
"direct": false,
"version": "0.5.21",
"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": "string-length",
"direct": false,
"version": "4.0.2",
"ecosystem": "npm"
},
{
"name": "string-width",
"direct": false,
"version": "4.2.3",
"ecosystem": "npm"
},
{
"name": "strip-ansi",
"direct": false,
"version": "6.0.1",
"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": "supports-color",
"direct": false,
"version": "5.5.0",
"ecosystem": "npm"
},
{
"name": "supports-color",
"direct": false,
"version": "7.2.0",
"ecosystem": "npm"
},
{
"name": "supports-color",
"direct": false,
"version": "8.1.1",
"ecosystem": "npm"
},
{
"name": "supports-preserve-symlinks-flag",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "symbol-tree",
"direct": false,
"version": "3.2.4",
"ecosystem": "npm"
},
{
"name": "tapable",
"direct": false,
"version": "2.3.2",
"ecosystem": "npm"
},
{
"name": "terser",
"direct": false,
"version": "5.46.1",
"ecosystem": "npm"
},
{
"name": "terser-webpack-plugin",
"direct": false,
"version": "5.4.0",
"ecosystem": "npm"
},
{
"name": "test-exclude",
"direct": false,
"version": "6.0.0",
"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": "totalist",
"direct": false,
"version": "3.0.1",
"ecosystem": "npm"
},
{
"name": "tough-cookie",
"direct": false,
"version": "4.1.4",
"ecosystem": "npm"
},
{
"name": "tr46",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "tr46",
"direct": false,
"version": "5.1.1",
"ecosystem": "npm"
},
{
"name": "ts-jest",
"direct": false,
"version": "29.4.9",
"ecosystem": "npm"
},
{
"name": "tslib",
"direct": false,
"version": "1.14.1",
"ecosystem": "npm"
},
{
"name": "tslib",
"direct": false,
"version": "2.8.1",
"ecosystem": "npm"
},
{
"name": "tsutils",
"direct": false,
"version": "3.21.0",
"ecosystem": "npm"
},
{
"name": "type-coverage-core",
"direct": false,
"version": "2.29.7",
"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": "typed-styles",
"direct": false,
"version": "0.0.7",
"ecosystem": "npm"
},
{
"name": "typescript",
"direct": false,
"version": "4.9.5",
"ecosystem": "npm"
},
{
"name": "typescript-coverage-report",
"direct": false,
"version": "0.6.4",
"ecosystem": "npm"
},
{
"name": "uglify-js",
"direct": false,
"version": "3.19.3",
"ecosystem": "npm"
},
{
"name": "undici-types",
"direct": false,
"version": "6.20.0",
"ecosystem": "npm"
},
{
"name": "unicode-canonical-property-names-ecmascript",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "unicode-match-property-ecmascript",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "unicode-match-property-value-ecmascript",
"direct": false,
"version": "2.2.0",
"ecosystem": "npm"
},
{
"name": "unicode-match-property-value-ecmascript",
"direct": false,
"version": "2.2.1",
"ecosystem": "npm"
},
{
"name": "unicode-property-aliases-ecmascript",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "universalify",
"direct": false,
"version": "0.2.0",
"ecosystem": "npm"
},
{
"name": "update-browserslist-db",
"direct": false,
"version": "1.1.1",
"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": "url-parse",
"direct": false,
"version": "1.5.10",
"ecosystem": "npm"
},
{
"name": "v8-to-istanbul",
"direct": false,
"version": "9.3.0",
"ecosystem": "npm"
},
{
"name": "w3c-xmlserializer",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "w3c-xmlserializer",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "walker",
"direct": false,
"version": "1.0.8",
"ecosystem": "npm"
},
{
"name": "warning",
"direct": false,
"version": "4.0.3",
"ecosystem": "npm"
},
{
"name": "watchpack",
"direct": false,
"version": "2.5.1",
"ecosystem": "npm"
},
{
"name": "webidl-conversions",
"direct": false,
"version": "7.0.0",
"ecosystem": "npm"
},
{
"name": "webpack",
"direct": false,
"version": "5.106.2",
"ecosystem": "npm"
},
{
"name": "webpack-bundle-analyzer",
"direct": false,
"version": "4.10.2",
"ecosystem": "npm"
},
{
"name": "webpack-cli",
"direct": false,
"version": "4.10.0",
"ecosystem": "npm"
},
{
"name": "webpack-merge",
"direct": false,
"version": "5.10.0",
"ecosystem": "npm"
},
{
"name": "webpack-sources",
"direct": false,
"version": "3.3.4",
"ecosystem": "npm"
},
{
"name": "whatwg-encoding",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "whatwg-encoding",
"direct": false,
"version": "3.1.1",
"ecosystem": "npm"
},
{
"name": "whatwg-mimetype",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "whatwg-mimetype",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "whatwg-url",
"direct": false,
"version": "11.0.0",
"ecosystem": "npm"
},
{
"name": "whatwg-url",
"direct": false,
"version": "14.2.0",
"ecosystem": "npm"
},
{
"name": "which",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "wildcard",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "wordwrap",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "wrap-ansi",
"direct": false,
"version": "7.0.0",
"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": "7.5.10",
"ecosystem": "npm"
},
{
"name": "ws",
"direct": false,
"version": "8.20.0",
"ecosystem": "npm"
},
{
"name": "xml-name-validator",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "xml-name-validator",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "xmlchars",
"direct": false,
"version": "2.2.0",
"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": "yields-keycode",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "yocto-queue",
"direct": false,
"version": "0.1.0",
"ecosystem": "npm"
},
{
"name": "yocto-queue",
"direct": false,
"version": "1.2.2",
"ecosystem": "npm"
},
{
"name": "flarum/phpstan",
"direct": false,
"version": null,
"ecosystem": "packagist"
},
{
"name": "flarum/testing",
"direct": false,
"version": null,
"ecosystem": "packagist"
}
],
"collected": true,
"truncated": false,
"total_count": 680,
"direct_count": 1,
"indirect_count": 679
}
},
"maintainership": {
"issues": {
"open_prs": 5,
"merged_prs": 58,
"open_issues": 8,
"closed_ratio": 0.814,
"closed_issues": 35,
"closed_unmerged_prs": 24
},
"bus_factor": 3,
"bot_contributors": 1,
"top_contributors": [
{
"type": "User",
"login": "ShahiemS",
"commits": 68,
"avatar_url": "https://avatars.githubusercontent.com/u/188719889?v=4"
},
{
"type": "User",
"login": "dsevillamartin",
"commits": 61,
"avatar_url": "https://avatars.githubusercontent.com/u/6401250?v=4"
},
{
"type": "User",
"login": "flarum-bot",
"commits": 45,
"avatar_url": "https://avatars.githubusercontent.com/u/39334649?v=4"
},
{
"type": "User",
"login": "imorland",
"commits": 27,
"avatar_url": "https://avatars.githubusercontent.com/u/16573496?v=4"
},
{
"type": "User",
"login": "KyrneDev",
"commits": 26,
"avatar_url": "https://avatars.githubusercontent.com/u/13856015?v=4"
},
{
"type": "User",
"login": "clarkwinkelmann",
"commits": 20,
"avatar_url": "https://avatars.githubusercontent.com/u/5264300?v=4"
},
{
"type": "User",
"login": "Ralkage",
"commits": 13,
"avatar_url": "https://avatars.githubusercontent.com/u/2059356?v=4"
},
{
"type": "User",
"login": "DavideIadeluca",
"commits": 5,
"avatar_url": "https://avatars.githubusercontent.com/u/146922689?v=4"
},
{
"type": "User",
"login": "gianniguida",
"commits": 4,
"avatar_url": "https://avatars.githubusercontent.com/u/53989450?v=4"
},
{
"type": "User",
"login": "karaok491",
"commits": 3,
"avatar_url": "https://avatars.githubusercontent.com/u/72854852?v=4"
}
],
"contributors_sampled": 24,
"top_contributor_share": 0.231
},
"quality_signals": {
"has_ci": true,
"has_tests": true,
"ci_workflows": [
"backend.yml",
"flarum-release-notification.yml",
"frontend.yml"
],
"has_docs_dir": false,
"linter_configs": [
"phpstan.neon"
],
"has_editorconfig": false,
"has_linter_config": true,
"has_precommit_config": false
},
"security_signals": {
"lockfiles": [
"yarn.lock"
],
"scorecard": {
"checks": [
{
"name": "Binary-Artifacts",
"score": 10,
"reason": "no binaries found in the repo",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
},
{
"name": "Branch-Protection",
"score": 0,
"reason": "branch protection not enabled on development/release branches",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
},
{
"name": "CI-Tests",
"score": 6,
"reason": "10 out of 15 merged PRs checked by a CI test -- score normalized to 6",
"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": 3,
"reason": "Found 11/30 approved changesets -- score normalized to 3",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
},
{
"name": "Contributors",
"score": 10,
"reason": "project has 19 contributing companies or organizations",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
},
{
"name": "Dangerous-Workflow",
"score": null,
"reason": "no workflows found",
"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": 5,
"reason": "6 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 5",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
},
{
"name": "Packaging",
"score": null,
"reason": "packaging workflow not detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
},
{
"name": "Pinned-Dependencies",
"score": null,
"reason": "no dependencies found",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
},
{
"name": "SAST",
"score": 4,
"reason": "SAST tool is not run on all commits -- score normalized to 4",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
},
{
"name": "Security-Policy",
"score": 10,
"reason": "security policy file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
},
{
"name": "Signed-Releases",
"score": null,
"reason": "no releases found",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
},
{
"name": "Token-Permissions",
"score": null,
"reason": "No tokens found",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
},
{
"name": "Vulnerabilities",
"score": 0,
"reason": "24 existing vulnerabilities detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
}
],
"commit": "a63780dc36612cd86fc3d2734fe40fc229391a6f",
"ran_at": "2026-07-23T13:46:22Z",
"aggregate_score": 4.9,
"scorecard_version": "v5.5.0"
},
"has_codeql_workflow": false,
"has_security_policy": false,
"has_dependabot_config": false
},
"contribution_flow": {
"collected": true,
"ci_last_run_at": "2026-07-22T20:47:09Z",
"oldest_open_prs": [
{
"number": 80,
"created_at": "2023-07-26T16:23:50Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 110,
"created_at": "2025-08-25T10:25:28Z",
"last_comment_at": "2025-08-26T20:22:01Z",
"last_comment_author": "dsevillamartin"
},
{
"number": 121,
"created_at": "2026-04-27T15:08:12Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 122,
"created_at": "2026-04-27T15:25:50Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 130,
"created_at": "2026-07-23T13:44:23Z",
"last_comment_at": null,
"last_comment_author": null
}
],
"last_merged_pr_at": "2026-05-21T17:59:55Z",
"ci_last_conclusion": "SUCCESS",
"oldest_open_issues": [
{
"number": 4,
"created_at": "2019-07-03T21:03:10Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 15,
"created_at": "2020-06-24T08:27:04Z",
"last_comment_at": "2021-04-09T18:41:43Z",
"last_comment_author": "Ralkage"
},
{
"number": 21,
"created_at": "2020-08-28T18:14:00Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 82,
"created_at": "2023-08-30T11:50:12Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 97,
"created_at": "2024-10-06T00:06:43Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 106,
"created_at": "2025-04-17T02:46:25Z",
"last_comment_at": "2025-08-27T16:38:17Z",
"last_comment_author": "dsevillamartin"
},
{
"number": 119,
"created_at": "2026-04-18T09:35:34Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 124,
"created_at": "2026-04-28T17:07:51Z",
"last_comment_at": null,
"last_comment_author": null
}
]
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/FriendsOfFlarum/polls",
"host": "github.com",
"name": "polls",
"owner": "FriendsOfFlarum"
},
"metrics": {
"overall": {
"key": "overall",
"band": "moderate",
"name": "Overall health",
"note": null,
"notes": [],
"value": 68,
"inputs": {
"security": 59,
"vitality": 75,
"community": 47,
"governance": 78,
"engineering": 72
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "good",
"name": "Vitality",
"value": 75,
"weight": 0.22,
"metrics": [
{
"key": "development_activity",
"band": "moderate",
"name": "Development activity",
"note": null,
"notes": [],
"value": 59,
"inputs": {
"commits_last_year": 21,
"human_commit_share": 0.98,
"days_since_last_push": 0,
"active_weeks_last_year": 9
},
"components": [
{
"key": "push_recency",
"name": "Push recency",
"detail": "last push 0 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "push_recency",
"params": {
"days": 0
}
}
],
"max_points": 36
},
{
"key": "commit_cadence",
"name": "Commit cadence",
"detail": "9/52 weeks with commits",
"points": 6.2,
"status": "partial",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 9
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "21 commits in the last year",
"points": 12.1,
"status": "partial",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 21
}
}
],
"max_points": 18
},
{
"key": "openssf_scorecard_maintained",
"name": "OpenSSF Scorecard: Maintained",
"detail": "6 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 5",
"points": 5,
"status": "partial",
"details": [],
"max_points": 10
}
]
},
{
"key": "release_discipline",
"band": "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": 100,
"inputs": {
"releases_count": 51,
"latest_release_tag": "2.3.4",
"releases_from_tags": false,
"days_since_latest_release": 62,
"mean_days_between_releases": 25.6
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "51 releases published",
"points": 27,
"status": "met",
"details": [
{
"code": "releases_published",
"params": {
"count": 51
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 62 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "release_recency",
"params": {
"days": 62
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~25.6 days",
"points": 27,
"status": "met",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 25.6
}
}
],
"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": 62,
"days_since_last_human_commit_is_floor": false
},
"components": [
{
"key": "project_is_still_maintained",
"name": "Project is still maintained",
"detail": "last human commit 62 days ago",
"points": 100,
"status": "met",
"details": [
{
"code": "abandonment_maintained",
"params": {
"days": 62
}
}
],
"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": 47,
"weight": 0.18,
"metrics": [
{
"key": "popularity",
"band": "at_risk",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 34,
"inputs": {
"forks": 17,
"stars": 25,
"watchers": 3,
"growth_state": "unverified",
"growth_factor_pct": 100,
"growth_unverified_reason": "no_history"
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "25 stars",
"points": 22.4,
"status": "partial",
"details": [
{
"code": "stars",
"params": {
"count": 25
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "17 forks",
"points": 10,
"status": "partial",
"details": [
{
"code": "forks",
"params": {
"count": 17
}
}
],
"max_points": 25
},
{
"key": "watchers",
"name": "Watchers",
"detail": "3 watchers",
"points": 1.7,
"status": "partial",
"details": [
{
"code": "watchers",
"params": {
"count": 3
}
}
],
"max_points": 15
}
]
},
{
"key": "community_health",
"band": "moderate",
"name": "Community health",
"note": null,
"notes": [],
"value": 57,
"inputs": {
"has_readme": true,
"has_license": true,
"has_contributing": false,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": true
},
"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": 6.3,
"status": "met",
"details": [],
"max_points": 6.3
}
]
},
{
"key": "ecosystem_adoption",
"band": "moderate",
"name": "Ecosystem adoption (downloads)",
"note": null,
"notes": [],
"value": 54,
"inputs": {
"packages": [
"fof/polls"
],
"dependents": 8,
"ecosystems": "packagist",
"total_downloads": 136264,
"monthly_downloads": 3578
},
"components": [
{
"key": "monthly_downloads",
"name": "Monthly downloads",
"detail": "3,578 downloads/month across packagist",
"points": 47.4,
"status": "partial",
"details": [
{
"code": "downloads_monthly",
"params": {
"count": 3578,
"ecosystems": "packagist"
}
}
],
"max_points": 80
},
{
"key": "registry_dependents",
"name": "Registry dependents",
"detail": "8 packages depend on it",
"points": 6.4,
"status": "partial",
"details": [
{
"code": "registry_dependents",
"params": {
"count": 8
}
}
],
"max_points": 20
}
]
}
],
"description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
},
{
"key": "governance",
"band": "good",
"name": "Sustainability & Governance",
"value": 78,
"weight": 0.24,
"metrics": [
{
"key": "maintainer_resilience",
"band": "good",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 77,
"inputs": {
"bus_factor": 3,
"contributors_sampled": 24,
"top_contributor_share": 0.231
},
"components": [
{
"key": "bus_factor",
"name": "Bus factor",
"detail": "3 contributor(s) cover half of all commits",
"points": 36,
"status": "partial",
"details": [
{
"code": "bus_factor",
"params": {
"count": 3
}
}
],
"max_points": 54
},
{
"key": "commit_distribution",
"name": "Commit distribution",
"detail": "top contributor authored 23% of commits",
"points": 17.3,
"status": "partial",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 23
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "24 contributors",
"points": 13.5,
"status": "met",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 24
}
}
],
"max_points": 13.5
},
{
"key": "openssf_scorecard_contributors",
"name": "OpenSSF Scorecard: Contributors",
"detail": "project has 19 contributing companies or organizations",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "responsiveness",
"band": "good",
"name": "Issue & PR responsiveness",
"note": null,
"notes": [],
"value": 70,
"inputs": {
"merged_prs": 58,
"open_issues": 8,
"closed_issues": 35,
"issue_closed_ratio": 0.814,
"closed_unmerged_prs": 24
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "81% of issues closed",
"points": 38.1,
"status": "partial",
"details": [
{
"code": "issues_closed_share",
"params": {
"share": 81
}
}
],
"max_points": 46.75
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "58/82 decided PRs merged",
"points": 27.1,
"status": "partial",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 58,
"decided": 82
}
}
],
"max_points": 38.25
},
{
"key": "openssf_scorecard_code_review",
"name": "OpenSSF Scorecard: Code-Review",
"detail": "Found 11/30 approved changesets -- score normalized to 3",
"points": 4.5,
"status": "partial",
"details": [],
"max_points": 15
}
]
},
{
"key": "stewardship",
"band": "moderate",
"name": "Ownership & stewardship",
"note": null,
"notes": [],
"value": 69,
"inputs": {
"followers": 100,
"owner_type": "Organization",
"is_verified": null,
"owner_login": "FriendsOfFlarum",
"public_repos": 105,
"account_age_days": 2866
},
"components": [
{
"key": "ownership_backing",
"name": "Ownership backing",
"detail": "organization-owned",
"points": 30,
"status": "met",
"details": [
{
"code": "owner_organization",
"params": {}
}
],
"max_points": 30
},
{
"key": "verified_domain",
"name": "Verified domain",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 20
},
{
"key": "owner_reach",
"name": "Owner reach",
"detail": "100 followers of FriendsOfFlarum",
"points": 14.4,
"status": "partial",
"details": [
{
"code": "owner_followers",
"params": {
"count": 100,
"login": "FriendsOfFlarum"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "105 public repos, account ~7 yr old",
"points": 25,
"status": "met",
"details": [
{
"code": "public_repos",
"params": {
"count": 105
}
},
{
"code": "account_age_years",
"params": {
"years": 7
}
}
],
"max_points": 25
}
]
},
{
"key": "package_maintenance",
"band": "excellent",
"name": "Package maintenance",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"packages": [
"fof/polls"
],
"ecosystems": "packagist",
"any_deprecated": false,
"min_days_since_publish": 62
},
"components": [
{
"key": "published_resolvable",
"name": "Published & resolvable",
"detail": "1 package(s) on packagist",
"points": 25,
"status": "met",
"details": [
{
"code": "packages_published",
"params": {
"count": 1,
"ecosystems": "packagist"
}
}
],
"max_points": 25
},
{
"key": "publish_recency",
"name": "Publish recency",
"detail": "latest publish 62 days ago",
"points": 35,
"status": "met",
"details": [
{
"code": "publish_recency",
"params": {
"days": 62
}
}
],
"max_points": 35
},
{
"key": "version_history",
"name": "Version history",
"detail": "89 published versions",
"points": 20,
"status": "met",
"details": [
{
"code": "published_versions",
"params": {
"count": 89
}
}
],
"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": 72,
"weight": 0.2,
"metrics": [
{
"key": "engineering_practices",
"band": "good",
"name": "Engineering practices",
"note": null,
"notes": [],
"value": 76,
"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": "phpstan.neon",
"points": 16,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "phpstan.neon"
}
}
],
"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": "10 out of 15 merged PRs checked by a CI test -- score normalized to 6",
"points": 12,
"status": "partial",
"details": [],
"max_points": 20
}
]
},
{
"key": "documentation",
"band": "moderate",
"name": "Documentation",
"note": null,
"notes": [],
"value": 65,
"inputs": {
"topics": [],
"has_wiki": true,
"homepage": "https://discuss.flarum.org/d/20586",
"has_readme": true,
"has_docs_dir": false,
"has_description": true
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 30,
"status": "met",
"details": [],
"max_points": 30
},
{
"key": "documentation_directory",
"name": "Documentation directory",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 25
},
{
"key": "documentation_homepage_site",
"name": "Documentation / homepage site",
"detail": "https://discuss.flarum.org/d/20586",
"points": 15,
"status": "met",
"details": [],
"max_points": 15
},
{
"key": "repository_description",
"name": "Repository description",
"detail": null,
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "topics",
"name": "Topics",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"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": 59,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "at_risk",
"name": "Security posture",
"note": "Excluded from scoring (no data or not applicable): Dangerous-Workflow, Packaging, Pinned-Dependencies, Signed-Releases, Token-Permissions. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"dangerous_workflow",
"packaging",
"pinned_dependencies",
"signed_releases",
"token_permissions"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 49,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 13,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 5,
"scorecard_aggregate": 4.9
},
"components": [
{
"key": "binary_artifacts",
"name": "Binary-Artifacts",
"detail": "no binaries found in the repo",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "branch_protection",
"name": "Branch-Protection",
"detail": "branch protection not enabled on development/release branches",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "ci_tests",
"name": "CI-Tests",
"detail": "10 out of 15 merged PRs checked by a CI test -- score normalized to 6",
"points": 1.5,
"status": "partial",
"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 11/30 approved changesets -- score normalized to 3",
"points": 2.2,
"status": "partial",
"details": [],
"max_points": 7.5
},
{
"key": "contributors",
"name": "Contributors",
"detail": "project has 19 contributing companies or organizations",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "dangerous_workflow",
"name": "Dangerous-Workflow",
"detail": "no workflows found",
"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": "6 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 5",
"points": 3.8,
"status": "partial",
"details": [],
"max_points": 7.5
},
{
"key": "packaging",
"name": "Packaging",
"detail": "packaging workflow not detected",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 5
},
{
"key": "pinned_dependencies",
"name": "Pinned-Dependencies",
"detail": "no dependencies found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 5
},
{
"key": "sast",
"name": "SAST",
"detail": "SAST tool is not run on all commits -- score normalized to 4",
"points": 2,
"status": "partial",
"details": [],
"max_points": 5
},
{
"key": "security_policy",
"name": "Security-Policy",
"detail": "security policy file detected",
"points": 5,
"status": "met",
"details": [],
"max_points": 5
},
{
"key": "signed_releases",
"name": "Signed-Releases",
"detail": "no releases found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 7.5
},
{
"key": "token_permissions",
"name": "Token-Permissions",
"detail": "No tokens found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 7.5
},
{
"key": "vulnerabilities",
"name": "Vulnerabilities",
"detail": "24 existing vulnerabilities detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
}
]
},
{
"key": "dependency_advisories",
"band": "excellent",
"name": "Dependency advisories",
"note": "Excluded from scoring (no data or not applicable): Indirect dependencies free of known advisories, No advisories left outstanding. Remaining weights renormalized. Matched 677 resolved dependencies against OSV; 3 could not be assessed (no resolved version, an unsupported ecosystem, or beyond the reported package list). 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": 677
}
},
{
"code": "advisories_unassessed",
"params": {
"count": 3
}
},
{
"code": "advisories_repo_graph_caveat",
"params": {}
},
{
"code": "advisories_reachability",
"params": {}
}
],
"value": 100,
"inputs": {
"source": "osv",
"advisories": 34,
"affected_packages": 17,
"assessed_packages": 677,
"unassessed_packages": 3,
"affected_by_severity": "high 13, moderate 2, low 2",
"direct_affected_packages": 0
},
"components": [
{
"key": "direct_dependencies_free_of_known_advisories",
"name": "Direct dependencies free of known advisories",
"detail": "no direct dependency carries a known advisory",
"points": 35,
"status": "met",
"details": [
{
"code": "no_direct_advisories",
"params": {}
}
],
"max_points": 35
},
{
"key": "indirect_dependencies_free_of_known_advisories",
"name": "Indirect dependencies free of known advisories",
"detail": "transitive set not separable from development and test dependencies in this scope",
"points": 0,
"status": "excluded",
"details": [
{
"code": "advisories_scope_not_separable",
"params": {}
}
],
"max_points": 25
},
{
"key": "no_advisories_left_outstanding",
"name": "No advisories left outstanding",
"detail": "no advisory carries a publication date",
"points": 0,
"status": "excluded",
"details": [
{
"code": "advisories_no_publication_date",
"params": {}
}
],
"max_points": 40
}
]
},
{
"key": "malicious_dependencies",
"band": "excellent",
"name": "Malicious dependencies",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"source": "osv",
"meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
"packages": [],
"red_flag": false,
"assessed_packages": 677,
"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": 14
},
"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": 63,
"weight": 0,
"metrics": [
{
"key": "ai_agent_context",
"band": "at_risk",
"name": "Agent context & guidance",
"note": null,
"notes": [],
"value": 35,
"inputs": {
"has_llms_txt": false,
"legible_history_share": 0.653,
"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": "64 of 98 human commits state their intent (structured subject or explanatory body)",
"points": 34.8,
"status": "partial",
"details": [
{
"code": "legible_history",
"params": {
"legible": 64,
"sampled": 98
}
}
],
"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": 76,
"inputs": {
"has_nix": false,
"has_tests": true,
"lockfiles": [
"yarn.lock"
],
"has_dockerfile": false,
"typed_language": false,
"bootstrap_files": [],
"has_devcontainer": false,
"has_linter_config": true,
"typecheck_configs": [
"js/tsconfig.json"
],
"agent_commit_share": 0.03,
"toolchain_manifests": [],
"dependency_bot_commit_share": 0.02
},
"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": "phpstan.neon",
"points": 11,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "phpstan.neon"
}
}
],
"max_points": 11
},
{
"key": "static_type_checking",
"name": "Static type checking",
"detail": "js/tsconfig.json",
"points": 11,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "js/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": "3 of the last 100 commits agent-authored or agent-credited",
"points": 6,
"status": "partial",
"details": [
{
"code": "agent_authored_commits",
"params": {
"count": 3,
"sampled": 100
}
}
],
"max_points": 10
},
{
"key": "automated_maintenance",
"name": "Automated maintenance",
"detail": "2 of the last 100 commits are automated dependency updates",
"points": 8,
"status": "met",
"details": [
{
"code": "dependency_bot_commits",
"params": {
"count": 2,
"sampled": 100
}
}
],
"max_points": 8
},
{
"key": "openssf_scorecard_pinned_dependencies",
"name": "OpenSSF Scorecard: Pinned-Dependencies",
"detail": "no dependencies found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 10
}
]
},
{
"key": "ai_code_legibility",
"band": "good",
"name": "Code legibility for models",
"note": null,
"notes": [],
"value": 82,
"inputs": {
"primary_language": "PHP",
"largest_source_bytes": 33110,
"source_files_sampled": 238,
"oversized_source_files": 0
},
"components": [
{
"key": "type_checkable_code",
"name": "Type-checkable code",
"detail": "PHP with type-check config (js/tsconfig.json)",
"points": 27,
"status": "partial",
"details": [
{
"code": "typecheck_config_language",
"params": {
"files": "js/tsconfig.json",
"language": "PHP"
}
}
],
"max_points": 45
},
{
"key": "manageable_file_sizes",
"name": "Manageable file sizes",
"detail": "0/238 source files over 60KB",
"points": 55,
"status": "met",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 238,
"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-23T13:47:04.698677Z",
"schema_version": "0.27.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/f/FriendsOfFlarum/polls.svg",
"full_name": "FriendsOfFlarum/polls",
"license_state": "standard",
"license_spdx": "MIT"
}