原始 JSON 报告 机器可读
{
"data": {
"icon": {
"bytes": 15406,
"width": 48,
"height": 48,
"rejected": [],
"collected": true,
"media_type": "image/vnd.microsoft.icon",
"source_url": "https://flipbook-labs.github.io/flipbook/img/favicon.ico",
"source_type": "homepage",
"content_hash": "9a59f8381d292660a6f4df044e26d4411046ecf4f1a9746b7d458d9f4e352763",
"candidates_considered": 1
},
"repo": {
"topics": [
"roblox",
"plugin",
"storybook",
"roact"
],
"is_fork": false,
"size_kb": 18979,
"has_wiki": false,
"homepage": "https://flipbook-labs.github.io/flipbook/",
"languages": {
"Luau": 323115
},
"pushed_at": "2026-07-30T16:00:04Z",
"created_at": "2021-12-30T22:19:47Z",
"owner_type": "Organization",
"updated_at": "2026-07-26T13:48:29Z",
"description": "Storybook plugin for Roblox UI",
"is_archived": false,
"is_disabled": false,
"license_spdx": "MIT",
"default_branch": "main",
"license_spdx_raw": "MIT",
"primary_language": "Luau",
"significant_languages": [
"Luau"
]
},
"owner": {
"blog": null,
"name": null,
"type": "Organization",
"login": "flipbook-labs",
"company": null,
"location": null,
"followers": 14,
"avatar_url": "https://avatars.githubusercontent.com/u/132705396?v=4",
"created_at": "2023-05-05T19:02:58Z",
"is_verified": null,
"public_repos": 16,
"account_age_days": 1187
},
"license": {
"state": "standard",
"spdx_id": "MIT",
"raw_spdx": "MIT",
"file_present": true,
"scorecard_found": true,
"profile_has_license": true
},
"activity": {
"releases": [
{
"tag": "v2.5.0",
"kind": "minor",
"published_at": "2026-04-10T15:51:08Z"
},
{
"tag": "v2.4.0",
"kind": "minor",
"published_at": "2025-12-21T22:24:23Z"
},
{
"tag": "v2.3.0",
"kind": "minor",
"published_at": "2025-10-09T19:12:45Z"
},
{
"tag": "v2.2.0",
"kind": "minor",
"published_at": "2025-09-10T22:57:29Z"
},
{
"tag": "v2.1.0",
"kind": "minor",
"published_at": "2025-09-04T18:11:06Z"
},
{
"tag": "v2.0.0",
"kind": "major",
"published_at": "2024-11-21T18:49:46Z"
},
{
"tag": "v1.5.1",
"kind": "patch",
"published_at": "2024-11-03T04:46:17Z"
},
{
"tag": "v1.5.0",
"kind": "minor",
"published_at": "2023-04-23T04:24:04Z"
},
{
"tag": "v1.4.0",
"kind": "minor",
"published_at": "2023-02-20T18:21:51Z"
},
{
"tag": "v1.3.0",
"kind": "minor",
"published_at": "2023-02-18T20:45:26Z"
},
{
"tag": "v1.2.0",
"kind": "minor",
"published_at": "2023-01-29T21:42:08Z"
},
{
"tag": "v1.1.0",
"kind": "minor",
"published_at": "2023-01-09T01:04:06Z"
},
{
"tag": "v1.0.0",
"kind": "major",
"published_at": "2022-12-26T20:14:47Z"
}
],
"recent_commits": [
{
"oid": "8b74d51dae999250913b3c3646e17fa2b53fd6e5",
"body": ">[!NOTE]\n> Hello 👋 Human here 🧍\n>\n> I [saw this prompt on\nReddit](https://www.reddit.com/r/ClaudeAI/comments/1ukynrw/comment/ov17362/)\nand this PR is the culmination of letting Fable 5 run wild with it. And\nthen several rounds of my own reviews to tighten it up. It significantly\nchanges the way the \n[…]\ny scoped to their branch so they\ncan't be mistaken for facts on main.\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\n---------\n\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Add an agent skill library under .agents/skills (#605)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2026-07-05T18:02:35Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "78d71e8fdab1b5563e5ff7577ceab5a822857f2a",
"body": "# Problem\n\nA feature we've been needing for a long time is the ability to embed\nFlipbook into an experience so that playing the experience opens up\nFlipbook just like in Studio. Main motivation is for engineers and\ndesigners (and any other stakeholders) to be able to collaborate on the\nimplementatio\n[…]\nipbook/pull/582#issuecomment-4771172047)\nwhich link directly to the storybook experience for 1-click joins.\n\nCloses #49 \nCloses #274\n\n---------\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Embed Flipbook in the DataModel (#582)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2026-06-28T20:47:06Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "ab8e97bf8aa37a31580cddaf0ea31e2677da6f60",
"body": "## Problem\n\nFor the Storybook Embedding workstream we're introducing a new\nclient-side entrypoint. This entrypoint runs at user-level security, so\nthere's no access to the Plugin instance or any other special APIs.\nBecause Flipbook was architected as a plugin we need a way for the new\nlower security\n[…]\ne all good\n\n## Notes for reviewers\n\n<!-- (Optional) Anything to call out? Tradeoffs, risky areas,\nfollow-ups, things you're unsure about -->\n\n---------\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "Introduce Pluginlike type to decouple from the Plugin instance (#598)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2026-06-21T21:13:17Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "aaf8d0524d54ea6abf8f87da5547b24965a3aa2c",
"body": "# Problem\n\nThe plugin binary build and `packToRbxm` each duplicate the same logic\nto produce an rbxm: write a temp `default.project.json` via\n`createRojoProjectAsync`, shell out to `rojo build`, then clean up the\ntemp file.\n\n# Solution\n\nThis PR adds a `rojoBuild` helper that takes a project table an\n[…]\n easier now since you don't need to\nspecify the project to serve with\n\nSplit out of #582. Extended it a bit more since then, though.\n\n---------\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Consolidate Rojo building logic (#586)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2026-06-21T21:04:13Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "0d045ce953ce9e785603d48cc2ef3ab8df018c0b",
"body": "## Problem\n\nI broke the dev build in\nhttps://github.com/flipbook-labs/flipbook/pull/583 when introducing the\nnew \"beta\" channel. @greptileai actually surfaced the issue but I forgot\nto handle it before merging\n\n## Solution\n\nTo address this, we're now properly mapping the `--channel` option to\nthe ri\n[…]\nptional) Anything to call out? Tradeoffs, risky areas,\nfollow-ups, things you're unsure about -->\n\n---------\n\nCo-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>",
"is_bot": false,
"headline": "Fix the dev build failing to deploy (#596)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2026-06-21T17:22:55Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "dc14ac2f507b317a9bd1f50567892b20fd1803c4",
"body": "## Problem\n\n<!-- Why are we making this change? Link the issue if there is one. -->\n\nWe need to extend our ObjectControl to a more generalized component for\nthe Storybook Embedding work so we can prompt the user in a Dialog to\nselect an instance to embed into. ObjectControl is specific to the\ncontro\n[…]\ncommon -->\n\n## Notes for reviewers\n\n<!-- (Optional) Anything to call out? Tradeoffs, risky areas,\nfollow-ups, things you're unsure about -->\n\n---------\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
"is_bot": false,
"headline": "Extract InstancePicker component from ObjectControl (#597)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2026-06-18T02:39:09Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "e62eb04332b5f15775ce42b1e3b364399ba144ff",
"body": "## Problem\n\nI've been getting reports for a while that Flipbook keeps popping up\nwhen it's not supposed to. I think this is probably because we have\n`initEnabled=true` for the dock widget. I've seen first-hand how often\nRoblox Studio's layout can get reset, so maybe that's also part of\nwhat's trigge\n[…]\nhe expected size\n\nHere's a screenshot:\n\n<img width=\"846\" height=\"646\" alt=\"Screenshot 2026-06-13 at 2 38 48 PM\"\nsrc=\"https://github.com/user-attachments/assets/f0d84cd2-0861-468f-b950-94c235de6fce\"\n/>",
"is_bot": false,
"headline": "Try and stop Flipbook from popping up uninvited (#593)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2026-06-15T18:47:09Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "5926ea2dbdb77ff830c7e3ba6e37c3647c0bc1e4",
"body": "# Problem\n\nFlipbook has a few different build variants and it can be difficult to\ntell what it is just by looking at the plugin\n\n# Solution\n\nAdded some new badges that show up in special builds to differentiate\nthe Flipbook variants.\n\nAlso took this opportunity to introduce a new \"Beta\" channel whic\n[…]\nldn't even scroll and I needed to find a good icon for the Beta\nbadge. So I fixed it up anyway, might as well commit it\n\nCloses #425\n\n---------\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Display badges for special environments (#583)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2026-06-15T18:40:21Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "630354f3d94382de13d0a01ed5f993c98835133c",
"body": "## Problem\n\nWhile scrolling through the BuilderIcons in #583 I noticed there's a\nGitHub icon we could reuse. We've been using our own GitHubMark.png and\nit's one of only two custom images we have. The other being the Flipbook\nlogo itself. I've been eager to get rid of the GitHub one, and now we\ncan!\n[…]\nidth=\"543\" height=\"532\" alt=\"Screenshot 2026-06-13 at 12 41 41 PM\"\nsrc=\"https://github.com/user-attachments/assets/8fb80733-f5c7-49c0-a780-72ac483e5654\"\n/>\n\n\n## Testing\n\nManually verified in the story",
"is_bot": false,
"headline": "Use BuilderIcons for the GitHub icon (#594)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2026-06-15T18:38:00Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "60fc52ebfe68305af9e6f1fb6523fcbb2cffca7f",
"body": "Lifted out of the agents PR (#581) to keep that change focused.\n\nMakes it possible to consume the built `flipbook-core-rotriever`\nartifact as a path dependency in another `rotriever.toml`:\n\n\n- Copy the canonical `workspace/flipbook-core/rotriever.toml` directly\ninto the artifact, rather than searchi\n[…]\nas resulting in accidentally copying TestEZ's\n`rotriever.toml`\n- Point our `rotriever.toml` to the right path (`src` instead of\n`build`.\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)",
"is_bot": false,
"headline": "Make the Rotriever bundle consumable as a path dependency (#584)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2026-06-10T15:27:23Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "6e0bab5cfddceee2ff469fd1b378d772257c34a7",
"body": "# Problem\n\nAgents keep leaving garbage code comments that assume the reader knows\nthe previous code intimately and would get value out of a comment\ndescribing the past state to now to get up to speed. But that's an\ninsane way to write comments. If for no other reason than that being\nsuch a ridiculou\n[…]\nosts.\n\nAnyway the solution was to write a strongly worded letter to my agent to\nmake it fill out this PR with my commenting guidance\n\n---------\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Give agents guidance on commenting standards (#590)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2026-06-10T15:19:34Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "05a75a6fa6372758137d8a2c6dbe4e93d19ef5ca",
"body": "# Problem\n\nFlipbook has nuance that agents are frequently getting tripped up on,\nsuch as not knowing how to use Lute properly for running all the custom\nscripts we have for the project.\n\n# Solution\n\nI'm now starting to build out an `AGENTS.md` file along with various\nskills for agents to reference. \n[…]\nmanage it no problem. It's\nbeen making it much easier to iterate on our dependencies before\nbringing them into Flipbook's prod paths\n\n---------\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Skills and instructions for agents 🤖 (#581)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2026-06-09T03:07:19Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "371d775247e4f4b24ee86300ddfaa7c06b1d1c4b",
"body": "# Problem\n\nAny time a control is changed the entire controls panel is re-rendered,\nincluding each individual control. This leads to visual artifacts when\ninteracting with the controls panel, and can also cause warnings to\npopup in the output, I presume from how many re-renders are occurring.\n\n# Solu\n[…]\n makes it easier to write/test the logic\nbefore funneling it into the React scheduler.\n\nNow we should be getting localized updates only to the components that\nneed to be rerendered\n\nBuilds off of #465",
"is_bot": false,
"headline": "Fix all control elements rerendering when one is changed (#576)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2026-05-30T16:48:43Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "1d438478834df1bf9fc8dd32ea7040f71525ce09",
"body": "# Problem\n\nWe want to be able to support using Instances from the DataModel as\ncontrol values. A similar kind of Instance selection like UI Labs\noffers, and what the Properties panel natively offers with things like\nObjectValues.\n\n# Solution\n\nThis PR sets up all the UI necessary for a new Object con\n[…]\nStoryteller PR that adds the scaffolding for the Object\ncontrol: https://github.com/flipbook-labs/storyteller/pull/116\n\n\nhttps://github.com/user-attachments/assets/fba2a250-2d5d-40e7-9f62-0c465038008d",
"is_bot": false,
"headline": "Object control type (#579)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2026-05-30T16:45:15Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "fd8cac8b32d2a2a70a0943b72027bd701b9d2645",
"body": "# Problem\n\nI threw together [basic dotenv functionality in\nFlipbookBatteries](https://github.com/flipbook-labs/flipbook-batteries/blob/7a5bf190a91c45f0fb70c9cb977a867638151147/src/dotenv.luau)\nbut it leaves much to be desired.\n\n# Solution\n\nThankfully Lute has a package manager now! And there's a dotenv package!\nLet's use it!",
"is_bot": false,
"headline": "Use a proper dotenv package (#569)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2026-05-13T00:05:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e019669a650f4c2df1267eecad261de1c63aeeec",
"body": "# Problem\n\nBuilderIcons is the font-based icon library that pairs with Foundation.\nThere's a ton of icons, and right now there's no easy way to search or\neven view them, so we're mostly shooting blind when picking from the\nliterally-named icons\n\n# Solution\n\nAdded a story for internal purposes that l\n[…]\ns. And I don't want to write\nour own.\n\n<img width=\"1125\" height=\"561\" alt=\"Screenshot 2026-04-18 at 4 13 04 PM\"\nsrc=\"https://github.com/user-attachments/assets/8685fb02-ab15-42a4-b199-eb1dbc415c2d\"\n/>",
"is_bot": false,
"headline": "Add a story to list all the BuilderIcons (#543)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2026-05-13T00:05:13Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "14bbd2cd190de88b399d5030eb7ef7be27e5e65c",
"body": "# Problem\n\nA ton of work has gone into\n[Storyteller](https://github.com/flipbook-labs/storyteller) to get it\nsetup with a new controls schema that allows for a ton of new control\ntypes, like Color3, DateTime, MultiSelect, and improvements to existing\ncontrols for primitives like numbers, strings, an\n[…]\n data types\n* New, more flexible control schema\n* Backwards compatibility with current controls schema\n* Helper functions for creating controls\n\n---------\n\nCo-authored-by: Copilot <copilot@github.com>",
"is_bot": false,
"headline": "Revamp available control types (#465)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2026-05-04T23:38:30Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "f4a1f4d9fc4873c5e20982af650aa91f65f71aba",
"body": "# Problem\n\nLute's first official release was just published and we want to start\nusing it!\n\n# Solution\n\nBumped the version in `rokit.toml` to point to Lute v1.0.0. Lot of\nchanges needed to get this all operational from there:\n\n1. Fixed all casing of Lute's API members\n2. Fixed paths to Lute packages\n3. Lute batteries are now installed via Loom, and adhoc installation has\nbeen removed from `install.luau`\n4. FlipbookBatteries has been bumped to v0.9.0 (from v0.7.0)",
"is_bot": false,
"headline": "Lute version bump and API usage fixes (#553)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2026-04-21T18:56:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5c99759266ab02f61a6561be057d606dc69a2718",
"body": "# Problem\n\nI feel like I've been fighting up a stream trying to intermingle\n`pull_request_target` in our existing workflows. I think there's a\nbetter way I could be doing this.\n\nAlso tests started failing because of `pull_request_target` not checking\nout any of the changed code before running tests.\n[…]\n by\na PR. But since the jobs in this workflow are intended to require manual\napproval (after reviewing the PR changes), this should be ok in practice\n\n Fingers crossed this helps with all the friction",
"is_bot": false,
"headline": "Isolate the surface area of `pull_request_target` (#563)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2026-04-19T00:03:08Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "758b31b613b5fe8437849b4498c40fa69f6af45c",
"body": "Upgrading RobloxPackages to 0.716.0.7160873\n\nPlease carefully test these changes before merging. These packages can\nand will change out from under us with no warning.\n\nThis pull request was generated by [this\nrun](https://github.com/flipbook-labs/flipbook/actions/runs/24160050778).\n\n---------\n\nCo-authored-by: vocksel <3081936+vocksel@users.noreply.github.com>\nCo-authored-by: Marin Minnerly <me@vocksel.com>",
"is_bot": true,
"headline": "[AUTO-GENERATED] Upgrade RobloxPackages to 0.716.0.7160873 (#555)",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-04-18T23:05:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "64ed0047237cec53182ba1bf65762b1d3048d2f2",
"body": "# Problem\n\nWe have concurrency setup for the plugin deployment smoketest but this\nseems to interact weirdly with deployment approvals. It makes sense for\nprod and dev deployments to be concurrent, but for the smoketest we\ndon't care which plugin makes it to the Creator Store, we just want to\nknow th\n[…]\nfit of leveraging the same `luau-execution-gated`\nlogic, too. I like this better since it keeps all the hair\n`pull_request_target` logic in the same place. _And_ one less deployment\nto have to approve",
"is_bot": false,
"headline": "Fix smoketest deployments cancelling each other (#562)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2026-04-18T22:56:36Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "b89c5adb1163a3b29c561ac75aa0f575d5a49bd1",
"body": "# Problem\n\nWith the recent switch to pull_request_target (#559) we hit an issue\nwhere the development build was being deployed right from PRs.\n\n# Solution\n\nThis is hopefully a simple condition change. Changing the intent from\n\"deploy when run from `main`\" (which is now always true) to \"deploy for\neverything that's not a PR,\" which I believe in this case will match our\nsame needs",
"is_bot": false,
"headline": "Fix dev deployments triggering for all PRs (#561)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2026-04-18T19:07:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8d1bc9282ae0989eb88c2cfa412b2eef29c31ce1",
"body": "Currently, the repo uses an outdated version of selene (0.29.0), which\ndoes not support require-by-string. In addition, it improperly uses\n`UDim2.new(x, y)` instead of `UDim2.fromScale(x, y)`.\n\n# Solution\n\nBump the version of selene to 0.30.1 and remove specific configuration\nfor require-by-string i\n[…]\ntionally left even though it\nproduced a warning? I don't see a reason why to leave it though.\n\n---------\n\nSigned-off-by: Ryan Luu <ryan.luu@ryanluu.dev>\nCo-authored-by: Marin Minnerly <me@vocksel.com>",
"is_bot": false,
"headline": "Bump selene version to 0.31.1 (#558)",
"author_name": "Ryan Luu",
"author_login": "ryanlua",
"committed_at": "2026-04-18T19:01:01Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "6896cca5a83e1f8b463fe2c33af9807facd46a54",
"body": "# Problem\n\nFork-based workflows are hitting failures in CI. We have some levers we\ncan pull to make this a better experience, so let's try some things out\n\n# Solution\n\nWe're now using `pull_request_target` which grants some extra\npermissions to the fork's jobs, and I've adjusted environments so that\nanything requiring `ROBLOX_API_KEY` must be approved before it can run",
"is_bot": false,
"headline": "Try to support fork workflows (#559)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2026-04-18T18:46:26Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "74323ee6838bed4009b67fd1b7833147142803cd",
"body": "# Problem\n\nI'm trying to setup support for fork workflows in #559 but hit a wall\nwhere none of the required jobs are running. I think I can kickstart\nthem with `workflow_dispatch` but it needs to exist on `main` for that\nto be possible\n\n# Solution\n\nSetup the CI and release workflows to be dispatchable from the GitHub\nUI.",
"is_bot": false,
"headline": "Setup workflows to be dispatchable (#560)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2026-04-18T17:45:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d1eeaaf1aa0c44db1c3dcfebd1e19b2798a13e0c",
"body": "# Problem\n\nCurrently, there is unnecessary space around the preview, which is\nespecially noticeable on small screens like my 13-inch laptop. It is\nunnecessary because it only pads the separator lines, which already\ndistinctly separate UI sections.\n\n## Before\n\n<img width=\"850\" height=\"577\" alt=\"image\n[…]\n the `padding-large` style tag\nfrom the preview component.\n\n## After\n\n<img width=\"849\" height=\"623\" alt=\"image\"\nsrc=\"https://github.com/user-attachments/assets/041633ee-2507-478b-9805-a5871fe68ba1\"\n/>",
"is_bot": false,
"headline": "Remove large padding tag from preview (#557)",
"author_name": "Ryan Luu",
"author_login": "ryanlua",
"committed_at": "2026-04-16T16:53:52Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "369eaaa8cf48b067e5b1beb35a4bbaee11825e37",
"body": "# Problem\n\nIt's time for a new Flipbook release! First one of the year\n\n# Solution\n\nBumped our various manifests to v2.5.0. \n\nAlso updated the bump-version script to handle all the updates so we\ndon't have to make them manually",
"is_bot": false,
"headline": "Bump version to 2.5.0 (#554)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2026-04-09T22:10:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "98bb6da9e81d5bdc6b4c1b55e85e3fb21c040ae1",
"body": "# Problem\n\nI realized while working on #535 that we aren't linting or checking\nformatting on the entire `workspace` dir. Whoops\n\n# Solution\n\nAdded `workspace` as one of the linted folders and fixed up the couple\nissues that it surfaced",
"is_bot": false,
"headline": "Code quality checks for the workspace (#536)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2026-04-07T16:14:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f21b2bbf4ac308fccd4b2989b53aa2cb36c964fe",
"body": "# Problem\n\nWe've been coasting off a Python client for interacting with the Luau\nExecution APIs that we use for running our unit tests, but now Roblox\nhas released [rocale-cli](https://github.com/Roblox/rocale-cli) which is\nbetter equipped for this purpose\n\n# Solution\n\nIncredibly easy switch. I remo\n[…]\nitched\nover to `rocale-cli` for running unit tests and it works out of the box.\n\nI made a test fail locally and `lute run test` was setting the correct\nexit code, so test failures should still fail CI",
"is_bot": false,
"headline": "Use rocale-cli for running unit tests (#547)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2026-04-07T16:12:44Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "f21a0d022f1a85be1a0376629d1466e33b87860c",
"body": "# Problem\n\nIt's impossible to scroll on the settings page.\n\n# Solution\n\nTurns out the container was shrinking to fit within the canvas. Patched\nthat up by expanding to fit its content.\n\nCloses #541",
"is_bot": false,
"headline": "Fix scrolling up/down in settings (#546)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2026-04-07T16:11:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5eaa5f32c71ddafb0258dc11abdc3d0b989dc788",
"body": "# Problem\n\nA bunch of Foundation's stories aren't working well. Mostly from bugs\naround handling the Developer Storybook controls schema, along with some\nother issues like differing StoryProps\n\n# Solution\n\n1. Fixed array controls to use the default value if it exists\n2. Bumped ModuleLoader version w\n[…]\ne height, it was way too large before\n\n<img width=\"1169\" height=\"780\" alt=\"Screenshot 2026-04-02 at 8 55 07 AM\"\nsrc=\"https://github.com/user-attachments/assets/3fca39f8-de1e-4e07-8515-23152953ffc2\"\n/>",
"is_bot": false,
"headline": "Support for Foundation stories (#549)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2026-04-06T17:02:52Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "a5b27460a379bb537a72a08822d5d6a8ba93cfff",
"body": "Upgrading RobloxPackages to 0.714.0.7141083\n\nPlease carefully test these changes before merging. These packages can\nand will change out from under us with no warning.\n\nThis pull request was generated by [this\nrun](https://github.com/flipbook-labs/flipbook/actions/runs/23565335610).\n\n---------\n\nCo-authored-by: vocksel <3081936+vocksel@users.noreply.github.com>\nCo-authored-by: Marin Minnerly <me@vocksel.com>",
"is_bot": true,
"headline": "[AUTO-GENERATED] Upgrade RobloxPackages to 0.714.0.7141083 (#542)",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-04-05T23:28:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "49f1a1d1ab3067b936ae4b0b4431ecb13159b83c",
"body": "# Problem\n\nOn more crowded screens the menu items along the topbar get cut off. The\nonly way to access them is to increase Flipbook's viewport width.\n\n<img width=\"548\" height=\"223\" alt=\"Screenshot 2026-04-03 at 7 29 25 PM\"\nsrc=\"https://github.com/user-attachments/assets/a018e942-5cc1-4a2f-88e5-1092e\n[…]\nk to fit the rest of the menu items.\n\nIt behaves really well. Foundation made this trivial to get done. Here's\na demo:\n\n\nhttps://github.com/user-attachments/assets/19284620-020e-461a-bdc2-73a9eb0f3804",
"is_bot": false,
"headline": "Scrollable topbar (#551)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2026-04-04T20:29:50Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "3a9254535f3d0c77dd8451447cb217b599836a99",
"body": "# Problem\n\nI've been hard at work upgrading the foundations of story previewing and\nnow we've got some package upgrades to consume to start using it all.\n\n# Solution\n\nBumped Storyteller to 1.10.0 and ModuleLoader to 0.9.0.\n\nI've tested out these changes on the dev and prod channels. Prod looks\nlike \n[…]\ng well. Dev is having some issues where React stories\ncause some lag when loading.\n\nOverall things seem stable enough that I want to merge it all together\nand fix forward with any issues that crop up.",
"is_bot": false,
"headline": "Update Storyteller and ModuleLoader (#545)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2026-03-31T15:26:28Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "8c386f75b34c7f6ae9a11f1f8d1e00a8b4a78851",
"body": "# Problem\n\nThe latest nightly build broke from #512. Seems like Darklua really\ndoesn't like absolute paths, which is resulting in string requires not\ngetting resolved. This crashes the plugin when trying to access the\n`@pkg` alias which does not exist in Studio.\n\n# Solution\n\nTo work around this I massaged `SOURCE_PATH` into a relative path to\npass it off to Darklua. Fixes the problem locally when building the\nplugin.\n\nResolves #534",
"is_bot": false,
"headline": "Fix broken nightly build (#535)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2026-03-20T16:06:07Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8c217397579906a344fc0a95fa224f3161d293cd",
"body": "# Problem\n\nLute recently added the `@std/path` library but we're still manually\nmanipulating paths. Now is a good time to port over\n\n# Solution\n\nSwapped out all of the manual path building with `@std/path`. All paths\nconstructed with string templates like `{foo}/bar.ext` have been ported\nover to `path.join` calls.\n\nI also took a pass to clean up some `run` calls to instead use native\nLute functions.\n\nDepends on #510 and #511",
"is_bot": false,
"headline": "Swap out adhoc path building with `@std/path` (#512)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2026-03-19T15:47:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3834640a6def378622c3d41b7b615c65f28b996e",
"body": "# Problem\n\nThanks to #523 we no longer have to worry about path limits. By\ncollapsing `Packages` and `RobloxPackages` into rbxms we should\nrealistically never get anywhere close to the limit again. (Please do\nnot make me regret saying that [Mostly speaking to myself btw])\n\n# Solution\n\nCleaned up all the path length checking logic. Feels weird to get to\nremove a bunch of code for once",
"is_bot": false,
"headline": "Remove all the path length garbage (#530)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2026-03-19T01:48:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "25bd4ccc044d12d359fbd5c4fcbf989cebbe3730",
"body": "# Problem\n\nIt's annoying that some scripts will leave around artifacts in the repo\nroot. Mostly thinking of how running analysis will\ndownload`globalDefTypes.d.luau`, and installing packages will include\n`RobloxPackagesTmp` briefly before deleting it, which is ironically\n_more_ annoying because it b\n[…]\ne files in, with the\nassumption that at _some point_ the operating system will take care of\nem for us.\n\nNow these artifacts just go to a temp directory and it never disrupts\nthe Developer Experience 😌",
"is_bot": false,
"headline": "Store build artifacts in a temp dir (#529)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2026-03-19T01:47:33Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "5a25fe4f19c45eb0163eb4f3e230feb302c28dcf",
"body": "# Problem\n\nChanges to Lute broke FlipbookBatteries' `watch` function. It has since\nbeen patched and we now need to bump the version to consume the latest\nversion\n\n# Solution\n\nBumped FlipbookBatteries to v0.7.0 and patches up our usage of it as\nneeded.\n\nNow when running commands like `lute scripts/build.luau --watch` changes\nto the src folder will properly trigger a rebuild",
"is_bot": false,
"headline": "Fix file watching for our Lute scripts (#524)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2026-03-19T01:44:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9af0fb8dc703d1501816b1d2bc0a40839e3911de",
"body": "# Problem\n\nOur weekly package upgrade is green but is actually silently failing\nalong the way.\n\n# Solution\n\nTurns out `conclusion` is being reported as `success`, which is intended\nbut not what we want. We should be using `outcome` instead, which gives\nus the outcome of the command, not the conclusi\n[…]\nntinue-on-error is applied.\nPossible values are success, failure, cancelled, or skipped. When a\ncontinue-on-error step fails, the outcome is failure, but the final\nconclusion is success.\"\n\nCloses #525",
"is_bot": false,
"headline": "Fix weekly package upgrade (#527)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2026-03-19T01:38:44Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "755909ab6512ee815dfb3eca93e00be4c020f2f8",
"body": "# Problem\n\nThe `StoryProps` object should also include the `plugin` instance to\nsupport Foundation\n\n# Solution\n\nGrab `plugin` from the store and pass it along as extra props. These\nfunnel into the `StoryProps` object that gets passed into each story.\n\nCloses #516",
"is_bot": false,
"headline": "Pass the `plugin` instance to StoryProps (#522)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2026-03-19T01:37:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f6beb69239aacbcbde02c1368068d66186ccd3d8",
"body": "# Problem\n\nOur Lute scripts currently exist in the `scripts` dir, but there exists\nthe special `.lute` directory which gives us some nice functionality\nlike being able to run `lute run <scriptName>` or even `lute\n<scriptName>`.\n\n# Solution\n\nI migrated us over to the `.lute` directory and updated workflows and\nscripts as-needed to get CI passing. Now we can run commands like `lute\nrun analyze` to run static analysis.",
"is_bot": false,
"headline": "Move Lute scripts to the special `.lute` dir (#521)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2026-03-19T01:34:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cf145e39f2a249c640718302032348454c15a5cc",
"body": "# Problem\n\nI forgot to specify the `name` field, which was resulting in\nPackages.rbxm and RobloxPackages.rbxm having their top-level instances\nnamed as `T`.\n\n# Solution\n\nOne-liner to use the path basename (`\"Packages\"` or `\"RobloxPackages\"`)\nas the instance name. This will hopefully fix the downstream issues.\n\nI verified locally by building `flipbook-core-rotriever` to an rbxm, and\nit looks like Packages and RobloxPackages properly come along for the\nride with this change.",
"is_bot": false,
"headline": "Make sure dependency bundles have a name (#526)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2026-03-13T16:43:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7a6c69b5a90b3be17879835747918609eb3e0d02",
"body": "…s (#523)\n\n# Problem\n\nThe Rotriever bundle keeps hitting issues when being consumed because\nthe damn paths are too long. Out of the 260 character limit, around half\nthat gets eaten up by CI, and then rest gets eaten up because we're\ncombining two package managers together.\n\nWith a prefix of 80 chara\n[…]\ne is that if this _does_ happen we can rely on it being\nafter CI runs, which is where the issue is cropping up.\n\nOnce we get the artifact into Roblox it should just work. Famous last\nwords, of course.",
"is_bot": false,
"headline": "Attempt to defeat path length limit by bundling package blobs as rbxm…",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2026-03-12T22:57:16Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "acf0fa2921049ae22af73b6d9a2761dad0374f54",
"body": "# Problem\n\nI wanted to adopt Roblox's Signals library for juggling state, though\nthere seem to be better alternatives within the community (see:\n[Charm](https://github.com/littensy/charm)). I also want to reduce the\nnumber of dependencies we consume through `roblox-packages` since those\ncan change w\n[…]\nh made this fairly trivial\nto migrate over.\n\nThere are likely to still be some edge cases from swapping out the\nunderlying implementation of our state management though, so this could\nget hairy later.",
"is_bot": false,
"headline": "Switch from Signals to Charm (#509)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2026-03-11T01:02:59Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "3188d698c1d2a4ca5b5b45361aefaa1d68c2520e",
"body": "# Problem\n\nStoryteller has been updated to use Charm and ReactCharm, and no longer\nuses RobloxPackages. This should take care of the path length issue!\n\n# Solution\n\nBumped Storyteller to 1.8.1 and patched things up along the way.\n\nSince there is likely still a state mutation bug to resolve in\nStoryteller itself I've filed a ticket to track that work:\nhttps://github.com/flipbook-labs/storyteller/issues/100\n\nDepends on #518",
"is_bot": false,
"headline": "Bump Storyteller to 1.8.1 (#515)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2026-03-10T23:40:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b841b0a2a730f29e3b798a1e56b056b5bca43e6b",
"body": "# Problem\n\nRan into an issue when consuming FlipbookCore relating to path lengths\ngoing above the 260 limit that some tools have hardcoded (it's a\nnightmare).\n\n# Solution\n\nI've introduced a new check that will add a comment to the PR when it is\ndetected that one or more paths in the Rotriever artifact would go above\nthe 260 character limit.\n\nThis check is non-blocking and simply logs a comment to be resolved\nlater.\n\nCloses #517",
"is_bot": false,
"headline": "Include a path length check (#518)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2026-03-10T22:07:07Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d7b8de56cd85cbfac6cbaf3376b646d08e94fd03",
"body": "# Problem\n\nThe Help > Logs page is all mangled, related to now needing to\nexplicitly pass the `layout` prop to ScrollView to get it to crate a\nUIListLayout.\n\n<img width=\"1125\" height=\"618\" alt=\"Screenshot 2026-03-01 at 8 35 24 PM\"\nsrc=\"https://github.com/user-attachments/assets/c6aea8c6-dd69-4e14-b3\n[…]\ny have it applied.\n\nBack to normal ☺️\n\n<img width=\"1120\" height=\"615\" alt=\"Screenshot 2026-03-01 at 8 32 54 PM\"\nsrc=\"https://github.com/user-attachments/assets/2da6ba77-7e4d-43ec-bc5d-2c8021533a8f\"\n/>",
"is_bot": false,
"headline": "Apply `layout` props to all ScrollViews (#514)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2026-03-05T20:05:17Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "97d7d1b7b2fca19ff7a3e01a42299312d8190f71",
"body": "# Problem\n\nWe do a lot of adhoc install steps for some of the dependencies Flipbook\nhas. I've been wanting to start getting rid of some of this logic for a\nlong while now, and with the advent of Lute's package manager, Loom, we\ncan start doing just that!\n\n# Solution\n\nI setup `loom.config.luau` with FlipbookBatteries as a dependency.\n\nI also wanted to get rbxasset working through this flow, but it has a\nbuild step right now that makes that a non-option.",
"is_bot": false,
"headline": "Start using Loom for installing luau dependencies (#510)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2026-03-02T22:46:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "40a7616102f5cb6cba6ef5f4d37ceb64d3cc1c3f",
"body": "# Problem\n\nThe idea is for the `@std` library to act as the main specification for\nother platforms (like Roblox) to implement. So using `@std` is how we\nmake our code more portable. As such, we should switch to `@std` from\n`@lute` where possible.\n\n# Solution\n\nI migrated over everything I could. There's some usage of `@lute/task`\nand `@lute/crypto` that can't be migrated yet",
"is_bot": false,
"headline": "Use `@std` over `@lute` where possible (#511)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2026-03-02T21:59:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "015d9200113a65272a7b10ddb77abae19bf27c7c",
"body": "# Problem\n\nWe're behind by several weeks of Roblox Studio versions so it's time for\nan upgrade!\n\n# Solution\n\nPinned RobloxPackages to 0.710.0.7100702 and fixed up issues along the\nway.\n\nThere seem to have been some changes to Signals under the hood that\nchanged when work gets complete",
"is_bot": false,
"headline": "Manually upgrade RobloxPackages (#506)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2026-02-27T17:29:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c4c392b7930fcbfababd9ed43bb7e9ff5d48254b",
"body": "# Problem\n\nRight now we have to remember to upgrade RobloxPackages manually when\nthere's a new Roblox Studio release. It would be helpful if this could\nbe handled automatically\n\n# Solution\n\nI setup a new workflow that will pull in the latest version of\nRobloxPackages on a schedule. Now we'll be setup with a PR each week\nthat we can build off when consuming the latest changes.\n\nCloses #504",
"is_bot": false,
"headline": "Auto upgrade RobloxPackages on a schedule (#505)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2026-02-24T22:07:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d62d2604d582d07b01e44e97b1618dda2743d67e",
"body": "# Problem\n\nI broke deployments again and this will absolutely repeat itself, so\nit's time to add in some guardrails\n\n# Solution\n\nI created a new Flipbook Smoketest asset on the creator store and got it\nsetup with our release process. Now each PR will run through the\ndeployment process to give us some extra certainty that our workflows\nare still operating correctly\n\nCloses #502",
"is_bot": false,
"headline": "Smoketests for plugin deployments (#503)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2026-02-24T21:44:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "dea1ae6b82bcd532fd5aef7a732e3488167566c4",
"body": "I want to get more people involved with Flipbook, and one way I'm\nnudging us in that direction is that I've now setup CODEOWNERS with a\nsupplementary review group so that members of that group can start\ngetting familiar with the codebase over time",
"is_bot": false,
"headline": "Add a secondary review group (#508)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2026-02-24T21:43:51Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "16b7e184ed821d35ded4d023ac197e839e660a1d",
"body": "# Problem\n\nWe repeat ourselves a lot between stories to setup the same context\nproviders. This can be simplified with `mapStory`\n\n# Solution\n\nI setup our FlipbookCore storybook to use `mapStory` so that all of the\nstories it manages will implicitly be setup with all the context\nproviders we use",
"is_bot": false,
"headline": "Offload context providers to mapStory (#496)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2026-02-18T21:42:07Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5fb4ebb0e23e89177ba185f55f3087a9052285ea",
"body": "# Problem\n\nWith my change to hoist `Packages` and `RobloxPackages` to the root of\nthe repo (#456), this inadvertently broke the workflow for mirroring\nFlipbookCore to the Roblox org.\n\n# Solution\n\nTo address this issue I'm now setting up the Rotriever builds to happen\nright in this repo. We now const\n[…]\n're\ngoing to have Flipbook build (and provide attestations) for the\nartifacts it produces. This should go a long way towards making usage of\nFlipbookCore safe for third-party consumption.\n\nCloses #486",
"is_bot": false,
"headline": "Fixes for mirroring workflow (#500)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2026-02-18T21:36:27Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "2d34f1625d47d5832932b51c0679ea43fc57e5e1",
"body": "Just keeping our tools up-to-date. Mostly for Lute. Surprisingly nothing\nbroke too",
"is_bot": false,
"headline": "Bump tool versions (#493)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2026-01-19T18:28:07Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "04bc23da69edec493c02a57192bbf8f4ad082d44",
"body": "# Problem\n\nWe can use `test.only` to narrow down which test cases run _within_ a\ntest file, but we have no way to filter which test files themselves will\nbe run by Jest\n\n# Solution\n\nI've introduced a `--filter` flag that will fill in Jest's\n`testPathPattern` option. Now we can run commands like the following to\nonly run tests within files that match the pattern:\n```\nlute scripts/test.luau --filter TreeView\n```",
"is_bot": false,
"headline": "Add `--filter` option when running tests (#495)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2026-01-19T18:27:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "23b60801c133a5bc71d346c2b3ce111865ac7d3c",
"body": "Resolves #483",
"is_bot": false,
"headline": "Fix logs unintentionally routing to the Output window (#484)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2026-01-15T18:46:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d313d7b6a1e57e6244c77d342c9179cd4f48df79",
"body": "# Problem\n\nBeen running into warnings in the nightly plugin stating \"failed to\ncommunicate with backend: URL must be http\" which stems from the backend\nURL resolving to `nil`.\n\n<img width=\"986\" height=\"344\" alt=\"Screenshot 2026-01-11 at 10 23 23 AM\"\nsrc=\"https://github.com/user-attachments/assets/51\n[…]\nv.template` to `.env` when\nbuilding the plugin. And I've also added a new check to assert that\n`BACKEND_URL` is defined, which should also help catch other cases where\n`.env` does not get copied over.",
"is_bot": false,
"headline": "Fix BACKEND_URL not getting baked into the build (#479)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2026-01-11T18:33:15Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "ced5e22a4e5f66194b5fc41307dd7f991e487018",
"body": "# Problem\n\nSee #469\n\n# Solution\n\nI'm now passing the `--plugin` flag to all of our tasks to fix the\nregression from #461\n\nResolves #469",
"is_bot": false,
"headline": "Fix VSCode tasks (#471)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2026-01-03T18:40:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "daf9e0fe408f7f730318b265470947e82a7c0541",
"body": "# Release notes\n\n* Adds a new experimental workspace `flipbook-next` for testing new UI\ndesigns and features",
"is_bot": false,
"headline": "Setup new `flipbook-next` workspace (#467)",
"author_name": "pashleyy",
"author_login": "passhley",
"committed_at": "2026-01-02T23:34:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8deec0c14bd7494cc5c41987684f9e4facaa5695",
"body": "# Problem\n\nWe're now primarily using Foundation which comes with its own themeing.\nAs such, we're now at a point where we can say goodbye to the\nTailwind-based theme we've been using\n\n# Solution\n\nI've gone ahead and removed the `themes.luau` and `tailwind.luau` files\nand adjusted the remaining usage\n[…]\nne of the purple colors in the Extended\npalette, and the latter is just using the same #333333 color as before.\nOnly reason this is a hook instead of stored in constants is because of\nthe tokens usage",
"is_bot": false,
"headline": "Remove the rest of the Tailwind-based theme (#463)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2025-12-31T20:18:33Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "7e790a38c62e292aa8cf898d7753ca9d1f965c2d",
"body": "# Problem\n\nDeployments for the development plugin have been failing since Dec 22.\nProd will also hit this same issue on the next release\n\n# Solution\n\nWhen I changed the behavior of the build script to require the\n`--plugin` flag to export an rbxm, this inadvertently broke the release\nworkflow for th\n[…]\ny able to update\nthe publish-plugin script to take in the new flag and verified the dev\nplugin deploys\n\n# Release notes\n\nFixed a bug where the development and production plugins were failing to\ndeploy",
"is_bot": false,
"headline": "Fix plugin deployments (#464)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2025-12-31T20:18:25Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "2ffba6285c6eb0a3b9ee4f88e4397cc33edfef18",
"body": "# Problem\n\n#407\n\nFlipbook's current theme gets passed as a prop to a story's StoryProps.\nOr rather, that's what should be happening, but we only pass a static\n\"Dark\" value for it.\n\n# Solution\n\nTo address this issue properly I needed to dig into Storyteller to\nimprove how it will build out the final \n[…]\nRelease notes\n\nFixed a bug where the `theme` prop passed to a story would always equal\n`\"Dark\"`. This prop is now dynamic and will update (and trigger a\nre-render for your story) when switching themes",
"is_bot": false,
"headline": "UI theme is passed as StoryProps (#409)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2025-12-26T20:49:05Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "a004ad52d51f3b5ace2dfb855f7adb4bb25e89b5",
"body": "# Problem\n\nWe have a lot of useful functions for our Lute scripts that would be\nnice to share between our repos\n\n# Solution\n\nI created https://github.com/flipbook-labs/flipbook-batteries to act as\na dumping grounds for useful Luau/Lute modules that we want to share\nbetween repos. This PR consumes Fl\n[…]\nook-batteries](https://github.com/flipbook-labs/flipbook-batteries)\npackage which holds all of Flipbook's reusable Luau/Lute modules and is\nshared across the other repos we maintain, like Storyteller.",
"is_bot": false,
"headline": "Flipbook Batteries (#457)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2025-12-23T20:52:38Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "d356bef4608632dd3b2d7b34dbd498c946e72ee5",
"body": "# Problem\n\nIt would be useful to have logs at various points in the codebase.\nParticularly for core events like app start/stop, but also granular logs\nfor http requests, page navigation, and anything else where it would be\nuseful to have logs to trace the path a user took to reach an error\n\n# Soluti\n[…]\n without\nspamming the Output window.\n\n<img width=\"1317\" height=\"803\" alt=\"Screenshot 2025-12-23 at 12 37\n48 PM\"\nsrc=\"https://github.com/user-attachments/assets/dc476fa8-b813-4f3c-85be-d0137222be6c\"\n/>",
"is_bot": false,
"headline": "Logging with new history view (#413)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2025-12-23T20:38:13Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "730110a2d062312ae388f57408274f0426466b1b",
"body": "# Problem\n\nCurrently Flipbook can only be built by doing a full rebuild. We should\ninstead perform incremental rebuilds\n\n# Solution\n\nLot going on in this PR, to summarize:\n\n1. `compileWorkspaceMember` has been hoisted out of `compile.luau` to\nits own module and renamed to `compileWorkspaceMemberAsyn\n[…]\ntal builds you can now run:\n\n```sh\n$ lute scripts/build.luau --channel dev --no-reload --watch\n```\n\nAnd then run the following to serve the build:\n\n```sh\n$ rojo serve dev.project.json\n```\n\nCloses #460",
"is_bot": false,
"headline": "Incremental rebuilds (#461)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2025-12-22T22:43:59Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "0ad6f5e6c8e42b58c470275e7fc407d0f6d98f8a",
"body": "… (#462)\n\n# Problem\n\nWe use a mix of aliased paths and relative paths in our Lute scripts and\ntheir modules. For consistency with the workspace, we should exclusively\nuse absolute paths\n\n# Solution\n\nAdded a new `@scripts` alias and updated all of the import paths to use\nthat instead of relative paths",
"is_bot": false,
"headline": "Convert all Lute script imports to use absolute paths for consistency…",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2025-12-22T18:59:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "12d6b17ecea04d13896f6fde87b04764b3ac502a",
"body": "This PR upgrades Lute from 20251210 to 20251220 (10 day difference).\nThere were some breaking changes to the `fs` library so I've also\nupdated our usage to fix those issues",
"is_bot": false,
"headline": "Lute upgrade (#455)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2025-12-22T18:46:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "48abfbcaeb6560e451787dee929c8a5774425289",
"body": "# Problem\n\nRobloxPackages is installed into `workspace/flipbook-core` with no way\nfor other workspace members to access it.\n\nMore info about this issue can be found here: #456 \n\n# Solution\n\nI've hoisted all packages to the root of the repo. There is now a\ncentral `wally.toml`, and workspace members \n[…]\nk test locally to see if I could import and use Foundation\nin `workspace/example/src/OrphanedStory.story.luau` and it Just Works,\nso hopefully this is true for all other workspace members\n\nCloses #456",
"is_bot": false,
"headline": "Shareable RobloxPackages (#458)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2025-12-21T22:30:57Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "3f7702acea16a2c6d955a7052a4023052fae53a6",
"body": "Getting a version bump ready to go for the next release.\n\nAlso fixes the positional arguments for bump-version.luau",
"is_bot": false,
"headline": "Bump to v2.4.0 (#452)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2025-12-21T22:23:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "772004c23ca534d77cf5f3293696e25cd3372a4e",
"body": "# Problem\n\nThe backend service takes care of everything relating to posting\nfeedback now, so we no longer need the supplementary feedback workflow\n\n# Solution\n\nSimply removed the feedback workflow",
"is_bot": false,
"headline": "Remove feedback workflow (#450)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2025-12-21T22:07:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "65d771de71cd8ae3387ecf68d4e59ab3149a12cd",
"body": "# Problem\n\nLute has had crashes in the past when spawning processes on\n`ubuntu-latest` runners. This issue looks to be resolved, so we should\nswitch off of the more expensive `macos-latest` runners\n\n# Solution\n\nSwitched all jobs from `macos-latest` back to `ubuntu-latest`\n\nCloses #431",
"is_bot": false,
"headline": "Switch back to ubuntu-latest runners (#451)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2025-12-21T22:06:51Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5a9c9c63c52d6dd35f18d7dd1bfab5b56f6af70b",
"body": "# Problem\n\nThere was a very noticeable difference in the heights of the `<Topbar\n/>` and the end of where the search bar was and where the file tree\nbegan.\n\n# Solution\n\nFixed this as well as shrunk down the `<Topbar />` buttons back to\n`InputSize.Small`. This may be a personal preference, but I'm trying to\nmaximize viewport areas as much as possible.",
"is_bot": false,
"headline": "Fix height misalignment between search and topbar (#454)",
"author_name": "pashleyy",
"author_login": "passhley",
"committed_at": "2025-12-21T22:04:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "631969c41ee892b3280d096966cbd1da0ab005ec",
"body": "# Problem\n\nWhen trying to copy code from our `<CodeBlock />` component, it was full\nof the rich text from our Highlighter code.\n\n# Solution\n\nSwap between the original source text and the highlighted version\ndepending on if it's focused or not. This does still have it's own\nlittle issue where you need to tap on the code block once so it swaps\nfirst before it lets you start highlighting it all.",
"is_bot": false,
"headline": "Fix/improve code block copying qol (#453)",
"author_name": "pashleyy",
"author_login": "passhley",
"committed_at": "2025-12-21T22:04:03Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "704fbd5bf477fcf6f6b24e90f7248504d6b9ac77",
"body": "# Problem\n\nThe build hash comes from a `git rev-parse` command which has been quite\nbrittle from switching between Lute versions and how its stdio behavior\nworks between those versions\n\n# Solution\n\nI explicitly set stdio to `default` which looks to fix the issue. I've\nalso included an assert to make sure this gets caught by CI.",
"is_bot": false,
"headline": "Fix the build hash not being set (again) (#444)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2025-12-15T17:08:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5878f7e49bc26834ddb1e344ffeb7651ff51a866",
"body": "Forgot to remove this when merging #435",
"is_bot": false,
"headline": "Remove a lingering debug print (#439)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2025-12-15T17:08:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "37d769292dc634468f3b7eb025dedf5d1dbae5a9",
"body": "# Problem\n\nStoryteller has received a bunch of updates to how it handles the\ndiscovery of Instances in the DataModel. The behavior around\nStory/Storybook modules being added/removed/changed should work a lot\nmore consistently now\n\n# Solution\n\nI went off into Storyteller for a while and fixed up a lo\n[…]\n. Like when adding/removing/changing\nStorybooks or Stories.\n\nCloses #278 \n\nAnd the primary reason I did all this was to resolve the release blocker\naround orphaned stories not showing up.\n\nCloses #434",
"is_bot": false,
"headline": "Upgrade Storyteller to 1.4.0 (#435)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2025-12-12T20:30:27Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "95b62019d378d09745482c28ba969199baa83d54",
"body": "# Problem\n\nThis has been plaguing me for weeks now. I've had no trouble building\nFlipbook on my personal laptop, but my work one keeps hitting various\nerrors that stem from #405\n\nSee this issue for more details:\nhttps://github.com/luau-lang/lute/issues/579\n\n# Solution\n\nUpgrading Lute and switching f\n[…]\nures, and it's all working\nconsistently enough that I'm inclined to believe the issue is resolved.\nThis could still be a false positive but I'd like to move forward with\nthe change and see how it goes",
"is_bot": false,
"headline": "Fix builds on my work laptop (#437)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2025-12-12T20:13:57Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "6dc6d490486a2eddbcd09541b380c91e0c6c32f7",
"body": "Simply upgrading the Lute version, along with updating the batteries\ncommit to match",
"is_bot": false,
"headline": "Upgrade Lute to a newer nightly version (#433)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2025-11-18T18:32:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "44cd8e1c6cfef3427fe2d3db71d6b52d5630519e",
"body": "# Problem\n\nBecause I just released a minor version of Storyteller builds are now\nimplicitly pulling in that version instead of staying pinned to the\nprevious version\n\n# Solution\n\nTo address this we need to include our Wally lockfiles. This ensures\nthat any two machines will install the same set of packages",
"is_bot": false,
"headline": "Include lockfiles for reproducible builds (#436)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2025-11-18T18:17:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d034bb3629554f7ee58cab0e1ce7ac008e96147b",
"body": "# Problem\n\nOur packages are behind several Roblox releases now. We're on 0.693 and\nthe latest is 0.697.\n\n# Solution\n\nI've updated the install script to pull in the latest packages from\n0.697 and fixed up the analysis errors and build errors that resulted\nfrom the change\n\nCloses #424",
"is_bot": false,
"headline": "Update Roblox packages to 0.697 (#429)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2025-11-11T23:29:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0dc71327975783cf3db9b42171e18b8dfebd2e15",
"body": "# Problem\n\nThe `publish-nightly-plugin` job is using `ubuntu-latest` but there is a\nbug in Lute that causes process spawning to fail for that OS. (See\nhttps://github.com/luau-lang/lute/issues/440)\n\n# Solution\n\nI've switched the job over to using `macos-latest` like the other\nrelease jobs. This should hopefully fix the issue once merged",
"is_bot": false,
"headline": "Try to fix publishing the nightly plugin (#432)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2025-11-11T23:25:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1e551fff8dd7f0019aa0845cabb77723a4f3da71",
"body": "# Problem\n\nOur tree view in the sidebar has some issues where state updates impact\nthe entire tree, leading to some nasty bugs like pinning a storybook\nresetting the expanded state for all nodes.\n\n# Solution\n\nI'm taking a heavy-handed approach and refactoring TreeViewContext to\nuse Signals. The end-\n[…]\no in the sidebar\n- [x] Select, deselect, and reselect the same story\n- [x] Unknown stories don't open\n- [x] Last opened story does not re-open when closing and reopening the\nplugin in the same session",
"is_bot": false,
"headline": "Brand new tree view with Signals (#421)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2025-11-08T18:38:54Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "9826c138091fba59c817e48af18c397f151ea51b",
"body": "# Problem\n\nBecause the build hash isn't being set (#426) the server is failing to\ndispatch the feedback workflow. Once that PR is merged feedback posting\nshould work again, but that field (and all build fields) shouldn't block\nfeedback being posted like this\n\n# Solution\n\nThis PR updates the `feedbac\n[…]\n86b5b-a82f-403a-bc19-ab076239fa78\"\n/>\n\nThe user still can't submit feedback when empty, but now it won't appear\nlike they've done something wrong when they haven't even touched the\nfields\n\nCloses #423",
"is_bot": false,
"headline": "Fix feedback not getting posted (#428)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2025-11-02T23:34:05Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "1863e994cc4a319441d8a5c05120cf9cf3ec986c",
"body": "# Problem\n\nAfter switching to Lute the `BUILD_HASH` global stopped getting set\n\n# Solution\n\nTurns out I was supplying the wrong default for Lute's `stdio`. We're\nnow properly falling back to its default which is propagating\n`result.stdout` so we can now actually do something with the output of a\ncommand\n\nAlso threw in a bonus change to properly print out the globals being\nset. Just doing `print(env)` was spitting out the table address, not a\npretty-printed version like Lune does",
"is_bot": false,
"headline": "Fix BUILD_HASH not getting set (#426)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2025-11-02T23:31:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6d8978920e677764f6ad2bd319d35157668b8c81",
"body": "Now we should see in-progress deployments for the prod and nightly\nplugins on the repo homepage\n\nCloses #402",
"is_bot": false,
"headline": "Deployment environments (#406)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2025-11-02T23:28:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1cd83177164d75e6e653ee98f5b837beea9641e6",
"body": "# Problem\n\nI somehow forgot to include the parallelization in #400 that makes build\ntimes so much faster\n\n# Solution\n\nI've pushed up the changes I had lingering on my machine so now build\ntimes will _actually_ be ~5s instead of 10s",
"is_bot": false,
"headline": "Parallelize build tasks (#405)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2025-11-02T23:26:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0c42b2d9a64abf9ea1b19ea94b642eb2c473413b",
"body": "# Problem\n\nWe want to be able to collect feedback from folks that may not have a\nDiscord or GitHub account to get in contact through the usual channels\n\n# Solution\n\nThe solution I've put together involves a new feedback submission\ndialog. It can be accessed from Help > Send feedback\n\n<img width=\"317\n[…]\n without meaning to exit.\n\n<img width=\"508\" height=\"189\" alt=\"Screenshot 2025-10-21 at 2 45 47 PM\"\nsrc=\"https://github.com/user-attachments/assets/876fedfa-e75d-4dd6-84fc-d2f2f538b5e7\"\n/>\n\nCloses #342",
"is_bot": false,
"headline": "Send feedback directly from the plugin (#343)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2025-10-25T21:54:56Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "7214004a40d6745f413548718bac0d9284289393",
"body": "# Problem\n\nI was able to merge #399 with no issue, only to discover later that the\nplugin started crashing from a bad require path\n\n# Solution\n\nTo address this, I've added a smoketest for PluginApp to make sure it\ncan be rendered. There could still be breakages in `init.server.luau`\nthat could slip through but this should be a good first step and help\ncatch future issues\n\nCloses #404",
"is_bot": false,
"headline": "Add a smoketest to catch crashes (#408)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2025-10-25T01:22:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "007ecab74461035e7fca054efb251d2802ab1114",
"body": "# Problem\n\nSeems like some mix of #403 and #401 being merged together resulted in\nthe install script failing to setup the patches to the React/Roact\nlinkers in RobloxPackages\n\n```\n 09:17:03.320 Error: attempt to index nil with 'useMemo' - Edit - makeConsoleImpl:62\n 09:17:03.320 PluginDebugServ\n[…]\nnce that's the\none that triggered the failure. Passes in this PR, and I mirrored it in\n#408. Passes here, fails there, so once merged we should have better\ncertainty that this issue won't happen again",
"is_bot": false,
"headline": "Fix patches for React (#419)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2025-10-25T01:13:18Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "dcc577f0e4ca35c2b6742ce5f0d39405685f0de0",
"body": "# Problem\n\n[Lute](https://github.com/luau-lang/lute) is a Luau runtime direct from\nthe Luau team and we want to start using that instead of Lune to bolster\nthe Lute ecosystem and help propel the project forward\n\n# Solution\n\nRewrote all Lune scripts for use with Lute\n\nCloses #397",
"is_bot": false,
"headline": "Migrate to Lute (#401)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2025-10-24T14:04:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7ae2efd31cb18028ce1c966d3812ca30170c2fcc",
"body": "# Problem\n\nIt looks like #399 resulted in the entire plugin crashing from a missing\ndependency\n\n# Solution\n\nThe issue was that ReactReconciler in RobloxPackages was looking for\nPromise which had been incorrectly pruned. To fix the issue I've\nexplicitly included Promise as one of the dependencies to act as a quick\nfix.\n\nI'm also installing LuauPolyfill from Wally so we don't need to dip into\nRobloxPackages for anything but the essentials",
"is_bot": false,
"headline": "Whole plugin is broken (#403)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2025-10-24T13:52:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "56f03d96f8d67f060f3a850cea9681261513f0a9",
"body": "# Problem\n\nOur builds are taking around 10s on average which is feeling quite slow\nfor the work being done\n\n# Solution\n\nWe're now running a lot of the build jobs in parallel. Speeds things up\na bunch!\n\nHere's a comparison of running `lune run build --channel dev` off `main`\nand this PR:\n\n| Run | Be\n[…]\nter |\n| ---- | ------ | ----- |\n| 1 | 9.86 | 4.27s |\n| 2 | 10.25 | 4.28s |\n| 3 | 10.20 | 4.59s |\n| 4 | 10.42 | 5.14s |\n| 5 | 10.08 | 5.10s |\n| Avg. | 10.16s | 4.68s |\n\nCloses #398",
"is_bot": false,
"headline": "Improve build times (#400)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2025-10-15T17:22:31Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "81b8bc9471d4198cf727686807e8d2990bdeed6b",
"body": "# Problem\n\nWe want to start collecting anonymized usage metrics to better\nunderstand things like how many daily active users the plugin has,\nsession duration, and which features are being used\n\n# Solution\n\nTo accomplish this, Flipbook now has a backend service it will send\nevents to for users that d\n[…]\nptedOut\n\nThe user is presented with a dialog upon opening the plugin that prompts\nthem to either remain opted-in or to opt-out.\n\nAfterwards events will be sent to the backend if opted-in.\n\nCloses #356",
"is_bot": false,
"headline": "Anonymized usage metrics (#392)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2025-10-15T16:54:19Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "207a999a88cd960ca77bf7624df0a4285577cc01",
"body": "# Problem\n\nFlipbook's unzipped prod bundle size is way too big, and most of it\ncomes from RobloxPackages\n\n# Solution\n\nBumped `roblox-packages` to 0.3.0. We now only include the dependencies\nwe use. Most of the work came from\nhttps://github.com/flipbook-labs/roblox-packages/pull/7\n\nWith this change a prod build of Flipbook goes from a hefty 42 MB\nunzipped to 26 MB!!\n\nCloses #363",
"is_bot": false,
"headline": "Reduce bundle size (#399)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2025-10-14T17:05:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "98ca1f0f4e863ae4b4b4954c10d10d84398838e5",
"body": "# Problem\n\nWe want a right-click context menu for storybooks to allow users to\nperform some extra actions\n\n# Solution\n\nI've introduced a new right-click menu for storybooks that includes\nPin/Unpin and \"Select in Explorer\" options. The former will pin\nstorybooks to the top of the UI to make it easier\n[…]\n the user commonly uses. The latter is just a nicety to jump\nto the DataModel from Flipbook\n\nCloses #305, closes #291 \n\n\nhttps://github.com/user-attachments/assets/2843f78d-6484-4d53-893e-f79a50d11afc",
"is_bot": false,
"headline": "Right-click context menu for Storybooks (#370)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2025-10-13T00:01:33Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "27f51871022986af0334e23045123bcbc174f423",
"body": "# Problem\n\nIn projects that have a ton of Storybooks it can be hard to keep track\nof the ones that are relevant to you\n\n# Solution\n\nAllow storybooks to be pinned to the top to make it easy to go back to\nthem later\n\nPinning will persist across Studio sessions so long as the storybooks\nremain at the same path in the DataModel\n\n> [!NOTE]\n> This PR does not include a way to actually perform a pin/unpin. That\nwill be included in #370 as one of the first context menu actions",
"is_bot": false,
"headline": "Pin favorite storybooks to the top (#317)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2025-10-09T19:16:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2d300e9e2446e4ac1bd56aeffb512223b19c773c",
"body": "# Problem\n\nWhen building with the `--watch` flag the build folders are actually\nbeing included in the files to watch. This results in an infinite build\nloop where after the first change, Flipbook will be built, the watcher\nwill think there's a new change, and then rebuild forever\n\n# Solution\n\nPatched this by adding some exclusion patterns. Also revised how we\ndiscover the files to watch so it should be performing less iterations\nover the filesystem\n\nCloses #387",
"is_bot": false,
"headline": "Fix file watcher getting stuck in a loop (#388)",
"author_name": "Marin Minnerly",
"author_login": "vocksel",
"committed_at": "2025-10-09T19:13:52Z",
"body_truncated": false,
"is_coding_agent": false
}
],
"releases_count": 13,
"commits_last_year": 136,
"latest_release_at": "2026-04-10T15:51:08Z",
"latest_release_tag": "v2.5.0",
"releases_from_tags": false,
"days_since_last_push": 5,
"active_weeks_last_year": 35,
"days_since_latest_release": 116,
"mean_days_between_releases": 127.4
},
"artifacts": {
"collected": true,
"structure": [],
"declarations": []
},
"community": {
"has_readme": true,
"has_license": true,
"readme_badges": {
"hosts": [
"shields.io"
],
"total": 4,
"header": 4,
"collected": true,
"has_inspect_badge": false
},
"has_description": true,
"has_contributing": false,
"health_percentage": 50,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": true
},
"ecosystem": {
"packages": []
},
"popularity": {
"forks": 10,
"stars": 123,
"watchers": 5,
"fork_history": {
"days": [
{
"date": "2022-06-13",
"count": 1
},
{
"date": "2023-02-28",
"count": 1
},
{
"date": "2023-04-01",
"count": 1
},
{
"date": "2023-06-13",
"count": 1
},
{
"date": "2023-08-11",
"count": 1
},
{
"date": "2023-12-02",
"count": 1
},
{
"date": "2024-06-23",
"count": 1
},
{
"date": "2025-12-20",
"count": 1
},
{
"date": "2026-04-15",
"count": 1
},
{
"date": "2026-04-16",
"count": 1
}
],
"complete": true,
"collected": 10,
"total_forks": 10
},
"star_history": null,
"open_issues_and_prs": 88
},
"ai_readiness": {
"has_nix": false,
"example_dirs": [
"example",
"examples"
],
"has_llms_txt": false,
"has_dockerfile": false,
"has_mcp_signal": false,
"bootstrap_files": [],
"api_schema_files": [],
"has_devcontainer": false,
"typecheck_configs": [
"docs/tsconfig.json"
],
"toolchain_manifests": [],
"largest_source_bytes": 1686,
"source_files_sampled": 5,
"oversized_source_files": 0,
"agent_instruction_files": [
"AGENTS.md",
"CLAUDE.md"
],
"agent_instruction_max_bytes": 12585
},
"dependencies": {
"manifests": [
"docs/package.json"
],
"advisories": {
"error": null,
"scope": "repository_graph",
"source": "osv",
"findings": [
{
"name": "shell-quote",
"direct": false,
"version": "1.8.1",
"severity": "critical",
"ecosystem": "npm",
"cvss_score": 9.8,
"advisory_ids": [
"GHSA-395f-4hp3-45gv",
"GHSA-w7jw-789q-3m8p"
],
"fixed_version": "1.9.0",
"advisory_count": 2,
"oldest_advisory_days": 56
},
{
"name": "@babel/plugin-transform-modules-systemjs",
"direct": false,
"version": "7.25.9",
"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": 88
},
{
"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-mh99-v99m-4gvg",
"GHSA-rgw5-rvv9-x895",
"GHSA-v6h2-p8h4-qcjw"
],
"fixed_version": "5.0.9",
"advisory_count": 5,
"oldest_advisory_days": 421
},
{
"name": "fast-uri",
"direct": false,
"version": "3.0.3",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-4c8g-83qw-93j6",
"GHSA-7p8r-x3mc-p8w7",
"GHSA-q3j6-qgpj-74h6",
"GHSA-v2hh-gcrm-f6hx",
"GHSA-v39h-62p7-jpjc"
],
"fixed_version": "4.1.2",
"advisory_count": 5,
"oldest_advisory_days": 88
},
{
"name": "image-size",
"direct": false,
"version": "1.1.1",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-m5qc-5hw7-8vg7"
],
"fixed_version": "2.0.2",
"advisory_count": 1,
"oldest_advisory_days": 489
},
{
"name": "js-yaml",
"direct": false,
"version": "3.14.1",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-52cp-r559-cp3m",
"GHSA-h67p-54hq-rp68",
"GHSA-mh29-5h37-fv8m"
],
"fixed_version": "4.3.0",
"advisory_count": 3,
"oldest_advisory_days": 263
},
{
"name": "js-yaml",
"direct": false,
"version": "4.1.0",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-52cp-r559-cp3m",
"GHSA-h67p-54hq-rp68",
"GHSA-mh29-5h37-fv8m"
],
"fixed_version": "4.3.0",
"advisory_count": 3,
"oldest_advisory_days": 263
},
{
"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": 195
},
{
"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": 167
},
{
"name": "node-forge",
"direct": false,
"version": "1.3.1",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 8.6,
"advisory_ids": [
"GHSA-2328-f5f3-gj25",
"GHSA-554w-wpv2-vw27",
"GHSA-5gfm-wpxj-wjgq",
"GHSA-5m6q-g25r-mvwx",
"GHSA-65ch-62r8-g69g",
"GHSA-ppp5-5v6c-4jwp",
"GHSA-q67f-28xg-22rw"
],
"fixed_version": "1.4.0",
"advisory_count": 7,
"oldest_advisory_days": 251
},
{
"name": "path-to-regexp",
"direct": false,
"version": "0.1.10",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-37ch-88jc-xwx2",
"GHSA-rhx6-c78j-4q9w"
],
"fixed_version": "0.1.13",
"advisory_count": 2,
"oldest_advisory_days": 607
},
{
"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": 132
},
{
"name": "postcss",
"direct": false,
"version": "8.4.49",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-6g55-p6wh-862q",
"GHSA-fxqj-rqcc-2cmp",
"GHSA-qx2v-qp2m-jg93",
"GHSA-r28c-9q8g-f849"
],
"fixed_version": "8.5.23",
"advisory_count": 4,
"oldest_advisory_days": 102
},
{
"name": "serialize-javascript",
"direct": false,
"version": "6.0.2",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 8.1,
"advisory_ids": [
"GHSA-5c6j-r48x-rmvq",
"GHSA-qj8w-gfj5-8c6v"
],
"fixed_version": "7.0.5",
"advisory_count": 2,
"oldest_advisory_days": 158
},
{
"name": "svgo",
"direct": false,
"version": "3.3.2",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 8.2,
"advisory_ids": [
"GHSA-2p49-hgcm-8545",
"GHSA-xpqw-6gx7-v673"
],
"fixed_version": "4.0.2",
"advisory_count": 2,
"oldest_advisory_days": 153
},
{
"name": "uuid",
"direct": false,
"version": "8.3.2",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-w5hq-g745-h8pq"
],
"fixed_version": "13.0.1",
"advisory_count": 1,
"oldest_advisory_days": 104
},
{
"name": "websocket-driver",
"direct": false,
"version": "0.7.4",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-mp7j-qc5w-4988",
"GHSA-xv26-6w52-cph6"
],
"fixed_version": "0.7.5",
"advisory_count": 2,
"oldest_advisory_days": 20
},
{
"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": 50
},
{
"name": "ws",
"direct": false,
"version": "8.18.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": 78
},
{
"name": "@babel/helpers",
"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": 511
},
{
"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": 511
},
{
"name": "@babel/runtime-corejs3",
"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": 511
},
{
"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": 174
},
{
"name": "ajv",
"direct": false,
"version": "8.17.1",
"severity": "moderate",
"ecosystem": "npm",
"cvss_score": 5.3,
"advisory_ids": [
"GHSA-2g4f-4pwh-qvx6"
],
"fixed_version": "8.18.0",
"advisory_count": 1,
"oldest_advisory_days": 174
},
{
"name": "estree-util-value-to-estree",
"direct": false,
"version": "3.2.1",
"severity": "moderate",
"ecosystem": "npm",
"cvss_score": 6.5,
"advisory_ids": [
"GHSA-f7f6-9jq7-3rqj"
],
"fixed_version": "3.3.3",
"advisory_count": 1,
"oldest_advisory_days": 484
},
{
"name": "follow-redirects",
"direct": false,
"version": "1.15.9",
"severity": "moderate",
"ecosystem": "npm",
"cvss_score": 5.3,
"advisory_ids": [
"GHSA-r4q5-vmmm-2653"
],
"fixed_version": "1.16.0",
"advisory_count": 1,
"oldest_advisory_days": 113
},
{
"name": "http-proxy-middleware",
"direct": false,
"version": "2.0.7",
"severity": "moderate",
"ecosystem": "npm",
"cvss_score": 5.3,
"advisory_ids": [
"GHSA-4www-5p9h-95mh",
"GHSA-64mm-vxmg-q3vj",
"GHSA-9gqv-wp59-fq42"
],
"fixed_version": "4.1.0",
"advisory_count": 3,
"oldest_advisory_days": 477
},
{
"name": "joi",
"direct": false,
"version": "17.13.3",
"severity": "moderate",
"ecosystem": "npm",
"cvss_score": 5.3,
"advisory_ids": [
"GHSA-q7cg-457f-vx79"
],
"fixed_version": "18.2.1",
"advisory_count": 1,
"oldest_advisory_days": 54
},
{
"name": "mdast-util-to-hast",
"direct": false,
"version": "13.2.0",
"severity": "moderate",
"ecosystem": "npm",
"cvss_score": 5.3,
"advisory_ids": [
"GHSA-4fh9-h7wg-q85m"
],
"fixed_version": "13.2.1",
"advisory_count": 1,
"oldest_advisory_days": 246
},
{
"name": "nanoid",
"direct": false,
"version": "3.3.7",
"severity": "moderate",
"ecosystem": "npm",
"cvss_score": 4.3,
"advisory_ids": [
"GHSA-mwcw-c2x4-8c55"
],
"fixed_version": "5.0.9",
"advisory_count": 1,
"oldest_advisory_days": 604
},
{
"name": "prismjs",
"direct": false,
"version": "1.29.0",
"severity": "moderate",
"ecosystem": "npm",
"cvss_score": 4.9,
"advisory_ids": [
"GHSA-x7hr-w5r2-h6wg"
],
"fixed_version": "1.30.0",
"advisory_count": 1,
"oldest_advisory_days": 519
},
{
"name": "qs",
"direct": false,
"version": "6.13.0",
"severity": "moderate",
"ecosystem": "npm",
"cvss_score": 5.3,
"advisory_ids": [
"GHSA-6rw7-vpxm-498p",
"GHSA-q8mj-m7cp-5q26",
"GHSA-w7fw-mjwx-w883"
],
"fixed_version": "6.15.2",
"advisory_count": 3,
"oldest_advisory_days": 217
},
{
"name": "webpack-dev-server",
"direct": false,
"version": "4.15.2",
"severity": "moderate",
"ecosystem": "npm",
"cvss_score": 6.5,
"advisory_ids": [
"GHSA-4v9v-hfq4-rm2v",
"GHSA-79cf-xcqc-c78w",
"GHSA-9jgg-88mc-972h",
"GHSA-f5vj-f2hx-8m93",
"GHSA-m28w-2pqf-7qgj",
"GHSA-mx8g-39q3-5c79"
],
"fixed_version": "5.2.6",
"advisory_count": 6,
"oldest_advisory_days": 426
},
{
"name": "yaml",
"direct": false,
"version": "1.10.2",
"severity": "moderate",
"ecosystem": "npm",
"cvss_score": 4.3,
"advisory_ids": [
"GHSA-48c2-rrv3-qjmp"
],
"fixed_version": "2.8.3",
"advisory_count": 1,
"oldest_advisory_days": 132
},
{
"name": "@babel/core",
"direct": false,
"version": "7.26.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": 50
},
{
"name": "body-parser",
"direct": false,
"version": "1.20.3",
"severity": "low",
"ecosystem": "npm",
"cvss_score": 3.7,
"advisory_ids": [
"GHSA-v422-hmwv-36x6"
],
"fixed_version": "2.3.0",
"advisory_count": 1,
"oldest_advisory_days": 15
},
{
"name": "launch-editor",
"direct": false,
"version": "2.9.1",
"severity": "low",
"ecosystem": "npm",
"cvss_score": 0,
"advisory_ids": [
"GHSA-v6wh-96g9-6wx3"
],
"fixed_version": "8.0.16",
"advisory_count": 1,
"oldest_advisory_days": 50
},
{
"name": "on-headers",
"direct": false,
"version": "1.0.2",
"severity": "low",
"ecosystem": "npm",
"cvss_score": 3.4,
"advisory_ids": [
"GHSA-76c9-3jph-rj3q"
],
"fixed_version": "1.1.0",
"advisory_count": 1,
"oldest_advisory_days": 383
},
{
"name": "webpack",
"direct": false,
"version": "5.96.1",
"severity": "low",
"ecosystem": "npm",
"cvss_score": 3.7,
"advisory_ids": [
"GHSA-38r7-794h-5758",
"GHSA-8fgc-7cc6-rx7x"
],
"fixed_version": "5.104.1",
"advisory_count": 2,
"oldest_advisory_days": 180
}
],
"collected": true,
"malicious": [],
"truncated": false,
"by_severity": {
"low": 5,
"high": 18,
"critical": 1,
"moderate": 15
},
"advisory_count": 81,
"affected_count": 39,
"assessed_count": 1094,
"malicious_count": 0,
"assessed_package": null,
"unassessed_count": 0,
"direct_affected_count": 0
},
"ecosystems": [
"npm"
],
"dependencies": [],
"all_dependencies": {
"error": null,
"source": "github-sbom",
"packages": [
{
"name": "@algolia/autocomplete-core",
"direct": false,
"version": "1.17.7",
"ecosystem": "npm"
},
{
"name": "@algolia/autocomplete-plugin-algolia-insights",
"direct": false,
"version": "1.17.7",
"ecosystem": "npm"
},
{
"name": "@algolia/autocomplete-preset-algolia",
"direct": false,
"version": "1.17.7",
"ecosystem": "npm"
},
{
"name": "@algolia/autocomplete-shared",
"direct": false,
"version": "1.17.7",
"ecosystem": "npm"
},
{
"name": "@algolia/cache-browser-local-storage",
"direct": false,
"version": "4.24.0",
"ecosystem": "npm"
},
{
"name": "@algolia/cache-common",
"direct": false,
"version": "4.24.0",
"ecosystem": "npm"
},
{
"name": "@algolia/cache-in-memory",
"direct": false,
"version": "4.24.0",
"ecosystem": "npm"
},
{
"name": "@algolia/client-abtesting",
"direct": false,
"version": "5.14.2",
"ecosystem": "npm"
},
{
"name": "@algolia/client-account",
"direct": false,
"version": "4.24.0",
"ecosystem": "npm"
},
{
"name": "@algolia/client-analytics",
"direct": false,
"version": "4.24.0",
"ecosystem": "npm"
},
{
"name": "@algolia/client-analytics",
"direct": false,
"version": "5.14.2",
"ecosystem": "npm"
},
{
"name": "@algolia/client-common",
"direct": false,
"version": "4.24.0",
"ecosystem": "npm"
},
{
"name": "@algolia/client-common",
"direct": false,
"version": "5.14.2",
"ecosystem": "npm"
},
{
"name": "@algolia/client-insights",
"direct": false,
"version": "5.14.2",
"ecosystem": "npm"
},
{
"name": "@algolia/client-personalization",
"direct": false,
"version": "4.24.0",
"ecosystem": "npm"
},
{
"name": "@algolia/client-personalization",
"direct": false,
"version": "5.14.2",
"ecosystem": "npm"
},
{
"name": "@algolia/client-query-suggestions",
"direct": false,
"version": "5.14.2",
"ecosystem": "npm"
},
{
"name": "@algolia/client-search",
"direct": false,
"version": "4.24.0",
"ecosystem": "npm"
},
{
"name": "@algolia/client-search",
"direct": false,
"version": "5.14.2",
"ecosystem": "npm"
},
{
"name": "@algolia/events",
"direct": false,
"version": "4.0.1",
"ecosystem": "npm"
},
{
"name": "@algolia/ingestion",
"direct": false,
"version": "1.14.2",
"ecosystem": "npm"
},
{
"name": "@algolia/logger-common",
"direct": false,
"version": "4.24.0",
"ecosystem": "npm"
},
{
"name": "@algolia/logger-console",
"direct": false,
"version": "4.24.0",
"ecosystem": "npm"
},
{
"name": "@algolia/monitoring",
"direct": false,
"version": "1.14.2",
"ecosystem": "npm"
},
{
"name": "@algolia/recommend",
"direct": false,
"version": "4.24.0",
"ecosystem": "npm"
},
{
"name": "@algolia/recommend",
"direct": false,
"version": "5.14.2",
"ecosystem": "npm"
},
{
"name": "@algolia/requester-browser-xhr",
"direct": false,
"version": "4.24.0",
"ecosystem": "npm"
},
{
"name": "@algolia/requester-browser-xhr",
"direct": false,
"version": "5.14.2",
"ecosystem": "npm"
},
{
"name": "@algolia/requester-common",
"direct": false,
"version": "4.24.0",
"ecosystem": "npm"
},
{
"name": "@algolia/requester-fetch",
"direct": false,
"version": "5.14.2",
"ecosystem": "npm"
},
{
"name": "@algolia/requester-node-http",
"direct": false,
"version": "4.24.0",
"ecosystem": "npm"
},
{
"name": "@algolia/requester-node-http",
"direct": false,
"version": "5.14.2",
"ecosystem": "npm"
},
{
"name": "@algolia/transporter",
"direct": false,
"version": "4.24.0",
"ecosystem": "npm"
},
{
"name": "@ampproject/remapping",
"direct": false,
"version": "2.3.0",
"ecosystem": "npm"
},
{
"name": "@babel/code-frame",
"direct": false,
"version": "7.26.2",
"ecosystem": "npm"
},
{
"name": "@babel/compat-data",
"direct": false,
"version": "7.26.2",
"ecosystem": "npm"
},
{
"name": "@babel/core",
"direct": false,
"version": "7.26.0",
"ecosystem": "npm"
},
{
"name": "@babel/generator",
"direct": false,
"version": "7.26.2",
"ecosystem": "npm"
},
{
"name": "@babel/helper-annotate-as-pure",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/helper-builder-binary-assignment-operator-visitor",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/helper-compilation-targets",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/helper-create-class-features-plugin",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/helper-create-regexp-features-plugin",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/helper-define-polyfill-provider",
"direct": false,
"version": "0.6.3",
"ecosystem": "npm"
},
{
"name": "@babel/helper-member-expression-to-functions",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/helper-module-imports",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/helper-module-transforms",
"direct": false,
"version": "7.26.0",
"ecosystem": "npm"
},
{
"name": "@babel/helper-optimise-call-expression",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/helper-plugin-utils",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/helper-remap-async-to-generator",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/helper-replace-supers",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/helper-simple-access",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/helper-skip-transparent-expression-wrappers",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/helper-string-parser",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/helper-validator-identifier",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/helper-validator-option",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/helper-wrap-function",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/helpers",
"direct": false,
"version": "7.26.0",
"ecosystem": "npm"
},
{
"name": "@babel/parser",
"direct": false,
"version": "7.26.2",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-bugfix-firefox-class-in-computed-class-key",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-bugfix-safari-class-field-initializer-scope",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly",
"direct": false,
"version": "7.25.9",
"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-dynamic-import",
"direct": false,
"version": "7.8.3",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-syntax-import-assertions",
"direct": false,
"version": "7.26.0",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-syntax-import-attributes",
"direct": false,
"version": "7.26.0",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-syntax-jsx",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-syntax-typescript",
"direct": false,
"version": "7.25.9",
"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.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-async-generator-functions",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-async-to-generator",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-block-scoped-functions",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-block-scoping",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-class-properties",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-class-static-block",
"direct": false,
"version": "7.26.0",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-classes",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-computed-properties",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-destructuring",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-dotall-regex",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-duplicate-keys",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-duplicate-named-capturing-groups-regex",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-dynamic-import",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-exponentiation-operator",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-export-namespace-from",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-for-of",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-function-name",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-json-strings",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-literals",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-logical-assignment-operators",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-member-expression-literals",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-modules-amd",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-modules-commonjs",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-modules-systemjs",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-modules-umd",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-named-capturing-groups-regex",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-new-target",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-nullish-coalescing-operator",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-numeric-separator",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-object-rest-spread",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-object-super",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-optional-catch-binding",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-optional-chaining",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-parameters",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-private-methods",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-private-property-in-object",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-property-literals",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-react-constant-elements",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-react-display-name",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-react-jsx",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-react-jsx-development",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-react-pure-annotations",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-regenerator",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-regexp-modifiers",
"direct": false,
"version": "7.26.0",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-reserved-words",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-runtime",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-shorthand-properties",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-spread",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-sticky-regex",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-template-literals",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-typeof-symbol",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-typescript",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-unicode-escapes",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-unicode-property-regex",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-unicode-regex",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-unicode-sets-regex",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/preset-env",
"direct": false,
"version": "7.26.0",
"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.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/preset-typescript",
"direct": false,
"version": "7.26.0",
"ecosystem": "npm"
},
{
"name": "@babel/runtime",
"direct": false,
"version": "7.26.0",
"ecosystem": "npm"
},
{
"name": "@babel/runtime-corejs3",
"direct": false,
"version": "7.26.0",
"ecosystem": "npm"
},
{
"name": "@babel/template",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/traverse",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/types",
"direct": false,
"version": "7.26.0",
"ecosystem": "npm"
},
{
"name": "@colors/colors",
"direct": false,
"version": "1.5.0",
"ecosystem": "npm"
},
{
"name": "@discoveryjs/json-ext",
"direct": false,
"version": "0.5.7",
"ecosystem": "npm"
},
{
"name": "@docsearch/css",
"direct": false,
"version": "3.8.0",
"ecosystem": "npm"
},
{
"name": "@docsearch/react",
"direct": false,
"version": "3.8.0",
"ecosystem": "npm"
},
{
"name": "@docusaurus/babel",
"direct": false,
"version": "3.6.1",
"ecosystem": "npm"
},
{
"name": "@docusaurus/bundler",
"direct": false,
"version": "3.6.1",
"ecosystem": "npm"
},
{
"name": "@docusaurus/core",
"direct": false,
"version": "3.6.1",
"ecosystem": "npm"
},
{
"name": "@docusaurus/cssnano-preset",
"direct": false,
"version": "3.6.1",
"ecosystem": "npm"
},
{
"name": "@docusaurus/logger",
"direct": false,
"version": "3.6.1",
"ecosystem": "npm"
},
{
"name": "@docusaurus/mdx-loader",
"direct": false,
"version": "3.6.1",
"ecosystem": "npm"
},
{
"name": "@docusaurus/module-type-aliases",
"direct": false,
"version": "3.6.1",
"ecosystem": "npm"
},
{
"name": "@docusaurus/plugin-content-blog",
"direct": false,
"version": "3.6.1",
"ecosystem": "npm"
},
{
"name": "@docusaurus/plugin-content-docs",
"direct": false,
"version": "3.6.1",
"ecosystem": "npm"
},
{
"name": "@docusaurus/plugin-content-pages",
"direct": false,
"version": "3.6.1",
"ecosystem": "npm"
},
{
"name": "@docusaurus/plugin-debug",
"direct": false,
"version": "3.6.1",
"ecosystem": "npm"
},
{
"name": "@docusaurus/plugin-google-analytics",
"direct": false,
"version": "3.6.1",
"ecosystem": "npm"
},
{
"name": "@docusaurus/plugin-google-gtag",
"direct": false,
"version": "3.6.1",
"ecosystem": "npm"
},
{
"name": "@docusaurus/plugin-google-tag-manager",
"direct": false,
"version": "3.6.1",
"ecosystem": "npm"
},
{
"name": "@docusaurus/plugin-sitemap",
"direct": false,
"version": "3.6.1",
"ecosystem": "npm"
},
{
"name": "@docusaurus/preset-classic",
"direct": false,
"version": "3.6.1",
"ecosystem": "npm"
},
{
"name": "@docusaurus/react-loadable",
"direct": false,
"version": "6.0.0",
"ecosystem": "npm"
},
{
"name": "@docusaurus/theme-classic",
"direct": false,
"version": "3.6.1",
"ecosystem": "npm"
},
{
"name": "@docusaurus/theme-common",
"direct": false,
"version": "3.6.1",
"ecosystem": "npm"
},
{
"name": "@docusaurus/theme-search-algolia",
"direct": false,
"version": "3.6.1",
"ecosystem": "npm"
},
{
"name": "@docusaurus/theme-translations",
"direct": false,
"version": "3.6.1",
"ecosystem": "npm"
},
{
"name": "@docusaurus/tsconfig",
"direct": false,
"version": "3.6.1",
"ecosystem": "npm"
},
{
"name": "@docusaurus/types",
"direct": false,
"version": "3.6.1",
"ecosystem": "npm"
},
{
"name": "@docusaurus/utils",
"direct": false,
"version": "3.6.1",
"ecosystem": "npm"
},
{
"name": "@docusaurus/utils-common",
"direct": false,
"version": "3.6.1",
"ecosystem": "npm"
},
{
"name": "@docusaurus/utils-validation",
"direct": false,
"version": "3.6.1",
"ecosystem": "npm"
},
{
"name": "@hapi/hoek",
"direct": false,
"version": "9.3.0",
"ecosystem": "npm"
},
{
"name": "@hapi/topo",
"direct": false,
"version": "5.1.0",
"ecosystem": "npm"
},
{
"name": "@jest/schemas",
"direct": false,
"version": "29.6.3",
"ecosystem": "npm"
},
{
"name": "@jest/types",
"direct": false,
"version": "29.6.3",
"ecosystem": "npm"
},
{
"name": "@jridgewell/gen-mapping",
"direct": false,
"version": "0.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/trace-mapping",
"direct": false,
"version": "0.3.25",
"ecosystem": "npm"
},
{
"name": "@leichtgewicht/ip-codec",
"direct": false,
"version": "2.0.5",
"ecosystem": "npm"
},
{
"name": "@mdx-js/mdx",
"direct": false,
"version": "3.1.0",
"ecosystem": "npm"
},
{
"name": "@mdx-js/react",
"direct": false,
"version": "3.1.0",
"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": "@pnpm/config.env-replace",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "@pnpm/network.ca-file",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "@pnpm/npm-conf",
"direct": false,
"version": "2.3.1",
"ecosystem": "npm"
},
{
"name": "@polka/url",
"direct": false,
"version": "1.0.0-next.28",
"ecosystem": "npm"
},
{
"name": "@sideway/address",
"direct": false,
"version": "4.1.5",
"ecosystem": "npm"
},
{
"name": "@sideway/formula",
"direct": false,
"version": "3.0.1",
"ecosystem": "npm"
},
{
"name": "@sideway/pinpoint",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "@sinclair/typebox",
"direct": false,
"version": "0.27.8",
"ecosystem": "npm"
},
{
"name": "@sindresorhus/is",
"direct": false,
"version": "4.6.0",
"ecosystem": "npm"
},
{
"name": "@sindresorhus/is",
"direct": false,
"version": "5.6.0",
"ecosystem": "npm"
},
{
"name": "@slorber/remark-comment",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "@svgr/babel-plugin-add-jsx-attribute",
"direct": false,
"version": "8.0.0",
"ecosystem": "npm"
},
{
"name": "@svgr/babel-plugin-remove-jsx-attribute",
"direct": false,
"version": "8.0.0",
"ecosystem": "npm"
},
{
"name": "@svgr/babel-plugin-remove-jsx-empty-expression",
"direct": false,
"version": "8.0.0",
"ecosystem": "npm"
},
{
"name": "@svgr/babel-plugin-replace-jsx-attribute-value",
"direct": false,
"version": "8.0.0",
"ecosystem": "npm"
},
{
"name": "@svgr/babel-plugin-svg-dynamic-title",
"direct": false,
"version": "8.0.0",
"ecosystem": "npm"
},
{
"name": "@svgr/babel-plugin-svg-em-dimensions",
"direct": false,
"version": "8.0.0",
"ecosystem": "npm"
},
{
"name": "@svgr/babel-plugin-transform-react-native-svg",
"direct": false,
"version": "8.1.0",
"ecosystem": "npm"
},
{
"name": "@svgr/babel-plugin-transform-svg-component",
"direct": false,
"version": "8.0.0",
"ecosystem": "npm"
},
{
"name": "@svgr/babel-preset",
"direct": false,
"version": "8.1.0",
"ecosystem": "npm"
},
{
"name": "@svgr/core",
"direct": false,
"version": "8.1.0",
"ecosystem": "npm"
},
{
"name": "@svgr/hast-util-to-babel-ast",
"direct": false,
"version": "8.0.0",
"ecosystem": "npm"
},
{
"name": "@svgr/plugin-jsx",
"direct": false,
"version": "8.1.0",
"ecosystem": "npm"
},
{
"name": "@svgr/plugin-svgo",
"direct": false,
"version": "8.1.0",
"ecosystem": "npm"
},
{
"name": "@svgr/webpack",
"direct": false,
"version": "8.1.0",
"ecosystem": "npm"
},
{
"name": "@szmarczak/http-timer",
"direct": false,
"version": "5.0.1",
"ecosystem": "npm"
},
{
"name": "@trysound/sax",
"direct": false,
"version": "0.2.0",
"ecosystem": "npm"
},
{
"name": "@types/acorn",
"direct": false,
"version": "4.0.6",
"ecosystem": "npm"
},
{
"name": "@types/body-parser",
"direct": false,
"version": "1.19.5",
"ecosystem": "npm"
},
{
"name": "@types/bonjour",
"direct": false,
"version": "3.5.13",
"ecosystem": "npm"
},
{
"name": "@types/connect",
"direct": false,
"version": "3.4.38",
"ecosystem": "npm"
},
{
"name": "@types/connect-history-api-fallback",
"direct": false,
"version": "1.5.4",
"ecosystem": "npm"
},
{
"name": "@types/debug",
"direct": false,
"version": "4.1.12",
"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-jsx",
"direct": false,
"version": "1.0.5",
"ecosystem": "npm"
},
{
"name": "@types/express",
"direct": false,
"version": "4.17.21",
"ecosystem": "npm"
},
{
"name": "@types/express-serve-static-core",
"direct": false,
"version": "4.19.6",
"ecosystem": "npm"
},
{
"name": "@types/express-serve-static-core",
"direct": false,
"version": "5.0.1",
"ecosystem": "npm"
},
{
"name": "@types/gtag.js",
"direct": false,
"version": "0.0.12",
"ecosystem": "npm"
},
{
"name": "@types/hast",
"direct": false,
"version": "3.0.4",
"ecosystem": "npm"
},
{
"name": "@types/history",
"direct": false,
"version": "4.7.11",
"ecosystem": "npm"
},
{
"name": "@types/html-minifier-terser",
"direct": false,
"version": "6.1.0",
"ecosystem": "npm"
},
{
"name": "@types/http-cache-semantics",
"direct": false,
"version": "4.0.4",
"ecosystem": "npm"
},
{
"name": "@types/http-errors",
"direct": false,
"version": "2.0.4",
"ecosystem": "npm"
},
{
"name": "@types/http-proxy",
"direct": false,
"version": "1.17.15",
"ecosystem": "npm"
},
{
"name": "@types/istanbul-lib-coverage",
"direct": false,
"version": "2.0.6",
"ecosystem": "npm"
},
{
"name": "@types/istanbul-lib-report",
"direct": false,
"version": "3.0.3",
"ecosystem": "npm"
},
{
"name": "@types/istanbul-reports",
"direct": false,
"version": "3.0.4",
"ecosystem": "npm"
},
{
"name": "@types/json-schema",
"direct": false,
"version": "7.0.15",
"ecosystem": "npm"
},
{
"name": "@types/mdast",
"direct": false,
"version": "4.0.4",
"ecosystem": "npm"
},
{
"name": "@types/mdx",
"direct": false,
"version": "2.0.13",
"ecosystem": "npm"
},
{
"name": "@types/mime",
"direct": false,
"version": "1.3.5",
"ecosystem": "npm"
},
{
"name": "@types/ms",
"direct": false,
"version": "0.7.34",
"ecosystem": "npm"
},
{
"name": "@types/node",
"direct": false,
"version": "17.0.45",
"ecosystem": "npm"
},
{
"name": "@types/node",
"direct": false,
"version": "22.9.0",
"ecosystem": "npm"
},
{
"name": "@types/node-forge",
"direct": false,
"version": "1.3.11",
"ecosystem": "npm"
},
{
"name": "@types/parse-json",
"direct": false,
"version": "4.0.2",
"ecosystem": "npm"
},
{
"name": "@types/prismjs",
"direct": false,
"version": "1.26.5",
"ecosystem": "npm"
},
{
"name": "@types/prop-types",
"direct": false,
"version": "15.7.13",
"ecosystem": "npm"
},
{
"name": "@types/qs",
"direct": false,
"version": "6.9.17",
"ecosystem": "npm"
},
{
"name": "@types/range-parser",
"direct": false,
"version": "1.2.7",
"ecosystem": "npm"
},
{
"name": "@types/react",
"direct": false,
"version": "18.3.12",
"ecosystem": "npm"
},
{
"name": "@types/react-router",
"direct": false,
"version": "5.1.20",
"ecosystem": "npm"
},
{
"name": "@types/react-router-config",
"direct": false,
"version": "5.0.11",
"ecosystem": "npm"
},
{
"name": "@types/react-router-dom",
"direct": false,
"version": "5.3.3",
"ecosystem": "npm"
},
{
"name": "@types/retry",
"direct": false,
"version": "0.12.0",
"ecosystem": "npm"
},
{
"name": "@types/sax",
"direct": false,
"version": "1.2.7",
"ecosystem": "npm"
},
{
"name": "@types/send",
"direct": false,
"version": "0.17.4",
"ecosystem": "npm"
},
{
"name": "@types/serve-index",
"direct": false,
"version": "1.9.4",
"ecosystem": "npm"
},
{
"name": "@types/serve-static",
"direct": false,
"version": "1.15.7",
"ecosystem": "npm"
},
{
"name": "@types/sockjs",
"direct": false,
"version": "0.3.36",
"ecosystem": "npm"
},
{
"name": "@types/unist",
"direct": false,
"version": "2.0.11",
"ecosystem": "npm"
},
{
"name": "@types/unist",
"direct": false,
"version": "3.0.3",
"ecosystem": "npm"
},
{
"name": "@types/ws",
"direct": false,
"version": "8.5.13",
"ecosystem": "npm"
},
{
"name": "@types/yargs",
"direct": false,
"version": "17.0.33",
"ecosystem": "npm"
},
{
"name": "@types/yargs-parser",
"direct": false,
"version": "21.0.3",
"ecosystem": "npm"
},
{
"name": "@ungap/structured-clone",
"direct": false,
"version": "1.2.0",
"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": "@xtuc/ieee754",
"direct": false,
"version": "1.2.0",
"ecosystem": "npm"
},
{
"name": "@xtuc/long",
"direct": false,
"version": "4.2.2",
"ecosystem": "npm"
},
{
"name": "accepts",
"direct": false,
"version": "1.3.8",
"ecosystem": "npm"
},
{
"name": "acorn",
"direct": false,
"version": "8.14.0",
"ecosystem": "npm"
},
{
"name": "acorn-jsx",
"direct": false,
"version": "5.3.2",
"ecosystem": "npm"
},
{
"name": "acorn-walk",
"direct": false,
"version": "8.3.4",
"ecosystem": "npm"
},
{
"name": "address",
"direct": false,
"version": "1.2.2",
"ecosystem": "npm"
},
{
"name": "aggregate-error",
"direct": false,
"version": "3.1.0",
"ecosystem": "npm"
},
{
"name": "ajv",
"direct": false,
"version": "6.12.6",
"ecosystem": "npm"
},
{
"name": "ajv",
"direct": false,
"version": "8.17.1",
"ecosystem": "npm"
},
{
"name": "ajv-formats",
"direct": false,
"version": "2.1.1",
"ecosystem": "npm"
},
{
"name": "ajv-keywords",
"direct": false,
"version": "3.5.2",
"ecosystem": "npm"
},
{
"name": "ajv-keywords",
"direct": false,
"version": "5.1.0",
"ecosystem": "npm"
},
{
"name": "algoliasearch",
"direct": false,
"version": "4.24.0",
"ecosystem": "npm"
},
{
"name": "algoliasearch",
"direct": false,
"version": "5.14.2",
"ecosystem": "npm"
},
{
"name": "algoliasearch-helper",
"direct": false,
"version": "3.22.5",
"ecosystem": "npm"
},
{
"name": "ansi-align",
"direct": false,
"version": "3.0.1",
"ecosystem": "npm"
},
{
"name": "ansi-escapes",
"direct": false,
"version": "4.3.2",
"ecosystem": "npm"
},
{
"name": "ansi-html-community",
"direct": false,
"version": "0.0.8",
"ecosystem": "npm"
},
{
"name": "ansi-regex",
"direct": false,
"version": "5.0.1",
"ecosystem": "npm"
},
{
"name": "ansi-regex",
"direct": false,
"version": "6.1.0",
"ecosystem": "npm"
},
{
"name": "ansi-styles",
"direct": false,
"version": "4.3.0",
"ecosystem": "npm"
},
{
"name": "ansi-styles",
"direct": false,
"version": "6.2.1",
"ecosystem": "npm"
},
{
"name": "anymatch",
"direct": false,
"version": "3.1.3",
"ecosystem": "npm"
},
{
"name": "arg",
"direct": false,
"version": "5.0.2",
"ecosystem": "npm"
},
{
"name": "argparse",
"direct": false,
"version": "1.0.10",
"ecosystem": "npm"
},
{
"name": "argparse",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "array-flatten",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "array-union",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "astring",
"direct": false,
"version": "1.9.0",
"ecosystem": "npm"
},
{
"name": "at-least-node",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "autoprefixer",
"direct": false,
"version": "10.4.20",
"ecosystem": "npm"
},
{
"name": "babel-loader",
"direct": false,
"version": "9.2.1",
"ecosystem": "npm"
},
{
"name": "babel-plugin-dynamic-import-node",
"direct": false,
"version": "2.3.3",
"ecosystem": "npm"
},
{
"name": "babel-plugin-polyfill-corejs2",
"direct": false,
"version": "0.4.12",
"ecosystem": "npm"
},
{
"name": "babel-plugin-polyfill-corejs3",
"direct": false,
"version": "0.10.6",
"ecosystem": "npm"
},
{
"name": "babel-plugin-polyfill-regenerator",
"direct": false,
"version": "0.6.3",
"ecosystem": "npm"
},
{
"name": "bail",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "balanced-match",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "batch",
"direct": false,
"version": "0.6.1",
"ecosystem": "npm"
},
{
"name": "big.js",
"direct": false,
"version": "5.2.2",
"ecosystem": "npm"
},
{
"name": "binary-extensions",
"direct": false,
"version": "2.3.0",
"ecosystem": "npm"
},
{
"name": "body-parser",
"direct": false,
"version": "1.20.3",
"ecosystem": "npm"
},
{
"name": "bonjour-service",
"direct": false,
"version": "1.2.1",
"ecosystem": "npm"
},
{
"name": "boolbase",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "boxen",
"direct": false,
"version": "6.2.1",
"ecosystem": "npm"
},
{
"name": "boxen",
"direct": false,
"version": "7.1.1",
"ecosystem": "npm"
},
{
"name": "brace-expansion",
"direct": false,
"version": "1.1.11",
"ecosystem": "npm"
},
{
"name": "braces",
"direct": false,
"version": "3.0.3",
"ecosystem": "npm"
},
{
"name": "browserslist",
"direct": false,
"version": "4.24.2",
"ecosystem": "npm"
},
{
"name": "buffer-from",
"direct": false,
"version": "1.1.2",
"ecosystem": "npm"
},
{
"name": "bytes",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "bytes",
"direct": false,
"version": "3.1.2",
"ecosystem": "npm"
},
{
"name": "cacheable-lookup",
"direct": false,
"version": "7.0.0",
"ecosystem": "npm"
},
{
"name": "cacheable-request",
"direct": false,
"version": "10.2.14",
"ecosystem": "npm"
},
{
"name": "call-bind",
"direct": false,
"version": "1.0.7",
"ecosystem": "npm"
},
{
"name": "callsites",
"direct": false,
"version": "3.1.0",
"ecosystem": "npm"
},
{
"name": "camel-case",
"direct": false,
"version": "4.1.2",
"ecosystem": "npm"
},
{
"name": "camelcase",
"direct": false,
"version": "6.3.0",
"ecosystem": "npm"
},
{
"name": "camelcase",
"direct": false,
"version": "7.0.1",
"ecosystem": "npm"
},
{
"name": "caniuse-api",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "caniuse-lite",
"direct": false,
"version": "1.0.30001680",
"ecosystem": "npm"
},
{
"name": "ccount",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "chalk",
"direct": false,
"version": "4.1.2",
"ecosystem": "npm"
},
{
"name": "chalk",
"direct": false,
"version": "5.3.0",
"ecosystem": "npm"
},
{
"name": "char-regex",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "character-entities",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "character-entities-html4",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "character-entities-legacy",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "character-reference-invalid",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "cheerio",
"direct": false,
"version": "1.0.0-rc.12",
"ecosystem": "npm"
},
{
"name": "cheerio-select",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "chokidar",
"direct": false,
"version": "3.6.0",
"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": "clean-css",
"direct": false,
"version": "5.3.3",
"ecosystem": "npm"
},
{
"name": "clean-stack",
"direct": false,
"version": "2.2.0",
"ecosystem": "npm"
},
{
"name": "cli-boxes",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "cli-table3",
"direct": false,
"version": "0.6.5",
"ecosystem": "npm"
},
{
"name": "clone-deep",
"direct": false,
"version": "4.0.1",
"ecosystem": "npm"
},
{
"name": "clsx",
"direct": false,
"version": "2.1.1",
"ecosystem": "npm"
},
{
"name": "collapse-white-space",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "color-convert",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "color-name",
"direct": false,
"version": "1.1.4",
"ecosystem": "npm"
},
{
"name": "colord",
"direct": false,
"version": "2.9.3",
"ecosystem": "npm"
},
{
"name": "colorette",
"direct": false,
"version": "2.0.20",
"ecosystem": "npm"
},
{
"name": "combine-promises",
"direct": false,
"version": "1.2.0",
"ecosystem": "npm"
},
{
"name": "comma-separated-tokens",
"direct": false,
"version": "2.0.3",
"ecosystem": "npm"
},
{
"name": "commander",
"direct": false,
"version": "10.0.1",
"ecosystem": "npm"
},
{
"name": "commander",
"direct": false,
"version": "2.20.3",
"ecosystem": "npm"
},
{
"name": "commander",
"direct": false,
"version": "5.1.0",
"ecosystem": "npm"
},
{
"name": "commander",
"direct": false,
"version": "7.2.0",
"ecosystem": "npm"
},
{
"name": "commander",
"direct": false,
"version": "8.3.0",
"ecosystem": "npm"
},
{
"name": "common-path-prefix",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "compressible",
"direct": false,
"version": "2.0.18",
"ecosystem": "npm"
},
{
"name": "compression",
"direct": false,
"version": "1.7.5",
"ecosystem": "npm"
},
{
"name": "concat-map",
"direct": false,
"version": "0.0.1",
"ecosystem": "npm"
},
{
"name": "config-chain",
"direct": false,
"version": "1.1.13",
"ecosystem": "npm"
},
{
"name": "configstore",
"direct": false,
"version": "6.0.0",
"ecosystem": "npm"
},
{
"name": "connect-history-api-fallback",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "consola",
"direct": false,
"version": "3.2.3",
"ecosystem": "npm"
},
{
"name": "content-disposition",
"direct": false,
"version": "0.5.2",
"ecosystem": "npm"
},
{
"name": "content-disposition",
"direct": false,
"version": "0.5.4",
"ecosystem": "npm"
},
{
"name": "content-type",
"direct": false,
"version": "1.0.5",
"ecosystem": "npm"
},
{
"name": "convert-source-map",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "cookie",
"direct": false,
"version": "0.7.1",
"ecosystem": "npm"
},
{
"name": "cookie-signature",
"direct": false,
"version": "1.0.6",
"ecosystem": "npm"
},
{
"name": "copy-text-to-clipboard",
"direct": false,
"version": "3.2.0",
"ecosystem": "npm"
},
{
"name": "copy-webpack-plugin",
"direct": false,
"version": "11.0.0",
"ecosystem": "npm"
},
{
"name": "core-js",
"direct": false,
"version": "3.39.0",
"ecosystem": "npm"
},
{
"name": "core-js-compat",
"direct": false,
"version": "3.39.0",
"ecosystem": "npm"
},
{
"name": "core-js-pure",
"direct": false,
"version": "3.39.0",
"ecosystem": "npm"
},
{
"name": "core-util-is",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "cosmiconfig",
"direct": false,
"version": "6.0.0",
"ecosystem": "npm"
},
{
"name": "cosmiconfig",
"direct": false,
"version": "8.3.6",
"ecosystem": "npm"
},
{
"name": "cross-spawn",
"direct": false,
"version": "7.0.5",
"ecosystem": "npm"
},
{
"name": "crypto-random-string",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "css-declaration-sorter",
"direct": false,
"version": "7.2.0",
"ecosystem": "npm"
},
{
"name": "css-loader",
"direct": false,
"version": "6.11.0",
"ecosystem": "npm"
},
{
"name": "css-minimizer-webpack-plugin",
"direct": false,
"version": "5.0.1",
"ecosystem": "npm"
},
{
"name": "css-select",
"direct": false,
"version": "4.3.0",
"ecosystem": "npm"
},
{
"name": "css-select",
"direct": false,
"version": "5.1.0",
"ecosystem": "npm"
},
{
"name": "css-tree",
"direct": false,
"version": "2.2.1",
"ecosystem": "npm"
},
{
"name": "css-tree",
"direct": false,
"version": "2.3.1",
"ecosystem": "npm"
},
{
"name": "css-what",
"direct": false,
"version": "6.1.0",
"ecosystem": "npm"
},
{
"name": "cssesc",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "cssnano",
"direct": false,
"version": "6.1.2",
"ecosystem": "npm"
},
{
"name": "cssnano-preset-advanced",
"direct": false,
"version": "6.1.2",
"ecosystem": "npm"
},
{
"name": "cssnano-preset-default",
"direct": false,
"version": "6.1.2",
"ecosystem": "npm"
},
{
"name": "cssnano-utils",
"direct": false,
"version": "4.0.2",
"ecosystem": "npm"
},
{
"name": "csso",
"direct": false,
"version": "5.0.5",
"ecosystem": "npm"
},
{
"name": "csstype",
"direct": false,
"version": "3.1.3",
"ecosystem": "npm"
},
{
"name": "debounce",
"direct": false,
"version": "1.2.1",
"ecosystem": "npm"
},
{
"name": "debug",
"direct": false,
"version": "2.6.9",
"ecosystem": "npm"
},
{
"name": "debug",
"direct": false,
"version": "4.3.7",
"ecosystem": "npm"
},
{
"name": "decode-named-character-reference",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "decompress-response",
"direct": false,
"version": "6.0.0",
"ecosystem": "npm"
},
{
"name": "deep-extend",
"direct": false,
"version": "0.6.0",
"ecosystem": "npm"
},
{
"name": "deepmerge",
"direct": false,
"version": "4.3.1",
"ecosystem": "npm"
},
{
"name": "default-gateway",
"direct": false,
"version": "6.0.3",
"ecosystem": "npm"
},
{
"name": "defer-to-connect",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "define-data-property",
"direct": false,
"version": "1.1.4",
"ecosystem": "npm"
},
{
"name": "define-lazy-prop",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "define-properties",
"direct": false,
"version": "1.2.1",
"ecosystem": "npm"
},
{
"name": "del",
"direct": false,
"version": "6.1.1",
"ecosystem": "npm"
},
{
"name": "depd",
"direct": false,
"version": "1.1.2",
"ecosystem": "npm"
},
{
"name": "depd",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "dequal",
"direct": false,
"version": "2.0.3",
"ecosystem": "npm"
},
{
"name": "destroy",
"direct": false,
"version": "1.2.0",
"ecosystem": "npm"
},
{
"name": "detect-node",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "detect-port",
"direct": false,
"version": "1.6.1",
"ecosystem": "npm"
},
{
"name": "detect-port-alt",
"direct": false,
"version": "1.1.6",
"ecosystem": "npm"
},
{
"name": "devlop",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "dir-glob",
"direct": false,
"version": "3.0.1",
"ecosystem": "npm"
},
{
"name": "dns-packet",
"direct": false,
"version": "5.6.1",
"ecosystem": "npm"
},
{
"name": "dom-converter",
"direct": false,
"version": "0.2.0",
"ecosystem": "npm"
},
{
"name": "dom-serializer",
"direct": false,
"version": "1.4.1",
"ecosystem": "npm"
},
{
"name": "dom-serializer",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "domelementtype",
"direct": false,
"version": "2.3.0",
"ecosystem": "npm"
},
{
"name": "domhandler",
"direct": false,
"version": "4.3.1",
"ecosystem": "npm"
},
{
"name": "domhandler",
"direct": false,
"version": "5.0.3",
"ecosystem": "npm"
},
{
"name": "domutils",
"direct": false,
"version": "2.8.0",
"ecosystem": "npm"
},
{
"name": "domutils",
"direct": false,
"version": "3.1.0",
"ecosystem": "npm"
},
{
"name": "dot-case",
"direct": false,
"version": "3.0.4",
"ecosystem": "npm"
},
{
"name": "dot-prop",
"direct": false,
"version": "6.0.1",
"ecosystem": "npm"
},
{
"name": "duplexer",
"direct": false,
"version": "0.1.2",
"ecosystem": "npm"
},
{
"name": "eastasianwidth",
"direct": false,
"version": "0.2.0",
"ecosystem": "npm"
},
{
"name": "ee-first",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "electron-to-chromium",
"direct": false,
"version": "1.5.62",
"ecosystem": "npm"
},
{
"name": "emoji-regex",
"direct": false,
"version": "8.0.0",
"ecosystem": "npm"
},
{
"name": "emoji-regex",
"direct": false,
"version": "9.2.2",
"ecosystem": "npm"
},
{
"name": "emojilib",
"direct": false,
"version": "2.4.0",
"ecosystem": "npm"
},
{
"name": "emojis-list",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "emoticon",
"direct": false,
"version": "4.1.0",
"ecosystem": "npm"
},
{
"name": "encodeurl",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "encodeurl",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "enhanced-resolve",
"direct": false,
"version": "5.17.1",
"ecosystem": "npm"
},
{
"name": "entities",
"direct": false,
"version": "2.2.0",
"ecosystem": "npm"
},
{
"name": "entities",
"direct": false,
"version": "4.5.0",
"ecosystem": "npm"
},
{
"name": "error-ex",
"direct": false,
"version": "1.3.2",
"ecosystem": "npm"
},
{
"name": "es-define-property",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "es-errors",
"direct": false,
"version": "1.3.0",
"ecosystem": "npm"
},
{
"name": "es-module-lexer",
"direct": false,
"version": "1.5.4",
"ecosystem": "npm"
},
{
"name": "esast-util-from-estree",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "esast-util-from-js",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "escalade",
"direct": false,
"version": "3.2.0",
"ecosystem": "npm"
},
{
"name": "escape-goat",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "escape-html",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "escape-string-regexp",
"direct": false,
"version": "1.0.5",
"ecosystem": "npm"
},
{
"name": "escape-string-regexp",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "escape-string-regexp",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "eslint-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": "estree-util-attach-comments",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "estree-util-build-jsx",
"direct": false,
"version": "3.0.1",
"ecosystem": "npm"
},
{
"name": "estree-util-is-identifier-name",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "estree-util-scope",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "estree-util-to-js",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "estree-util-value-to-estree",
"direct": false,
"version": "3.2.1",
"ecosystem": "npm"
},
{
"name": "estree-util-visit",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "estree-walker",
"direct": false,
"version": "3.0.3",
"ecosystem": "npm"
},
{
"name": "esutils",
"direct": false,
"version": "2.0.3",
"ecosystem": "npm"
},
{
"name": "eta",
"direct": false,
"version": "2.2.0",
"ecosystem": "npm"
},
{
"name": "etag",
"direct": false,
"version": "1.8.1",
"ecosystem": "npm"
},
{
"name": "eval",
"direct": false,
"version": "0.1.8",
"ecosystem": "npm"
},
{
"name": "eventemitter3",
"direct": false,
"version": "4.0.7",
"ecosystem": "npm"
},
{
"name": "events",
"direct": false,
"version": "3.3.0",
"ecosystem": "npm"
},
{
"name": "execa",
"direct": false,
"version": "5.1.1",
"ecosystem": "npm"
},
{
"name": "express",
"direct": false,
"version": "4.21.1",
"ecosystem": "npm"
},
{
"name": "extend",
"direct": false,
"version": "3.0.2",
"ecosystem": "npm"
},
{
"name": "extend-shallow",
"direct": false,
"version": "2.0.1",
"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.0.3",
"ecosystem": "npm"
},
{
"name": "fastq",
"direct": false,
"version": "1.17.1",
"ecosystem": "npm"
},
{
"name": "fault",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "faye-websocket",
"direct": false,
"version": "0.11.4",
"ecosystem": "npm"
},
{
"name": "feed",
"direct": false,
"version": "4.2.2",
"ecosystem": "npm"
},
{
"name": "figures",
"direct": false,
"version": "3.2.0",
"ecosystem": "npm"
},
{
"name": "file-loader",
"direct": false,
"version": "6.2.0",
"ecosystem": "npm"
},
{
"name": "filesize",
"direct": false,
"version": "8.0.7",
"ecosystem": "npm"
},
{
"name": "fill-range",
"direct": false,
"version": "7.1.1",
"ecosystem": "npm"
},
{
"name": "finalhandler",
"direct": false,
"version": "1.3.1",
"ecosystem": "npm"
},
{
"name": "find-cache-dir",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "find-up",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "find-up",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "find-up",
"direct": false,
"version": "6.3.0",
"ecosystem": "npm"
},
{
"name": "flat",
"direct": false,
"version": "5.0.2",
"ecosystem": "npm"
},
{
"name": "follow-redirects",
"direct": false,
"version": "1.15.9",
"ecosystem": "npm"
},
{
"name": "fork-ts-checker-webpack-plugin",
"direct": false,
"version": "6.5.3",
"ecosystem": "npm"
},
{
"name": "form-data-encoder",
"direct": false,
"version": "2.1.4",
"ecosystem": "npm"
},
{
"name": "format",
"direct": false,
"version": "0.2.2",
"ecosystem": "npm"
},
{
"name": "forwarded",
"direct": false,
"version": "0.2.0",
"ecosystem": "npm"
},
{
"name": "fraction.js",
"direct": false,
"version": "4.3.7",
"ecosystem": "npm"
},
{
"name": "fresh",
"direct": false,
"version": "0.5.2",
"ecosystem": "npm"
},
{
"name": "fs-extra",
"direct": false,
"version": "11.2.0",
"ecosystem": "npm"
},
{
"name": "fs-extra",
"direct": false,
"version": "9.1.0",
"ecosystem": "npm"
},
{
"name": "fs-monkey",
"direct": false,
"version": "1.0.6",
"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": "gensync",
"direct": false,
"version": "1.0.0-beta.2",
"ecosystem": "npm"
},
{
"name": "get-intrinsic",
"direct": false,
"version": "1.2.4",
"ecosystem": "npm"
},
{
"name": "get-own-enumerable-property-symbols",
"direct": false,
"version": "3.0.2",
"ecosystem": "npm"
},
{
"name": "get-stream",
"direct": false,
"version": "6.0.1",
"ecosystem": "npm"
},
{
"name": "github-slugger",
"direct": false,
"version": "1.5.0",
"ecosystem": "npm"
},
{
"name": "glob",
"direct": false,
"version": "7.2.3",
"ecosystem": "npm"
},
{
"name": "glob-parent",
"direct": false,
"version": "5.1.2",
"ecosystem": "npm"
},
{
"name": "glob-parent",
"direct": false,
"version": "6.0.2",
"ecosystem": "npm"
},
{
"name": "glob-to-regexp",
"direct": false,
"version": "0.4.1",
"ecosystem": "npm"
},
{
"name": "global-dirs",
"direct": false,
"version": "3.0.1",
"ecosystem": "npm"
},
{
"name": "global-modules",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "global-prefix",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "globals",
"direct": false,
"version": "11.12.0",
"ecosystem": "npm"
},
{
"name": "globby",
"direct": false,
"version": "11.1.0",
"ecosystem": "npm"
},
{
"name": "globby",
"direct": false,
"version": "13.2.2",
"ecosystem": "npm"
},
{
"name": "gopd",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "got",
"direct": false,
"version": "12.6.1",
"ecosystem": "npm"
},
{
"name": "graceful-fs",
"direct": false,
"version": "4.2.10",
"ecosystem": "npm"
},
{
"name": "graceful-fs",
"direct": false,
"version": "4.2.11",
"ecosystem": "npm"
},
{
"name": "gray-matter",
"direct": false,
"version": "4.0.3",
"ecosystem": "npm"
},
{
"name": "gzip-size",
"direct": false,
"version": "6.0.0",
"ecosystem": "npm"
},
{
"name": "handle-thing",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "has-flag",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "has-property-descriptors",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "has-proto",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "has-symbols",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "has-yarn",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "hasown",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "hast-util-from-parse5",
"direct": false,
"version": "8.0.1",
"ecosystem": "npm"
},
{
"name": "hast-util-parse-selector",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "hast-util-raw",
"direct": false,
"version": "9.1.0",
"ecosystem": "npm"
},
{
"name": "hast-util-to-estree",
"direct": false,
"version": "3.1.0",
"ecosystem": "npm"
},
{
"name": "hast-util-to-jsx-runtime",
"direct": false,
"version": "2.3.2",
"ecosystem": "npm"
},
{
"name": "hast-util-to-parse5",
"direct": false,
"version": "8.0.0",
"ecosystem": "npm"
},
{
"name": "hast-util-whitespace",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "hastscript",
"direct": false,
"version": "8.0.0",
"ecosystem": "npm"
},
{
"name": "he",
"direct": false,
"version": "1.2.0",
"ecosystem": "npm"
},
{
"name": "history",
"direct": false,
"version": "4.10.1",
"ecosystem": "npm"
},
{
"name": "hoist-non-react-statics",
"direct": false,
"version": "3.3.2",
"ecosystem": "npm"
},
{
"name": "hpack.js",
"direct": false,
"version": "2.1.6",
"ecosystem": "npm"
},
{
"name": "html-entities",
"direct": false,
"version": "2.5.2",
"ecosystem": "npm"
},
{
"name": "html-escaper",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "html-minifier-terser",
"direct": false,
"version": "6.1.0",
"ecosystem": "npm"
},
{
"name": "html-minifier-terser",
"direct": false,
"version": "7.2.0",
"ecosystem": "npm"
},
{
"name": "html-tags",
"direct": false,
"version": "3.3.1",
"ecosystem": "npm"
},
{
"name": "html-void-elements",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "html-webpack-plugin",
"direct": false,
"version": "5.6.3",
"ecosystem": "npm"
},
{
"name": "htmlparser2",
"direct": false,
"version": "6.1.0",
"ecosystem": "npm"
},
{
"name": "htmlparser2",
"direct": false,
"version": "8.0.2",
"ecosystem": "npm"
},
{
"name": "http-cache-semantics",
"direct": false,
"version": "4.1.1",
"ecosystem": "npm"
},
{
"name": "http-deceiver",
"direct": false,
"version": "1.2.7",
"ecosystem": "npm"
},
{
"name": "http-errors",
"direct": false,
"version": "1.6.3",
"ecosystem": "npm"
},
{
"name": "http-errors",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "http-parser-js",
"direct": false,
"version": "0.5.8",
"ecosystem": "npm"
},
{
"name": "http-proxy",
"direct": false,
"version": "1.18.1",
"ecosystem": "npm"
},
{
"name": "http-proxy-middleware",
"direct": false,
"version": "2.0.7",
"ecosystem": "npm"
},
{
"name": "http2-wrapper",
"direct": false,
"version": "2.2.1",
"ecosystem": "npm"
},
{
"name": "human-signals",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "iconv-lite",
"direct": false,
"version": "0.4.24",
"ecosystem": "npm"
},
{
"name": "icss-utils",
"direct": false,
"version": "5.1.0",
"ecosystem": "npm"
},
{
"name": "ignore",
"direct": false,
"version": "5.3.2",
"ecosystem": "npm"
},
{
"name": "image-size",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "immer",
"direct": false,
"version": "9.0.21",
"ecosystem": "npm"
},
{
"name": "import-fresh",
"direct": false,
"version": "3.3.0",
"ecosystem": "npm"
},
{
"name": "import-lazy",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "imurmurhash",
"direct": false,
"version": "0.1.4",
"ecosystem": "npm"
},
{
"name": "indent-string",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "infima",
"direct": false,
"version": "0.2.0-alpha.45",
"ecosystem": "npm"
},
{
"name": "inflight",
"direct": false,
"version": "1.0.6",
"ecosystem": "npm"
},
{
"name": "inherits",
"direct": false,
"version": "2.0.3",
"ecosystem": "npm"
},
{
"name": "inherits",
"direct": false,
"version": "2.0.4",
"ecosystem": "npm"
},
{
"name": "ini",
"direct": false,
"version": "1.3.8",
"ecosystem": "npm"
},
{
"name": "ini",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "inline-style-parser",
"direct": false,
"version": "0.1.1",
"ecosystem": "npm"
},
{
"name": "inline-style-parser",
"direct": false,
"version": "0.2.4",
"ecosystem": "npm"
},
{
"name": "interpret",
"direct": false,
"version": "1.4.0",
"ecosystem": "npm"
},
{
"name": "invariant",
"direct": false,
"version": "2.2.4",
"ecosystem": "npm"
},
{
"name": "ipaddr.js",
"direct": false,
"version": "1.9.1",
"ecosystem": "npm"
},
{
"name": "ipaddr.js",
"direct": false,
"version": "2.2.0",
"ecosystem": "npm"
},
{
"name": "is-alphabetical",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "is-alphanumerical",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "is-arrayish",
"direct": false,
"version": "0.2.1",
"ecosystem": "npm"
},
{
"name": "is-binary-path",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "is-ci",
"direct": false,
"version": "3.0.1",
"ecosystem": "npm"
},
{
"name": "is-core-module",
"direct": false,
"version": "2.15.1",
"ecosystem": "npm"
},
{
"name": "is-decimal",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "is-docker",
"direct": false,
"version": "2.2.1",
"ecosystem": "npm"
},
{
"name": "is-extendable",
"direct": false,
"version": "0.1.1",
"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-glob",
"direct": false,
"version": "4.0.3",
"ecosystem": "npm"
},
{
"name": "is-hexadecimal",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "is-installed-globally",
"direct": false,
"version": "0.4.0",
"ecosystem": "npm"
},
{
"name": "is-npm",
"direct": false,
"version": "6.0.0",
"ecosystem": "npm"
},
{
"name": "is-number",
"direct": false,
"version": "7.0.0",
"ecosystem": "npm"
},
{
"name": "is-obj",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "is-obj",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "is-path-cwd",
"direct": false,
"version": "2.2.0",
"ecosystem": "npm"
},
{
"name": "is-path-inside",
"direct": false,
"version": "3.0.3",
"ecosystem": "npm"
},
{
"name": "is-plain-obj",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "is-plain-obj",
"direct": false,
"version": "4.1.0",
"ecosystem": "npm"
},
{
"name": "is-plain-object",
"direct": false,
"version": "2.0.4",
"ecosystem": "npm"
},
{
"name": "is-regexp",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "is-root",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "is-stream",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "is-typedarray",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "is-wsl",
"direct": false,
"version": "2.2.0",
"ecosystem": "npm"
},
{
"name": "is-yarn-global",
"direct": false,
"version": "0.4.1",
"ecosystem": "npm"
},
{
"name": "isarray",
"direct": false,
"version": "0.0.1",
"ecosystem": "npm"
},
{
"name": "isarray",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "isexe",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "isobject",
"direct": false,
"version": "3.0.1",
"ecosystem": "npm"
},
{
"name": "jest-util",
"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": "jiti",
"direct": false,
"version": "1.21.6",
"ecosystem": "npm"
},
{
"name": "joi",
"direct": false,
"version": "17.13.3",
"ecosystem": "npm"
},
{
"name": "js-tokens",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "js-yaml",
"direct": false,
"version": "3.14.1",
"ecosystem": "npm"
},
{
"name": "js-yaml",
"direct": false,
"version": "4.1.0",
"ecosystem": "npm"
},
{
"name": "jsesc",
"direct": false,
"version": "3.0.2",
"ecosystem": "npm"
},
{
"name": "json-buffer",
"direct": false,
"version": "3.0.1",
"ecosystem": "npm"
},
{
"name": "json-parse-even-better-errors",
"direct": false,
"version": "2.3.1",
"ecosystem": "npm"
},
{
"name": "json-schema-traverse",
"direct": false,
"version": "0.4.1",
"ecosystem": "npm"
},
{
"name": "json-schema-traverse",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "json5",
"direct": false,
"version": "2.2.3",
"ecosystem": "npm"
},
{
"name": "jsonfile",
"direct": false,
"version": "6.1.0",
"ecosystem": "npm"
},
{
"name": "keyv",
"direct": false,
"version": "4.5.4",
"ecosystem": "npm"
},
{
"name": "kind-of",
"direct": false,
"version": "6.0.3",
"ecosystem": "npm"
},
{
"name": "kleur",
"direct": false,
"version": "3.0.3",
"ecosystem": "npm"
},
{
"name": "latest-version",
"direct": false,
"version": "7.0.0",
"ecosystem": "npm"
},
{
"name": "launch-editor",
"direct": false,
"version": "2.9.1",
"ecosystem": "npm"
},
{
"name": "leven",
"direct": false,
"version": "3.1.0",
"ecosystem": "npm"
},
{
"name": "lilconfig",
"direct": false,
"version": "3.1.2",
"ecosystem": "npm"
},
{
"name": "lines-and-columns",
"direct": false,
"version": "1.2.4",
"ecosystem": "npm"
},
{
"name": "loader-runner",
"direct": false,
"version": "4.3.0",
"ecosystem": "npm"
},
{
"name": "loader-utils",
"direct": false,
"version": "2.0.4",
"ecosystem": "npm"
},
{
"name": "loader-utils",
"direct": false,
"version": "3.3.1",
"ecosystem": "npm"
},
{
"name": "locate-path",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "locate-path",
"direct": false,
"version": "6.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": "lodash.uniq",
"direct": false,
"version": "4.5.0",
"ecosystem": "npm"
},
{
"name": "longest-streak",
"direct": false,
"version": "3.1.0",
"ecosystem": "npm"
},
{
"name": "loose-envify",
"direct": false,
"version": "1.4.0",
"ecosystem": "npm"
},
{
"name": "lower-case",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "lowercase-keys",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "lru-cache",
"direct": false,
"version": "5.1.1",
"ecosystem": "npm"
},
{
"name": "markdown-extensions",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "markdown-table",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "markdown-table",
"direct": false,
"version": "3.0.4",
"ecosystem": "npm"
},
{
"name": "mdast-util-directive",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "mdast-util-find-and-replace",
"direct": false,
"version": "3.0.1",
"ecosystem": "npm"
},
{
"name": "mdast-util-from-markdown",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "mdast-util-frontmatter",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "mdast-util-gfm",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "mdast-util-gfm-autolink-literal",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "mdast-util-gfm-footnote",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "mdast-util-gfm-strikethrough",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "mdast-util-gfm-table",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "mdast-util-gfm-task-list-item",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "mdast-util-mdx",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "mdast-util-mdx-expression",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "mdast-util-mdx-jsx",
"direct": false,
"version": "3.1.3",
"ecosystem": "npm"
},
{
"name": "mdast-util-mdxjs-esm",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "mdast-util-phrasing",
"direct": false,
"version": "4.1.0",
"ecosystem": "npm"
},
{
"name": "mdast-util-to-hast",
"direct": false,
"version": "13.2.0",
"ecosystem": "npm"
},
{
"name": "mdast-util-to-markdown",
"direct": false,
"version": "2.1.2",
"ecosystem": "npm"
},
{
"name": "mdast-util-to-string",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "mdn-data",
"direct": false,
"version": "2.0.28",
"ecosystem": "npm"
},
{
"name": "mdn-data",
"direct": false,
"version": "2.0.30",
"ecosystem": "npm"
},
{
"name": "media-typer",
"direct": false,
"version": "0.3.0",
"ecosystem": "npm"
},
{
"name": "memfs",
"direct": false,
"version": "3.5.3",
"ecosystem": "npm"
},
{
"name": "merge-descriptors",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "merge-stream",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "merge2",
"direct": false,
"version": "1.4.1",
"ecosystem": "npm"
},
{
"name": "methods",
"direct": false,
"version": "1.1.2",
"ecosystem": "npm"
},
{
"name": "micromark",
"direct": false,
"version": "4.0.1",
"ecosystem": "npm"
},
{
"name": "micromark-core-commonmark",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "micromark-extension-directive",
"direct": false,
"version": "3.0.2",
"ecosystem": "npm"
},
{
"name": "micromark-extension-frontmatter",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "micromark-extension-gfm",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "micromark-extension-gfm-autolink-literal",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "micromark-extension-gfm-footnote",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "micromark-extension-gfm-strikethrough",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "micromark-extension-gfm-table",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "micromark-extension-gfm-tagfilter",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "micromark-extension-gfm-task-list-item",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "micromark-extension-mdx-expression",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "micromark-extension-mdx-jsx",
"direct": false,
"version": "3.0.1",
"ecosystem": "npm"
},
{
"name": "micromark-extension-mdx-md",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "micromark-extension-mdxjs",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "micromark-extension-mdxjs-esm",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "micromark-factory-destination",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "micromark-factory-label",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "micromark-factory-mdx-expression",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "micromark-factory-space",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "micromark-factory-space",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "micromark-factory-title",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "micromark-factory-whitespace",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "micromark-util-character",
"direct": false,
"version": "1.2.0",
"ecosystem": "npm"
},
{
"name": "micromark-util-character",
"direct": false,
"version": "2.1.1",
"ecosystem": "npm"
},
{
"name": "micromark-util-chunked",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "micromark-util-classify-character",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "micromark-util-combine-extensions",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "micromark-util-decode-numeric-character-reference",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "micromark-util-decode-string",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "micromark-util-encode",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "micromark-util-events-to-acorn",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "micromark-util-html-tag-name",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "micromark-util-normalize-identifier",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "micromark-util-resolve-all",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "micromark-util-sanitize-uri",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "micromark-util-subtokenize",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "micromark-util-symbol",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "micromark-util-symbol",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "micromark-util-types",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "micromark-util-types",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "micromatch",
"direct": false,
"version": "4.0.8",
"ecosystem": "npm"
},
{
"name": "mime",
"direct": false,
"version": "1.6.0",
"ecosystem": "npm"
},
{
"name": "mime-db",
"direct": false,
"version": "1.33.0",
"ecosystem": "npm"
},
{
"name": "mime-db",
"direct": false,
"version": "1.52.0",
"ecosystem": "npm"
},
{
"name": "mime-db",
"direct": false,
"version": "1.53.0",
"ecosystem": "npm"
},
{
"name": "mime-types",
"direct": false,
"version": "2.1.18",
"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": "mimic-response",
"direct": false,
"version": "3.1.0",
"ecosystem": "npm"
},
{
"name": "mimic-response",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "mini-css-extract-plugin",
"direct": false,
"version": "2.9.2",
"ecosystem": "npm"
},
{
"name": "minimalistic-assert",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "minimatch",
"direct": false,
"version": "3.1.2",
"ecosystem": "npm"
},
{
"name": "minimist",
"direct": false,
"version": "1.2.8",
"ecosystem": "npm"
},
{
"name": "mrmime",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "ms",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "ms",
"direct": false,
"version": "2.1.3",
"ecosystem": "npm"
},
{
"name": "multicast-dns",
"direct": false,
"version": "7.2.5",
"ecosystem": "npm"
},
{
"name": "nanoid",
"direct": false,
"version": "3.3.7",
"ecosystem": "npm"
},
{
"name": "negotiator",
"direct": false,
"version": "0.6.3",
"ecosystem": "npm"
},
{
"name": "negotiator",
"direct": false,
"version": "0.6.4",
"ecosystem": "npm"
},
{
"name": "neo-async",
"direct": false,
"version": "2.6.2",
"ecosystem": "npm"
},
{
"name": "no-case",
"direct": false,
"version": "3.0.4",
"ecosystem": "npm"
},
{
"name": "node-emoji",
"direct": false,
"version": "2.1.3",
"ecosystem": "npm"
},
{
"name": "node-forge",
"direct": false,
"version": "1.3.1",
"ecosystem": "npm"
},
{
"name": "node-releases",
"direct": false,
"version": "2.0.18",
"ecosystem": "npm"
},
{
"name": "normalize-path",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "normalize-range",
"direct": false,
"version": "0.1.2",
"ecosystem": "npm"
},
{
"name": "normalize-url",
"direct": false,
"version": "8.0.1",
"ecosystem": "npm"
},
{
"name": "npm-run-path",
"direct": false,
"version": "4.0.1",
"ecosystem": "npm"
},
{
"name": "nprogress",
"direct": false,
"version": "0.2.0",
"ecosystem": "npm"
},
{
"name": "nth-check",
"direct": false,
"version": "2.1.1",
"ecosystem": "npm"
},
{
"name": "null-loader",
"direct": false,
"version": "4.0.1",
"ecosystem": "npm"
},
{
"name": "object-assign",
"direct": false,
"version": "4.1.1",
"ecosystem": "npm"
},
{
"name": "object-inspect",
"direct": false,
"version": "1.13.3",
"ecosystem": "npm"
},
{
"name": "object-keys",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "object.assign",
"direct": false,
"version": "4.1.5",
"ecosystem": "npm"
},
{
"name": "obuf",
"direct": false,
"version": "1.1.2",
"ecosystem": "npm"
},
{
"name": "on-finished",
"direct": false,
"version": "2.4.1",
"ecosystem": "npm"
},
{
"name": "on-headers",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "once",
"direct": false,
"version": "1.4.0",
"ecosystem": "npm"
},
{
"name": "onetime",
"direct": false,
"version": "5.1.2",
"ecosystem": "npm"
},
{
"name": "open",
"direct": false,
"version": "8.4.2",
"ecosystem": "npm"
},
{
"name": "opener",
"direct": false,
"version": "1.5.2",
"ecosystem": "npm"
},
{
"name": "p-cancelable",
"direct": false,
"version": "3.0.0",
"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": "3.0.0",
"ecosystem": "npm"
},
{
"name": "p-locate",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "p-locate",
"direct": false,
"version": "6.0.0",
"ecosystem": "npm"
},
{
"name": "p-map",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "p-retry",
"direct": false,
"version": "4.6.2",
"ecosystem": "npm"
},
{
"name": "p-try",
"direct": false,
"version": "2.2.0",
"ecosystem": "npm"
},
{
"name": "package-json",
"direct": false,
"version": "8.1.1",
"ecosystem": "npm"
},
{
"name": "param-case",
"direct": false,
"version": "3.0.4",
"ecosystem": "npm"
},
{
"name": "parent-module",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "parse-entities",
"direct": false,
"version": "4.0.1",
"ecosystem": "npm"
},
{
"name": "parse-json",
"direct": false,
"version": "5.2.0",
"ecosystem": "npm"
},
{
"name": "parse-numeric-range",
"direct": false,
"version": "1.3.0",
"ecosystem": "npm"
},
{
"name": "parse5",
"direct": false,
"version": "7.2.1",
"ecosystem": "npm"
},
{
"name": "parse5-htmlparser2-tree-adapter",
"direct": false,
"version": "7.1.0",
"ecosystem": "npm"
},
{
"name": "parseurl",
"direct": false,
"version": "1.3.3",
"ecosystem": "npm"
},
{
"name": "pascal-case",
"direct": false,
"version": "3.1.2",
"ecosystem": "npm"
},
{
"name": "path-exists",
"direct": false,
"version": "3.0.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-is-inside",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "path-key",
"direct": false,
"version": "3.1.1",
"ecosystem": "npm"
},
{
"name": "path-parse",
"direct": false,
"version": "1.0.7",
"ecosystem": "npm"
},
{
"name": "path-to-regexp",
"direct": false,
"version": "0.1.10",
"ecosystem": "npm"
},
{
"name": "path-to-regexp",
"direct": false,
"version": "1.9.0",
"ecosystem": "npm"
},
{
"name": "path-to-regexp",
"direct": false,
"version": "3.3.0",
"ecosystem": "npm"
},
{
"name": "path-type",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "picocolors",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "picomatch",
"direct": false,
"version": "2.3.1",
"ecosystem": "npm"
},
{
"name": "pkg-dir",
"direct": false,
"version": "7.0.0",
"ecosystem": "npm"
},
{
"name": "pkg-up",
"direct": false,
"version": "3.1.0",
"ecosystem": "npm"
},
{
"name": "postcss",
"direct": false,
"version": "8.4.49",
"ecosystem": "npm"
},
{
"name": "postcss-calc",
"direct": false,
"version": "9.0.1",
"ecosystem": "npm"
},
{
"name": "postcss-colormin",
"direct": false,
"version": "6.1.0",
"ecosystem": "npm"
},
{
"name": "postcss-convert-values",
"direct": false,
"version": "6.1.0",
"ecosystem": "npm"
},
{
"name": "postcss-discard-comments",
"direct": false,
"version": "6.0.2",
"ecosystem": "npm"
},
{
"name": "postcss-discard-duplicates",
"direct": false,
"version": "6.0.3",
"ecosystem": "npm"
},
{
"name": "postcss-discard-empty",
"direct": false,
"version": "6.0.3",
"ecosystem": "npm"
},
{
"name": "postcss-discard-overridden",
"direct": false,
"version": "6.0.2",
"ecosystem": "npm"
},
{
"name": "postcss-discard-unused",
"direct": false,
"version": "6.0.5",
"ecosystem": "npm"
},
{
"name": "postcss-loader",
"direct": false,
"version": "7.3.4",
"ecosystem": "npm"
},
{
"name": "postcss-merge-idents",
"direct": false,
"version": "6.0.3",
"ecosystem": "npm"
},
{
"name": "postcss-merge-longhand",
"direct": false,
"version": "6.0.5",
"ecosystem": "npm"
},
{
"name": "postcss-merge-rules",
"direct": false,
"version": "6.1.1",
"ecosystem": "npm"
},
{
"name": "postcss-minify-font-values",
"direct": false,
"version": "6.1.0",
"ecosystem": "npm"
},
{
"name": "postcss-minify-gradients",
"direct": false,
"version": "6.0.3",
"ecosystem": "npm"
},
{
"name": "postcss-minify-params",
"direct": false,
"version": "6.1.0",
"ecosystem": "npm"
},
{
"name": "postcss-minify-selectors",
"direct": false,
"version": "6.0.4",
"ecosystem": "npm"
},
{
"name": "postcss-modules-extract-imports",
"direct": false,
"version": "3.1.0",
"ecosystem": "npm"
},
{
"name": "postcss-modules-local-by-default",
"direct": false,
"version": "4.1.0",
"ecosystem": "npm"
},
{
"name": "postcss-modules-scope",
"direct": false,
"version": "3.2.1",
"ecosystem": "npm"
},
{
"name": "postcss-modules-values",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "postcss-normalize-charset",
"direct": false,
"version": "6.0.2",
"ecosystem": "npm"
},
{
"name": "postcss-normalize-display-values",
"direct": false,
"version": "6.0.2",
"ecosystem": "npm"
},
{
"name": "postcss-normalize-positions",
"direct": false,
"version": "6.0.2",
"ecosystem": "npm"
},
{
"name": "postcss-normalize-repeat-style",
"direct": false,
"version": "6.0.2",
"ecosystem": "npm"
},
{
"name": "postcss-normalize-string",
"direct": false,
"version": "6.0.2",
"ecosystem": "npm"
},
{
"name": "postcss-normalize-timing-functions",
"direct": false,
"version": "6.0.2",
"ecosystem": "npm"
},
{
"name": "postcss-normalize-unicode",
"direct": false,
"version": "6.1.0",
"ecosystem": "npm"
},
{
"name": "postcss-normalize-url",
"direct": false,
"version": "6.0.2",
"ecosystem": "npm"
},
{
"name": "postcss-normalize-whitespace",
"direct": false,
"version": "6.0.2",
"ecosystem": "npm"
},
{
"name": "postcss-ordered-values",
"direct": false,
"version": "6.0.2",
"ecosystem": "npm"
},
{
"name": "postcss-reduce-idents",
"direct": false,
"version": "6.0.3",
"ecosystem": "npm"
},
{
"name": "postcss-reduce-initial",
"direct": false,
"version": "6.1.0",
"ecosystem": "npm"
},
{
"name": "postcss-reduce-transforms",
"direct": false,
"version": "6.0.2",
"ecosystem": "npm"
},
{
"name": "postcss-selector-parser",
"direct": false,
"version": "6.1.2",
"ecosystem": "npm"
},
{
"name": "postcss-selector-parser",
"direct": false,
"version": "7.0.0",
"ecosystem": "npm"
},
{
"name": "postcss-sort-media-queries",
"direct": false,
"version": "5.2.0",
"ecosystem": "npm"
},
{
"name": "postcss-svgo",
"direct": false,
"version": "6.0.3",
"ecosystem": "npm"
},
{
"name": "postcss-unique-selectors",
"direct": false,
"version": "6.0.4",
"ecosystem": "npm"
},
{
"name": "postcss-value-parser",
"direct": false,
"version": "4.2.0",
"ecosystem": "npm"
},
{
"name": "postcss-zindex",
"direct": false,
"version": "6.0.2",
"ecosystem": "npm"
},
{
"name": "pretty-error",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "pretty-time",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "prism-react-renderer",
"direct": false,
"version": "2.4.0",
"ecosystem": "npm"
},
{
"name": "prismjs",
"direct": false,
"version": "1.29.0",
"ecosystem": "npm"
},
{
"name": "process-nextick-args",
"direct": false,
"version": "2.0.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": "property-information",
"direct": false,
"version": "6.5.0",
"ecosystem": "npm"
},
{
"name": "proto-list",
"direct": false,
"version": "1.2.4",
"ecosystem": "npm"
},
{
"name": "proxy-addr",
"direct": false,
"version": "2.0.7",
"ecosystem": "npm"
},
{
"name": "punycode",
"direct": false,
"version": "2.3.1",
"ecosystem": "npm"
},
{
"name": "pupa",
"direct": false,
"version": "3.1.0",
"ecosystem": "npm"
},
{
"name": "qs",
"direct": false,
"version": "6.13.0",
"ecosystem": "npm"
},
{
"name": "queue",
"direct": false,
"version": "6.0.2",
"ecosystem": "npm"
},
{
"name": "queue-microtask",
"direct": false,
"version": "1.2.3",
"ecosystem": "npm"
},
{
"name": "quick-lru",
"direct": false,
"version": "5.1.1",
"ecosystem": "npm"
},
{
"name": "randombytes",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "range-parser",
"direct": false,
"version": "1.2.0",
"ecosystem": "npm"
},
{
"name": "range-parser",
"direct": false,
"version": "1.2.1",
"ecosystem": "npm"
},
{
"name": "raw-body",
"direct": false,
"version": "2.5.2",
"ecosystem": "npm"
},
{
"name": "raw-loader",
"direct": false,
"version": "4.0.2",
"ecosystem": "npm"
},
{
"name": "rc",
"direct": false,
"version": "1.2.8",
"ecosystem": "npm"
},
{
"name": "react",
"direct": false,
"version": "18.3.1",
"ecosystem": "npm"
},
{
"name": "react-dev-utils",
"direct": false,
"version": "12.0.1",
"ecosystem": "npm"
},
{
"name": "react-dom",
"direct": false,
"version": "18.3.1",
"ecosystem": "npm"
},
{
"name": "react-error-overlay",
"direct": false,
"version": "6.0.11",
"ecosystem": "npm"
},
{
"name": "react-fast-compare",
"direct": false,
"version": "3.2.2",
"ecosystem": "npm"
},
{
"name": "react-helmet-async",
"direct": false,
"version": "1.3.0",
"ecosystem": "npm"
},
{
"name": "react-is",
"direct": false,
"version": "16.13.1",
"ecosystem": "npm"
},
{
"name": "react-json-view-lite",
"direct": false,
"version": "1.5.0",
"ecosystem": "npm"
},
{
"name": "react-loadable-ssr-addon-v5-slorber",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "react-router",
"direct": false,
"version": "5.3.4",
"ecosystem": "npm"
},
{
"name": "react-router-config",
"direct": false,
"version": "5.1.1",
"ecosystem": "npm"
},
{
"name": "react-router-dom",
"direct": false,
"version": "5.3.4",
"ecosystem": "npm"
},
{
"name": "readable-stream",
"direct": false,
"version": "2.3.8",
"ecosystem": "npm"
},
{
"name": "readable-stream",
"direct": false,
"version": "3.6.2",
"ecosystem": "npm"
},
{
"name": "readdirp",
"direct": false,
"version": "3.6.0",
"ecosystem": "npm"
},
{
"name": "reading-time",
"direct": false,
"version": "1.5.0",
"ecosystem": "npm"
},
{
"name": "rechoir",
"direct": false,
"version": "0.6.2",
"ecosystem": "npm"
},
{
"name": "recma-build-jsx",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "recma-jsx",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "recma-parse",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "recma-stringify",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "recursive-readdir",
"direct": false,
"version": "2.2.3",
"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": "regenerator-runtime",
"direct": false,
"version": "0.14.1",
"ecosystem": "npm"
},
{
"name": "regenerator-transform",
"direct": false,
"version": "0.15.2",
"ecosystem": "npm"
},
{
"name": "regexpu-core",
"direct": false,
"version": "6.1.1",
"ecosystem": "npm"
},
{
"name": "registry-auth-token",
"direct": false,
"version": "5.0.2",
"ecosystem": "npm"
},
{
"name": "registry-url",
"direct": false,
"version": "6.0.1",
"ecosystem": "npm"
},
{
"name": "regjsgen",
"direct": false,
"version": "0.8.0",
"ecosystem": "npm"
},
{
"name": "regjsparser",
"direct": false,
"version": "0.11.2",
"ecosystem": "npm"
},
{
"name": "rehype-raw",
"direct": false,
"version": "7.0.0",
"ecosystem": "npm"
},
{
"name": "rehype-recma",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "relateurl",
"direct": false,
"version": "0.2.7",
"ecosystem": "npm"
},
{
"name": "remark-directive",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "remark-emoji",
"direct": false,
"version": "4.0.1",
"ecosystem": "npm"
},
{
"name": "remark-frontmatter",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "remark-gfm",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "remark-mdx",
"direct": false,
"version": "3.1.0",
"ecosystem": "npm"
},
{
"name": "remark-parse",
"direct": false,
"version": "11.0.0",
"ecosystem": "npm"
},
{
"name": "remark-rehype",
"direct": false,
"version": "11.1.1",
"ecosystem": "npm"
},
{
"name": "remark-stringify",
"direct": false,
"version": "11.0.0",
"ecosystem": "npm"
},
{
"name": "renderkid",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "repeat-string",
"direct": false,
"version": "1.6.1",
"ecosystem": "npm"
},
{
"name": "require-from-string",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "require-like",
"direct": false,
"version": "0.1.2",
"ecosystem": "npm"
},
{
"name": "requires-port",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "resolve",
"direct": false,
"version": "1.22.8",
"ecosystem": "npm"
},
{
"name": "resolve-alpn",
"direct": false,
"version": "1.2.1",
"ecosystem": "npm"
},
{
"name": "resolve-from",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "resolve-pathname",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "responselike",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "retry",
"direct": false,
"version": "0.13.1",
"ecosystem": "npm"
},
{
"name": "reusify",
"direct": false,
"version": "1.0.4",
"ecosystem": "npm"
},
{
"name": "rimraf",
"direct": false,
"version": "3.0.2",
"ecosystem": "npm"
},
{
"name": "rtl-detect",
"direct": false,
"version": "1.1.2",
"ecosystem": "npm"
},
{
"name": "rtlcss",
"direct": false,
"version": "4.3.0",
"ecosystem": "npm"
},
{
"name": "run-parallel",
"direct": false,
"version": "1.2.0",
"ecosystem": "npm"
},
{
"name": "safe-buffer",
"direct": false,
"version": "5.1.2",
"ecosystem": "npm"
},
{
"name": "safe-buffer",
"direct": false,
"version": "5.2.1",
"ecosystem": "npm"
},
{
"name": "safer-buffer",
"direct": false,
"version": "2.1.2",
"ecosystem": "npm"
},
{
"name": "sax",
"direct": false,
"version": "1.4.1",
"ecosystem": "npm"
},
{
"name": "scheduler",
"direct": false,
"version": "0.23.2",
"ecosystem": "npm"
},
{
"name": "schema-utils",
"direct": false,
"version": "2.7.0",
"ecosystem": "npm"
},
{
"name": "schema-utils",
"direct": false,
"version": "3.3.0",
"ecosystem": "npm"
},
{
"name": "schema-utils",
"direct": false,
"version": "4.2.0",
"ecosystem": "npm"
},
{
"name": "search-insights",
"direct": false,
"version": "2.17.2",
"ecosystem": "npm"
},
{
"name": "section-matter",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "select-hose",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "selfsigned",
"direct": false,
"version": "2.4.1",
"ecosystem": "npm"
},
{
"name": "semver",
"direct": false,
"version": "6.3.1",
"ecosystem": "npm"
},
{
"name": "semver",
"direct": false,
"version": "7.6.3",
"ecosystem": "npm"
},
{
"name": "semver-diff",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "send",
"direct": false,
"version": "0.19.0",
"ecosystem": "npm"
},
{
"name": "serialize-javascript",
"direct": false,
"version": "6.0.2",
"ecosystem": "npm"
},
{
"name": "serve-handler",
"direct": false,
"version": "6.1.6",
"ecosystem": "npm"
},
{
"name": "serve-index",
"direct": false,
"version": "1.9.1",
"ecosystem": "npm"
},
{
"name": "serve-static",
"direct": false,
"version": "1.16.2",
"ecosystem": "npm"
},
{
"name": "set-function-length",
"direct": false,
"version": "1.2.2",
"ecosystem": "npm"
},
{
"name": "setprototypeof",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "setprototypeof",
"direct": false,
"version": "1.2.0",
"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": "shell-quote",
"direct": false,
"version": "1.8.1",
"ecosystem": "npm"
},
{
"name": "shelljs",
"direct": false,
"version": "0.8.5",
"ecosystem": "npm"
},
{
"name": "side-channel",
"direct": false,
"version": "1.0.6",
"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": "sitemap",
"direct": false,
"version": "7.1.2",
"ecosystem": "npm"
},
{
"name": "skin-tone",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "slash",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "slash",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "snake-case",
"direct": false,
"version": "3.0.4",
"ecosystem": "npm"
},
{
"name": "sockjs",
"direct": false,
"version": "0.3.24",
"ecosystem": "npm"
},
{
"name": "sort-css-media-queries",
"direct": false,
"version": "2.2.0",
"ecosystem": "npm"
},
{
"name": "source-map",
"direct": false,
"version": "0.6.1",
"ecosystem": "npm"
},
{
"name": "source-map",
"direct": false,
"version": "0.7.4",
"ecosystem": "npm"
},
{
"name": "source-map-js",
"direct": false,
"version": "1.2.1",
"ecosystem": "npm"
},
{
"name": "source-map-support",
"direct": false,
"version": "0.5.21",
"ecosystem": "npm"
},
{
"name": "space-separated-tokens",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "spdy",
"direct": false,
"version": "4.0.2",
"ecosystem": "npm"
},
{
"name": "spdy-transport",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "sprintf-js",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "srcset",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "statuses",
"direct": false,
"version": "1.5.0",
"ecosystem": "npm"
},
{
"name": "statuses",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "std-env",
"direct": false,
"version": "3.8.0",
"ecosystem": "npm"
},
{
"name": "string-width",
"direct": false,
"version": "4.2.3",
"ecosystem": "npm"
},
{
"name": "string-width",
"direct": false,
"version": "5.1.2",
"ecosystem": "npm"
},
{
"name": "string_decoder",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "string_decoder",
"direct": false,
"version": "1.3.0",
"ecosystem": "npm"
},
{
"name": "stringify-entities",
"direct": false,
"version": "4.0.4",
"ecosystem": "npm"
},
{
"name": "stringify-object",
"direct": false,
"version": "3.3.0",
"ecosystem": "npm"
},
{
"name": "strip-ansi",
"direct": false,
"version": "6.0.1",
"ecosystem": "npm"
},
{
"name": "strip-ansi",
"direct": false,
"version": "7.1.0",
"ecosystem": "npm"
},
{
"name": "strip-bom-string",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "strip-final-newline",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "strip-json-comments",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "strip-json-comments",
"direct": false,
"version": "3.1.1",
"ecosystem": "npm"
},
{
"name": "style-to-object",
"direct": false,
"version": "0.4.4",
"ecosystem": "npm"
},
{
"name": "style-to-object",
"direct": false,
"version": "1.0.8",
"ecosystem": "npm"
},
{
"name": "stylehacks",
"direct": false,
"version": "6.1.1",
"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": "svg-parser",
"direct": false,
"version": "2.0.4",
"ecosystem": "npm"
},
{
"name": "svgo",
"direct": false,
"version": "3.3.2",
"ecosystem": "npm"
},
{
"name": "tapable",
"direct": false,
"version": "1.1.3",
"ecosystem": "npm"
},
{
"name": "tapable",
"direct": false,
"version": "2.2.1",
"ecosystem": "npm"
},
{
"name": "terser",
"direct": false,
"version": "5.36.0",
"ecosystem": "npm"
},
{
"name": "terser-webpack-plugin",
"direct": false,
"version": "5.3.10",
"ecosystem": "npm"
},
{
"name": "text-table",
"direct": false,
"version": "0.2.0",
"ecosystem": "npm"
},
{
"name": "thunky",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "tiny-invariant",
"direct": false,
"version": "1.3.3",
"ecosystem": "npm"
},
{
"name": "tiny-warning",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "to-regex-range",
"direct": false,
"version": "5.0.1",
"ecosystem": "npm"
},
{
"name": "toidentifier",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "totalist",
"direct": false,
"version": "3.0.1",
"ecosystem": "npm"
},
{
"name": "trim-lines",
"direct": false,
"version": "3.0.1",
"ecosystem": "npm"
},
{
"name": "trough",
"direct": false,
"version": "2.2.0",
"ecosystem": "npm"
},
{
"name": "tslib",
"direct": false,
"version": "2.8.1",
"ecosystem": "npm"
},
{
"name": "type-fest",
"direct": false,
"version": "0.21.3",
"ecosystem": "npm"
},
{
"name": "type-fest",
"direct": false,
"version": "1.4.0",
"ecosystem": "npm"
},
{
"name": "type-fest",
"direct": false,
"version": "2.19.0",
"ecosystem": "npm"
},
{
"name": "type-is",
"direct": false,
"version": "1.6.18",
"ecosystem": "npm"
},
{
"name": "typedarray-to-buffer",
"direct": false,
"version": "3.1.5",
"ecosystem": "npm"
},
{
"name": "typescript",
"direct": false,
"version": "5.2.2",
"ecosystem": "npm"
},
{
"name": "undici-types",
"direct": false,
"version": "6.19.8",
"ecosystem": "npm"
},
{
"name": "unicode-canonical-property-names-ecmascript",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "unicode-emoji-modifier-base",
"direct": false,
"version": "1.0.0",
"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-property-aliases-ecmascript",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "unified",
"direct": false,
"version": "11.0.5",
"ecosystem": "npm"
},
{
"name": "unique-string",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "unist-util-is",
"direct": false,
"version": "6.0.0",
"ecosystem": "npm"
},
{
"name": "unist-util-position",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "unist-util-position-from-estree",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "unist-util-stringify-position",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "unist-util-visit",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "unist-util-visit-parents",
"direct": false,
"version": "6.0.1",
"ecosystem": "npm"
},
{
"name": "universalify",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "unpipe",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "update-browserslist-db",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "update-notifier",
"direct": false,
"version": "6.0.2",
"ecosystem": "npm"
},
{
"name": "uri-js",
"direct": false,
"version": "4.4.1",
"ecosystem": "npm"
},
{
"name": "url-loader",
"direct": false,
"version": "4.1.1",
"ecosystem": "npm"
},
{
"name": "util-deprecate",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "utila",
"direct": false,
"version": "0.4.0",
"ecosystem": "npm"
},
{
"name": "utility-types",
"direct": false,
"version": "3.11.0",
"ecosystem": "npm"
},
{
"name": "utils-merge",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "uuid",
"direct": false,
"version": "8.3.2",
"ecosystem": "npm"
},
{
"name": "value-equal",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "vary",
"direct": false,
"version": "1.1.2",
"ecosystem": "npm"
},
{
"name": "vfile",
"direct": false,
"version": "6.0.3",
"ecosystem": "npm"
},
{
"name": "vfile-location",
"direct": false,
"version": "5.0.3",
"ecosystem": "npm"
},
{
"name": "vfile-message",
"direct": false,
"version": "4.0.2",
"ecosystem": "npm"
},
{
"name": "watchpack",
"direct": false,
"version": "2.4.2",
"ecosystem": "npm"
},
{
"name": "wbuf",
"direct": false,
"version": "1.7.3",
"ecosystem": "npm"
},
{
"name": "web-namespaces",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "webpack",
"direct": false,
"version": "5.96.1",
"ecosystem": "npm"
},
{
"name": "webpack-bundle-analyzer",
"direct": false,
"version": "4.10.2",
"ecosystem": "npm"
},
{
"name": "webpack-dev-middleware",
"direct": false,
"version": "5.3.4",
"ecosystem": "npm"
},
{
"name": "webpack-dev-server",
"direct": false,
"version": "4.15.2",
"ecosystem": "npm"
},
{
"name": "webpack-merge",
"direct": false,
"version": "5.10.0",
"ecosystem": "npm"
},
{
"name": "webpack-merge",
"direct": false,
"version": "6.0.1",
"ecosystem": "npm"
},
{
"name": "webpack-sources",
"direct": false,
"version": "3.2.3",
"ecosystem": "npm"
},
{
"name": "webpackbar",
"direct": false,
"version": "6.0.1",
"ecosystem": "npm"
},
{
"name": "websocket-driver",
"direct": false,
"version": "0.7.4",
"ecosystem": "npm"
},
{
"name": "websocket-extensions",
"direct": false,
"version": "0.1.4",
"ecosystem": "npm"
},
{
"name": "which",
"direct": false,
"version": "1.3.1",
"ecosystem": "npm"
},
{
"name": "which",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "widest-line",
"direct": false,
"version": "4.0.1",
"ecosystem": "npm"
},
{
"name": "wildcard",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "wrap-ansi",
"direct": false,
"version": "7.0.0",
"ecosystem": "npm"
},
{
"name": "wrap-ansi",
"direct": false,
"version": "8.1.0",
"ecosystem": "npm"
},
{
"name": "wrappy",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "write-file-atomic",
"direct": false,
"version": "3.0.3",
"ecosystem": "npm"
},
{
"name": "ws",
"direct": false,
"version": "7.5.10",
"ecosystem": "npm"
},
{
"name": "ws",
"direct": false,
"version": "8.18.0",
"ecosystem": "npm"
},
{
"name": "xdg-basedir",
"direct": false,
"version": "5.1.0",
"ecosystem": "npm"
},
{
"name": "xml-js",
"direct": false,
"version": "1.6.11",
"ecosystem": "npm"
},
{
"name": "yallist",
"direct": false,
"version": "3.1.1",
"ecosystem": "npm"
},
{
"name": "yaml",
"direct": false,
"version": "1.10.2",
"ecosystem": "npm"
},
{
"name": "yocto-queue",
"direct": false,
"version": "0.1.0",
"ecosystem": "npm"
},
{
"name": "yocto-queue",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "zwitch",
"direct": false,
"version": "2.0.4",
"ecosystem": "npm"
}
],
"collected": true,
"truncated": false,
"total_count": 1094,
"direct_count": 0,
"indirect_count": 1094
}
},
"maintainership": {
"issues": {
"open_prs": 24,
"merged_prs": 303,
"open_issues": 64,
"closed_ratio": 0.729,
"closed_issues": 172,
"closed_unmerged_prs": 51
},
"bus_factor": 1,
"bot_contributors": 1,
"top_contributors": [
{
"type": "User",
"login": "vocksel",
"commits": 243,
"avatar_url": "https://avatars.githubusercontent.com/u/3081936?v=4"
},
{
"type": "User",
"login": "passhley",
"commits": 11,
"avatar_url": "https://avatars.githubusercontent.com/u/64950564?v=4"
},
{
"type": "User",
"login": "ryanlua",
"commits": 2,
"avatar_url": "https://avatars.githubusercontent.com/u/80087248?v=4"
},
{
"type": "User",
"login": "hy2k",
"commits": 2,
"avatar_url": "https://avatars.githubusercontent.com/u/17329720?v=4"
},
{
"type": "User",
"login": "devSparkle",
"commits": 1,
"avatar_url": "https://avatars.githubusercontent.com/u/6726742?v=4"
},
{
"type": "User",
"login": "Someon1e",
"commits": 1,
"avatar_url": "https://avatars.githubusercontent.com/u/142684596?v=4"
},
{
"type": "User",
"login": "ZachCurtis",
"commits": 1,
"avatar_url": "https://avatars.githubusercontent.com/u/31259055?v=4"
}
],
"contributors_sampled": 7,
"top_contributor_share": 0.931
},
"quality_signals": {
"has_ci": true,
"has_tests": true,
"ci_workflows": [
"ci.yml",
"docs.yml",
"release.yml",
"storybook.yml",
"strict.yml",
"upgrade-roblox-packages.yml"
],
"has_docs_dir": true,
"linter_configs": [],
"has_editorconfig": true,
"has_linter_config": false,
"has_precommit_config": false
},
"security_signals": {
"lockfiles": [
"package-lock.json"
],
"scorecard": {
"checks": [
{
"name": "Binary-Artifacts",
"score": 10,
"reason": "no binaries found in the repo",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
},
{
"name": "Branch-Protection",
"score": 4,
"reason": "branch protection is not maximal on development and all release branches",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
},
{
"name": "CI-Tests",
"score": 10,
"reason": "30 out of 30 merged PRs checked by a CI test -- score normalized to 10",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
},
{
"name": "CII-Best-Practices",
"score": 0,
"reason": "no effort to earn an OpenSSF best practices badge detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
},
{
"name": "Code-Review",
"score": 8,
"reason": "Found 24/29 approved changesets -- score normalized to 8",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
},
{
"name": "Contributors",
"score": 3,
"reason": "project has 1 contributing companies or organizations -- score normalized to 3",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
},
{
"name": "Dangerous-Workflow",
"score": 0,
"reason": "dangerous workflow patterns detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
},
{
"name": "Dependency-Update-Tool",
"score": 0,
"reason": "no update tool detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
},
{
"name": "Fuzzing",
"score": 0,
"reason": "project is not fuzzed",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
},
{
"name": "License",
"score": 10,
"reason": "license file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
},
{
"name": "Maintained",
"score": 10,
"reason": "16 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
},
{
"name": "Packaging",
"score": null,
"reason": "packaging workflow not detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
},
{
"name": "Pinned-Dependencies",
"score": 0,
"reason": "dependency not pinned by hash detected -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
},
{
"name": "SAST",
"score": 0,
"reason": "SAST tool is not run on all commits -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
},
{
"name": "Security-Policy",
"score": 0,
"reason": "security policy file not detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
},
{
"name": "Signed-Releases",
"score": 0,
"reason": "Project has not signed or included provenance with any releases.",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
},
{
"name": "Token-Permissions",
"score": 0,
"reason": "detected GitHub workflow tokens with excessive permissions",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
},
{
"name": "Vulnerabilities",
"score": 0,
"reason": "73 existing vulnerabilities detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
}
],
"commit": "8b74d51dae999250913b3c3646e17fa2b53fd6e5",
"ran_at": "2026-08-05T09:24:45Z",
"aggregate_score": 3,
"scorecard_version": "v5.5.0"
},
"has_codeql_workflow": false,
"has_security_policy": false,
"has_dependabot_config": false
},
"contribution_flow": {
"collected": true,
"recent_prs": {
"merged_7d": 0,
"decided_7d": 2,
"merged_30d": 0,
"authors_30d": 1,
"decided_30d": 3,
"sample_size": 60,
"window_days": 30,
"sample_exhausted": false,
"authors_probed_30d": 1,
"newcomer_merged_30d": 0,
"bot_prs_excluded_30d": 2,
"newcomer_authors_30d": 0,
"newcomer_decided_30d": 0
},
"ci_last_run_at": "2026-07-29T21:56:40Z",
"oldest_open_prs": [
{
"number": 339,
"created_at": "2025-09-17T19:54:20Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 345,
"created_at": "2025-09-23T16:50:08Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 422,
"created_at": "2025-10-26T22:15:10Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 481,
"created_at": "2026-01-14T02:29:40Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 494,
"created_at": "2026-01-19T02:57:33Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 513,
"created_at": "2026-03-01T22:23:02Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 538,
"created_at": "2026-03-20T15:57:46Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 550,
"created_at": "2026-04-03T02:46:43Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 564,
"created_at": "2026-04-19T05:39:37Z",
"last_comment_at": "2026-06-28T23:15:02Z",
"last_comment_author": "github-actions"
},
{
"number": 565,
"created_at": "2026-04-20T23:02:20Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 575,
"created_at": "2026-05-03T01:35:33Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 577,
"created_at": "2026-05-04T17:08:55Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 587,
"created_at": "2026-06-01T01:37:31Z",
"last_comment_at": "2026-06-01T01:38:05Z",
"last_comment_author": "github-actions"
},
{
"number": 589,
"created_at": "2026-06-07T02:59:12Z",
"last_comment_at": "2026-06-19T02:48:51Z",
"last_comment_author": "greptile-apps"
},
{
"number": 595,
"created_at": "2026-06-13T23:47:00Z",
"last_comment_at": "2026-06-19T21:06:20Z",
"last_comment_author": "greptile-apps"
},
{
"number": 601,
"created_at": "2026-06-19T22:13:13Z",
"last_comment_at": "2026-06-19T22:18:33Z",
"last_comment_author": "greptile-apps"
},
{
"number": 602,
"created_at": "2026-06-27T20:23:15Z",
"last_comment_at": "2026-06-28T20:57:43Z",
"last_comment_author": "vocksel"
},
{
"number": 603,
"created_at": "2026-06-28T22:06:37Z",
"last_comment_at": "2026-06-28T22:11:30Z",
"last_comment_author": "greptile-apps"
},
{
"number": 604,
"created_at": "2026-07-01T18:25:04Z",
"last_comment_at": "2026-07-01T18:27:30Z",
"last_comment_author": "greptile-apps"
},
{
"number": 607,
"created_at": "2026-07-04T00:18:33Z",
"last_comment_at": "2026-07-04T00:20:27Z",
"last_comment_author": "greptile-apps"
}
],
"last_merged_pr_at": "2026-07-05T18:02:36Z",
"ci_last_conclusion": "SUCCESS",
"oldest_open_issues": [
{
"number": 44,
"created_at": "2022-01-10T23:47:33Z",
"last_comment_at": "2022-03-29T17:56:44Z",
"last_comment_author": "passhley"
},
{
"number": 83,
"created_at": "2022-03-28T11:24:08Z",
"last_comment_at": "2022-03-29T01:23:19Z",
"last_comment_author": "passhley"
},
{
"number": 84,
"created_at": "2022-03-28T15:45:08Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 85,
"created_at": "2022-03-29T01:49:44Z",
"last_comment_at": "2022-04-02T19:40:52Z",
"last_comment_author": "vocksel"
},
{
"number": 95,
"created_at": "2022-05-12T23:01:11Z",
"last_comment_at": "2022-06-05T23:07:20Z",
"last_comment_author": "vocksel"
},
{
"number": 142,
"created_at": "2022-12-24T23:42:26Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 159,
"created_at": "2023-01-09T03:15:58Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 163,
"created_at": "2023-01-09T03:22:12Z",
"last_comment_at": "2023-03-12T20:30:57Z",
"last_comment_author": "vocksel"
},
{
"number": 166,
"created_at": "2023-01-14T20:30:45Z",
"last_comment_at": "2023-01-16T01:40:30Z",
"last_comment_author": "passhley"
},
{
"number": 178,
"created_at": "2023-01-18T05:33:01Z",
"last_comment_at": "2023-01-20T23:45:43Z",
"last_comment_author": "fractalbeauty"
},
{
"number": 213,
"created_at": "2023-05-16T03:20:26Z",
"last_comment_at": "2023-07-25T20:44:04Z",
"last_comment_author": "passhley"
},
{
"number": 223,
"created_at": "2023-11-16T04:44:24Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 230,
"created_at": "2023-11-30T20:38:05Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 261,
"created_at": "2024-08-17T23:27:08Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 272,
"created_at": "2024-11-10T20:28:21Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 273,
"created_at": "2024-11-10T20:29:10Z",
"last_comment_at": "2025-10-04T19:40:40Z",
"last_comment_author": "vocksel"
},
{
"number": 297,
"created_at": "2024-12-02T17:33:33Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 301,
"created_at": "2024-12-08T00:24:44Z",
"last_comment_at": "2026-04-16T21:58:20Z",
"last_comment_author": "ryanlua"
},
{
"number": 308,
"created_at": "2024-12-12T18:11:25Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 309,
"created_at": "2024-12-12T18:15:21Z",
"last_comment_at": null,
"last_comment_author": null
}
]
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/flipbook-labs/flipbook",
"host": "github.com",
"name": "flipbook",
"owner": "flipbook-labs"
},
"metrics": {
"overall": {
"key": "overall",
"band": "good",
"name": "Overall health",
"note": "The weighted overall 62 is calibrated to 69 on the published index scale (record calibration 2026-08-02).",
"notes": [
{
"code": "overall_calibration",
"params": {
"raw": 62,
"calibrated": 69,
"calibration": "2026-08-02"
}
}
],
"value": 69,
"inputs": {
"security": 44,
"vitality": 80,
"community": 51,
"governance": 50,
"calibration": "2026-08-02",
"engineering": 80,
"ai_readiness": 65,
"weighted_overall_raw": 62
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "excellent",
"name": "Vitality",
"value": 80,
"weight": 0.21,
"metrics": [
{
"key": "development_activity",
"band": "excellent",
"name": "Development activity",
"note": null,
"notes": [],
"value": 88,
"inputs": {
"commits_last_year": 136,
"human_commit_share": 0.98,
"days_since_last_push": 5,
"active_weeks_last_year": 35
},
"components": [
{
"key": "push_recency",
"name": "Push recency",
"detail": "last push 5 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "push_recency",
"params": {
"days": 5
}
}
],
"max_points": 36
},
{
"key": "commit_cadence",
"name": "Commit cadence",
"detail": "35/52 weeks with commits",
"points": 24.2,
"status": "partial",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 35
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "136 commits in the last year",
"points": 18,
"status": "met",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 136
}
}
],
"max_points": 18
},
{
"key": "openssf_scorecard_maintained",
"name": "OpenSSF Scorecard: Maintained",
"detail": "16 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "release_discipline",
"band": "good",
"name": "Release discipline",
"note": null,
"notes": [],
"value": 67,
"inputs": {
"releases_count": 13,
"latest_release_tag": "v2.5.0",
"releases_from_tags": false,
"days_since_latest_release": 116,
"mean_days_between_releases": 127.4
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "13 releases published",
"points": 27,
"status": "met",
"details": [
{
"code": "releases_published",
"params": {
"count": 13
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 116 days ago",
"points": 27,
"status": "partial",
"details": [
{
"code": "release_recency",
"params": {
"days": 116
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~127.4 days",
"points": 12.6,
"status": "partial",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 127.4
}
}
],
"max_points": 27
},
{
"key": "openssf_scorecard_signed_releases",
"name": "OpenSSF Scorecard: Signed-Releases",
"detail": "Project has not signed or included provenance with any releases.",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "abandonment",
"band": "exceptional",
"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": 30,
"days_since_last_human_commit_is_floor": false
},
"components": [
{
"key": "project_is_still_maintained",
"name": "Project is still maintained",
"detail": "last human commit 30 days ago",
"points": 100,
"status": "met",
"details": [
{
"code": "abandonment_maintained",
"params": {
"days": 30
}
}
],
"max_points": 100
}
]
}
],
"description": "Is the project alive — is code being written and are releases shipping?"
},
{
"key": "community",
"band": "moderate",
"name": "Community & Adoption",
"value": 51,
"weight": 0.17,
"metrics": [
{
"key": "popularity",
"band": "weak",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 45,
"inputs": {
"forks": 10,
"stars": 123,
"watchers": 5,
"growth_state": "unverified",
"growth_factor_pct": 100,
"growth_unverified_reason": "no_history"
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "123 stars",
"points": 33.8,
"status": "partial",
"details": [
{
"code": "stars",
"params": {
"count": 123
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "10 forks",
"points": 8,
"status": "partial",
"details": [
{
"code": "forks",
"params": {
"count": 10
}
}
],
"max_points": 25
},
{
"key": "watchers",
"name": "Watchers",
"detail": "5 watchers",
"points": 3.3,
"status": "partial",
"details": [
{
"code": "watchers",
"params": {
"count": 5
}
}
],
"max_points": 15
}
]
},
{
"key": "community_health",
"band": "moderate",
"name": "Community health",
"note": null,
"notes": [],
"value": 57,
"inputs": {
"has_readme": true,
"has_license": true,
"readme_badges": 4,
"has_contributing": false,
"has_issue_template": false,
"has_code_of_conduct": false,
"readme_badge_services": [
"shields.io"
],
"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
}
]
}
],
"description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
},
{
"key": "governance",
"band": "moderate",
"name": "Sustainability & Governance",
"value": 50,
"weight": 0.23,
"metrics": [
{
"key": "maintainer_resilience",
"band": "at_risk",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 23,
"inputs": {
"bus_factor": 1,
"contributors_sampled": 7,
"top_contributor_share": 0.931
},
"components": [
{
"key": "bus_factor",
"name": "Bus factor",
"detail": "1 contributor(s) cover half of all commits",
"points": 9,
"status": "partial",
"details": [
{
"code": "bus_factor",
"params": {
"count": 1
}
}
],
"max_points": 54
},
{
"key": "commit_distribution",
"name": "Commit distribution",
"detail": "top contributor authored 93% of commits",
"points": 1.6,
"status": "partial",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 93
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "7 contributors",
"points": 9.5,
"status": "partial",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 7
}
}
],
"max_points": 13.5
},
{
"key": "openssf_scorecard_contributors",
"name": "OpenSSF Scorecard: Contributors",
"detail": "project has 1 contributing companies or organizations -- score normalized to 3",
"points": 3,
"status": "partial",
"details": [],
"max_points": 10
}
]
},
{
"key": "responsiveness",
"band": "good",
"name": "Issue & PR responsiveness",
"note": "Excluded from scoring (no data or not applicable): Newcomer PR acceptance. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"newcomer_pr_acceptance"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 79,
"inputs": {
"merged_prs": 303,
"open_issues": 64,
"closed_issues": 172,
"prs_merged_7d": 0,
"prs_decided_7d": 2,
"prs_merged_30d": 0,
"prs_decided_30d": 3,
"issue_closed_ratio": 0.729,
"closed_unmerged_prs": 51,
"first_time_authors_30d": 0,
"first_time_prs_merged_30d": 0,
"first_time_prs_decided_30d": 0
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "73% of issues closed",
"points": 30.6,
"status": "partial",
"details": [
{
"code": "issues_closed_share",
"params": {
"share": 73
}
}
],
"max_points": 42
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "303/354 decided PRs merged",
"points": 25.7,
"status": "partial",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 303,
"decided": 354
}
}
],
"max_points": 30
},
{
"key": "newcomer_pr_acceptance",
"name": "Newcomer PR acceptance",
"detail": "no first-time contributor's PR decided in 30d",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_newcomer_prs",
"params": {
"days": 30
}
}
],
"max_points": 13
},
{
"key": "openssf_scorecard_code_review",
"name": "OpenSSF Scorecard: Code-Review",
"detail": "Found 24/29 approved changesets -- score normalized to 8",
"points": 12,
"status": "partial",
"details": [],
"max_points": 15
}
]
},
{
"key": "stewardship",
"band": "moderate",
"name": "Ownership & stewardship",
"note": null,
"notes": [],
"value": 54,
"inputs": {
"followers": 14,
"owner_type": "Organization",
"is_verified": null,
"owner_login": "flipbook-labs",
"public_repos": 16,
"account_age_days": 1187
},
"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": "14 followers of flipbook-labs",
"points": 8.5,
"status": "partial",
"details": [
{
"code": "owner_followers",
"params": {
"count": 14,
"login": "flipbook-labs"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "16 public repos, account ~3 yr old",
"points": 15.5,
"status": "partial",
"details": [
{
"code": "public_repos",
"params": {
"count": 16
}
},
{
"code": "account_age_years",
"params": {
"years": 3
}
}
],
"max_points": 25
}
]
}
],
"description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
},
{
"key": "engineering",
"band": "excellent",
"name": "Engineering Quality",
"value": 80,
"weight": 0.19,
"metrics": [
{
"key": "engineering_practices",
"band": "good",
"name": "Engineering practices",
"note": null,
"notes": [],
"value": 74,
"inputs": {
"has_ci": true,
"has_tests": true,
"has_editorconfig": true,
"has_linter_config": false,
"has_precommit_config": false
},
"components": [
{
"key": "ci_workflows",
"name": "CI workflows",
"detail": "6 workflow(s)",
"points": 24,
"status": "met",
"details": [
{
"code": "ci_workflows",
"params": {
"count": 6
}
}
],
"max_points": 24
},
{
"key": "tests_present",
"name": "Tests present",
"detail": null,
"points": 24,
"status": "met",
"details": [],
"max_points": 24
},
{
"key": "linter_config",
"name": "Linter config",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 16
},
{
"key": "pre_commit_hooks",
"name": "Pre-commit hooks",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 9.6
},
{
"key": "editorconfig",
"name": ".editorconfig",
"detail": null,
"points": 6.4,
"status": "met",
"details": [],
"max_points": 6.4
},
{
"key": "openssf_scorecard_ci_tests",
"name": "OpenSSF Scorecard: CI-Tests",
"detail": "30 out of 30 merged PRs checked by a CI test -- score normalized to 10",
"points": 20,
"status": "met",
"details": [],
"max_points": 20
}
]
},
{
"key": "documentation",
"band": "excellent",
"name": "Documentation",
"note": null,
"notes": [],
"value": 90,
"inputs": {
"topics": [
"roblox",
"plugin",
"storybook",
"roact"
],
"has_wiki": false,
"homepage": "https://flipbook-labs.github.io/flipbook/",
"has_readme": true,
"has_docs_dir": true,
"has_description": true
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 30,
"status": "met",
"details": [],
"max_points": 30
},
{
"key": "documentation_directory",
"name": "Documentation directory",
"detail": null,
"points": 25,
"status": "met",
"details": [],
"max_points": 25
},
{
"key": "documentation_homepage_site",
"name": "Documentation / homepage site",
"detail": "https://flipbook-labs.github.io/flipbook/",
"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": "4 topics",
"points": 10,
"status": "met",
"details": [
{
"code": "topics_count",
"params": {
"count": 4
}
}
],
"max_points": 10
},
{
"key": "wiki",
"name": "Wiki",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
}
],
"description": "Are baseline engineering and documentation practices in place?"
},
{
"key": "security",
"band": "weak",
"name": "Security",
"value": 44,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "at_risk",
"name": "Security posture",
"note": "Excluded from scoring (no data or not applicable): Packaging. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"packaging"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 30,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 17,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 1,
"scorecard_aggregate": 3
},
"components": [
{
"key": "binary_artifacts",
"name": "Binary-Artifacts",
"detail": "no binaries found in the repo",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "branch_protection",
"name": "Branch-Protection",
"detail": "branch protection is not maximal on development and all release branches",
"points": 3,
"status": "partial",
"details": [],
"max_points": 7.5
},
{
"key": "ci_tests",
"name": "CI-Tests",
"detail": "30 out of 30 merged PRs checked by a CI test -- score normalized to 10",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "cii_best_practices",
"name": "CII-Best-Practices",
"detail": "no effort to earn an OpenSSF best practices badge detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 2.5
},
{
"key": "code_review",
"name": "Code-Review",
"detail": "Found 24/29 approved changesets -- score normalized to 8",
"points": 6,
"status": "partial",
"details": [],
"max_points": 7.5
},
{
"key": "contributors",
"name": "Contributors",
"detail": "project has 1 contributing companies or organizations -- score normalized to 3",
"points": 0.8,
"status": "partial",
"details": [],
"max_points": 2.5
},
{
"key": "dangerous_workflow",
"name": "Dangerous-Workflow",
"detail": "dangerous workflow patterns detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
},
{
"key": "dependency_update_tool",
"name": "Dependency-Update-Tool",
"detail": "no update tool detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "fuzzing",
"name": "Fuzzing",
"detail": "project is not fuzzed",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "license",
"name": "License",
"detail": "license file detected",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "maintained",
"name": "Maintained",
"detail": "16 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "packaging",
"name": "Packaging",
"detail": "packaging workflow not detected",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 5
},
{
"key": "pinned_dependencies",
"name": "Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "sast",
"name": "SAST",
"detail": "SAST tool is not run on all commits -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "security_policy",
"name": "Security-Policy",
"detail": "security policy file not detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "signed_releases",
"name": "Signed-Releases",
"detail": "Project has not signed or included provenance with any releases.",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "token_permissions",
"name": "Token-Permissions",
"detail": "detected GitHub workflow tokens with excessive permissions",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "vulnerabilities",
"name": "Vulnerabilities",
"detail": "73 existing vulnerabilities detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
}
]
},
{
"key": "dependency_advisories",
"band": "exceptional",
"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 1094 resolved dependencies against OSV. This repository publishes no package the index resolves, so the repository dependency graph was assessed instead. That graph mixes development and test pins with shipped dependencies, so only the declared runtime dependencies are scored; transitive findings are reported as context and excluded from the score. Reachability is not analyzed.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"indirect_dependencies_free_of_known_advisories",
"no_advisories_left_outstanding"
]
}
},
{
"code": "weights_renormalized",
"params": {}
},
{
"code": "advisories_scope_repository",
"params": {
"assessed": 1094
}
},
{
"code": "advisories_repo_graph_caveat",
"params": {}
},
{
"code": "advisories_reachability",
"params": {}
}
],
"value": 100,
"inputs": {
"source": "osv",
"advisories": 81,
"affected_packages": 39,
"assessed_packages": 1094,
"unassessed_packages": 0,
"affected_by_severity": "critical 1, high 18, moderate 15, low 5",
"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": "exceptional",
"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": 1094,
"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": "exceptional",
"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"
],
"commit_weight_rule": {
"min_commits": 50,
"min_commit_share": 0.1
},
"review_only_matches": 0,
"below_threshold_exposures": [],
"assessed_self_published_locations": 7
},
"components": [
{
"key": "policy_exposure_multiplier",
"name": "Policy exposure multiplier",
"detail": "no confirmed policy-scope location match",
"points": 100,
"status": "met",
"details": [
{
"code": "jurisdiction_no_match",
"params": {}
}
],
"max_points": 100
}
]
}
],
"description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
},
{
"key": "ai_readiness",
"band": "good",
"name": "AI Readiness",
"value": 65,
"weight": 0.04,
"metrics": [
{
"key": "ai_agent_context",
"band": "excellent",
"name": "Agent context & guidance",
"note": null,
"notes": [],
"value": 85,
"inputs": {
"has_llms_txt": false,
"legible_history_share": 1,
"agent_instruction_files": [
"AGENTS.md",
"CLAUDE.md"
],
"agent_instruction_max_bytes": 12585
},
"components": [
{
"key": "agent_instructions",
"name": "Agent instructions",
"detail": "AGENTS.md, CLAUDE.md",
"points": 45,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "AGENTS.md, CLAUDE.md"
}
}
],
"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": "98 of 98 human commits state their intent (structured subject or explanatory body)",
"points": 40,
"status": "met",
"details": [
{
"code": "legible_history",
"params": {
"legible": 98,
"sampled": 98
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "moderate",
"name": "Verify loop (build / test / typecheck)",
"note": null,
"notes": [],
"value": 53,
"inputs": {
"has_nix": false,
"has_tests": true,
"lockfiles": [
"package-lock.json"
],
"has_dockerfile": false,
"typed_language": false,
"bootstrap_files": [],
"has_devcontainer": false,
"has_linter_config": false,
"typecheck_configs": [
"docs/tsconfig.json"
],
"agent_commit_share": 0.11,
"toolchain_manifests": [],
"dependency_bot_commit_share": 0
},
"components": [
{
"key": "one_command_bootstrap",
"name": "One-command bootstrap",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 18
},
{
"key": "automated_tests",
"name": "Automated tests",
"detail": null,
"points": 22,
"status": "met",
"details": [],
"max_points": 22
},
{
"key": "lint_format_config",
"name": "Lint / format config",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 11
},
{
"key": "static_type_checking",
"name": "Static type checking",
"detail": "docs/tsconfig.json",
"points": 11,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "docs/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": "11 of the last 100 commits agent-authored or agent-credited",
"points": 10,
"status": "met",
"details": [
{
"code": "agent_authored_commits",
"params": {
"count": 11,
"sampled": 100
}
}
],
"max_points": 10
},
{
"key": "automated_maintenance",
"name": "Automated maintenance",
"detail": "no automated dependency updates observed",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_dependency_automation",
"params": {}
}
],
"max_points": 8
},
{
"key": "openssf_scorecard_pinned_dependencies",
"name": "OpenSSF Scorecard: Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "ai_code_legibility",
"band": "excellent",
"name": "Code legibility for models",
"note": null,
"notes": [],
"value": 82,
"inputs": {
"primary_language": "Luau",
"largest_source_bytes": 1686,
"source_files_sampled": 5,
"oversized_source_files": 0
},
"components": [
{
"key": "type_checkable_code",
"name": "Type-checkable code",
"detail": "Luau with type-check config (docs/tsconfig.json)",
"points": 27,
"status": "partial",
"details": [
{
"code": "typecheck_config_language",
"params": {
"files": "docs/tsconfig.json",
"language": "Luau"
}
}
],
"max_points": 45
},
{
"key": "manageable_file_sizes",
"name": "Manageable file sizes",
"detail": "0/5 source files over 60KB",
"points": 55,
"status": "met",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 5,
"oversized": 0
}
}
],
"max_points": 55
}
]
},
{
"key": "ai_interfaces",
"band": "weak",
"name": "Machine-readable interfaces",
"note": null,
"notes": [],
"value": 40,
"inputs": {
"example_dirs": [
"example",
"examples"
],
"has_mcp_signal": false,
"api_schema_files": []
},
"components": [
{
"key": "api_schema_openapi_graphql_proto",
"name": "API schema (OpenAPI/GraphQL/proto)",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 40
},
{
"key": "mcp_server",
"name": "MCP server",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 20
},
{
"key": "runnable_examples",
"name": "Runnable examples",
"detail": "example, examples",
"points": 40,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "example, examples"
}
}
],
"max_points": 40
}
]
}
],
"description": "How well is the repo equipped to be developed and maintained with AI coding agents? Carries a deliberately small weight: agent tooling is a real maintenance signal, but its absence must never gate the top of the scale (calibration saturates at raw 91, so 100/100 remains reachable with AI Readiness at zero)."
}
],
"classification": {
"top": [
"host-extension"
],
"labels": [
"plugin"
],
"scores": {
"plugin": 4
},
"primary": "plugin",
"evidence": [
{
"tier": "description",
"label": "plugin",
"source": "description:plugin",
"weight": 2
},
{
"tier": "tags",
"label": "plugin",
"source": "tag:plugin",
"weight": 2
}
],
"artifacts": [],
"confidence": "low",
"host_extension": true,
"runs_as_process": false,
"consumed_by_code": false
},
"metrics_version": "2.5.0"
},
"warnings": [
"Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token"
],
"report_type": "repository",
"generated_at": "2026-08-05T09:25:07.715942Z",
"schema_version": "0.31.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/f/flipbook-labs/flipbook.svg",
"full_name": "flipbook-labs/flipbook",
"license_state": "standard",
"license_spdx": "MIT"
}