From 22a532d82d96012d217ae009d71dfd22ba4e290b Mon Sep 17 00:00:00 2001 From: Chris Feijoo Date: Fri, 13 Mar 2026 01:01:34 +0100 Subject: [PATCH 01/20] H-6324: Migrate petrinaut to oxlint and verify React Compiler Replace ESLint with oxlint for faster linting, add `.oxlintrc.json` config, configure React Compiler with `panicThreshold: "CRITICAL_ERRORS"`, add `"use no memo"` directives for hooks that intentionally write refs during render, break dependency cycles by extracting SubView registries into `ui-subviews.ts`, and fix `no-array-index-key` warnings in menu and place node components. Co-Authored-By: Claude Opus 4.6 --- apps/petrinaut-website/vite.config.ts | 9 +- libs/@hashintel/petrinaut/.oxlintrc.json | 440 ++++++++++++++++++ libs/@hashintel/petrinaut/eslint.config.js | 49 -- libs/@hashintel/petrinaut/package.json | 7 +- .../petrinaut/src/components/menu.tsx | 2 +- .../petrinaut/src/constants/ui-subviews.ts | 31 ++ libs/@hashintel/petrinaut/src/constants/ui.ts | 31 +- .../petrinaut/src/hooks/use-latest.ts | 1 + .../src/hooks/use-stable-callback.ts | 1 + .../petrinaut/src/resize/use-resize-drag.ts | 1 + .../views/Editor/panels/BottomPanel/panel.tsx | 6 +- .../subviews/simulation-timeline.tsx | 4 + .../views/Editor/panels/LeftSideBar/panel.tsx | 2 +- .../SDCPN/components/classic-place-node.tsx | 21 +- .../src/views/SDCPN/hooks/use-firing-delta.ts | 1 + libs/@hashintel/petrinaut/turbo.json | 3 + libs/@hashintel/petrinaut/vite.config.ts | 11 +- yarn.lock | 307 +++++++++++- 18 files changed, 817 insertions(+), 110 deletions(-) create mode 100644 libs/@hashintel/petrinaut/.oxlintrc.json delete mode 100644 libs/@hashintel/petrinaut/eslint.config.js create mode 100644 libs/@hashintel/petrinaut/src/constants/ui-subviews.ts diff --git a/apps/petrinaut-website/vite.config.ts b/apps/petrinaut-website/vite.config.ts index e5814c9b46a..883349c38c5 100644 --- a/apps/petrinaut-website/vite.config.ts +++ b/apps/petrinaut-website/vite.config.ts @@ -15,7 +15,14 @@ export default defineConfig(() => { plugins: [ react({ babel: { - plugins: ["babel-plugin-react-compiler"], + plugins: [ + [ + "babel-plugin-react-compiler", + { + panicThreshold: "CRITICAL_ERRORS", + }, + ], + ], }, }), ], diff --git a/libs/@hashintel/petrinaut/.oxlintrc.json b/libs/@hashintel/petrinaut/.oxlintrc.json new file mode 100644 index 00000000000..5d262289273 --- /dev/null +++ b/libs/@hashintel/petrinaut/.oxlintrc.json @@ -0,0 +1,440 @@ +{ + "$schema": "./node_modules/oxlint/configuration_schema.json", + "plugins": ["import", "react", "jsx-a11y", "unicorn", "typescript"], + "categories": { + "correctness": "off" + }, + "env": { + "builtin": true, + "es2026": true, + "browser": true, + "node": true + }, + "rules": { + "array-callback-return": ["error", { "allowImplicit": true }], + "block-scoped-var": "error", + "curly": ["error", "all"], + "default-case-last": "error", + "default-param-last": "error", + "eqeqeq": ["error", "always", { "null": "ignore" }], + "grouped-accessor-pairs": "error", + "guard-for-in": "error", + "no-alert": "warn", + "no-caller": "error", + "no-case-declarations": "error", + "no-constructor-return": "error", + "no-empty-pattern": "error", + "no-eval": "error", + "no-extend-native": "error", + "no-extra-bind": "error", + "no-extra-label": "error", + "no-fallthrough": "error", + "no-global-assign": "error", + "no-iterator": "error", + "no-labels": ["error", { "allowLoop": false, "allowSwitch": false }], + "no-lone-blocks": "error", + "no-loop-func": "error", + "no-multi-str": "error", + "no-new": "error", + "no-new-func": "error", + "no-new-wrappers": "error", + "no-nonoctal-decimal-escape": "error", + "no-param-reassign": [ + "error", + { + "props": true, + "ignorePropertyModificationsForRegex": ["^existing", "draft"] + } + ], + "no-proto": "error", + "no-redeclare": "error", + "no-return-assign": ["error", "always"], + "no-script-url": "error", + "no-self-assign": ["error", { "props": true }], + "no-self-compare": "error", + "no-sequences": "error", + "no-throw-literal": "error", + "no-unused-expressions": "error", + "no-unused-labels": "error", + "no-useless-catch": "error", + "no-useless-concat": "error", + "no-useless-escape": "error", + "no-useless-return": "error", + "no-void": ["error", { "allowAsStatement": true }], + "no-with": "error", + "prefer-promise-reject-errors": ["error", { "allowEmptyReject": true }], + "radix": "error", + "vars-on-top": "error", + "yoda": "error", + + "for-direction": "error", + "no-async-promise-executor": "error", + "no-compare-neg-zero": "error", + "no-cond-assign": ["error", "always"], + "no-console": "error", + "no-constant-condition": "warn", + "no-control-regex": "error", + "no-debugger": "error", + "no-dupe-else-if": "error", + "no-dupe-keys": "error", + "no-duplicate-case": "error", + "no-empty": "error", + "no-empty-character-class": "error", + "no-ex-assign": "error", + "no-extra-boolean-cast": "error", + "no-func-assign": "error", + "no-import-assign": "error", + "no-inner-declarations": "error", + "no-invalid-regexp": "error", + "no-irregular-whitespace": "error", + "no-loss-of-precision": "error", + "no-misleading-character-class": "error", + "no-obj-calls": "error", + "no-promise-executor-return": "error", + "no-prototype-builtins": "error", + "no-regex-spaces": "error", + "no-setter-return": "error", + "no-sparse-arrays": "error", + "no-template-curly-in-string": "error", + "no-unsafe-finally": "error", + "no-unsafe-negation": "error", + "no-unsafe-optional-chaining": [ + "error", + { "disallowArithmeticOperators": true } + ], + "no-useless-backreference": "error", + "use-isnan": "error", + "valid-typeof": ["error", { "requireStringLiterals": true }], + + "func-names": "warn", + "id-length": [ + "error", + { + "min": 2, + "exceptions": [ + "_", + "x", + "y", + "z", + "a", + "b", + "i", + "p", + "t", + "e", + "d", + "v", + "T", + "P" + ], + "properties": "never" + } + ], + "new-cap": [ + "error", + { + "newIsCap": true, + "capIsNew": false, + "capIsNewExceptions": [ + "Immutable.Map", + "Immutable.Set", + "Immutable.List" + ] + } + ], + "no-array-constructor": "error", + "no-bitwise": "error", + "no-lonely-if": "error", + "no-multi-assign": "error", + "no-unneeded-ternary": ["error", { "defaultAssignment": false }], + "operator-assignment": ["error", "always"], + "prefer-exponentiation-operator": "error", + "prefer-object-spread": "error", + "unicode-bom": ["error", "never"], + + "no-delete-var": "error", + "no-label-var": "error", + "no-restricted-globals": [ + "error", + { + "name": "isFinite", + "message": "Use Number.isFinite instead" + }, + { + "name": "isNaN", + "message": "Use Number.isNaN instead" + }, + "addEventListener", + "blur", + "close", + "closed", + "confirm", + "defaultStatus", + "defaultstatus", + "event", + "external", + "find", + "focus", + "frameElement", + "frames", + "history", + "innerHeight", + "innerWidth", + "length", + "location", + "locationbar", + "menubar", + "moveBy", + "moveTo", + "name", + "onblur", + "onerror", + "onfocus", + "onload", + "onresize", + "onunload", + "open", + "opener", + "opera", + "outerHeight", + "outerWidth", + "pageXOffset", + "pageYOffset", + "parent", + "print", + "removeEventListener", + "resizeBy", + "resizeTo", + "screen", + "screenLeft", + "screenTop", + "screenX", + "screenY", + "scroll", + "scrollbars", + "scrollBy", + "scrollTo", + "scrollX", + "scrollY", + "self", + "status", + "statusbar", + "stop", + "toolbar", + "top" + ], + "no-shadow": "error", + "no-shadow-restricted-names": "error", + "no-unused-vars": [ + "error", + { + "vars": "all", + "args": "after-used", + "ignoreRestSiblings": true + } + ], + "no-use-before-define": "error", + + "constructor-super": "error", + "no-class-assign": "error", + "no-const-assign": "error", + "no-restricted-imports": [ + "error", + { + "patterns": [ + { + "group": ["@local/*"], + "message": "You cannot use unpublished local packages in a published package." + } + ] + } + ], + "no-this-before-super": "error", + "no-useless-computed-key": "error", + "no-useless-constructor": "error", + "no-useless-rename": "error", + "no-var": "error", + "prefer-const": [ + "error", + { "destructuring": "any", "ignoreReadBeforeAssign": true } + ], + "prefer-numeric-literals": "error", + "prefer-rest-params": "error", + "prefer-spread": "error", + "prefer-template": "error", + "require-yield": "error", + "symbol-description": "error", + + "import/default": "error", + "import/namespace": "error", + "import/no-named-as-default": "warn", + "import/no-named-as-default-member": "warn", + "import/no-mutable-exports": "error", + "import/no-amd": "error", + "import/first": "error", + "import/no-duplicates": "warn", + "import/no-absolute-path": "error", + "import/no-dynamic-require": "error", + "import/no-webpack-loader-syntax": "error", + "import/no-named-default": "error", + "import/no-self-import": "error", + "import/no-cycle": "warn", + + "react/jsx-boolean-value": ["error", "never"], + "react/jsx-key": "error", + "react/jsx-no-duplicate-props": "error", + "react/jsx-no-undef": "error", + "react/jsx-pascal-case": ["error", { "allowAllCaps": true }], + "react/no-danger": "warn", + "react/no-will-update-set-state": "error", + "react/no-is-mounted": "error", + "react/no-string-refs": "error", + "react/no-unknown-property": "error", + "react/prefer-es6-class": ["error", "always"], + "react/self-closing-comp": "error", + "react/jsx-no-target-blank": ["error", { "enforceDynamicLinks": "always" }], + "react/jsx-no-comment-textnodes": "error", + "react/no-render-return-value": "error", + "react/no-find-dom-node": "error", + "react/no-danger-with-children": "error", + "react/no-children-prop": "error", + "react/no-array-index-key": "warn", + "react/void-dom-elements-no-children": "error", + "react/no-redundant-should-component-update": "error", + "react/jsx-curly-brace-presence": [ + "error", + { "props": "never", "children": "never" } + ], + "react/button-has-type": [ + "error", + { "button": true, "submit": true, "reset": false } + ], + "react/no-this-in-sfc": "error", + "react/jsx-fragments": ["error", "syntax"], + "react/jsx-no-script-url": "error", + "react/jsx-no-useless-fragment": "error", + "react/no-namespace": "error", + + "react-hooks/rules-of-hooks": "error", + + "jsx-a11y/alt-text": "error", + "jsx-a11y/anchor-has-content": "error", + "jsx-a11y/aria-activedescendant-has-tabindex": "error", + "jsx-a11y/aria-props": "error", + "jsx-a11y/aria-proptypes": "error", + "jsx-a11y/aria-role": ["error", { "ignoreNonDOM": false }], + "jsx-a11y/aria-unsupported-elements": "error", + "jsx-a11y/click-events-have-key-events": "error", + "jsx-a11y/heading-has-content": "error", + "jsx-a11y/html-has-lang": "error", + "jsx-a11y/iframe-has-title": "error", + "jsx-a11y/img-redundant-alt": "error", + "jsx-a11y/label-has-associated-control": "error", + "jsx-a11y/lang": "error", + "jsx-a11y/media-has-caption": "error", + "jsx-a11y/mouse-events-have-key-events": "error", + "jsx-a11y/no-access-key": "error", + "jsx-a11y/no-distracting-elements": "error", + "jsx-a11y/no-noninteractive-tabindex": [ + "error", + { "tags": [], "roles": ["tabpanel"] } + ], + "jsx-a11y/no-redundant-roles": "error", + "jsx-a11y/no-static-element-interactions": [ + "error", + { + "handlers": [ + "onClick", + "onMouseDown", + "onMouseUp", + "onKeyPress", + "onKeyDown", + "onKeyUp" + ] + } + ], + "jsx-a11y/role-has-required-aria-props": "error", + "jsx-a11y/role-supports-aria-props": "error", + "jsx-a11y/scope": "error", + "jsx-a11y/tabindex-no-positive": "error", + + "@typescript-eslint/consistent-type-imports": "error", + "@typescript-eslint/ban-ts-comment": [ + "error", + { + "ts-expect-error": "allow-with-description", + "minimumDescriptionLength": 10 + } + ], + + "unicorn/filename-case": "error", + "unicorn/no-array-for-each": "error", + "unicorn/prefer-node-protocol": "error" + }, + "globals": { + "NodeJS": "writable", + "FixMeLater": "readonly" + }, + "ignorePatterns": [ + "node_modules/**", + "dist/**", + "build/**", + "coverage/**", + "*.gen.*", + "*.tsbuildinfo", + ".turbo/**", + "eslint.config.js" + ], + "overrides": [ + { + "files": ["**/*.ts", "**/*.tsx"], + "rules": { + "constructor-super": "off", + "no-class-assign": "off", + "no-const-assign": "off", + "no-dupe-keys": "off", + "no-func-assign": "off", + "no-import-assign": "off", + "no-obj-calls": "off", + "no-redeclare": "off", + "no-setter-return": "off", + "no-this-before-super": "off", + "no-unsafe-negation": "off", + "no-with": "off", + "no-constant-condition": "off", + "no-throw-literal": "off", + "prefer-promise-reject-errors": "off", + "no-unused-vars": [ + "error", + { + "args": "all", + "argsIgnorePattern": "^_+", + "varsIgnorePattern": "^_+" + } + ], + "@typescript-eslint/no-duplicate-enum-values": "error", + "@typescript-eslint/no-empty-object-type": "error", + "@typescript-eslint/no-explicit-any": "error", + "@typescript-eslint/no-extra-non-null-assertion": "error", + "@typescript-eslint/no-misused-new": "error", + "@typescript-eslint/no-namespace": "error", + "@typescript-eslint/no-non-null-asserted-optional-chain": "error", + "@typescript-eslint/no-require-imports": "error", + "@typescript-eslint/no-this-alias": "error", + "@typescript-eslint/no-unnecessary-type-constraint": "error", + "@typescript-eslint/no-unsafe-declaration-merging": "error", + "@typescript-eslint/no-unsafe-function-type": "error", + "@typescript-eslint/no-wrapper-object-types": "error", + "@typescript-eslint/prefer-as-const": "error", + "@typescript-eslint/prefer-namespace-keyword": "error", + "@typescript-eslint/triple-slash-reference": "error" + } + }, + { + "files": ["**/scripts/**"], + "rules": { + "no-console": "off" + } + } + ] +} diff --git a/libs/@hashintel/petrinaut/eslint.config.js b/libs/@hashintel/petrinaut/eslint.config.js deleted file mode 100644 index b030e11bed3..00000000000 --- a/libs/@hashintel/petrinaut/eslint.config.js +++ /dev/null @@ -1,49 +0,0 @@ -import { createBase } from "@local/eslint/deprecated"; - -export default [ - ...createBase(import.meta.dirname), - { - languageOptions: { - parserOptions: { - projectService: { - allowDefaultProject: [ - "panda.config.ts", - "postcss.config.cjs", - "vite.config.ts", - ".storybook/main.ts", - ".storybook/manager.tsx", - ".storybook/preview.tsx", - ], - }, - tsconfigRootDir: import.meta.dirname, - }, - }, - }, - { - rules: { - // Disabled because React Compiler handles optimization automatically - "react/jsx-no-bind": "off", - "react/jsx-no-constructed-context-values": "off", - "react-hooks/exhaustive-deps": "off", - "no-restricted-imports": [ - "error", - { - patterns: [ - { - group: ["@local/*"], - message: - "You cannot use unpublished local packages in a published package.", - }, - ], - }, - ], - "no-param-reassign": [ - "error", - { - props: true, - ignorePropertyModificationsForRegex: ["^existing", "draft"], - }, - ], - }, - }, -]; diff --git a/libs/@hashintel/petrinaut/package.json b/libs/@hashintel/petrinaut/package.json index d605562371d..b0fc72b48e9 100644 --- a/libs/@hashintel/petrinaut/package.json +++ b/libs/@hashintel/petrinaut/package.json @@ -27,8 +27,7 @@ "scripts": { "build": "vite build", "dev": "storybook dev", - "fix:eslint": "eslint --fix .", - "lint:eslint": "eslint --report-unused-disable-directives .", + "lint:eslint": "oxlint .", "lint:tsc": "tsgo --noEmit", "prepublishOnly": "turbo run build", "test:unit": "vitest" @@ -61,7 +60,6 @@ }, "devDependencies": { "@hashintel/ds-helpers": "workspace:*", - "@local/eslint": "workspace:*", "@pandacss/dev": "1.4.3", "@storybook/react-vite": "10.2.13", "@testing-library/dom": "10.4.1", @@ -74,8 +72,9 @@ "@typescript/native-preview": "7.0.0-dev.20260309.1", "@vitejs/plugin-react": "5.1.4", "babel-plugin-react-compiler": "1.0.0", - "eslint": "9.39.3", + "immer": "10.1.3", "jsdom": "24.1.3", + "oxlint": "1.55.0", "react": "19.2.3", "react-dom": "19.2.3", "rolldown": "1.0.0-rc.8", diff --git a/libs/@hashintel/petrinaut/src/components/menu.tsx b/libs/@hashintel/petrinaut/src/components/menu.tsx index b9aa1f85712..90611bc6da0 100644 --- a/libs/@hashintel/petrinaut/src/components/menu.tsx +++ b/libs/@hashintel/petrinaut/src/components/menu.tsx @@ -294,7 +294,7 @@ export const Menu: React.FC = ({ style={maxHeight ? { maxHeight, overflowY: "auto" } : undefined} > {groups.map((group, groupIndex) => ( -
+
{groupIndex > 0 &&
}
{group.title && ( diff --git a/libs/@hashintel/petrinaut/src/constants/ui-subviews.ts b/libs/@hashintel/petrinaut/src/constants/ui-subviews.ts new file mode 100644 index 00000000000..d063d571f81 --- /dev/null +++ b/libs/@hashintel/petrinaut/src/constants/ui-subviews.ts @@ -0,0 +1,31 @@ +/** + * SubView registries for the Petrinaut editor panels. + * + * Separated from ui.ts to avoid import cycles: view files that define SubViews + * also consume EditorContext, which imports numeric constants from ui.ts. + */ + +import type { SubView } from "../components/sub-view/types"; +import { diagnosticsSubView } from "../views/Editor/panels/BottomPanel/subviews/diagnostics"; +import { simulationSettingsSubView } from "../views/Editor/panels/BottomPanel/subviews/simulation-settings"; +import { simulationTimelineSubView } from "../views/Editor/panels/BottomPanel/subviews/simulation-timeline"; +import { differentialEquationsListSubView } from "../views/Editor/panels/LeftSideBar/subviews/differential-equations-list"; +import { nodesListSubView } from "../views/Editor/panels/LeftSideBar/subviews/nodes-list"; +import { parametersListSubView } from "../views/Editor/panels/LeftSideBar/subviews/parameters-list"; +import { typesListSubView } from "../views/Editor/panels/LeftSideBar/subviews/types-list"; + +export const LEFT_SIDEBAR_SUBVIEWS: SubView[] = [ + typesListSubView, + differentialEquationsListSubView, + parametersListSubView, + nodesListSubView, +]; + +// Base subviews always visible in the bottom panel +export const BOTTOM_PANEL_SUBVIEWS: SubView[] = [ + diagnosticsSubView, + simulationSettingsSubView, +]; + +// Subviews only visible when simulation is running/paused +export const SIMULATION_ONLY_SUBVIEWS: SubView[] = [simulationTimelineSubView]; diff --git a/libs/@hashintel/petrinaut/src/constants/ui.ts b/libs/@hashintel/petrinaut/src/constants/ui.ts index a8403415a35..5e095b64f0c 100644 --- a/libs/@hashintel/petrinaut/src/constants/ui.ts +++ b/libs/@hashintel/petrinaut/src/constants/ui.ts @@ -1,16 +1,9 @@ /** * UI-related constants for the Petrinaut editor. + * + * NOTE: SubView registries live in ./ui-subviews.ts to avoid import cycles. */ -import type { SubView } from "../components/sub-view/types"; -import { diagnosticsSubView } from "../views/Editor/panels/BottomPanel/subviews/diagnostics"; -import { simulationSettingsSubView } from "../views/Editor/panels/BottomPanel/subviews/simulation-settings"; -import { simulationTimelineSubView } from "../views/Editor/panels/BottomPanel/subviews/simulation-timeline"; -import { differentialEquationsListSubView } from "../views/Editor/panels/LeftSideBar/subviews/differential-equations-list"; -import { nodesListSubView } from "../views/Editor/panels/LeftSideBar/subviews/nodes-list"; -import { parametersListSubView } from "../views/Editor/panels/LeftSideBar/subviews/parameters-list"; -import { typesListSubView } from "../views/Editor/panels/LeftSideBar/subviews/types-list"; - // Panel margin (spacing around panels) export const PANEL_MARGIN = 0; @@ -32,23 +25,3 @@ export const MAX_PROPERTIES_PANEL_WIDTH = 800; export const DEFAULT_BOTTOM_PANEL_HEIGHT = 180; export const MIN_BOTTOM_PANEL_HEIGHT = 100; export const MAX_BOTTOM_PANEL_HEIGHT = 600; - -// -// SubViews -// - -export const LEFT_SIDEBAR_SUBVIEWS: SubView[] = [ - typesListSubView, - differentialEquationsListSubView, - parametersListSubView, - nodesListSubView, -]; - -// Base subviews always visible in the bottom panel -export const BOTTOM_PANEL_SUBVIEWS: SubView[] = [ - diagnosticsSubView, - simulationSettingsSubView, -]; - -// Subviews only visible when simulation is running/paused -export const SIMULATION_ONLY_SUBVIEWS: SubView[] = [simulationTimelineSubView]; diff --git a/libs/@hashintel/petrinaut/src/hooks/use-latest.ts b/libs/@hashintel/petrinaut/src/hooks/use-latest.ts index 3c070969847..5cbd49511e6 100644 --- a/libs/@hashintel/petrinaut/src/hooks/use-latest.ts +++ b/libs/@hashintel/petrinaut/src/hooks/use-latest.ts @@ -25,6 +25,7 @@ import { useRef } from "react"; * @returns A ref object whose `.current` property is always the latest value */ export function useLatest(value: T): React.RefObject { + "use no memo"; // Intentionally writes ref during render — incompatible with React Compiler const ref = useRef(value); // Update synchronously during render (not in effect) so the ref is diff --git a/libs/@hashintel/petrinaut/src/hooks/use-stable-callback.ts b/libs/@hashintel/petrinaut/src/hooks/use-stable-callback.ts index 687a5f55d03..2bfb879fc21 100644 --- a/libs/@hashintel/petrinaut/src/hooks/use-stable-callback.ts +++ b/libs/@hashintel/petrinaut/src/hooks/use-stable-callback.ts @@ -23,6 +23,7 @@ import { useCallback, useEffect, useRef } from "react"; export function useStableCallback unknown>( callback: T, ): T { + "use no memo"; // Intentionally writes ref during render — incompatible with React Compiler const ref = useRef(callback); useEffect(() => { diff --git a/libs/@hashintel/petrinaut/src/resize/use-resize-drag.ts b/libs/@hashintel/petrinaut/src/resize/use-resize-drag.ts index 5bf60d1c0c5..56ca16bf07c 100644 --- a/libs/@hashintel/petrinaut/src/resize/use-resize-drag.ts +++ b/libs/@hashintel/petrinaut/src/resize/use-resize-drag.ts @@ -41,6 +41,7 @@ export const useResizeDrag = ({ onDragEnd, direction, }: UseResizeDragOptions) => { + "use no memo"; // Intentionally writes refs during render — incompatible with React Compiler const [isResizing, setIsResizing] = useState(false); const startPosRef = useRef(0); const overlayRef = useRef(null); diff --git a/libs/@hashintel/petrinaut/src/views/Editor/panels/BottomPanel/panel.tsx b/libs/@hashintel/petrinaut/src/views/Editor/panels/BottomPanel/panel.tsx index 49bd65b1c1d..572131d24bf 100644 --- a/libs/@hashintel/petrinaut/src/views/Editor/panels/BottomPanel/panel.tsx +++ b/libs/@hashintel/petrinaut/src/views/Editor/panels/BottomPanel/panel.tsx @@ -10,12 +10,14 @@ import { HorizontalTabsHeaderAction, } from "../../../../components/sub-view/horizontal/horizontal-tabs-container"; import { - BOTTOM_PANEL_SUBVIEWS, MAX_BOTTOM_PANEL_HEIGHT, MIN_BOTTOM_PANEL_HEIGHT, PANEL_MARGIN, - SIMULATION_ONLY_SUBVIEWS, } from "../../../../constants/ui"; +import { + BOTTOM_PANEL_SUBVIEWS, + SIMULATION_ONLY_SUBVIEWS, +} from "../../../../constants/ui-subviews"; import { SimulationContext } from "../../../../simulation/context"; import { type BottomPanelTab, diff --git a/libs/@hashintel/petrinaut/src/views/Editor/panels/BottomPanel/subviews/simulation-timeline.tsx b/libs/@hashintel/petrinaut/src/views/Editor/panels/BottomPanel/subviews/simulation-timeline.tsx index 65b23c3e4c1..304cefa0a4b 100644 --- a/libs/@hashintel/petrinaut/src/views/Editor/panels/BottomPanel/subviews/simulation-timeline.tsx +++ b/libs/@hashintel/petrinaut/src/views/Editor/panels/BottomPanel/subviews/simulation-timeline.tsx @@ -640,6 +640,7 @@ const CompartmentTimeSeries: React.FC = ({ onTooltipChange, onPlaceHover, }) => { + "use no memo"; // Complex chart with manual memoization — compiler cannot preserve existing useMemo/useCallback patterns const { totalFrames } = use(SimulationContext); const { setCurrentViewedFrame } = use(PlaybackContext); @@ -836,6 +837,7 @@ const CompartmentTimeSeries: React.FC = ({ ); return ( + // eslint-disable-next-line jsx-a11y/no-static-element-interactions -- interactive chart SVG = ({ onTooltipChange, onPlaceHover, }) => { + "use no memo"; // Complex chart with manual memoization — compiler cannot preserve existing useMemo/useCallback patterns const { totalFrames } = use(SimulationContext); const { setCurrentViewedFrame } = use(PlaybackContext); @@ -1211,6 +1214,7 @@ const StackedAreaChart: React.FC = ({ } return ( + // eslint-disable-next-line jsx-a11y/no-static-element-interactions -- interactive chart SVG > = ({ tokenCount = marking?.count ?? 0; } + // Split label into segments with unique keys (handles duplicate segments) + const labelSegments = splitPascalCase(data.label).reduce< + { key: string; text: string }[] + >((acc, segment) => { + const count = acc.filter((entry) => entry.text === segment).length; + acc.push({ + key: count > 0 ? `${segment}-${String(count)}` : segment, + text: segment, + }); + return acc; + }, []); + // Determine selection state const isInSelection = isSelected(id); const selectionVariant = isInSelection @@ -162,12 +174,9 @@ export const ClassicPlaceNode: React.FC> = ({ )}
- {splitPascalCase(data.label).map((segment, index) => ( - - {segment} + {labelSegments.map(({ key, text }) => ( + + {text} ))}
diff --git a/libs/@hashintel/petrinaut/src/views/SDCPN/hooks/use-firing-delta.ts b/libs/@hashintel/petrinaut/src/views/SDCPN/hooks/use-firing-delta.ts index aacc4ea2f1d..f029f20d98e 100644 --- a/libs/@hashintel/petrinaut/src/views/SDCPN/hooks/use-firing-delta.ts +++ b/libs/@hashintel/petrinaut/src/views/SDCPN/hooks/use-firing-delta.ts @@ -4,6 +4,7 @@ import { useEffect, useRef } from "react"; * Hook to track the previous firingCount and compute the delta. */ export function useFiringDelta(firingCount: number | null): number | null { + "use no memo"; // Intentionally reads ref during render — incompatible with React Compiler const prevFiringCountRef = useRef(null); useEffect(() => { diff --git a/libs/@hashintel/petrinaut/turbo.json b/libs/@hashintel/petrinaut/turbo.json index 6d9a1d1f9e5..8f4b0ef1bfa 100644 --- a/libs/@hashintel/petrinaut/turbo.json +++ b/libs/@hashintel/petrinaut/turbo.json @@ -5,6 +5,9 @@ "dependsOn": ["^build"], "outputs": ["dist/**"], "cache": false + }, + "lint:eslint": { + "dependsOn": [] } } } diff --git a/libs/@hashintel/petrinaut/vite.config.ts b/libs/@hashintel/petrinaut/vite.config.ts index aa305fc5e9c..f3f25d1efc0 100644 --- a/libs/@hashintel/petrinaut/vite.config.ts +++ b/libs/@hashintel/petrinaut/vite.config.ts @@ -75,7 +75,16 @@ export default defineConfig(({ command }) => ({ react({ babel: { - plugins: ["babel-plugin-react-compiler"], + plugins: [ + [ + "babel-plugin-react-compiler", + { + // Fail the build if the compiler encounters critical errors + // that aren't opted out via "use no memo" directives + panicThreshold: "CRITICAL_ERRORS", + }, + ], + ], }, }), diff --git a/yarn.lock b/yarn.lock index 91438205e9f..04e9adc0ff7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8012,7 +8012,6 @@ __metadata: "@hashintel/ds-components": "workspace:^" "@hashintel/ds-helpers": "workspace:*" "@hashintel/refractive": "workspace:^" - "@local/eslint": "workspace:*" "@mantine/hooks": "npm:8.3.5" "@monaco-editor/react": "npm:4.8.0-rc.3" "@pandacss/dev": "npm:1.4.3" @@ -8031,9 +8030,10 @@ __metadata: d3-array: "npm:3.2.4" d3-scale: "npm:4.0.2" elkjs: "npm:0.11.0" - eslint: "npm:9.39.3" + immer: "npm:10.1.3" jsdom: "npm:24.1.3" monaco-editor: "npm:0.55.1" + oxlint: "npm:1.55.0" react: "npm:19.2.3" react-dom: "npm:19.2.3" react-icons: "npm:5.5.0" @@ -11929,6 +11929,139 @@ __metadata: languageName: node linkType: hard +"@oxlint/binding-android-arm-eabi@npm:1.55.0": + version: 1.55.0 + resolution: "@oxlint/binding-android-arm-eabi@npm:1.55.0" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + +"@oxlint/binding-android-arm64@npm:1.55.0": + version: 1.55.0 + resolution: "@oxlint/binding-android-arm64@npm:1.55.0" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@oxlint/binding-darwin-arm64@npm:1.55.0": + version: 1.55.0 + resolution: "@oxlint/binding-darwin-arm64@npm:1.55.0" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@oxlint/binding-darwin-x64@npm:1.55.0": + version: 1.55.0 + resolution: "@oxlint/binding-darwin-x64@npm:1.55.0" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@oxlint/binding-freebsd-x64@npm:1.55.0": + version: 1.55.0 + resolution: "@oxlint/binding-freebsd-x64@npm:1.55.0" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@oxlint/binding-linux-arm-gnueabihf@npm:1.55.0": + version: 1.55.0 + resolution: "@oxlint/binding-linux-arm-gnueabihf@npm:1.55.0" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@oxlint/binding-linux-arm-musleabihf@npm:1.55.0": + version: 1.55.0 + resolution: "@oxlint/binding-linux-arm-musleabihf@npm:1.55.0" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@oxlint/binding-linux-arm64-gnu@npm:1.55.0": + version: 1.55.0 + resolution: "@oxlint/binding-linux-arm64-gnu@npm:1.55.0" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@oxlint/binding-linux-arm64-musl@npm:1.55.0": + version: 1.55.0 + resolution: "@oxlint/binding-linux-arm64-musl@npm:1.55.0" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@oxlint/binding-linux-ppc64-gnu@npm:1.55.0": + version: 1.55.0 + resolution: "@oxlint/binding-linux-ppc64-gnu@npm:1.55.0" + conditions: os=linux & cpu=ppc64 & libc=glibc + languageName: node + linkType: hard + +"@oxlint/binding-linux-riscv64-gnu@npm:1.55.0": + version: 1.55.0 + resolution: "@oxlint/binding-linux-riscv64-gnu@npm:1.55.0" + conditions: os=linux & cpu=riscv64 & libc=glibc + languageName: node + linkType: hard + +"@oxlint/binding-linux-riscv64-musl@npm:1.55.0": + version: 1.55.0 + resolution: "@oxlint/binding-linux-riscv64-musl@npm:1.55.0" + conditions: os=linux & cpu=riscv64 & libc=musl + languageName: node + linkType: hard + +"@oxlint/binding-linux-s390x-gnu@npm:1.55.0": + version: 1.55.0 + resolution: "@oxlint/binding-linux-s390x-gnu@npm:1.55.0" + conditions: os=linux & cpu=s390x & libc=glibc + languageName: node + linkType: hard + +"@oxlint/binding-linux-x64-gnu@npm:1.55.0": + version: 1.55.0 + resolution: "@oxlint/binding-linux-x64-gnu@npm:1.55.0" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@oxlint/binding-linux-x64-musl@npm:1.55.0": + version: 1.55.0 + resolution: "@oxlint/binding-linux-x64-musl@npm:1.55.0" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@oxlint/binding-openharmony-arm64@npm:1.55.0": + version: 1.55.0 + resolution: "@oxlint/binding-openharmony-arm64@npm:1.55.0" + conditions: os=openharmony & cpu=arm64 + languageName: node + linkType: hard + +"@oxlint/binding-win32-arm64-msvc@npm:1.55.0": + version: 1.55.0 + resolution: "@oxlint/binding-win32-arm64-msvc@npm:1.55.0" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@oxlint/binding-win32-ia32-msvc@npm:1.55.0": + version: 1.55.0 + resolution: "@oxlint/binding-win32-ia32-msvc@npm:1.55.0" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@oxlint/binding-win32-x64-msvc@npm:1.55.0": + version: 1.55.0 + resolution: "@oxlint/binding-win32-x64-msvc@npm:1.55.0" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + "@pandacss/config@npm:1.4.3, @pandacss/config@npm:^1.4.3": version: 1.4.3 resolution: "@pandacss/config@npm:1.4.3" @@ -17802,6 +17935,13 @@ __metadata: languageName: node linkType: hard +"@trysound/sax@npm:0.2.0": + version: 0.2.0 + resolution: "@trysound/sax@npm:0.2.0" + checksum: 10c0/44907308549ce775a41c38a815f747009ac45929a45d642b836aa6b0a536e4978d30b8d7d680bbd116e9dd73b7dbe2ef0d1369dcfc2d09e83ba381e485ecbe12 + languageName: node + linkType: hard + "@ts-morph/common@npm:~0.27.0": version: 0.27.0 resolution: "@ts-morph/common@npm:0.27.0" @@ -37162,6 +37302,79 @@ __metadata: languageName: node linkType: hard +"oxlint@npm:1.55.0": + version: 1.55.0 + resolution: "oxlint@npm:1.55.0" + dependencies: + "@oxlint/binding-android-arm-eabi": "npm:1.55.0" + "@oxlint/binding-android-arm64": "npm:1.55.0" + "@oxlint/binding-darwin-arm64": "npm:1.55.0" + "@oxlint/binding-darwin-x64": "npm:1.55.0" + "@oxlint/binding-freebsd-x64": "npm:1.55.0" + "@oxlint/binding-linux-arm-gnueabihf": "npm:1.55.0" + "@oxlint/binding-linux-arm-musleabihf": "npm:1.55.0" + "@oxlint/binding-linux-arm64-gnu": "npm:1.55.0" + "@oxlint/binding-linux-arm64-musl": "npm:1.55.0" + "@oxlint/binding-linux-ppc64-gnu": "npm:1.55.0" + "@oxlint/binding-linux-riscv64-gnu": "npm:1.55.0" + "@oxlint/binding-linux-riscv64-musl": "npm:1.55.0" + "@oxlint/binding-linux-s390x-gnu": "npm:1.55.0" + "@oxlint/binding-linux-x64-gnu": "npm:1.55.0" + "@oxlint/binding-linux-x64-musl": "npm:1.55.0" + "@oxlint/binding-openharmony-arm64": "npm:1.55.0" + "@oxlint/binding-win32-arm64-msvc": "npm:1.55.0" + "@oxlint/binding-win32-ia32-msvc": "npm:1.55.0" + "@oxlint/binding-win32-x64-msvc": "npm:1.55.0" + peerDependencies: + oxlint-tsgolint: ">=0.15.0" + dependenciesMeta: + "@oxlint/binding-android-arm-eabi": + optional: true + "@oxlint/binding-android-arm64": + optional: true + "@oxlint/binding-darwin-arm64": + optional: true + "@oxlint/binding-darwin-x64": + optional: true + "@oxlint/binding-freebsd-x64": + optional: true + "@oxlint/binding-linux-arm-gnueabihf": + optional: true + "@oxlint/binding-linux-arm-musleabihf": + optional: true + "@oxlint/binding-linux-arm64-gnu": + optional: true + "@oxlint/binding-linux-arm64-musl": + optional: true + "@oxlint/binding-linux-ppc64-gnu": + optional: true + "@oxlint/binding-linux-riscv64-gnu": + optional: true + "@oxlint/binding-linux-riscv64-musl": + optional: true + "@oxlint/binding-linux-s390x-gnu": + optional: true + "@oxlint/binding-linux-x64-gnu": + optional: true + "@oxlint/binding-linux-x64-musl": + optional: true + "@oxlint/binding-openharmony-arm64": + optional: true + "@oxlint/binding-win32-arm64-msvc": + optional: true + "@oxlint/binding-win32-ia32-msvc": + optional: true + "@oxlint/binding-win32-x64-msvc": + optional: true + peerDependenciesMeta: + oxlint-tsgolint: + optional: true + bin: + oxlint: bin/oxlint + checksum: 10c0/ea0a16c2c70c2756ff30ade960e98892b6687c13defdfb4b7a92f8e5396d636ce35815c71f878eb28822cf26f0be9b5600e80313a0d03a37822c21a533b10571 + languageName: node + linkType: hard + "p-cancelable@npm:^2.0.0": version: 2.1.1 resolution: "p-cancelable@npm:2.1.1" @@ -39155,6 +39368,15 @@ __metadata: languageName: node linkType: hard +"randombytes@npm:^2.1.0": + version: 2.1.0 + resolution: "randombytes@npm:2.1.0" + dependencies: + safe-buffer: "npm:^5.1.0" + checksum: 10c0/50395efda7a8c94f5dffab564f9ff89736064d32addf0cc7e8bf5e4166f09f8ded7a0849ca6c2d2a59478f7d90f78f20d8048bca3cdf8be09d8e8a10790388f3 + languageName: node + linkType: hard + "range-parser@npm:^1.2.1, range-parser@npm:~1.2.1": version: 1.2.1 resolution: "range-parser@npm:1.2.1" @@ -41054,7 +41276,7 @@ __metadata: languageName: node linkType: hard -"safe-buffer@npm:5.2.1, safe-buffer@npm:>=5.1.0, safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.1, safe-buffer@npm:^5.2.1, safe-buffer@npm:~5.2.0": +"safe-buffer@npm:5.2.1, safe-buffer@npm:>=5.1.0, safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:^5.1.1, safe-buffer@npm:^5.2.1, safe-buffer@npm:~5.2.0": version: 5.2.1 resolution: "safe-buffer@npm:5.2.1" checksum: 10c0/6501914237c0a86e9675d4e51d89ca3c21ffd6a31642efeba25ad65720bce6921c9e7e974e5be91a786b25aa058b5303285d3c15dbabf983a919f5f630d349f3 @@ -41163,13 +41385,6 @@ __metadata: languageName: node linkType: hard -"sax@npm:^1.5.0": - version: 1.5.0 - resolution: "sax@npm:1.5.0" - checksum: 10c0/bc3b60a7bfecd40b18256596e96b32df2488339ae1e00a77f842b568f0831228a16c3bd357ec500241ec0b9dc7a475a1286427795c4a8c50bb8e8878f3435dd8 - languageName: node - linkType: hard - "saxes@npm:^6.0.0": version: 6.0.0 resolution: "saxes@npm:6.0.0" @@ -41409,6 +41624,15 @@ __metadata: languageName: node linkType: hard +"serialize-javascript@npm:^6.0.2": + version: 6.0.2 + resolution: "serialize-javascript@npm:6.0.2" + dependencies: + randombytes: "npm:^2.1.0" + checksum: 10c0/2dd09ef4b65a1289ba24a788b1423a035581bef60817bea1f01eda8e3bda623f86357665fe7ac1b50f6d4f583f97db9615b3f07b2a2e8cbcb75033965f771dd2 + languageName: node + linkType: hard + "serialize-javascript@npm:^7.0.3": version: 7.0.4 resolution: "serialize-javascript@npm:7.0.4" @@ -42983,19 +43207,19 @@ __metadata: linkType: hard "svgo@npm:^3.0.2": - version: 3.3.3 - resolution: "svgo@npm:3.3.3" + version: 3.3.2 + resolution: "svgo@npm:3.3.2" dependencies: + "@trysound/sax": "npm:0.2.0" commander: "npm:^7.2.0" css-select: "npm:^5.1.0" css-tree: "npm:^2.3.1" css-what: "npm:^6.1.0" csso: "npm:^5.0.5" picocolors: "npm:^1.0.0" - sax: "npm:^1.5.0" bin: svgo: ./bin/svgo - checksum: 10c0/06568c6b0430f96748c557f0b17dc7de79b19fa16d13d7523527ede0ec727fc6d8e6a10e13ff106dc4372d2e6063a1dca7c455c495efb1b83857480425f9b965 + checksum: 10c0/a6badbd3d1d6dbb177f872787699ab34320b990d12e20798ecae915f0008796a0f3c69164f1485c9def399e0ce0a5683eb4a8045e51a5e1c364bb13a0d9f79e1 languageName: node linkType: hard @@ -43243,7 +43467,7 @@ __metadata: languageName: node linkType: hard -"terser-webpack-plugin@npm:5.4.0, terser-webpack-plugin@npm:^5.3.16": +"terser-webpack-plugin@npm:5.4.0": version: 5.4.0 resolution: "terser-webpack-plugin@npm:5.4.0" dependencies: @@ -43264,6 +43488,28 @@ __metadata: languageName: node linkType: hard +"terser-webpack-plugin@npm:^5.3.16": + version: 5.3.16 + resolution: "terser-webpack-plugin@npm:5.3.16" + dependencies: + "@jridgewell/trace-mapping": "npm:^0.3.25" + jest-worker: "npm:^27.4.5" + schema-utils: "npm:^4.3.0" + serialize-javascript: "npm:^6.0.2" + terser: "npm:^5.31.1" + peerDependencies: + webpack: ^5.1.0 + peerDependenciesMeta: + "@swc/core": + optional: true + esbuild: + optional: true + uglify-js: + optional: true + checksum: 10c0/39e37c5b3015c1a5354a3633f77235677bfa06eac2608ce26d258b1d1a74070a99910319a6f2f2c437eb61dc321f66434febe01d78e73fa96b4d4393b813f4cf + languageName: node + linkType: hard + "terser@npm:^5.10.0, terser@npm:^5.15.1, terser@npm:^5.31.1": version: 5.37.0 resolution: "terser@npm:5.37.0" @@ -44982,6 +45228,15 @@ __metadata: languageName: node linkType: hard +"use-sync-external-store@npm:1.2.2": + version: 1.2.2 + resolution: "use-sync-external-store@npm:1.2.2" + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + checksum: 10c0/23b1597c10adf15b26ade9e8c318d8cc0abc9ec0ab5fc7ca7338da92e89c2536abd150a5891bf076836c352fdfa104fc7231fb48f806fd9960e0cbe03601abaf + languageName: node + linkType: hard + "use-sync-external-store@npm:^1.2.2, use-sync-external-store@npm:^1.4.0, use-sync-external-store@npm:^1.5.0": version: 1.6.0 resolution: "use-sync-external-store@npm:1.6.0" @@ -46797,7 +47052,7 @@ __metadata: languageName: node linkType: hard -"zustand@npm:^4.4.0, zustand@npm:^4.4.1": +"zustand@npm:^4.4.0": version: 4.5.7 resolution: "zustand@npm:4.5.7" dependencies: @@ -46817,6 +47072,26 @@ __metadata: languageName: node linkType: hard +"zustand@npm:^4.4.1": + version: 4.5.5 + resolution: "zustand@npm:4.5.5" + dependencies: + use-sync-external-store: "npm:1.2.2" + peerDependencies: + "@types/react": ">=16.8" + immer: ">=9.0.6" + react: ">=16.8" + peerDependenciesMeta: + "@types/react": + optional: true + immer: + optional: true + react: + optional: true + checksum: 10c0/d04469d76b29c7e4070da269886de4efdadedd3d3824dc2a06ac4ff62e3b5877f925e927afe7382de651829872b99adec48082f1bd69fe486149be666345e626 + languageName: node + linkType: hard + "zwitch@npm:^2.0.0": version: 2.0.4 resolution: "zwitch@npm:2.0.4" From c98e9b12a7815f0313c7f293978eb109ad1cbeab Mon Sep 17 00:00:00 2001 From: Chris Feijoo Date: Fri, 13 Mar 2026 02:19:09 +0100 Subject: [PATCH 02/20] H-6324: Trim oxlint config by leveraging correctness category defaults Use `"correctness": "error"` instead of disabling the category and manually re-listing every rule. Remove rules that are redundant with `no-var`, obsolete JS patterns (labels, __proto__, new Function), class component React rules, and dead Immutable.js config. Co-Authored-By: Claude Opus 4.6 --- libs/@hashintel/petrinaut/.oxlintrc.json | 164 ++++------------------- 1 file changed, 27 insertions(+), 137 deletions(-) diff --git a/libs/@hashintel/petrinaut/.oxlintrc.json b/libs/@hashintel/petrinaut/.oxlintrc.json index 5d262289273..3ae6ede73c4 100644 --- a/libs/@hashintel/petrinaut/.oxlintrc.json +++ b/libs/@hashintel/petrinaut/.oxlintrc.json @@ -2,7 +2,7 @@ "$schema": "./node_modules/oxlint/configuration_schema.json", "plugins": ["import", "react", "jsx-a11y", "unicorn", "typescript"], "categories": { - "correctness": "off" + "correctness": "error" }, "env": { "builtin": true, @@ -12,7 +12,6 @@ }, "rules": { "array-callback-return": ["error", { "allowImplicit": true }], - "block-scoped-var": "error", "curly": ["error", "all"], "default-case-last": "error", "default-param-last": "error", @@ -20,25 +19,18 @@ "grouped-accessor-pairs": "error", "guard-for-in": "error", "no-alert": "warn", - "no-caller": "error", "no-case-declarations": "error", - "no-constructor-return": "error", - "no-empty-pattern": "error", - "no-eval": "error", + "no-cond-assign": ["error", "always"], + "no-console": "error", + "no-constant-condition": "warn", + "no-empty": "error", "no-extend-native": "error", "no-extra-bind": "error", - "no-extra-label": "error", "no-fallthrough": "error", - "no-global-assign": "error", - "no-iterator": "error", - "no-labels": ["error", { "allowLoop": false, "allowSwitch": false }], + "no-inner-declarations": "error", "no-lone-blocks": "error", "no-loop-func": "error", - "no-multi-str": "error", "no-new": "error", - "no-new-func": "error", - "no-new-wrappers": "error", - "no-nonoctal-decimal-escape": "error", "no-param-reassign": [ "error", { @@ -46,65 +38,34 @@ "ignorePropertyModificationsForRegex": ["^existing", "draft"] } ], - "no-proto": "error", + "no-promise-executor-return": "error", "no-redeclare": "error", "no-return-assign": ["error", "always"], "no-script-url": "error", "no-self-assign": ["error", { "props": true }], "no-self-compare": "error", "no-sequences": "error", + "no-template-curly-in-string": "error", "no-throw-literal": "error", - "no-unused-expressions": "error", - "no-unused-labels": "error", - "no-useless-catch": "error", + "no-unsafe-optional-chaining": [ + "error", + { "disallowArithmeticOperators": true } + ], + "no-unused-vars": [ + "error", + { + "vars": "all", + "args": "after-used", + "ignoreRestSiblings": true + } + ], "no-useless-concat": "error", - "no-useless-escape": "error", "no-useless-return": "error", "no-void": ["error", { "allowAsStatement": true }], - "no-with": "error", "prefer-promise-reject-errors": ["error", { "allowEmptyReject": true }], "radix": "error", - "vars-on-top": "error", - "yoda": "error", - - "for-direction": "error", - "no-async-promise-executor": "error", - "no-compare-neg-zero": "error", - "no-cond-assign": ["error", "always"], - "no-console": "error", - "no-constant-condition": "warn", - "no-control-regex": "error", - "no-debugger": "error", - "no-dupe-else-if": "error", - "no-dupe-keys": "error", - "no-duplicate-case": "error", - "no-empty": "error", - "no-empty-character-class": "error", - "no-ex-assign": "error", - "no-extra-boolean-cast": "error", - "no-func-assign": "error", - "no-import-assign": "error", - "no-inner-declarations": "error", - "no-invalid-regexp": "error", - "no-irregular-whitespace": "error", - "no-loss-of-precision": "error", - "no-misleading-character-class": "error", - "no-obj-calls": "error", - "no-promise-executor-return": "error", - "no-prototype-builtins": "error", - "no-regex-spaces": "error", - "no-setter-return": "error", - "no-sparse-arrays": "error", - "no-template-curly-in-string": "error", - "no-unsafe-finally": "error", - "no-unsafe-negation": "error", - "no-unsafe-optional-chaining": [ - "error", - { "disallowArithmeticOperators": true } - ], - "no-useless-backreference": "error", - "use-isnan": "error", "valid-typeof": ["error", { "requireStringLiterals": true }], + "yoda": "error", "func-names": "warn", "id-length": [ @@ -134,12 +95,7 @@ "error", { "newIsCap": true, - "capIsNew": false, - "capIsNewExceptions": [ - "Immutable.Map", - "Immutable.Set", - "Immutable.List" - ] + "capIsNew": false } ], "no-array-constructor": "error", @@ -148,12 +104,8 @@ "no-multi-assign": "error", "no-unneeded-ternary": ["error", { "defaultAssignment": false }], "operator-assignment": ["error", "always"], - "prefer-exponentiation-operator": "error", "prefer-object-spread": "error", - "unicode-bom": ["error", "never"], - "no-delete-var": "error", - "no-label-var": "error", "no-restricted-globals": [ "error", { @@ -224,20 +176,8 @@ "top" ], "no-shadow": "error", - "no-shadow-restricted-names": "error", - "no-unused-vars": [ - "error", - { - "vars": "all", - "args": "after-used", - "ignoreRestSiblings": true - } - ], "no-use-before-define": "error", - "constructor-super": "error", - "no-class-assign": "error", - "no-const-assign": "error", "no-restricted-imports": [ "error", { @@ -249,10 +189,8 @@ ] } ], - "no-this-before-super": "error", "no-useless-computed-key": "error", "no-useless-constructor": "error", - "no-useless-rename": "error", "no-var": "error", "prefer-const": [ "error", @@ -262,11 +200,8 @@ "prefer-rest-params": "error", "prefer-spread": "error", "prefer-template": "error", - "require-yield": "error", "symbol-description": "error", - "import/default": "error", - "import/namespace": "error", "import/no-named-as-default": "warn", "import/no-named-as-default-member": "warn", "import/no-mutable-exports": "error", @@ -281,26 +216,13 @@ "import/no-cycle": "warn", "react/jsx-boolean-value": ["error", "never"], - "react/jsx-key": "error", - "react/jsx-no-duplicate-props": "error", - "react/jsx-no-undef": "error", "react/jsx-pascal-case": ["error", { "allowAllCaps": true }], "react/no-danger": "warn", - "react/no-will-update-set-state": "error", - "react/no-is-mounted": "error", - "react/no-string-refs": "error", "react/no-unknown-property": "error", - "react/prefer-es6-class": ["error", "always"], "react/self-closing-comp": "error", "react/jsx-no-target-blank": ["error", { "enforceDynamicLinks": "always" }], "react/jsx-no-comment-textnodes": "error", - "react/no-render-return-value": "error", - "react/no-find-dom-node": "error", - "react/no-danger-with-children": "error", - "react/no-children-prop": "error", "react/no-array-index-key": "warn", - "react/void-dom-elements-no-children": "error", - "react/no-redundant-should-component-update": "error", "react/jsx-curly-brace-presence": [ "error", { "props": "never", "children": "never" } @@ -309,37 +231,20 @@ "error", { "button": true, "submit": true, "reset": false } ], - "react/no-this-in-sfc": "error", "react/jsx-fragments": ["error", "syntax"], "react/jsx-no-script-url": "error", "react/jsx-no-useless-fragment": "error", "react/no-namespace": "error", "react-hooks/rules-of-hooks": "error", + "react-hooks/exhaustive-deps": "off", - "jsx-a11y/alt-text": "error", - "jsx-a11y/anchor-has-content": "error", - "jsx-a11y/aria-activedescendant-has-tabindex": "error", - "jsx-a11y/aria-props": "error", - "jsx-a11y/aria-proptypes": "error", + "jsx-a11y/prefer-tag-over-role": "off", "jsx-a11y/aria-role": ["error", { "ignoreNonDOM": false }], - "jsx-a11y/aria-unsupported-elements": "error", - "jsx-a11y/click-events-have-key-events": "error", - "jsx-a11y/heading-has-content": "error", - "jsx-a11y/html-has-lang": "error", - "jsx-a11y/iframe-has-title": "error", - "jsx-a11y/img-redundant-alt": "error", - "jsx-a11y/label-has-associated-control": "error", - "jsx-a11y/lang": "error", - "jsx-a11y/media-has-caption": "error", - "jsx-a11y/mouse-events-have-key-events": "error", - "jsx-a11y/no-access-key": "error", - "jsx-a11y/no-distracting-elements": "error", "jsx-a11y/no-noninteractive-tabindex": [ "error", { "tags": [], "roles": ["tabpanel"] } ], - "jsx-a11y/no-redundant-roles": "error", "jsx-a11y/no-static-element-interactions": [ "error", { @@ -353,10 +258,6 @@ ] } ], - "jsx-a11y/role-has-required-aria-props": "error", - "jsx-a11y/role-supports-aria-props": "error", - "jsx-a11y/scope": "error", - "jsx-a11y/tabindex-no-positive": "error", "@typescript-eslint/consistent-type-imports": "error", "@typescript-eslint/ban-ts-comment": [ @@ -367,6 +268,7 @@ } ], + "unicorn/no-new-array": "off", "unicorn/filename-case": "error", "unicorn/no-array-for-each": "error", "unicorn/prefer-node-protocol": "error" @@ -382,8 +284,7 @@ "coverage/**", "*.gen.*", "*.tsbuildinfo", - ".turbo/**", - "eslint.config.js" + ".turbo/**" ], "overrides": [ { @@ -412,22 +313,11 @@ "varsIgnorePattern": "^_+" } ], - "@typescript-eslint/no-duplicate-enum-values": "error", "@typescript-eslint/no-empty-object-type": "error", "@typescript-eslint/no-explicit-any": "error", - "@typescript-eslint/no-extra-non-null-assertion": "error", - "@typescript-eslint/no-misused-new": "error", - "@typescript-eslint/no-namespace": "error", - "@typescript-eslint/no-non-null-asserted-optional-chain": "error", "@typescript-eslint/no-require-imports": "error", - "@typescript-eslint/no-this-alias": "error", "@typescript-eslint/no-unnecessary-type-constraint": "error", - "@typescript-eslint/no-unsafe-declaration-merging": "error", - "@typescript-eslint/no-unsafe-function-type": "error", - "@typescript-eslint/no-wrapper-object-types": "error", - "@typescript-eslint/prefer-as-const": "error", - "@typescript-eslint/prefer-namespace-keyword": "error", - "@typescript-eslint/triple-slash-reference": "error" + "@typescript-eslint/no-unsafe-function-type": "error" } }, { From 53ac41460f6a93b963f94ac4fedd51164cad878a Mon Sep 17 00:00:00 2001 From: Chris Feijoo Date: Fri, 13 Mar 2026 03:34:57 +0100 Subject: [PATCH 03/20] H-6324: Add CLAUDE.md for petrinaut Document stack, React Compiler conventions, commands, and coding standards so AI agents and contributors have consistent context. Co-Authored-By: Claude Opus 4.6 --- libs/@hashintel/petrinaut/CLAUDE.md | 47 +++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 libs/@hashintel/petrinaut/CLAUDE.md diff --git a/libs/@hashintel/petrinaut/CLAUDE.md b/libs/@hashintel/petrinaut/CLAUDE.md new file mode 100644 index 00000000000..10b8149757c --- /dev/null +++ b/libs/@hashintel/petrinaut/CLAUDE.md @@ -0,0 +1,47 @@ +# Petrinaut + +Visual editor for Stochastic Dynamic Colored Petri Nets (SDCPN). Published npm package (`@hashintel/petrinaut`). + +## Stack + +- React 19 with React Compiler (babel-plugin-react-compiler) +- TypeScript (type-checked with `tsgo`) +- Vite 8 + Rolldown (library build + demo site) +- Panda CSS for styling +- oxlint for linting +- vitest for testing + +## React Compiler + +React Compiler is enabled — it automatically memoizes components and hooks. + +**Do not use `useMemo`, `useCallback`, or `React.memo` unless there is a specific reason the compiler cannot handle it.** The compiler makes manual memoization unnecessary in the vast majority of cases. + +When code is genuinely incompatible (e.g. writing to refs during render), opt out with: + +```ts +function useMyHook() { + "use no memo"; // + // ... +} +``` + +The compiler runs with `panicThreshold: "CRITICAL_ERRORS"` — the build fails if it encounters critical errors not opted out via `"use no memo"`. + +## Commands + +```sh +yarn dev # Dev server (demo site) +yarn build # Library build +yarn lint:eslint # Lint with oxlint +yarn lint:tsc # Type check with tsgo +yarn test:unit # Unit tests (vitest) +``` + +## Conventions + +- Function components only (no class components except error boundaries) +- `use()` for context consumption (React 19), not `useContext()` +- Styles via Panda CSS (`css()`, `cva()` from `@hashintel/ds-helpers/css`) +- No `@local/*` imports — this is a published package +- Prefix unused parameters with `_` From 9352d8469924297510ee4e3bf3c784fa9b59cfde Mon Sep 17 00:00:00 2001 From: Chris Feijoo Date: Fri, 13 Mar 2026 20:51:14 +0100 Subject: [PATCH 04/20] H-6324: Aggressively trim oxlint config for TS-only codebase Flatten TS override (all source is .ts/.tsx), remove rules redundant with TypeScript, drop stack-irrelevant rules (AMD, webpack, require), and trim restricted globals to genuinely confusing names. Co-Authored-By: Claude Opus 4.6 --- libs/@hashintel/petrinaut/.oxlintrc.json | 207 +++-------------------- 1 file changed, 28 insertions(+), 179 deletions(-) diff --git a/libs/@hashintel/petrinaut/.oxlintrc.json b/libs/@hashintel/petrinaut/.oxlintrc.json index 3ae6ede73c4..16cd42711c9 100644 --- a/libs/@hashintel/petrinaut/.oxlintrc.json +++ b/libs/@hashintel/petrinaut/.oxlintrc.json @@ -7,28 +7,17 @@ "env": { "builtin": true, "es2026": true, - "browser": true, - "node": true + "browser": true }, "rules": { "array-callback-return": ["error", { "allowImplicit": true }], - "curly": ["error", "all"], "default-case-last": "error", "default-param-last": "error", "eqeqeq": ["error", "always", { "null": "ignore" }], - "grouped-accessor-pairs": "error", "guard-for-in": "error", "no-alert": "warn", - "no-case-declarations": "error", "no-cond-assign": ["error", "always"], - "no-console": "error", - "no-constant-condition": "warn", - "no-empty": "error", "no-extend-native": "error", - "no-extra-bind": "error", - "no-fallthrough": "error", - "no-inner-declarations": "error", - "no-lone-blocks": "error", "no-loop-func": "error", "no-new": "error", "no-param-reassign": [ @@ -38,15 +27,10 @@ "ignorePropertyModificationsForRegex": ["^existing", "draft"] } ], - "no-promise-executor-return": "error", - "no-redeclare": "error", "no-return-assign": ["error", "always"], - "no-script-url": "error", - "no-self-assign": ["error", { "props": true }], "no-self-compare": "error", "no-sequences": "error", "no-template-curly-in-string": "error", - "no-throw-literal": "error", "no-unsafe-optional-chaining": [ "error", { "disallowArithmeticOperators": true } @@ -54,18 +38,12 @@ "no-unused-vars": [ "error", { - "vars": "all", - "args": "after-used", - "ignoreRestSiblings": true + "args": "all", + "argsIgnorePattern": "^_+", + "varsIgnorePattern": "^_+" } ], - "no-useless-concat": "error", - "no-useless-return": "error", "no-void": ["error", { "allowAsStatement": true }], - "prefer-promise-reject-errors": ["error", { "allowEmptyReject": true }], - "radix": "error", - "valid-typeof": ["error", { "requireStringLiterals": true }], - "yoda": "error", "func-names": "warn", "id-length": [ @@ -91,89 +69,17 @@ "properties": "never" } ], - "new-cap": [ - "error", - { - "newIsCap": true, - "capIsNew": false - } - ], - "no-array-constructor": "error", "no-bitwise": "error", - "no-lonely-if": "error", "no-multi-assign": "error", - "no-unneeded-ternary": ["error", { "defaultAssignment": false }], - "operator-assignment": ["error", "always"], - "prefer-object-spread": "error", "no-restricted-globals": [ "error", - { - "name": "isFinite", - "message": "Use Number.isFinite instead" - }, - { - "name": "isNaN", - "message": "Use Number.isNaN instead" - }, - "addEventListener", - "blur", - "close", - "closed", - "confirm", - "defaultStatus", - "defaultstatus", + { "name": "isFinite", "message": "Use Number.isFinite instead" }, + { "name": "isNaN", "message": "Use Number.isNaN instead" }, "event", - "external", - "find", - "focus", - "frameElement", - "frames", - "history", - "innerHeight", - "innerWidth", - "length", - "location", - "locationbar", - "menubar", - "moveBy", - "moveTo", "name", - "onblur", - "onerror", - "onfocus", - "onload", - "onresize", - "onunload", - "open", - "opener", - "opera", - "outerHeight", - "outerWidth", - "pageXOffset", - "pageYOffset", - "parent", - "print", - "removeEventListener", - "resizeBy", - "resizeTo", - "screen", - "screenLeft", - "screenTop", - "screenX", - "screenY", - "scroll", - "scrollbars", - "scrollBy", - "scrollTo", - "scrollX", - "scrollY", - "self", - "status", - "statusbar", - "stop", - "toolbar", - "top" + "length", + "status" ], "no-shadow": "error", "no-use-before-define": "error", @@ -189,52 +95,24 @@ ] } ], - "no-useless-computed-key": "error", - "no-useless-constructor": "error", - "no-var": "error", - "prefer-const": [ - "error", - { "destructuring": "any", "ignoreReadBeforeAssign": true } - ], - "prefer-numeric-literals": "error", - "prefer-rest-params": "error", - "prefer-spread": "error", - "prefer-template": "error", - "symbol-description": "error", "import/no-named-as-default": "warn", "import/no-named-as-default-member": "warn", "import/no-mutable-exports": "error", - "import/no-amd": "error", - "import/first": "error", "import/no-duplicates": "warn", - "import/no-absolute-path": "error", - "import/no-dynamic-require": "error", - "import/no-webpack-loader-syntax": "error", "import/no-named-default": "error", "import/no-self-import": "error", "import/no-cycle": "warn", - "react/jsx-boolean-value": ["error", "never"], "react/jsx-pascal-case": ["error", { "allowAllCaps": true }], "react/no-danger": "warn", - "react/no-unknown-property": "error", - "react/self-closing-comp": "error", "react/jsx-no-target-blank": ["error", { "enforceDynamicLinks": "always" }], "react/jsx-no-comment-textnodes": "error", "react/no-array-index-key": "warn", - "react/jsx-curly-brace-presence": [ - "error", - { "props": "never", "children": "never" } - ], "react/button-has-type": [ "error", { "button": true, "submit": true, "reset": false } ], - "react/jsx-fragments": ["error", "syntax"], - "react/jsx-no-script-url": "error", - "react/jsx-no-useless-fragment": "error", - "react/no-namespace": "error", "react-hooks/rules-of-hooks": "error", "react-hooks/exhaustive-deps": "off", @@ -259,7 +137,6 @@ } ], - "@typescript-eslint/consistent-type-imports": "error", "@typescript-eslint/ban-ts-comment": [ "error", { @@ -267,64 +144,36 @@ "minimumDescriptionLength": 10 } ], + "@typescript-eslint/no-empty-object-type": "error", + "@typescript-eslint/no-explicit-any": "error", + "@typescript-eslint/no-require-imports": "error", + "@typescript-eslint/no-unnecessary-type-constraint": "error", + "@typescript-eslint/no-unsafe-function-type": "error", "unicorn/no-new-array": "off", "unicorn/filename-case": "error", - "unicorn/no-array-for-each": "error", - "unicorn/prefer-node-protocol": "error" - }, - "globals": { - "NodeJS": "writable", - "FixMeLater": "readonly" + + "constructor-super": "off", + "no-class-assign": "off", + "no-const-assign": "off", + "no-dupe-keys": "off", + "no-func-assign": "off", + "no-import-assign": "off", + "no-obj-calls": "off", + "no-redeclare": "off", + "no-setter-return": "off", + "no-this-before-super": "off", + "no-unsafe-negation": "off", + "no-constant-condition": "off", + "no-throw-literal": "off", + "prefer-promise-reject-errors": "off" }, "ignorePatterns": [ - "node_modules/**", "dist/**", "build/**", "coverage/**", "*.gen.*", "*.tsbuildinfo", ".turbo/**" - ], - "overrides": [ - { - "files": ["**/*.ts", "**/*.tsx"], - "rules": { - "constructor-super": "off", - "no-class-assign": "off", - "no-const-assign": "off", - "no-dupe-keys": "off", - "no-func-assign": "off", - "no-import-assign": "off", - "no-obj-calls": "off", - "no-redeclare": "off", - "no-setter-return": "off", - "no-this-before-super": "off", - "no-unsafe-negation": "off", - "no-with": "off", - "no-constant-condition": "off", - "no-throw-literal": "off", - "prefer-promise-reject-errors": "off", - "no-unused-vars": [ - "error", - { - "args": "all", - "argsIgnorePattern": "^_+", - "varsIgnorePattern": "^_+" - } - ], - "@typescript-eslint/no-empty-object-type": "error", - "@typescript-eslint/no-explicit-any": "error", - "@typescript-eslint/no-require-imports": "error", - "@typescript-eslint/no-unnecessary-type-constraint": "error", - "@typescript-eslint/no-unsafe-function-type": "error" - } - }, - { - "files": ["**/scripts/**"], - "rules": { - "no-console": "off" - } - } ] } From 7eb1245a672db76ba38461811f0c61d366232ca1 Mon Sep 17 00:00:00 2001 From: Chris Feijoo Date: Fri, 13 Mar 2026 20:55:23 +0100 Subject: [PATCH 05/20] H-6324: Migrate petrinaut-website to oxlint Replace ESLint with oxlint for @apps/petrinaut-website, matching the petrinaut lib config. React Compiler was already configured in vite. Co-Authored-By: Claude Opus 4.6 --- apps/petrinaut-website/.oxlintrc.json | 167 ++++++++++++++++++++++++ apps/petrinaut-website/eslint.config.js | 23 ---- apps/petrinaut-website/package.json | 6 +- apps/petrinaut-website/turbo.json | 8 ++ yarn.lock | 3 +- 5 files changed, 178 insertions(+), 29 deletions(-) create mode 100644 apps/petrinaut-website/.oxlintrc.json delete mode 100644 apps/petrinaut-website/eslint.config.js create mode 100644 apps/petrinaut-website/turbo.json diff --git a/apps/petrinaut-website/.oxlintrc.json b/apps/petrinaut-website/.oxlintrc.json new file mode 100644 index 00000000000..efe2b4b9e95 --- /dev/null +++ b/apps/petrinaut-website/.oxlintrc.json @@ -0,0 +1,167 @@ +{ + "$schema": "./node_modules/oxlint/configuration_schema.json", + "plugins": ["import", "react", "jsx-a11y", "unicorn", "typescript"], + "categories": { + "correctness": "error" + }, + "env": { + "builtin": true, + "es2026": true, + "browser": true + }, + "rules": { + "array-callback-return": ["error", { "allowImplicit": true }], + "default-case-last": "error", + "default-param-last": "error", + "eqeqeq": ["error", "always", { "null": "ignore" }], + "guard-for-in": "error", + "no-alert": "warn", + "no-cond-assign": ["error", "always"], + "no-extend-native": "error", + "no-loop-func": "error", + "no-new": "error", + "no-param-reassign": [ + "error", + { + "props": true, + "ignorePropertyModificationsForRegex": ["^existing", "draft"] + } + ], + "no-return-assign": ["error", "always"], + "no-self-compare": "error", + "no-sequences": "error", + "no-template-curly-in-string": "error", + "no-unsafe-optional-chaining": [ + "error", + { "disallowArithmeticOperators": true } + ], + "no-unused-vars": [ + "error", + { + "args": "all", + "argsIgnorePattern": "^_+", + "varsIgnorePattern": "^_+" + } + ], + "no-void": ["error", { "allowAsStatement": true }], + + "func-names": "warn", + "id-length": [ + "error", + { + "min": 2, + "exceptions": [ + "_", + "x", + "y", + "z", + "a", + "b", + "i", + "p", + "t", + "e", + "d", + "v", + "T", + "P" + ], + "properties": "never" + } + ], + "no-bitwise": "error", + "no-multi-assign": "error", + + "no-restricted-globals": [ + "error", + { "name": "isFinite", "message": "Use Number.isFinite instead" }, + { "name": "isNaN", "message": "Use Number.isNaN instead" }, + "event", + "name", + "length", + "status" + ], + "no-shadow": "error", + "no-use-before-define": "error", + + "import/no-named-as-default": "warn", + "import/no-named-as-default-member": "warn", + "import/no-mutable-exports": "error", + "import/no-duplicates": "warn", + "import/no-named-default": "error", + "import/no-self-import": "error", + "import/no-cycle": "warn", + + "react/jsx-pascal-case": ["error", { "allowAllCaps": true }], + "react/no-danger": "warn", + "react/jsx-no-target-blank": ["error", { "enforceDynamicLinks": "always" }], + "react/jsx-no-comment-textnodes": "error", + "react/no-array-index-key": "warn", + "react/button-has-type": [ + "error", + { "button": true, "submit": true, "reset": false } + ], + + "react-hooks/rules-of-hooks": "error", + "react-hooks/exhaustive-deps": "off", + + "jsx-a11y/prefer-tag-over-role": "off", + "jsx-a11y/aria-role": ["error", { "ignoreNonDOM": false }], + "jsx-a11y/no-noninteractive-tabindex": [ + "error", + { "tags": [], "roles": ["tabpanel"] } + ], + "jsx-a11y/no-static-element-interactions": [ + "error", + { + "handlers": [ + "onClick", + "onMouseDown", + "onMouseUp", + "onKeyPress", + "onKeyDown", + "onKeyUp" + ] + } + ], + + "@typescript-eslint/ban-ts-comment": [ + "error", + { + "ts-expect-error": "allow-with-description", + "minimumDescriptionLength": 10 + } + ], + "@typescript-eslint/no-empty-object-type": "error", + "@typescript-eslint/no-explicit-any": "error", + "@typescript-eslint/no-require-imports": "error", + "@typescript-eslint/no-unnecessary-type-constraint": "error", + "@typescript-eslint/no-unsafe-function-type": "error", + + "unicorn/no-new-array": "off", + "unicorn/filename-case": "error", + + "constructor-super": "off", + "no-class-assign": "off", + "no-const-assign": "off", + "no-dupe-keys": "off", + "no-func-assign": "off", + "no-import-assign": "off", + "no-obj-calls": "off", + "no-redeclare": "off", + "no-setter-return": "off", + "no-this-before-super": "off", + "no-unsafe-negation": "off", + "no-constant-condition": "off", + "no-throw-literal": "off", + "prefer-promise-reject-errors": "off" + }, + "ignorePatterns": [ + "dist/**", + "build/**", + "coverage/**", + "*.gen.*", + "*.tsbuildinfo", + ".turbo/**" + ] +} diff --git a/apps/petrinaut-website/eslint.config.js b/apps/petrinaut-website/eslint.config.js deleted file mode 100644 index 668199a212b..00000000000 --- a/apps/petrinaut-website/eslint.config.js +++ /dev/null @@ -1,23 +0,0 @@ -import { createBase } from "@local/eslint/deprecated"; - -export default [ - ...createBase(import.meta.dirname), - { - languageOptions: { - parserOptions: { - projectService: { - allowDefaultProject: ["vite.config.ts"], - }, - tsconfigRootDir: import.meta.dirname, - }, - }, - }, - { - rules: { - // Disabled because React Compiler handles optimization automatically - "react/jsx-no-bind": "off", - "react/jsx-no-constructed-context-values": "off", - "react-hooks/exhaustive-deps": "off", - }, - }, -]; diff --git a/apps/petrinaut-website/package.json b/apps/petrinaut-website/package.json index f8e24cbb8aa..e1d53688154 100644 --- a/apps/petrinaut-website/package.json +++ b/apps/petrinaut-website/package.json @@ -6,8 +6,7 @@ "scripts": { "build": "vite build", "dev": "vite", - "fix:eslint": "eslint --fix .", - "lint:eslint": "eslint --report-unused-disable-directives .", + "lint:eslint": "oxlint .", "lint:tsc": "tsgo --noEmit" }, "dependencies": { @@ -19,13 +18,12 @@ "react-dom": "19.2.3" }, "devDependencies": { - "@local/eslint": "workspace:*", "@types/react": "19.2.7", "@types/react-dom": "19.2.3", "@typescript/native-preview": "7.0.0-dev.20260309.1", "@vitejs/plugin-react": "5.1.4", "babel-plugin-react-compiler": "1.0.0", - "eslint": "9.39.3", + "oxlint": "1.55.0", "vite": "8.0.0-beta.18" } } diff --git a/apps/petrinaut-website/turbo.json b/apps/petrinaut-website/turbo.json new file mode 100644 index 00000000000..2696357a0dc --- /dev/null +++ b/apps/petrinaut-website/turbo.json @@ -0,0 +1,8 @@ +{ + "extends": ["//"], + "tasks": { + "lint:eslint": { + "dependsOn": [] + } + } +} diff --git a/yarn.lock b/yarn.lock index 04e9adc0ff7..48981b6960a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -781,7 +781,6 @@ __metadata: resolution: "@apps/petrinaut-website@workspace:apps/petrinaut-website" dependencies: "@hashintel/petrinaut": "workspace:*" - "@local/eslint": "workspace:*" "@mantine/hooks": "npm:8.3.5" "@sentry/react": "npm:10.22.0" "@types/react": "npm:19.2.7" @@ -789,8 +788,8 @@ __metadata: "@typescript/native-preview": "npm:7.0.0-dev.20260309.1" "@vitejs/plugin-react": "npm:5.1.4" babel-plugin-react-compiler: "npm:1.0.0" - eslint: "npm:9.39.3" immer: "npm:10.1.3" + oxlint: "npm:1.55.0" react: "npm:19.2.3" react-dom: "npm:19.2.3" vite: "npm:8.0.0-beta.18" From ec0519ec8da2dda9e647d31df215c9ccf64ae3f5 Mon Sep 17 00:00:00 2001 From: Chris Feijoo Date: Sat, 14 Mar 2026 01:06:18 +0100 Subject: [PATCH 06/20] H-6324: Fix PR review findings MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Fix duplicate React key in menu groups by using groupIndex fallback - Fix panicThreshold casing: "CRITICAL_ERRORS" → "critical_errors" (the uppercase value was silently ignored, disabling compiler panics) - Fix "use no memo" comment in useStableCallback to describe the actual incompatibility (useCallback with `as T` cast, not ref writes) Co-Authored-By: Claude Opus 4.6 --- apps/petrinaut-website/vite.config.ts | 2 +- .../petrinaut/src/components/menu.tsx | 2 +- .../src/hooks/use-stable-callback.ts | 2 +- libs/@hashintel/petrinaut/vite.config.ts | 2 +- yarn.lock | 75 +------------------ 5 files changed, 7 insertions(+), 76 deletions(-) diff --git a/apps/petrinaut-website/vite.config.ts b/apps/petrinaut-website/vite.config.ts index 883349c38c5..6367f92634d 100644 --- a/apps/petrinaut-website/vite.config.ts +++ b/apps/petrinaut-website/vite.config.ts @@ -19,7 +19,7 @@ export default defineConfig(() => { [ "babel-plugin-react-compiler", { - panicThreshold: "CRITICAL_ERRORS", + panicThreshold: "critical_errors", }, ], ], diff --git a/libs/@hashintel/petrinaut/src/components/menu.tsx b/libs/@hashintel/petrinaut/src/components/menu.tsx index 90611bc6da0..f1a19c3a19c 100644 --- a/libs/@hashintel/petrinaut/src/components/menu.tsx +++ b/libs/@hashintel/petrinaut/src/components/menu.tsx @@ -294,7 +294,7 @@ export const Menu: React.FC = ({ style={maxHeight ? { maxHeight, overflowY: "auto" } : undefined} > {groups.map((group, groupIndex) => ( -
+
{groupIndex > 0 &&
}
{group.title && ( diff --git a/libs/@hashintel/petrinaut/src/hooks/use-stable-callback.ts b/libs/@hashintel/petrinaut/src/hooks/use-stable-callback.ts index 2bfb879fc21..5b45c597c70 100644 --- a/libs/@hashintel/petrinaut/src/hooks/use-stable-callback.ts +++ b/libs/@hashintel/petrinaut/src/hooks/use-stable-callback.ts @@ -23,7 +23,7 @@ import { useCallback, useEffect, useRef } from "react"; export function useStableCallback unknown>( callback: T, ): T { - "use no memo"; // Intentionally writes ref during render — incompatible with React Compiler + "use no memo"; // useCallback with `as T` cast is not an inline function expression — incompatible with React Compiler const ref = useRef(callback); useEffect(() => { diff --git a/libs/@hashintel/petrinaut/vite.config.ts b/libs/@hashintel/petrinaut/vite.config.ts index f3f25d1efc0..57623a868df 100644 --- a/libs/@hashintel/petrinaut/vite.config.ts +++ b/libs/@hashintel/petrinaut/vite.config.ts @@ -81,7 +81,7 @@ export default defineConfig(({ command }) => ({ { // Fail the build if the compiler encounters critical errors // that aren't opted out via "use no memo" directives - panicThreshold: "CRITICAL_ERRORS", + panicThreshold: "critical_errors", }, ], ], diff --git a/yarn.lock b/yarn.lock index 48981b6960a..64c513518c2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -39367,15 +39367,6 @@ __metadata: languageName: node linkType: hard -"randombytes@npm:^2.1.0": - version: 2.1.0 - resolution: "randombytes@npm:2.1.0" - dependencies: - safe-buffer: "npm:^5.1.0" - checksum: 10c0/50395efda7a8c94f5dffab564f9ff89736064d32addf0cc7e8bf5e4166f09f8ded7a0849ca6c2d2a59478f7d90f78f20d8048bca3cdf8be09d8e8a10790388f3 - languageName: node - linkType: hard - "range-parser@npm:^1.2.1, range-parser@npm:~1.2.1": version: 1.2.1 resolution: "range-parser@npm:1.2.1" @@ -41275,7 +41266,7 @@ __metadata: languageName: node linkType: hard -"safe-buffer@npm:5.2.1, safe-buffer@npm:>=5.1.0, safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:^5.1.1, safe-buffer@npm:^5.2.1, safe-buffer@npm:~5.2.0": +"safe-buffer@npm:5.2.1, safe-buffer@npm:>=5.1.0, safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.1, safe-buffer@npm:^5.2.1, safe-buffer@npm:~5.2.0": version: 5.2.1 resolution: "safe-buffer@npm:5.2.1" checksum: 10c0/6501914237c0a86e9675d4e51d89ca3c21ffd6a31642efeba25ad65720bce6921c9e7e974e5be91a786b25aa058b5303285d3c15dbabf983a919f5f630d349f3 @@ -41623,15 +41614,6 @@ __metadata: languageName: node linkType: hard -"serialize-javascript@npm:^6.0.2": - version: 6.0.2 - resolution: "serialize-javascript@npm:6.0.2" - dependencies: - randombytes: "npm:^2.1.0" - checksum: 10c0/2dd09ef4b65a1289ba24a788b1423a035581bef60817bea1f01eda8e3bda623f86357665fe7ac1b50f6d4f583f97db9615b3f07b2a2e8cbcb75033965f771dd2 - languageName: node - linkType: hard - "serialize-javascript@npm:^7.0.3": version: 7.0.4 resolution: "serialize-javascript@npm:7.0.4" @@ -43466,7 +43448,7 @@ __metadata: languageName: node linkType: hard -"terser-webpack-plugin@npm:5.4.0": +"terser-webpack-plugin@npm:5.4.0, terser-webpack-plugin@npm:^5.3.16": version: 5.4.0 resolution: "terser-webpack-plugin@npm:5.4.0" dependencies: @@ -43487,28 +43469,6 @@ __metadata: languageName: node linkType: hard -"terser-webpack-plugin@npm:^5.3.16": - version: 5.3.16 - resolution: "terser-webpack-plugin@npm:5.3.16" - dependencies: - "@jridgewell/trace-mapping": "npm:^0.3.25" - jest-worker: "npm:^27.4.5" - schema-utils: "npm:^4.3.0" - serialize-javascript: "npm:^6.0.2" - terser: "npm:^5.31.1" - peerDependencies: - webpack: ^5.1.0 - peerDependenciesMeta: - "@swc/core": - optional: true - esbuild: - optional: true - uglify-js: - optional: true - checksum: 10c0/39e37c5b3015c1a5354a3633f77235677bfa06eac2608ce26d258b1d1a74070a99910319a6f2f2c437eb61dc321f66434febe01d78e73fa96b4d4393b813f4cf - languageName: node - linkType: hard - "terser@npm:^5.10.0, terser@npm:^5.15.1, terser@npm:^5.31.1": version: 5.37.0 resolution: "terser@npm:5.37.0" @@ -45227,15 +45187,6 @@ __metadata: languageName: node linkType: hard -"use-sync-external-store@npm:1.2.2": - version: 1.2.2 - resolution: "use-sync-external-store@npm:1.2.2" - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 10c0/23b1597c10adf15b26ade9e8c318d8cc0abc9ec0ab5fc7ca7338da92e89c2536abd150a5891bf076836c352fdfa104fc7231fb48f806fd9960e0cbe03601abaf - languageName: node - linkType: hard - "use-sync-external-store@npm:^1.2.2, use-sync-external-store@npm:^1.4.0, use-sync-external-store@npm:^1.5.0": version: 1.6.0 resolution: "use-sync-external-store@npm:1.6.0" @@ -47051,7 +47002,7 @@ __metadata: languageName: node linkType: hard -"zustand@npm:^4.4.0": +"zustand@npm:^4.4.0, zustand@npm:^4.4.1": version: 4.5.7 resolution: "zustand@npm:4.5.7" dependencies: @@ -47071,26 +47022,6 @@ __metadata: languageName: node linkType: hard -"zustand@npm:^4.4.1": - version: 4.5.5 - resolution: "zustand@npm:4.5.5" - dependencies: - use-sync-external-store: "npm:1.2.2" - peerDependencies: - "@types/react": ">=16.8" - immer: ">=9.0.6" - react: ">=16.8" - peerDependenciesMeta: - "@types/react": - optional: true - immer: - optional: true - react: - optional: true - checksum: 10c0/d04469d76b29c7e4070da269886de4efdadedd3d3824dc2a06ac4ff62e3b5877f925e927afe7382de651829872b99adec48082f1bd69fe486149be666345e626 - languageName: node - linkType: hard - "zwitch@npm:^2.0.0": version: 2.0.4 resolution: "zwitch@npm:2.0.4" From 3900953b85d8cfb4ff64479e2e47f7b46a7447dd Mon Sep 17 00:00:00 2001 From: Chris Feijoo Date: Sat, 14 Mar 2026 01:58:14 +0100 Subject: [PATCH 07/20] H-6324: Add required `id` to MenuGroup for stable React keys Instead of heuristic fallbacks for the group key, make `id` a required field on MenuGroup so callers always provide a unique, stable key. Co-Authored-By: Claude Opus 4.6 --- libs/@hashintel/petrinaut/src/components/menu.tsx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/libs/@hashintel/petrinaut/src/components/menu.tsx b/libs/@hashintel/petrinaut/src/components/menu.tsx index f1a19c3a19c..c7d6bfc3b85 100644 --- a/libs/@hashintel/petrinaut/src/components/menu.tsx +++ b/libs/@hashintel/petrinaut/src/components/menu.tsx @@ -198,6 +198,7 @@ export interface MenuItem { } export interface MenuGroup { + id: string; title?: string; items: MenuItem[]; } @@ -242,7 +243,7 @@ function normalizeToGroups(items: MenuItem[] | MenuGroup[]): MenuGroup[] { if (isMenuGroupArray(items)) { return items; } - return [{ items }]; + return [{ id: "default", items }]; } // -- Subcomponents ------------------------------------------------------------ @@ -294,7 +295,7 @@ export const Menu: React.FC = ({ style={maxHeight ? { maxHeight, overflowY: "auto" } : undefined} > {groups.map((group, groupIndex) => ( -
+
{groupIndex > 0 &&
}
{group.title && ( From 2cd653492adc53a768539f8e9b3e0048c679661f Mon Sep 17 00:00:00 2001 From: Chris Feijoo Date: Sat, 14 Mar 2026 13:59:15 +0100 Subject: [PATCH 08/20] H-6324: Restore svgo 3.3.3 in yarn.lock The rebase conflict resolution accidentally downgraded svgo from 3.3.3 to 3.3.2, which has a known XML entity expansion vulnerability. Co-Authored-By: Claude Opus 4.6 --- yarn.lock | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/yarn.lock b/yarn.lock index 64c513518c2..49fd0ac25d6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -17934,13 +17934,6 @@ __metadata: languageName: node linkType: hard -"@trysound/sax@npm:0.2.0": - version: 0.2.0 - resolution: "@trysound/sax@npm:0.2.0" - checksum: 10c0/44907308549ce775a41c38a815f747009ac45929a45d642b836aa6b0a536e4978d30b8d7d680bbd116e9dd73b7dbe2ef0d1369dcfc2d09e83ba381e485ecbe12 - languageName: node - linkType: hard - "@ts-morph/common@npm:~0.27.0": version: 0.27.0 resolution: "@ts-morph/common@npm:0.27.0" @@ -41375,6 +41368,13 @@ __metadata: languageName: node linkType: hard +"sax@npm:^1.5.0": + version: 1.5.0 + resolution: "sax@npm:1.5.0" + checksum: 10c0/bc3b60a7bfecd40b18256596e96b32df2488339ae1e00a77f842b568f0831228a16c3bd357ec500241ec0b9dc7a475a1286427795c4a8c50bb8e8878f3435dd8 + languageName: node + linkType: hard + "saxes@npm:^6.0.0": version: 6.0.0 resolution: "saxes@npm:6.0.0" @@ -43188,19 +43188,19 @@ __metadata: linkType: hard "svgo@npm:^3.0.2": - version: 3.3.2 - resolution: "svgo@npm:3.3.2" + version: 3.3.3 + resolution: "svgo@npm:3.3.3" dependencies: - "@trysound/sax": "npm:0.2.0" commander: "npm:^7.2.0" css-select: "npm:^5.1.0" css-tree: "npm:^2.3.1" css-what: "npm:^6.1.0" csso: "npm:^5.0.5" picocolors: "npm:^1.0.0" + sax: "npm:^1.5.0" bin: svgo: ./bin/svgo - checksum: 10c0/a6badbd3d1d6dbb177f872787699ab34320b990d12e20798ecae915f0008796a0f3c69164f1485c9def399e0ce0a5683eb4a8045e51a5e1c364bb13a0d9f79e1 + checksum: 10c0/06568c6b0430f96748c557f0b17dc7de79b19fa16d13d7523527ede0ec727fc6d8e6a10e13ff106dc4372d2e6063a1dca7c455c495efb1b83857480425f9b965 languageName: node linkType: hard From 3125bdad18c31867f5b925795f6e5a52ca897d3c Mon Sep 17 00:00:00 2001 From: Chris Feijoo Date: Sat, 14 Mar 2026 14:54:00 +0100 Subject: [PATCH 09/20] Remove id length restriction to Petrinaut --- apps/petrinaut-website/.oxlintrc.json | 23 ----------------------- libs/@hashintel/petrinaut/.oxlintrc.json | 23 ----------------------- 2 files changed, 46 deletions(-) diff --git a/apps/petrinaut-website/.oxlintrc.json b/apps/petrinaut-website/.oxlintrc.json index efe2b4b9e95..c5527a9d9ee 100644 --- a/apps/petrinaut-website/.oxlintrc.json +++ b/apps/petrinaut-website/.oxlintrc.json @@ -46,29 +46,6 @@ "no-void": ["error", { "allowAsStatement": true }], "func-names": "warn", - "id-length": [ - "error", - { - "min": 2, - "exceptions": [ - "_", - "x", - "y", - "z", - "a", - "b", - "i", - "p", - "t", - "e", - "d", - "v", - "T", - "P" - ], - "properties": "never" - } - ], "no-bitwise": "error", "no-multi-assign": "error", diff --git a/libs/@hashintel/petrinaut/.oxlintrc.json b/libs/@hashintel/petrinaut/.oxlintrc.json index 16cd42711c9..88d17a4fb38 100644 --- a/libs/@hashintel/petrinaut/.oxlintrc.json +++ b/libs/@hashintel/petrinaut/.oxlintrc.json @@ -46,29 +46,6 @@ "no-void": ["error", { "allowAsStatement": true }], "func-names": "warn", - "id-length": [ - "error", - { - "min": 2, - "exceptions": [ - "_", - "x", - "y", - "z", - "a", - "b", - "i", - "p", - "t", - "e", - "d", - "v", - "T", - "P" - ], - "properties": "never" - } - ], "no-bitwise": "error", "no-multi-assign": "error", From 95b838342c15be72aebb1c1d73e233cf1ed1d1a7 Mon Sep 17 00:00:00 2001 From: Chris Feijoo Date: Sun, 15 Mar 2026 15:53:34 +0100 Subject: [PATCH 10/20] Add back fix:eslint script --- apps/petrinaut-website/package.json | 3 ++- libs/@hashintel/petrinaut/package.json | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/apps/petrinaut-website/package.json b/apps/petrinaut-website/package.json index e1d53688154..d05346f6be6 100644 --- a/apps/petrinaut-website/package.json +++ b/apps/petrinaut-website/package.json @@ -6,8 +6,9 @@ "scripts": { "build": "vite build", "dev": "vite", + "lint:tsc": "tsgo --noEmit", "lint:eslint": "oxlint .", - "lint:tsc": "tsgo --noEmit" + "fix:eslint": "oxlint --fix ." }, "dependencies": { "@hashintel/petrinaut": "workspace:*", diff --git a/libs/@hashintel/petrinaut/package.json b/libs/@hashintel/petrinaut/package.json index b0fc72b48e9..37d4ed588aa 100644 --- a/libs/@hashintel/petrinaut/package.json +++ b/libs/@hashintel/petrinaut/package.json @@ -27,8 +27,9 @@ "scripts": { "build": "vite build", "dev": "storybook dev", - "lint:eslint": "oxlint .", "lint:tsc": "tsgo --noEmit", + "lint:eslint": "oxlint .", + "fix:eslint": "oxlint --fix .", "prepublishOnly": "turbo run build", "test:unit": "vitest" }, From 577a5e3a1aa691e028ec6fd9a7b8927bf80f778e Mon Sep 17 00:00:00 2001 From: Chris Feijoo Date: Sun, 15 Mar 2026 16:02:15 +0100 Subject: [PATCH 11/20] Remove unused dependencies from Petrinaut Drop 11 packages that are no longer imported anywhere: - dependencies: @babel/core, @babel/plugin-transform-typescript, @dnd-kit/{core,sortable,utilities}, @mantine/hooks, d3-array, web-worker - devDependencies: @testing-library/dom, @types/d3-array, immer, vite-plugin-dts Co-Authored-By: Claude Opus 4.6 (1M context) --- libs/@hashintel/petrinaut/package.json | 13 +--- yarn.lock | 103 +++---------------------- 2 files changed, 13 insertions(+), 103 deletions(-) diff --git a/libs/@hashintel/petrinaut/package.json b/libs/@hashintel/petrinaut/package.json index 37d4ed588aa..1905d928fbe 100644 --- a/libs/@hashintel/petrinaut/package.json +++ b/libs/@hashintel/petrinaut/package.json @@ -35,20 +35,13 @@ }, "dependencies": { "@ark-ui/react": "5.26.2", - "@babel/core": "7.26.0", - "@babel/plugin-transform-typescript": "7.25.9", "@babel/standalone": "7.28.5", - "@dnd-kit/core": "6.3.1", - "@dnd-kit/sortable": "10.0.0", - "@dnd-kit/utilities": "3.2.2", "@fontsource-variable/jetbrains-mono": "5.2.8", "@hashintel/ds-components": "workspace:^", "@hashintel/ds-helpers": "workspace:^", "@hashintel/refractive": "workspace:^", - "@mantine/hooks": "8.3.5", "@monaco-editor/react": "4.8.0-rc.3", "@xyflow/react": "12.10.1", - "d3-array": "3.2.4", "d3-scale": "4.0.2", "elkjs": "0.11.0", "monaco-editor": "0.55.1", @@ -56,8 +49,7 @@ "react-resizable-panels": "4.6.5", "typescript": "5.9.3", "uuid": "13.0.0", - "vscode-languageserver-types": "3.17.5", - "web-worker": "1.4.1" + "vscode-languageserver-types": "3.17.5" }, "devDependencies": { "@hashintel/ds-helpers": "workspace:*", @@ -66,14 +58,12 @@ "@testing-library/dom": "10.4.1", "@testing-library/react": "16.3.2", "@types/babel__standalone": "7.1.9", - "@types/d3-array": "3.2.2", "@types/d3-scale": "4.0.9", "@types/react": "19.2.7", "@types/react-dom": "19.2.3", "@typescript/native-preview": "7.0.0-dev.20260309.1", "@vitejs/plugin-react": "5.1.4", "babel-plugin-react-compiler": "1.0.0", - "immer": "10.1.3", "jsdom": "24.1.3", "oxlint": "1.55.0", "react": "19.2.3", @@ -82,7 +72,6 @@ "rolldown-plugin-dts": "0.22.4", "storybook": "10.2.13", "vite": "8.0.0-beta.18", - "vite-plugin-dts": "4.5.4", "vitest": "4.0.18" }, "peerDependencies": { diff --git a/yarn.lock b/yarn.lock index 49fd0ac25d6..36560f374b5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12,16 +12,6 @@ __metadata: languageName: node linkType: hard -"@ampproject/remapping@npm:^2.2.0": - version: 2.3.0 - resolution: "@ampproject/remapping@npm:2.3.0" - dependencies: - "@jridgewell/gen-mapping": "npm:^0.3.5" - "@jridgewell/trace-mapping": "npm:^0.3.24" - checksum: 10c0/81d63cca5443e0f0c72ae18b544cc28c7c0ec2cea46e7cb888bb0e0f411a1191d0d6b7af798d54e30777d8d1488b2ec0732aac2be342d3d7d3ffd271c6f489ed - languageName: node - linkType: hard - "@anthropic-ai/bedrock-sdk@npm:0.26.3": version: 0.26.3 resolution: "@anthropic-ai/bedrock-sdk@npm:0.26.3" @@ -3296,7 +3286,7 @@ __metadata: languageName: node linkType: hard -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.26.0, @babel/code-frame@npm:^7.26.2, @babel/code-frame@npm:^7.27.1, @babel/code-frame@npm:^7.28.6, @babel/code-frame@npm:^7.29.0": +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.26.2, @babel/code-frame@npm:^7.27.1, @babel/code-frame@npm:^7.28.6, @babel/code-frame@npm:^7.29.0": version: 7.29.0 resolution: "@babel/code-frame@npm:7.29.0" dependencies: @@ -3314,29 +3304,6 @@ __metadata: languageName: node linkType: hard -"@babel/core@npm:7.26.0": - version: 7.26.0 - resolution: "@babel/core@npm:7.26.0" - dependencies: - "@ampproject/remapping": "npm:^2.2.0" - "@babel/code-frame": "npm:^7.26.0" - "@babel/generator": "npm:^7.26.0" - "@babel/helper-compilation-targets": "npm:^7.25.9" - "@babel/helper-module-transforms": "npm:^7.26.0" - "@babel/helpers": "npm:^7.26.0" - "@babel/parser": "npm:^7.26.0" - "@babel/template": "npm:^7.25.9" - "@babel/traverse": "npm:^7.25.9" - "@babel/types": "npm:^7.26.0" - convert-source-map: "npm:^2.0.0" - debug: "npm:^4.1.0" - gensync: "npm:^1.0.0-beta.2" - json5: "npm:^2.2.3" - semver: "npm:^6.3.1" - checksum: 10c0/91de73a7ff5c4049fbc747930aa039300e4d2670c2a91f5aa622f1b4868600fc89b01b6278385fbcd46f9574186fa3d9b376a9e7538e50f8d118ec13cfbcb63e - languageName: node - linkType: hard - "@babel/core@npm:7.28.4": version: 7.28.4 resolution: "@babel/core@npm:7.28.4" @@ -3411,7 +3378,7 @@ __metadata: languageName: node linkType: hard -"@babel/generator@npm:^7.14.0, @babel/generator@npm:^7.18.13, @babel/generator@npm:^7.22.9, @babel/generator@npm:^7.26.0, @babel/generator@npm:^7.26.3, @babel/generator@npm:^7.28.3, @babel/generator@npm:^7.28.5, @babel/generator@npm:^7.29.0": +"@babel/generator@npm:^7.14.0, @babel/generator@npm:^7.18.13, @babel/generator@npm:^7.22.9, @babel/generator@npm:^7.26.3, @babel/generator@npm:^7.28.3, @babel/generator@npm:^7.28.5, @babel/generator@npm:^7.29.0": version: 7.29.1 resolution: "@babel/generator@npm:7.29.1" dependencies: @@ -3424,7 +3391,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-annotate-as-pure@npm:^7.18.6, @babel/helper-annotate-as-pure@npm:^7.25.9, @babel/helper-annotate-as-pure@npm:^7.27.1, @babel/helper-annotate-as-pure@npm:^7.27.3": +"@babel/helper-annotate-as-pure@npm:^7.18.6, @babel/helper-annotate-as-pure@npm:^7.27.1, @babel/helper-annotate-as-pure@npm:^7.27.3": version: 7.27.3 resolution: "@babel/helper-annotate-as-pure@npm:7.27.3" dependencies: @@ -3433,7 +3400,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-compilation-targets@npm:^7.20.7, @babel/helper-compilation-targets@npm:^7.25.9, @babel/helper-compilation-targets@npm:^7.27.1, @babel/helper-compilation-targets@npm:^7.27.2, @babel/helper-compilation-targets@npm:^7.28.6": +"@babel/helper-compilation-targets@npm:^7.20.7, @babel/helper-compilation-targets@npm:^7.27.1, @babel/helper-compilation-targets@npm:^7.27.2, @babel/helper-compilation-targets@npm:^7.28.6": version: 7.28.6 resolution: "@babel/helper-compilation-targets@npm:7.28.6" dependencies: @@ -3518,7 +3485,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.26.0, @babel/helper-module-transforms@npm:^7.27.1, @babel/helper-module-transforms@npm:^7.28.3, @babel/helper-module-transforms@npm:^7.28.6": +"@babel/helper-module-transforms@npm:^7.27.1, @babel/helper-module-transforms@npm:^7.28.3, @babel/helper-module-transforms@npm:^7.28.6": version: 7.28.6 resolution: "@babel/helper-module-transforms@npm:7.28.6" dependencies: @@ -3573,7 +3540,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-skip-transparent-expression-wrappers@npm:^7.20.0, @babel/helper-skip-transparent-expression-wrappers@npm:^7.25.9, @babel/helper-skip-transparent-expression-wrappers@npm:^7.27.1": +"@babel/helper-skip-transparent-expression-wrappers@npm:^7.20.0, @babel/helper-skip-transparent-expression-wrappers@npm:^7.27.1": version: 7.27.1 resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.27.1" dependencies: @@ -3629,7 +3596,7 @@ __metadata: languageName: node linkType: hard -"@babel/helpers@npm:^7.26.0, @babel/helpers@npm:^7.28.4, @babel/helpers@npm:^7.28.6": +"@babel/helpers@npm:^7.28.4, @babel/helpers@npm:^7.28.6": version: 7.28.6 resolution: "@babel/helpers@npm:7.28.6" dependencies: @@ -3650,7 +3617,7 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.0, @babel/parser@npm:^7.16.8, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.24.4, @babel/parser@npm:^7.25.4, @babel/parser@npm:^7.25.6, @babel/parser@npm:^7.26.0, @babel/parser@npm:^7.26.3, @babel/parser@npm:^7.26.7, @babel/parser@npm:^7.28.4, @babel/parser@npm:^7.28.5, @babel/parser@npm:^7.28.6, @babel/parser@npm:^7.29.0": +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.0, @babel/parser@npm:^7.16.8, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.24.4, @babel/parser@npm:^7.25.4, @babel/parser@npm:^7.25.6, @babel/parser@npm:^7.26.3, @babel/parser@npm:^7.26.7, @babel/parser@npm:^7.28.4, @babel/parser@npm:^7.28.5, @babel/parser@npm:^7.28.6, @babel/parser@npm:^7.29.0": version: 7.29.0 resolution: "@babel/parser@npm:7.29.0" dependencies: @@ -3987,7 +3954,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-typescript@npm:^7.25.9, @babel/plugin-syntax-typescript@npm:^7.27.1": +"@babel/plugin-syntax-typescript@npm:^7.27.1": version: 7.27.1 resolution: "@babel/plugin-syntax-typescript@npm:7.27.1" dependencies: @@ -4674,21 +4641,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-typescript@npm:7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-typescript@npm:7.25.9" - dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.25.9" - "@babel/helper-create-class-features-plugin": "npm:^7.25.9" - "@babel/helper-plugin-utils": "npm:^7.25.9" - "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.25.9" - "@babel/plugin-syntax-typescript": "npm:^7.25.9" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/c607ddb45f7e33cfcb928aad05cb1b18b1ecb564d2329d8f8e427f75192511aa821dee42d26871f1bdffbd883853e150ba81436664646c6e6b13063e65ce1475 - languageName: node - linkType: hard - "@babel/plugin-transform-typescript@npm:^7.28.5": version: 7.28.5 resolution: "@babel/plugin-transform-typescript@npm:7.28.5" @@ -4900,7 +4852,7 @@ __metadata: languageName: node linkType: hard -"@babel/traverse@npm:^7.14.0, @babel/traverse@npm:^7.16.8, @babel/traverse@npm:^7.22.8, @babel/traverse@npm:^7.25.9, @babel/traverse@npm:^7.26.4, @babel/traverse@npm:^7.27.1, @babel/traverse@npm:^7.28.0, @babel/traverse@npm:^7.28.3, @babel/traverse@npm:^7.28.4, @babel/traverse@npm:^7.28.5, @babel/traverse@npm:^7.28.6, @babel/traverse@npm:^7.29.0": +"@babel/traverse@npm:^7.14.0, @babel/traverse@npm:^7.16.8, @babel/traverse@npm:^7.22.8, @babel/traverse@npm:^7.26.4, @babel/traverse@npm:^7.27.1, @babel/traverse@npm:^7.28.0, @babel/traverse@npm:^7.28.3, @babel/traverse@npm:^7.28.4, @babel/traverse@npm:^7.28.5, @babel/traverse@npm:^7.28.6, @babel/traverse@npm:^7.29.0": version: 7.29.0 resolution: "@babel/traverse@npm:7.29.0" dependencies: @@ -5699,19 +5651,6 @@ __metadata: languageName: node linkType: hard -"@dnd-kit/sortable@npm:10.0.0": - version: 10.0.0 - resolution: "@dnd-kit/sortable@npm:10.0.0" - dependencies: - "@dnd-kit/utilities": "npm:^3.2.2" - tslib: "npm:^2.0.0" - peerDependencies: - "@dnd-kit/core": ^6.3.0 - react: ">=16.8.0" - checksum: 10c0/37ee48bc6789fb512dc0e4c374a96d19abe5b2b76dc34856a5883aaa96c3297891b94cc77bbc409e074dcce70967ebcb9feb40cd9abadb8716fc280b4c7f99af - languageName: node - linkType: hard - "@dnd-kit/sortable@npm:7.0.2": version: 7.0.2 resolution: "@dnd-kit/sortable@npm:7.0.2" @@ -8001,24 +7940,17 @@ __metadata: resolution: "@hashintel/petrinaut@workspace:libs/@hashintel/petrinaut" dependencies: "@ark-ui/react": "npm:5.26.2" - "@babel/core": "npm:7.26.0" - "@babel/plugin-transform-typescript": "npm:7.25.9" "@babel/standalone": "npm:7.28.5" - "@dnd-kit/core": "npm:6.3.1" - "@dnd-kit/sortable": "npm:10.0.0" - "@dnd-kit/utilities": "npm:3.2.2" "@fontsource-variable/jetbrains-mono": "npm:5.2.8" "@hashintel/ds-components": "workspace:^" "@hashintel/ds-helpers": "workspace:*" "@hashintel/refractive": "workspace:^" - "@mantine/hooks": "npm:8.3.5" "@monaco-editor/react": "npm:4.8.0-rc.3" "@pandacss/dev": "npm:1.4.3" "@storybook/react-vite": "npm:10.2.13" "@testing-library/dom": "npm:10.4.1" "@testing-library/react": "npm:16.3.2" "@types/babel__standalone": "npm:7.1.9" - "@types/d3-array": "npm:3.2.2" "@types/d3-scale": "npm:4.0.9" "@types/react": "npm:19.2.7" "@types/react-dom": "npm:19.2.3" @@ -8026,10 +7958,8 @@ __metadata: "@vitejs/plugin-react": "npm:5.1.4" "@xyflow/react": "npm:12.10.1" babel-plugin-react-compiler: "npm:1.0.0" - d3-array: "npm:3.2.4" d3-scale: "npm:4.0.2" elkjs: "npm:0.11.0" - immer: "npm:10.1.3" jsdom: "npm:24.1.3" monaco-editor: "npm:0.55.1" oxlint: "npm:1.55.0" @@ -8043,10 +7973,8 @@ __metadata: typescript: "npm:5.9.3" uuid: "npm:13.0.0" vite: "npm:8.0.0-beta.18" - vite-plugin-dts: "npm:4.5.4" vitest: "npm:4.0.18" vscode-languageserver-types: "npm:3.17.5" - web-worker: "npm:1.4.1" peerDependencies: "@hashintel/ds-components": "workspace:^" "@hashintel/ds-helpers": "workspace:^" @@ -18141,7 +18069,7 @@ __metadata: languageName: node linkType: hard -"@types/d3-array@npm:*, @types/d3-array@npm:3.2.2": +"@types/d3-array@npm:*": version: 3.2.2 resolution: "@types/d3-array@npm:3.2.2" checksum: 10c0/6137cb97302f8a4f18ca22c0560c585cfcb823f276b23d89f2c0c005d72697ec13bca671c08e68b4b0cabd622e3f0e91782ee221580d6774074050be96dd7028 @@ -25182,7 +25110,7 @@ __metadata: languageName: node linkType: hard -"d3-array@npm:2 - 3, d3-array@npm:2.10.0 - 3, d3-array@npm:3.2.4": +"d3-array@npm:2 - 3, d3-array@npm:2.10.0 - 3": version: 3.2.4 resolution: "d3-array@npm:3.2.4" dependencies: @@ -45877,13 +45805,6 @@ __metadata: languageName: node linkType: hard -"web-worker@npm:1.4.1": - version: 1.4.1 - resolution: "web-worker@npm:1.4.1" - checksum: 10c0/8b5e6099692ad83e0bcd72595e9bbec9c5cc0c910215dce21379050c9a96d9678f651c161e58f29d5ecf62d50bbd897543b4fa1bcea83cd273dbf219fdda1089 - languageName: node - linkType: hard - "webextension-polyfill@npm:0.12.0": version: 0.12.0 resolution: "webextension-polyfill@npm:0.12.0" From 624941ee5162d43e34ab7befdecc0381bcb4b178 Mon Sep 17 00:00:00 2001 From: Chris Feijoo Date: Sun, 15 Mar 2026 16:26:07 +0100 Subject: [PATCH 12/20] Upgrade Petrinaut dev tooling to latest versions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - vite 8.0.0-beta.18 → 8.0.0 (stable) - vitest 4.0.18 → 4.1.0 - storybook 10.2.13 → 10.2.19 - @storybook/react-vite 10.2.13 → 10.2.19 - @vitejs/plugin-react 5.1.4 → 6.0.1 - rolldown 1.0.0-rc.8 → 1.0.0-rc.9 - rolldown-plugin-dts 0.22.4 → 0.22.5 plugin-react v6 dropped built-in Babel in favour of Oxc for JSX/refresh transforms. Migrate React Compiler setup to @rolldown/plugin-babel with reactCompilerPreset, which was previously silently ignored. Co-Authored-By: Claude Opus 4.6 (1M context) --- libs/@hashintel/petrinaut/package.json | 15 +- libs/@hashintel/petrinaut/vite.config.ts | 26 +- yarn.lock | 675 +++++++++++++++++++++-- 3 files changed, 648 insertions(+), 68 deletions(-) diff --git a/libs/@hashintel/petrinaut/package.json b/libs/@hashintel/petrinaut/package.json index 1905d928fbe..b09e6383ecc 100644 --- a/libs/@hashintel/petrinaut/package.json +++ b/libs/@hashintel/petrinaut/package.json @@ -54,7 +54,8 @@ "devDependencies": { "@hashintel/ds-helpers": "workspace:*", "@pandacss/dev": "1.4.3", - "@storybook/react-vite": "10.2.13", + "@rolldown/plugin-babel": "0.2.1", + "@storybook/react-vite": "10.2.19", "@testing-library/dom": "10.4.1", "@testing-library/react": "16.3.2", "@types/babel__standalone": "7.1.9", @@ -62,17 +63,17 @@ "@types/react": "19.2.7", "@types/react-dom": "19.2.3", "@typescript/native-preview": "7.0.0-dev.20260309.1", - "@vitejs/plugin-react": "5.1.4", + "@vitejs/plugin-react": "6.0.1", "babel-plugin-react-compiler": "1.0.0", "jsdom": "24.1.3", "oxlint": "1.55.0", "react": "19.2.3", "react-dom": "19.2.3", - "rolldown": "1.0.0-rc.8", - "rolldown-plugin-dts": "0.22.4", - "storybook": "10.2.13", - "vite": "8.0.0-beta.18", - "vitest": "4.0.18" + "rolldown": "1.0.0-rc.9", + "rolldown-plugin-dts": "0.22.5", + "storybook": "10.2.19", + "vite": "8.0.0", + "vitest": "4.1.0" }, "peerDependencies": { "@hashintel/ds-components": "workspace:^", diff --git a/libs/@hashintel/petrinaut/vite.config.ts b/libs/@hashintel/petrinaut/vite.config.ts index 57623a868df..f7cf907aaee 100644 --- a/libs/@hashintel/petrinaut/vite.config.ts +++ b/libs/@hashintel/petrinaut/vite.config.ts @@ -1,4 +1,5 @@ -import react from "@vitejs/plugin-react"; +import babel from "@rolldown/plugin-babel"; +import react, { reactCompilerPreset } from "@vitejs/plugin-react"; import { replacePlugin } from "rolldown/plugins"; import { dts } from "rolldown-plugin-dts"; import { defineConfig, esmExternalRequirePlugin } from "vite"; @@ -73,19 +74,16 @@ export default defineConfig(({ command }) => ({ ], }), - react({ - babel: { - plugins: [ - [ - "babel-plugin-react-compiler", - { - // Fail the build if the compiler encounters critical errors - // that aren't opted out via "use no memo" directives - panicThreshold: "critical_errors", - }, - ], - ], - }, + react(), + babel({ + presets: [ + reactCompilerPreset({ + target: "19", + compilationMode: "infer", + // @ts-expect-error - panicThreshold is accepted at runtime + panicThreshold: "critical_errors", + }), + ], }), command === "build" && diff --git a/yarn.lock b/yarn.lock index 36560f374b5..dd75d0669c4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7947,7 +7947,8 @@ __metadata: "@hashintel/refractive": "workspace:^" "@monaco-editor/react": "npm:4.8.0-rc.3" "@pandacss/dev": "npm:1.4.3" - "@storybook/react-vite": "npm:10.2.13" + "@rolldown/plugin-babel": "npm:0.2.1" + "@storybook/react-vite": "npm:10.2.19" "@testing-library/dom": "npm:10.4.1" "@testing-library/react": "npm:16.3.2" "@types/babel__standalone": "npm:7.1.9" @@ -7955,7 +7956,7 @@ __metadata: "@types/react": "npm:19.2.7" "@types/react-dom": "npm:19.2.3" "@typescript/native-preview": "npm:7.0.0-dev.20260309.1" - "@vitejs/plugin-react": "npm:5.1.4" + "@vitejs/plugin-react": "npm:6.0.1" "@xyflow/react": "npm:12.10.1" babel-plugin-react-compiler: "npm:1.0.0" d3-scale: "npm:4.0.2" @@ -7967,13 +7968,13 @@ __metadata: react-dom: "npm:19.2.3" react-icons: "npm:5.5.0" react-resizable-panels: "npm:4.6.5" - rolldown: "npm:1.0.0-rc.8" - rolldown-plugin-dts: "npm:0.22.4" - storybook: "npm:10.2.13" + rolldown: "npm:1.0.0-rc.9" + rolldown-plugin-dts: "npm:0.22.5" + storybook: "npm:10.2.19" typescript: "npm:5.9.3" uuid: "npm:13.0.0" - vite: "npm:8.0.0-beta.18" - vitest: "npm:4.0.18" + vite: "npm:8.0.0" + vitest: "npm:4.1.0" vscode-languageserver-types: "npm:3.17.5" peerDependencies: "@hashintel/ds-components": "workspace:^" @@ -14073,6 +14074,13 @@ __metadata: languageName: node linkType: hard +"@rolldown/binding-android-arm64@npm:1.0.0-rc.9": + version: 1.0.0-rc.9 + resolution: "@rolldown/binding-android-arm64@npm:1.0.0-rc.9" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + "@rolldown/binding-darwin-arm64@npm:1.0.0-beta.57": version: 1.0.0-beta.57 resolution: "@rolldown/binding-darwin-arm64@npm:1.0.0-beta.57" @@ -14094,6 +14102,13 @@ __metadata: languageName: node linkType: hard +"@rolldown/binding-darwin-arm64@npm:1.0.0-rc.9": + version: 1.0.0-rc.9 + resolution: "@rolldown/binding-darwin-arm64@npm:1.0.0-rc.9" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + "@rolldown/binding-darwin-x64@npm:1.0.0-beta.57": version: 1.0.0-beta.57 resolution: "@rolldown/binding-darwin-x64@npm:1.0.0-beta.57" @@ -14115,6 +14130,13 @@ __metadata: languageName: node linkType: hard +"@rolldown/binding-darwin-x64@npm:1.0.0-rc.9": + version: 1.0.0-rc.9 + resolution: "@rolldown/binding-darwin-x64@npm:1.0.0-rc.9" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + "@rolldown/binding-freebsd-x64@npm:1.0.0-beta.57": version: 1.0.0-beta.57 resolution: "@rolldown/binding-freebsd-x64@npm:1.0.0-beta.57" @@ -14136,6 +14158,13 @@ __metadata: languageName: node linkType: hard +"@rolldown/binding-freebsd-x64@npm:1.0.0-rc.9": + version: 1.0.0-rc.9 + resolution: "@rolldown/binding-freebsd-x64@npm:1.0.0-rc.9" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + "@rolldown/binding-linux-arm-gnueabihf@npm:1.0.0-beta.57": version: 1.0.0-beta.57 resolution: "@rolldown/binding-linux-arm-gnueabihf@npm:1.0.0-beta.57" @@ -14157,6 +14186,13 @@ __metadata: languageName: node linkType: hard +"@rolldown/binding-linux-arm-gnueabihf@npm:1.0.0-rc.9": + version: 1.0.0-rc.9 + resolution: "@rolldown/binding-linux-arm-gnueabihf@npm:1.0.0-rc.9" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + "@rolldown/binding-linux-arm64-gnu@npm:1.0.0-beta.57": version: 1.0.0-beta.57 resolution: "@rolldown/binding-linux-arm64-gnu@npm:1.0.0-beta.57" @@ -14178,6 +14214,13 @@ __metadata: languageName: node linkType: hard +"@rolldown/binding-linux-arm64-gnu@npm:1.0.0-rc.9": + version: 1.0.0-rc.9 + resolution: "@rolldown/binding-linux-arm64-gnu@npm:1.0.0-rc.9" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + "@rolldown/binding-linux-arm64-musl@npm:1.0.0-beta.57": version: 1.0.0-beta.57 resolution: "@rolldown/binding-linux-arm64-musl@npm:1.0.0-beta.57" @@ -14199,6 +14242,13 @@ __metadata: languageName: node linkType: hard +"@rolldown/binding-linux-arm64-musl@npm:1.0.0-rc.9": + version: 1.0.0-rc.9 + resolution: "@rolldown/binding-linux-arm64-musl@npm:1.0.0-rc.9" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + "@rolldown/binding-linux-ppc64-gnu@npm:1.0.0-rc.8": version: 1.0.0-rc.8 resolution: "@rolldown/binding-linux-ppc64-gnu@npm:1.0.0-rc.8" @@ -14206,6 +14256,13 @@ __metadata: languageName: node linkType: hard +"@rolldown/binding-linux-ppc64-gnu@npm:1.0.0-rc.9": + version: 1.0.0-rc.9 + resolution: "@rolldown/binding-linux-ppc64-gnu@npm:1.0.0-rc.9" + conditions: os=linux & cpu=ppc64 & libc=glibc + languageName: node + linkType: hard + "@rolldown/binding-linux-s390x-gnu@npm:1.0.0-rc.8": version: 1.0.0-rc.8 resolution: "@rolldown/binding-linux-s390x-gnu@npm:1.0.0-rc.8" @@ -14213,6 +14270,13 @@ __metadata: languageName: node linkType: hard +"@rolldown/binding-linux-s390x-gnu@npm:1.0.0-rc.9": + version: 1.0.0-rc.9 + resolution: "@rolldown/binding-linux-s390x-gnu@npm:1.0.0-rc.9" + conditions: os=linux & cpu=s390x & libc=glibc + languageName: node + linkType: hard + "@rolldown/binding-linux-x64-gnu@npm:1.0.0-beta.57": version: 1.0.0-beta.57 resolution: "@rolldown/binding-linux-x64-gnu@npm:1.0.0-beta.57" @@ -14234,6 +14298,13 @@ __metadata: languageName: node linkType: hard +"@rolldown/binding-linux-x64-gnu@npm:1.0.0-rc.9": + version: 1.0.0-rc.9 + resolution: "@rolldown/binding-linux-x64-gnu@npm:1.0.0-rc.9" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + "@rolldown/binding-linux-x64-musl@npm:1.0.0-beta.57": version: 1.0.0-beta.57 resolution: "@rolldown/binding-linux-x64-musl@npm:1.0.0-beta.57" @@ -14255,6 +14326,13 @@ __metadata: languageName: node linkType: hard +"@rolldown/binding-linux-x64-musl@npm:1.0.0-rc.9": + version: 1.0.0-rc.9 + resolution: "@rolldown/binding-linux-x64-musl@npm:1.0.0-rc.9" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + "@rolldown/binding-openharmony-arm64@npm:1.0.0-beta.57": version: 1.0.0-beta.57 resolution: "@rolldown/binding-openharmony-arm64@npm:1.0.0-beta.57" @@ -14276,6 +14354,13 @@ __metadata: languageName: node linkType: hard +"@rolldown/binding-openharmony-arm64@npm:1.0.0-rc.9": + version: 1.0.0-rc.9 + resolution: "@rolldown/binding-openharmony-arm64@npm:1.0.0-rc.9" + conditions: os=openharmony & cpu=arm64 + languageName: node + linkType: hard + "@rolldown/binding-wasm32-wasi@npm:1.0.0-beta.57": version: 1.0.0-beta.57 resolution: "@rolldown/binding-wasm32-wasi@npm:1.0.0-beta.57" @@ -14303,6 +14388,15 @@ __metadata: languageName: node linkType: hard +"@rolldown/binding-wasm32-wasi@npm:1.0.0-rc.9": + version: 1.0.0-rc.9 + resolution: "@rolldown/binding-wasm32-wasi@npm:1.0.0-rc.9" + dependencies: + "@napi-rs/wasm-runtime": "npm:^1.1.1" + conditions: cpu=wasm32 + languageName: node + linkType: hard + "@rolldown/binding-win32-arm64-msvc@npm:1.0.0-beta.57": version: 1.0.0-beta.57 resolution: "@rolldown/binding-win32-arm64-msvc@npm:1.0.0-beta.57" @@ -14324,6 +14418,13 @@ __metadata: languageName: node linkType: hard +"@rolldown/binding-win32-arm64-msvc@npm:1.0.0-rc.9": + version: 1.0.0-rc.9 + resolution: "@rolldown/binding-win32-arm64-msvc@npm:1.0.0-rc.9" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + "@rolldown/binding-win32-x64-msvc@npm:1.0.0-beta.57": version: 1.0.0-beta.57 resolution: "@rolldown/binding-win32-x64-msvc@npm:1.0.0-beta.57" @@ -14345,6 +14446,35 @@ __metadata: languageName: node linkType: hard +"@rolldown/binding-win32-x64-msvc@npm:1.0.0-rc.9": + version: 1.0.0-rc.9 + resolution: "@rolldown/binding-win32-x64-msvc@npm:1.0.0-rc.9" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@rolldown/plugin-babel@npm:0.2.1": + version: 0.2.1 + resolution: "@rolldown/plugin-babel@npm:0.2.1" + dependencies: + picomatch: "npm:^4.0.3" + peerDependencies: + "@babel/core": ^7.29.0 || ^8.0.0-rc.1 + "@babel/plugin-transform-runtime": ^7.29.0 || ^8.0.0-rc.1 + "@babel/runtime": ^7.27.0 || ^8.0.0-rc.1 + rolldown: ^1.0.0-rc.5 + vite: ^8.0.0 + peerDependenciesMeta: + "@babel/plugin-transform-runtime": + optional: true + "@babel/runtime": + optional: true + vite: + optional: true + checksum: 10c0/b58539302de92a5105da903b8c13c57dfc49dc5550db9b5781292d0a355c1e2cf10148e5cdaf5a130fe90037c8b0942dea667a51140d44a6fa4c08d600e419cd + languageName: node + linkType: hard + "@rolldown/pluginutils@npm:1.0.0-beta.27": version: 1.0.0-beta.27 resolution: "@rolldown/pluginutils@npm:1.0.0-beta.27" @@ -14380,6 +14510,13 @@ __metadata: languageName: node linkType: hard +"@rolldown/pluginutils@npm:1.0.0-rc.7": + version: 1.0.0-rc.7 + resolution: "@rolldown/pluginutils@npm:1.0.0-rc.7" + checksum: 10c0/9d5490b5805b25bcd1720ca01c4c032b55a0ef953dab36a8dd42c568e82214576baa464f3027cd5dff3fabcfbe3bf3db2251d12b60220f5d1cd2ffde5ee37082 + languageName: node + linkType: hard + "@rolldown/pluginutils@npm:1.0.0-rc.8": version: 1.0.0-rc.8 resolution: "@rolldown/pluginutils@npm:1.0.0-rc.8" @@ -14387,6 +14524,13 @@ __metadata: languageName: node linkType: hard +"@rolldown/pluginutils@npm:1.0.0-rc.9": + version: 1.0.0-rc.9 + resolution: "@rolldown/pluginutils@npm:1.0.0-rc.9" + checksum: 10c0/fca488fb96b134ccf95b42632b6112b4abb8b3a9688f166fbd627410def2538ee201953717d234ddecbff62dfe4edc4e72c657b01a9d0750134608d767eea5fd + languageName: node + linkType: hard + "@rollup/plugin-commonjs@npm:28.0.1": version: 28.0.1 resolution: "@rollup/plugin-commonjs@npm:28.0.1" @@ -16841,6 +16985,13 @@ __metadata: languageName: node linkType: hard +"@standard-schema/spec@npm:^1.1.0": + version: 1.1.0 + resolution: "@standard-schema/spec@npm:1.1.0" + checksum: 10c0/d90f55acde4b2deb983529c87e8025fa693de1a5e8b49ecc6eb84d1fd96328add0e03d7d551442156c7432fd78165b2c26ff561b970a9a881f046abb78d6a526 + languageName: node + linkType: hard + "@storybook/addon-docs@npm:9.1.13": version: 9.1.13 resolution: "@storybook/addon-docs@npm:9.1.13" @@ -16858,16 +17009,16 @@ __metadata: languageName: node linkType: hard -"@storybook/builder-vite@npm:10.2.13": - version: 10.2.13 - resolution: "@storybook/builder-vite@npm:10.2.13" +"@storybook/builder-vite@npm:10.2.19": + version: 10.2.19 + resolution: "@storybook/builder-vite@npm:10.2.19" dependencies: - "@storybook/csf-plugin": "npm:10.2.13" + "@storybook/csf-plugin": "npm:10.2.19" ts-dedent: "npm:^2.0.0" peerDependencies: - storybook: ^10.2.13 - vite: ^5.0.0 || ^6.0.0 || ^7.0.0 - checksum: 10c0/0510e57d86ea7f81ba49ffd3643645e94e082f18544bd506bdcd800c003414707d3572c204704dfe429a3e02fa1bdf6111d309abbd20a294200cb9ba87ea7972 + storybook: ^10.2.19 + vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 + checksum: 10c0/9a6345516b85201a6ef61c6f0688d39e6780bb622d50462ae6dd615642be3c1d307582e342a6942cb5e3978a25de32caa9e817f2208335da5cdc03a89ec58875 languageName: node linkType: hard @@ -16884,15 +17035,15 @@ __metadata: languageName: node linkType: hard -"@storybook/csf-plugin@npm:10.2.13": - version: 10.2.13 - resolution: "@storybook/csf-plugin@npm:10.2.13" +"@storybook/csf-plugin@npm:10.2.19": + version: 10.2.19 + resolution: "@storybook/csf-plugin@npm:10.2.19" dependencies: unplugin: "npm:^2.3.5" peerDependencies: esbuild: "*" rollup: "*" - storybook: ^10.2.13 + storybook: ^10.2.19 vite: "*" webpack: "*" peerDependenciesMeta: @@ -16904,7 +17055,7 @@ __metadata: optional: true webpack: optional: true - checksum: 10c0/e799f9630cfc50ef3c85304f74ffb54372e57f291112d7459de99f4fa21da814374807ac6af312141af11f5e0c746963735e1e41566dd62d0ac7eeb8cf0053ba + checksum: 10c0/ea6daa261cf7cd5752919af63c1b68fa97371961f3382cd32f5305e1cea89da2a3198c00ae80f3687c16c2f17e69a95ca1350310cd5f2a72ea4e17aed7296063 languageName: node linkType: hard @@ -16955,14 +17106,14 @@ __metadata: languageName: node linkType: hard -"@storybook/react-dom-shim@npm:10.2.13": - version: 10.2.13 - resolution: "@storybook/react-dom-shim@npm:10.2.13" +"@storybook/react-dom-shim@npm:10.2.19": + version: 10.2.19 + resolution: "@storybook/react-dom-shim@npm:10.2.19" peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - storybook: ^10.2.13 - checksum: 10c0/78c9788748aae81541727e3cfe32dc1c14aef10af0a5c979d307ec1910d15d5105341ce1c2d5d27ae9ad40dec6de6c0c9c85dfbf12f90c14da678eee5581a3cf + storybook: ^10.2.19 + checksum: 10c0/2713f4aee8543c9d3435f8363f5a5d9550455028287e96298471068c031c8c54cebf7254686c3368aed346e2e73dd11980438bf6e5908a4e250473ecb7e789e0 languageName: node linkType: hard @@ -16977,14 +17128,14 @@ __metadata: languageName: node linkType: hard -"@storybook/react-vite@npm:10.2.13": - version: 10.2.13 - resolution: "@storybook/react-vite@npm:10.2.13" +"@storybook/react-vite@npm:10.2.19": + version: 10.2.19 + resolution: "@storybook/react-vite@npm:10.2.19" dependencies: "@joshwooding/vite-plugin-react-docgen-typescript": "npm:^0.6.4" "@rollup/pluginutils": "npm:^5.0.2" - "@storybook/builder-vite": "npm:10.2.13" - "@storybook/react": "npm:10.2.13" + "@storybook/builder-vite": "npm:10.2.19" + "@storybook/react": "npm:10.2.19" empathic: "npm:^2.0.0" magic-string: "npm:^0.30.0" react-docgen: "npm:^8.0.0" @@ -16993,9 +17144,9 @@ __metadata: peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - storybook: ^10.2.13 - vite: ^5.0.0 || ^6.0.0 || ^7.0.0 - checksum: 10c0/b231b6c393007a34171ed6159a0d0a9b0870ab9058f387f714a6579ba1dbc2b533064dd6d3ba2b2d4ae48ef2b252de14344da9d0f239aee486b2dcaf3f463c66 + storybook: ^10.2.19 + vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 + checksum: 10c0/923da98497d8a078d42f2569d91103c12d87dcffca431bbd97b152110abc0b0d49087c252cc14d568b6a6a0ce0d49462783614eab692c61373d509729a614e43 languageName: node linkType: hard @@ -17021,22 +17172,22 @@ __metadata: languageName: node linkType: hard -"@storybook/react@npm:10.2.13": - version: 10.2.13 - resolution: "@storybook/react@npm:10.2.13" +"@storybook/react@npm:10.2.19": + version: 10.2.19 + resolution: "@storybook/react@npm:10.2.19" dependencies: "@storybook/global": "npm:^5.0.0" - "@storybook/react-dom-shim": "npm:10.2.13" + "@storybook/react-dom-shim": "npm:10.2.19" react-docgen: "npm:^8.0.2" peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - storybook: ^10.2.13 + storybook: ^10.2.19 typescript: ">= 4.9.x" peerDependenciesMeta: typescript: optional: true - checksum: 10c0/1b2fe05730605cc785bceb8ca4f538ef69c149d54c7bd9dd6981366c38801c4f632ab2343f3e358b79bde5d0a088f38bba78d9efca169e6369a5b3fbf4153726 + checksum: 10c0/436d2eb5be06cfc96bda1666e3c0edb098d4ec3cfdcb1454f5adab75566ae4b1fbb17a253ec7f3df5895e3222c59f1b890f739d2ebb769082e4f7ce9caace522 languageName: node linkType: hard @@ -19953,6 +20104,24 @@ __metadata: languageName: node linkType: hard +"@vitejs/plugin-react@npm:6.0.1": + version: 6.0.1 + resolution: "@vitejs/plugin-react@npm:6.0.1" + dependencies: + "@rolldown/pluginutils": "npm:1.0.0-rc.7" + peerDependencies: + "@rolldown/plugin-babel": ^0.1.7 || ^0.2.0 + babel-plugin-react-compiler: ^1.0.0 + vite: ^8.0.0 + peerDependenciesMeta: + "@rolldown/plugin-babel": + optional: true + babel-plugin-react-compiler: + optional: true + checksum: 10c0/6c42f53a970cb6b0776ba5b4203bb01690ac564c56fca706d4037b50aec965ddc0f11530ab58ab2cd0fbe8c12e14cff6966b22d90391283b4a53294e3ddd478d + languageName: node + linkType: hard + "@vitejs/plugin-react@npm:^4.3.4": version: 4.7.0 resolution: "@vitejs/plugin-react@npm:4.7.0" @@ -20068,6 +20237,20 @@ __metadata: languageName: node linkType: hard +"@vitest/expect@npm:4.1.0": + version: 4.1.0 + resolution: "@vitest/expect@npm:4.1.0" + dependencies: + "@standard-schema/spec": "npm:^1.1.0" + "@types/chai": "npm:^5.2.2" + "@vitest/spy": "npm:4.1.0" + "@vitest/utils": "npm:4.1.0" + chai: "npm:^6.2.2" + tinyrainbow: "npm:^3.0.3" + checksum: 10c0/91cd7bb036401df5dfd9204f3de9a0afdb21dea6ee154622e5ed849e87a0df68b74258d490559c7046d3c03bc7aa634e9b0c166942a21d5e475c86c971486091 + languageName: node + linkType: hard + "@vitest/mocker@npm:3.2.4": version: 3.2.4 resolution: "@vitest/mocker@npm:3.2.4" @@ -20106,6 +20289,25 @@ __metadata: languageName: node linkType: hard +"@vitest/mocker@npm:4.1.0": + version: 4.1.0 + resolution: "@vitest/mocker@npm:4.1.0" + dependencies: + "@vitest/spy": "npm:4.1.0" + estree-walker: "npm:^3.0.3" + magic-string: "npm:^0.30.21" + peerDependencies: + msw: ^2.4.9 + vite: ^6.0.0 || ^7.0.0 || ^8.0.0-0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true + checksum: 10c0/f61d3df6461008eb1e62ba465172207b29bd0d9866ff6bc88cd40fc99cd5d215ad89e2894ba6de87068e33f75de903b28a65ccc6074edf3de1fbead6a4a369cc + languageName: node + linkType: hard + "@vitest/pretty-format@npm:3.2.4, @vitest/pretty-format@npm:^3.2.4": version: 3.2.4 resolution: "@vitest/pretty-format@npm:3.2.4" @@ -20124,6 +20326,15 @@ __metadata: languageName: node linkType: hard +"@vitest/pretty-format@npm:4.1.0": + version: 4.1.0 + resolution: "@vitest/pretty-format@npm:4.1.0" + dependencies: + tinyrainbow: "npm:^3.0.3" + checksum: 10c0/638077f53b5f24ff2d4bc062e69931fa718141db28ddafe435de98a402586b82e8c3cadfc580c0ad233d7f0203aa22d866ac2adca98b83038dbd5423c3d7fe27 + languageName: node + linkType: hard + "@vitest/runner@npm:3.2.4": version: 3.2.4 resolution: "@vitest/runner@npm:3.2.4" @@ -20145,6 +20356,16 @@ __metadata: languageName: node linkType: hard +"@vitest/runner@npm:4.1.0": + version: 4.1.0 + resolution: "@vitest/runner@npm:4.1.0" + dependencies: + "@vitest/utils": "npm:4.1.0" + pathe: "npm:^2.0.3" + checksum: 10c0/9e09ca1b9070d3fe26c9bd48443d21b9fe2cb9abb2f694300bd9e5065f4e904f7322c07cd4bafadfed6fb11adfb50e4d1535f327ac6d24b6c373e92be90510bc + languageName: node + linkType: hard + "@vitest/snapshot@npm:3.2.4": version: 3.2.4 resolution: "@vitest/snapshot@npm:3.2.4" @@ -20167,6 +20388,18 @@ __metadata: languageName: node linkType: hard +"@vitest/snapshot@npm:4.1.0": + version: 4.1.0 + resolution: "@vitest/snapshot@npm:4.1.0" + dependencies: + "@vitest/pretty-format": "npm:4.1.0" + "@vitest/utils": "npm:4.1.0" + magic-string: "npm:^0.30.21" + pathe: "npm:^2.0.3" + checksum: 10c0/582c22988c47a99d93dd17ef660427fefe101f67ae4394b64fe58ec103ddc55fc5993626b4a2b556e0a38d40552abaca78196907455e794805ba197b3d56860f + languageName: node + linkType: hard + "@vitest/spy@npm:3.2.4": version: 3.2.4 resolution: "@vitest/spy@npm:3.2.4" @@ -20183,6 +20416,13 @@ __metadata: languageName: node linkType: hard +"@vitest/spy@npm:4.1.0": + version: 4.1.0 + resolution: "@vitest/spy@npm:4.1.0" + checksum: 10c0/363776bbffda45af76ff500deacb9b1a35ad8b889462c1be9ebe5f29578ce1dd2c4bd7858c8188614a7db9699a5c802b7beb72e5a18ab5130a70326817961446 + languageName: node + linkType: hard + "@vitest/utils@npm:3.2.4": version: 3.2.4 resolution: "@vitest/utils@npm:3.2.4" @@ -20204,6 +20444,17 @@ __metadata: languageName: node linkType: hard +"@vitest/utils@npm:4.1.0": + version: 4.1.0 + resolution: "@vitest/utils@npm:4.1.0" + dependencies: + "@vitest/pretty-format": "npm:4.1.0" + convert-source-map: "npm:^2.0.0" + tinyrainbow: "npm:^3.0.3" + checksum: 10c0/222afbdef4f680a554bb6c3d946a4a879a441ebfb8597295cb7554d295e0e2624f3d4c2920b5767bbb8961a9f8a16756270ffc84032f5ea432cdce080ccab050 + languageName: node + linkType: hard + "@volar/language-core@npm:2.4.23, @volar/language-core@npm:~2.4.11": version: 2.4.23 resolution: "@volar/language-core@npm:2.4.23" @@ -23691,6 +23942,13 @@ __metadata: languageName: node linkType: hard +"chai@npm:^6.2.2": + version: 6.2.2 + resolution: "chai@npm:6.2.2" + checksum: 10c0/e6c69e5f0c11dffe6ea13d0290936ebb68fcc1ad688b8e952e131df6a6d5797d5e860bc55cef1aca2e950c3e1f96daf79e9d5a70fb7dbaab4e46355e2635ed53 + languageName: node + linkType: hard + "chalk@npm:4.1.2, chalk@npm:^4.0.0, chalk@npm:^4.0.2, chalk@npm:^4.1.0, chalk@npm:^4.1.1, chalk@npm:^4.1.2": version: 4.1.2 resolution: "chalk@npm:4.1.2" @@ -28271,6 +28529,13 @@ __metadata: languageName: node linkType: hard +"expect-type@npm:^1.3.0": + version: 1.3.0 + resolution: "expect-type@npm:1.3.0" + checksum: 10c0/8412b3fe4f392c420ab41dae220b09700e4e47c639a29ba7ba2e83cc6cffd2b4926f7ac9e47d7e277e8f4f02acda76fd6931cb81fd2b382fa9477ef9ada953fd + languageName: node + linkType: hard + "exponential-backoff@npm:3.1.3, exponential-backoff@npm:^3.1.1": version: 3.1.3 resolution: "exponential-backoff@npm:3.1.3" @@ -33642,6 +33907,13 @@ __metadata: languageName: node linkType: hard +"lightningcss-android-arm64@npm:1.32.0": + version: 1.32.0 + resolution: "lightningcss-android-arm64@npm:1.32.0" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + "lightningcss-darwin-arm64@npm:1.25.1": version: 1.25.1 resolution: "lightningcss-darwin-arm64@npm:1.25.1" @@ -33656,6 +33928,13 @@ __metadata: languageName: node linkType: hard +"lightningcss-darwin-arm64@npm:1.32.0": + version: 1.32.0 + resolution: "lightningcss-darwin-arm64@npm:1.32.0" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + "lightningcss-darwin-x64@npm:1.25.1": version: 1.25.1 resolution: "lightningcss-darwin-x64@npm:1.25.1" @@ -33670,6 +33949,13 @@ __metadata: languageName: node linkType: hard +"lightningcss-darwin-x64@npm:1.32.0": + version: 1.32.0 + resolution: "lightningcss-darwin-x64@npm:1.32.0" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + "lightningcss-freebsd-x64@npm:1.25.1": version: 1.25.1 resolution: "lightningcss-freebsd-x64@npm:1.25.1" @@ -33684,6 +33970,13 @@ __metadata: languageName: node linkType: hard +"lightningcss-freebsd-x64@npm:1.32.0": + version: 1.32.0 + resolution: "lightningcss-freebsd-x64@npm:1.32.0" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + "lightningcss-linux-arm-gnueabihf@npm:1.25.1": version: 1.25.1 resolution: "lightningcss-linux-arm-gnueabihf@npm:1.25.1" @@ -33698,6 +33991,13 @@ __metadata: languageName: node linkType: hard +"lightningcss-linux-arm-gnueabihf@npm:1.32.0": + version: 1.32.0 + resolution: "lightningcss-linux-arm-gnueabihf@npm:1.32.0" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + "lightningcss-linux-arm64-gnu@npm:1.25.1": version: 1.25.1 resolution: "lightningcss-linux-arm64-gnu@npm:1.25.1" @@ -33712,6 +34012,13 @@ __metadata: languageName: node linkType: hard +"lightningcss-linux-arm64-gnu@npm:1.32.0": + version: 1.32.0 + resolution: "lightningcss-linux-arm64-gnu@npm:1.32.0" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + "lightningcss-linux-arm64-musl@npm:1.25.1": version: 1.25.1 resolution: "lightningcss-linux-arm64-musl@npm:1.25.1" @@ -33726,6 +34033,13 @@ __metadata: languageName: node linkType: hard +"lightningcss-linux-arm64-musl@npm:1.32.0": + version: 1.32.0 + resolution: "lightningcss-linux-arm64-musl@npm:1.32.0" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + "lightningcss-linux-x64-gnu@npm:1.25.1": version: 1.25.1 resolution: "lightningcss-linux-x64-gnu@npm:1.25.1" @@ -33740,6 +34054,13 @@ __metadata: languageName: node linkType: hard +"lightningcss-linux-x64-gnu@npm:1.32.0": + version: 1.32.0 + resolution: "lightningcss-linux-x64-gnu@npm:1.32.0" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + "lightningcss-linux-x64-musl@npm:1.25.1": version: 1.25.1 resolution: "lightningcss-linux-x64-musl@npm:1.25.1" @@ -33754,6 +34075,13 @@ __metadata: languageName: node linkType: hard +"lightningcss-linux-x64-musl@npm:1.32.0": + version: 1.32.0 + resolution: "lightningcss-linux-x64-musl@npm:1.32.0" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + "lightningcss-win32-arm64-msvc@npm:1.31.1": version: 1.31.1 resolution: "lightningcss-win32-arm64-msvc@npm:1.31.1" @@ -33761,6 +34089,13 @@ __metadata: languageName: node linkType: hard +"lightningcss-win32-arm64-msvc@npm:1.32.0": + version: 1.32.0 + resolution: "lightningcss-win32-arm64-msvc@npm:1.32.0" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + "lightningcss-win32-x64-msvc@npm:1.25.1": version: 1.25.1 resolution: "lightningcss-win32-x64-msvc@npm:1.25.1" @@ -33775,6 +34110,13 @@ __metadata: languageName: node linkType: hard +"lightningcss-win32-x64-msvc@npm:1.32.0": + version: 1.32.0 + resolution: "lightningcss-win32-x64-msvc@npm:1.32.0" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + "lightningcss@npm:1.25.1": version: 1.25.1 resolution: "lightningcss@npm:1.25.1" @@ -33855,6 +34197,49 @@ __metadata: languageName: node linkType: hard +"lightningcss@npm:^1.32.0": + version: 1.32.0 + resolution: "lightningcss@npm:1.32.0" + dependencies: + detect-libc: "npm:^2.0.3" + lightningcss-android-arm64: "npm:1.32.0" + lightningcss-darwin-arm64: "npm:1.32.0" + lightningcss-darwin-x64: "npm:1.32.0" + lightningcss-freebsd-x64: "npm:1.32.0" + lightningcss-linux-arm-gnueabihf: "npm:1.32.0" + lightningcss-linux-arm64-gnu: "npm:1.32.0" + lightningcss-linux-arm64-musl: "npm:1.32.0" + lightningcss-linux-x64-gnu: "npm:1.32.0" + lightningcss-linux-x64-musl: "npm:1.32.0" + lightningcss-win32-arm64-msvc: "npm:1.32.0" + lightningcss-win32-x64-msvc: "npm:1.32.0" + dependenciesMeta: + lightningcss-android-arm64: + optional: true + lightningcss-darwin-arm64: + optional: true + lightningcss-darwin-x64: + optional: true + lightningcss-freebsd-x64: + optional: true + lightningcss-linux-arm-gnueabihf: + optional: true + lightningcss-linux-arm64-gnu: + optional: true + lightningcss-linux-arm64-musl: + optional: true + lightningcss-linux-x64-gnu: + optional: true + lightningcss-linux-x64-musl: + optional: true + lightningcss-win32-arm64-msvc: + optional: true + lightningcss-win32-x64-msvc: + optional: true + checksum: 10c0/70945bd55097af46fc9fab7f5ed09cd5869d85940a2acab7ee06d0117004a1d68155708a2d462531cea2fc3c67aefc9333a7068c80b0b78dd404c16838809e03 + languageName: node + linkType: hard + "lilconfig@npm:^3.1.3": version: 3.1.3 resolution: "lilconfig@npm:3.1.3" @@ -38535,6 +38920,17 @@ __metadata: languageName: node linkType: hard +"postcss@npm:^8.5.8": + version: 8.5.8 + resolution: "postcss@npm:8.5.8" + dependencies: + nanoid: "npm:^3.3.11" + picocolors: "npm:^1.1.1" + source-map-js: "npm:^1.2.1" + checksum: 10c0/dd918f7127ee7c60a0295bae2e72b3787892296e1d1c3c564d7a2a00c68d8df83cadc3178491259daa19ccc54804fb71ed8c937c6787e08d8bd4bedf8d17044c + languageName: node + linkType: hard + "postgres-array@npm:^3.0.1": version: 3.0.2 resolution: "postgres-array@npm:3.0.2" @@ -40778,9 +41174,9 @@ __metadata: languageName: node linkType: hard -"rolldown-plugin-dts@npm:0.22.4": - version: 0.22.4 - resolution: "rolldown-plugin-dts@npm:0.22.4" +"rolldown-plugin-dts@npm:0.22.5": + version: 0.22.5 + resolution: "rolldown-plugin-dts@npm:0.22.5" dependencies: "@babel/generator": "npm:8.0.0-rc.2" "@babel/helper-validator-identifier": "npm:8.0.0-rc.2" @@ -40806,7 +41202,7 @@ __metadata: optional: true vue-tsc: optional: true - checksum: 10c0/2ddc8f421d2b2811546f0cbbb4e4efd7515ebecc11cc0fc3a7d6444f36816759e79582999b0973b3ef520c3fb09318c2c846a3bd3f8550defb3c2447fc94d88b + checksum: 10c0/43940457abc0576833a50da2fe90d4993f5b4171910875da1d540954ba14aac9b41e72920caa11c1ffee0e439c0bd5b950706036f56c7220c5ad7cf178559236 languageName: node linkType: hard @@ -41003,6 +41399,64 @@ __metadata: languageName: node linkType: hard +"rolldown@npm:1.0.0-rc.9": + version: 1.0.0-rc.9 + resolution: "rolldown@npm:1.0.0-rc.9" + dependencies: + "@oxc-project/types": "npm:=0.115.0" + "@rolldown/binding-android-arm64": "npm:1.0.0-rc.9" + "@rolldown/binding-darwin-arm64": "npm:1.0.0-rc.9" + "@rolldown/binding-darwin-x64": "npm:1.0.0-rc.9" + "@rolldown/binding-freebsd-x64": "npm:1.0.0-rc.9" + "@rolldown/binding-linux-arm-gnueabihf": "npm:1.0.0-rc.9" + "@rolldown/binding-linux-arm64-gnu": "npm:1.0.0-rc.9" + "@rolldown/binding-linux-arm64-musl": "npm:1.0.0-rc.9" + "@rolldown/binding-linux-ppc64-gnu": "npm:1.0.0-rc.9" + "@rolldown/binding-linux-s390x-gnu": "npm:1.0.0-rc.9" + "@rolldown/binding-linux-x64-gnu": "npm:1.0.0-rc.9" + "@rolldown/binding-linux-x64-musl": "npm:1.0.0-rc.9" + "@rolldown/binding-openharmony-arm64": "npm:1.0.0-rc.9" + "@rolldown/binding-wasm32-wasi": "npm:1.0.0-rc.9" + "@rolldown/binding-win32-arm64-msvc": "npm:1.0.0-rc.9" + "@rolldown/binding-win32-x64-msvc": "npm:1.0.0-rc.9" + "@rolldown/pluginutils": "npm:1.0.0-rc.9" + dependenciesMeta: + "@rolldown/binding-android-arm64": + optional: true + "@rolldown/binding-darwin-arm64": + optional: true + "@rolldown/binding-darwin-x64": + optional: true + "@rolldown/binding-freebsd-x64": + optional: true + "@rolldown/binding-linux-arm-gnueabihf": + optional: true + "@rolldown/binding-linux-arm64-gnu": + optional: true + "@rolldown/binding-linux-arm64-musl": + optional: true + "@rolldown/binding-linux-ppc64-gnu": + optional: true + "@rolldown/binding-linux-s390x-gnu": + optional: true + "@rolldown/binding-linux-x64-gnu": + optional: true + "@rolldown/binding-linux-x64-musl": + optional: true + "@rolldown/binding-openharmony-arm64": + optional: true + "@rolldown/binding-wasm32-wasi": + optional: true + "@rolldown/binding-win32-arm64-msvc": + optional: true + "@rolldown/binding-win32-x64-msvc": + optional: true + bin: + rolldown: bin/cli.mjs + checksum: 10c0/d19af14dccf569dc25c0c3c2f1142b7a6f7cec291d55bba80cea71099f89c6d634145bb1b6487626ddd41d578f183f7065ed68067e49d2b964ad6242693b0f79 + languageName: node + linkType: hard + "rollup@npm:4.59.0, rollup@npm:^4.34.9, rollup@npm:^4.35.0, rollup@npm:^4.43.0": version: 4.59.0 resolution: "rollup@npm:4.59.0" @@ -42464,6 +42918,13 @@ __metadata: languageName: node linkType: hard +"std-env@npm:^4.0.0-rc.1": + version: 4.0.0 + resolution: "std-env@npm:4.0.0" + checksum: 10c0/63b1716eae27947adde49e21b7225a0f75fb2c3d410273ae9de8333c07c7d5fc7a0628ae4c8af6b4b49b4274ed46c2bf118ed69b64f1261c9d8213d76ed1c16c + languageName: node + linkType: hard + "stop-iteration-iterator@npm:^1.1.0": version: 1.1.0 resolution: "stop-iteration-iterator@npm:1.1.0" @@ -42481,9 +42942,9 @@ __metadata: languageName: node linkType: hard -"storybook@npm:10.2.13": - version: 10.2.13 - resolution: "storybook@npm:10.2.13" +"storybook@npm:10.2.19": + version: 10.2.19 + resolution: "storybook@npm:10.2.19" dependencies: "@storybook/global": "npm:^5.0.0" "@storybook/icons": "npm:^2.0.1" @@ -42504,7 +42965,7 @@ __metadata: optional: true bin: storybook: ./dist/bin/dispatcher.js - checksum: 10c0/5ca338b707c3e7e94c16ecdcb00ca3c450157dceec758c15c416649e346e628a0e034d2265656650fc4fee4680631de7cc588e1a244e42cbb41af9416281a998 + checksum: 10c0/e2cff3bc713c5a70c8f5f4193cca698d3588382d8277c017f63b957d6f5ab8e4cb1aa3ab00479cf568af732c25a58a4e1c1b25facd828ad492df0b3ae043378c languageName: node linkType: hard @@ -45395,6 +45856,64 @@ __metadata: languageName: node linkType: hard +"vite@npm:8.0.0, vite@npm:^6.0.0 || ^7.0.0 || ^8.0.0-0": + version: 8.0.0 + resolution: "vite@npm:8.0.0" + dependencies: + "@oxc-project/runtime": "npm:0.115.0" + fsevents: "npm:~2.3.3" + lightningcss: "npm:^1.32.0" + picomatch: "npm:^4.0.3" + postcss: "npm:^8.5.8" + rolldown: "npm:1.0.0-rc.9" + tinyglobby: "npm:^0.2.15" + peerDependencies: + "@types/node": ^20.19.0 || >=22.12.0 + "@vitejs/devtools": ^0.0.0-alpha.31 + esbuild: ^0.27.0 + jiti: ">=1.21.0" + less: ^4.0.0 + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: ">=0.54.8" + sugarss: ^5.0.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + dependenciesMeta: + fsevents: + optional: true + peerDependenciesMeta: + "@types/node": + optional: true + "@vitejs/devtools": + optional: true + esbuild: + optional: true + jiti: + optional: true + less: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + bin: + vite: bin/vite.js + checksum: 10c0/2246d3d54788dcd53c39da82da3f934a760756642ba9a575c84c5ef9f310bc47697f7f9fde6721fa566675e93e408736b4ac068008d2ddbd75b0ed99c7fd4c67 + languageName: node + linkType: hard + "vite@npm:8.0.0-beta.18": version: 8.0.0-beta.18 resolution: "vite@npm:8.0.0-beta.18" @@ -45637,7 +46156,69 @@ __metadata: languageName: node linkType: hard -"vitest@npm:4.0.18, vitest@npm:^4.0.16": +"vitest@npm:4.1.0": + version: 4.1.0 + resolution: "vitest@npm:4.1.0" + dependencies: + "@vitest/expect": "npm:4.1.0" + "@vitest/mocker": "npm:4.1.0" + "@vitest/pretty-format": "npm:4.1.0" + "@vitest/runner": "npm:4.1.0" + "@vitest/snapshot": "npm:4.1.0" + "@vitest/spy": "npm:4.1.0" + "@vitest/utils": "npm:4.1.0" + es-module-lexer: "npm:^2.0.0" + expect-type: "npm:^1.3.0" + magic-string: "npm:^0.30.21" + obug: "npm:^2.1.1" + pathe: "npm:^2.0.3" + picomatch: "npm:^4.0.3" + std-env: "npm:^4.0.0-rc.1" + tinybench: "npm:^2.9.0" + tinyexec: "npm:^1.0.2" + tinyglobby: "npm:^0.2.15" + tinyrainbow: "npm:^3.0.3" + vite: "npm:^6.0.0 || ^7.0.0 || ^8.0.0-0" + why-is-node-running: "npm:^2.3.0" + peerDependencies: + "@edge-runtime/vm": "*" + "@opentelemetry/api": ^1.9.0 + "@types/node": ^20.0.0 || ^22.0.0 || >=24.0.0 + "@vitest/browser-playwright": 4.1.0 + "@vitest/browser-preview": 4.1.0 + "@vitest/browser-webdriverio": 4.1.0 + "@vitest/ui": 4.1.0 + happy-dom: "*" + jsdom: "*" + vite: ^6.0.0 || ^7.0.0 || ^8.0.0-0 + peerDependenciesMeta: + "@edge-runtime/vm": + optional: true + "@opentelemetry/api": + optional: true + "@types/node": + optional: true + "@vitest/browser-playwright": + optional: true + "@vitest/browser-preview": + optional: true + "@vitest/browser-webdriverio": + optional: true + "@vitest/ui": + optional: true + happy-dom: + optional: true + jsdom: + optional: true + vite: + optional: false + bin: + vitest: vitest.mjs + checksum: 10c0/48048e4391e4e8190aa12b1c868bef4ad8d346214631b4506e0dc1f3241ecb8bcb24f296c38a7d98eae712a042375ae209da4b35165db38f9a9bc79a3a9e2a04 + languageName: node + linkType: hard + +"vitest@npm:^4.0.16": version: 4.0.18 resolution: "vitest@npm:4.0.18" dependencies: From 1e336d0348be144a5690aa7f85ed15e18137b5ea Mon Sep 17 00:00:00 2001 From: Chris Feijoo Date: Sun, 15 Mar 2026 16:28:33 +0100 Subject: [PATCH 13/20] Update yarn.lock --- yarn.lock | 251 ++---------------------------------------------------- 1 file changed, 8 insertions(+), 243 deletions(-) diff --git a/yarn.lock b/yarn.lock index dd75d0669c4..f961c12f3da 100644 --- a/yarn.lock +++ b/yarn.lock @@ -16978,14 +16978,7 @@ __metadata: languageName: node linkType: hard -"@standard-schema/spec@npm:^1.0.0": - version: 1.0.0 - resolution: "@standard-schema/spec@npm:1.0.0" - checksum: 10c0/a1ab9a8bdc09b5b47aa8365d0e0ec40cc2df6437be02853696a0e377321653b0d3ac6f079a8c67d5ddbe9821025584b1fb71d9cc041a6666a96f1fadf2ece15f - languageName: node - linkType: hard - -"@standard-schema/spec@npm:^1.1.0": +"@standard-schema/spec@npm:^1.0.0, @standard-schema/spec@npm:^1.1.0": version: 1.1.0 resolution: "@standard-schema/spec@npm:1.1.0" checksum: 10c0/d90f55acde4b2deb983529c87e8025fa693de1a5e8b49ecc6eb84d1fd96328add0e03d7d551442156c7432fd78165b2c26ff561b970a9a881f046abb78d6a526 @@ -20223,20 +20216,6 @@ __metadata: languageName: node linkType: hard -"@vitest/expect@npm:4.0.18": - version: 4.0.18 - resolution: "@vitest/expect@npm:4.0.18" - dependencies: - "@standard-schema/spec": "npm:^1.0.0" - "@types/chai": "npm:^5.2.2" - "@vitest/spy": "npm:4.0.18" - "@vitest/utils": "npm:4.0.18" - chai: "npm:^6.2.1" - tinyrainbow: "npm:^3.0.3" - checksum: 10c0/123b0aa111682e82ec5289186df18037b1a1768700e468ee0f9879709aaa320cf790463c15c0d8ee10df92b402f4394baf5d27797e604d78e674766d87bcaadc - languageName: node - linkType: hard - "@vitest/expect@npm:4.1.0": version: 4.1.0 resolution: "@vitest/expect@npm:4.1.0" @@ -20346,16 +20325,6 @@ __metadata: languageName: node linkType: hard -"@vitest/runner@npm:4.0.18": - version: 4.0.18 - resolution: "@vitest/runner@npm:4.0.18" - dependencies: - "@vitest/utils": "npm:4.0.18" - pathe: "npm:^2.0.3" - checksum: 10c0/fdb4afa411475133c05ba266c8092eaf1e56cbd5fb601f92ec6ccb9bab7ca52e06733ee8626599355cba4ee71cb3a8f28c84d3b69dc972e41047edc50229bc01 - languageName: node - linkType: hard - "@vitest/runner@npm:4.1.0": version: 4.1.0 resolution: "@vitest/runner@npm:4.1.0" @@ -20377,17 +20346,6 @@ __metadata: languageName: node linkType: hard -"@vitest/snapshot@npm:4.0.18": - version: 4.0.18 - resolution: "@vitest/snapshot@npm:4.0.18" - dependencies: - "@vitest/pretty-format": "npm:4.0.18" - magic-string: "npm:^0.30.21" - pathe: "npm:^2.0.3" - checksum: 10c0/d3bfefa558db9a69a66886ace6575eb96903a5ba59f4d9a5d0fecb4acc2bb8dbb443ef409f5ac1475f2e1add30bd1d71280f98912da35e89c75829df9e84ea43 - languageName: node - linkType: hard - "@vitest/snapshot@npm:4.1.0": version: 4.1.0 resolution: "@vitest/snapshot@npm:4.1.0" @@ -23935,13 +23893,6 @@ __metadata: languageName: node linkType: hard -"chai@npm:^6.2.1": - version: 6.2.1 - resolution: "chai@npm:6.2.1" - checksum: 10c0/0c2d84392d7c6d44ca5d14d94204f1760e22af68b83d1f4278b5c4d301dabfc0242da70954dd86b1eda01e438f42950de6cf9d569df2103678538e4014abe50b - languageName: node - linkType: hard - "chai@npm:^6.2.2": version: 6.2.2 resolution: "chai@npm:6.2.2" @@ -28522,14 +28473,7 @@ __metadata: languageName: node linkType: hard -"expect-type@npm:^1.2.1, expect-type@npm:^1.2.2": - version: 1.2.2 - resolution: "expect-type@npm:1.2.2" - checksum: 10c0/6019019566063bbc7a690d9281d920b1a91284a4a093c2d55d71ffade5ac890cf37a51e1da4602546c4b56569d2ad2fc175a2ccee77d1ae06cb3af91ef84f44b - languageName: node - linkType: hard - -"expect-type@npm:^1.3.0": +"expect-type@npm:^1.2.1, expect-type@npm:^1.3.0": version: 1.3.0 resolution: "expect-type@npm:1.3.0" checksum: 10c0/8412b3fe4f392c420ab41dae220b09700e4e47c639a29ba7ba2e83cc6cffd2b4926f7ac9e47d7e277e8f4f02acda76fd6931cb81fd2b382fa9477ef9ada953fd @@ -33900,13 +33844,6 @@ __metadata: languageName: node linkType: hard -"lightningcss-android-arm64@npm:1.31.1": - version: 1.31.1 - resolution: "lightningcss-android-arm64@npm:1.31.1" - conditions: os=android & cpu=arm64 - languageName: node - linkType: hard - "lightningcss-android-arm64@npm:1.32.0": version: 1.32.0 resolution: "lightningcss-android-arm64@npm:1.32.0" @@ -33921,13 +33858,6 @@ __metadata: languageName: node linkType: hard -"lightningcss-darwin-arm64@npm:1.31.1": - version: 1.31.1 - resolution: "lightningcss-darwin-arm64@npm:1.31.1" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - "lightningcss-darwin-arm64@npm:1.32.0": version: 1.32.0 resolution: "lightningcss-darwin-arm64@npm:1.32.0" @@ -33942,13 +33872,6 @@ __metadata: languageName: node linkType: hard -"lightningcss-darwin-x64@npm:1.31.1": - version: 1.31.1 - resolution: "lightningcss-darwin-x64@npm:1.31.1" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - "lightningcss-darwin-x64@npm:1.32.0": version: 1.32.0 resolution: "lightningcss-darwin-x64@npm:1.32.0" @@ -33963,13 +33886,6 @@ __metadata: languageName: node linkType: hard -"lightningcss-freebsd-x64@npm:1.31.1": - version: 1.31.1 - resolution: "lightningcss-freebsd-x64@npm:1.31.1" - conditions: os=freebsd & cpu=x64 - languageName: node - linkType: hard - "lightningcss-freebsd-x64@npm:1.32.0": version: 1.32.0 resolution: "lightningcss-freebsd-x64@npm:1.32.0" @@ -33984,13 +33900,6 @@ __metadata: languageName: node linkType: hard -"lightningcss-linux-arm-gnueabihf@npm:1.31.1": - version: 1.31.1 - resolution: "lightningcss-linux-arm-gnueabihf@npm:1.31.1" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - "lightningcss-linux-arm-gnueabihf@npm:1.32.0": version: 1.32.0 resolution: "lightningcss-linux-arm-gnueabihf@npm:1.32.0" @@ -34005,13 +33914,6 @@ __metadata: languageName: node linkType: hard -"lightningcss-linux-arm64-gnu@npm:1.31.1": - version: 1.31.1 - resolution: "lightningcss-linux-arm64-gnu@npm:1.31.1" - conditions: os=linux & cpu=arm64 & libc=glibc - languageName: node - linkType: hard - "lightningcss-linux-arm64-gnu@npm:1.32.0": version: 1.32.0 resolution: "lightningcss-linux-arm64-gnu@npm:1.32.0" @@ -34026,13 +33928,6 @@ __metadata: languageName: node linkType: hard -"lightningcss-linux-arm64-musl@npm:1.31.1": - version: 1.31.1 - resolution: "lightningcss-linux-arm64-musl@npm:1.31.1" - conditions: os=linux & cpu=arm64 & libc=musl - languageName: node - linkType: hard - "lightningcss-linux-arm64-musl@npm:1.32.0": version: 1.32.0 resolution: "lightningcss-linux-arm64-musl@npm:1.32.0" @@ -34047,13 +33942,6 @@ __metadata: languageName: node linkType: hard -"lightningcss-linux-x64-gnu@npm:1.31.1": - version: 1.31.1 - resolution: "lightningcss-linux-x64-gnu@npm:1.31.1" - conditions: os=linux & cpu=x64 & libc=glibc - languageName: node - linkType: hard - "lightningcss-linux-x64-gnu@npm:1.32.0": version: 1.32.0 resolution: "lightningcss-linux-x64-gnu@npm:1.32.0" @@ -34068,13 +33956,6 @@ __metadata: languageName: node linkType: hard -"lightningcss-linux-x64-musl@npm:1.31.1": - version: 1.31.1 - resolution: "lightningcss-linux-x64-musl@npm:1.31.1" - conditions: os=linux & cpu=x64 & libc=musl - languageName: node - linkType: hard - "lightningcss-linux-x64-musl@npm:1.32.0": version: 1.32.0 resolution: "lightningcss-linux-x64-musl@npm:1.32.0" @@ -34082,13 +33963,6 @@ __metadata: languageName: node linkType: hard -"lightningcss-win32-arm64-msvc@npm:1.31.1": - version: 1.31.1 - resolution: "lightningcss-win32-arm64-msvc@npm:1.31.1" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - "lightningcss-win32-arm64-msvc@npm:1.32.0": version: 1.32.0 resolution: "lightningcss-win32-arm64-msvc@npm:1.32.0" @@ -34103,13 +33977,6 @@ __metadata: languageName: node linkType: hard -"lightningcss-win32-x64-msvc@npm:1.31.1": - version: 1.31.1 - resolution: "lightningcss-win32-x64-msvc@npm:1.31.1" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - "lightningcss-win32-x64-msvc@npm:1.32.0": version: 1.32.0 resolution: "lightningcss-win32-x64-msvc@npm:1.32.0" @@ -34154,50 +34021,7 @@ __metadata: languageName: node linkType: hard -"lightningcss@npm:^1.31.1": - version: 1.31.1 - resolution: "lightningcss@npm:1.31.1" - dependencies: - detect-libc: "npm:^2.0.3" - lightningcss-android-arm64: "npm:1.31.1" - lightningcss-darwin-arm64: "npm:1.31.1" - lightningcss-darwin-x64: "npm:1.31.1" - lightningcss-freebsd-x64: "npm:1.31.1" - lightningcss-linux-arm-gnueabihf: "npm:1.31.1" - lightningcss-linux-arm64-gnu: "npm:1.31.1" - lightningcss-linux-arm64-musl: "npm:1.31.1" - lightningcss-linux-x64-gnu: "npm:1.31.1" - lightningcss-linux-x64-musl: "npm:1.31.1" - lightningcss-win32-arm64-msvc: "npm:1.31.1" - lightningcss-win32-x64-msvc: "npm:1.31.1" - dependenciesMeta: - lightningcss-android-arm64: - optional: true - lightningcss-darwin-arm64: - optional: true - lightningcss-darwin-x64: - optional: true - lightningcss-freebsd-x64: - optional: true - lightningcss-linux-arm-gnueabihf: - optional: true - lightningcss-linux-arm64-gnu: - optional: true - lightningcss-linux-arm64-musl: - optional: true - lightningcss-linux-x64-gnu: - optional: true - lightningcss-linux-x64-musl: - optional: true - lightningcss-win32-arm64-msvc: - optional: true - lightningcss-win32-x64-msvc: - optional: true - checksum: 10c0/c6754b305d4a73652e472fc0d7d65384a6e16c336ea61068eca60de2a45bd5c30abbf012358b82eac56ee98b5d88028932cda5268ff61967cffa400b9e7ee2ba - languageName: node - linkType: hard - -"lightningcss@npm:^1.32.0": +"lightningcss@npm:^1.31.1, lightningcss@npm:^1.32.0": version: 1.32.0 resolution: "lightningcss@npm:1.32.0" dependencies: @@ -38909,7 +38733,7 @@ __metadata: languageName: node linkType: hard -"postcss@npm:8.5.6, postcss@npm:^8.3.11, postcss@npm:^8.4.14, postcss@npm:^8.4.33, postcss@npm:^8.5.1, postcss@npm:^8.5.3, postcss@npm:^8.5.6": +"postcss@npm:8.5.6": version: 8.5.6 resolution: "postcss@npm:8.5.6" dependencies: @@ -38920,7 +38744,7 @@ __metadata: languageName: node linkType: hard -"postcss@npm:^8.5.8": +"postcss@npm:^8.3.11, postcss@npm:^8.4.14, postcss@npm:^8.4.33, postcss@npm:^8.5.1, postcss@npm:^8.5.3, postcss@npm:^8.5.6, postcss@npm:^8.5.8": version: 8.5.8 resolution: "postcss@npm:8.5.8" dependencies: @@ -42911,7 +42735,7 @@ __metadata: languageName: node linkType: hard -"std-env@npm:^3.10.0, std-env@npm:^3.9.0": +"std-env@npm:^3.9.0": version: 3.10.0 resolution: "std-env@npm:3.10.0" checksum: 10c0/1814927a45004d36dde6707eaf17552a546769bc79a6421be2c16ce77d238158dfe5de30910b78ec30d95135cc1c59ea73ee22d2ca170f8b9753f84da34c427f @@ -45972,7 +45796,7 @@ __metadata: languageName: node linkType: hard -"vite@npm:^5.0.0 || ^6.0.0 || ^7.0.0-0, vite@npm:^6.0.0 || ^7.0.0": +"vite@npm:^5.0.0 || ^6.0.0 || ^7.0.0-0": version: 7.1.12 resolution: "vite@npm:7.1.12" dependencies: @@ -46156,7 +45980,7 @@ __metadata: languageName: node linkType: hard -"vitest@npm:4.1.0": +"vitest@npm:4.1.0, vitest@npm:^4.0.16": version: 4.1.0 resolution: "vitest@npm:4.1.0" dependencies: @@ -46218,65 +46042,6 @@ __metadata: languageName: node linkType: hard -"vitest@npm:^4.0.16": - version: 4.0.18 - resolution: "vitest@npm:4.0.18" - dependencies: - "@vitest/expect": "npm:4.0.18" - "@vitest/mocker": "npm:4.0.18" - "@vitest/pretty-format": "npm:4.0.18" - "@vitest/runner": "npm:4.0.18" - "@vitest/snapshot": "npm:4.0.18" - "@vitest/spy": "npm:4.0.18" - "@vitest/utils": "npm:4.0.18" - es-module-lexer: "npm:^1.7.0" - expect-type: "npm:^1.2.2" - magic-string: "npm:^0.30.21" - obug: "npm:^2.1.1" - pathe: "npm:^2.0.3" - picomatch: "npm:^4.0.3" - std-env: "npm:^3.10.0" - tinybench: "npm:^2.9.0" - tinyexec: "npm:^1.0.2" - tinyglobby: "npm:^0.2.15" - tinyrainbow: "npm:^3.0.3" - vite: "npm:^6.0.0 || ^7.0.0" - why-is-node-running: "npm:^2.3.0" - peerDependencies: - "@edge-runtime/vm": "*" - "@opentelemetry/api": ^1.9.0 - "@types/node": ^20.0.0 || ^22.0.0 || >=24.0.0 - "@vitest/browser-playwright": 4.0.18 - "@vitest/browser-preview": 4.0.18 - "@vitest/browser-webdriverio": 4.0.18 - "@vitest/ui": 4.0.18 - happy-dom: "*" - jsdom: "*" - peerDependenciesMeta: - "@edge-runtime/vm": - optional: true - "@opentelemetry/api": - optional: true - "@types/node": - optional: true - "@vitest/browser-playwright": - optional: true - "@vitest/browser-preview": - optional: true - "@vitest/browser-webdriverio": - optional: true - "@vitest/ui": - optional: true - happy-dom: - optional: true - jsdom: - optional: true - bin: - vitest: vitest.mjs - checksum: 10c0/b913cd32032c95f29ff08c931f4b4c6fd6d2da498908d6770952c561a1b8d75c62499a1f04cadf82fb89cc0f9a33f29fb5dfdb899f6dbb27686a9d91571be5fa - languageName: node - linkType: hard - "vscode-languageserver-types@npm:3.17.5": version: 3.17.5 resolution: "vscode-languageserver-types@npm:3.17.5" From 381f9df8fffc303230704aa9e8442da6e8f1e92e Mon Sep 17 00:00:00 2001 From: Chris Feijoo Date: Sun, 15 Mar 2026 16:30:46 +0100 Subject: [PATCH 14/20] Update @typescript/native-preview to 7.0.0-dev.20260315.1 Co-Authored-By: Claude Opus 4.6 (1M context) --- apps/petrinaut-website/package.json | 2 +- libs/@hashintel/petrinaut/package.json | 2 +- yarn.lock | 68 +++++++++++++------------- 3 files changed, 36 insertions(+), 36 deletions(-) diff --git a/apps/petrinaut-website/package.json b/apps/petrinaut-website/package.json index d05346f6be6..cdc51050cc8 100644 --- a/apps/petrinaut-website/package.json +++ b/apps/petrinaut-website/package.json @@ -21,7 +21,7 @@ "devDependencies": { "@types/react": "19.2.7", "@types/react-dom": "19.2.3", - "@typescript/native-preview": "7.0.0-dev.20260309.1", + "@typescript/native-preview": "7.0.0-dev.20260315.1", "@vitejs/plugin-react": "5.1.4", "babel-plugin-react-compiler": "1.0.0", "oxlint": "1.55.0", diff --git a/libs/@hashintel/petrinaut/package.json b/libs/@hashintel/petrinaut/package.json index b09e6383ecc..e00fb38e701 100644 --- a/libs/@hashintel/petrinaut/package.json +++ b/libs/@hashintel/petrinaut/package.json @@ -62,7 +62,7 @@ "@types/d3-scale": "4.0.9", "@types/react": "19.2.7", "@types/react-dom": "19.2.3", - "@typescript/native-preview": "7.0.0-dev.20260309.1", + "@typescript/native-preview": "7.0.0-dev.20260315.1", "@vitejs/plugin-react": "6.0.1", "babel-plugin-react-compiler": "1.0.0", "jsdom": "24.1.3", diff --git a/yarn.lock b/yarn.lock index f961c12f3da..aaf159c3179 100644 --- a/yarn.lock +++ b/yarn.lock @@ -775,7 +775,7 @@ __metadata: "@sentry/react": "npm:10.22.0" "@types/react": "npm:19.2.7" "@types/react-dom": "npm:19.2.3" - "@typescript/native-preview": "npm:7.0.0-dev.20260309.1" + "@typescript/native-preview": "npm:7.0.0-dev.20260315.1" "@vitejs/plugin-react": "npm:5.1.4" babel-plugin-react-compiler: "npm:1.0.0" immer: "npm:10.1.3" @@ -7955,7 +7955,7 @@ __metadata: "@types/d3-scale": "npm:4.0.9" "@types/react": "npm:19.2.7" "@types/react-dom": "npm:19.2.3" - "@typescript/native-preview": "npm:7.0.0-dev.20260309.1" + "@typescript/native-preview": "npm:7.0.0-dev.20260315.1" "@vitejs/plugin-react": "npm:6.0.1" "@xyflow/react": "npm:12.10.1" babel-plugin-react-compiler: "npm:1.0.0" @@ -19776,66 +19776,66 @@ __metadata: languageName: node linkType: hard -"@typescript/native-preview-darwin-arm64@npm:7.0.0-dev.20260309.1": - version: 7.0.0-dev.20260309.1 - resolution: "@typescript/native-preview-darwin-arm64@npm:7.0.0-dev.20260309.1" +"@typescript/native-preview-darwin-arm64@npm:7.0.0-dev.20260315.1": + version: 7.0.0-dev.20260315.1 + resolution: "@typescript/native-preview-darwin-arm64@npm:7.0.0-dev.20260315.1" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@typescript/native-preview-darwin-x64@npm:7.0.0-dev.20260309.1": - version: 7.0.0-dev.20260309.1 - resolution: "@typescript/native-preview-darwin-x64@npm:7.0.0-dev.20260309.1" +"@typescript/native-preview-darwin-x64@npm:7.0.0-dev.20260315.1": + version: 7.0.0-dev.20260315.1 + resolution: "@typescript/native-preview-darwin-x64@npm:7.0.0-dev.20260315.1" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@typescript/native-preview-linux-arm64@npm:7.0.0-dev.20260309.1": - version: 7.0.0-dev.20260309.1 - resolution: "@typescript/native-preview-linux-arm64@npm:7.0.0-dev.20260309.1" +"@typescript/native-preview-linux-arm64@npm:7.0.0-dev.20260315.1": + version: 7.0.0-dev.20260315.1 + resolution: "@typescript/native-preview-linux-arm64@npm:7.0.0-dev.20260315.1" conditions: os=linux & cpu=arm64 languageName: node linkType: hard -"@typescript/native-preview-linux-arm@npm:7.0.0-dev.20260309.1": - version: 7.0.0-dev.20260309.1 - resolution: "@typescript/native-preview-linux-arm@npm:7.0.0-dev.20260309.1" +"@typescript/native-preview-linux-arm@npm:7.0.0-dev.20260315.1": + version: 7.0.0-dev.20260315.1 + resolution: "@typescript/native-preview-linux-arm@npm:7.0.0-dev.20260315.1" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@typescript/native-preview-linux-x64@npm:7.0.0-dev.20260309.1": - version: 7.0.0-dev.20260309.1 - resolution: "@typescript/native-preview-linux-x64@npm:7.0.0-dev.20260309.1" +"@typescript/native-preview-linux-x64@npm:7.0.0-dev.20260315.1": + version: 7.0.0-dev.20260315.1 + resolution: "@typescript/native-preview-linux-x64@npm:7.0.0-dev.20260315.1" conditions: os=linux & cpu=x64 languageName: node linkType: hard -"@typescript/native-preview-win32-arm64@npm:7.0.0-dev.20260309.1": - version: 7.0.0-dev.20260309.1 - resolution: "@typescript/native-preview-win32-arm64@npm:7.0.0-dev.20260309.1" +"@typescript/native-preview-win32-arm64@npm:7.0.0-dev.20260315.1": + version: 7.0.0-dev.20260315.1 + resolution: "@typescript/native-preview-win32-arm64@npm:7.0.0-dev.20260315.1" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@typescript/native-preview-win32-x64@npm:7.0.0-dev.20260309.1": - version: 7.0.0-dev.20260309.1 - resolution: "@typescript/native-preview-win32-x64@npm:7.0.0-dev.20260309.1" +"@typescript/native-preview-win32-x64@npm:7.0.0-dev.20260315.1": + version: 7.0.0-dev.20260315.1 + resolution: "@typescript/native-preview-win32-x64@npm:7.0.0-dev.20260315.1" conditions: os=win32 & cpu=x64 languageName: node linkType: hard -"@typescript/native-preview@npm:7.0.0-dev.20260309.1": - version: 7.0.0-dev.20260309.1 - resolution: "@typescript/native-preview@npm:7.0.0-dev.20260309.1" +"@typescript/native-preview@npm:7.0.0-dev.20260315.1": + version: 7.0.0-dev.20260315.1 + resolution: "@typescript/native-preview@npm:7.0.0-dev.20260315.1" dependencies: - "@typescript/native-preview-darwin-arm64": "npm:7.0.0-dev.20260309.1" - "@typescript/native-preview-darwin-x64": "npm:7.0.0-dev.20260309.1" - "@typescript/native-preview-linux-arm": "npm:7.0.0-dev.20260309.1" - "@typescript/native-preview-linux-arm64": "npm:7.0.0-dev.20260309.1" - "@typescript/native-preview-linux-x64": "npm:7.0.0-dev.20260309.1" - "@typescript/native-preview-win32-arm64": "npm:7.0.0-dev.20260309.1" - "@typescript/native-preview-win32-x64": "npm:7.0.0-dev.20260309.1" + "@typescript/native-preview-darwin-arm64": "npm:7.0.0-dev.20260315.1" + "@typescript/native-preview-darwin-x64": "npm:7.0.0-dev.20260315.1" + "@typescript/native-preview-linux-arm": "npm:7.0.0-dev.20260315.1" + "@typescript/native-preview-linux-arm64": "npm:7.0.0-dev.20260315.1" + "@typescript/native-preview-linux-x64": "npm:7.0.0-dev.20260315.1" + "@typescript/native-preview-win32-arm64": "npm:7.0.0-dev.20260315.1" + "@typescript/native-preview-win32-x64": "npm:7.0.0-dev.20260315.1" dependenciesMeta: "@typescript/native-preview-darwin-arm64": optional: true @@ -19853,7 +19853,7 @@ __metadata: optional: true bin: tsgo: bin/tsgo.js - checksum: 10c0/55a5e1c1afa2a227a5b095bbcd48c6c7028745a316bff93959c89cced24247277a4d2d4fcf8d43fac6787de67b04031491f427725f145a6ddbc7c263f85585fe + checksum: 10c0/d017002bd72e0993d007f661fee11ccdf56a2067edd5f9f81ed4497e652d4e6aada5e6d9cbb480bd3277226fd385355f0269f2c03093cd11e956768a59cd5318 languageName: node linkType: hard From 28931fecada841490ce1947c1eb7aec23cae66e7 Mon Sep 17 00:00:00 2001 From: Chris Feijoo Date: Sun, 15 Mar 2026 16:34:24 +0100 Subject: [PATCH 15/20] Upgrade petrinaut-website to vite 8 stable and plugin-react v6 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - vite 8.0.0-beta.18 → 8.0.0 - @vitejs/plugin-react 5.1.4 → 6.0.1 - Add @rolldown/plugin-babel for React Compiler - Migrate vite config to reactCompilerPreset pattern Matches the same changes applied to @hashintel/petrinaut. Co-Authored-By: Claude Opus 4.6 (1M context) --- apps/petrinaut-website/package.json | 5 +- apps/petrinaut-website/vite.config.ts | 24 +-- yarn.lock | 264 +------------------------- 3 files changed, 21 insertions(+), 272 deletions(-) diff --git a/apps/petrinaut-website/package.json b/apps/petrinaut-website/package.json index cdc51050cc8..11cf875d297 100644 --- a/apps/petrinaut-website/package.json +++ b/apps/petrinaut-website/package.json @@ -19,12 +19,13 @@ "react-dom": "19.2.3" }, "devDependencies": { + "@rolldown/plugin-babel": "0.2.1", "@types/react": "19.2.7", "@types/react-dom": "19.2.3", "@typescript/native-preview": "7.0.0-dev.20260315.1", - "@vitejs/plugin-react": "5.1.4", + "@vitejs/plugin-react": "6.0.1", "babel-plugin-react-compiler": "1.0.0", "oxlint": "1.55.0", - "vite": "8.0.0-beta.18" + "vite": "8.0.0" } } diff --git a/apps/petrinaut-website/vite.config.ts b/apps/petrinaut-website/vite.config.ts index 6367f92634d..9b8bc9209ba 100644 --- a/apps/petrinaut-website/vite.config.ts +++ b/apps/petrinaut-website/vite.config.ts @@ -1,4 +1,5 @@ -import react from "@vitejs/plugin-react"; +import babel from "@rolldown/plugin-babel"; +import react, { reactCompilerPreset } from "@vitejs/plugin-react"; import { defineConfig } from "vite"; /** Petrinaut website dev server and production build config. */ @@ -13,17 +14,16 @@ export default defineConfig(() => { }, plugins: [ - react({ - babel: { - plugins: [ - [ - "babel-plugin-react-compiler", - { - panicThreshold: "critical_errors", - }, - ], - ], - }, + react(), + babel({ + presets: [ + reactCompilerPreset({ + target: "19", + compilationMode: "infer", + // @ts-expect-error - panicThreshold is accepted at runtime + panicThreshold: "critical_errors", + }), + ], }), ], }; diff --git a/yarn.lock b/yarn.lock index aaf159c3179..93618265ee3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -772,17 +772,18 @@ __metadata: dependencies: "@hashintel/petrinaut": "workspace:*" "@mantine/hooks": "npm:8.3.5" + "@rolldown/plugin-babel": "npm:0.2.1" "@sentry/react": "npm:10.22.0" "@types/react": "npm:19.2.7" "@types/react-dom": "npm:19.2.3" "@typescript/native-preview": "npm:7.0.0-dev.20260315.1" - "@vitejs/plugin-react": "npm:5.1.4" + "@vitejs/plugin-react": "npm:6.0.1" babel-plugin-react-compiler: "npm:1.0.0" immer: "npm:10.1.3" oxlint: "npm:1.55.0" react: "npm:19.2.3" react-dom: "npm:19.2.3" - vite: "npm:8.0.0-beta.18" + vite: "npm:8.0.0" languageName: unknown linkType: soft @@ -3327,7 +3328,7 @@ __metadata: languageName: node linkType: hard -"@babel/core@npm:^7.14.0, @babel/core@npm:^7.16.0, @babel/core@npm:^7.18.5, @babel/core@npm:^7.21.3, @babel/core@npm:^7.22.9, @babel/core@npm:^7.23.9, @babel/core@npm:^7.24.4, @babel/core@npm:^7.26.0, @babel/core@npm:^7.28.0, @babel/core@npm:^7.28.4, @babel/core@npm:^7.29.0": +"@babel/core@npm:^7.14.0, @babel/core@npm:^7.16.0, @babel/core@npm:^7.18.5, @babel/core@npm:^7.21.3, @babel/core@npm:^7.22.9, @babel/core@npm:^7.23.9, @babel/core@npm:^7.24.4, @babel/core@npm:^7.26.0, @babel/core@npm:^7.28.0, @babel/core@npm:^7.28.4": version: 7.29.0 resolution: "@babel/core@npm:7.29.0" dependencies: @@ -14067,13 +14068,6 @@ __metadata: languageName: node linkType: hard -"@rolldown/binding-android-arm64@npm:1.0.0-rc.8": - version: 1.0.0-rc.8 - resolution: "@rolldown/binding-android-arm64@npm:1.0.0-rc.8" - conditions: os=android & cpu=arm64 - languageName: node - linkType: hard - "@rolldown/binding-android-arm64@npm:1.0.0-rc.9": version: 1.0.0-rc.9 resolution: "@rolldown/binding-android-arm64@npm:1.0.0-rc.9" @@ -14095,13 +14089,6 @@ __metadata: languageName: node linkType: hard -"@rolldown/binding-darwin-arm64@npm:1.0.0-rc.8": - version: 1.0.0-rc.8 - resolution: "@rolldown/binding-darwin-arm64@npm:1.0.0-rc.8" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - "@rolldown/binding-darwin-arm64@npm:1.0.0-rc.9": version: 1.0.0-rc.9 resolution: "@rolldown/binding-darwin-arm64@npm:1.0.0-rc.9" @@ -14123,13 +14110,6 @@ __metadata: languageName: node linkType: hard -"@rolldown/binding-darwin-x64@npm:1.0.0-rc.8": - version: 1.0.0-rc.8 - resolution: "@rolldown/binding-darwin-x64@npm:1.0.0-rc.8" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - "@rolldown/binding-darwin-x64@npm:1.0.0-rc.9": version: 1.0.0-rc.9 resolution: "@rolldown/binding-darwin-x64@npm:1.0.0-rc.9" @@ -14151,13 +14131,6 @@ __metadata: languageName: node linkType: hard -"@rolldown/binding-freebsd-x64@npm:1.0.0-rc.8": - version: 1.0.0-rc.8 - resolution: "@rolldown/binding-freebsd-x64@npm:1.0.0-rc.8" - conditions: os=freebsd & cpu=x64 - languageName: node - linkType: hard - "@rolldown/binding-freebsd-x64@npm:1.0.0-rc.9": version: 1.0.0-rc.9 resolution: "@rolldown/binding-freebsd-x64@npm:1.0.0-rc.9" @@ -14179,13 +14152,6 @@ __metadata: languageName: node linkType: hard -"@rolldown/binding-linux-arm-gnueabihf@npm:1.0.0-rc.8": - version: 1.0.0-rc.8 - resolution: "@rolldown/binding-linux-arm-gnueabihf@npm:1.0.0-rc.8" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - "@rolldown/binding-linux-arm-gnueabihf@npm:1.0.0-rc.9": version: 1.0.0-rc.9 resolution: "@rolldown/binding-linux-arm-gnueabihf@npm:1.0.0-rc.9" @@ -14207,13 +14173,6 @@ __metadata: languageName: node linkType: hard -"@rolldown/binding-linux-arm64-gnu@npm:1.0.0-rc.8": - version: 1.0.0-rc.8 - resolution: "@rolldown/binding-linux-arm64-gnu@npm:1.0.0-rc.8" - conditions: os=linux & cpu=arm64 & libc=glibc - languageName: node - linkType: hard - "@rolldown/binding-linux-arm64-gnu@npm:1.0.0-rc.9": version: 1.0.0-rc.9 resolution: "@rolldown/binding-linux-arm64-gnu@npm:1.0.0-rc.9" @@ -14235,13 +14194,6 @@ __metadata: languageName: node linkType: hard -"@rolldown/binding-linux-arm64-musl@npm:1.0.0-rc.8": - version: 1.0.0-rc.8 - resolution: "@rolldown/binding-linux-arm64-musl@npm:1.0.0-rc.8" - conditions: os=linux & cpu=arm64 & libc=musl - languageName: node - linkType: hard - "@rolldown/binding-linux-arm64-musl@npm:1.0.0-rc.9": version: 1.0.0-rc.9 resolution: "@rolldown/binding-linux-arm64-musl@npm:1.0.0-rc.9" @@ -14249,13 +14201,6 @@ __metadata: languageName: node linkType: hard -"@rolldown/binding-linux-ppc64-gnu@npm:1.0.0-rc.8": - version: 1.0.0-rc.8 - resolution: "@rolldown/binding-linux-ppc64-gnu@npm:1.0.0-rc.8" - conditions: os=linux & cpu=ppc64 & libc=glibc - languageName: node - linkType: hard - "@rolldown/binding-linux-ppc64-gnu@npm:1.0.0-rc.9": version: 1.0.0-rc.9 resolution: "@rolldown/binding-linux-ppc64-gnu@npm:1.0.0-rc.9" @@ -14263,13 +14208,6 @@ __metadata: languageName: node linkType: hard -"@rolldown/binding-linux-s390x-gnu@npm:1.0.0-rc.8": - version: 1.0.0-rc.8 - resolution: "@rolldown/binding-linux-s390x-gnu@npm:1.0.0-rc.8" - conditions: os=linux & cpu=s390x & libc=glibc - languageName: node - linkType: hard - "@rolldown/binding-linux-s390x-gnu@npm:1.0.0-rc.9": version: 1.0.0-rc.9 resolution: "@rolldown/binding-linux-s390x-gnu@npm:1.0.0-rc.9" @@ -14291,13 +14229,6 @@ __metadata: languageName: node linkType: hard -"@rolldown/binding-linux-x64-gnu@npm:1.0.0-rc.8": - version: 1.0.0-rc.8 - resolution: "@rolldown/binding-linux-x64-gnu@npm:1.0.0-rc.8" - conditions: os=linux & cpu=x64 & libc=glibc - languageName: node - linkType: hard - "@rolldown/binding-linux-x64-gnu@npm:1.0.0-rc.9": version: 1.0.0-rc.9 resolution: "@rolldown/binding-linux-x64-gnu@npm:1.0.0-rc.9" @@ -14319,13 +14250,6 @@ __metadata: languageName: node linkType: hard -"@rolldown/binding-linux-x64-musl@npm:1.0.0-rc.8": - version: 1.0.0-rc.8 - resolution: "@rolldown/binding-linux-x64-musl@npm:1.0.0-rc.8" - conditions: os=linux & cpu=x64 & libc=musl - languageName: node - linkType: hard - "@rolldown/binding-linux-x64-musl@npm:1.0.0-rc.9": version: 1.0.0-rc.9 resolution: "@rolldown/binding-linux-x64-musl@npm:1.0.0-rc.9" @@ -14347,13 +14271,6 @@ __metadata: languageName: node linkType: hard -"@rolldown/binding-openharmony-arm64@npm:1.0.0-rc.8": - version: 1.0.0-rc.8 - resolution: "@rolldown/binding-openharmony-arm64@npm:1.0.0-rc.8" - conditions: os=openharmony & cpu=arm64 - languageName: node - linkType: hard - "@rolldown/binding-openharmony-arm64@npm:1.0.0-rc.9": version: 1.0.0-rc.9 resolution: "@rolldown/binding-openharmony-arm64@npm:1.0.0-rc.9" @@ -14379,15 +14296,6 @@ __metadata: languageName: node linkType: hard -"@rolldown/binding-wasm32-wasi@npm:1.0.0-rc.8": - version: 1.0.0-rc.8 - resolution: "@rolldown/binding-wasm32-wasi@npm:1.0.0-rc.8" - dependencies: - "@napi-rs/wasm-runtime": "npm:^1.1.1" - conditions: cpu=wasm32 - languageName: node - linkType: hard - "@rolldown/binding-wasm32-wasi@npm:1.0.0-rc.9": version: 1.0.0-rc.9 resolution: "@rolldown/binding-wasm32-wasi@npm:1.0.0-rc.9" @@ -14411,13 +14319,6 @@ __metadata: languageName: node linkType: hard -"@rolldown/binding-win32-arm64-msvc@npm:1.0.0-rc.8": - version: 1.0.0-rc.8 - resolution: "@rolldown/binding-win32-arm64-msvc@npm:1.0.0-rc.8" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - "@rolldown/binding-win32-arm64-msvc@npm:1.0.0-rc.9": version: 1.0.0-rc.9 resolution: "@rolldown/binding-win32-arm64-msvc@npm:1.0.0-rc.9" @@ -14439,13 +14340,6 @@ __metadata: languageName: node linkType: hard -"@rolldown/binding-win32-x64-msvc@npm:1.0.0-rc.8": - version: 1.0.0-rc.8 - resolution: "@rolldown/binding-win32-x64-msvc@npm:1.0.0-rc.8" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - "@rolldown/binding-win32-x64-msvc@npm:1.0.0-rc.9": version: 1.0.0-rc.9 resolution: "@rolldown/binding-win32-x64-msvc@npm:1.0.0-rc.9" @@ -14503,13 +14397,6 @@ __metadata: languageName: node linkType: hard -"@rolldown/pluginutils@npm:1.0.0-rc.3": - version: 1.0.0-rc.3 - resolution: "@rolldown/pluginutils@npm:1.0.0-rc.3" - checksum: 10c0/3928b6282a30f307d1b075d2f217180ae173ea9e00638ce46ab65f089bd5f7a0b2c488ae1ce530f509387793c656a2910337c4cd68fa9d37d7e439365989e699 - languageName: node - linkType: hard - "@rolldown/pluginutils@npm:1.0.0-rc.7": version: 1.0.0-rc.7 resolution: "@rolldown/pluginutils@npm:1.0.0-rc.7" @@ -14517,13 +14404,6 @@ __metadata: languageName: node linkType: hard -"@rolldown/pluginutils@npm:1.0.0-rc.8": - version: 1.0.0-rc.8 - resolution: "@rolldown/pluginutils@npm:1.0.0-rc.8" - checksum: 10c0/a451e422ec1b5c867231e13c35f8ca9fda50f56340c76ef75e23c2ece0731ca2fe6393854ca874b0ba326421cced705c752cfb8592e8481397d3b23206b1e8ef - languageName: node - linkType: hard - "@rolldown/pluginutils@npm:1.0.0-rc.9": version: 1.0.0-rc.9 resolution: "@rolldown/pluginutils@npm:1.0.0-rc.9" @@ -20081,22 +19961,6 @@ __metadata: languageName: node linkType: hard -"@vitejs/plugin-react@npm:5.1.4": - version: 5.1.4 - resolution: "@vitejs/plugin-react@npm:5.1.4" - dependencies: - "@babel/core": "npm:^7.29.0" - "@babel/plugin-transform-react-jsx-self": "npm:^7.27.1" - "@babel/plugin-transform-react-jsx-source": "npm:^7.27.1" - "@rolldown/pluginutils": "npm:1.0.0-rc.3" - "@types/babel__core": "npm:^7.20.5" - react-refresh: "npm:^0.18.0" - peerDependencies: - vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 - checksum: 10c0/dd7b8f40717ecd4a5ab18f467134ea8135f9a443359333d71e4114aeacfc8b679be9fd36dc12290d076c78883a02e708bfe1f0d93411c06c9659da0879b952e3 - languageName: node - linkType: hard - "@vitejs/plugin-react@npm:6.0.1": version: 6.0.1 resolution: "@vitejs/plugin-react@npm:6.0.1" @@ -34021,7 +33885,7 @@ __metadata: languageName: node linkType: hard -"lightningcss@npm:^1.31.1, lightningcss@npm:^1.32.0": +"lightningcss@npm:^1.32.0": version: 1.32.0 resolution: "lightningcss@npm:1.32.0" dependencies: @@ -39852,7 +39716,7 @@ __metadata: languageName: node linkType: hard -"react-refresh@npm:0.18.0, react-refresh@npm:^0.18.0": +"react-refresh@npm:0.18.0": version: 0.18.0 resolution: "react-refresh@npm:0.18.0" checksum: 10c0/34a262f7fd803433a534f50deb27a148112a81adcae440c7d1cbae7ef14d21ea8f2b3d783e858cb7698968183b77755a38b4d4b5b1d79b4f4689c2f6d358fff2 @@ -41165,64 +41029,6 @@ __metadata: languageName: node linkType: hard -"rolldown@npm:1.0.0-rc.8": - version: 1.0.0-rc.8 - resolution: "rolldown@npm:1.0.0-rc.8" - dependencies: - "@oxc-project/types": "npm:=0.115.0" - "@rolldown/binding-android-arm64": "npm:1.0.0-rc.8" - "@rolldown/binding-darwin-arm64": "npm:1.0.0-rc.8" - "@rolldown/binding-darwin-x64": "npm:1.0.0-rc.8" - "@rolldown/binding-freebsd-x64": "npm:1.0.0-rc.8" - "@rolldown/binding-linux-arm-gnueabihf": "npm:1.0.0-rc.8" - "@rolldown/binding-linux-arm64-gnu": "npm:1.0.0-rc.8" - "@rolldown/binding-linux-arm64-musl": "npm:1.0.0-rc.8" - "@rolldown/binding-linux-ppc64-gnu": "npm:1.0.0-rc.8" - "@rolldown/binding-linux-s390x-gnu": "npm:1.0.0-rc.8" - "@rolldown/binding-linux-x64-gnu": "npm:1.0.0-rc.8" - "@rolldown/binding-linux-x64-musl": "npm:1.0.0-rc.8" - "@rolldown/binding-openharmony-arm64": "npm:1.0.0-rc.8" - "@rolldown/binding-wasm32-wasi": "npm:1.0.0-rc.8" - "@rolldown/binding-win32-arm64-msvc": "npm:1.0.0-rc.8" - "@rolldown/binding-win32-x64-msvc": "npm:1.0.0-rc.8" - "@rolldown/pluginutils": "npm:1.0.0-rc.8" - dependenciesMeta: - "@rolldown/binding-android-arm64": - optional: true - "@rolldown/binding-darwin-arm64": - optional: true - "@rolldown/binding-darwin-x64": - optional: true - "@rolldown/binding-freebsd-x64": - optional: true - "@rolldown/binding-linux-arm-gnueabihf": - optional: true - "@rolldown/binding-linux-arm64-gnu": - optional: true - "@rolldown/binding-linux-arm64-musl": - optional: true - "@rolldown/binding-linux-ppc64-gnu": - optional: true - "@rolldown/binding-linux-s390x-gnu": - optional: true - "@rolldown/binding-linux-x64-gnu": - optional: true - "@rolldown/binding-linux-x64-musl": - optional: true - "@rolldown/binding-openharmony-arm64": - optional: true - "@rolldown/binding-wasm32-wasi": - optional: true - "@rolldown/binding-win32-arm64-msvc": - optional: true - "@rolldown/binding-win32-x64-msvc": - optional: true - bin: - rolldown: bin/cli.mjs - checksum: 10c0/791354cc0248e4cd9c303b311041995a99631f6136bc3f63b080d840caff2519fbdad0ed3594f4667d50101859a887cddd265a5b3795193714e8ec8f3005f261 - languageName: node - linkType: hard - "rolldown@npm:1.0.0-rc.9": version: 1.0.0-rc.9 resolution: "rolldown@npm:1.0.0-rc.9" @@ -45738,64 +45544,6 @@ __metadata: languageName: node linkType: hard -"vite@npm:8.0.0-beta.18": - version: 8.0.0-beta.18 - resolution: "vite@npm:8.0.0-beta.18" - dependencies: - "@oxc-project/runtime": "npm:0.115.0" - fsevents: "npm:~2.3.3" - lightningcss: "npm:^1.31.1" - picomatch: "npm:^4.0.3" - postcss: "npm:^8.5.6" - rolldown: "npm:1.0.0-rc.8" - tinyglobby: "npm:^0.2.15" - peerDependencies: - "@types/node": ^20.19.0 || >=22.12.0 - "@vitejs/devtools": ^0.0.0-alpha.31 - esbuild: ^0.27.0 - jiti: ">=1.21.0" - less: ^4.0.0 - sass: ^1.70.0 - sass-embedded: ^1.70.0 - stylus: ">=0.54.8" - sugarss: ^5.0.0 - terser: ^5.16.0 - tsx: ^4.8.1 - yaml: ^2.4.2 - dependenciesMeta: - fsevents: - optional: true - peerDependenciesMeta: - "@types/node": - optional: true - "@vitejs/devtools": - optional: true - esbuild: - optional: true - jiti: - optional: true - less: - optional: true - sass: - optional: true - sass-embedded: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - tsx: - optional: true - yaml: - optional: true - bin: - vite: bin/vite.js - checksum: 10c0/b96e38e49032ac4290c314fe0e13dc7e8e3cbad046b9242b069e090e63f01a6e3b90501d63cc921b52d06466e09deb50bd7f6f7c09b9fa9902107f560bcde64d - languageName: node - linkType: hard - "vite@npm:^5.0.0 || ^6.0.0 || ^7.0.0-0": version: 7.1.12 resolution: "vite@npm:7.1.12" From 63f796a461e75ec50ab982c7e750b791bccfb42b Mon Sep 17 00:00:00 2001 From: Chris Feijoo Date: Sun, 15 Mar 2026 16:49:57 +0100 Subject: [PATCH 16/20] Promote all warn-level oxlint rules to error Address PR review feedback: warn-level rules don't fail CI and create noise without enforcement. Promote all 8 warn rules to error in both petrinaut and petrinaut-website oxlint configs. Also use --report-unused-disable-directives-severity=error in lint scripts. Co-Authored-By: Claude Opus 4.6 (1M context) --- apps/petrinaut-website/.oxlintrc.json | 16 ++++++++-------- apps/petrinaut-website/package.json | 4 ++-- libs/@hashintel/petrinaut/.oxlintrc.json | 16 ++++++++-------- libs/@hashintel/petrinaut/package.json | 4 ++-- 4 files changed, 20 insertions(+), 20 deletions(-) diff --git a/apps/petrinaut-website/.oxlintrc.json b/apps/petrinaut-website/.oxlintrc.json index c5527a9d9ee..6b0f31fc04a 100644 --- a/apps/petrinaut-website/.oxlintrc.json +++ b/apps/petrinaut-website/.oxlintrc.json @@ -15,7 +15,7 @@ "default-param-last": "error", "eqeqeq": ["error", "always", { "null": "ignore" }], "guard-for-in": "error", - "no-alert": "warn", + "no-alert": "error", "no-cond-assign": ["error", "always"], "no-extend-native": "error", "no-loop-func": "error", @@ -45,7 +45,7 @@ ], "no-void": ["error", { "allowAsStatement": true }], - "func-names": "warn", + "func-names": "error", "no-bitwise": "error", "no-multi-assign": "error", @@ -61,19 +61,19 @@ "no-shadow": "error", "no-use-before-define": "error", - "import/no-named-as-default": "warn", - "import/no-named-as-default-member": "warn", + "import/no-named-as-default": "error", + "import/no-named-as-default-member": "error", "import/no-mutable-exports": "error", - "import/no-duplicates": "warn", + "import/no-duplicates": "error", "import/no-named-default": "error", "import/no-self-import": "error", - "import/no-cycle": "warn", + "import/no-cycle": "error", "react/jsx-pascal-case": ["error", { "allowAllCaps": true }], - "react/no-danger": "warn", + "react/no-danger": "error", "react/jsx-no-target-blank": ["error", { "enforceDynamicLinks": "always" }], "react/jsx-no-comment-textnodes": "error", - "react/no-array-index-key": "warn", + "react/no-array-index-key": "error", "react/button-has-type": [ "error", { "button": true, "submit": true, "reset": false } diff --git a/apps/petrinaut-website/package.json b/apps/petrinaut-website/package.json index 11cf875d297..71e2f4deba2 100644 --- a/apps/petrinaut-website/package.json +++ b/apps/petrinaut-website/package.json @@ -7,8 +7,8 @@ "build": "vite build", "dev": "vite", "lint:tsc": "tsgo --noEmit", - "lint:eslint": "oxlint .", - "fix:eslint": "oxlint --fix ." + "lint:eslint": "oxlint --report-unused-disable-directives-severity=error .", + "fix:eslint": "oxlint --fix --report-unused-disable-directives-severity=error ." }, "dependencies": { "@hashintel/petrinaut": "workspace:*", diff --git a/libs/@hashintel/petrinaut/.oxlintrc.json b/libs/@hashintel/petrinaut/.oxlintrc.json index 88d17a4fb38..5d4dc189253 100644 --- a/libs/@hashintel/petrinaut/.oxlintrc.json +++ b/libs/@hashintel/petrinaut/.oxlintrc.json @@ -15,7 +15,7 @@ "default-param-last": "error", "eqeqeq": ["error", "always", { "null": "ignore" }], "guard-for-in": "error", - "no-alert": "warn", + "no-alert": "error", "no-cond-assign": ["error", "always"], "no-extend-native": "error", "no-loop-func": "error", @@ -45,7 +45,7 @@ ], "no-void": ["error", { "allowAsStatement": true }], - "func-names": "warn", + "func-names": "error", "no-bitwise": "error", "no-multi-assign": "error", @@ -73,19 +73,19 @@ } ], - "import/no-named-as-default": "warn", - "import/no-named-as-default-member": "warn", + "import/no-named-as-default": "error", + "import/no-named-as-default-member": "error", "import/no-mutable-exports": "error", - "import/no-duplicates": "warn", + "import/no-duplicates": "error", "import/no-named-default": "error", "import/no-self-import": "error", - "import/no-cycle": "warn", + "import/no-cycle": "error", "react/jsx-pascal-case": ["error", { "allowAllCaps": true }], - "react/no-danger": "warn", + "react/no-danger": "error", "react/jsx-no-target-blank": ["error", { "enforceDynamicLinks": "always" }], "react/jsx-no-comment-textnodes": "error", - "react/no-array-index-key": "warn", + "react/no-array-index-key": "error", "react/button-has-type": [ "error", { "button": true, "submit": true, "reset": false } diff --git a/libs/@hashintel/petrinaut/package.json b/libs/@hashintel/petrinaut/package.json index e00fb38e701..5a0e1b0cee1 100644 --- a/libs/@hashintel/petrinaut/package.json +++ b/libs/@hashintel/petrinaut/package.json @@ -28,8 +28,8 @@ "build": "vite build", "dev": "storybook dev", "lint:tsc": "tsgo --noEmit", - "lint:eslint": "oxlint .", - "fix:eslint": "oxlint --fix .", + "lint:eslint": "oxlint --report-unused-disable-directives-severity=error .", + "fix:eslint": "oxlint --fix --report-unused-disable-directives-severity=error .", "prepublishOnly": "turbo run build", "test:unit": "vitest" }, From 6d6e3ce97984739dc3e001478d087efca9673e6c Mon Sep 17 00:00:00 2001 From: Chris Feijoo Date: Sun, 15 Mar 2026 16:51:02 +0100 Subject: [PATCH 17/20] Remove --report-unused-disable-directives-severity=error from fix:eslint --- apps/petrinaut-website/package.json | 2 +- libs/@hashintel/petrinaut/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/petrinaut-website/package.json b/apps/petrinaut-website/package.json index 71e2f4deba2..67db807034a 100644 --- a/apps/petrinaut-website/package.json +++ b/apps/petrinaut-website/package.json @@ -8,7 +8,7 @@ "dev": "vite", "lint:tsc": "tsgo --noEmit", "lint:eslint": "oxlint --report-unused-disable-directives-severity=error .", - "fix:eslint": "oxlint --fix --report-unused-disable-directives-severity=error ." + "fix:eslint": "oxlint --fix ." }, "dependencies": { "@hashintel/petrinaut": "workspace:*", diff --git a/libs/@hashintel/petrinaut/package.json b/libs/@hashintel/petrinaut/package.json index 5a0e1b0cee1..c565ff55019 100644 --- a/libs/@hashintel/petrinaut/package.json +++ b/libs/@hashintel/petrinaut/package.json @@ -29,7 +29,7 @@ "dev": "storybook dev", "lint:tsc": "tsgo --noEmit", "lint:eslint": "oxlint --report-unused-disable-directives-severity=error .", - "fix:eslint": "oxlint --fix --report-unused-disable-directives-severity=error .", + "fix:eslint": "oxlint --fix .", "prepublishOnly": "turbo run build", "test:unit": "vitest" }, From c84b3e55f0af3e215a1a848ad0890d0a979d0089 Mon Sep 17 00:00:00 2001 From: Chris Feijoo Date: Sun, 15 Mar 2026 16:59:07 +0100 Subject: [PATCH 18/20] Clean up unused eslint-disable directives and add missing oxlint rules - Add no-console, new-cap, no-new-func rules to oxlint config - Remove unused eslint-disable comments for rules that oxlint cannot enforce without type-aware linting (no-implied-eval, no-unsafe-call, no-unsafe-assignment, no-unnecessary-condition, no-misused-promises, label-has-associated-control) - Remove id-length disable comments (rule not needed) - Remove no-restricted-globals disables in workers (not triggered) - Simplify compile-user-code.ts and compile-visualizer.ts disables to only the functional no-new-func rule Co-Authored-By: Claude Opus 4.6 (1M context) --- libs/@hashintel/petrinaut/.oxlintrc.json | 3 +++ libs/@hashintel/petrinaut/src/lib/hsl-color.ts | 1 - .../petrinaut/src/lsp/worker/language-server.worker.ts | 1 - libs/@hashintel/petrinaut/src/playback/provider.tsx | 1 - .../petrinaut/src/simulation/simulator/compile-user-code.ts | 2 +- .../petrinaut/src/simulation/simulator/compile-visualizer.ts | 2 +- .../src/simulation/simulator/compute-possible-transition.ts | 1 - .../src/simulation/simulator/enumerate-weighted-markings.ts | 1 - .../petrinaut/src/simulation/worker/simulation.worker.ts | 1 - .../Editor/panels/BottomPanel/subviews/simulation-settings.tsx | 2 -- .../subviews/transition-results/subview.tsx | 1 - libs/@hashintel/petrinaut/src/views/SDCPN/sdcpn-view.tsx | 1 - 12 files changed, 5 insertions(+), 12 deletions(-) diff --git a/libs/@hashintel/petrinaut/.oxlintrc.json b/libs/@hashintel/petrinaut/.oxlintrc.json index 5d4dc189253..ba6f7280bd3 100644 --- a/libs/@hashintel/petrinaut/.oxlintrc.json +++ b/libs/@hashintel/petrinaut/.oxlintrc.json @@ -45,6 +45,9 @@ ], "no-void": ["error", { "allowAsStatement": true }], + "no-console": "error", + "new-cap": "error", + "no-new-func": "error", "func-names": "error", "no-bitwise": "error", "no-multi-assign": "error", diff --git a/libs/@hashintel/petrinaut/src/lib/hsl-color.ts b/libs/@hashintel/petrinaut/src/lib/hsl-color.ts index 89597ff82a4..8dc9959a131 100644 --- a/libs/@hashintel/petrinaut/src/lib/hsl-color.ts +++ b/libs/@hashintel/petrinaut/src/lib/hsl-color.ts @@ -1,4 +1,3 @@ -/* eslint-disable id-length */ /** * Utility for creating and manipulating HSL colors. * diff --git a/libs/@hashintel/petrinaut/src/lsp/worker/language-server.worker.ts b/libs/@hashintel/petrinaut/src/lsp/worker/language-server.worker.ts index abb584c388f..b955e7c45ed 100644 --- a/libs/@hashintel/petrinaut/src/lsp/worker/language-server.worker.ts +++ b/libs/@hashintel/petrinaut/src/lsp/worker/language-server.worker.ts @@ -1,4 +1,3 @@ -/* eslint-disable no-restricted-globals */ /** * Language Server WebWorker — runs TypeScript validation off the main thread. * diff --git a/libs/@hashintel/petrinaut/src/playback/provider.tsx b/libs/@hashintel/petrinaut/src/playback/provider.tsx index c66306e6666..e8369c442f9 100644 --- a/libs/@hashintel/petrinaut/src/playback/provider.tsx +++ b/libs/@hashintel/petrinaut/src/playback/provider.tsx @@ -1,4 +1,3 @@ -/* eslint-disable @typescript-eslint/no-misused-promises */ import { use, useEffect, useRef, useState } from "react"; import { useLatest } from "../hooks/use-latest"; diff --git a/libs/@hashintel/petrinaut/src/simulation/simulator/compile-user-code.ts b/libs/@hashintel/petrinaut/src/simulation/simulator/compile-user-code.ts index e4b13065f3f..95e8176cddb 100644 --- a/libs/@hashintel/petrinaut/src/simulation/simulator/compile-user-code.ts +++ b/libs/@hashintel/petrinaut/src/simulation/simulator/compile-user-code.ts @@ -87,7 +87,7 @@ export function compileUserCode( `; // Use Function constructor to create and execute the module - // eslint-disable-next-line @typescript-eslint/no-implied-eval, no-new-func, @typescript-eslint/no-unsafe-call + // eslint-disable-next-line no-new-func const compiledFunction = new Function(executableCode)() as ( ...args: T ) => unknown; diff --git a/libs/@hashintel/petrinaut/src/simulation/simulator/compile-visualizer.ts b/libs/@hashintel/petrinaut/src/simulation/simulator/compile-visualizer.ts index 95343083b88..43e9d3138ec 100644 --- a/libs/@hashintel/petrinaut/src/simulation/simulator/compile-visualizer.ts +++ b/libs/@hashintel/petrinaut/src/simulation/simulator/compile-visualizer.ts @@ -70,7 +70,7 @@ export function compileVisualizer(code: string): VisualizerComponent { // Use Function constructor to create and execute the module // We need to provide React in scope for React.createElement calls - // eslint-disable-next-line @typescript-eslint/no-implied-eval, no-new-func, @typescript-eslint/no-unsafe-call + // eslint-disable-next-line no-new-func const compiledComponent = new Function("React", executableCode)( // Provide a minimal React object with createElement { createElement }, diff --git a/libs/@hashintel/petrinaut/src/simulation/simulator/compute-possible-transition.ts b/libs/@hashintel/petrinaut/src/simulation/simulator/compute-possible-transition.ts index 2a2a12840de..9a0db6fab32 100644 --- a/libs/@hashintel/petrinaut/src/simulation/simulator/compute-possible-transition.ts +++ b/libs/@hashintel/petrinaut/src/simulation/simulator/compute-possible-transition.ts @@ -281,7 +281,6 @@ export function computePossibleTransition( return { // Map from place ID to set of token indices to remove // TODO: Need to provide better typing here, to not let TS infer to any[] - // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment remove: Object.fromEntries([ ...inputPlacesWithZeroDimensions.map((inputPlace) => { return [inputPlace.placeId, inputPlace.weight]; diff --git a/libs/@hashintel/petrinaut/src/simulation/simulator/enumerate-weighted-markings.ts b/libs/@hashintel/petrinaut/src/simulation/simulator/enumerate-weighted-markings.ts index 8f8db4566fa..9df9f6ae9c4 100644 --- a/libs/@hashintel/petrinaut/src/simulation/simulator/enumerate-weighted-markings.ts +++ b/libs/@hashintel/petrinaut/src/simulation/simulator/enumerate-weighted-markings.ts @@ -1,4 +1,3 @@ -/* eslint-disable id-length */ type PlaceSpec = { count: number; // number of tokens in this place weight: number; // how many tokens to pick diff --git a/libs/@hashintel/petrinaut/src/simulation/worker/simulation.worker.ts b/libs/@hashintel/petrinaut/src/simulation/worker/simulation.worker.ts index 0c30c45b1ad..b8bb767faa5 100644 --- a/libs/@hashintel/petrinaut/src/simulation/worker/simulation.worker.ts +++ b/libs/@hashintel/petrinaut/src/simulation/worker/simulation.worker.ts @@ -1,4 +1,3 @@ -/* eslint-disable no-restricted-globals */ /** * Simulation WebWorker * diff --git a/libs/@hashintel/petrinaut/src/views/Editor/panels/BottomPanel/subviews/simulation-settings.tsx b/libs/@hashintel/petrinaut/src/views/Editor/panels/BottomPanel/subviews/simulation-settings.tsx index c3a69e5d369..5093adcf144 100644 --- a/libs/@hashintel/petrinaut/src/views/Editor/panels/BottomPanel/subviews/simulation-settings.tsx +++ b/libs/@hashintel/petrinaut/src/views/Editor/panels/BottomPanel/subviews/simulation-settings.tsx @@ -211,7 +211,6 @@ const SimulationSettingsContent: React.FC = () => {
{/* Time Step Input */}
- {/* eslint-disable-next-line jsx-a11y/label-has-associated-control */}
{/* ODE Solver Method Select */}
- {/* eslint-disable-next-line jsx-a11y/label-has-associated-control */} diff --git a/libs/@hashintel/petrinaut/src/views/Editor/panels/PropertiesPanel/transition-properties/subviews/transition-results/subview.tsx b/libs/@hashintel/petrinaut/src/views/Editor/panels/PropertiesPanel/transition-properties/subviews/transition-results/subview.tsx index 0c6fe1540d5..98289d5d71f 100644 --- a/libs/@hashintel/petrinaut/src/views/Editor/panels/PropertiesPanel/transition-properties/subviews/transition-results/subview.tsx +++ b/libs/@hashintel/petrinaut/src/views/Editor/panels/PropertiesPanel/transition-properties/subviews/transition-results/subview.tsx @@ -1,4 +1,3 @@ -/* eslint-disable id-length */ import { css } from "@hashintel/ds-helpers/css"; import { use } from "react"; import { TbDotsVertical, TbSparkles } from "react-icons/tb"; diff --git a/libs/@hashintel/petrinaut/src/views/SDCPN/sdcpn-view.tsx b/libs/@hashintel/petrinaut/src/views/SDCPN/sdcpn-view.tsx index 6088c7e43d0..9cbf9c64347 100644 --- a/libs/@hashintel/petrinaut/src/views/SDCPN/sdcpn-view.tsx +++ b/libs/@hashintel/petrinaut/src/views/SDCPN/sdcpn-view.tsx @@ -199,7 +199,6 @@ export const SDCPNView: React.FC = () => { } // Only create nodes in add modes - // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition if (editionMode !== "add-place" && editionMode !== "add-transition") { return; } From f171147e9fcd3c49785409c61e18a5543edb2f1e Mon Sep 17 00:00:00 2001 From: Chris Feijoo Date: Sun, 15 Mar 2026 18:15:47 +0100 Subject: [PATCH 19/20] Enable oxlint type-aware linting for Petrinaut Add --type-aware flag and oxlint-tsgolint package to enable TypeScript type-informed lint rules. Add type-aware rules: no-implied-eval, no-misused-promises, no-unnecessary-condition, no-unsafe-assignment, no-unsafe-call, and label-has-associated-control. Restore eslint-disable comments for code that intentionally violates these rules (Function constructor usage, async requestAnimationFrame callbacks, etc). Co-Authored-By: Claude Opus 4.6 (1M context) --- apps/petrinaut-website/.oxlintrc.json | 9 +++ apps/petrinaut-website/package.json | 5 +- libs/@hashintel/petrinaut/.oxlintrc.json | 6 ++ libs/@hashintel/petrinaut/package.json | 5 +- .../petrinaut/src/playback/provider.tsx | 1 + .../simulation/simulator/compile-user-code.ts | 2 +- .../simulator/compile-visualizer.ts | 2 +- .../simulator/compute-possible-transition.ts | 1 + .../SDCPN/components/viewport-controls.tsx | 2 + .../petrinaut/src/views/SDCPN/sdcpn-view.tsx | 1 + yarn.lock | 73 +++++++++++++++++++ 11 files changed, 101 insertions(+), 6 deletions(-) diff --git a/apps/petrinaut-website/.oxlintrc.json b/apps/petrinaut-website/.oxlintrc.json index 6b0f31fc04a..33073c8c929 100644 --- a/apps/petrinaut-website/.oxlintrc.json +++ b/apps/petrinaut-website/.oxlintrc.json @@ -45,6 +45,9 @@ ], "no-void": ["error", { "allowAsStatement": true }], + "no-console": "error", + "new-cap": "error", + "no-new-func": "error", "func-names": "error", "no-bitwise": "error", "no-multi-assign": "error", @@ -88,6 +91,7 @@ "error", { "tags": [], "roles": ["tabpanel"] } ], + "jsx-a11y/label-has-associated-control": "error", "jsx-a11y/no-static-element-interactions": [ "error", { @@ -113,6 +117,11 @@ "@typescript-eslint/no-explicit-any": "error", "@typescript-eslint/no-require-imports": "error", "@typescript-eslint/no-unnecessary-type-constraint": "error", + "@typescript-eslint/no-implied-eval": "error", + "@typescript-eslint/no-misused-promises": "error", + "@typescript-eslint/no-unnecessary-condition": "error", + "@typescript-eslint/no-unsafe-assignment": "error", + "@typescript-eslint/no-unsafe-call": "error", "@typescript-eslint/no-unsafe-function-type": "error", "unicorn/no-new-array": "off", diff --git a/apps/petrinaut-website/package.json b/apps/petrinaut-website/package.json index 67db807034a..65b78ea7f3b 100644 --- a/apps/petrinaut-website/package.json +++ b/apps/petrinaut-website/package.json @@ -7,8 +7,8 @@ "build": "vite build", "dev": "vite", "lint:tsc": "tsgo --noEmit", - "lint:eslint": "oxlint --report-unused-disable-directives-severity=error .", - "fix:eslint": "oxlint --fix ." + "lint:eslint": "oxlint --type-aware --report-unused-disable-directives-severity=error .", + "fix:eslint": "oxlint --fix --type-aware --report-unused-disable-directives-severity=error ." }, "dependencies": { "@hashintel/petrinaut": "workspace:*", @@ -26,6 +26,7 @@ "@vitejs/plugin-react": "6.0.1", "babel-plugin-react-compiler": "1.0.0", "oxlint": "1.55.0", + "oxlint-tsgolint": "0.17.0", "vite": "8.0.0" } } diff --git a/libs/@hashintel/petrinaut/.oxlintrc.json b/libs/@hashintel/petrinaut/.oxlintrc.json index ba6f7280bd3..1f31575fedf 100644 --- a/libs/@hashintel/petrinaut/.oxlintrc.json +++ b/libs/@hashintel/petrinaut/.oxlintrc.json @@ -103,6 +103,7 @@ "error", { "tags": [], "roles": ["tabpanel"] } ], + "jsx-a11y/label-has-associated-control": "error", "jsx-a11y/no-static-element-interactions": [ "error", { @@ -128,6 +129,11 @@ "@typescript-eslint/no-explicit-any": "error", "@typescript-eslint/no-require-imports": "error", "@typescript-eslint/no-unnecessary-type-constraint": "error", + "@typescript-eslint/no-implied-eval": "error", + "@typescript-eslint/no-misused-promises": "error", + "@typescript-eslint/no-unnecessary-condition": "error", + "@typescript-eslint/no-unsafe-assignment": "error", + "@typescript-eslint/no-unsafe-call": "error", "@typescript-eslint/no-unsafe-function-type": "error", "unicorn/no-new-array": "off", diff --git a/libs/@hashintel/petrinaut/package.json b/libs/@hashintel/petrinaut/package.json index c565ff55019..a3db7baa4f3 100644 --- a/libs/@hashintel/petrinaut/package.json +++ b/libs/@hashintel/petrinaut/package.json @@ -28,8 +28,8 @@ "build": "vite build", "dev": "storybook dev", "lint:tsc": "tsgo --noEmit", - "lint:eslint": "oxlint --report-unused-disable-directives-severity=error .", - "fix:eslint": "oxlint --fix .", + "lint:eslint": "oxlint --type-aware --report-unused-disable-directives-severity=error .", + "fix:eslint": "oxlint --fix --type-aware --report-unused-disable-directives-severity=error .", "prepublishOnly": "turbo run build", "test:unit": "vitest" }, @@ -67,6 +67,7 @@ "babel-plugin-react-compiler": "1.0.0", "jsdom": "24.1.3", "oxlint": "1.55.0", + "oxlint-tsgolint": "0.17.0", "react": "19.2.3", "react-dom": "19.2.3", "rolldown": "1.0.0-rc.9", diff --git a/libs/@hashintel/petrinaut/src/playback/provider.tsx b/libs/@hashintel/petrinaut/src/playback/provider.tsx index e8369c442f9..c66306e6666 100644 --- a/libs/@hashintel/petrinaut/src/playback/provider.tsx +++ b/libs/@hashintel/petrinaut/src/playback/provider.tsx @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-misused-promises */ import { use, useEffect, useRef, useState } from "react"; import { useLatest } from "../hooks/use-latest"; diff --git a/libs/@hashintel/petrinaut/src/simulation/simulator/compile-user-code.ts b/libs/@hashintel/petrinaut/src/simulation/simulator/compile-user-code.ts index 95e8176cddb..2cb553acda6 100644 --- a/libs/@hashintel/petrinaut/src/simulation/simulator/compile-user-code.ts +++ b/libs/@hashintel/petrinaut/src/simulation/simulator/compile-user-code.ts @@ -87,7 +87,7 @@ export function compileUserCode( `; // Use Function constructor to create and execute the module - // eslint-disable-next-line no-new-func + // eslint-disable-next-line no-new-func, @typescript-eslint/no-implied-eval, @typescript-eslint/no-unsafe-call const compiledFunction = new Function(executableCode)() as ( ...args: T ) => unknown; diff --git a/libs/@hashintel/petrinaut/src/simulation/simulator/compile-visualizer.ts b/libs/@hashintel/petrinaut/src/simulation/simulator/compile-visualizer.ts index 43e9d3138ec..d761d6b83cb 100644 --- a/libs/@hashintel/petrinaut/src/simulation/simulator/compile-visualizer.ts +++ b/libs/@hashintel/petrinaut/src/simulation/simulator/compile-visualizer.ts @@ -70,7 +70,7 @@ export function compileVisualizer(code: string): VisualizerComponent { // Use Function constructor to create and execute the module // We need to provide React in scope for React.createElement calls - // eslint-disable-next-line no-new-func + // eslint-disable-next-line no-new-func, @typescript-eslint/no-implied-eval, @typescript-eslint/no-unsafe-call const compiledComponent = new Function("React", executableCode)( // Provide a minimal React object with createElement { createElement }, diff --git a/libs/@hashintel/petrinaut/src/simulation/simulator/compute-possible-transition.ts b/libs/@hashintel/petrinaut/src/simulation/simulator/compute-possible-transition.ts index 9a0db6fab32..2a2a12840de 100644 --- a/libs/@hashintel/petrinaut/src/simulation/simulator/compute-possible-transition.ts +++ b/libs/@hashintel/petrinaut/src/simulation/simulator/compute-possible-transition.ts @@ -281,6 +281,7 @@ export function computePossibleTransition( return { // Map from place ID to set of token indices to remove // TODO: Need to provide better typing here, to not let TS infer to any[] + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment remove: Object.fromEntries([ ...inputPlacesWithZeroDimensions.map((inputPlace) => { return [inputPlace.placeId, inputPlace.weight]; diff --git a/libs/@hashintel/petrinaut/src/views/SDCPN/components/viewport-controls.tsx b/libs/@hashintel/petrinaut/src/views/SDCPN/components/viewport-controls.tsx index e079354dcd8..478e80d0ec5 100644 --- a/libs/@hashintel/petrinaut/src/views/SDCPN/components/viewport-controls.tsx +++ b/libs/@hashintel/petrinaut/src/views/SDCPN/components/viewport-controls.tsx @@ -64,6 +64,7 @@ export const ViewportControls: React.FC = () => { variant="outline" aria-label="Zoom in" tooltip="Zoom in" + // eslint-disable-next-line @typescript-eslint/no-misused-promises onClick={() => zoomIn()} > @@ -73,6 +74,7 @@ export const ViewportControls: React.FC = () => { variant="outline" aria-label="Zoom out" tooltip="Zoom out" + // eslint-disable-next-line @typescript-eslint/no-misused-promises onClick={() => zoomOut()} > diff --git a/libs/@hashintel/petrinaut/src/views/SDCPN/sdcpn-view.tsx b/libs/@hashintel/petrinaut/src/views/SDCPN/sdcpn-view.tsx index 9cbf9c64347..6088c7e43d0 100644 --- a/libs/@hashintel/petrinaut/src/views/SDCPN/sdcpn-view.tsx +++ b/libs/@hashintel/petrinaut/src/views/SDCPN/sdcpn-view.tsx @@ -199,6 +199,7 @@ export const SDCPNView: React.FC = () => { } // Only create nodes in add modes + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition if (editionMode !== "add-place" && editionMode !== "add-transition") { return; } diff --git a/yarn.lock b/yarn.lock index 93618265ee3..6ad7ca72123 100644 --- a/yarn.lock +++ b/yarn.lock @@ -781,6 +781,7 @@ __metadata: babel-plugin-react-compiler: "npm:1.0.0" immer: "npm:10.1.3" oxlint: "npm:1.55.0" + oxlint-tsgolint: "npm:0.17.0" react: "npm:19.2.3" react-dom: "npm:19.2.3" vite: "npm:8.0.0" @@ -7965,6 +7966,7 @@ __metadata: jsdom: "npm:24.1.3" monaco-editor: "npm:0.55.1" oxlint: "npm:1.55.0" + oxlint-tsgolint: "npm:0.17.0" react: "npm:19.2.3" react-dom: "npm:19.2.3" react-icons: "npm:5.5.0" @@ -11858,6 +11860,48 @@ __metadata: languageName: node linkType: hard +"@oxlint-tsgolint/darwin-arm64@npm:0.17.0": + version: 0.17.0 + resolution: "@oxlint-tsgolint/darwin-arm64@npm:0.17.0" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@oxlint-tsgolint/darwin-x64@npm:0.17.0": + version: 0.17.0 + resolution: "@oxlint-tsgolint/darwin-x64@npm:0.17.0" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@oxlint-tsgolint/linux-arm64@npm:0.17.0": + version: 0.17.0 + resolution: "@oxlint-tsgolint/linux-arm64@npm:0.17.0" + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + +"@oxlint-tsgolint/linux-x64@npm:0.17.0": + version: 0.17.0 + resolution: "@oxlint-tsgolint/linux-x64@npm:0.17.0" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + +"@oxlint-tsgolint/win32-arm64@npm:0.17.0": + version: 0.17.0 + resolution: "@oxlint-tsgolint/win32-arm64@npm:0.17.0" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@oxlint-tsgolint/win32-x64@npm:0.17.0": + version: 0.17.0 + resolution: "@oxlint-tsgolint/win32-x64@npm:0.17.0" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + "@oxlint/binding-android-arm-eabi@npm:1.55.0": version: 1.55.0 resolution: "@oxlint/binding-android-arm-eabi@npm:1.55.0" @@ -37295,6 +37339,35 @@ __metadata: languageName: node linkType: hard +"oxlint-tsgolint@npm:0.17.0": + version: 0.17.0 + resolution: "oxlint-tsgolint@npm:0.17.0" + dependencies: + "@oxlint-tsgolint/darwin-arm64": "npm:0.17.0" + "@oxlint-tsgolint/darwin-x64": "npm:0.17.0" + "@oxlint-tsgolint/linux-arm64": "npm:0.17.0" + "@oxlint-tsgolint/linux-x64": "npm:0.17.0" + "@oxlint-tsgolint/win32-arm64": "npm:0.17.0" + "@oxlint-tsgolint/win32-x64": "npm:0.17.0" + dependenciesMeta: + "@oxlint-tsgolint/darwin-arm64": + optional: true + "@oxlint-tsgolint/darwin-x64": + optional: true + "@oxlint-tsgolint/linux-arm64": + optional: true + "@oxlint-tsgolint/linux-x64": + optional: true + "@oxlint-tsgolint/win32-arm64": + optional: true + "@oxlint-tsgolint/win32-x64": + optional: true + bin: + tsgolint: bin/tsgolint.js + checksum: 10c0/8a01a5bfad70a66fea3ca94d38aad8af1fdcc8ed7a2ca7b24d1a975de906c3d2bc7b4616c83411141429da4b13d72b26b02a3526d8d34933a0b2839d8aa7b66a + languageName: node + linkType: hard + "oxlint@npm:1.55.0": version: 1.55.0 resolution: "oxlint@npm:1.55.0" From 6cecb10d9dddc99629e4e0ac5bdc8b69d59ee2dc Mon Sep 17 00:00:00 2001 From: Chris Feijoo Date: Sun, 15 Mar 2026 19:00:44 +0100 Subject: [PATCH 20/20] Add web-worker to hash-frontend for elkjs compatibility elkjs/lib/main.js calls require.resolve('web-worker') inside a try/catch, but Webpack statically analyzes it and fails if the package is not resolvable. Co-Authored-By: Claude Opus 4.6 (1M context) --- apps/hash-frontend/package.json | 3 ++- libs/@hashintel/petrinaut/CLAUDE.md | 2 +- libs/@hashintel/petrinaut/package.json | 3 ++- yarn.lock | 9 +++++++++ 4 files changed, 14 insertions(+), 3 deletions(-) diff --git a/apps/hash-frontend/package.json b/apps/hash-frontend/package.json index c35a443e752..46dc6fa419d 100644 --- a/apps/hash-frontend/package.json +++ b/apps/hash-frontend/package.json @@ -127,7 +127,8 @@ "signia-react": "0.1.5", "url-regex-safe": "4.0.0", "use-font-face-observer": "1.3.0", - "uuid": "13.0.0" + "uuid": "13.0.0", + "web-worker": "1.4.1" }, "devDependencies": { "@graphql-codegen/cli": "^5.0.3", diff --git a/libs/@hashintel/petrinaut/CLAUDE.md b/libs/@hashintel/petrinaut/CLAUDE.md index 10b8149757c..53783a85746 100644 --- a/libs/@hashintel/petrinaut/CLAUDE.md +++ b/libs/@hashintel/petrinaut/CLAUDE.md @@ -26,7 +26,7 @@ function useMyHook() { } ``` -The compiler runs with `panicThreshold: "CRITICAL_ERRORS"` — the build fails if it encounters critical errors not opted out via `"use no memo"`. +The compiler runs with `panicThreshold: "critical_errors"` — the build fails if it encounters critical errors not opted out via `"use no memo"`. ## Commands diff --git a/libs/@hashintel/petrinaut/package.json b/libs/@hashintel/petrinaut/package.json index a3db7baa4f3..af121e1142d 100644 --- a/libs/@hashintel/petrinaut/package.json +++ b/libs/@hashintel/petrinaut/package.json @@ -49,7 +49,8 @@ "react-resizable-panels": "4.6.5", "typescript": "5.9.3", "uuid": "13.0.0", - "vscode-languageserver-types": "3.17.5" + "vscode-languageserver-types": "3.17.5", + "web-worker": "1.4.1" }, "devDependencies": { "@hashintel/ds-helpers": "workspace:*", diff --git a/yarn.lock b/yarn.lock index 6ad7ca72123..7fc32e3440a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -661,6 +661,7 @@ __metadata: use-font-face-observer: "npm:1.3.0" uuid: "npm:13.0.0" wait-on: "npm:9.0.1" + web-worker: "npm:1.4.1" webpack: "npm:5.104.1" languageName: unknown linkType: soft @@ -7979,6 +7980,7 @@ __metadata: vite: "npm:8.0.0" vitest: "npm:4.1.0" vscode-languageserver-types: "npm:3.17.5" + web-worker: "npm:1.4.1" peerDependencies: "@hashintel/ds-components": "workspace:^" "@hashintel/ds-helpers": "workspace:^" @@ -45972,6 +45974,13 @@ __metadata: languageName: node linkType: hard +"web-worker@npm:1.4.1": + version: 1.4.1 + resolution: "web-worker@npm:1.4.1" + checksum: 10c0/8b5e6099692ad83e0bcd72595e9bbec9c5cc0c910215dce21379050c9a96d9678f651c161e58f29d5ecf62d50bbd897543b4fa1bcea83cd273dbf219fdda1089 + languageName: node + linkType: hard + "webextension-polyfill@npm:0.12.0": version: 0.12.0 resolution: "webextension-polyfill@npm:0.12.0"