test: vite-plus prerelease 0.0.0-commit.9855245a469b178066c25a5d45c971c130565d89 - #3
Closed
wan9chi wants to merge 324 commits into
Closed
Conversation
* fix(rules): tighten React 19 and JSX precision Correct stale React 19 guidance and preserve intentional typed JSX slots and renamed React hook imports. * feat(rules): add SSR and hydration diagnostics Gate hydration checks on server-rendering capability and detect browser-global branches that diverge before hydration. * fix(rules): expand effect cleanup lifecycle coverage Correlate retained resources with abort, subscription, observer, timer, listener, and React Native cleanup paths. * fix(rules): recognize guarded SSR reads Follow availability guards through compound predicates and synchronous render callbacks while retaining the original global identity. * fix(rules): tighten logical hydration branches Trace browser predicates through logical chains while ignoring values React renders as empty. * fix(rules): recognize equivalent SSR guards Accept OR short-circuit availability checks and transparent wrappers around safe typeof probes. * fix(rules): close SSR guard edge cases Respect interaction-gated rendering, nested else-if returns, and document-based browser availability guards. * fix(rules): require correlated cleanup Stop treating arbitrary cleanup-body calls as proof that every acquired resource was released. * fix(rules): resolve destructured abort signals Preserve object-property identity through destructuring so aliased abort signals correlate with their controller cleanup. * fix(rules): recognize typed browser guards Treat object/function typeof checks as availability guards when they distinguish browser and server runtimes. * fix(rules): reject undefined cleanup returns Keep explicit undefined effect returns from satisfying retained-resource cleanup requirements. * fix(rules): recognize mounted early returns Reuse the client-only early-return proof across SSR diagnostics so post-hydration browser reads stay silent. * fix(rules): register SSR rules for cross-file caching Ensure manifest-dependent hydration diagnostics cannot be replayed from stale per-file cache entries. * fix(rules): scan past hydration setup statements Keep detecting server-only early returns when setup code appears before the client render. * fix(rules): inspect all reachable hydration returns Detect mismatches in later else-if branches while preserving generated-image and unreachable-return exemptions. * fix(rules): preserve logical hydration semantics Follow nested AND branches without treating ambiguous OR conditions as browser-only render gates. * fix(rules): recognize synchronous bound releases Use correlated release verbs so subscriptions removed during the effect run are not reported as leaks. * fix(rules): preserve SSR branch structure Compare mirrored return trees without cross-product false positives and share exhaustive early-exit analysis across SSR rules. * fix(rules): resolve abort options aliases Follow const options bags so AbortController cleanup remains correlated when listener options are passed by identifier. * fix(rules): correlate invoked subscription disposers Recognize disposer identifiers in returned cleanups and synchronous effect teardown paths. * fix(rules): recognize globalThis SSR guards Treat typeof globalThis browser-property checks as availability proof for the corresponding guarded read. * fix(rules): resolve aliased cleanup functions Follow const initializer chains before inspecting returned cleanup function bodies. * fix(rules): compare compound hydration guards Preserve mirrored return-tree equivalence for unary, logical, and binary nested conditions. * fix(rules): detect globalThis hydration branches Recognize globalThis.window and globalThis.document in browser-dependent render predicates. * fix(rules): preserve precision through static aliases Resolve only proven React bindings and component contracts so wrapper and shadowing syntax cannot hide or invent diagnostics. * fix(rules): require reachable cleanup paths Correlate effect cleanup across actual control-flow paths and reachable handlers so unrelated or impossible teardown cannot hide retained resources. * fix(rules): harden SSR hydration precision Require binding-backed client gates, preserve structural mismatch reports, and activate SSR diagnostics for Vite projects only when server-runtime dependencies provide concrete evidence. * fix(rules): resolve immutable React namespace aliases * fix(rules): analyze compound hydration predicates Preserve browser-test polarity through logical conditions while ignoring branches made invariant by static or complementary operands. * fix(rules): resolve stable cleanup helpers Follow unreassigned cleanup aliases and local helper calls without trusting mutable or unrelated resource paths. * fix(rules): correlate synchronous cleanup helpers Preserve strict resource matching while recognizing cleanup established by one proven synchronous helper path. * fix(rules): preserve logical hydration blockers Evaluate the complete logical JSX guard so static operands cannot produce unreachable hydration diagnostics. * fix(rules): analyze inline memoized JSX handlers * fix(rules): track mapped timer collection provenance * fix(rules): prove initial hydration gates Evaluate lazy and immutable state initializers conservatively, and honor both AND and OR short-circuit paths during initial render. * fix(rules): name the cleanup effect hook Report the actual effect hook so useInsertionEffect diagnostics stay actionable. * fix(rules): scope nested availability exits Honor server exits only within the synchronous render function that contains each browser read.
Correlate returned useSyncExternalStore disposers so retained subscribe callbacks do not report leaks when every path releases the exact resource.
* fix(rules): trace project helper value provenance Conservatively summarize one-hop project helpers so derived-state rules catch pure copies without treating ambiguous or external values as render-known. * fix(rules): preserve local helper provenance
* fix(rules): refine exhaustive dependency identities * fix(rules): accept stable object ref fallbacks * fix(rules): merge stable identity branches
* feat(rules): detect ref mutations during render * fix(rules): narrow lazy ref guard typing * fix(rules): trace nested lazy ref guards * fix(rules): unwrap typed ref initializers * fix(rules): unwrap ref mutation receivers
* feat(rules): detect prop callbacks during render * fix(rules): trace concise render callbacks * fix(rules): preserve iterator callback results * fix(rules): preserve render callback consumers
…o#1139) * fix(exhaustive-deps): allow converging every-commit updates * test(fuzz): identify exhaustive-deps seed * fix(exhaustive-deps): trace fresh compared aliases
* fix(client): exclude session storage versioning * test(fuzz): identify session storage seed
* fix(security): allow product API-key records * test(fuzz): identify API-key record seed
* fix(performance): allow bounded map-filter pipelines * test(fuzz): identify bounded pipeline seed
* fix(rerender-state): trace render-time map merges * test(fuzz): identify render merge seed
* fix(no-derived-state): trace values through refs * fix(no-derived-state): handle ref assignment shapes
* fix(jsx-key): inspect named iterator callbacks * fix(jsx-key): preserve named spread exemption
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* perf: reduce cold scan startup and add V8 profiling Add repeatable CPU and heap profiling so cold-run bottlenecks can be measured, then remove profile-proven startup, traversal, and security-scan overhead. * perf: add deterministic stress benchmark Exercise cold scans with reproducible diagnostics and remove redundant visitor-map allocations so regressions are measurable and behavior stays hash-verifiable. * fix(tests): normalize benchmark paths cross-platform Resolve the absolute fixture path through Node so the harness expectation matches Windows path semantics. * perf: avoid effect analysis parent traversal Reuse Oxc visitor keys with a parent-safe fallback so effect scope analysis no longer strips and restores every AST parent reference. * perf: reduce repeated semantic traversal Reuse host visitors and shared analysis caches to avoid redundant cold-scan AST passes while preserving diagnostic parity. * fix: harden performance regression coverage * fix(perf): support profiling on Node 20 * fix(plugin): skip CFGs for bodyless functions * fix: harden profiling and semantic compatibility Prevent benchmark artifacts and host differences from corrupting comparisons, while preserving host AST and React Compiler compatibility across optimized scan paths. * fix(plugin): preserve rule correctness in fast scan paths Keep security prefilters comment-tolerant and resolve React HOC wrappers by binding provenance so scan optimizations cannot hide valid diagnostics. * fix: address review findings and consolidate duplicated code - wrapWithSemanticContext copies the rule's visitors instead of mutating a possibly shared object; walkAst regains its null-root guard - no-multi-comp HOC identity accepts React-compat runtimes via REACT_RUNTIME_MODULE_SOURCES (now incl. @wordpress/element) across ESM, require(), and TS import-equals, with regression coverage in both directions - shared traversal core (forEachChildNode) replaces the walkChildren and containsJsx copies; isImportedFromReact deduped into is-react-api-call - performance harness consolidated (27 -> 22 files): shared commander options, shared profile-frame accumulation, record shape guards, dead BenchmarkSample.profileDirectory removed - CLI-spawning harness tests skip without a built dist; dead and tautological test assertions removed Net -282 LOC against the branch head. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * fix(plugin): capture the Program root for every rule Rules can reach context.scopes through shared helpers and factories (createDeprecatedReactImportRule resolves namespace aliases via resolveConstIdentifierAlias), so the codegen'd requiresSemanticContext flag — a regex over the rule's own file — silently left factory-based rules on stub scope analyses: no-react-dom-deprecated-apis and no-react19-deprecated-apis stopped reporting namespace usages through the host wrapper. Delete the flag and its regex detector entirely and install the root-capture Program visitor on every rule. The analyses stay lazy and memoized per Program, so rules that never read them still pay only one call per rule per file, and no future helper-routed consumer can be missed. Regression test runs the real host-wrapped rule and fails against the gated wrapper. Fixes cursor bugbot review finding on PR millionco#1114. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * fix(scripts): reject cyclic heap-profile node graphs during collection collectNodes flattened the parsed tree with no visited guard, so a cyclic or shared-node object graph would loop before reaching the duplicate-ID check. Unreachable through analyzeHeapProfiles (JSON.parse output is always a strict tree), but guard and throw like the CPU analyzer so a synthetic graph fails deterministically. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> --------- Co-authored-by: Rayhan Noufal Arayilakath <me@rayhanadev.com> Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix: stabilize lifecycle state diagnostics * fix: preserve lifecycle guard wrappers
* fix: allow primitive display list keys * fix(rules): preserve opaque destructured list content * fix(rules): retain stateful list attributes
* fix(rules): allow large text virtualization guards * fix(rules): normalize virtualization guards
* fix(security): trace dangerous HTML provenance * fix(security): respect scope in HTML provenance
* feat(core): detect Zustand version capabilities * docs(rules): research Zustand rule portfolio * refactor(plugin): centralize Zustand provenance * fix(rules): share precise Zustand store shape resolution * fix(rules): resolve split curried Zustand factories
* feat(rules): detect unstable Zustand selector results * fix(rules): tighten Zustand selector provenance * fix(rules): gate fresh Zustand selectors to v5 * fix(rules): harden Zustand selector gating * fix(rule): respect Zustand v5 equality APIs * fix(rule): harden Zustand selector analysis * fix(rule): prove Zustand selector collection shapes * test(rule): cover split curried Zustand stores * fix(rule): classify Object collection helpers
* feat(plugin): detect whole Zustand subscriptions * fix(rule): cover traditional Zustand stores * fix(rule): detect imported Zustand store creators
* feat(plugin): detect eager Zustand get calls * fix(rule): cover eager async Zustand reads * fix(rule): model Zustand async suspension paths * fix(rule): follow eager Zustand helper calls
* feat(plugin): detect Zustand state mutation * fix(rule): follow Zustand snapshot branches * fix(rule): skip imperative Zustand caches * fix(rule): honor Zustand replacement uncertainty * fix(rule): scope Zustand snapshot notifiers * fix(rule): follow conditional Zustand notifiers * fix(rule): track nested Zustand snapshot paths * fix(rule): analyze Zustand setState updaters * fix(rule): preserve Zustand notifier provenance * fix(rule): respect Zustand rebind branches * fix(rule): match nested Zustand branches * fix(rule): close Zustand control-flow gaps * fix(rule): order Zustand notifiers * fix(rule): gate conditional Zustand notifiers * fix(rule): track nested Zustand alias spreads * fix(rule): connect bound Zustand updater reads * fix(rule): preserve nested Zustand notifier paths * fix(rule): gate Immer store updaters * fix(rule): prove Zustand collection mutations * fix(rule): order nested Zustand notifications
* NEW_RULES: Reapply rule analysis foundation Reapply the complete reviewed NEW_RULES stack on top of current main after the rollback. * fix(rules): harden new diagnostics against false positives * fix(rules): preserve dynamic context providers * fix(core): resolve styled-components workspace versions * fix(rules): harden new diagnostics after deep audit
…ostics (millionco#1337) * feat(rules): add 10 motion, accessibility, and design lint rules Derived from a cross-resource design reference (every principle from the design knowledge base), deduped against the full existing rule inventory. Motion: extend no-transition-all to the Tailwind `transition-all` class (was inline-only) and add no-tailwind-layout-transition for arbitrary `transition-[<layout-prop>]`. Accessibility: no-autoplay-without-muted, no-uninformative-aria-label, no-target-blank-without-rel, and no-low-contrast-inline-style (computes the real WCAG 2.1 ratio from co-located inline color + backgroundColor). Design/Tailwind hygiene: no-redundant-display-class, prefer-truncate-shorthand, no-full-viewport-width, and no-svg-currentcolor-with-fill-class. All register via codegen (388 rules); 77 co-located tests pass; typecheck, lint, and format clean. * fix(rules): correct two false positives found in rule-validate - no-low-contrast-inline-style: when the inline style has no `fontSize`, the text may be sized large via a class (`text-5xl`), so fall back to the lenient 3:1 large-text threshold instead of 4.5:1 to avoid flagging large text that only needs 3:1. Stricter 4.5:1 applies only when the size is a visible normal size. - no-redundant-display-class: `<li>` defaults to `display: list-item`, not `block`, so `block` on an `<li>` is meaningful — removed `li` from the block-default set. Adds regression tests for both. * fix(rules): resolve Cursor Bugbot findings - no-low-contrast-inline-style: use a solid `background` shorthand color as the background (was skipped entirely, missing low-contrast pairs); skip only gradients/images/ambiguous (both backgroundColor + background). Also treat a string `fontWeight: "700"` as bold for the large-text threshold. - no-transition-all: match `transition-all` as a whole Tailwind token (segment after variant prefixes) so compound classes like `transition-all-custom` are not falsely flagged. - no-svg-currentcolor-with-fill-class: exclude stroke-WIDTH utilities (`stroke-2`, `stroke-[1.5]`) — they set thickness, not color — so they no longer false-conflict with `stroke="currentColor"`. Adds regression tests for each. * feat(rules): add 3 Tailwind-canonicalization rules from ui.sh guidance - no-deprecated-tailwind-class: flag Tailwind v4 renames (bg-gradient-* → bg-linear-*, flex-shrink-* → shrink-*, flex-grow-* → grow-*, overflow-ellipsis → text-ellipsis). Gated on a new `tailwind:4` capability. - no-arbitrary-px-font-size: `text-[13px]` → rem so text scales with the user's root font size (px stays fine for border-*/outline-*). - prefer-dvh-over-vh: `h-screen`/`min-h-screen`/`h-[100vh]` → dvh (tailwind:3.4). Adds `tailwind:4` capability to @react-doctor/core and extracts a shared `get-class-name-tokens` util (variant-aware token splitting), reused by no-transition-all and no-svg-currentcolor-with-fill-class. * fix(rules): adversarial-review false positives in the new design rules - no-tailwind-layout-transition: match transition-[…] property names exactly (comma-split + set) so SVG `stroke-width` / `border-width` — which merely contain "width" — are no longer flagged as HTML layout thrash. - no-full-viewport-width: drop `max-w-*` / `maxWidth` (a defensive cap, not the overflow footgun); keep `w-screen`/`w-[100vw]`/`width`/`minWidth`. - prefer-dvh-over-vh: drop `max-h-*` / `maxHeight` (a valid height cap, e.g. a scrollable modal); keep `h-screen`/`min-h-screen`/`height`/`minHeight`. - no-deprecated-tailwind-class: only rename `bg-gradient-to-*` → `bg-linear-to-*` (v4 radial/conic are `bg-radial`/`bg-conic`, not `bg-linear-radial`). Adds regression tests for each false positive. * fix(rules): resolve thermo-review false positives - no-svg-currentcolor-with-fill-class: only treat UNPREFIXED `fill-*`/`stroke-*` color classes as conflicts; `hover:fill-blue-600` / `dark:fill-white` (state- gated, no static conflict with the base `fill="currentColor"`) are no longer flagged — a very common icon pattern. - no-low-contrast-inline-style: reject 4-arg `rgb(0,0,0,0.5)` / slash-form alpha (was judged opaque), and bail when the style object contains a `{...spread}` that could override the colors. Tag `test-noise` to match sibling no-tiny-text. - no-full-viewport-width: drop the redundant `category: "Architecture"` override (it's the design-bucket default). - Extract `has-jsx-spread-attribute` util; use it in the two a11y rules. Adds regression tests for the variant-prefixed svg classes, rgb-alpha, opaque rgb, and the style-spread bail. * refactor(rules): deslop the design/motion/a11y rule additions Consolidate duplication surfaced by an adversarial deslop pass; no behavior change (the same diagnostics fire for the same inputs): - no-autoplay-without-muted: fold isStaticallyTrue/isStaticallyFalse into one tri-state resolveStaticBoolean, mirroring the existing parseJsxValue idiom - no-svg-currentcolor-with-fill-class: collapse the duplicated fill/stroke branches into a single loop over the two paint attributes - no-low-contrast-inline-style: hoist the repeated `properties` fallback - no-uncontrolled-input: drop the local hasJsxSpreadAttribute copy in favor of the branch's new shared utils/has-jsx-spread-attribute, completing the extraction Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * fix(rules): no-deprecated-tailwind-class stops flagging overflow-clip `overflow-clip` is a current Tailwind utility for `overflow: clip` (v3.1+, still present in v4) — it was never renamed to `text-clip`, which sets the unrelated `text-overflow: clip`. The stray mapping produced an incorrect "renamed in v4" suggestion (Cursor Bugbot). Only `overflow-ellipsis -> text-ellipsis` is a real rename; keep that. Adds a regression test. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * fix(capabilities): require a confirmed Tailwind major for the tailwind:4 gate `tailwind:4` gates no-deprecated-tailwind-class, which tells users a class was renamed/removed in v4. The optimistic-on-null policy (assume latest for an unparseable spec like `workspace:*`) is right for the suggestion rule behind `tailwind:3.4`, but for a deprecation rule it surfaces confidently-wrong "renamed in v4" warnings on a v3 project. Require a CONFIRMED parsed major >= 4 for tailwind:4 — favor a false negative over a false positive (Cursor Bugbot). `tailwind:3.4` stays optimistic. Adds an unparseable-version regression test. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * fix(rules): resolve Bugbot/Devin review findings on design/a11y rules - no-full-viewport-width: match variant-prefixed `md:w-screen` / `lg:min-w-screen`, mirroring the sibling `prefer-dvh-over-vh` regex (overflow happens at every breakpoint). - no-target-blank-without-rel: resolve `rel={'noopener'}` expression-container literals instead of treating them as dynamic, so reverse-tabnabbing isn't silently missed; share one literal resolver with the `target` check. - Extract the bare `16` root-font-size divisor into `ROOT_FONT_SIZE_PX` per the magic-number convention. * fix(rules): no-uninformative-aria-label resolves braced string literals Extracts no-target-blank-without-rel's inline getStringLiteralAttributeValue into a shared util and uses it in no-uninformative-aria-label, so a static braced literal like aria-label={'icon'} is judged instead of silently skipped (getJsxPropStringValue only handles plain string literals). Adds regression tests for the braced uninformative and braced descriptive cases. Addresses Bugbot review on millionco#850. * test(rules): add liveness fixtures after rebase * fix(rules): address automated review findings * fix(rules): handle leading-dot stroke widths * fix(rules): skip dynamic background overrides * fix(rules): address target blank and transition reviews * fix(rules): skip svg layout transitions * fix(rules): preserve font line height suggestion * fix(rules): match complete transition utilities * fix(rules): share layout transition properties * fix(rules): bound deprecated utility prefixes * fix(rules): clear dynamically overridden colors * fix(rules): tighten style and svg precision * fix(rules): preserve competing display utilities * fix(rules): preserve animation property scopes * feat(rules): expand deterministic design checks * feat(rules): add structural design diagnostics * feat(rules): complete source-auditable design checks * fix(rules): skip unresolved input types * fix(rules): tighten layout and boundary detection * fix(rules): close motion and padding gaps * fix(rules): tighten surface and line-height proofs * fix(rules): evaluate opaque hsl contrast * fix(rules): honor effective static values * fix(rules): honor final inline style declarations * fix(rules): respect variants and share surface checks * fix(rules): traverse fragments and preserve variant scope * feat(rules): deepen UI quality diagnostics * feat(rules): add deterministic animation diagnostics * fix(rules): retain in-house accessibility checks * feat(rules): expand deterministic UI diagnostics * feat(rules): detect generated interface patterns * fix(rules): respect dynamic style overrides * feat(rules): expand deterministic design diagnostics * fix(rules): close design precision gaps * feat(rules): expand deterministic design and accessibility checks * feat(rules): detect unsafe Motion API usage * test(fuzz): remove duplicate module snippets * feat(cli): add focused design command * fix(design): include the complete rule bucket * fix(core): align opt-in rule gates * feat(rules): expand deterministic motion and interaction checks * feat(rules): harden deterministic design diagnostics * fix(rules): harden design expansion diagnostics * fix(rules): apply large-corpus precision review * fix(rules): suppress large-corpus accessibility noise * fix(core): detect compiler in rstack configs * fix(a11y): avoid responsive navigation false positives * fix(rules): reduce design corpus false positives * fix(rules): restore will-change build after rebase * fix(rules): harden all-rules corpus precision --------- Co-authored-by: Rayhan Noufal Arayilakath <me@rayhanadev.com> Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: Aiden Bai <aidenybai@users.noreply.github.com>
* fix(rules): harden parity diagnostics * fix(evals): keep parity artifacts parseable * fix(evals): support Windows harness tests * fix(fuzz): parse CRLF corpus directives
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* add direct Three.js and WebGL rules * fix parity-discovered config cycle * fix Three render construction false positives * fix(rules): preserve JSX-referenced Three components * fix(rules): address Three.js review findings * feat(rules): add Three.js resource cleanup diagnostics
* feat(cli): add experimental interactive TUI * fix(tui): isolate concurrent project reporters * fix(tui): preserve project scoring config * fix(tui): merge monorepo rule priorities * fix(tui): finalize terminal lifecycle * fix(tui): surface lint hard failures * fix(tui): preserve monorepo project selection * fix(tui): address interactive review findings * fix(tui): constrain report to terminal height * test(tui): tolerate colored code frames * fix(tui): address final review findings * fix(tui): honor configured blocking gate --------- Co-authored-by: Aiden Bai <aidenybai@users.noreply.github.com>
…illionco#1417) Co-authored-by: Aiden Bai <aiden@million.dev>
…onco#1422) Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: Aiden Bai <aiden@million.dev>
wan9chi
deleted the
update-vite-plus-prerelease-test-0.0.0-commit.9855245a469b178066c25a5d45c971c130565d89
branch
July 23, 2026 02:14
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Ecosystem-ci smoke test. Draft / do not merge.
Test voidzero-dev/vite-plus#2217
Full migration using prerelease build
0.0.0-commit.9855245a469b178066c25a5d45c971c130565d89.Local result: migration succeeded. Install was blocked by the repository pnpm trust policy with
ERR_PNPM_TRUST_DOWNGRADEfor@effect/platform-node-shared@4.0.0-beta.70; dependency-version checks could not run.