From 3cc3fa7e79cf9ba2324e4317b5b9dbd250120bf9 Mon Sep 17 00:00:00 2001 From: Aiden Bai Date: Sat, 20 Jun 2026 03:08:16 -0700 Subject: [PATCH 01/13] feat(deslop-js): add scramble, an AST-based snippet anonymizer Rewrites a snippet so every identifier (incl. React APIs, JSX tags, and DOM/a11y attributes) becomes a role-prefixed placeholder applied consistently so aliasing survives, and every literal is blinded. Returns the readable scrambled source plus a stable FNV-1a hash. Parsing respects an explicit `language`; with none it tries tsx then falls back to ts so value-position generics still parse. --- .changeset/deslop-scramble-snippet.md | 5 + packages/deslop-js/src/index.ts | 3 + .../normalize-code-snippet.ts | 337 ++++++++++++++++++ .../tests/normalize-code-snippet.test.ts | 157 ++++++++ 4 files changed, 502 insertions(+) create mode 100644 .changeset/deslop-scramble-snippet.md create mode 100644 packages/deslop-js/src/normalize-snippet/normalize-code-snippet.ts create mode 100644 packages/deslop-js/tests/normalize-code-snippet.test.ts diff --git a/.changeset/deslop-scramble-snippet.md b/.changeset/deslop-scramble-snippet.md new file mode 100644 index 000000000..74143c390 --- /dev/null +++ b/.changeset/deslop-scramble-snippet.md @@ -0,0 +1,5 @@ +--- +"deslop-js": minor +--- + +Add `scramble`, an AST-based code anonymizer that rewrites a snippet into a stable, still-re-parseable form: every identifier (including React APIs, component names, JSX tags, and DOM/a11y attributes) becomes a role-prefixed placeholder applied consistently so aliasing survives (`h`ook / `s`etter / `g`etter / `C`omponent / host `e`lement / `p`rop / `v`ar), and every string / numeric / template / regex literal is blinded. Returns the readable scrambled `source`, an FNV-1a `hash` of it (a naming-invariant dedup key), and the `nodeType` the optional minimal-node extraction settled on. diff --git a/packages/deslop-js/src/index.ts b/packages/deslop-js/src/index.ts index 9fc9e61a0..c04839552 100644 --- a/packages/deslop-js/src/index.ts +++ b/packages/deslop-js/src/index.ts @@ -176,6 +176,9 @@ export type { DeslopErrorSeverity, } from "./types.js"; +export { scramble } from "./normalize-snippet/normalize-code-snippet.js"; +export type { ScrambleOptions, ScrambledCode } from "./normalize-snippet/normalize-code-snippet.js"; + /** * Default flags below mark rules off-by-default. Rationale for each: * diff --git a/packages/deslop-js/src/normalize-snippet/normalize-code-snippet.ts b/packages/deslop-js/src/normalize-snippet/normalize-code-snippet.ts new file mode 100644 index 000000000..1b3531988 --- /dev/null +++ b/packages/deslop-js/src/normalize-snippet/normalize-code-snippet.ts @@ -0,0 +1,337 @@ +import { parseSync } from "oxc-parser"; +import { isAstNode } from "../utils/is-ast-node.js"; + +export interface ScrambleOptions { + language?: "ts" | "tsx" | "js" | "jsx"; + /** + * When set, scrambles only the smallest self-contained node spanning this + * byte range (an `offset`/`length`) instead of the whole source. + */ + diagnostic?: { offset: number; length: number }; +} + +export interface ScrambledCode { + /** Readable scrambled source: structure kept, names/literals blinded. */ + source: string; + /** FNV-1a fingerprint (hex) of `source` — a stable dedup key. */ + hash: string; + /** Node the extraction settled on (e.g. `CallExpression`), else null. */ + nodeType: string | null; +} + +interface SourceReplacement { + start: number; + end: number; + text: string; +} + +interface AstNodeLike { + type: string; + start?: unknown; + end?: unknown; + [field: string]: unknown; +} + +const FILENAME_FOR_LANGUAGE: Record, string> = { + ts: "snippet.ts", + tsx: "snippet.tsx", + js: "snippet.js", + jsx: "snippet.jsx", +}; + +const FNV_OFFSET_BASIS = 0x811c9dc5; +const FNV_PRIME = 0x01000193; + +const fingerprint = (input: string): string => { + let hash = FNV_OFFSET_BASIS; + for (let charIndex = 0; charIndex < input.length; charIndex++) { + hash ^= input.charCodeAt(charIndex); + hash = Math.imul(hash, FNV_PRIME); + } + return (hash >>> 0).toString(16).padStart(8, "0"); +}; + +const parseProgram = (source: string, fileName: string): unknown | null => { + try { + const result = parseSync(fileName, source); + if (result.errors.some((parseError) => parseError.severity === "Error")) return null; + return result.program; + } catch { + return null; + } +}; + +// Resolve the program for a snippet. An explicit `language` is authoritative — +// the caller knows the file's extension. With no hint we try `tsx` first (JSX + +// most TS) then fall back to `ts`, because value-position generics (`fn()`, +// `() => …`) parse as JSX under TSX rules and would otherwise fail. +const parseSnippetProgram = ( + source: string, + language: ScrambleOptions["language"], +): unknown | null => { + if (language) return parseProgram(source, FILENAME_FOR_LANGUAGE[language]); + return ( + parseProgram(source, FILENAME_FOR_LANGUAGE.tsx) ?? + parseProgram(source, FILENAME_FOR_LANGUAGE.ts) + ); +}; + +const offsetOf = (node: AstNodeLike): { start: number; end: number } | null => { + if (typeof node.start !== "number" || typeof node.end !== "number") return null; + return { start: node.start, end: node.end }; +}; + +// Length of a TemplateElement's raw (source) text, used to blank only the text +// and never the delimiters — independent of how the parser reports the span. +const templateRawLength = (node: AstNodeLike): number | null => { + const value = node.value; + if (value && typeof value === "object" && !Array.isArray(value)) { + const raw = (value as { raw?: unknown }).raw; + if (typeof raw === "string") return raw.length; + } + return null; +}; + +const visitChildren = (node: Record, visit: (child: unknown) => void): void => { + for (const key of Object.keys(node)) { + const value = node[key]; + if (Array.isArray(value)) for (const item of value) visit(item); + else if (value && typeof value === "object") visit(value); + } +}; + +// Placeholder kinds: every name is still scrambled, but the prefix encodes its +// *role* (never its actual name) so the shape stays legible — `h0` is a hook, +// `s0` a setter/mutation, `g0` a getter, `C0` a component, `e0` a host element, +// `p0` a prop/attribute, `v0` an everything-else variable. The component/host +// split (`C`/`e`) also keeps the JSX valid: `` stays a component, `` a +// host tag, mirroring React's uppercase-vs-lowercase convention. +type PlaceholderKind = "hook" | "setter" | "getter" | "component" | "element" | "prop" | "var"; + +// Contextual keywords that parse as `Identifier` but break re-parse when +// renamed, so they're left verbatim. See the rename pass. +const RESERVED_IDENTIFIER_NAMES = new Set(["constructor", "global"]); + +const PLACEHOLDER_PREFIX: Record = { + hook: "h", + setter: "s", + getter: "g", + component: "C", + element: "e", + prop: "p", + var: "v", +}; + +// Role inferred from naming convention alone (no name leaks): `use*` is a hook, +// `set*` a setter, `get*` a getter, PascalCase a component/class, else a var. +const classifyByName = (name: string): PlaceholderKind => { + if (/^use[A-Z]/.test(name)) return "hook"; + if (/^set[A-Z]/.test(name)) return "setter"; + if (/^get[A-Z]/.test(name)) return "getter"; + if (/^[A-Z]/.test(name)) return "component"; + return "var"; +}; + +// JSX tag + attribute name nodes carry a role the name alone can't reveal (a +// host `div` vs a generic var; an attribute name vs a value). Classify those by +// node identity in a pre-pass; everything else falls back to `classifyByName`. +const classifyJsxNodes = (program: unknown): Map => { + const kinds = new Map(); + const visit = (node: unknown): void => { + if (!isAstNode(node)) return; + if ( + (node.type === "JSXOpeningElement" || node.type === "JSXClosingElement") && + isAstNode(node.name) && + node.name.type === "JSXIdentifier" && + typeof node.name.name === "string" + ) { + kinds.set(node.name, /^[A-Z]/.test(node.name.name) ? "component" : "element"); + } + if ( + node.type === "JSXAttribute" && + isAstNode(node.name) && + node.name.type === "JSXIdentifier" + ) { + kinds.set(node.name, "prop"); + } + visitChildren(node, visit); + }; + visit(program); + return kinds; +}; + +const makePlaceholderFactory = (): ((name: string, kind: PlaceholderKind) => string) => { + const assignedByName = new Map(); + const countByPrefix = new Map(); + return (name: string, kind: PlaceholderKind): string => { + const existing = assignedByName.get(name); + if (existing !== undefined) return existing; + const prefix = PLACEHOLDER_PREFIX[kind]; + const nextIndex = countByPrefix.get(prefix) ?? 0; + countByPrefix.set(prefix, nextIndex + 1); + const placeholder = `${prefix}${nextIndex}`; + assignedByName.set(name, placeholder); + return placeholder; + }; +}; + +// --- Readable scramble: rewrite the source in place. EVERY identifier (incl. +// React APIs, JSX tags, DOM/a11y attributes) → a role-prefixed placeholder +// applied consistently, and every literal blinded. Nothing is preserved. +// `offsetShift` rebases the AST's absolute offsets onto `source` when `source` +// is a slice of the original (minimal-node extraction). +const scrambleReadable = ( + source: string, + rootNode: unknown, + jsxKinds: Map, + offsetShift: number, +): string => { + const placeholderFor = makePlaceholderFactory(); + const replacements: SourceReplacement[] = []; + const add = (span: { start: number; end: number }, text: string): void => { + replacements.push({ start: span.start - offsetShift, end: span.end - offsetShift, text }); + }; + const visit = (node: unknown): void => { + if (!isAstNode(node)) return; + const span = offsetOf(node); + if ( + node.type === "Identifier" || + node.type === "JSXIdentifier" || + node.type === "PrivateIdentifier" + ) { + // A handful of contextual keywords surface as `Identifier` nodes and lose + // their meaning when renamed (not IP, so safe to keep): `constructor` + // (TS parameter properties need the constructor-ness) and `global` + // (`declare global { … }` ambient blocks). Both break re-parse otherwise. + if (span && typeof node.name === "string" && !RESERVED_IDENTIFIER_NAMES.has(node.name)) { + const kind = jsxKinds.get(node) ?? classifyByName(node.name); + add(span, placeholderFor(node.name, kind)); + } + return; + } + if (node.type === "Literal" && span) { + if (typeof node.value === "string") add(span, '"s"'); + else if (typeof node.value === "number" || typeof node.value === "bigint") add(span, "0"); + else if (node.regex) add(span, "/re/"); + } + // oxc reports TemplateElement spans inconsistently — TS mode includes the + // surrounding delimiters (`` ` ``/`${`/`}`), JS mode is the cooked text only. + // Blank exactly the raw-text characters (length-driven) so the template's + // `${expr}` structure and backticks always survive in both modes; otherwise + // the delimiters are destroyed and adjacent `${a}${b}` fuse into one name. + if (node.type === "TemplateElement" && span) { + const rawLength = templateRawLength(node); + if (rawLength !== null && rawLength > 0) { + const includesDelimiters = span.end - span.start !== rawLength; + const textStart = includesDelimiters ? span.start + 1 : span.start; + add({ start: textStart, end: textStart + rawLength }, ""); + } + } + visitChildren(node, visit); + }; + visit(rootNode); + + // Right-to-left; skip spans overlapping the previous one (shorthand patterns + // emit key + value sharing one span, which would otherwise double-slice). + replacements.sort((first, second) => second.start - first.start); + let scrambled = source; + let previousStart = Number.POSITIVE_INFINITY; + for (const replacement of replacements) { + if (replacement.end > previousStart || replacement.start < 0) continue; + scrambled = + scrambled.slice(0, replacement.start) + replacement.text + scrambled.slice(replacement.end); + previousStart = replacement.start; + } + return scrambled; +}; + +// --- Minimal-node extraction around a diagnostic. +const TOO_GRANULAR_NODES = new Set([ + "Identifier", + "JSXIdentifier", + "PrivateIdentifier", + "Literal", + "MemberExpression", + "Property", + "JSXAttribute", + "JSXExpressionContainer", + "TemplateElement", +]); +const MAX_ENCLOSING_CLIMB = 6; + +const findMinimalNode = (program: unknown, offset: number, length: number): AstNodeLike | null => { + const targetEnd = offset + Math.max(length, 1); + let bestSize = Number.POSITIVE_INFINITY; + const chain: AstNodeLike[] = []; + let bestChain: AstNodeLike[] = []; + const visit = (node: unknown): void => { + if (!isAstNode(node)) return; + const span = offsetOf(node); + if (span && span.start <= offset && span.end >= targetEnd) { + chain.push(node); + if (span.end - span.start < bestSize) { + bestSize = span.end - span.start; + bestChain = [...chain]; + } + visitChildren(node, visit); + chain.pop(); + return; + } + visitChildren(node, visit); + }; + visit(program); + if (bestChain.length === 0) return null; + let index = bestChain.length - 1; + let climbs = 0; + while ( + index > 0 && + climbs < MAX_ENCLOSING_CLIMB && + TOO_GRANULAR_NODES.has(bestChain[index].type) + ) { + index -= 1; + climbs += 1; + } + return bestChain[index]; +}; + +/** + * Scrambles a snippet so EVERY identifier becomes a role-prefixed placeholder + * applied consistently (so aliasing survives) — including React APIs, component + * names, JSX tags, and DOM/a11y attributes — and every string / numeric / + * template / regex literal is blinded. The prefix encodes the role, never the + * name (`h`ook / `s`etter / `g`etter / `C`omponent / host `e`lement / `p`rop / + * `v`ar). Returns the readable scrambled `source` plus a stable `hash` of it. + * + * With `options.diagnostic`, scrambles only the minimal node spanning the given + * byte range. Returns `null` when the source can't be parsed or no node spans + * the range. + */ +export const scramble = (source: string, options: ScrambleOptions = {}): ScrambledCode | null => { + const program = parseSnippetProgram(source, options.language); + if (program === null) return null; + const jsxKinds = classifyJsxNodes(program); + + let rootNode: unknown = program; + let scrambledSource = source; + let offsetShift = 0; + let nodeType: string | null = null; + + if (options.diagnostic) { + const node = findMinimalNode(program, options.diagnostic.offset, options.diagnostic.length); + if (node === null) return null; + rootNode = node; + nodeType = node.type; + const span = offsetOf(node); + if (span) { + scrambledSource = source.slice(span.start, span.end); + offsetShift = span.start; + } + } + + const scrambledOutput = scrambleReadable(scrambledSource, rootNode, jsxKinds, offsetShift); + return { + source: scrambledOutput, + hash: fingerprint(scrambledOutput), + nodeType, + }; +}; diff --git a/packages/deslop-js/tests/normalize-code-snippet.test.ts b/packages/deslop-js/tests/normalize-code-snippet.test.ts new file mode 100644 index 000000000..eb246680c --- /dev/null +++ b/packages/deslop-js/tests/normalize-code-snippet.test.ts @@ -0,0 +1,157 @@ +import { describe, it } from "node:test"; +import assert from "node:assert/strict"; +import { scramble } from "../src/normalize-snippet/normalize-code-snippet.js"; + +interface Fixture { + name: string; + language: "ts" | "tsx" | "js" | "jsx"; + source: string; +} + +const FIXTURES: Fixture[] = [ + { + name: "useEffect with a missing dependency", + language: "tsx", + source: `import { useEffect, useState } from "react"; + +export const InvoiceWidget = ({ customerId }: { customerId: string }) => { + const [total, setTotal] = useState(0); + + useEffect(() => { + fetchInvoiceTotal(customerId, "acme-corp").then((amount) => { + setTotal(amount * 1.07); + }); + }, []); + + return
{total}
; +};`, + }, + { + name: "array index used as a key", + language: "tsx", + source: `export const TodoList = ({ todos }) => { + return ( +
    + {todos.map((todo, index) => ( +
  • {todo.label}
  • + ))} +
+ ); +};`, + }, + { + name: "a secret echoed into client code", + language: "ts", + source: `const stripeClient = createClient({ + apiKey: "sk_live_51Hxq9rreally_secret_token_value", + region: "us-east-1", +});`, + }, +]; + +describe("scramble", () => { + for (const fixture of FIXTURES) { + it(fixture.name, () => { + const result = scramble(fixture.source, { language: fixture.language }); + assert.ok(result, "should scramble"); + + console.log(`\n=== ${fixture.name} ===`); + console.log("--- INPUT ---"); + console.log(fixture.source); + console.log("--- SCRAMBLED SOURCE ---"); + console.log(result.source); + console.log(`hash=${result.hash}`); + }); + } + + it("scrambles only the minimal node around a diagnostic", () => { + const source = `import { useEffect, useState } from "react"; + +export const InvoiceWidget = ({ customerId }: { customerId: string }) => { + const [total, setTotal] = useState(0); + useEffect(() => { + fetchInvoiceTotal(customerId, "acme-corp").then((amount) => { + setTotal(amount * 1.07); + }); + }, []); + return
{total}
; +};`; + const offset = source.indexOf("useEffect(() =>"); + const whole = scramble(source, { language: "tsx" }); + const minimal = scramble(source, { language: "tsx", diagnostic: { offset, length: 9 } }); + assert.ok(whole && minimal); + + console.log("\n=== minimal extraction ==="); + console.log(`whole-file scrambled (${whole.source.length}B)`); + console.log(`minimal node (${minimal.nodeType}, ${minimal.source.length}B):`); + console.log(minimal.source); + + assert.equal(minimal.nodeType, "CallExpression"); + assert.ok(minimal.source.length < whole.source.length, "minimal node must be smaller"); + assert.notEqual(minimal.hash, whole.hash); + }); + + it("is deterministic — same shape, different names, same hash", () => { + const first = scramble(`const taxRate = 0.07; const grandTotal = subtotal * taxRate;`, { + language: "ts", + }); + const second = scramble(`const discount = 0.42; const finalPrice = basePrice * discount;`, { + language: "ts", + }); + assert.ok(first && second); + assert.equal(first.hash, second.hash); + assert.equal(first.source, second.source); + }); + + it("scrambles everything — imports, custom props, JSX tags, and DOM/a11y attributes", () => { + const result = scramble( + `import { Avatar } from "@acme/internal-design-system"; +export const Row = ({ customerName }) => ( + {}} secretRank={3}> + {customerName} + +);`, + { language: "tsx" }, + ); + assert.ok(result); + // imported + custom names gone + assert.doesNotMatch(result.source, /Avatar/); + assert.doesNotMatch(result.source, /customerName/); + assert.doesNotMatch(result.source, /secretRank/); + assert.doesNotMatch(result.source, /\$highlighted/); + // DOM / a11y attribute names are also scrambled + assert.doesNotMatch(result.source, /\brole=/); + assert.doesNotMatch(result.source, /\balt=/); + assert.doesNotMatch(result.source, /data-testid=/); + assert.doesNotMatch(result.source, /onClick=/); + }); + + it("parses value-position generics when language is omitted (tsx→ts fallback)", () => { + // `identity(x)` and `() => …` misparse as JSX under the + // default tsx rules; the parse must fall back to ts instead of returning null. + const result = scramble(`const wrap = (value: Type) => identity(value);`); + assert.ok(result, "generic TS should parse via the ts fallback"); + assert.doesNotMatch(result.source, /identity/); + assert.doesNotMatch(result.source, /wrap/); + // explicit language is authoritative and yields the same scrambled output + const explicit = scramble(`const wrap = (value: Type) => identity(value);`, { + language: "ts", + }); + assert.ok(explicit); + assert.equal(result.source, explicit.source); + }); + + it("strips every identifier — including React APIs — and all literals", () => { + const result = scramble( + `import { useEffect } from "react"; +const secretBusinessName = 42; +useEffect(() => { doSecretThing(secretBusinessName); }, []);`, + { language: "ts" }, + ); + assert.ok(result); + assert.doesNotMatch(result.source, /useEffect/); + assert.doesNotMatch(result.source, /secretBusinessName/); + assert.doesNotMatch(result.source, /doSecretThing/); + assert.doesNotMatch(result.source, /42/); + }); +}); From f6dda507cfafc5c742d6b91f6e2a1eb5e12cd0d3 Mon Sep 17 00:00:00 2001 From: Aiden Bai Date: Sat, 20 Jun 2026 03:34:26 -0700 Subject: [PATCH 02/13] fix(deslop-js): blind private fields, JSX text, and binding type names - Keep the leading `#` on PrivateIdentifier placeholders (and scope their lookup key) so private fields stay private, re-parse, and never collide with a public name of the same text. - Blind JSXText runs so visible text between tags isn't leaked. - Visit an identifier's children so a typed binding's `typeAnnotation` names are scrambled too. --- .../normalize-code-snippet.ts | 24 +++++++++++- .../tests/normalize-code-snippet.test.ts | 39 +++++++++++++++++++ 2 files changed, 61 insertions(+), 2 deletions(-) diff --git a/packages/deslop-js/src/normalize-snippet/normalize-code-snippet.ts b/packages/deslop-js/src/normalize-snippet/normalize-code-snippet.ts index 1b3531988..e1718a631 100644 --- a/packages/deslop-js/src/normalize-snippet/normalize-code-snippet.ts +++ b/packages/deslop-js/src/normalize-snippet/normalize-code-snippet.ts @@ -200,13 +200,33 @@ const scrambleReadable = ( node.type === "PrivateIdentifier" ) { // A handful of contextual keywords surface as `Identifier` nodes and lose - // their meaning when renamed (not IP, so safe to keep): `constructor` + // their meaning when renamed, so they're kept verbatim: `constructor` // (TS parameter properties need the constructor-ness) and `global` // (`declare global { … }` ambient blocks). Both break re-parse otherwise. if (span && typeof node.name === "string" && !RESERVED_IDENTIFIER_NAMES.has(node.name)) { const kind = jsxKinds.get(node) ?? classifyByName(node.name); - add(span, placeholderFor(node.name, kind)); + // A `PrivateIdentifier` span includes the leading `#`, but `name` does + // not. Keep the `#` (and a `#`-scoped lookup key) so `#x` stays a private + // field, re-parses, and never collides with a public `x`. + const isPrivate = node.type === "PrivateIdentifier"; + const placeholder = placeholderFor(isPrivate ? `#${node.name}` : node.name, kind); + add(span, isPrivate ? `#${placeholder}` : placeholder); } + // Fall through to children: a typed binding carries its `typeAnnotation` + // as a child of the identifier, and those type names must be blinded too. + visitChildren(node, visit); + return; + } + if ( + node.type === "JSXText" && + span && + typeof node.value === "string" && + /\S/.test(node.value) + ) { + // Visible text between JSX tags can carry copy / customer data. Collapse + // the whole run (surrounding whitespace included) to a single token; JSX + // text is always re-parseable regardless of content. + add(span, "t"); return; } if (node.type === "Literal" && span) { diff --git a/packages/deslop-js/tests/normalize-code-snippet.test.ts b/packages/deslop-js/tests/normalize-code-snippet.test.ts index eb246680c..1a7fecde8 100644 --- a/packages/deslop-js/tests/normalize-code-snippet.test.ts +++ b/packages/deslop-js/tests/normalize-code-snippet.test.ts @@ -141,6 +141,45 @@ export const Row = ({ customerName }) => ( assert.equal(result.source, explicit.source); }); + it("keeps the # on private fields so they re-parse and don't collide", () => { + const result = scramble( + `class Vault { + #secret = 1; + read(secret: number) { return this.#secret + secret; } +}`, + { language: "ts" }, + ); + assert.ok(result); + assert.doesNotMatch(result.source, /secret/); + // private field keeps its #, public param does not + assert.match(result.source, /#\w+\s*=/); + assert.match(result.source, /this\.#\w+/); + // re-parses cleanly (no bare-# / stray identifier breakage) + const reparsed = scramble(result.source, { language: "ts" }); + assert.ok(reparsed, "scrambled private-field output must re-parse"); + }); + + it("blinds visible JSX text content", () => { + const result = scramble(`export const Banner = () =>
Acme confidential roadmap
;`, { + language: "tsx", + }); + assert.ok(result); + assert.doesNotMatch(result.source, /confidential/); + assert.doesNotMatch(result.source, /roadmap/); + assert.doesNotMatch(result.source, /Acme/); + }); + + it("blinds type names on typed bindings and params", () => { + const result = scramble( + `const id: AcmeInvoiceId = make(); +const lookup = (ref: InternalCustomerRef) => ref;`, + { language: "ts" }, + ); + assert.ok(result); + assert.doesNotMatch(result.source, /AcmeInvoiceId/); + assert.doesNotMatch(result.source, /InternalCustomerRef/); + }); + it("strips every identifier — including React APIs — and all literals", () => { const result = scramble( `import { useEffect } from "react"; From 42beadb8266f7d3b1d5cb3357477c9170a3e06bc Mon Sep 17 00:00:00 2001 From: Aiden Bai Date: Sat, 20 Jun 2026 03:45:39 -0700 Subject: [PATCH 03/13] fix(deslop-js): key placeholder cache by role + name A single source name can play two roles (e.g. `className` as both a destructured var and a JSX attribute label). Keying the placeholder cache by name alone let the first-seen role win, so structurally identical snippets that differed only in an underlying name scrambled (and hashed) differently, breaking the naming-invariant dedup key. Key by (role, name). --- .../src/normalize-snippet/normalize-code-snippet.ts | 13 ++++++++++--- .../deslop-js/tests/normalize-code-snippet.test.ts | 13 +++++++++++++ 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/packages/deslop-js/src/normalize-snippet/normalize-code-snippet.ts b/packages/deslop-js/src/normalize-snippet/normalize-code-snippet.ts index e1718a631..497cad274 100644 --- a/packages/deslop-js/src/normalize-snippet/normalize-code-snippet.ts +++ b/packages/deslop-js/src/normalize-snippet/normalize-code-snippet.ts @@ -160,17 +160,24 @@ const classifyJsxNodes = (program: unknown): Map => { return kinds; }; +// Keyed by (role, name), not name alone: one source name can play two roles — +// e.g. `className` as both a destructured var and a JSX attribute label — and +// each role must keep its own prefix. Keying by name only would let whichever +// role was seen first win, so structurally identical snippets that differ only +// in an underlying name would scramble (and hash) differently. `\u0000` can't +// occur in an identifier, so it's a safe key separator. const makePlaceholderFactory = (): ((name: string, kind: PlaceholderKind) => string) => { - const assignedByName = new Map(); + const assignedByKey = new Map(); const countByPrefix = new Map(); return (name: string, kind: PlaceholderKind): string => { - const existing = assignedByName.get(name); + const key = `${kind}\u0000${name}`; + const existing = assignedByKey.get(key); if (existing !== undefined) return existing; const prefix = PLACEHOLDER_PREFIX[kind]; const nextIndex = countByPrefix.get(prefix) ?? 0; countByPrefix.set(prefix, nextIndex + 1); const placeholder = `${prefix}${nextIndex}`; - assignedByName.set(name, placeholder); + assignedByKey.set(key, placeholder); return placeholder; }; }; diff --git a/packages/deslop-js/tests/normalize-code-snippet.test.ts b/packages/deslop-js/tests/normalize-code-snippet.test.ts index 1a7fecde8..81665944d 100644 --- a/packages/deslop-js/tests/normalize-code-snippet.test.ts +++ b/packages/deslop-js/tests/normalize-code-snippet.test.ts @@ -141,6 +141,19 @@ export const Row = ({ customerName }) => ( assert.equal(result.source, explicit.source); }); + it("stays naming-invariant when a name doubles as a var and a JSX attribute", () => { + // Structurally identical: one destructured prop used as the value of one + // host attribute. The only difference is the prop's name happens to equal + // the attribute label in the first case — output + hash must still match. + const collides = scramble(`({ className }) =>
`, { + language: "tsx", + }); + const distinct = scramble(`({ role }) =>
`, { language: "tsx" }); + assert.ok(collides && distinct); + assert.equal(collides.source, distinct.source); + assert.equal(collides.hash, distinct.hash); + }); + it("keeps the # on private fields so they re-parse and don't collide", () => { const result = scramble( `class Vault { From 4773042beb4513834b063efdc0543f9a1b252432 Mon Sep 17 00:00:00 2001 From: Aiden Bai Date: Sat, 20 Jun 2026 03:50:50 -0700 Subject: [PATCH 04/13] fix(deslop-js): bound template-text blanking to the node span MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Blanking a TemplateElement used `raw.length`, which can exceed the reported span when the quasi contains escapes — overrunning `span.end` and rewriting unrelated source. Trim the actual delimiter chars off the span ends instead, keeping the blanked region strictly inside the node and escape-safe in both parser modes. --- .../normalize-code-snippet.ts | 44 +++++++++++-------- .../tests/normalize-code-snippet.test.ts | 15 +++++++ 2 files changed, 40 insertions(+), 19 deletions(-) diff --git a/packages/deslop-js/src/normalize-snippet/normalize-code-snippet.ts b/packages/deslop-js/src/normalize-snippet/normalize-code-snippet.ts index 497cad274..70ccbffe7 100644 --- a/packages/deslop-js/src/normalize-snippet/normalize-code-snippet.ts +++ b/packages/deslop-js/src/normalize-snippet/normalize-code-snippet.ts @@ -81,15 +81,24 @@ const offsetOf = (node: AstNodeLike): { start: number; end: number } | null => { return { start: node.start, end: node.end }; }; -// Length of a TemplateElement's raw (source) text, used to blank only the text -// and never the delimiters — independent of how the parser reports the span. -const templateRawLength = (node: AstNodeLike): number | null => { - const value = node.value; - if (value && typeof value === "object" && !Array.isArray(value)) { - const raw = (value as { raw?: unknown }).raw; - if (typeof raw === "string") return raw.length; - } - return null; +// The slice of a TemplateElement's span (in local source coordinates) that holds +// the quasi text, with any delimiters trimmed off. oxc reports these spans +// inconsistently — TS mode wraps the delimiters (`` ` ``/`${`/`}`), JS mode is the +// cooked text only — and raw text can be longer than the span when it contains +// escapes, so we never compute the end from `raw.length` (that can overrun the +// span into unrelated source). Instead we trim the real delimiter characters off +// the span ends, which stays strictly within `[localStart, localEnd]`. +const templateInnerSpan = ( + source: string, + localStart: number, + localEnd: number, +): { start: number; end: number } => { + let start = localStart; + let end = localEnd; + if (source[start] === "`" || source[start] === "}") start += 1; + if (source.slice(end - 2, end) === "${") end -= 2; + else if (source[end - 1] === "`") end -= 1; + return { start, end }; }; const visitChildren = (node: Record, visit: (child: unknown) => void): void => { @@ -241,17 +250,14 @@ const scrambleReadable = ( else if (typeof node.value === "number" || typeof node.value === "bigint") add(span, "0"); else if (node.regex) add(span, "/re/"); } - // oxc reports TemplateElement spans inconsistently — TS mode includes the - // surrounding delimiters (`` ` ``/`${`/`}`), JS mode is the cooked text only. - // Blank exactly the raw-text characters (length-driven) so the template's - // `${expr}` structure and backticks always survive in both modes; otherwise - // the delimiters are destroyed and adjacent `${a}${b}` fuse into one name. + // Blank only the quasi text so the template's `${expr}` structure and + // backticks survive in both parser modes; otherwise the delimiters are + // destroyed and adjacent `${a}${b}` fuse into one name. Trimming the real + // delimiter chars keeps the blanked region strictly inside the node span. if (node.type === "TemplateElement" && span) { - const rawLength = templateRawLength(node); - if (rawLength !== null && rawLength > 0) { - const includesDelimiters = span.end - span.start !== rawLength; - const textStart = includesDelimiters ? span.start + 1 : span.start; - add({ start: textStart, end: textStart + rawLength }, ""); + const inner = templateInnerSpan(source, span.start - offsetShift, span.end - offsetShift); + if (inner.end > inner.start) { + add({ start: inner.start + offsetShift, end: inner.end + offsetShift }, ""); } } visitChildren(node, visit); diff --git a/packages/deslop-js/tests/normalize-code-snippet.test.ts b/packages/deslop-js/tests/normalize-code-snippet.test.ts index 81665944d..0f116d6bf 100644 --- a/packages/deslop-js/tests/normalize-code-snippet.test.ts +++ b/packages/deslop-js/tests/normalize-code-snippet.test.ts @@ -154,6 +154,21 @@ export const Row = ({ customerName }) => ( assert.equal(collides.hash, distinct.hash); }); + it("blanks template text without overrunning the span (escapes + interpolation)", () => { + const result = scramble( + "const label = `secret\\n${first} and ${second} tail`; export { label };", + { language: "ts" }, + ); + assert.ok(result); + // template structure survives: backticks, both `${...}` holes, and the + // trailing statement are intact, and the secret text is gone + assert.match(result.source, /`[^`]*\$\{\w+\}[^`]*\$\{\w+\}[^`]*`/); + assert.doesNotMatch(result.source, /secret/); + assert.doesNotMatch(result.source, /tail/); + // re-parses (no overrun corrupted the following `export`) + assert.ok(scramble(result.source, { language: "ts" }), "must re-parse"); + }); + it("keeps the # on private fields so they re-parse and don't collide", () => { const result = scramble( `class Vault { From 6f645f83dddf78b67158dc513ee1a05cf627b1e2 Mon Sep 17 00:00:00 2001 From: Aiden Bai Date: Mon, 22 Jun 2026 16:52:00 -0700 Subject: [PATCH 05/13] refactor: move scramble from deslop-js public API into react-doctor scramble is a react-doctor-specific snippet anonymizer (for telemetry / privacy), not a general-purpose deslop-js capability. Exposing it on the separately-published deslop-js package needlessly widened that package's surface. Relocate it to react-doctor as an internal cli/utils helper alongside the other anonymizers, drop the now-unneeded deslop-js export + changeset, and add oxc-parser as a direct react-doctor dependency. Implementation simplified while preserving identical output/hash: a single local AstNode/Span type, inlined isAstNode guard, no offsetShift round-trip in the template branch, and trimmed comments. --- .changeset/deslop-scramble-snippet.md | 5 - packages/deslop-js/src/index.ts | 3 - .../tests/normalize-code-snippet.test.ts | 224 ------------------ packages/react-doctor/package.json | 1 + .../src/cli/utils/scramble-snippet.ts} | 200 ++++++++-------- .../tests/scramble-snippet.test.ts | 150 ++++++++++++ pnpm-lock.yaml | 3 + 7 files changed, 253 insertions(+), 333 deletions(-) delete mode 100644 .changeset/deslop-scramble-snippet.md delete mode 100644 packages/deslop-js/tests/normalize-code-snippet.test.ts rename packages/{deslop-js/src/normalize-snippet/normalize-code-snippet.ts => react-doctor/src/cli/utils/scramble-snippet.ts} (71%) create mode 100644 packages/react-doctor/tests/scramble-snippet.test.ts diff --git a/.changeset/deslop-scramble-snippet.md b/.changeset/deslop-scramble-snippet.md deleted file mode 100644 index 74143c390..000000000 --- a/.changeset/deslop-scramble-snippet.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"deslop-js": minor ---- - -Add `scramble`, an AST-based code anonymizer that rewrites a snippet into a stable, still-re-parseable form: every identifier (including React APIs, component names, JSX tags, and DOM/a11y attributes) becomes a role-prefixed placeholder applied consistently so aliasing survives (`h`ook / `s`etter / `g`etter / `C`omponent / host `e`lement / `p`rop / `v`ar), and every string / numeric / template / regex literal is blinded. Returns the readable scrambled `source`, an FNV-1a `hash` of it (a naming-invariant dedup key), and the `nodeType` the optional minimal-node extraction settled on. diff --git a/packages/deslop-js/src/index.ts b/packages/deslop-js/src/index.ts index c04839552..9fc9e61a0 100644 --- a/packages/deslop-js/src/index.ts +++ b/packages/deslop-js/src/index.ts @@ -176,9 +176,6 @@ export type { DeslopErrorSeverity, } from "./types.js"; -export { scramble } from "./normalize-snippet/normalize-code-snippet.js"; -export type { ScrambleOptions, ScrambledCode } from "./normalize-snippet/normalize-code-snippet.js"; - /** * Default flags below mark rules off-by-default. Rationale for each: * diff --git a/packages/deslop-js/tests/normalize-code-snippet.test.ts b/packages/deslop-js/tests/normalize-code-snippet.test.ts deleted file mode 100644 index 0f116d6bf..000000000 --- a/packages/deslop-js/tests/normalize-code-snippet.test.ts +++ /dev/null @@ -1,224 +0,0 @@ -import { describe, it } from "node:test"; -import assert from "node:assert/strict"; -import { scramble } from "../src/normalize-snippet/normalize-code-snippet.js"; - -interface Fixture { - name: string; - language: "ts" | "tsx" | "js" | "jsx"; - source: string; -} - -const FIXTURES: Fixture[] = [ - { - name: "useEffect with a missing dependency", - language: "tsx", - source: `import { useEffect, useState } from "react"; - -export const InvoiceWidget = ({ customerId }: { customerId: string }) => { - const [total, setTotal] = useState(0); - - useEffect(() => { - fetchInvoiceTotal(customerId, "acme-corp").then((amount) => { - setTotal(amount * 1.07); - }); - }, []); - - return
{total}
; -};`, - }, - { - name: "array index used as a key", - language: "tsx", - source: `export const TodoList = ({ todos }) => { - return ( -
    - {todos.map((todo, index) => ( -
  • {todo.label}
  • - ))} -
- ); -};`, - }, - { - name: "a secret echoed into client code", - language: "ts", - source: `const stripeClient = createClient({ - apiKey: "sk_live_51Hxq9rreally_secret_token_value", - region: "us-east-1", -});`, - }, -]; - -describe("scramble", () => { - for (const fixture of FIXTURES) { - it(fixture.name, () => { - const result = scramble(fixture.source, { language: fixture.language }); - assert.ok(result, "should scramble"); - - console.log(`\n=== ${fixture.name} ===`); - console.log("--- INPUT ---"); - console.log(fixture.source); - console.log("--- SCRAMBLED SOURCE ---"); - console.log(result.source); - console.log(`hash=${result.hash}`); - }); - } - - it("scrambles only the minimal node around a diagnostic", () => { - const source = `import { useEffect, useState } from "react"; - -export const InvoiceWidget = ({ customerId }: { customerId: string }) => { - const [total, setTotal] = useState(0); - useEffect(() => { - fetchInvoiceTotal(customerId, "acme-corp").then((amount) => { - setTotal(amount * 1.07); - }); - }, []); - return
{total}
; -};`; - const offset = source.indexOf("useEffect(() =>"); - const whole = scramble(source, { language: "tsx" }); - const minimal = scramble(source, { language: "tsx", diagnostic: { offset, length: 9 } }); - assert.ok(whole && minimal); - - console.log("\n=== minimal extraction ==="); - console.log(`whole-file scrambled (${whole.source.length}B)`); - console.log(`minimal node (${minimal.nodeType}, ${minimal.source.length}B):`); - console.log(minimal.source); - - assert.equal(minimal.nodeType, "CallExpression"); - assert.ok(minimal.source.length < whole.source.length, "minimal node must be smaller"); - assert.notEqual(minimal.hash, whole.hash); - }); - - it("is deterministic — same shape, different names, same hash", () => { - const first = scramble(`const taxRate = 0.07; const grandTotal = subtotal * taxRate;`, { - language: "ts", - }); - const second = scramble(`const discount = 0.42; const finalPrice = basePrice * discount;`, { - language: "ts", - }); - assert.ok(first && second); - assert.equal(first.hash, second.hash); - assert.equal(first.source, second.source); - }); - - it("scrambles everything — imports, custom props, JSX tags, and DOM/a11y attributes", () => { - const result = scramble( - `import { Avatar } from "@acme/internal-design-system"; -export const Row = ({ customerName }) => ( - {}} secretRank={3}> - {customerName} - -);`, - { language: "tsx" }, - ); - assert.ok(result); - // imported + custom names gone - assert.doesNotMatch(result.source, /Avatar/); - assert.doesNotMatch(result.source, /customerName/); - assert.doesNotMatch(result.source, /secretRank/); - assert.doesNotMatch(result.source, /\$highlighted/); - // DOM / a11y attribute names are also scrambled - assert.doesNotMatch(result.source, /\brole=/); - assert.doesNotMatch(result.source, /\balt=/); - assert.doesNotMatch(result.source, /data-testid=/); - assert.doesNotMatch(result.source, /onClick=/); - }); - - it("parses value-position generics when language is omitted (tsx→ts fallback)", () => { - // `identity(x)` and `() => …` misparse as JSX under the - // default tsx rules; the parse must fall back to ts instead of returning null. - const result = scramble(`const wrap = (value: Type) => identity(value);`); - assert.ok(result, "generic TS should parse via the ts fallback"); - assert.doesNotMatch(result.source, /identity/); - assert.doesNotMatch(result.source, /wrap/); - // explicit language is authoritative and yields the same scrambled output - const explicit = scramble(`const wrap = (value: Type) => identity(value);`, { - language: "ts", - }); - assert.ok(explicit); - assert.equal(result.source, explicit.source); - }); - - it("stays naming-invariant when a name doubles as a var and a JSX attribute", () => { - // Structurally identical: one destructured prop used as the value of one - // host attribute. The only difference is the prop's name happens to equal - // the attribute label in the first case — output + hash must still match. - const collides = scramble(`({ className }) =>
`, { - language: "tsx", - }); - const distinct = scramble(`({ role }) =>
`, { language: "tsx" }); - assert.ok(collides && distinct); - assert.equal(collides.source, distinct.source); - assert.equal(collides.hash, distinct.hash); - }); - - it("blanks template text without overrunning the span (escapes + interpolation)", () => { - const result = scramble( - "const label = `secret\\n${first} and ${second} tail`; export { label };", - { language: "ts" }, - ); - assert.ok(result); - // template structure survives: backticks, both `${...}` holes, and the - // trailing statement are intact, and the secret text is gone - assert.match(result.source, /`[^`]*\$\{\w+\}[^`]*\$\{\w+\}[^`]*`/); - assert.doesNotMatch(result.source, /secret/); - assert.doesNotMatch(result.source, /tail/); - // re-parses (no overrun corrupted the following `export`) - assert.ok(scramble(result.source, { language: "ts" }), "must re-parse"); - }); - - it("keeps the # on private fields so they re-parse and don't collide", () => { - const result = scramble( - `class Vault { - #secret = 1; - read(secret: number) { return this.#secret + secret; } -}`, - { language: "ts" }, - ); - assert.ok(result); - assert.doesNotMatch(result.source, /secret/); - // private field keeps its #, public param does not - assert.match(result.source, /#\w+\s*=/); - assert.match(result.source, /this\.#\w+/); - // re-parses cleanly (no bare-# / stray identifier breakage) - const reparsed = scramble(result.source, { language: "ts" }); - assert.ok(reparsed, "scrambled private-field output must re-parse"); - }); - - it("blinds visible JSX text content", () => { - const result = scramble(`export const Banner = () =>
Acme confidential roadmap
;`, { - language: "tsx", - }); - assert.ok(result); - assert.doesNotMatch(result.source, /confidential/); - assert.doesNotMatch(result.source, /roadmap/); - assert.doesNotMatch(result.source, /Acme/); - }); - - it("blinds type names on typed bindings and params", () => { - const result = scramble( - `const id: AcmeInvoiceId = make(); -const lookup = (ref: InternalCustomerRef) => ref;`, - { language: "ts" }, - ); - assert.ok(result); - assert.doesNotMatch(result.source, /AcmeInvoiceId/); - assert.doesNotMatch(result.source, /InternalCustomerRef/); - }); - - it("strips every identifier — including React APIs — and all literals", () => { - const result = scramble( - `import { useEffect } from "react"; -const secretBusinessName = 42; -useEffect(() => { doSecretThing(secretBusinessName); }, []);`, - { language: "ts" }, - ); - assert.ok(result); - assert.doesNotMatch(result.source, /useEffect/); - assert.doesNotMatch(result.source, /secretBusinessName/); - assert.doesNotMatch(result.source, /doSecretThing/); - assert.doesNotMatch(result.source, /42/); - }); -}); diff --git a/packages/react-doctor/package.json b/packages/react-doctor/package.json index 9dad36cb4..7c3d2d103 100644 --- a/packages/react-doctor/package.json +++ b/packages/react-doctor/package.json @@ -64,6 +64,7 @@ "eslint-plugin-react-hooks": "^7.1.1", "jiti": "^2.7.0", "magicast": "^0.5.3", + "oxc-parser": "^0.132.0", "oxlint": ">=1.66.0 <1.67.0", "oxlint-plugin-react-doctor": "workspace:*", "prompts": "^2.4.2", diff --git a/packages/deslop-js/src/normalize-snippet/normalize-code-snippet.ts b/packages/react-doctor/src/cli/utils/scramble-snippet.ts similarity index 71% rename from packages/deslop-js/src/normalize-snippet/normalize-code-snippet.ts rename to packages/react-doctor/src/cli/utils/scramble-snippet.ts index 70ccbffe7..b95b4d539 100644 --- a/packages/deslop-js/src/normalize-snippet/normalize-code-snippet.ts +++ b/packages/react-doctor/src/cli/utils/scramble-snippet.ts @@ -1,5 +1,4 @@ import { parseSync } from "oxc-parser"; -import { isAstNode } from "../utils/is-ast-node.js"; export interface ScrambleOptions { language?: "ts" | "tsx" | "js" | "jsx"; @@ -19,19 +18,29 @@ export interface ScrambledCode { nodeType: string | null; } +interface AstNode { + type: string; + start?: unknown; + end?: unknown; + [field: string]: unknown; +} + interface SourceReplacement { start: number; end: number; text: string; } -interface AstNodeLike { - type: string; - start?: unknown; - end?: unknown; - [field: string]: unknown; +interface Span { + start: number; + end: number; } +// Role inferred from a name without leaking it: `use*` hook, `set*` setter, +// `get*` getter, PascalCase component/class, else var. JSX tag + attribute +// roles can't be read from the name alone, so those are classified by node. +type PlaceholderKind = "hook" | "setter" | "getter" | "component" | "element" | "prop" | "var"; + const FILENAME_FOR_LANGUAGE: Record, string> = { ts: "snippet.ts", tsx: "snippet.tsx", @@ -39,9 +48,58 @@ const FILENAME_FOR_LANGUAGE: Record, st jsx: "snippet.jsx", }; +// The prefix encodes the role (never the name) so the shape stays legible. The +// component/host split (`C`/`e`) also keeps JSX valid: `` is a component, +// `` a host tag, mirroring React's uppercase-vs-lowercase convention. +const PLACEHOLDER_PREFIX: Record = { + hook: "h", + setter: "s", + getter: "g", + component: "C", + element: "e", + prop: "p", + var: "v", +}; + +// Contextual keywords that parse as `Identifier` but break re-parse when +// renamed: `constructor` (TS parameter properties) and `global` +// (`declare global { … }` ambient blocks). +const RESERVED_IDENTIFIER_NAMES = new Set(["constructor", "global"]); + +// Nodes too granular to be a useful diagnostic anchor; `findMinimalNode` climbs +// past them to the nearest meaningful enclosing node. +const TOO_GRANULAR_NODES = new Set([ + "Identifier", + "JSXIdentifier", + "PrivateIdentifier", + "Literal", + "MemberExpression", + "Property", + "JSXAttribute", + "JSXExpressionContainer", + "TemplateElement", +]); +const MAX_ENCLOSING_CLIMB = 6; + const FNV_OFFSET_BASIS = 0x811c9dc5; const FNV_PRIME = 0x01000193; +const isAstNode = (candidate: unknown): candidate is AstNode => + typeof candidate === "object" && candidate !== null && "type" in candidate; + +const offsetOf = (node: AstNode): Span | null => + typeof node.start === "number" && typeof node.end === "number" + ? { start: node.start, end: node.end } + : null; + +const visitChildren = (node: AstNode, visit: (child: unknown) => void): void => { + for (const key of Object.keys(node)) { + const value = node[key]; + if (Array.isArray(value)) for (const item of value) visit(item); + else if (value && typeof value === "object") visit(value); + } +}; + const fingerprint = (input: string): string => { let hash = FNV_OFFSET_BASIS; for (let charIndex = 0; charIndex < input.length; charIndex++) { @@ -61,9 +119,8 @@ const parseProgram = (source: string, fileName: string): unknown | null => { } }; -// Resolve the program for a snippet. An explicit `language` is authoritative — -// the caller knows the file's extension. With no hint we try `tsx` first (JSX + -// most TS) then fall back to `ts`, because value-position generics (`fn()`, +// An explicit `language` is authoritative. With no hint we try `tsx` first (JSX +// + most TS) then fall back to `ts`, because value-position generics (`fn()`, // `() => …`) parse as JSX under TSX rules and would otherwise fail. const parseSnippetProgram = ( source: string, @@ -76,23 +133,12 @@ const parseSnippetProgram = ( ); }; -const offsetOf = (node: AstNodeLike): { start: number; end: number } | null => { - if (typeof node.start !== "number" || typeof node.end !== "number") return null; - return { start: node.start, end: node.end }; -}; - -// The slice of a TemplateElement's span (in local source coordinates) that holds -// the quasi text, with any delimiters trimmed off. oxc reports these spans -// inconsistently — TS mode wraps the delimiters (`` ` ``/`${`/`}`), JS mode is the -// cooked text only — and raw text can be longer than the span when it contains -// escapes, so we never compute the end from `raw.length` (that can overrun the -// span into unrelated source). Instead we trim the real delimiter characters off -// the span ends, which stays strictly within `[localStart, localEnd]`. -const templateInnerSpan = ( - source: string, - localStart: number, - localEnd: number, -): { start: number; end: number } => { +// The quasi-text slice of a TemplateElement span (local coordinates), delimiters +// trimmed. oxc reports these spans inconsistently (TS mode wraps the +// `` ` ``/`${`/`}` delimiters, JS mode is the cooked text only) and raw text can +// be longer than the span, so we trim the real delimiter characters off the span +// ends rather than computing the end from `raw.length` (which can overrun). +const templateInnerSpan = (source: string, localStart: number, localEnd: number): Span => { let start = localStart; let end = localEnd; if (source[start] === "`" || source[start] === "}") start += 1; @@ -101,38 +147,6 @@ const templateInnerSpan = ( return { start, end }; }; -const visitChildren = (node: Record, visit: (child: unknown) => void): void => { - for (const key of Object.keys(node)) { - const value = node[key]; - if (Array.isArray(value)) for (const item of value) visit(item); - else if (value && typeof value === "object") visit(value); - } -}; - -// Placeholder kinds: every name is still scrambled, but the prefix encodes its -// *role* (never its actual name) so the shape stays legible — `h0` is a hook, -// `s0` a setter/mutation, `g0` a getter, `C0` a component, `e0` a host element, -// `p0` a prop/attribute, `v0` an everything-else variable. The component/host -// split (`C`/`e`) also keeps the JSX valid: `` stays a component, `` a -// host tag, mirroring React's uppercase-vs-lowercase convention. -type PlaceholderKind = "hook" | "setter" | "getter" | "component" | "element" | "prop" | "var"; - -// Contextual keywords that parse as `Identifier` but break re-parse when -// renamed, so they're left verbatim. See the rename pass. -const RESERVED_IDENTIFIER_NAMES = new Set(["constructor", "global"]); - -const PLACEHOLDER_PREFIX: Record = { - hook: "h", - setter: "s", - getter: "g", - component: "C", - element: "e", - prop: "p", - var: "v", -}; - -// Role inferred from naming convention alone (no name leaks): `use*` is a hook, -// `set*` a setter, `get*` a getter, PascalCase a component/class, else a var. const classifyByName = (name: string): PlaceholderKind => { if (/^use[A-Z]/.test(name)) return "hook"; if (/^set[A-Z]/.test(name)) return "setter"; @@ -169,16 +183,16 @@ const classifyJsxNodes = (program: unknown): Map => { return kinds; }; -// Keyed by (role, name), not name alone: one source name can play two roles — -// e.g. `className` as both a destructured var and a JSX attribute label — and -// each role must keep its own prefix. Keying by name only would let whichever -// role was seen first win, so structurally identical snippets that differ only -// in an underlying name would scramble (and hash) differently. `\u0000` can't -// occur in an identifier, so it's a safe key separator. +// Placeholders are keyed by (role, name), not name alone: one source name can +// play two roles — e.g. `className` as both a destructured var and a JSX +// attribute label — and each role keeps its own prefix. Keying by name only +// would let whichever role was seen first win, so structurally identical +// snippets differing only in an underlying name would scramble (and hash) +// differently. `\u0000` can't occur in an identifier, so it's a safe separator. const makePlaceholderFactory = (): ((name: string, kind: PlaceholderKind) => string) => { const assignedByKey = new Map(); const countByPrefix = new Map(); - return (name: string, kind: PlaceholderKind): string => { + return (name, kind) => { const key = `${kind}\u0000${name}`; const existing = assignedByKey.get(key); if (existing !== undefined) return existing; @@ -191,11 +205,10 @@ const makePlaceholderFactory = (): ((name: string, kind: PlaceholderKind) => str }; }; -// --- Readable scramble: rewrite the source in place. EVERY identifier (incl. -// React APIs, JSX tags, DOM/a11y attributes) → a role-prefixed placeholder -// applied consistently, and every literal blinded. Nothing is preserved. -// `offsetShift` rebases the AST's absolute offsets onto `source` when `source` -// is a slice of the original (minimal-node extraction). +// Rewrite the source in place: EVERY identifier (incl. React APIs, JSX tags, +// DOM/a11y attributes) → a role-prefixed placeholder applied consistently, and +// every literal blinded. `offsetShift` rebases the AST's absolute offsets onto +// `source` when `source` is a slice of the original (minimal-node extraction). const scrambleReadable = ( source: string, rootNode: unknown, @@ -204,7 +217,9 @@ const scrambleReadable = ( ): string => { const placeholderFor = makePlaceholderFactory(); const replacements: SourceReplacement[] = []; - const add = (span: { start: number; end: number }, text: string): void => { + // Replacements are stored in `source`-local coordinates; `add` rebases the + // AST's absolute span once at the call site so nothing downstream re-shifts. + const add = (span: Span, text: string): void => { replacements.push({ start: span.start - offsetShift, end: span.end - offsetShift, text }); }; const visit = (node: unknown): void => { @@ -215,21 +230,17 @@ const scrambleReadable = ( node.type === "JSXIdentifier" || node.type === "PrivateIdentifier" ) { - // A handful of contextual keywords surface as `Identifier` nodes and lose - // their meaning when renamed, so they're kept verbatim: `constructor` - // (TS parameter properties need the constructor-ness) and `global` - // (`declare global { … }` ambient blocks). Both break re-parse otherwise. if (span && typeof node.name === "string" && !RESERVED_IDENTIFIER_NAMES.has(node.name)) { const kind = jsxKinds.get(node) ?? classifyByName(node.name); - // A `PrivateIdentifier` span includes the leading `#`, but `name` does - // not. Keep the `#` (and a `#`-scoped lookup key) so `#x` stays a private + // A `PrivateIdentifier` span includes the leading `#` but `name` does + // not. Keep the `#` (and a `#`-scoped key) so `#x` stays a private // field, re-parses, and never collides with a public `x`. const isPrivate = node.type === "PrivateIdentifier"; const placeholder = placeholderFor(isPrivate ? `#${node.name}` : node.name, kind); add(span, isPrivate ? `#${placeholder}` : placeholder); } // Fall through to children: a typed binding carries its `typeAnnotation` - // as a child of the identifier, and those type names must be blinded too. + // as a child, and those type names must be blinded too. visitChildren(node, visit); return; } @@ -240,8 +251,7 @@ const scrambleReadable = ( /\S/.test(node.value) ) { // Visible text between JSX tags can carry copy / customer data. Collapse - // the whole run (surrounding whitespace included) to a single token; JSX - // text is always re-parseable regardless of content. + // the whole run (surrounding whitespace included) to a single token. add(span, "t"); return; } @@ -251,13 +261,13 @@ const scrambleReadable = ( else if (node.regex) add(span, "/re/"); } // Blank only the quasi text so the template's `${expr}` structure and - // backticks survive in both parser modes; otherwise the delimiters are - // destroyed and adjacent `${a}${b}` fuse into one name. Trimming the real - // delimiter chars keeps the blanked region strictly inside the node span. + // backticks survive in both parser modes; otherwise adjacent `${a}${b}` + // fuse into one name. `templateInnerSpan` works in local coordinates, so + // push directly instead of round-tripping back through `add`. if (node.type === "TemplateElement" && span) { const inner = templateInnerSpan(source, span.start - offsetShift, span.end - offsetShift); if (inner.end > inner.start) { - add({ start: inner.start + offsetShift, end: inner.end + offsetShift }, ""); + replacements.push({ start: inner.start, end: inner.end, text: "" }); } } visitChildren(node, visit); @@ -278,25 +288,13 @@ const scrambleReadable = ( return scrambled; }; -// --- Minimal-node extraction around a diagnostic. -const TOO_GRANULAR_NODES = new Set([ - "Identifier", - "JSXIdentifier", - "PrivateIdentifier", - "Literal", - "MemberExpression", - "Property", - "JSXAttribute", - "JSXExpressionContainer", - "TemplateElement", -]); -const MAX_ENCLOSING_CLIMB = 6; - -const findMinimalNode = (program: unknown, offset: number, length: number): AstNodeLike | null => { +// The smallest self-contained node spanning the byte range, climbing past +// overly granular nodes to the nearest meaningful enclosing one. +const findMinimalNode = (program: unknown, offset: number, length: number): AstNode | null => { const targetEnd = offset + Math.max(length, 1); let bestSize = Number.POSITIVE_INFINITY; - const chain: AstNodeLike[] = []; - let bestChain: AstNodeLike[] = []; + const chain: AstNode[] = []; + let bestChain: AstNode[] = []; const visit = (node: unknown): void => { if (!isAstNode(node)) return; const span = offsetOf(node); diff --git a/packages/react-doctor/tests/scramble-snippet.test.ts b/packages/react-doctor/tests/scramble-snippet.test.ts new file mode 100644 index 000000000..dbf1ac7f8 --- /dev/null +++ b/packages/react-doctor/tests/scramble-snippet.test.ts @@ -0,0 +1,150 @@ +import { describe, expect, it } from "vite-plus/test"; +import { scramble } from "../src/cli/utils/scramble-snippet.js"; + +describe("scramble", () => { + it("strips every identifier — including React APIs — and all literals", () => { + const result = scramble( + `import { useEffect } from "react"; +const secretBusinessName = 42; +useEffect(() => { doSecretThing(secretBusinessName); }, []);`, + { language: "ts" }, + ); + expect(result).not.toBeNull(); + expect(result!.source).not.toMatch(/useEffect/); + expect(result!.source).not.toMatch(/secretBusinessName/); + expect(result!.source).not.toMatch(/doSecretThing/); + expect(result!.source).not.toMatch(/42/); + }); + + it("scrambles only the minimal node around a diagnostic", () => { + const source = `import { useEffect, useState } from "react"; + +export const InvoiceWidget = ({ customerId }: { customerId: string }) => { + const [total, setTotal] = useState(0); + useEffect(() => { + fetchInvoiceTotal(customerId, "acme-corp").then((amount) => { + setTotal(amount * 1.07); + }); + }, []); + return
{total}
; +};`; + const offset = source.indexOf("useEffect(() =>"); + const whole = scramble(source, { language: "tsx" }); + const minimal = scramble(source, { + language: "tsx", + diagnostic: { offset, length: 9 }, + }); + expect(whole).not.toBeNull(); + expect(minimal).not.toBeNull(); + expect(minimal!.nodeType).toBe("CallExpression"); + expect(minimal!.source.length).toBeLessThan(whole!.source.length); + expect(minimal!.hash).not.toBe(whole!.hash); + }); + + it("is deterministic — same shape, different names, same hash", () => { + const first = scramble(`const taxRate = 0.07; const grandTotal = subtotal * taxRate;`, { + language: "ts", + }); + const second = scramble(`const discount = 0.42; const finalPrice = basePrice * discount;`, { + language: "ts", + }); + expect(first).not.toBeNull(); + expect(second).not.toBeNull(); + expect(first!.hash).toBe(second!.hash); + expect(first!.source).toBe(second!.source); + }); + + it("scrambles everything — imports, custom props, JSX tags, and DOM/a11y attributes", () => { + const result = scramble( + `import { Avatar } from "@acme/internal-design-system"; +export const Row = ({ customerName }) => ( + {}} secretRank={3}> + {customerName} + +);`, + { language: "tsx" }, + ); + expect(result).not.toBeNull(); + expect(result!.source).not.toMatch(/Avatar/); + expect(result!.source).not.toMatch(/customerName/); + expect(result!.source).not.toMatch(/secretRank/); + expect(result!.source).not.toMatch(/\$highlighted/); + expect(result!.source).not.toMatch(/\brole=/); + expect(result!.source).not.toMatch(/\balt=/); + expect(result!.source).not.toMatch(/data-testid=/); + expect(result!.source).not.toMatch(/onClick=/); + }); + + it("parses value-position generics when language is omitted (tsx→ts fallback)", () => { + const result = scramble(`const wrap = (value: Type) => identity(value);`); + expect(result).not.toBeNull(); + expect(result!.source).not.toMatch(/identity/); + expect(result!.source).not.toMatch(/wrap/); + const explicit = scramble(`const wrap = (value: Type) => identity(value);`, { + language: "ts", + }); + expect(explicit).not.toBeNull(); + expect(result!.source).toBe(explicit!.source); + }); + + it("stays naming-invariant when a name doubles as a var and a JSX attribute", () => { + const collides = scramble(`({ className }) =>
`, { + language: "tsx", + }); + const distinct = scramble(`({ role }) =>
`, { + language: "tsx", + }); + expect(collides).not.toBeNull(); + expect(distinct).not.toBeNull(); + expect(collides!.source).toBe(distinct!.source); + expect(collides!.hash).toBe(distinct!.hash); + }); + + it("blanks template text without overrunning the span (escapes + interpolation)", () => { + const result = scramble( + "const label = `secret\\n${first} and ${second} tail`; export { label };", + { language: "ts" }, + ); + expect(result).not.toBeNull(); + expect(result!.source).toMatch(/`[^`]*\$\{\w+\}[^`]*\$\{\w+\}[^`]*`/); + expect(result!.source).not.toMatch(/secret/); + expect(result!.source).not.toMatch(/tail/); + expect(scramble(result!.source, { language: "ts" })).not.toBeNull(); + }); + + it("keeps the # on private fields so they re-parse and don't collide", () => { + const result = scramble( + `class Vault { + #secret = 1; + read(secret: number) { return this.#secret + secret; } +}`, + { language: "ts" }, + ); + expect(result).not.toBeNull(); + expect(result!.source).not.toMatch(/secret/); + expect(result!.source).toMatch(/#\w+\s*=/); + expect(result!.source).toMatch(/this\.#\w+/); + expect(scramble(result!.source, { language: "ts" })).not.toBeNull(); + }); + + it("blinds visible JSX text content", () => { + const result = scramble(`export const Banner = () =>
Acme confidential roadmap
;`, { + language: "tsx", + }); + expect(result).not.toBeNull(); + expect(result!.source).not.toMatch(/confidential/); + expect(result!.source).not.toMatch(/roadmap/); + expect(result!.source).not.toMatch(/Acme/); + }); + + it("blinds type names on typed bindings and params", () => { + const result = scramble( + `const id: AcmeInvoiceId = make(); +const lookup = (ref: InternalCustomerRef) => ref;`, + { language: "ts" }, + ); + expect(result).not.toBeNull(); + expect(result!.source).not.toMatch(/AcmeInvoiceId/); + expect(result!.source).not.toMatch(/InternalCustomerRef/); + }); +}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a9a909f6a..df167531d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -229,6 +229,9 @@ importers: magicast: specifier: ^0.5.3 version: 0.5.3 + oxc-parser: + specifier: ^0.132.0 + version: 0.132.0 oxlint: specifier: '>=1.66.0 <1.67.0' version: 1.66.0(oxlint-tsgolint@0.23.0) From 8dc5dc94cfce4bb45ed0c5ecb7105b5d6d1b0914 Mon Sep 17 00:00:00 2001 From: Aiden Bai Date: Mon, 22 Jun 2026 17:03:17 -0700 Subject: [PATCH 06/13] docs(react-doctor): clarify scramble diagnostic offsets are UTF-16, not bytes oxc AST spans (and String.slice) are UTF-16 code-unit indices, so the diagnostic offset/length must be too. The prior "byte range" wording invited a caller to pass raw oxlint Diagnostic byte offsets, which would pick the wrong node on non-ASCII source. Document the actual UTF-16 contract. --- .../react-doctor/src/cli/utils/scramble-snippet.ts | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/packages/react-doctor/src/cli/utils/scramble-snippet.ts b/packages/react-doctor/src/cli/utils/scramble-snippet.ts index b95b4d539..6625ada4c 100644 --- a/packages/react-doctor/src/cli/utils/scramble-snippet.ts +++ b/packages/react-doctor/src/cli/utils/scramble-snippet.ts @@ -4,7 +4,11 @@ export interface ScrambleOptions { language?: "ts" | "tsx" | "js" | "jsx"; /** * When set, scrambles only the smallest self-contained node spanning this - * byte range (an `offset`/`length`) instead of the whole source. + * range instead of the whole source. `offset`/`length` are UTF-16 code-unit + * indices into `source` (the same units oxc AST spans and `String.slice` + * use) — NOT UTF-8 byte offsets. A caller holding oxlint `Diagnostic` byte + * offsets must convert them to UTF-16 first, or non-ASCII source picks the + * wrong node. */ diagnostic?: { offset: number; length: number }; } @@ -334,8 +338,8 @@ const findMinimalNode = (program: unknown, offset: number, length: number): AstN * `v`ar). Returns the readable scrambled `source` plus a stable `hash` of it. * * With `options.diagnostic`, scrambles only the minimal node spanning the given - * byte range. Returns `null` when the source can't be parsed or no node spans - * the range. + * range (UTF-16 code-unit offsets, matching oxc AST spans). Returns `null` when + * the source can't be parsed or no node spans the range. */ export const scramble = (source: string, options: ScrambleOptions = {}): ScrambledCode | null => { const program = parseSnippetProgram(source, options.language); From 1b534f32a950341675aeb298487786e525e89fb2 Mon Sep 17 00:00:00 2001 From: Aiden Bai Date: Mon, 22 Jun 2026 17:15:52 -0700 Subject: [PATCH 07/13] refactor(react-doctor): trim scramble comments to the load-bearing few MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Drop narration comments that restate the code; keep only the notes that guard real footguns the code can't convey — the UTF-16 offset contract, the tsx→ts parse fallback, oxc's template-span quirk, and the role-keying hash-invariance rationale. --- .../src/cli/utils/scramble-snippet.ts | 84 +++---------------- 1 file changed, 12 insertions(+), 72 deletions(-) diff --git a/packages/react-doctor/src/cli/utils/scramble-snippet.ts b/packages/react-doctor/src/cli/utils/scramble-snippet.ts index 6625ada4c..116c50838 100644 --- a/packages/react-doctor/src/cli/utils/scramble-snippet.ts +++ b/packages/react-doctor/src/cli/utils/scramble-snippet.ts @@ -2,23 +2,16 @@ import { parseSync } from "oxc-parser"; export interface ScrambleOptions { language?: "ts" | "tsx" | "js" | "jsx"; - /** - * When set, scrambles only the smallest self-contained node spanning this - * range instead of the whole source. `offset`/`length` are UTF-16 code-unit - * indices into `source` (the same units oxc AST spans and `String.slice` - * use) — NOT UTF-8 byte offsets. A caller holding oxlint `Diagnostic` byte - * offsets must convert them to UTF-16 first, or non-ASCII source picks the - * wrong node. - */ + // `offset`/`length` are UTF-16 code-unit indices into `source` (the units oxc + // AST spans and `String.slice` use), NOT UTF-8 byte offsets. Callers holding + // oxlint `Diagnostic` byte offsets must convert first or non-ASCII source + // picks the wrong node. diagnostic?: { offset: number; length: number }; } export interface ScrambledCode { - /** Readable scrambled source: structure kept, names/literals blinded. */ source: string; - /** FNV-1a fingerprint (hex) of `source` — a stable dedup key. */ hash: string; - /** Node the extraction settled on (e.g. `CallExpression`), else null. */ nodeType: string | null; } @@ -40,9 +33,6 @@ interface Span { end: number; } -// Role inferred from a name without leaking it: `use*` hook, `set*` setter, -// `get*` getter, PascalCase component/class, else var. JSX tag + attribute -// roles can't be read from the name alone, so those are classified by node. type PlaceholderKind = "hook" | "setter" | "getter" | "component" | "element" | "prop" | "var"; const FILENAME_FOR_LANGUAGE: Record, string> = { @@ -52,9 +42,6 @@ const FILENAME_FOR_LANGUAGE: Record, st jsx: "snippet.jsx", }; -// The prefix encodes the role (never the name) so the shape stays legible. The -// component/host split (`C`/`e`) also keeps JSX valid: `` is a component, -// `` a host tag, mirroring React's uppercase-vs-lowercase convention. const PLACEHOLDER_PREFIX: Record = { hook: "h", setter: "s", @@ -65,13 +52,8 @@ const PLACEHOLDER_PREFIX: Record = { var: "v", }; -// Contextual keywords that parse as `Identifier` but break re-parse when -// renamed: `constructor` (TS parameter properties) and `global` -// (`declare global { … }` ambient blocks). const RESERVED_IDENTIFIER_NAMES = new Set(["constructor", "global"]); -// Nodes too granular to be a useful diagnostic anchor; `findMinimalNode` climbs -// past them to the nearest meaningful enclosing node. const TOO_GRANULAR_NODES = new Set([ "Identifier", "JSXIdentifier", @@ -123,9 +105,8 @@ const parseProgram = (source: string, fileName: string): unknown | null => { } }; -// An explicit `language` is authoritative. With no hint we try `tsx` first (JSX -// + most TS) then fall back to `ts`, because value-position generics (`fn()`, -// `() => …`) parse as JSX under TSX rules and would otherwise fail. +// tsx first then ts: value-position generics (`fn()`, `() => …`) parse as +// JSX under tsx rules, so the ts fallback is required when no language is given. const parseSnippetProgram = ( source: string, language: ScrambleOptions["language"], @@ -137,11 +118,9 @@ const parseSnippetProgram = ( ); }; -// The quasi-text slice of a TemplateElement span (local coordinates), delimiters -// trimmed. oxc reports these spans inconsistently (TS mode wraps the -// `` ` ``/`${`/`}` delimiters, JS mode is the cooked text only) and raw text can -// be longer than the span, so we trim the real delimiter characters off the span -// ends rather than computing the end from `raw.length` (which can overrun). +// oxc reports TemplateElement spans inconsistently (tsx wraps the +// `` ` ``/`${`/`}` delimiters, js is cooked text only) and raw text can exceed +// the span, so trim the real delimiter chars rather than using `raw.length`. const templateInnerSpan = (source: string, localStart: number, localEnd: number): Span => { let start = localStart; let end = localEnd; @@ -159,9 +138,6 @@ const classifyByName = (name: string): PlaceholderKind => { return "var"; }; -// JSX tag + attribute name nodes carry a role the name alone can't reveal (a -// host `div` vs a generic var; an attribute name vs a value). Classify those by -// node identity in a pre-pass; everything else falls back to `classifyByName`. const classifyJsxNodes = (program: unknown): Map => { const kinds = new Map(); const visit = (node: unknown): void => { @@ -187,12 +163,9 @@ const classifyJsxNodes = (program: unknown): Map => { return kinds; }; -// Placeholders are keyed by (role, name), not name alone: one source name can -// play two roles — e.g. `className` as both a destructured var and a JSX -// attribute label — and each role keeps its own prefix. Keying by name only -// would let whichever role was seen first win, so structurally identical -// snippets differing only in an underlying name would scramble (and hash) -// differently. `\u0000` can't occur in an identifier, so it's a safe separator. +// Keyed by (role, name), not name alone: one source name can play two roles +// (e.g. `className` as a var and a JSX attribute label) and each role keeps its +// own prefix, which keeps structurally identical snippets hashing identically. const makePlaceholderFactory = (): ((name: string, kind: PlaceholderKind) => string) => { const assignedByKey = new Map(); const countByPrefix = new Map(); @@ -209,10 +182,6 @@ const makePlaceholderFactory = (): ((name: string, kind: PlaceholderKind) => str }; }; -// Rewrite the source in place: EVERY identifier (incl. React APIs, JSX tags, -// DOM/a11y attributes) → a role-prefixed placeholder applied consistently, and -// every literal blinded. `offsetShift` rebases the AST's absolute offsets onto -// `source` when `source` is a slice of the original (minimal-node extraction). const scrambleReadable = ( source: string, rootNode: unknown, @@ -221,8 +190,6 @@ const scrambleReadable = ( ): string => { const placeholderFor = makePlaceholderFactory(); const replacements: SourceReplacement[] = []; - // Replacements are stored in `source`-local coordinates; `add` rebases the - // AST's absolute span once at the call site so nothing downstream re-shifts. const add = (span: Span, text: string): void => { replacements.push({ start: span.start - offsetShift, end: span.end - offsetShift, text }); }; @@ -236,15 +203,10 @@ const scrambleReadable = ( ) { if (span && typeof node.name === "string" && !RESERVED_IDENTIFIER_NAMES.has(node.name)) { const kind = jsxKinds.get(node) ?? classifyByName(node.name); - // A `PrivateIdentifier` span includes the leading `#` but `name` does - // not. Keep the `#` (and a `#`-scoped key) so `#x` stays a private - // field, re-parses, and never collides with a public `x`. const isPrivate = node.type === "PrivateIdentifier"; const placeholder = placeholderFor(isPrivate ? `#${node.name}` : node.name, kind); add(span, isPrivate ? `#${placeholder}` : placeholder); } - // Fall through to children: a typed binding carries its `typeAnnotation` - // as a child, and those type names must be blinded too. visitChildren(node, visit); return; } @@ -254,8 +216,6 @@ const scrambleReadable = ( typeof node.value === "string" && /\S/.test(node.value) ) { - // Visible text between JSX tags can carry copy / customer data. Collapse - // the whole run (surrounding whitespace included) to a single token. add(span, "t"); return; } @@ -264,10 +224,6 @@ const scrambleReadable = ( else if (typeof node.value === "number" || typeof node.value === "bigint") add(span, "0"); else if (node.regex) add(span, "/re/"); } - // Blank only the quasi text so the template's `${expr}` structure and - // backticks survive in both parser modes; otherwise adjacent `${a}${b}` - // fuse into one name. `templateInnerSpan` works in local coordinates, so - // push directly instead of round-tripping back through `add`. if (node.type === "TemplateElement" && span) { const inner = templateInnerSpan(source, span.start - offsetShift, span.end - offsetShift); if (inner.end > inner.start) { @@ -278,8 +234,6 @@ const scrambleReadable = ( }; visit(rootNode); - // Right-to-left; skip spans overlapping the previous one (shorthand patterns - // emit key + value sharing one span, which would otherwise double-slice). replacements.sort((first, second) => second.start - first.start); let scrambled = source; let previousStart = Number.POSITIVE_INFINITY; @@ -292,8 +246,6 @@ const scrambleReadable = ( return scrambled; }; -// The smallest self-contained node spanning the byte range, climbing past -// overly granular nodes to the nearest meaningful enclosing one. const findMinimalNode = (program: unknown, offset: number, length: number): AstNode | null => { const targetEnd = offset + Math.max(length, 1); let bestSize = Number.POSITIVE_INFINITY; @@ -329,18 +281,6 @@ const findMinimalNode = (program: unknown, offset: number, length: number): AstN return bestChain[index]; }; -/** - * Scrambles a snippet so EVERY identifier becomes a role-prefixed placeholder - * applied consistently (so aliasing survives) — including React APIs, component - * names, JSX tags, and DOM/a11y attributes — and every string / numeric / - * template / regex literal is blinded. The prefix encodes the role, never the - * name (`h`ook / `s`etter / `g`etter / `C`omponent / host `e`lement / `p`rop / - * `v`ar). Returns the readable scrambled `source` plus a stable `hash` of it. - * - * With `options.diagnostic`, scrambles only the minimal node spanning the given - * range (UTF-16 code-unit offsets, matching oxc AST spans). Returns `null` when - * the source can't be parsed or no node spans the range. - */ export const scramble = (source: string, options: ScrambleOptions = {}): ScrambledCode | null => { const program = parseSnippetProgram(source, options.language); if (program === null) return null; From a98bccf8a4df5393128685eef4f62c0711ace91e Mon Sep 17 00:00:00 2001 From: Aiden Bai Date: Mon, 22 Jun 2026 17:51:43 -0700 Subject: [PATCH 08/13] refactor(react-doctor): reuse the canonical OxcAstNode name in scramble Rename the local AstNode interface (and its isAstNode guard) to OxcAstNode / isOxcAstNode, matching the existing names in deslop-js's oxc-ast-node.ts, and align the field types (start?/end? as number) with that canonical shape. --- .../src/cli/utils/scramble-snippet.ts | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/packages/react-doctor/src/cli/utils/scramble-snippet.ts b/packages/react-doctor/src/cli/utils/scramble-snippet.ts index 116c50838..0a795fc1b 100644 --- a/packages/react-doctor/src/cli/utils/scramble-snippet.ts +++ b/packages/react-doctor/src/cli/utils/scramble-snippet.ts @@ -15,11 +15,11 @@ export interface ScrambledCode { nodeType: string | null; } -interface AstNode { +interface OxcAstNode { type: string; - start?: unknown; - end?: unknown; - [field: string]: unknown; + start?: number; + end?: number; + [key: string]: unknown; } interface SourceReplacement { @@ -70,15 +70,15 @@ const MAX_ENCLOSING_CLIMB = 6; const FNV_OFFSET_BASIS = 0x811c9dc5; const FNV_PRIME = 0x01000193; -const isAstNode = (candidate: unknown): candidate is AstNode => +const isOxcAstNode = (candidate: unknown): candidate is OxcAstNode => typeof candidate === "object" && candidate !== null && "type" in candidate; -const offsetOf = (node: AstNode): Span | null => +const offsetOf = (node: OxcAstNode): Span | null => typeof node.start === "number" && typeof node.end === "number" ? { start: node.start, end: node.end } : null; -const visitChildren = (node: AstNode, visit: (child: unknown) => void): void => { +const visitChildren = (node: OxcAstNode, visit: (child: unknown) => void): void => { for (const key of Object.keys(node)) { const value = node[key]; if (Array.isArray(value)) for (const item of value) visit(item); @@ -141,10 +141,10 @@ const classifyByName = (name: string): PlaceholderKind => { const classifyJsxNodes = (program: unknown): Map => { const kinds = new Map(); const visit = (node: unknown): void => { - if (!isAstNode(node)) return; + if (!isOxcAstNode(node)) return; if ( (node.type === "JSXOpeningElement" || node.type === "JSXClosingElement") && - isAstNode(node.name) && + isOxcAstNode(node.name) && node.name.type === "JSXIdentifier" && typeof node.name.name === "string" ) { @@ -152,7 +152,7 @@ const classifyJsxNodes = (program: unknown): Map => { } if ( node.type === "JSXAttribute" && - isAstNode(node.name) && + isOxcAstNode(node.name) && node.name.type === "JSXIdentifier" ) { kinds.set(node.name, "prop"); @@ -194,7 +194,7 @@ const scrambleReadable = ( replacements.push({ start: span.start - offsetShift, end: span.end - offsetShift, text }); }; const visit = (node: unknown): void => { - if (!isAstNode(node)) return; + if (!isOxcAstNode(node)) return; const span = offsetOf(node); if ( node.type === "Identifier" || @@ -246,13 +246,13 @@ const scrambleReadable = ( return scrambled; }; -const findMinimalNode = (program: unknown, offset: number, length: number): AstNode | null => { +const findMinimalNode = (program: unknown, offset: number, length: number): OxcAstNode | null => { const targetEnd = offset + Math.max(length, 1); let bestSize = Number.POSITIVE_INFINITY; - const chain: AstNode[] = []; - let bestChain: AstNode[] = []; + const chain: OxcAstNode[] = []; + let bestChain: OxcAstNode[] = []; const visit = (node: unknown): void => { - if (!isAstNode(node)) return; + if (!isOxcAstNode(node)) return; const span = offsetOf(node); if (span && span.start <= offset && span.end >= targetEnd) { chain.push(node); From 0bdc4ee365e818bed878b5fac0cdcd61cfd359d0 Mon Sep 17 00:00:00 2001 From: Aiden Bai Date: Mon, 22 Jun 2026 18:38:40 -0700 Subject: [PATCH 09/13] refactor: dedupe OxcAstNode by reusing deslop-js's canonical helper scramble redeclared OxcAstNode/isOxcAstNode, a near-copy of deslop-js's oxc-ast-node util. Expose that guard + interface from deslop-js's entry (they were already internal) and import them in react-doctor instead of keeping a third copy. No runtime behavior change. --- .changeset/deslop-export-oxc-ast-node.md | 5 +++++ packages/deslop-js/src/index.ts | 3 +++ .../react-doctor/src/cli/utils/scramble-snippet.ts | 11 +---------- 3 files changed, 9 insertions(+), 10 deletions(-) create mode 100644 .changeset/deslop-export-oxc-ast-node.md diff --git a/.changeset/deslop-export-oxc-ast-node.md b/.changeset/deslop-export-oxc-ast-node.md new file mode 100644 index 000000000..88ee15684 --- /dev/null +++ b/.changeset/deslop-export-oxc-ast-node.md @@ -0,0 +1,5 @@ +--- +"deslop-js": patch +--- + +Expose the `isOxcAstNode` type guard and its `OxcAstNode` interface from the package entry. These were already internal utilities; publishing them lets consumers walk oxc ASTs without re-declaring the same guard. No runtime behavior changes. diff --git a/packages/deslop-js/src/index.ts b/packages/deslop-js/src/index.ts index 9fc9e61a0..c2baa15a3 100644 --- a/packages/deslop-js/src/index.ts +++ b/packages/deslop-js/src/index.ts @@ -176,6 +176,9 @@ export type { DeslopErrorSeverity, } from "./types.js"; +export { isOxcAstNode } from "./utils/oxc-ast-node.js"; +export type { OxcAstNode } from "./utils/oxc-ast-node.js"; + /** * Default flags below mark rules off-by-default. Rationale for each: * diff --git a/packages/react-doctor/src/cli/utils/scramble-snippet.ts b/packages/react-doctor/src/cli/utils/scramble-snippet.ts index 0a795fc1b..9c24f3f0a 100644 --- a/packages/react-doctor/src/cli/utils/scramble-snippet.ts +++ b/packages/react-doctor/src/cli/utils/scramble-snippet.ts @@ -1,4 +1,5 @@ import { parseSync } from "oxc-parser"; +import { isOxcAstNode, type OxcAstNode } from "deslop-js"; export interface ScrambleOptions { language?: "ts" | "tsx" | "js" | "jsx"; @@ -15,13 +16,6 @@ export interface ScrambledCode { nodeType: string | null; } -interface OxcAstNode { - type: string; - start?: number; - end?: number; - [key: string]: unknown; -} - interface SourceReplacement { start: number; end: number; @@ -70,9 +64,6 @@ const MAX_ENCLOSING_CLIMB = 6; const FNV_OFFSET_BASIS = 0x811c9dc5; const FNV_PRIME = 0x01000193; -const isOxcAstNode = (candidate: unknown): candidate is OxcAstNode => - typeof candidate === "object" && candidate !== null && "type" in candidate; - const offsetOf = (node: OxcAstNode): Span | null => typeof node.start === "number" && typeof node.end === "number" ? { start: node.start, end: node.end } From 42fae4ec01b595fef83100c086e551677e8a41d3 Mon Sep 17 00:00:00 2001 From: Aiden Bai Date: Mon, 22 Jun 2026 19:25:01 -0700 Subject: [PATCH 10/13] feat(react-doctor): emit anonymized diagnostic snippets to telemetry For each scan, scramble a capped, hash-deduped sample of the structural shapes rules fire on (identifiers/literals blinded) and emit them as child spans of the run trace. No real source, names, or paths leave the machine; a no-op when Sentry tracing is off. Promotes core's private getUtf16Offset to a shared utf8OffsetToUtf16 util (reused by resolve-use-call-binding) for the byte->UTF-16 offset conversion the scramble call needs. --- .changeset/scramble-diagnostic-snippets.md | 5 + packages/core/src/index.ts | 1 + .../oxlint/resolve-use-call-binding.ts | 6 +- .../core/src/utils/utf8-offset-to-utf16.ts | 9 ++ .../react-doctor/src/cli/utils/constants.ts | 7 + .../cli/utils/record-diagnostic-snippets.ts | 135 ++++++++++++++++++ packages/react-doctor/src/inspect.ts | 5 + .../tests/record-diagnostic-snippets.test.ts | 103 +++++++++++++ 8 files changed, 267 insertions(+), 4 deletions(-) create mode 100644 .changeset/scramble-diagnostic-snippets.md create mode 100644 packages/core/src/utils/utf8-offset-to-utf16.ts create mode 100644 packages/react-doctor/src/cli/utils/record-diagnostic-snippets.ts create mode 100644 packages/react-doctor/tests/record-diagnostic-snippets.test.ts diff --git a/.changeset/scramble-diagnostic-snippets.md b/.changeset/scramble-diagnostic-snippets.md new file mode 100644 index 000000000..ab4548895 --- /dev/null +++ b/.changeset/scramble-diagnostic-snippets.md @@ -0,0 +1,5 @@ +--- +"react-doctor": patch +--- + +Ship anonymized diagnostic snippets to telemetry. When Sentry tracing is enabled, each scan now emits a small, deduplicated, capped sample of the structural shapes that rules fire on — identifiers and literals are blinded, only the AST structure is preserved — as child spans of the run trace. No real source, names, paths, or literals leave the machine, and the pass is a no-op when telemetry is off. diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index 6bc6a8004..f0782baa5 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -96,6 +96,7 @@ export * from "./utils/redact-sensitive-text.js"; export * from "./utils/resolve-github-actions-score-metadata.js"; export * from "./utils/resolve-scan-concurrency.js"; export * from "./utils/to-relative-path.js"; +export * from "./utils/utf8-offset-to-utf16.js"; export * from "./utils/warn-config-issue.js"; export * from "./runners/oxlint/capabilities.js"; export * from "./runners/oxlint/config.js"; diff --git a/packages/core/src/runners/oxlint/resolve-use-call-binding.ts b/packages/core/src/runners/oxlint/resolve-use-call-binding.ts index f7963adcc..348c626ba 100644 --- a/packages/core/src/runners/oxlint/resolve-use-call-binding.ts +++ b/packages/core/src/runners/oxlint/resolve-use-call-binding.ts @@ -1,4 +1,5 @@ import * as ts from "typescript"; +import { utf8OffsetToUtf16 } from "../../utils/utf8-offset-to-utf16.js"; interface ReactImportBindings { namespaceNames: Set; @@ -36,9 +37,6 @@ const getScriptKind = (filename: string): ts.ScriptKind => { return ts.ScriptKind.JS; }; -const getUtf16Offset = (sourceText: string, utf8Offset: number): number => - Buffer.from(sourceText).subarray(0, utf8Offset).toString("utf8").length; - const unwrapExpression = (expression: ts.Expression): ts.Expression => { let currentExpression = expression; while ( @@ -606,7 +604,7 @@ export const resolveUseCallBinding = ( true, getScriptKind(filename), ); - const useOffset = getUtf16Offset(sourceText, utf8Offset); + const useOffset = utf8OffsetToUtf16(sourceText, utf8Offset); const useIdentifier = findUseCallIdentifier(sourceFile, useOffset); if (!useIdentifier) return null; return resolveIdentifierBinding( diff --git a/packages/core/src/utils/utf8-offset-to-utf16.ts b/packages/core/src/utils/utf8-offset-to-utf16.ts new file mode 100644 index 000000000..8c646d988 --- /dev/null +++ b/packages/core/src/utils/utf8-offset-to-utf16.ts @@ -0,0 +1,9 @@ +/** + * Converts a UTF-8 byte offset (oxlint / oxc diagnostics report locations in + * bytes) into the UTF-16 code-unit index that `String.prototype.slice` and oxc + * AST `start`/`end` spans use. The two diverge on any non-ASCII source, so a + * caller crossing that boundary (e.g. slicing a snippet around a diagnostic) + * must convert first or it indexes the wrong character. + */ +export const utf8OffsetToUtf16 = (sourceText: string, utf8Offset: number): number => + Buffer.from(sourceText).subarray(0, utf8Offset).toString("utf8").length; diff --git a/packages/react-doctor/src/cli/utils/constants.ts b/packages/react-doctor/src/cli/utils/constants.ts index ca18c4dbc..5bde521ab 100644 --- a/packages/react-doctor/src/cli/utils/constants.ts +++ b/packages/react-doctor/src/cli/utils/constants.ts @@ -43,6 +43,13 @@ export const GH_PR_LIST_MAX = 100; // compact, passable CLI argument. export const HANDOFF_MAX_FILES_PER_RULE = 3; +// Telemetry sampling for anonymized diagnostic snippets: at most this many +// distinct (by structural hash) scrambled snippets ship per scan, and at most +// this many diagnostics are inspected before giving up — bounds the parse work +// so a huge result set never pays to scramble every site. +export const SCRAMBLED_SNIPPET_LIMIT = 20; +export const SCRAMBLED_SNIPPET_SCAN_LIMIT = 200; + // Social proof for the "Add to CI" pitch (shown in the post-scan handoff // prompt and embedded in the agent-handoff prompt). export const CI_TRUST_COMPANIES = "PayPal, Rippling, and Alibaba"; diff --git a/packages/react-doctor/src/cli/utils/record-diagnostic-snippets.ts b/packages/react-doctor/src/cli/utils/record-diagnostic-snippets.ts new file mode 100644 index 000000000..35baf3b44 --- /dev/null +++ b/packages/react-doctor/src/cli/utils/record-diagnostic-snippets.ts @@ -0,0 +1,135 @@ +import * as fs from "node:fs"; +import * as Sentry from "@sentry/node"; +import { getDiagnosticRuleIdentity, utf8OffsetToUtf16 } from "@react-doctor/core"; +import type { Diagnostic } from "@react-doctor/core"; +import { isSentryTracingEnabled } from "../../instrument.js"; +import { SCRAMBLED_SNIPPET_LIMIT, SCRAMBLED_SNIPPET_SCAN_LIMIT } from "./constants.js"; +import { resolveAbsolutePath } from "./resolve-absolute-path.js"; +import { scramble, type ScrambleOptions } from "./scramble-snippet.js"; + +export interface ScrambledDiagnosticSnippet { + readonly rule: string; + readonly plugin: string; + readonly category: string; + readonly severity: string; + /** Structure-only source: identifiers/literals blinded, shape preserved. */ + readonly source: string; + /** Stable structural fingerprint, used to dedupe and group identical shapes. */ + readonly hash: string; + readonly nodeType: string | null; +} + +const LANGUAGE_BY_EXTENSION: Record = { + ts: "ts", + mts: "ts", + cts: "ts", + tsx: "tsx", + js: "js", + mjs: "js", + cjs: "js", + jsx: "jsx", +}; + +const languageForPath = (filePath: string): ScrambleOptions["language"] => + LANGUAGE_BY_EXTENSION[filePath.slice(filePath.lastIndexOf(".") + 1).toLowerCase()]; + +/** + * Scrambles a capped, deduplicated sample of the scan's diagnostics into + * anonymized structural snippets. Pure and exported so the sampling + offset + * conversion is unit-testable without a filesystem or Sentry client: `readSource` + * is injected (returns null when a file can't be read). + * + * Each diagnostic's `offset`/`length` are oxlint UTF-8 byte offsets, so they're + * converted to UTF-16 code units before `scramble` (which slices the source and + * matches oxc AST spans, both UTF-16). Snippets are deduped by structural hash + * and capped at `SCRAMBLED_SNIPPET_LIMIT`; at most `SCRAMBLED_SNIPPET_SCAN_LIMIT` + * diagnostics are inspected so a large result set never scrambles every site. + */ +export const buildScrambledDiagnosticSnippets = ( + diagnostics: ReadonlyArray, + readSource: (filePath: string) => string | null, +): ScrambledDiagnosticSnippet[] => { + const snippets: ScrambledDiagnosticSnippet[] = []; + const seenHashes = new Set(); + const sourceByPath = new Map(); + let inspected = 0; + + for (const diagnostic of diagnostics) { + if (snippets.length >= SCRAMBLED_SNIPPET_LIMIT) break; + if (inspected >= SCRAMBLED_SNIPPET_SCAN_LIMIT) break; + if (diagnostic.offset === undefined || diagnostic.length === undefined) continue; + inspected += 1; + + let source = sourceByPath.get(diagnostic.filePath); + if (source === undefined) { + source = readSource(diagnostic.filePath); + sourceByPath.set(diagnostic.filePath, source); + } + if (source === null) continue; + + const startUtf16 = utf8OffsetToUtf16(source, diagnostic.offset); + const endUtf16 = utf8OffsetToUtf16(source, diagnostic.offset + diagnostic.length); + const scrambled = scramble(source, { + language: languageForPath(diagnostic.filePath), + diagnostic: { offset: startUtf16, length: endUtf16 - startUtf16 }, + }); + if (scrambled === null || seenHashes.has(scrambled.hash)) continue; + seenHashes.add(scrambled.hash); + + const { ruleKey, category } = getDiagnosticRuleIdentity(diagnostic); + snippets.push({ + rule: ruleKey, + plugin: diagnostic.plugin, + category, + severity: diagnostic.severity, + source: scrambled.source, + hash: scrambled.hash, + nodeType: scrambled.nodeType, + }); + } + + return snippets; +}; + +/** + * Emits the anonymized diagnostic snippets as one child span per distinct + * snippet under the run transaction, so the structural shape of what rules fire + * on is queryable in Sentry's Trace Explorer without ever shipping real source. + * A no-op when Sentry tracing is off (the snippets only make sense as children + * of the run span), and the whole pass is wrapped so a read/parse failure can + * never break a scan. The scrambled `source` carries no identifiers or literals, + * and the transaction still passes through `scrubSentryEvent` before send. + */ +export const recordDiagnosticSnippets = (input: { + diagnostics: ReadonlyArray; + rootDirectory: string; +}): void => { + if (!isSentryTracingEnabled()) return; + try { + const snippets = buildScrambledDiagnosticSnippets(input.diagnostics, (filePath) => { + try { + return fs.readFileSync(resolveAbsolutePath(filePath, input.rootDirectory), "utf8"); + } catch { + return null; + } + }); + for (const snippet of snippets) { + Sentry.startInactiveSpan({ + name: "react-doctor diagnostic snippet", + op: "diagnostic.snippet", + attributes: { + rule: snippet.rule, + plugin: snippet.plugin, + category: snippet.category, + severity: snippet.severity, + "snippet.hash": snippet.hash, + "snippet.nodeType": snippet.nodeType ?? "unknown", + "snippet.source": snippet.source, + }, + }).end(); + } + } catch { + // Telemetry must never break a scan — drop the whole snippet pass on any + // read/parse/span failure. + } +}; diff --git a/packages/react-doctor/src/inspect.ts b/packages/react-doctor/src/inspect.ts index 8ec74da37..8697b4ab4 100644 --- a/packages/react-doctor/src/inspect.ts +++ b/packages/react-doctor/src/inspect.ts @@ -26,6 +26,7 @@ import type { SentryRootSpan } from "./cli/utils/with-sentry-run-span.js"; import { BASELINE_FILES_TEMP_DIR_PREFIX, METRIC } from "./cli/utils/constants.js"; import { recordCount } from "./cli/utils/record-metric.js"; import { recordScanMetrics } from "./cli/utils/record-scan-metrics.js"; +import { recordDiagnosticSnippets } from "./cli/utils/record-diagnostic-snippets.js"; import { recordRunEvent } from "./cli/utils/build-run-event.js"; import type { ChangedFileLineRanges, @@ -817,6 +818,10 @@ const renderAndRecordScan = async (input: RenderAndRecordScanInput): Promise = {}): Diagnostic => ({ + filePath: "src/app.tsx", + plugin: "react-doctor", + rule: "test-rule", + severity: "error", + message: "x", + help: "", + line: 1, + column: 1, + category: "Test", + ...overrides, +}); + +const toByteOffset = (source: string, utf16Index: number): number => + Buffer.byteLength(source.slice(0, utf16Index), "utf8"); + +describe("buildScrambledDiagnosticSnippets", () => { + it("scrambles the minimal node and carries the rule identity", () => { + const source = `import { useEffect } from "react"; +useEffect(() => { doSecretThing(secretValue); }, []);`; + const utf16Index = source.indexOf("useEffect(() =>"); + const diagnostic = buildDiagnostic({ + offset: toByteOffset(source, utf16Index), + length: "useEffect".length, + category: "Performance", + rule: "no-effect", + }); + + const snippets = buildScrambledDiagnosticSnippets([diagnostic], () => source); + + expect(snippets).toHaveLength(1); + expect(snippets[0].nodeType).toBe("CallExpression"); + expect(snippets[0].rule).toBe("react-doctor/no-effect"); + expect(snippets[0].category).toBe("Performance"); + expect(snippets[0].severity).toBe("error"); + expect(snippets[0].source).not.toMatch(/doSecretThing/); + expect(snippets[0].source).not.toMatch(/secretValue/); + expect(snippets[0].hash).toMatch(/^[0-9a-f]{8}$/); + }); + + it("converts oxlint UTF-8 byte offsets so non-ASCII source picks the right node", () => { + // The emoji + accents before the target make the byte offset diverge from + // the UTF-16 index; if the conversion were skipped the offset would land on + // the wrong node (or none). + const source = `const banner = "héllo wörld 😀 from accounting"; +import { useEffect } from "react"; +useEffect(() => { doSecretThing(secretValue); }, []);`; + const utf16Index = source.indexOf("useEffect(() =>"); + const diagnostic = buildDiagnostic({ + offset: toByteOffset(source, utf16Index), + length: "useEffect".length, + }); + + const snippets = buildScrambledDiagnosticSnippets([diagnostic], () => source); + + expect(snippets).toHaveLength(1); + expect(snippets[0].nodeType).toBe("CallExpression"); + expect(snippets[0].source).not.toMatch(/banner|accounting|doSecretThing/); + }); + + it("dedupes structurally identical snippets by hash across files", () => { + const makeSource = (name: string): string => + `import { useEffect } from "react"; +useEffect(() => { ${name}(); }, []);`; + const sourceByPath: Record = { + "src/a.tsx": makeSource("fetchAlpha"), + "src/b.tsx": makeSource("fetchBravo"), + }; + const utf16Index = sourceByPath["src/a.tsx"].indexOf("useEffect(() =>"); + const diagnostics = [ + buildDiagnostic({ + filePath: "src/a.tsx", + offset: toByteOffset(sourceByPath["src/a.tsx"], utf16Index), + length: "useEffect".length, + }), + buildDiagnostic({ + filePath: "src/b.tsx", + offset: toByteOffset(sourceByPath["src/b.tsx"], utf16Index), + length: "useEffect".length, + }), + ]; + + const snippets = buildScrambledDiagnosticSnippets( + diagnostics, + (filePath) => sourceByPath[filePath] ?? null, + ); + + expect(snippets).toHaveLength(1); + }); + + it("skips diagnostics without a span or with an unreadable file", () => { + const withoutSpan = buildDiagnostic(); + const unreadable = buildDiagnostic({ filePath: "src/missing.tsx", offset: 0, length: 1 }); + + const snippets = buildScrambledDiagnosticSnippets([withoutSpan, unreadable], () => null); + + expect(snippets).toEqual([]); + }); +}); From 4f7ec03f8b09e58c7c4b02acfcd069caee3703ba Mon Sep 17 00:00:00 2001 From: Aiden Bai Date: Tue, 23 Jun 2026 15:03:41 -0700 Subject: [PATCH 11/13] refactor: embed the deslop engine in @react-doctor/core; deslop-js/cli become facades Move the deslop analysis engine into the private @react-doctor/core package (under src/deslop, exposed via the @react-doctor/core/deslop subpath) so the whole monorepo consumes one source of truth, and reduce deslop-js to a thin re-export facade over it. vp pack still bundles the engine into deslop-js's published dist (CJS + ESM) alongside the sibling parse-worker.mjs, keeping the tarball self-contained; the public API (analyze, defineConfig, isOxcAstNode, every exported type) is unchanged. To keep the turbo build graph acyclic, core no longer declares deslop-js (it only resolves the "deslop-js" specifier at runtime via import.meta.resolve); the packages that run the dead-code path (react-doctor, deslop-cli, api) each depend on deslop-js directly. core's dead-code integration tests now use an in-process worker so they exercise core's own engine instead of the not-yet-built facade. The deslop test suite + fixtures moved into packages/core/tests/deslop and switched from node:test to vite-plus/test. --- .changeset/deslop-engine-in-core.md | 5 + packages/api/package.json | 1 + packages/core/package.json | 14 +- .../deslop}/collect/config-string-entries.ts | 0 .../src/deslop}/collect/entries.ts | 0 .../collect/expo-config-plugin-entries.ts | 0 .../src/deslop}/collect/parallel-parse.ts | 0 .../src/deslop}/collect/parse-worker.ts | 0 .../src => core/src/deslop}/collect/parse.ts | 0 .../collect/sections-module-entries.ts | 0 .../sibling-workspace-import-entries.ts | 0 .../src/deslop}/collect/workspaces.ts | 0 .../src => core/src/deslop}/constants.ts | 0 .../src/deslop}/duplicate-blocks/clusters.ts | 0 .../deslop}/duplicate-blocks/concatenate.ts | 0 .../src/deslop}/duplicate-blocks/extract.ts | 0 .../src/deslop}/duplicate-blocks/index.ts | 0 .../src/deslop}/duplicate-blocks/normalize.ts | 0 .../shadowed-directory-pairs.ts | 0 .../deslop}/duplicate-blocks/suffix-array.ts | 0 .../deslop}/duplicate-blocks/token-types.ts | 0 .../deslop}/duplicate-blocks/token-visitor.ts | 0 .../src => core/src/deslop}/errors.ts | 0 packages/core/src/deslop/index.ts | 729 +++++++++++++++++ .../src => core/src/deslop}/linker/build.ts | 0 .../src/deslop}/linker/re-exports.ts | 0 .../src/deslop}/linker/reachability.ts | 0 .../src/deslop}/report/complexity.ts | 0 .../report/cross-file-duplicate-exports.ts | 0 .../src => core/src/deslop}/report/cycles.ts | 0 .../src/deslop}/report/dry-patterns.ts | 0 .../src => core/src/deslop}/report/exports.ts | 0 .../src/deslop}/report/feature-flags.ts | 0 .../src => core/src/deslop}/report/files.ts | 0 .../src/deslop}/report/generate.ts | 0 .../src/deslop}/report/packages.ts | 0 .../src/deslop}/report/private-type-leaks.ts | 0 .../src/deslop}/report/re-export-cycles.ts | 0 .../src/deslop}/report/redundancy.ts | 0 .../src/deslop}/report/typescript-smells.ts | 0 .../src/deslop}/resolver/resolve.ts | 0 .../src/deslop}/resolver/source-path.ts | 0 .../src => core/src/deslop}/semantic/index.ts | 0 .../semantic/misclassified-dependencies.ts | 0 .../src/deslop}/semantic/program.ts | 0 .../deslop}/semantic/redundant-reexports.ts | 0 .../src/deslop}/semantic/references.ts | 0 .../deslop}/semantic/unused-class-members.ts | 0 .../deslop}/semantic/unused-enum-members.ts | 0 .../src/deslop}/semantic/unused-types.ts | 0 .../semantic/utils/source-file-lookup.ts | 0 .../src/deslop}/semantic/variable-aliases.ts | 0 .../src => core/src/deslop}/types.ts | 0 .../utils/collect-duplicate-constants.ts | 0 .../utils/collect-git-ignored-paths.ts | 0 .../utils/collect-inline-type-literals.ts | 0 .../collect-override-mappings-from-record.ts | 0 .../utils/collect-simplifiable-expressions.ts | 0 .../utils/collect-simplifiable-functions.ts | 0 .../src/deslop}/utils/compute-line-starts.ts | 0 .../deslop}/utils/detect-identity-wrapper.ts | 0 .../utils/detect-redundant-type-pattern.ts | 0 .../utils/detect-simplifiable-function.ts | 0 .../src/deslop}/utils/escape-reg-exp.ts | 0 .../extract-default-export-local-name.ts | 0 .../deslop}/utils/extract-override-target.ts | 0 .../src/deslop}/utils/find-monorepo-root.ts | 0 .../src/deslop}/utils/is-ast-node.ts | 0 .../src/deslop}/utils/is-config-file.ts | 0 .../utils/is-framework-lifecycle-method.ts | 0 .../utils/is-platform-builtin-or-virtual.ts | 0 .../src/deslop}/utils/line-column.ts | 0 .../utils/matches-package-import-reference.ts | 0 .../utils/matches-package-token-reference.ts | 0 .../src/deslop}/utils/normalize-type-hash.ts | 0 .../deslop}/utils/offset-to-line-column.ts | 0 .../src/deslop}/utils/oxc-ast-node.ts | 0 .../src/deslop}/utils/package-name.ts | 0 .../utils/parse-pnpm-workspace-overrides.ts | 0 .../utils/resolve-available-concurrency.ts | 0 .../utils/resolve-entry-with-extensions.ts | 0 .../src/deslop}/utils/run-safe-detector.ts | 0 .../utils/sanitize-import-specifier.ts | 0 .../src/deslop}/utils/to-posix-path.ts | 0 packages/core/tests/check-dead-code.test.ts | 9 +- .../tests/deslop}/analyze.test.ts | 6 +- .../deslop}/collect-git-ignored-paths.test.ts | 6 +- .../tests/deslop}/dependency-utils.test.ts | 10 +- .../tests/deslop}/errors.test.ts | 6 +- .../fixtures/alias-mixed-exports/package.json | 0 .../alias-mixed-exports/src/helpers.ts | 0 .../fixtures/alias-mixed-exports/src/index.ts | 0 .../alias-mixed-exports/src/orphan.ts | 0 .../fixtures/alias-mixed-exports/src/types.ts | 0 .../alias-mixed-exports/tsconfig.json | 0 .../fixtures/alias-named-exports/barrel.ts | 0 .../fixtures/alias-named-exports/greetings.ts | 0 .../fixtures/alias-named-exports/index.ts | 0 .../fixtures/alias-named-exports/package.json | 0 .../deslop}/fixtures/alias-paths/package.json | 0 .../deslop}/fixtures/alias-paths/src/index.ts | 0 .../deslop}/fixtures/alias-paths/src/utils.ts | 0 .../fixtures/alias-paths/tsconfig.json | 0 .../fixtures/angular-workspace/angular.json | 0 .../fixtures/angular-workspace/orphan.ts | 0 .../fixtures/angular-workspace/package.json | 0 .../projects/demo/src/app/app.component.css | 0 .../projects/demo/src/app/app.component.html | 0 .../projects/demo/src/app/app.component.ts | 0 .../projects/demo/src/app/app.module.ts | 0 .../projects/demo/src/app/orphan.css | 0 .../demo/src/environments/environment.ts | 0 .../projects/demo/src/main.ts | 0 .../projects/demo/src/polyfills.ts | 0 .../projects/demo/src/styles.css | 0 .../projects/demo/src/test.ts | 0 .../arrow-wrapped-import-dynamic/package.json | 0 .../arrow-wrapped-import-dynamic/src/Bar.tsx | 0 .../arrow-wrapped-import-dynamic/src/Baz.tsx | 0 .../arrow-wrapped-import-dynamic/src/Foo.tsx | 0 .../src/feature.routes.ts | 0 .../src/index.tsx | 0 .../src/orphan.ts | 0 .../fixtures/astro-content/astro.config.ts | 0 .../fixtures/astro-content/package.json | 0 .../astro-content/src/content.config.ts | 0 .../astro-content/src/content/config.ts | 0 .../fixtures/astro-content/src/orphan.ts | 0 .../astro-content/src/pages/index.astro | 0 .../astro-frontmatter-return/package.json | 0 .../src/components/Greeting.tsx | 0 .../src/components/orphan.ts | 0 .../src/pages/[...slug].astro | 0 .../src/scripts/analytics.ts | 0 .../src/scripts/inline-helper.ts | 0 .../astro-live-config/astro.config.ts | 0 .../fixtures/astro-live-config/package.json | 0 .../astro-live-config/src/live.config.ts | 0 .../src/loaders/wordpress-loader.ts | 0 .../fixtures/astro-live-config/src/orphan.ts | 0 .../astro-live-config/src/pages/index.astro | 0 .../tests/deslop}/fixtures/astro-mw/orphan.ts | 0 .../deslop}/fixtures/astro-mw/package.json | 0 .../fixtures/astro-mw/src/middleware.ts | 0 .../fixtures/astro-mw/src/pages/index.astro | 0 .../deslop}/fixtures/ava-app/package.json | 0 .../deslop}/fixtures/ava-app/src/index.ts | 0 .../deslop}/fixtures/ava-app/src/math.ts | 0 .../deslop}/fixtures/ava-app/src/orphan.ts | 0 .../fixtures/ava-app/test/math.test.ts | 0 .../babel-module-resolver/babel.config.js | 0 .../babel-module-resolver/package.json | 0 .../src/components/button.ts | 0 .../src/components/orphan.ts | 0 .../babel-module-resolver/src/index.ts | 0 .../fixtures/broken-tsconfig/package.json | 0 .../fixtures/broken-tsconfig/src/index.ts | 0 .../fixtures/broken-tsconfig/tsconfig.json | 0 .../build-root-fallback/bin/server.js | 0 .../fixtures/build-root-fallback/package.json | 0 .../fixtures/build-root-fallback/src/app.ts | 0 .../fixtures/build-root-fallback/src/db.ts | 0 .../build-root-fallback/src/orphan.ts | 0 .../fixtures/build-script-map/package.json | 0 .../fixtures/build-script-map/src/index.ts | 0 .../fixtures/build-script-map/src/orphan.ts | 0 .../src/scripts/health-check.ts | 0 .../build-script-map/src/scripts/migrate.ts | 0 .../bun-test/__tests__/integration.test.ts | 0 .../tests/deslop}/fixtures/bun-test/orphan.ts | 0 .../deslop}/fixtures/bun-test/package.json | 0 .../src/__tests__/build-output.test.ts | 0 .../deslop}/fixtures/bun-test/src/add.test.ts | 0 .../deslop}/fixtures/bun-test/src/index.ts | 0 .../deslop}/fixtures/bun-test/src/orphan.ts | 0 .../fixtures/bun-test/src/utils_test.ts | 0 .../ci-scripts/.github/workflows/release.yml | 0 .../deslop}/fixtures/ci-scripts/package.json | 0 .../ci-scripts/scripts/build-release.ts | 0 .../fixtures/ci-scripts/scripts/deploy.mjs | 0 .../deslop}/fixtures/ci-scripts/src/index.ts | 0 .../deslop}/fixtures/ci-scripts/src/orphan.ts | 0 .../.github/changelog/changelog.js | 0 .../.github/workflows/release.yml | 0 .../fixtures/ci-yaml-non-run/package.json | 0 .../ci-yaml-non-run/scripts/deploy.mjs | 0 .../fixtures/ci-yaml-non-run/src/index.ts | 0 .../fixtures/cloudflare-worker/package.json | 0 .../fixtures/cloudflare-worker/src/index.ts | 0 .../fixtures/cloudflare-worker/src/orphan.ts | 0 .../fixtures/commonjs-app/package.json | 0 .../fixtures/commonjs-app/src/index.js | 0 .../fixtures/commonjs-app/src/orphan.js | 0 .../fixtures/commonjs-app/src/utils.js | 0 .../fixtures/complex-functions/package.json | 0 .../fixtures/complex-functions/src/index.ts | 0 .../cypress.config.contract.js | 0 .../config-compound-name/package.json | 0 .../config-compound-name/src/index.ts | 0 .../config-compound-name/src/orphan.ts | 0 .../vitest.config.unit.ts | 0 .../fixtures/config-detection/.desloprc.json | 0 .../fixtures/config-detection/package.json | 0 .../fixtures/config-detection/src/index.ts | 0 .../fixtures/config-detection/src/orphan.ts | 0 .../fixtures/config-detection/src/utils.ts | 0 .../fixtures/config-entry-seed/package.json | 0 .../fixtures/config-entry-seed/src/helper.ts | 0 .../fixtures/config-entry-seed/src/index.ts | 0 .../fixtures/config-entry-seed/src/orphan.ts | 0 .../config-entry-seed/src/vite-plugin.ts | 0 .../fixtures/config-entry-seed/vite.config.ts | 0 .../fixtures/config-exclusion/package.json | 0 .../playwright.smoke.config.mjs | 0 .../fixtures/config-exclusion/sanity.cli.ts | 0 .../config-exclusion/sanity.config.ts | 0 .../fixtures/config-exclusion/src/index.ts | 0 .../fixtures/config-exclusion/src/orphan.ts | 0 .../config-exclusion/vitest.config.ts | 0 .../fixtures/config-global-scope/package.json | 0 .../fixtures/config-global-scope/src/index.ts | 0 .../templates/next-app/eslint.config.js | 0 .../templates/next-app/orphan.ts | 0 .../templates/next-app/postcss.config.mjs | 0 .../fixtures/config-imports/my-vite-plugin.ts | 0 .../fixtures/config-imports/package.json | 0 .../fixtures/config-imports/src/app.ts | 0 .../fixtures/config-imports/src/index.ts | 0 .../config-imports/src/shared-util.ts | 0 .../fixtures/config-imports/vite.config.ts | 0 .../config-mixed-formats/lage.config.cjs | 0 .../config-mixed-formats/package.json | 0 .../config-mixed-formats/prettier.config.mjs | 0 .../config-mixed-formats/src/index.ts | 0 .../config-mixed-formats/src/orphan.ts | 0 .../config-mixed-formats/vitest.config.mts | 0 .../fixtures/config-paths-only/lib/orphan.ts | 0 .../fixtures/config-paths-only/lib/thing.ts | 0 .../fixtures/config-paths-only/package.json | 0 .../fixtures/config-paths-only/src/index.ts | 0 .../config-script-flags/db/drizzle.config.ts | 0 .../fixtures/config-script-flags/package.json | 0 .../config-script-flags/scripts/seed.ts | 0 .../fixtures/config-script-flags/src/index.ts | 0 .../config-script-flags/src/orphan.ts | 0 .../config/jest/babelTransform.js | 0 .../config/jest/cssTransform.js | 0 .../config/jest/fileTransform.js | 0 .../config/jest/orphanTransform.js | 0 .../fixtures/cra-jest-transforms/package.json | 0 .../scripts/utils/createJestConfig.js | 0 .../fixtures/cra-jest-transforms/src/index.js | 0 .../fixtures/cra-monorepo-scope/package.json | 0 .../packages/app/package.json | 0 .../packages/app/src/App.ts | 0 .../packages/app/src/index.ts | 0 .../packages/lib/package.json | 0 .../packages/lib/src/RootOnly.ts | 0 .../packages/lib/src/index.ts | 0 .../deslop}/fixtures/cra-rewired/package.json | 0 .../deslop}/fixtures/cra-rewired/src/App.tsx | 0 .../cra-rewired/src/components/Header.tsx | 0 .../fixtures/cra-rewired/src/index.tsx | 0 .../fixtures/cra-rewired/src/orphan.ts | 0 .../fixtures/cra-src-baseurl/package.json | 0 .../fixtures/cra-src-baseurl/src/App.tsx | 0 .../cra-src-baseurl/src/components/Header.tsx | 0 .../fixtures/cra-src-baseurl/src/index.tsx | 0 .../fixtures/cra-src-baseurl/src/orphan.ts | 0 .../fixtures/cross-ext-js-ts/generators.ts | 0 .../fixtures/cross-ext-js-ts/orphan.ts | 0 .../fixtures/cross-ext-js-ts/package.json | 0 .../fixtures/cross-ext-js-ts/plugin.ts | 0 .../cross-ext-js-ts/src/utils/index.ts | 0 .../fixtures/cross-ext-ts-tsx/package.json | 0 .../fixtures/cross-ext-ts-tsx/src/App.tsx | 0 .../src/components/Button.tsx | 0 .../fixtures/cross-ext-ts-tsx/src/index.ts | 0 .../fixtures/cross-ext-ts-tsx/src/orphan.ts | 0 .../package.json | 0 .../src/index.ts | 0 .../src/routes/alpha/handler.ts | 0 .../src/routes/beta/handler.ts | 0 .../cross-file-duplicate-exports/package.json | 0 .../cross-file-duplicate-exports/src/alpha.ts | 0 .../cross-file-duplicate-exports/src/beta.ts | 0 .../cross-file-duplicate-exports/src/gamma.ts | 0 .../cross-file-duplicate-exports/src/index.ts | 0 .../fixtures/css-tilde-import/package.json | 0 .../fixtures/css-tilde-import/src/index.ts | 0 .../fixtures/css-tilde-import/src/styles.scss | 0 .../deslop}/fixtures/cycle-chain/package.json | 0 .../deslop}/fixtures/cycle-chain/src/a.ts | 0 .../deslop}/fixtures/cycle-chain/src/b.ts | 0 .../deslop}/fixtures/cycle-chain/src/c.ts | 0 .../deslop}/fixtures/cycle-chain/src/index.ts | 0 .../deslop}/fixtures/cycle-none/package.json | 0 .../deslop}/fixtures/cycle-none/src/helper.ts | 0 .../deslop}/fixtures/cycle-none/src/index.ts | 0 .../deslop}/fixtures/cycle-none/src/util.ts | 0 .../fixtures/cycle-reexport/package.json | 0 .../fixtures/cycle-reexport/src/index.ts | 0 .../fixtures/cycle-reexport/src/module-a.ts | 0 .../fixtures/cycle-reexport/src/module-b.ts | 0 .../fixtures/cycle-simple/package.json | 0 .../deslop}/fixtures/cycle-simple/src/a.ts | 0 .../deslop}/fixtures/cycle-simple/src/b.ts | 0 .../fixtures/cycle-simple/src/index.ts | 0 .../fixtures/cycle-type-only/package.json | 0 .../deslop}/fixtures/cycle-type-only/src/a.ts | 0 .../deslop}/fixtures/cycle-type-only/src/b.ts | 0 .../fixtures/cycle-type-only/src/index.ts | 0 .../fixtures/cycle-with-orphans/index.ts | 0 .../fixtures/cycle-with-orphans/module-a.ts | 0 .../fixtures/cycle-with-orphans/module-b.ts | 0 .../fixtures/cycle-with-orphans/orphan.ts | 0 .../fixtures/cycle-with-orphans/package.json | 0 .../fixtures/deep-reexport-chain/consumer.ts | 0 .../fixtures/deep-reexport-chain/index.ts | 0 .../fixtures/deep-reexport-chain/level-1.ts | 0 .../fixtures/deep-reexport-chain/level-2.ts | 0 .../fixtures/deep-reexport-chain/level-3.ts | 0 .../fixtures/deep-reexport-chain/package.json | 0 .../deep-reexport-tracking/package.json | 0 .../deep-reexport-tracking/src/barrel-mid.ts | 0 .../deep-reexport-tracking/src/barrel-top.ts | 0 .../deep-reexport-tracking/src/index.ts | 0 .../deep-reexport-tracking/src/orphan.ts | 0 .../src/unused-source.ts | 0 .../deep-reexport-tracking/src/used-source.ts | 0 .../default-import-named-export/package.json | 0 .../default-import-named-export/src/index.ts | 0 .../default-import-named-export/src/orphan.ts | 0 .../src/settings-panel.test.tsx | 0 .../src/settings-panel.tsx | 0 .../dependency-tooling/.eslintrc.json | 0 .../dependency-tooling/jest.config.js | 0 .../fixtures/dependency-tooling/package.json | 0 .../fixtures/dependency-tooling/project.json | 0 .../fixtures/dependency-tooling/src/index.ts | 0 .../docusaurus-docs/blog/first-post.mdx | 0 .../fixtures/docusaurus-docs/docs/intro.mdx | 0 .../docusaurus-docs/docusaurus.config.ts | 0 .../fixtures/docusaurus-docs/package.json | 0 .../docusaurus-docs/src/components/orphan.tsx | 0 .../docusaurus-docs/src/components/used.tsx | 0 .../docusaurus-docs/src/pages/index.tsx | 0 .../dry-patterns-syntactic/package.json | 0 .../src/duplicate-imports.ts | 0 .../src/duplicate-type-other/types.ts | 0 .../dry-patterns-syntactic/src/helpers.ts | 0 .../dry-patterns-syntactic/src/index.ts | 0 .../dry-patterns-syntactic/src/other.ts | 0 .../dry-patterns-syntactic/src/types.ts | 0 .../dry-patterns-syntactic/src/wrappers.ts | 0 .../deslop}/fixtures/dts-imports/orphan.ts | 0 .../deslop}/fixtures/dts-imports/package.json | 0 .../fixtures/dts-imports/src/helper.ts | 0 .../deslop}/fixtures/dts-imports/src/index.ts | 0 .../fixtures/dts-imports/src/types.d.ts | 0 .../duplicate-blocks-basic/package.json | 0 .../duplicate-blocks-basic/src/index.ts | 0 .../duplicate-blocks-basic/src/invoices.ts | 0 .../duplicate-blocks-basic/src/orders.ts | 0 .../package.json | 0 .../src/feature-cache.ts | 0 .../src/feature-pixels.ts | 0 .../src/feature-poll.ts | 0 .../src/feature-reconnect.ts | 0 .../src/feature-time.ts | 0 .../src/feature-tokens.ts | 0 .../src/index.ts | 0 .../fixtures/duplicate-constants/package.json | 0 .../duplicate-constants/src/feature-one.ts | 0 .../duplicate-constants/src/feature-three.ts | 0 .../duplicate-constants/src/feature-two.ts | 0 .../fixtures/duplicate-constants/src/index.ts | 0 .../duplicate-exports-barrel/package.json | 0 .../duplicate-exports-barrel/src/alpha.ts | 0 .../duplicate-exports-barrel/src/barrel.ts | 0 .../duplicate-exports-barrel/src/beta.ts | 0 .../duplicate-exports-barrel/src/index.ts | 0 .../duplicate-import-type-value/package.json | 0 .../duplicate-import-type-value/src/api.ts | 0 .../src/consumer-split.ts | 0 .../duplicate-inline-types/package.json | 0 .../duplicate-inline-types/src/elsewhere.ts | 0 .../duplicate-inline-types/src/index.ts | 0 .../duplicate-inline-types/src/operations.ts | 0 .../deslop}/fixtures/electron-app/orphan.ts | 0 .../fixtures/electron-app/package.json | 0 .../fixtures/electron-app/src/main/index.ts | 0 .../fixtures/electron-app/src/main/window.ts | 0 .../fixtures/electron-app/src/preload.ts | 0 .../electron-app/src/preload/preload.ts | 0 .../electron-builder-files/package.json | 0 .../electron-builder-files/src/main.ts | 0 .../electron-builder-files/src/orphan.ts | 0 .../electron-builder-files/src/preload.ts | 0 .../electron-builder-files/src/worker.ts | 0 .../fixtures/electron-detection/package.json | 0 .../fixtures/electron-detection/src/main.ts | 0 .../fixtures/electron-detection/src/orphan.ts | 0 .../electron-detection/src/preload/index.ts | 0 .../fixtures/electron-detection/src/window.ts | 0 .../fixtures/electron-entries/package.json | 0 .../fixtures/electron-entries/src/app.ts | 0 .../fixtures/electron-entries/src/main.ts | 0 .../fixtures/electron-entries/src/orphan.ts | 0 .../electron-entries/src/preload/bridge.ts | 0 .../electron-entries/src/preload/index.ts | 0 .../empty-and-binary-files/package.json | 0 .../empty-and-binary-files/src/binary-file.ts | Bin .../empty-and-binary-files/src/empty-file.ts | 0 .../empty-and-binary-files/src/index.ts | 0 .../src/minified-bundle.js | 0 .../fixtures/entry-validation/package.json | 0 .../fixtures/entry-validation/src/consumer.ts | 0 .../fixtures/entry-validation/src/index.ts | 0 .../deslop}/fixtures/enum-export/index.ts | 0 .../deslop}/fixtures/enum-export/package.json | 0 .../deslop}/fixtures/enum-export/status.ts | 0 .../deslop}/fixtures/env-wrapper/orphan.js | 0 .../deslop}/fixtures/env-wrapper/package.json | 0 .../fixtures/env-wrapper/src/dev-entry.js | 0 .../fixtures/env-wrapper/src/helper.js | 0 .../deslop}/fixtures/env-wrapper/src/main.js | 0 .../expo-config-plugins/app.config.ts | 0 .../fixtures/expo-config-plugins/app.json | 0 .../apps/mobile/app.config.js | 0 .../apps/mobile/package.json | 0 .../apps/shared/cross-workspace-plugin.ts | 0 .../expo-config-plugins/expo-camera.ts | 0 .../fixtures/expo-config-plugins/package.json | 0 .../plugins/directory-index-plugin/index.ts | 0 .../plugins/expo-json-extensionless-plugin.ts | 0 .../plugins/false-positive-target.ts | 0 .../plugins/root-json-plugin.ts | 0 .../plugins/template-literal-plugin.ts | 0 .../fixtures/expo-config-plugins/src/index.ts | 0 .../expo-router-app/app/(tabs)/_layout.tsx | 0 .../expo-router-app/app/(tabs)/index.tsx | 0 .../expo-router-app/app/(tabs)/settings.tsx | 0 .../fixtures/expo-router-app/app/_layout.tsx | 0 .../fixtures/expo-router-app/package.json | 0 .../expo-router-src-app-orphan/package.json | 0 .../src/app/(tabs)/_layout.tsx | 0 .../src/app/(tabs)/index.tsx | 0 .../src/app/_layout.tsx | 0 .../src/utils/orphan.ts | 0 .../fixtures/expo-router-src-app/package.json | 0 .../src/app/(tabs)/_layout.tsx | 0 .../src/app/(tabs)/index.tsx | 0 .../src/app/(tabs)/settings.tsx | 0 .../expo-router-src-app/src/app/_layout.tsx | 0 .../fixtures/export-default/package.json | 0 .../fixtures/export-default/src/component.ts | 0 .../fixtures/export-default/src/index.ts | 0 .../export-default/src/unused-default.ts | 0 .../package.json | 0 .../extensionless-relative-import/src/App.tsx | 0 .../src/Radio.tsx | 0 .../src/index.tsx | 0 .../src/orphan.ts | 0 .../fixtures/feature-flags-basic/package.json | 0 .../fixtures/feature-flags-basic/src/index.ts | 0 .../filename-registry-entries/package.json | 0 .../filename-registry-entries/src/index.ts | 0 .../filename-registry-entries/src/registry.ts | 0 .../tools/diagnose-user.ts | 0 .../tools/export-data.ts | 0 .../tools/genuinely-dead.ts | 0 .../deslop}/fixtures/flow-js-app/package.json | 0 .../fixtures/flow-js-app/src/Widget.js | 0 .../flow-js-app/src/actions/helper.js | 0 .../fixtures/flow-js-app/src/main.dev.js | 0 .../fixtures/flow-js-app/src/orphan.js | 0 .../no-framework/app/dashboard/page.tsx | 0 .../framework-gate/no-framework/index.ts | 0 .../framework-gate/no-framework/package.json | 0 .../no-framework/pages/index.tsx | 0 .../resources/js/Pages/dashboard.tsx | 0 .../no-framework/src/routes/index.tsx | 0 .../module-federation.config.ts | 0 .../package.json | 0 .../src/orphan.ts | 0 .../src/pages/blog/index.page.tsx | 0 .../src/remote-entry.ts | 0 .../src/renderer/on-render-client.tsx | 0 .../src/routes/dashboard/index.tsx | 0 .../src/waku.client.tsx | 0 .../web/src/Routes.tsx | 0 .../web/src/layouts/main.tsx | 0 .../web/src/pages/home.tsx | 0 .../framework-gate/with-inertia/package.json | 0 .../resources/js/Pages/Admin/index.tsx | 0 .../with-inertia/resources/js/app.tsx | 0 .../resources/js/components/bootstrap.ts | 0 .../resources/js/components/page-title.tsx | 0 .../with-inertia/resources/js/orphan.tsx | 0 .../with-nextjs/app/dashboard/page.tsx | 0 .../framework-gate/with-nextjs/package.json | 0 .../with-nextjs/pages/index.tsx | 0 .../framework-gate/with-nextjs/unused.tsx | 0 .../with-react-router/package.json | 0 .../with-react-router/react-router.config.ts | 0 .../with-react-router/src/root.tsx | 0 .../with-react-router/src/routes/home.tsx | 0 .../with-react-router/unused.tsx | 0 .../package.json | 0 .../web/src/pages/home.tsx | 0 .../package.json | 0 .../packages/react-router-app/app/root.tsx | 0 .../react-router-app/app/routes/home.tsx | 0 .../packages/react-router-app/orphan.tsx | 0 .../packages/react-router-app/package.json | 0 .../packages/remix-app/app/root.tsx | 0 .../packages/remix-app/app/routes/home.tsx | 0 .../packages/remix-app/orphan.tsx | 0 .../packages/remix-app/package.json | 0 .../package.json | 0 .../packages/app/orphan.tsx | 0 .../packages/app/package.json | 0 .../packages/app/pages/index.tsx | 0 .../fixtures/gatsby-app/gatsby-config.js | 0 .../deslop}/fixtures/gatsby-app/package.json | 0 .../fixtures/gatsby-app/src/api/hello.ts | 0 .../gatsby-app/src/components/unused.tsx | 0 .../gatsby-app/src/components/used.tsx | 0 .../fixtures/gatsby-app/src/pages/index.tsx | 0 .../gatsby-app/src/templates/post.tsx | 0 .../fixtures/generated-specs/package.json | 0 .../src/__tests__/index.test.ts | 0 .../src/generated/schema.gen.ts | 0 .../src/generated/types.spec.gen.ts | 0 .../fixtures/generated-specs/src/index.ts | 0 .../.github/actions/deploy/run.js | 0 .../.github/actions/deploy/unused-helper.js | 0 .../.github/workflows/ci.yml | 0 .../fixtures/gh-actions-scripts/package.json | 0 .../fixtures/gh-actions-scripts/src/index.ts | 0 .../deslop}/fixtures/gitignore-app/.gitignore | 0 .../gitignore-app/generated/output.ts | 0 .../gitignore-app/generated/routes.ts | 0 .../fixtures/gitignore-app/package.json | 0 .../fixtures/gitignore-app/src/home-route.ts | 0 .../fixtures/gitignore-app/src/index.ts | 0 .../fixtures/gitignore-app/src/orphan.ts | 0 .../fixtures/graphql-schema/package.json | 0 .../fixtures/graphql-schema/src/index.ts | 0 .../graphql-schema/src/schema.graphql | 0 .../graphql-schema/src/unused.graphql | 0 .../heuristic-no-dir-fallback/package.json | 0 .../src/cli/index.ts | 0 .../heuristic-no-dir-fallback/src/index.ts | 0 .../heuristic-no-dir-fallback/src/orphan.ts | 0 .../hoc-wrapped-default-export/package.json | 0 .../src/apps-badge.tsx | 0 .../hoc-wrapped-default-export/src/index.ts | 0 .../hoc-wrapped-default-export/src/orphan.ts | 0 .../fixtures/html-entry-scope/package.json | 0 .../html-entry-scope/packages/app/index.html | 0 .../packages/app/package.json | 0 .../packages/app/sample/demo.tsx | 0 .../packages/app/sample/index.html | 0 .../packages/app/src/helper.ts | 0 .../packages/app/src/main.tsx | 0 .../packages/lib/package.json | 0 .../packages/lib/src/index.ts | 0 .../packages/lib/src/orphan.ts | 0 .../deslop}/fixtures/i18n-app/package.json | 0 .../fixtures/i18n-app/public/locales/en.json | 0 .../deslop}/fixtures/i18n-app/src/i18n.ts | 0 .../deslop}/fixtures/i18n-app/src/index.ts | 0 .../deslop}/fixtures/i18n-app/src/orphan.ts | 0 .../fixtures/i18n-glob-skip/package.json | 0 .../fixtures/i18n-glob-skip/src/app.ts | 0 .../fixtures/i18n-glob-skip/src/orphan.ts | 0 .../fixtures/i18n-glob-skip/tsconfig.json | 0 .../fixtures/import-dynamic-literal/notes.ts | 0 .../import-dynamic-literal/package.json | 0 .../import-dynamic-literal/src/index.ts | 0 .../import-dynamic-literal/src/orphan.ts | 0 .../import-dynamic-template/package.json | 0 .../import-dynamic-template/src/index.ts | 0 .../src/locales/de/core.js | 0 .../src/locales/en/core.js | 0 .../src/locales/fr/core.js | 0 .../import-dynamic-template/src/orphan.ts | 0 .../fixtures/import-dynamic/package.json | 0 .../fixtures/import-dynamic/src/index.ts | 0 .../fixtures/import-dynamic/src/lazy.ts | 0 .../fixtures/import-dynamic/src/orphan.ts | 0 .../fixtures/import-dynamic/src/utils.ts | 0 .../deslop}/fixtures/import-mixed/index.ts | 0 .../deslop}/fixtures/import-mixed/lib.ts | 0 .../deslop}/fixtures/import-mixed/orphan.ts | 0 .../fixtures/import-mixed/package.json | 0 .../deslop}/fixtures/import-mixed/utils.ts | 0 .../fixtures/import-query-param/config.ts | 0 .../fixtures/import-query-param/index.ts | 0 .../fixtures/import-query-param/orphan.ts | 0 .../fixtures/import-query-param/package.json | 0 .../fixtures/import-query-param/styles.css | 0 .../fixtures/import-query-param/theme.css | 0 .../fixtures/import-query-param/worker.ts | 0 .../import-reexport-same/package.json | 0 .../src/components/helper.ts | 0 .../src/components/index.ts | 0 .../src/components/unused-component.ts | 0 .../src/components/widget.ts | 0 .../import-reexport-same/src/index.ts | 0 .../import-reexport-same/src/orphan.ts | 0 .../fixtures/import-side-effect/package.json | 0 .../fixtures/import-side-effect/src/index.ts | 0 .../fixtures/import-side-effect/src/orphan.ts | 0 .../fixtures/import-side-effect/src/setup.ts | 0 .../import-specifier-sanitize/package.json | 0 .../import-specifier-sanitize/src/frag.ts | 0 .../import-specifier-sanitize/src/index.ts | 0 .../import-specifier-sanitize/src/orphan.ts | 0 .../import-specifier-sanitize/src/query.ts | 0 .../import-specifier-sanitize/src/worker.ts | 0 .../fixtures/import-subpath/package.json | 0 .../fixtures/import-subpath/src/api/orphan.ts | 0 .../fixtures/import-subpath/src/api/user.ts | 0 .../fixtures/import-subpath/src/index.ts | 0 .../fixtures/import-subpath/tsconfig.json | 0 .../internal-export-usage/package.json | 0 .../internal-export-usage/src/index.ts | 0 .../src/module-registry.ts | 0 .../internal-export-usage/src/orphan.ts | 0 .../src/service.module.ts | 0 .../fixtures/jest-config-cts/jest.config.cts | 0 .../fixtures/jest-config-cts/package.json | 0 .../fixtures/jest-config-cts/src/orphan.ts | 0 .../fixtures/jest-config-cts/test-setup.ts | 0 .../jest-mapper/__mocks__/fileMock.js | 0 .../jest-mapper/__mocks__/styleMock.js | 0 .../fixtures/jest-mapper/jest.config.js | 0 .../deslop}/fixtures/jest-mapper/package.json | 0 .../deslop}/fixtures/jest-mapper/src/index.ts | 0 .../fixtures/jest-mapper/src/orphan.ts | 0 .../fixtures/jest-match/jest.config.ts | 0 .../deslop}/fixtures/jest-match/package.json | 0 .../jest-match/src/__tests__/app.test.ts | 0 .../deslop}/fixtures/jest-match/src/index.ts | 0 .../deslop}/fixtures/jest-match/src/orphan.ts | 0 .../fixtures/jest-match/src/utils.test.ts | 0 .../fixtures/jest-match/tests/outside.test.ts | 0 .../jest-mock-entry/__mocks__/some-lib.js | 0 .../fixtures/jest-mock-entry/orphan.ts | 0 .../fixtures/jest-mock-entry/package.json | 0 .../jest-mock-entry/src/__mocks__/axios.ts | 0 .../jest-mock-entry/src/__mocks__/fs.ts | 0 .../fixtures/jest-mock-entry/src/index.ts | 0 .../jest-mock-files/__mocks__/api-client.ts | 0 .../fixtures/jest-mock-files/__mocks__/fs.ts | 0 .../fixtures/jest-mock-files/package.json | 0 .../fixtures/jest-mock-files/src/index.ts | 0 .../fixtures/jest-mock-files/src/orphan.ts | 0 .../jest-module-name-mapper/jest.config.js | 0 .../jest-module-name-mapper/package.json | 0 .../jest-module-name-mapper/src/index.ts | 0 .../jest-module-name-mapper/src/orphan.ts | 0 .../jest-module-name-mapper/src/value.ts | 0 .../jest-setup-config/__mocks__/styleMock.js | 0 .../fixtures/jest-setup-config/jest.config.js | 0 .../fixtures/jest-setup-config/jest.setup.ts | 0 .../fixtures/jest-setup-config/package.json | 0 .../fixtures/jest-setup-config/src/index.ts | 0 .../fixtures/jest-setup-config/src/orphan.ts | 0 .../jest-setup-config/src/setup-helper.ts | 0 .../fixtures/jsx-block-arrow/package.json | 0 .../fixtures/jsx-block-arrow/src/index.tsx | 0 .../fixtures/lerna-workspace/lerna.json | 0 .../fixtures/lerna-workspace/package.json | 0 .../lerna-workspace/packages/app/package.json | 0 .../lerna-workspace/packages/app/src/index.ts | 0 .../lerna-workspace/packages/ui/package.json | 0 .../lerna-workspace/packages/ui/src/button.ts | 0 .../lerna-workspace/packages/ui/src/index.ts | 0 .../lerna-workspace/packages/ui/src/orphan.ts | 0 .../fixtures/mdx-import/docs/intro.mdx | 0 .../fixtures/mdx-import/docusaurus.config.ts | 0 .../deslop}/fixtures/mdx-import/orphan.ts | 0 .../deslop}/fixtures/mdx-import/package.json | 0 .../mdx-import/src/components/Chart.tsx | 0 .../mdx-import/src/components/Unused.tsx | 0 .../migrations/001-create-users.ts | 0 .../fixtures/migration-orm/package.json | 0 .../fixtures/migration-orm/src/index.ts | 0 .../fixtures/migration-orm/src/orphan.ts | 0 .../migrations/001-create-users.ts | 0 .../fixtures/migration-raw/package.json | 0 .../fixtures/migration-raw/src/index.ts | 0 .../misclassified-deps-typeonly/package.json | 0 .../misclassified-deps-typeonly/src/index.ts | 0 .../fixtures/mock-patterns/package.json | 0 .../src/__fixtures__/user-data.ts | 0 .../mock-patterns/src/__mocks__/api-client.ts | 0 .../src/fixtures/sample-data.json | 0 .../fixtures/mock-patterns/src/index.ts | 0 .../fixtures/mock-patterns/src/orphan.ts | 0 .../fixtures/module-side-effect/index.ts | 0 .../fixtures/module-side-effect/lib.ts | 0 .../fixtures/module-side-effect/orphan.ts | 0 .../fixtures/module-side-effect/package.json | 0 .../fixtures/module-side-effect/polyfill.ts | 0 .../fixtures/module-side-effect/register.ts | 0 .../monorepo-script-entry/package.json | 0 .../packages/sub/internal-tools/renderer.ts | 0 .../packages/sub/internal-tools/tui.ts | 0 .../packages/sub/package.json | 0 .../packages/sub/src/index.ts | 0 .../monorepo-script-entry/pnpm-workspace.yaml | 0 .../nested-dist-non-workspace/.gitignore | 0 .../apps/orphan/dist/index.mjs | 0 .../nested-dist-non-workspace/package.json | 0 .../nested-dist-non-workspace/src/index.ts | 0 .../fixtures/nested-overrides/package.json | 0 .../fixtures/nested-overrides/src/index.ts | 0 .../deslop}/fixtures/nestjs-app/package.json | 0 .../fixtures/nestjs-app/src/app.module.ts | 0 .../deslop}/fixtures/nestjs-app/src/main.ts | 0 .../deslop}/fixtures/nestjs-app/src/orphan.ts | 0 .../nestjs-app/src/users.controller.ts | 0 .../examples/my-app/next.config.mjs | 0 .../examples/my-app/package.json | 0 .../fixtures/next-config-scope/package.json | 0 .../fixtures/next-config-scope/src/index.ts | 0 .../fixtures/next-config-scope/src/orphan.ts | 0 .../fixtures/next-empty-tsconfig/package.json | 0 .../fixtures/next-empty-tsconfig/src/env.ts | 0 .../fixtures/next-empty-tsconfig/src/index.ts | 0 .../next-empty-tsconfig/src/orphan.ts | 0 .../next-empty-tsconfig/tsconfig.json | 0 .../next-middleware/instrumentation.ts | 0 .../fixtures/next-middleware/orphan.ts | 0 .../fixtures/next-middleware/package.json | 0 .../deslop}/fixtures/next-middleware/proxy.ts | 0 .../fixtures/next-middleware/src/auth.ts | 0 .../next-middleware/src/middleware.ts | 0 .../fixtures/next-pages-mdx/package.json | 0 .../fixtures/next-pages-mdx/pages/about.mdx | 0 .../fixtures/next-pages-mdx/pages/index.tsx | 0 .../fixtures/next-pages-mdx/src/Home.ts | 0 .../fixtures/next-pages-mdx/src/orphan.ts | 0 .../deslop}/fixtures/ns-chain/consumer.ts | 0 .../deslop}/fixtures/ns-chain/helpers.ts | 0 .../tests/deslop}/fixtures/ns-chain/index.ts | 0 .../deslop}/fixtures/ns-chain/package.json | 0 .../fixtures/ns-chain/unused-module.ts | 0 .../deslop}/fixtures/ns-exports/package.json | 0 .../fixtures/ns-exports/src/helpers.ts | 0 .../deslop}/fixtures/ns-exports/src/index.ts | 0 .../deslop}/fixtures/ns-forin/package.json | 0 .../deslop}/fixtures/ns-forin/src/config.ts | 0 .../deslop}/fixtures/ns-forin/src/index.ts | 0 .../deslop}/fixtures/ns-imports/package.json | 0 .../deslop}/fixtures/ns-imports/src/index.ts | 0 .../deslop}/fixtures/ns-imports/src/utils.ts | 0 .../deslop}/fixtures/ns-partial/package.json | 0 .../deslop}/fixtures/ns-partial/src/index.ts | 0 .../deslop}/fixtures/ns-partial/src/math.ts | 0 .../deslop}/fixtures/ns-reexport/package.json | 0 .../deslop}/fixtures/ns-reexport/src/index.ts | 0 .../fixtures/ns-reexport/src/lib/helpers.ts | 0 .../fixtures/ns-reexport/src/lib/index.ts | 0 .../deslop}/fixtures/ns-spread/package.json | 0 .../deslop}/fixtures/ns-spread/src/index.ts | 0 .../deslop}/fixtures/ns-spread/src/utils.ts | 0 .../deslop}/fixtures/ns-whole/package.json | 0 .../deslop}/fixtures/ns-whole/src/index.ts | 0 .../deslop}/fixtures/ns-whole/src/utils.ts | 0 .../fixtures/numeric-keys-types/package.json | 0 .../fixtures/numeric-keys-types/src/index.ts | 0 .../deslop}/fixtures/optional-deps/orphan.ts | 0 .../fixtures/optional-deps/package.json | 0 .../fixtures/optional-deps/sanity.cli.ts | 0 .../fixtures/optional-deps/sanity.config.ts | 0 .../fixtures/optional-deps/src/index.ts | 0 .../orphan-barrel-subtree/package.json | 0 .../orphan-barrel-subtree/src/index.ts | 0 .../src/subtree/setup.ts | 0 .../src/subtree/tabs/helpers.ts | 0 .../src/subtree/tabs/index.ts | 0 .../orphan-dynamic-subtree/package.json | 0 .../orphan-dynamic-subtree/src/index.ts | 0 .../src/subtree/lazy.ts | 0 .../src/subtree/setup.ts | 0 .../orphan-mixed-exports/package.json | 0 .../orphan-mixed-exports/src/index.ts | 0 .../src/test-utils/helpers.ts | 0 .../src/test-utils/setup.ts | 0 .../fixtures/orphan-shared-child/package.json | 0 .../fixtures/orphan-shared-child/src/index.ts | 0 .../orphan-shared-child/src/shared/utils.ts | 0 .../src/subtree/helpers.ts | 0 .../orphan-shared-child/src/subtree/setup.ts | 0 .../fixtures/outdir-mapping/main/index.ts | 0 .../fixtures/outdir-mapping/main/orphan.ts | 0 .../fixtures/outdir-mapping/main/setup.ts | 0 .../fixtures/outdir-mapping/package.json | 0 .../fixtures/outdir-mapping/tsconfig.json | 0 .../general/feature/thing.ts | 0 .../path-alias-specificity/package.json | 0 .../path-alias-specificity/special/thing.ts | 0 .../path-alias-specificity/src/index.ts | 0 .../deslop}/fixtures/playwright-ext/index.ts | 0 .../fixtures/playwright-ext/my-test.pw.ts | 0 .../deslop}/fixtures/playwright-ext/orphan.ts | 0 .../fixtures/playwright-ext/package.json | 0 .../fixtures/playwright-lib/e2e/login.spec.ts | 0 .../deslop}/fixtures/playwright-lib/index.ts | 0 .../fixtures/playwright-lib/lib/helpers.ts | 0 .../deslop}/fixtures/playwright-lib/orphan.ts | 0 .../fixtures/playwright-lib/package.json | 0 .../playwright-lib/support/commands.ts | 0 .../playwright-lib/tests/smoke.spec.ts | 0 .../pnpm-nested-overrides/package.json | 0 .../pnpm-nested-overrides/pnpm-workspace.yaml | 0 .../pnpm-nested-overrides/src/index.ts | 0 .../pnpm-workspace-override/package.json | 0 .../pnpm-workspace.yaml | 0 .../pnpm-workspace-override/src/index.ts | 0 .../pnpm-workspace-override/vite.config.ts | 0 .../fixtures/polyrepo/orphan-dir/stray.ts | 0 .../fixtures/polyrepo/project-a/package.json | 0 .../fixtures/polyrepo/project-a/src/helper.ts | 0 .../fixtures/polyrepo/project-a/src/index.ts | 0 .../fixtures/polyrepo/project-a/src/orphan.ts | 0 .../fixtures/polyrepo/project-b/package.json | 0 .../fixtures/polyrepo/project-b/src/index.ts | 0 .../fixtures/polyrepo/project-b/src/unused.ts | 0 .../fixtures/prettier-rc-plugins/.prettierrc | 0 .../fixtures/prettier-rc-plugins/package.json | 0 .../fixtures/prettier-rc-plugins/src/index.ts | 0 .../fixtures/private-type-leak/package.json | 0 .../fixtures/private-type-leak/src/index.ts | 0 .../fixtures/re-export-cycle/package.json | 0 .../fixtures/re-export-cycle/src/barrel.ts | 0 .../fixtures/re-export-cycle/src/index.ts | 0 .../fixtures/re-export-cycle/src/leaf.ts | 0 .../fixtures/re-export-cycle/src/other.ts | 0 .../react-router/app/components/header.tsx | 0 .../app/components/unused-widget.tsx | 0 .../react-router/app/dashboard/layout.tsx | 0 .../react-router/app/dashboard/page.tsx | 0 .../fixtures/react-router/app/root.tsx | 0 .../fixtures/react-router/app/routes.ts | 0 .../react-router/app/routes/about.tsx | 0 .../fixtures/react-router/app/routes/home.tsx | 0 .../fixtures/react-router/package.json | 0 .../react-router/react-router.config.ts | 0 .../redundant-aliases-self/package.json | 0 .../redundant-aliases-self/src/barrel.ts | 0 .../redundant-aliases-self/src/index.ts | 0 .../redundant-aliases-self/src/source.ts | 0 .../redundant-aliases-variable/package.json | 0 .../redundant-aliases-variable/src/index.ts | 0 .../redundant-aliases-variable/src/source.ts | 0 .../redundant-aliases-variable/tsconfig.json | 0 .../redundant-reexports-semantic/package.json | 0 .../src/barrel.ts | 0 .../src/consumer.ts | 0 .../redundant-reexports-semantic/src/impl.ts | 0 .../redundant-reexports-semantic/src/index.ts | 0 .../tsconfig.json | 0 .../fixtures/reexport-alias/package.json | 0 .../fixtures/reexport-alias/src/barrel-mid.ts | 0 .../fixtures/reexport-alias/src/barrel-top.ts | 0 .../fixtures/reexport-alias/src/index.ts | 0 .../fixtures/reexport-alias/src/source.ts | 0 .../fixtures/reexport-chains/package.json | 0 .../fixtures/reexport-chains/src/barrel-a.ts | 0 .../fixtures/reexport-chains/src/barrel-b.ts | 0 .../fixtures/reexport-chains/src/barrel-c.ts | 0 .../fixtures/reexport-chains/src/index.ts | 0 .../fixtures/reexport-chains/src/source.ts | 0 .../reexport-default-named/consumer.ts | 0 .../fixtures/reexport-default-named/gadget.ts | 0 .../fixtures/reexport-default-named/index.ts | 0 .../reexport-default-named/package.json | 0 .../fixtures/reexport-default-named/widget.ts | 0 .../fixtures/reexport-default/package.json | 0 .../reexport-default/src/components/Button.ts | 0 .../src/components/Card/Card.tsx | 0 .../src/components/Card/index.ts | 0 .../reexport-default/src/components/index.ts | 0 .../fixtures/reexport-default/src/index.ts | 0 .../reexport-file-variants/package.json | 0 .../reexport-file-variants/src/index.ts | 0 .../src/named-barrel.ts | 0 .../reexport-file-variants/src/orphan.ts | 0 .../reexport-file-variants/src/star-barrel.ts | 0 .../src/utils/format.ts | 0 .../reexport-file-variants/src/utils/greet.ts | 0 .../fixtures/reexport-mixed/package.json | 0 .../fixtures/reexport-mixed/src/barrel.ts | 0 .../fixtures/reexport-mixed/src/index.ts | 0 .../reexport-mixed/src/named-source.ts | 0 .../reexport-mixed/src/star-source.ts | 0 .../fixtures/reexport-multi-hop/package.json | 0 .../reexport-multi-hop/src/barrel1.ts | 0 .../reexport-multi-hop/src/barrel2.ts | 0 .../fixtures/reexport-multi-hop/src/index.ts | 0 .../fixtures/reexport-multi-hop/src/source.ts | 0 .../reexport-multi-level/package.json | 0 .../reexport-multi-level/src/barrel-a.ts | 0 .../reexport-multi-level/src/barrel-b.ts | 0 .../reexport-multi-level/src/index.ts | 0 .../reexport-multi-level/src/source.ts | 0 .../fixtures/reexport-star-named/consumer.ts | 0 .../fixtures/reexport-star-named/index.ts | 0 .../fixtures/reexport-star-named/package.json | 0 .../fixtures/reexport-star-named/special.ts | 0 .../fixtures/reexport-star-named/utils.ts | 0 .../fixtures/reexport-star/package.json | 0 .../fixtures/reexport-star/src/barrel.ts | 0 .../fixtures/reexport-star/src/index.ts | 0 .../fixtures/reexport-star/src/module-a.ts | 0 .../fixtures/reexport-star/src/module-b.ts | 0 .../fixtures/reexport-star/src/module-c.ts | 0 .../fixtures/reexport-unused/package.json | 0 .../reexport-unused/src/components/index.ts | 0 .../src/components/types-source.ts | 0 .../src/components/unused-source.ts | 0 .../src/components/used-source.ts | 0 .../fixtures/reexport-unused/src/index.ts | 0 .../remark-config-deps/.remarkrc.json | 0 .../remark-config-deps/docs/guide.mdx | 0 .../fixtures/remark-config-deps/package.json | 0 .../remark-config-deps/src/button.tsx | 0 .../fixtures/remark-config-deps/src/index.ts | 0 .../fixtures/remark-config-deps/src/orphan.ts | 0 .../fixtures/remark-glob-skip/docs/guide.mdx | 0 .../fixtures/remark-glob-skip/docs/intro.mdx | 0 .../fixtures/remark-glob-skip/package.json | 0 .../fixtures/remark-glob-skip/src/index.ts | 0 .../fixtures/remark-glob-skip/src/orphan.ts | 0 .../tests/deslop}/fixtures/rn-app/App.tsx | 0 .../tests/deslop}/fixtures/rn-app/index.js | 0 .../deslop}/fixtures/rn-app/metro.config.js | 0 .../deslop}/fixtures/rn-app/package.json | 0 .../fixtures/rn-app/src/screens/orphan.tsx | 0 .../fixtures/rn-app/src/screens/used.tsx | 0 .../deslop}/fixtures/rn-platform/package.json | 0 .../rn-platform/src/button.android.tsx | 0 .../fixtures/rn-platform/src/button.ios.tsx | 0 .../fixtures/rn-platform/src/button.tsx | 0 .../rn-platform/src/handler.native.ts | 0 .../fixtures/rn-platform/src/handler.web.ts | 0 .../deslop}/fixtures/rn-platform/src/index.ts | 0 .../fixtures/rn-platform/src/orphan.ts | 0 .../deslop}/fixtures/rn-platform/src/utils.ts | 0 .../deslop}/fixtures/rspack-app/package.json | 0 .../fixtures/rspack-app/rspack.config.js | 0 .../fixtures/rspack-app/rspack.dev.config.js | 0 .../deslop}/fixtures/rspack-app/src/index.ts | 0 .../deslop}/fixtures/rspack-app/src/orphan.ts | 0 .../fixtures/script-cli-deps/package.json | 0 .../fixtures/script-cli-deps/src/index.ts | 0 .../deslop}/fixtures/script-flags/orphan.ts | 0 .../fixtures/script-flags/package.json | 0 .../fixtures/script-flags/scripts/build.ts | 0 .../script-flags/scripts/generate.mts | 0 .../fixtures/script-flags/tests/run.ts | 0 .../fixtures/script-flags/tsconfig.build.json | 0 .../script-glob-formatter/package.json | 0 .../script-glob-formatter/scripts/build.ts | 0 .../script-glob-formatter/src/helper.ts | 0 .../script-glob-formatter/src/index.ts | 0 .../script-glob-formatter/src/orphan.ts | 0 .../fixtures/script-globs/package.json | 0 .../fixtures/script-globs/src/index.ts | 0 .../fixtures/script-globs/src/orphan.ts | 0 .../script-globs/styles/themes/dark.css | 0 .../script-globs/styles/themes/light.css | 0 .../fixtures/script-no-extension/orphan.ts | 0 .../fixtures/script-no-extension/package.json | 0 .../script-no-extension/scripts/build-data.ts | 0 .../script-no-extension/scripts/lint-code.js | 0 .../scripts/process-items.ts | 0 .../fixtures/script-no-extension/src/index.ts | 0 .../fixtures/scss-partial/package.json | 0 .../fixtures/scss-partial/src/index.ts | 0 .../scss-partial/src/styles/_mixins.scss | 0 .../scss-partial/src/styles/_orphan.scss | 0 .../scss-partial/src/styles/_variables.scss | 0 .../scss-partial/src/styles/main.scss | 0 .../fixtures/side-effects-glob/package.json | 0 .../side-effects-glob/src/foo/index.ts | 0 .../side-effects-glob/src/foo/widget/style.ts | 0 .../fixtures/side-effects-glob/src/index.ts | 0 .../fixtures/side-effects-glob/src/orphan.ts | 0 .../deslop}/fixtures/simple-app/package.json | 0 .../deslop}/fixtures/simple-app/src/index.ts | 0 .../deslop}/fixtures/simple-app/src/orphan.ts | 0 .../deslop}/fixtures/simple-app/src/types.ts | 0 .../deslop}/fixtures/simple-app/src/utils.ts | 0 .../simplifiable-expressions/package.json | 0 .../simplifiable-expressions/src/index.ts | 0 .../simplifiable-functions/package.json | 0 .../simplifiable-functions/src/index.ts | 0 .../fixtures/spec-dash-patterns/package.json | 0 .../spec-dash-patterns/spec/engine_spec.ts | 0 .../spec-dash-patterns/spec/utils-spec.ts | 0 .../fixtures/spec-dash-patterns/src/index.ts | 0 .../fixtures/spec-dash-patterns/src/orphan.ts | 0 .../fixtures/src-build-dir/package.json | 0 .../src-build-dir/src/build/helpers.ts | 0 .../src-build-dir/src/build/plugins.ts | 0 .../fixtures/src-build-dir/src/index.ts | 0 .../fixtures/src-build-dir/src/orphan.ts | 0 .../fixtures/src-path-fallback/package.json | 0 .../src-path-fallback/src/cli/index.ts | 0 .../src-path-fallback/src/cli/runner.ts | 0 .../fixtures/src-path-fallback/src/helper.ts | 0 .../fixtures/src-path-fallback/src/index.ts | 0 .../fixtures/src-path-fallback/src/orphan.ts | 0 .../fixtures/src-path-fallback/tsconfig.json | 0 .../fixtures/star-reexport-chain/package.json | 0 .../star-reexport-chain/src/barrel1.ts | 0 .../star-reexport-chain/src/barrel2.ts | 0 .../fixtures/star-reexport-chain/src/index.ts | 0 .../star-reexport-chain/src/source.ts | 0 .../fixtures/star-selective/package.json | 0 .../fixtures/star-selective/src/barrel.ts | 0 .../fixtures/star-selective/src/index.ts | 0 .../fixtures/star-selective/src/source.ts | 0 .../fixtures/storybook-app/.storybook/main.ts | 0 .../storybook-app/.storybook/preview.ts | 0 .../fixtures/storybook-app/package.json | 0 .../src/components/Button.stories.ts | 0 .../storybook-app/src/components/Button.ts | 0 .../fixtures/storybook-app/src/orphan.ts | 0 .../storybook-mdx-import/package.json | 0 .../src/components/Alert.mdx | 0 .../src/components/Alert.story.tsx | 0 .../src/components/Alert.ts | 0 .../src/components/orphan.ts | 0 .../storybook-mdx-import/src/index.ts | 0 .../deslop}/fixtures/style-alias/package.json | 0 .../deslop}/fixtures/style-alias/src/index.ts | 0 .../fixtures/style-alias/src/lib/utils.ts | 0 .../fixtures/style-alias/src/orphan.ts | 0 .../style-alias/src/styles/globals.css | 0 .../fixtures/style-alias/tsconfig.json | 0 .../fixtures/style-export-map/package.json | 0 .../fixtures/style-export-map/src/index.ts | 0 .../fixtures/style-export-map/src/orphan.css | 0 .../fixtures/style-export-map/src/style.css | 0 .../fixtures/style-export-map/tsconfig.json | 0 .../fixtures/style-imports/package.json | 0 .../fixtures/style-imports/src/app.css | 0 .../fixtures/style-imports/src/index.ts | 0 .../fixtures/style-imports/styles/base.css | 0 .../fixtures/style-imports/styles/orphan.css | 0 .../fixtures/style-tracking/package.json | 0 .../fixtures/style-tracking/src/helper.ts | 0 .../fixtures/style-tracking/src/index.ts | 0 .../fixtures/style-tracking/src/orphan.ts | 0 .../fixtures/style-tracking/src/styles.css | 0 .../fixtures/style-tracking/src/unused.css | 0 .../subproject-standalone/app/package.json | 0 .../app/packages/utils/package.json | 0 .../app/packages/utils/src/index.ts | 0 .../subproject-standalone/app/src/index.ts | 0 .../subproject-standalone/app/src/orphan.ts | 0 .../subproject-standalone/docs/package.json | 0 .../subproject-standalone/docs/src/guide.ts | 0 .../subproject-standalone/docs/src/index.ts | 0 .../subproject-standalone/docs/yarn.lock | 0 .../subproject-standalone/package.json | 0 .../subproject-workspace/app/package.json | 0 .../app/packages/core/app/page.ts | 0 .../app/packages/core/package.json | 0 .../app/packages/core/src/index.ts | 0 .../app/packages/core/src/unused-util.ts | 0 .../app/packages/icons/package.json | 0 .../app/packages/icons/src/icons/heart.ts | 0 .../app/packages/icons/src/icons/star.ts | 0 .../app/packages/icons/src/index.ts | 0 .../app/pnpm-workspace.yaml | 0 .../fixtures/tailwind-v4-plugin/package.json | 0 .../fixtures/tailwind-v4-plugin/src/index.ts | 0 .../tailwind-v4-plugin/src/styles.css | 0 .../fixtures/tanstack-app/package.json | 0 .../fixtures/tanstack-app/src/orphan.ts | 0 .../tanstack-app/src/routes/about.tsx | 0 .../tanstack-app/src/routes/index.tsx | 0 .../fixtures/tanstack-app/src/server.ts | 0 .../fixtures/test-custom-ext/package.json | 0 .../test-custom-ext/src/__e2e__/login.test.ts | 0 .../test-custom-ext/src/api.servertest.ts | 0 .../fixtures/test-custom-ext/src/index.ts | 0 .../fixtures/test-custom-ext/src/orphan.ts | 0 .../test-custom-ext/src/utils.clienttest.ts | 0 .../__tests__/example.test.ts | 0 .../fixtures/test-mock-import/package.json | 0 .../fixtures/test-mock-import/src/helper.ts | 0 .../fixtures/test-mock-import/src/index.ts | 0 .../test-mock-import/src/mocked-util.ts | 0 .../fixtures/test-mock-import/src/orphan.ts | 0 .../fixtures/test-no-runner/package.json | 0 .../test-no-runner/src/helper.test.ts | 0 .../fixtures/test-no-runner/src/index.ts | 0 .../fixtures/test-node-runner/package.json | 0 .../src/__tests__/main.test.ts | 0 .../fixtures/test-node-runner/src/index.ts | 0 .../fixtures/test-node-runner/src/orphan.ts | 0 .../fixtures/test-runner-detect/package.json | 0 .../src/__tests__/utils.test.ts | 0 .../test-runner-detect/src/helper.test.ts | 0 .../fixtures/test-runner-detect/src/helper.ts | 0 .../fixtures/test-runner-detect/src/index.ts | 0 .../fixtures/test-runner-detect/src/orphan.ts | 0 .../test-runner-detect/src/test-only-used.ts | 0 .../fixtures/tsconfig-wildcard/package.json | 0 .../tsconfig-wildcard/src/constants/api.ts | 0 .../fixtures/tsconfig-wildcard/src/index.ts | 0 .../fixtures/tsconfig-wildcard/src/orphan.ts | 0 .../fixtures/tsconfig-wildcard/tsconfig.json | 0 .../fixtures/tsdown-entry/package.json | 0 .../deslop}/fixtures/tsdown-entry/src/main.ts | 0 .../fixtures/tsdown-entry/src/preload.ts | 0 .../fixtures/tsdown-entry/src/unused.ts | 0 .../fixtures/tsdown-entry/src/utils.ts | 0 .../fixtures/tsdown-entry/tsdown.config.ts | 0 .../deslop}/fixtures/type-cycle/package.json | 0 .../deslop}/fixtures/type-cycle/src/index.ts | 0 .../deslop}/fixtures/type-cycle/src/post.ts | 0 .../deslop}/fixtures/type-cycle/src/user.ts | 0 .../deslop}/fixtures/type-cycle/tsconfig.json | 0 .../deslop}/fixtures/type-deps/package.json | 0 .../deslop}/fixtures/type-deps/src/index.ts | 0 .../fixtures/type-reexport-filter/consumer.ts | 0 .../fixtures/type-reexport-filter/index.ts | 0 .../type-reexport-filter/package.json | 0 .../fixtures/type-reexport-filter/types.ts | 0 .../fixtures/type-reexport-filter/user.ts | 0 .../fixtures/typescript-smells/package.json | 0 .../fixtures/typescript-smells/src/alpha.ts | 0 .../fixtures/typescript-smells/src/beta.ts | 0 .../fixtures/typescript-smells/src/delta.ts | 0 .../fixtures/typescript-smells/src/gamma.ts | 0 .../fixtures/typescript-smells/src/index.ts | 0 .../unused-class-members-basic/package.json | 0 .../src/calculator.ts | 0 .../unused-class-members-basic/src/index.ts | 0 .../unused-class-members-basic/tsconfig.json | 0 .../package.json | 0 .../src/controller.ts | 0 .../src/decorators.ts | 0 .../src/index.ts | 0 .../tsconfig.json | 0 .../package.json | 0 .../src/animals.ts | 0 .../src/index.ts | 0 .../tsconfig.json | 0 .../unused-enum-members-const/package.json | 0 .../unused-enum-members-const/src/flags.ts | 0 .../unused-enum-members-const/src/index.ts | 0 .../unused-enum-members-const/tsconfig.json | 0 .../unused-enum-members-numeric/package.json | 0 .../unused-enum-members-numeric/src/index.ts | 0 .../unused-enum-members-numeric/src/level.ts | 0 .../unused-enum-members-numeric/tsconfig.json | 0 .../package.json | 0 .../src/code.ts | 0 .../src/index.ts | 0 .../tsconfig.json | 0 .../unused-enum-members-string/package.json | 0 .../unused-enum-members-string/src/index.ts | 0 .../unused-enum-members-string/src/status.ts | 0 .../unused-enum-members-string/tsconfig.json | 0 .../fixtures/unused-types-basic/package.json | 0 .../unused-types-basic/src/consumer.ts | 0 .../fixtures/unused-types-basic/src/index.ts | 0 .../fixtures/unused-types-basic/src/types.ts | 0 .../fixtures/unused-types-basic/tsconfig.json | 0 .../unused-types-decl-merge/package.json | 0 .../unused-types-decl-merge/src/index.ts | 0 .../unused-types-decl-merge/src/merged.ts | 0 .../unused-types-decl-merge/tsconfig.json | 0 .../unused-types-entry-export/package.json | 0 .../unused-types-entry-export/src/index.ts | 0 .../unused-types-entry-export/tsconfig.json | 0 .../unused-types-extends/package.json | 0 .../unused-types-extends/src/index.ts | 0 .../unused-types-extends/src/types.ts | 0 .../unused-types-extends/tsconfig.json | 0 .../unused-types-generics/package.json | 0 .../unused-types-generics/src/index.ts | 0 .../unused-types-generics/src/types.ts | 0 .../unused-types-generics/tsconfig.json | 0 .../unused-types-import-type/package.json | 0 .../unused-types-import-type/src/index.ts | 0 .../unused-types-import-type/src/types.ts | 0 .../unused-types-import-type/tsconfig.json | 0 .../fixtures/unused-types-jsdoc/package.json | 0 .../fixtures/unused-types-jsdoc/src/bridge.ts | 0 .../fixtures/unused-types-jsdoc/src/index.js | 0 .../unused-types-jsdoc/src/jsdoc-consumer.js | 0 .../fixtures/unused-types-jsdoc/src/types.ts | 0 .../fixtures/unused-types-jsdoc/tsconfig.json | 0 .../fixtures/unused-types-nested/package.json | 0 .../fixtures/unused-types-nested/src/index.ts | 0 .../fixtures/unused-types-nested/src/types.ts | 0 .../unused-types-nested/tsconfig.json | 0 .../unused-types-reexport-chain/package.json | 0 .../unused-types-reexport-chain/src/a.ts | 0 .../unused-types-reexport-chain/src/b.ts | 0 .../unused-types-reexport-chain/src/c.ts | 0 .../unused-types-reexport-chain/src/index.ts | 0 .../unused-types-reexport-chain/tsconfig.json | 0 .../fixtures/vercel-config-app/package.json | 0 .../fixtures/vercel-config-app/src/index.ts | 0 .../fixtures/vercel-config-app/vercel.ts | 0 .../deslop}/fixtures/vite-app/package.json | 0 .../deslop}/fixtures/vite-app/src/main.tsx | 0 .../deslop}/fixtures/vite-app/src/orphan.ts | 0 .../deslop}/fixtures/vite-app/src/render.ts | 0 .../deslop}/fixtures/vite-app/vite.config.ts | 0 .../fixtures/vite-glob-import/package.json | 0 .../fixtures/vite-glob-import/src/index.ts | 0 .../vite-glob-import/src/layouts/main.ts | 0 .../vite-glob-import/src/modules/alpha.ts | 0 .../vite-glob-import/src/modules/beta.ts | 0 .../fixtures/vite-glob-import/src/orphan.ts | 0 .../fixtures/vite-resolve-alias/package.json | 0 .../vite-resolve-alias/src/lib/orphan.ts | 0 .../vite-resolve-alias/src/lib/util.ts | 0 .../fixtures/vite-resolve-alias/src/main.ts | 0 .../fixtures/vite-resolve-alias/src/widget.ts | 0 .../vite-resolve-alias/vite.config.ts | 0 .../vitest-automock/__tests__/server.test.ts | 0 .../vitest-automock/__tests__/utils.test.ts | 0 .../fixtures/vitest-automock/package.json | 0 .../fixtures/vitest-automock/src/index.ts | 0 .../src/server/__mocks__/api.ts | 0 .../vitest-automock/src/server/api.ts | 0 .../vitest-automock/src/server/unused.ts | 0 .../src/utils/__mocks__/helper.ts | 0 .../vitest-automock/src/utils/helper.ts | 0 .../fixtures/vitest-coverage/orphan.ts | 0 .../fixtures/vitest-coverage/package.json | 0 .../fixtures/vitest-coverage/src/core.ts | 0 .../fixtures/vitest-coverage/src/utils.ts | 0 .../vitest-coverage/tests/core.test.ts | 0 .../fixtures/vitest-coverage/vitest.config.ts | 0 .../fixtures/vitest-custom/package.json | 0 .../fixtures/vitest-custom/spec/utils-spec.ts | 0 .../fixtures/vitest-custom/src/index.ts | 0 .../fixtures/vitest-custom/src/orphan.ts | 0 .../fixtures/vitest-custom/tsconfig.json | 0 .../fixtures/vitest-custom/vitest.config.ts | 0 .../vitest-override-target/package.json | 0 .../pnpm-workspace.yaml | 0 .../vitest-override-target/src/index.ts | 0 .../vitest-override-target/vitest.config.ts | 0 .../fixtures/vitest-setup/package.json | 0 .../fixtures/vitest-setup/src/index.ts | 0 .../fixtures/vitest-setup/src/orphan.ts | 0 .../fixtures/vitest-setup/src/test/setup.ts | 0 .../fixtures/vitest-setup/src/utils.ts | 0 .../fixtures/vitest-setup/vitest.config.ts | 0 .../deslop}/fixtures/vue-app/package.json | 0 .../deslop}/fixtures/vue-app/src/App.vue | 0 .../vue-app/src/components/HelloWorld.vue | 0 .../src/components/OrphanComponent.vue | 0 .../deslop}/fixtures/vue-app/src/main.ts | 0 .../deslop}/fixtures/vue-app/src/orphan.ts | 0 .../deslop}/fixtures/vue-app/src/utils.ts | 0 .../fixtures/webpack-entries/package.json | 0 .../webpack-entries/src/components/App.js | 0 .../webpack-entries/src/components/Vendor.js | 0 .../fixtures/webpack-entries/src/index.js | 0 .../fixtures/webpack-entries/src/orphan.js | 0 .../fixtures/webpack-entries/src/vendor.js | 0 .../webpack-entries/webpack.config.js | 0 .../fixtures/webpack-path/app/index.js | 0 .../fixtures/webpack-path/app/orphan.js | 0 .../fixtures/webpack-path/app/renderer.js | 0 .../webpack.config.renderer.prod.babel.js | 0 .../fixtures/webpack-path/package.json | 0 .../fixtures/webpack-require-ctx/package.json | 0 .../src/components/Button.tsx | 0 .../src/components/nested/Card.tsx | 0 .../fixtures/webpack-require-ctx/src/index.ts | 0 .../webpack-require-ctx/src/orphan.ts | 0 .../webpack-require-ctx/src/pages/home.ts | 0 .../app/views/actions/orphan.ts | 0 .../app/views/actions/run-action.ts | 0 .../webpack-resolve/app/views/utils/helper.ts | 0 .../fixtures/webpack-resolve/package.json | 0 .../fixtures/webpack-resolve/src/App.ts | 0 .../fixtures/webpack-resolve/src/index.ts | 0 .../fixtures/webpack-resolve/src/orphan.ts | 0 .../webpack-resolve/webpack.config.js | 0 .../deslop}/fixtures/wildcard-css/orphan.ts | 0 .../fixtures/wildcard-css/package.json | 0 .../wildcard-css/src/components/Button.css | 0 .../wildcard-css/src/components/Button.ts | 0 .../fixtures/wildcard-css/src/index.ts | 0 .../wildcard-late-consume/package.json | 0 .../components/color-picker/color-picker.ts | 0 .../src/components/color-picker/index.ts | 0 .../src/components/index.ts | 0 .../src/components/text-field.ts | 0 .../src/components/unused-widget.ts | 0 .../wildcard-late-consume/src/index.ts | 0 .../src/plugins/color-plugin.ts | 0 .../src/plugins/index.ts | 0 .../src/plugins/text-plugin.ts | 0 .../fixtures/wildcard-subpath/orphan.ts | 0 .../fixtures/wildcard-subpath/package.json | 0 .../fixtures/wildcard-subpath/src/index.ts | 0 .../src/templates/goodbye.tsx | 0 .../src/templates/welcome.tsx | 0 .../fixtures/worker-new-url/package.json | 0 .../fixtures/worker-new-url/src/index.ts | 0 .../fixtures/worker-new-url/src/orphan.ts | 0 .../fixtures/worker-new-url/src/worker.js | 0 .../apps/web/package.json | 0 .../apps/web/src/index.ts | 0 .../apps/web/tsconfig.json | 0 .../workspace-deep-imports/package.json | 0 .../packages/shared/package.json | 0 .../packages/shared/src/components/button.ts | 0 .../packages/shared/src/components/orphan.ts | 0 .../packages/shared/src/hooks/assets.ts | 0 .../packages/shared/src/index.ts | 0 .../packages/shared/tsconfig.json | 0 .../fixtures/workspace-defaults/package.json | 0 .../packages/lib-a/package.json | 0 .../packages/lib-a/src/helper.ts | 0 .../packages/lib-a/src/index.ts | 0 .../packages/lib-a/src/orphan.ts | 0 .../packages/lib-b/package.json | 0 .../packages/lib-b/src/index.ts | 0 .../workspace-dist-resolve/package.json | 0 .../packages/app/package.json | 0 .../packages/app/src/index.ts | 0 .../packages/utils/package.json | 0 .../packages/utils/src/index.ts | 0 .../packages/utils/src/orphan.ts | 0 .../fixtures/workspace-dist-src/package.json | 0 .../packages/app/package.json | 0 .../packages/app/src/index.ts | 0 .../packages/core/package.json | 0 .../packages/core/src/index.ts | 0 .../packages/core/src/orphan.ts | 0 .../packages/core/src/visualdebug.ts | 0 .../fixtures/workspace-explicit/package.json | 0 .../packages/ui/package.json | 0 .../packages/ui/src/button.ts | 0 .../packages/ui/src/index.ts | 0 .../packages/utils/package.json | 0 .../packages/utils/src/index.ts | 0 .../packages/utils/src/orphan.ts | 0 .../fixtures/workspace-local-bin/.gitignore | 0 .../node_modules/react-email/package.json | 0 .../fixtures/workspace-local-bin/package.json | 0 .../fixtures/workspace-local-bin/src/index.ts | 0 .../fixtures/workspace-no-main/package.json | 0 .../workspace-no-main/packages/app/index.ts | 0 .../packages/app/package.json | 0 .../packages/lib-a/helper.js | 0 .../workspace-no-main/packages/lib-a/index.js | 0 .../packages/lib-a/orphan.js | 0 .../packages/lib-a/package.json | 0 .../apps/web/package.json | 0 .../apps/web/src/index.ts | 0 .../package.json | 0 .../packages/core/orphan.ts | 0 .../packages/core/package.json | 0 .../packages/core/utils.ts | 0 .../apps/web/package.json | 0 .../apps/web/src/index.ts | 0 .../workspace-path-alias/package.json | 0 .../packages/core/orphan.ts | 0 .../packages/core/package.json | 0 .../packages/core/utils.ts | 0 .../workspace-path-alias/tsconfig.json | 0 .../apps/web/package.json | 0 .../apps/web/src/index.ts | 0 .../workspace-structural-alias/package.json | 0 .../packages/core/orphan.ts | 0 .../packages/core/package.json | 0 .../packages/core/utils.ts | 0 .../apps/web/package.json | 0 .../apps/web/src/index.ts | 0 .../package.json | 0 .../packages/ui/dist/button.js | 0 .../packages/ui/package.json | 0 .../packages/ui/src/button.ts | 0 .../packages/ui/src/orphan.ts | 0 .../apps/web/package.json | 0 .../apps/web/src/index.ts | 0 .../workspace-subpath-import/package.json | 0 .../packages/ui/button.tsx | 0 .../packages/ui/orphan.ts | 0 .../packages/ui/package.json | 0 .../packages/ui/utils.ts | 0 .../apps/web/package.json | 0 .../apps/web/src/index.ts | 0 .../package.json | 0 .../packages/ui/package.json | 0 .../packages/ui/src/components/button.tsx | 0 .../packages/ui/src/components/helpers.ts | 0 .../packages/ui/src/components/orphan.ts | 0 .../fixtures/workspace-wildcards/package.json | 0 .../packages/app/package.json | 0 .../packages/app/src/index.ts | 0 .../packages/ui/internal/hidden.ts | 0 .../packages/ui/package.json | 0 .../packages/ui/src/components/button.ts | 0 .../packages/ui/src/components/index.ts | 0 .../packages/ui/src/orphan.ts | 0 .../deslop}/fixtures/zx-scripts/package.json | 0 .../zx-scripts/scripts/build-image.mjs | 0 .../deslop}/fixtures/zx-scripts/src/index.ts | 0 .../deslop}/fixtures/zx-scripts/src/orphan.ts | 0 .../tests/deslop}/helpers/fixtures-dir.ts | 0 .../tests/deslop}/path-normalization.test.ts | 16 +- .../tests/deslop}/semantic.test.ts | 6 +- .../tests/deslop}/type-analysis.test.ts | 4 +- .../helpers/in-process-dead-code-worker.ts | 46 ++ packages/core/vite.config.ts | 29 +- .../deslop-cli/tests/helpers/fixtures-dir.ts | 7 +- packages/deslop-js/package.json | 6 +- packages/deslop-js/src/index.ts | 735 +----------------- packages/deslop-js/vite.config.ts | 6 +- pnpm-lock.yaml | 36 +- vite.config.ts | 4 +- 1437 files changed, 900 insertions(+), 781 deletions(-) create mode 100644 .changeset/deslop-engine-in-core.md rename packages/{deslop-js/src => core/src/deslop}/collect/config-string-entries.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/collect/entries.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/collect/expo-config-plugin-entries.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/collect/parallel-parse.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/collect/parse-worker.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/collect/parse.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/collect/sections-module-entries.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/collect/sibling-workspace-import-entries.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/collect/workspaces.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/constants.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/duplicate-blocks/clusters.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/duplicate-blocks/concatenate.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/duplicate-blocks/extract.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/duplicate-blocks/index.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/duplicate-blocks/normalize.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/duplicate-blocks/shadowed-directory-pairs.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/duplicate-blocks/suffix-array.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/duplicate-blocks/token-types.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/duplicate-blocks/token-visitor.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/errors.ts (100%) create mode 100644 packages/core/src/deslop/index.ts rename packages/{deslop-js/src => core/src/deslop}/linker/build.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/linker/re-exports.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/linker/reachability.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/report/complexity.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/report/cross-file-duplicate-exports.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/report/cycles.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/report/dry-patterns.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/report/exports.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/report/feature-flags.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/report/files.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/report/generate.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/report/packages.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/report/private-type-leaks.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/report/re-export-cycles.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/report/redundancy.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/report/typescript-smells.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/resolver/resolve.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/resolver/source-path.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/semantic/index.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/semantic/misclassified-dependencies.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/semantic/program.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/semantic/redundant-reexports.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/semantic/references.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/semantic/unused-class-members.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/semantic/unused-enum-members.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/semantic/unused-types.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/semantic/utils/source-file-lookup.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/semantic/variable-aliases.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/types.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/utils/collect-duplicate-constants.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/utils/collect-git-ignored-paths.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/utils/collect-inline-type-literals.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/utils/collect-override-mappings-from-record.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/utils/collect-simplifiable-expressions.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/utils/collect-simplifiable-functions.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/utils/compute-line-starts.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/utils/detect-identity-wrapper.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/utils/detect-redundant-type-pattern.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/utils/detect-simplifiable-function.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/utils/escape-reg-exp.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/utils/extract-default-export-local-name.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/utils/extract-override-target.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/utils/find-monorepo-root.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/utils/is-ast-node.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/utils/is-config-file.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/utils/is-framework-lifecycle-method.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/utils/is-platform-builtin-or-virtual.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/utils/line-column.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/utils/matches-package-import-reference.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/utils/matches-package-token-reference.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/utils/normalize-type-hash.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/utils/offset-to-line-column.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/utils/oxc-ast-node.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/utils/package-name.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/utils/parse-pnpm-workspace-overrides.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/utils/resolve-available-concurrency.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/utils/resolve-entry-with-extensions.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/utils/run-safe-detector.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/utils/sanitize-import-specifier.ts (100%) rename packages/{deslop-js/src => core/src/deslop}/utils/to-posix-path.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/analyze.test.ts (99%) rename packages/{deslop-js/tests => core/tests/deslop}/collect-git-ignored-paths.test.ts (90%) rename packages/{deslop-js/tests => core/tests/deslop}/dependency-utils.test.ts (85%) rename packages/{deslop-js/tests => core/tests/deslop}/errors.test.ts (97%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/alias-mixed-exports/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/alias-mixed-exports/src/helpers.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/alias-mixed-exports/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/alias-mixed-exports/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/alias-mixed-exports/src/types.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/alias-mixed-exports/tsconfig.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/alias-named-exports/barrel.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/alias-named-exports/greetings.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/alias-named-exports/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/alias-named-exports/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/alias-paths/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/alias-paths/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/alias-paths/src/utils.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/alias-paths/tsconfig.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/angular-workspace/angular.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/angular-workspace/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/angular-workspace/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/angular-workspace/projects/demo/src/app/app.component.css (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/angular-workspace/projects/demo/src/app/app.component.html (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/angular-workspace/projects/demo/src/app/app.component.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/angular-workspace/projects/demo/src/app/app.module.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/angular-workspace/projects/demo/src/app/orphan.css (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/angular-workspace/projects/demo/src/environments/environment.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/angular-workspace/projects/demo/src/main.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/angular-workspace/projects/demo/src/polyfills.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/angular-workspace/projects/demo/src/styles.css (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/angular-workspace/projects/demo/src/test.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/arrow-wrapped-import-dynamic/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/arrow-wrapped-import-dynamic/src/Bar.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/arrow-wrapped-import-dynamic/src/Baz.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/arrow-wrapped-import-dynamic/src/Foo.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/arrow-wrapped-import-dynamic/src/feature.routes.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/arrow-wrapped-import-dynamic/src/index.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/arrow-wrapped-import-dynamic/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/astro-content/astro.config.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/astro-content/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/astro-content/src/content.config.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/astro-content/src/content/config.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/astro-content/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/astro-content/src/pages/index.astro (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/astro-frontmatter-return/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/astro-frontmatter-return/src/components/Greeting.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/astro-frontmatter-return/src/components/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/astro-frontmatter-return/src/pages/[...slug].astro (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/astro-frontmatter-return/src/scripts/analytics.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/astro-frontmatter-return/src/scripts/inline-helper.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/astro-live-config/astro.config.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/astro-live-config/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/astro-live-config/src/live.config.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/astro-live-config/src/loaders/wordpress-loader.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/astro-live-config/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/astro-live-config/src/pages/index.astro (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/astro-mw/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/astro-mw/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/astro-mw/src/middleware.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/astro-mw/src/pages/index.astro (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/ava-app/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/ava-app/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/ava-app/src/math.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/ava-app/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/ava-app/test/math.test.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/babel-module-resolver/babel.config.js (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/babel-module-resolver/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/babel-module-resolver/src/components/button.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/babel-module-resolver/src/components/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/babel-module-resolver/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/broken-tsconfig/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/broken-tsconfig/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/broken-tsconfig/tsconfig.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/build-root-fallback/bin/server.js (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/build-root-fallback/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/build-root-fallback/src/app.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/build-root-fallback/src/db.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/build-root-fallback/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/build-script-map/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/build-script-map/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/build-script-map/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/build-script-map/src/scripts/health-check.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/build-script-map/src/scripts/migrate.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/bun-test/__tests__/integration.test.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/bun-test/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/bun-test/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/bun-test/src/__tests__/build-output.test.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/bun-test/src/add.test.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/bun-test/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/bun-test/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/bun-test/src/utils_test.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/ci-scripts/.github/workflows/release.yml (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/ci-scripts/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/ci-scripts/scripts/build-release.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/ci-scripts/scripts/deploy.mjs (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/ci-scripts/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/ci-scripts/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/ci-yaml-non-run/.github/changelog/changelog.js (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/ci-yaml-non-run/.github/workflows/release.yml (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/ci-yaml-non-run/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/ci-yaml-non-run/scripts/deploy.mjs (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/ci-yaml-non-run/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cloudflare-worker/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cloudflare-worker/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cloudflare-worker/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/commonjs-app/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/commonjs-app/src/index.js (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/commonjs-app/src/orphan.js (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/commonjs-app/src/utils.js (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/complex-functions/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/complex-functions/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/config-compound-name/cypress.config.contract.js (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/config-compound-name/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/config-compound-name/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/config-compound-name/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/config-compound-name/vitest.config.unit.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/config-detection/.desloprc.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/config-detection/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/config-detection/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/config-detection/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/config-detection/src/utils.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/config-entry-seed/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/config-entry-seed/src/helper.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/config-entry-seed/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/config-entry-seed/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/config-entry-seed/src/vite-plugin.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/config-entry-seed/vite.config.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/config-exclusion/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/config-exclusion/playwright.smoke.config.mjs (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/config-exclusion/sanity.cli.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/config-exclusion/sanity.config.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/config-exclusion/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/config-exclusion/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/config-exclusion/vitest.config.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/config-global-scope/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/config-global-scope/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/config-global-scope/templates/next-app/eslint.config.js (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/config-global-scope/templates/next-app/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/config-global-scope/templates/next-app/postcss.config.mjs (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/config-imports/my-vite-plugin.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/config-imports/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/config-imports/src/app.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/config-imports/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/config-imports/src/shared-util.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/config-imports/vite.config.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/config-mixed-formats/lage.config.cjs (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/config-mixed-formats/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/config-mixed-formats/prettier.config.mjs (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/config-mixed-formats/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/config-mixed-formats/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/config-mixed-formats/vitest.config.mts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/config-paths-only/lib/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/config-paths-only/lib/thing.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/config-paths-only/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/config-paths-only/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/config-script-flags/db/drizzle.config.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/config-script-flags/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/config-script-flags/scripts/seed.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/config-script-flags/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/config-script-flags/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cra-jest-transforms/config/jest/babelTransform.js (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cra-jest-transforms/config/jest/cssTransform.js (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cra-jest-transforms/config/jest/fileTransform.js (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cra-jest-transforms/config/jest/orphanTransform.js (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cra-jest-transforms/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cra-jest-transforms/scripts/utils/createJestConfig.js (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cra-jest-transforms/src/index.js (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cra-monorepo-scope/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cra-monorepo-scope/packages/app/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cra-monorepo-scope/packages/app/src/App.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cra-monorepo-scope/packages/app/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cra-monorepo-scope/packages/lib/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cra-monorepo-scope/packages/lib/src/RootOnly.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cra-monorepo-scope/packages/lib/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cra-rewired/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cra-rewired/src/App.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cra-rewired/src/components/Header.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cra-rewired/src/index.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cra-rewired/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cra-src-baseurl/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cra-src-baseurl/src/App.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cra-src-baseurl/src/components/Header.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cra-src-baseurl/src/index.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cra-src-baseurl/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cross-ext-js-ts/generators.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cross-ext-js-ts/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cross-ext-js-ts/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cross-ext-js-ts/plugin.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cross-ext-js-ts/src/utils/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cross-ext-ts-tsx/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cross-ext-ts-tsx/src/App.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cross-ext-ts-tsx/src/components/Button.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cross-ext-ts-tsx/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cross-ext-ts-tsx/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cross-file-duplicate-exports-unrelated/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cross-file-duplicate-exports-unrelated/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cross-file-duplicate-exports-unrelated/src/routes/alpha/handler.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cross-file-duplicate-exports-unrelated/src/routes/beta/handler.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cross-file-duplicate-exports/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cross-file-duplicate-exports/src/alpha.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cross-file-duplicate-exports/src/beta.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cross-file-duplicate-exports/src/gamma.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cross-file-duplicate-exports/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/css-tilde-import/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/css-tilde-import/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/css-tilde-import/src/styles.scss (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cycle-chain/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cycle-chain/src/a.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cycle-chain/src/b.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cycle-chain/src/c.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cycle-chain/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cycle-none/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cycle-none/src/helper.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cycle-none/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cycle-none/src/util.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cycle-reexport/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cycle-reexport/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cycle-reexport/src/module-a.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cycle-reexport/src/module-b.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cycle-simple/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cycle-simple/src/a.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cycle-simple/src/b.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cycle-simple/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cycle-type-only/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cycle-type-only/src/a.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cycle-type-only/src/b.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cycle-type-only/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cycle-with-orphans/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cycle-with-orphans/module-a.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cycle-with-orphans/module-b.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cycle-with-orphans/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/cycle-with-orphans/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/deep-reexport-chain/consumer.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/deep-reexport-chain/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/deep-reexport-chain/level-1.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/deep-reexport-chain/level-2.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/deep-reexport-chain/level-3.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/deep-reexport-chain/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/deep-reexport-tracking/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/deep-reexport-tracking/src/barrel-mid.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/deep-reexport-tracking/src/barrel-top.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/deep-reexport-tracking/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/deep-reexport-tracking/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/deep-reexport-tracking/src/unused-source.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/deep-reexport-tracking/src/used-source.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/default-import-named-export/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/default-import-named-export/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/default-import-named-export/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/default-import-named-export/src/settings-panel.test.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/default-import-named-export/src/settings-panel.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/dependency-tooling/.eslintrc.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/dependency-tooling/jest.config.js (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/dependency-tooling/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/dependency-tooling/project.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/dependency-tooling/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/docusaurus-docs/blog/first-post.mdx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/docusaurus-docs/docs/intro.mdx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/docusaurus-docs/docusaurus.config.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/docusaurus-docs/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/docusaurus-docs/src/components/orphan.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/docusaurus-docs/src/components/used.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/docusaurus-docs/src/pages/index.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/dry-patterns-syntactic/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/dry-patterns-syntactic/src/duplicate-imports.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/dry-patterns-syntactic/src/duplicate-type-other/types.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/dry-patterns-syntactic/src/helpers.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/dry-patterns-syntactic/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/dry-patterns-syntactic/src/other.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/dry-patterns-syntactic/src/types.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/dry-patterns-syntactic/src/wrappers.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/dts-imports/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/dts-imports/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/dts-imports/src/helper.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/dts-imports/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/dts-imports/src/types.d.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/duplicate-blocks-basic/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/duplicate-blocks-basic/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/duplicate-blocks-basic/src/invoices.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/duplicate-blocks-basic/src/orders.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/duplicate-constants-unit-mismatch/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/duplicate-constants-unit-mismatch/src/feature-cache.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/duplicate-constants-unit-mismatch/src/feature-pixels.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/duplicate-constants-unit-mismatch/src/feature-poll.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/duplicate-constants-unit-mismatch/src/feature-reconnect.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/duplicate-constants-unit-mismatch/src/feature-time.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/duplicate-constants-unit-mismatch/src/feature-tokens.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/duplicate-constants-unit-mismatch/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/duplicate-constants/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/duplicate-constants/src/feature-one.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/duplicate-constants/src/feature-three.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/duplicate-constants/src/feature-two.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/duplicate-constants/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/duplicate-exports-barrel/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/duplicate-exports-barrel/src/alpha.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/duplicate-exports-barrel/src/barrel.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/duplicate-exports-barrel/src/beta.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/duplicate-exports-barrel/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/duplicate-import-type-value/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/duplicate-import-type-value/src/api.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/duplicate-import-type-value/src/consumer-split.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/duplicate-inline-types/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/duplicate-inline-types/src/elsewhere.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/duplicate-inline-types/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/duplicate-inline-types/src/operations.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/electron-app/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/electron-app/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/electron-app/src/main/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/electron-app/src/main/window.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/electron-app/src/preload.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/electron-app/src/preload/preload.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/electron-builder-files/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/electron-builder-files/src/main.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/electron-builder-files/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/electron-builder-files/src/preload.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/electron-builder-files/src/worker.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/electron-detection/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/electron-detection/src/main.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/electron-detection/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/electron-detection/src/preload/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/electron-detection/src/window.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/electron-entries/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/electron-entries/src/app.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/electron-entries/src/main.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/electron-entries/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/electron-entries/src/preload/bridge.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/electron-entries/src/preload/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/empty-and-binary-files/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/empty-and-binary-files/src/binary-file.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/empty-and-binary-files/src/empty-file.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/empty-and-binary-files/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/empty-and-binary-files/src/minified-bundle.js (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/entry-validation/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/entry-validation/src/consumer.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/entry-validation/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/enum-export/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/enum-export/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/enum-export/status.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/env-wrapper/orphan.js (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/env-wrapper/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/env-wrapper/src/dev-entry.js (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/env-wrapper/src/helper.js (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/env-wrapper/src/main.js (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/expo-config-plugins/app.config.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/expo-config-plugins/app.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/expo-config-plugins/apps/mobile/app.config.js (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/expo-config-plugins/apps/mobile/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/expo-config-plugins/apps/shared/cross-workspace-plugin.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/expo-config-plugins/expo-camera.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/expo-config-plugins/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/expo-config-plugins/plugins/directory-index-plugin/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/expo-config-plugins/plugins/expo-json-extensionless-plugin.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/expo-config-plugins/plugins/false-positive-target.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/expo-config-plugins/plugins/root-json-plugin.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/expo-config-plugins/plugins/template-literal-plugin.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/expo-config-plugins/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/expo-router-app/app/(tabs)/_layout.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/expo-router-app/app/(tabs)/index.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/expo-router-app/app/(tabs)/settings.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/expo-router-app/app/_layout.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/expo-router-app/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/expo-router-src-app-orphan/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/expo-router-src-app-orphan/src/app/(tabs)/_layout.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/expo-router-src-app-orphan/src/app/(tabs)/index.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/expo-router-src-app-orphan/src/app/_layout.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/expo-router-src-app-orphan/src/utils/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/expo-router-src-app/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/expo-router-src-app/src/app/(tabs)/_layout.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/expo-router-src-app/src/app/(tabs)/index.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/expo-router-src-app/src/app/(tabs)/settings.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/expo-router-src-app/src/app/_layout.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/export-default/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/export-default/src/component.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/export-default/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/export-default/src/unused-default.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/extensionless-relative-import/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/extensionless-relative-import/src/App.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/extensionless-relative-import/src/Radio.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/extensionless-relative-import/src/index.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/extensionless-relative-import/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/feature-flags-basic/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/feature-flags-basic/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/filename-registry-entries/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/filename-registry-entries/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/filename-registry-entries/src/registry.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/filename-registry-entries/tools/diagnose-user.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/filename-registry-entries/tools/export-data.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/filename-registry-entries/tools/genuinely-dead.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/flow-js-app/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/flow-js-app/src/Widget.js (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/flow-js-app/src/actions/helper.js (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/flow-js-app/src/main.dev.js (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/flow-js-app/src/orphan.js (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/framework-gate/no-framework/app/dashboard/page.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/framework-gate/no-framework/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/framework-gate/no-framework/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/framework-gate/no-framework/pages/index.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/framework-gate/no-framework/resources/js/Pages/dashboard.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/framework-gate/no-framework/src/routes/index.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/framework-gate/with-additional-framework-pages/module-federation.config.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/framework-gate/with-additional-framework-pages/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/framework-gate/with-additional-framework-pages/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/framework-gate/with-additional-framework-pages/src/pages/blog/index.page.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/framework-gate/with-additional-framework-pages/src/remote-entry.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/framework-gate/with-additional-framework-pages/src/renderer/on-render-client.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/framework-gate/with-additional-framework-pages/src/routes/dashboard/index.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/framework-gate/with-additional-framework-pages/src/waku.client.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/framework-gate/with-additional-framework-pages/web/src/Routes.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/framework-gate/with-additional-framework-pages/web/src/layouts/main.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/framework-gate/with-additional-framework-pages/web/src/pages/home.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/framework-gate/with-inertia/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/framework-gate/with-inertia/resources/js/Pages/Admin/index.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/framework-gate/with-inertia/resources/js/app.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/framework-gate/with-inertia/resources/js/components/bootstrap.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/framework-gate/with-inertia/resources/js/components/page-title.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/framework-gate/with-inertia/resources/js/orphan.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/framework-gate/with-nextjs/app/dashboard/page.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/framework-gate/with-nextjs/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/framework-gate/with-nextjs/pages/index.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/framework-gate/with-nextjs/unused.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/framework-gate/with-react-router/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/framework-gate/with-react-router/react-router.config.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/framework-gate/with-react-router/src/root.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/framework-gate/with-react-router/src/routes/home.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/framework-gate/with-react-router/unused.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/framework-gate/with-redwood-non-router-package/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/framework-gate/with-redwood-non-router-package/web/src/pages/home.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/framework-hoisted-router-scripts/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/framework-hoisted-router-scripts/packages/react-router-app/app/root.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/framework-hoisted-router-scripts/packages/react-router-app/app/routes/home.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/framework-hoisted-router-scripts/packages/react-router-app/orphan.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/framework-hoisted-router-scripts/packages/react-router-app/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/framework-hoisted-router-scripts/packages/remix-app/app/root.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/framework-hoisted-router-scripts/packages/remix-app/app/routes/home.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/framework-hoisted-router-scripts/packages/remix-app/orphan.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/framework-hoisted-router-scripts/packages/remix-app/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/framework-hoisted-script-entry/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/framework-hoisted-script-entry/packages/app/orphan.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/framework-hoisted-script-entry/packages/app/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/framework-hoisted-script-entry/packages/app/pages/index.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/gatsby-app/gatsby-config.js (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/gatsby-app/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/gatsby-app/src/api/hello.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/gatsby-app/src/components/unused.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/gatsby-app/src/components/used.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/gatsby-app/src/pages/index.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/gatsby-app/src/templates/post.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/generated-specs/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/generated-specs/src/__tests__/index.test.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/generated-specs/src/generated/schema.gen.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/generated-specs/src/generated/types.spec.gen.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/generated-specs/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/gh-actions-scripts/.github/actions/deploy/run.js (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/gh-actions-scripts/.github/actions/deploy/unused-helper.js (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/gh-actions-scripts/.github/workflows/ci.yml (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/gh-actions-scripts/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/gh-actions-scripts/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/gitignore-app/.gitignore (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/gitignore-app/generated/output.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/gitignore-app/generated/routes.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/gitignore-app/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/gitignore-app/src/home-route.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/gitignore-app/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/gitignore-app/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/graphql-schema/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/graphql-schema/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/graphql-schema/src/schema.graphql (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/graphql-schema/src/unused.graphql (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/heuristic-no-dir-fallback/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/heuristic-no-dir-fallback/src/cli/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/heuristic-no-dir-fallback/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/heuristic-no-dir-fallback/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/hoc-wrapped-default-export/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/hoc-wrapped-default-export/src/apps-badge.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/hoc-wrapped-default-export/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/hoc-wrapped-default-export/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/html-entry-scope/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/html-entry-scope/packages/app/index.html (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/html-entry-scope/packages/app/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/html-entry-scope/packages/app/sample/demo.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/html-entry-scope/packages/app/sample/index.html (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/html-entry-scope/packages/app/src/helper.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/html-entry-scope/packages/app/src/main.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/html-entry-scope/packages/lib/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/html-entry-scope/packages/lib/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/html-entry-scope/packages/lib/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/i18n-app/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/i18n-app/public/locales/en.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/i18n-app/src/i18n.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/i18n-app/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/i18n-app/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/i18n-glob-skip/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/i18n-glob-skip/src/app.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/i18n-glob-skip/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/i18n-glob-skip/tsconfig.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/import-dynamic-literal/notes.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/import-dynamic-literal/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/import-dynamic-literal/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/import-dynamic-literal/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/import-dynamic-template/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/import-dynamic-template/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/import-dynamic-template/src/locales/de/core.js (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/import-dynamic-template/src/locales/en/core.js (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/import-dynamic-template/src/locales/fr/core.js (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/import-dynamic-template/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/import-dynamic/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/import-dynamic/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/import-dynamic/src/lazy.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/import-dynamic/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/import-dynamic/src/utils.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/import-mixed/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/import-mixed/lib.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/import-mixed/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/import-mixed/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/import-mixed/utils.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/import-query-param/config.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/import-query-param/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/import-query-param/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/import-query-param/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/import-query-param/styles.css (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/import-query-param/theme.css (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/import-query-param/worker.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/import-reexport-same/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/import-reexport-same/src/components/helper.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/import-reexport-same/src/components/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/import-reexport-same/src/components/unused-component.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/import-reexport-same/src/components/widget.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/import-reexport-same/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/import-reexport-same/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/import-side-effect/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/import-side-effect/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/import-side-effect/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/import-side-effect/src/setup.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/import-specifier-sanitize/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/import-specifier-sanitize/src/frag.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/import-specifier-sanitize/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/import-specifier-sanitize/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/import-specifier-sanitize/src/query.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/import-specifier-sanitize/src/worker.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/import-subpath/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/import-subpath/src/api/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/import-subpath/src/api/user.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/import-subpath/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/import-subpath/tsconfig.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/internal-export-usage/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/internal-export-usage/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/internal-export-usage/src/module-registry.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/internal-export-usage/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/internal-export-usage/src/service.module.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/jest-config-cts/jest.config.cts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/jest-config-cts/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/jest-config-cts/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/jest-config-cts/test-setup.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/jest-mapper/__mocks__/fileMock.js (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/jest-mapper/__mocks__/styleMock.js (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/jest-mapper/jest.config.js (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/jest-mapper/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/jest-mapper/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/jest-mapper/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/jest-match/jest.config.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/jest-match/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/jest-match/src/__tests__/app.test.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/jest-match/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/jest-match/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/jest-match/src/utils.test.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/jest-match/tests/outside.test.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/jest-mock-entry/__mocks__/some-lib.js (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/jest-mock-entry/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/jest-mock-entry/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/jest-mock-entry/src/__mocks__/axios.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/jest-mock-entry/src/__mocks__/fs.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/jest-mock-entry/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/jest-mock-files/__mocks__/api-client.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/jest-mock-files/__mocks__/fs.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/jest-mock-files/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/jest-mock-files/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/jest-mock-files/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/jest-module-name-mapper/jest.config.js (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/jest-module-name-mapper/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/jest-module-name-mapper/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/jest-module-name-mapper/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/jest-module-name-mapper/src/value.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/jest-setup-config/__mocks__/styleMock.js (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/jest-setup-config/jest.config.js (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/jest-setup-config/jest.setup.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/jest-setup-config/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/jest-setup-config/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/jest-setup-config/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/jest-setup-config/src/setup-helper.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/jsx-block-arrow/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/jsx-block-arrow/src/index.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/lerna-workspace/lerna.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/lerna-workspace/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/lerna-workspace/packages/app/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/lerna-workspace/packages/app/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/lerna-workspace/packages/ui/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/lerna-workspace/packages/ui/src/button.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/lerna-workspace/packages/ui/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/lerna-workspace/packages/ui/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/mdx-import/docs/intro.mdx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/mdx-import/docusaurus.config.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/mdx-import/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/mdx-import/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/mdx-import/src/components/Chart.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/mdx-import/src/components/Unused.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/migration-orm/migrations/001-create-users.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/migration-orm/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/migration-orm/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/migration-orm/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/migration-raw/migrations/001-create-users.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/migration-raw/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/migration-raw/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/misclassified-deps-typeonly/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/misclassified-deps-typeonly/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/mock-patterns/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/mock-patterns/src/__fixtures__/user-data.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/mock-patterns/src/__mocks__/api-client.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/mock-patterns/src/fixtures/sample-data.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/mock-patterns/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/mock-patterns/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/module-side-effect/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/module-side-effect/lib.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/module-side-effect/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/module-side-effect/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/module-side-effect/polyfill.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/module-side-effect/register.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/monorepo-script-entry/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/monorepo-script-entry/packages/sub/internal-tools/renderer.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/monorepo-script-entry/packages/sub/internal-tools/tui.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/monorepo-script-entry/packages/sub/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/monorepo-script-entry/packages/sub/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/monorepo-script-entry/pnpm-workspace.yaml (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/nested-dist-non-workspace/.gitignore (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/nested-dist-non-workspace/apps/orphan/dist/index.mjs (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/nested-dist-non-workspace/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/nested-dist-non-workspace/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/nested-overrides/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/nested-overrides/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/nestjs-app/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/nestjs-app/src/app.module.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/nestjs-app/src/main.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/nestjs-app/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/nestjs-app/src/users.controller.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/next-config-scope/examples/my-app/next.config.mjs (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/next-config-scope/examples/my-app/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/next-config-scope/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/next-config-scope/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/next-config-scope/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/next-empty-tsconfig/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/next-empty-tsconfig/src/env.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/next-empty-tsconfig/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/next-empty-tsconfig/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/next-empty-tsconfig/tsconfig.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/next-middleware/instrumentation.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/next-middleware/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/next-middleware/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/next-middleware/proxy.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/next-middleware/src/auth.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/next-middleware/src/middleware.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/next-pages-mdx/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/next-pages-mdx/pages/about.mdx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/next-pages-mdx/pages/index.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/next-pages-mdx/src/Home.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/next-pages-mdx/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/ns-chain/consumer.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/ns-chain/helpers.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/ns-chain/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/ns-chain/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/ns-chain/unused-module.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/ns-exports/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/ns-exports/src/helpers.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/ns-exports/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/ns-forin/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/ns-forin/src/config.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/ns-forin/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/ns-imports/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/ns-imports/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/ns-imports/src/utils.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/ns-partial/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/ns-partial/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/ns-partial/src/math.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/ns-reexport/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/ns-reexport/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/ns-reexport/src/lib/helpers.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/ns-reexport/src/lib/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/ns-spread/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/ns-spread/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/ns-spread/src/utils.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/ns-whole/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/ns-whole/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/ns-whole/src/utils.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/numeric-keys-types/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/numeric-keys-types/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/optional-deps/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/optional-deps/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/optional-deps/sanity.cli.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/optional-deps/sanity.config.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/optional-deps/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/orphan-barrel-subtree/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/orphan-barrel-subtree/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/orphan-barrel-subtree/src/subtree/setup.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/orphan-barrel-subtree/src/subtree/tabs/helpers.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/orphan-barrel-subtree/src/subtree/tabs/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/orphan-dynamic-subtree/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/orphan-dynamic-subtree/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/orphan-dynamic-subtree/src/subtree/lazy.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/orphan-dynamic-subtree/src/subtree/setup.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/orphan-mixed-exports/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/orphan-mixed-exports/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/orphan-mixed-exports/src/test-utils/helpers.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/orphan-mixed-exports/src/test-utils/setup.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/orphan-shared-child/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/orphan-shared-child/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/orphan-shared-child/src/shared/utils.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/orphan-shared-child/src/subtree/helpers.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/orphan-shared-child/src/subtree/setup.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/outdir-mapping/main/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/outdir-mapping/main/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/outdir-mapping/main/setup.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/outdir-mapping/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/outdir-mapping/tsconfig.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/path-alias-specificity/general/feature/thing.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/path-alias-specificity/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/path-alias-specificity/special/thing.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/path-alias-specificity/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/playwright-ext/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/playwright-ext/my-test.pw.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/playwright-ext/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/playwright-ext/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/playwright-lib/e2e/login.spec.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/playwright-lib/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/playwright-lib/lib/helpers.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/playwright-lib/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/playwright-lib/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/playwright-lib/support/commands.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/playwright-lib/tests/smoke.spec.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/pnpm-nested-overrides/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/pnpm-nested-overrides/pnpm-workspace.yaml (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/pnpm-nested-overrides/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/pnpm-workspace-override/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/pnpm-workspace-override/pnpm-workspace.yaml (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/pnpm-workspace-override/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/pnpm-workspace-override/vite.config.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/polyrepo/orphan-dir/stray.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/polyrepo/project-a/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/polyrepo/project-a/src/helper.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/polyrepo/project-a/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/polyrepo/project-a/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/polyrepo/project-b/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/polyrepo/project-b/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/polyrepo/project-b/src/unused.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/prettier-rc-plugins/.prettierrc (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/prettier-rc-plugins/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/prettier-rc-plugins/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/private-type-leak/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/private-type-leak/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/re-export-cycle/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/re-export-cycle/src/barrel.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/re-export-cycle/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/re-export-cycle/src/leaf.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/re-export-cycle/src/other.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/react-router/app/components/header.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/react-router/app/components/unused-widget.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/react-router/app/dashboard/layout.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/react-router/app/dashboard/page.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/react-router/app/root.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/react-router/app/routes.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/react-router/app/routes/about.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/react-router/app/routes/home.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/react-router/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/react-router/react-router.config.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/redundant-aliases-self/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/redundant-aliases-self/src/barrel.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/redundant-aliases-self/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/redundant-aliases-self/src/source.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/redundant-aliases-variable/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/redundant-aliases-variable/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/redundant-aliases-variable/src/source.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/redundant-aliases-variable/tsconfig.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/redundant-reexports-semantic/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/redundant-reexports-semantic/src/barrel.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/redundant-reexports-semantic/src/consumer.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/redundant-reexports-semantic/src/impl.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/redundant-reexports-semantic/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/redundant-reexports-semantic/tsconfig.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/reexport-alias/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/reexport-alias/src/barrel-mid.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/reexport-alias/src/barrel-top.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/reexport-alias/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/reexport-alias/src/source.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/reexport-chains/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/reexport-chains/src/barrel-a.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/reexport-chains/src/barrel-b.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/reexport-chains/src/barrel-c.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/reexport-chains/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/reexport-chains/src/source.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/reexport-default-named/consumer.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/reexport-default-named/gadget.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/reexport-default-named/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/reexport-default-named/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/reexport-default-named/widget.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/reexport-default/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/reexport-default/src/components/Button.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/reexport-default/src/components/Card/Card.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/reexport-default/src/components/Card/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/reexport-default/src/components/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/reexport-default/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/reexport-file-variants/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/reexport-file-variants/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/reexport-file-variants/src/named-barrel.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/reexport-file-variants/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/reexport-file-variants/src/star-barrel.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/reexport-file-variants/src/utils/format.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/reexport-file-variants/src/utils/greet.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/reexport-mixed/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/reexport-mixed/src/barrel.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/reexport-mixed/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/reexport-mixed/src/named-source.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/reexport-mixed/src/star-source.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/reexport-multi-hop/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/reexport-multi-hop/src/barrel1.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/reexport-multi-hop/src/barrel2.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/reexport-multi-hop/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/reexport-multi-hop/src/source.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/reexport-multi-level/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/reexport-multi-level/src/barrel-a.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/reexport-multi-level/src/barrel-b.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/reexport-multi-level/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/reexport-multi-level/src/source.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/reexport-star-named/consumer.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/reexport-star-named/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/reexport-star-named/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/reexport-star-named/special.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/reexport-star-named/utils.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/reexport-star/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/reexport-star/src/barrel.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/reexport-star/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/reexport-star/src/module-a.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/reexport-star/src/module-b.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/reexport-star/src/module-c.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/reexport-unused/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/reexport-unused/src/components/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/reexport-unused/src/components/types-source.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/reexport-unused/src/components/unused-source.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/reexport-unused/src/components/used-source.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/reexport-unused/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/remark-config-deps/.remarkrc.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/remark-config-deps/docs/guide.mdx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/remark-config-deps/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/remark-config-deps/src/button.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/remark-config-deps/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/remark-config-deps/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/remark-glob-skip/docs/guide.mdx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/remark-glob-skip/docs/intro.mdx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/remark-glob-skip/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/remark-glob-skip/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/remark-glob-skip/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/rn-app/App.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/rn-app/index.js (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/rn-app/metro.config.js (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/rn-app/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/rn-app/src/screens/orphan.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/rn-app/src/screens/used.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/rn-platform/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/rn-platform/src/button.android.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/rn-platform/src/button.ios.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/rn-platform/src/button.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/rn-platform/src/handler.native.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/rn-platform/src/handler.web.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/rn-platform/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/rn-platform/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/rn-platform/src/utils.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/rspack-app/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/rspack-app/rspack.config.js (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/rspack-app/rspack.dev.config.js (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/rspack-app/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/rspack-app/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/script-cli-deps/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/script-cli-deps/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/script-flags/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/script-flags/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/script-flags/scripts/build.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/script-flags/scripts/generate.mts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/script-flags/tests/run.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/script-flags/tsconfig.build.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/script-glob-formatter/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/script-glob-formatter/scripts/build.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/script-glob-formatter/src/helper.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/script-glob-formatter/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/script-glob-formatter/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/script-globs/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/script-globs/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/script-globs/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/script-globs/styles/themes/dark.css (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/script-globs/styles/themes/light.css (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/script-no-extension/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/script-no-extension/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/script-no-extension/scripts/build-data.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/script-no-extension/scripts/lint-code.js (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/script-no-extension/scripts/process-items.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/script-no-extension/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/scss-partial/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/scss-partial/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/scss-partial/src/styles/_mixins.scss (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/scss-partial/src/styles/_orphan.scss (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/scss-partial/src/styles/_variables.scss (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/scss-partial/src/styles/main.scss (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/side-effects-glob/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/side-effects-glob/src/foo/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/side-effects-glob/src/foo/widget/style.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/side-effects-glob/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/side-effects-glob/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/simple-app/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/simple-app/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/simple-app/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/simple-app/src/types.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/simple-app/src/utils.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/simplifiable-expressions/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/simplifiable-expressions/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/simplifiable-functions/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/simplifiable-functions/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/spec-dash-patterns/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/spec-dash-patterns/spec/engine_spec.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/spec-dash-patterns/spec/utils-spec.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/spec-dash-patterns/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/spec-dash-patterns/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/src-build-dir/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/src-build-dir/src/build/helpers.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/src-build-dir/src/build/plugins.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/src-build-dir/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/src-build-dir/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/src-path-fallback/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/src-path-fallback/src/cli/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/src-path-fallback/src/cli/runner.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/src-path-fallback/src/helper.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/src-path-fallback/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/src-path-fallback/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/src-path-fallback/tsconfig.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/star-reexport-chain/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/star-reexport-chain/src/barrel1.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/star-reexport-chain/src/barrel2.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/star-reexport-chain/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/star-reexport-chain/src/source.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/star-selective/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/star-selective/src/barrel.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/star-selective/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/star-selective/src/source.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/storybook-app/.storybook/main.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/storybook-app/.storybook/preview.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/storybook-app/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/storybook-app/src/components/Button.stories.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/storybook-app/src/components/Button.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/storybook-app/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/storybook-mdx-import/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/storybook-mdx-import/src/components/Alert.mdx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/storybook-mdx-import/src/components/Alert.story.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/storybook-mdx-import/src/components/Alert.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/storybook-mdx-import/src/components/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/storybook-mdx-import/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/style-alias/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/style-alias/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/style-alias/src/lib/utils.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/style-alias/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/style-alias/src/styles/globals.css (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/style-alias/tsconfig.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/style-export-map/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/style-export-map/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/style-export-map/src/orphan.css (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/style-export-map/src/style.css (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/style-export-map/tsconfig.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/style-imports/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/style-imports/src/app.css (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/style-imports/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/style-imports/styles/base.css (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/style-imports/styles/orphan.css (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/style-tracking/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/style-tracking/src/helper.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/style-tracking/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/style-tracking/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/style-tracking/src/styles.css (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/style-tracking/src/unused.css (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/subproject-standalone/app/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/subproject-standalone/app/packages/utils/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/subproject-standalone/app/packages/utils/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/subproject-standalone/app/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/subproject-standalone/app/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/subproject-standalone/docs/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/subproject-standalone/docs/src/guide.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/subproject-standalone/docs/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/subproject-standalone/docs/yarn.lock (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/subproject-standalone/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/subproject-workspace/app/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/subproject-workspace/app/packages/core/app/page.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/subproject-workspace/app/packages/core/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/subproject-workspace/app/packages/core/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/subproject-workspace/app/packages/core/src/unused-util.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/subproject-workspace/app/packages/icons/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/subproject-workspace/app/packages/icons/src/icons/heart.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/subproject-workspace/app/packages/icons/src/icons/star.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/subproject-workspace/app/packages/icons/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/subproject-workspace/app/pnpm-workspace.yaml (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/tailwind-v4-plugin/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/tailwind-v4-plugin/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/tailwind-v4-plugin/src/styles.css (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/tanstack-app/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/tanstack-app/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/tanstack-app/src/routes/about.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/tanstack-app/src/routes/index.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/tanstack-app/src/server.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/test-custom-ext/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/test-custom-ext/src/__e2e__/login.test.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/test-custom-ext/src/api.servertest.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/test-custom-ext/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/test-custom-ext/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/test-custom-ext/src/utils.clienttest.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/test-mock-import/__tests__/example.test.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/test-mock-import/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/test-mock-import/src/helper.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/test-mock-import/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/test-mock-import/src/mocked-util.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/test-mock-import/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/test-no-runner/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/test-no-runner/src/helper.test.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/test-no-runner/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/test-node-runner/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/test-node-runner/src/__tests__/main.test.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/test-node-runner/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/test-node-runner/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/test-runner-detect/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/test-runner-detect/src/__tests__/utils.test.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/test-runner-detect/src/helper.test.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/test-runner-detect/src/helper.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/test-runner-detect/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/test-runner-detect/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/test-runner-detect/src/test-only-used.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/tsconfig-wildcard/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/tsconfig-wildcard/src/constants/api.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/tsconfig-wildcard/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/tsconfig-wildcard/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/tsconfig-wildcard/tsconfig.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/tsdown-entry/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/tsdown-entry/src/main.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/tsdown-entry/src/preload.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/tsdown-entry/src/unused.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/tsdown-entry/src/utils.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/tsdown-entry/tsdown.config.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/type-cycle/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/type-cycle/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/type-cycle/src/post.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/type-cycle/src/user.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/type-cycle/tsconfig.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/type-deps/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/type-deps/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/type-reexport-filter/consumer.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/type-reexport-filter/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/type-reexport-filter/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/type-reexport-filter/types.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/type-reexport-filter/user.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/typescript-smells/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/typescript-smells/src/alpha.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/typescript-smells/src/beta.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/typescript-smells/src/delta.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/typescript-smells/src/gamma.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/typescript-smells/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/unused-class-members-basic/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/unused-class-members-basic/src/calculator.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/unused-class-members-basic/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/unused-class-members-basic/tsconfig.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/unused-class-members-decorated/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/unused-class-members-decorated/src/controller.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/unused-class-members-decorated/src/decorators.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/unused-class-members-decorated/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/unused-class-members-decorated/tsconfig.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/unused-class-members-inherited/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/unused-class-members-inherited/src/animals.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/unused-class-members-inherited/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/unused-class-members-inherited/tsconfig.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/unused-enum-members-const/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/unused-enum-members-const/src/flags.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/unused-enum-members-const/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/unused-enum-members-const/tsconfig.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/unused-enum-members-numeric/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/unused-enum-members-numeric/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/unused-enum-members-numeric/src/level.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/unused-enum-members-numeric/tsconfig.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/unused-enum-members-reverse-lookup/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/unused-enum-members-reverse-lookup/src/code.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/unused-enum-members-reverse-lookup/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/unused-enum-members-reverse-lookup/tsconfig.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/unused-enum-members-string/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/unused-enum-members-string/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/unused-enum-members-string/src/status.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/unused-enum-members-string/tsconfig.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/unused-types-basic/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/unused-types-basic/src/consumer.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/unused-types-basic/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/unused-types-basic/src/types.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/unused-types-basic/tsconfig.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/unused-types-decl-merge/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/unused-types-decl-merge/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/unused-types-decl-merge/src/merged.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/unused-types-decl-merge/tsconfig.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/unused-types-entry-export/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/unused-types-entry-export/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/unused-types-entry-export/tsconfig.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/unused-types-extends/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/unused-types-extends/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/unused-types-extends/src/types.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/unused-types-extends/tsconfig.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/unused-types-generics/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/unused-types-generics/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/unused-types-generics/src/types.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/unused-types-generics/tsconfig.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/unused-types-import-type/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/unused-types-import-type/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/unused-types-import-type/src/types.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/unused-types-import-type/tsconfig.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/unused-types-jsdoc/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/unused-types-jsdoc/src/bridge.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/unused-types-jsdoc/src/index.js (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/unused-types-jsdoc/src/jsdoc-consumer.js (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/unused-types-jsdoc/src/types.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/unused-types-jsdoc/tsconfig.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/unused-types-nested/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/unused-types-nested/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/unused-types-nested/src/types.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/unused-types-nested/tsconfig.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/unused-types-reexport-chain/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/unused-types-reexport-chain/src/a.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/unused-types-reexport-chain/src/b.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/unused-types-reexport-chain/src/c.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/unused-types-reexport-chain/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/unused-types-reexport-chain/tsconfig.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/vercel-config-app/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/vercel-config-app/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/vercel-config-app/vercel.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/vite-app/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/vite-app/src/main.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/vite-app/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/vite-app/src/render.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/vite-app/vite.config.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/vite-glob-import/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/vite-glob-import/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/vite-glob-import/src/layouts/main.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/vite-glob-import/src/modules/alpha.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/vite-glob-import/src/modules/beta.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/vite-glob-import/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/vite-resolve-alias/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/vite-resolve-alias/src/lib/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/vite-resolve-alias/src/lib/util.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/vite-resolve-alias/src/main.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/vite-resolve-alias/src/widget.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/vite-resolve-alias/vite.config.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/vitest-automock/__tests__/server.test.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/vitest-automock/__tests__/utils.test.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/vitest-automock/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/vitest-automock/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/vitest-automock/src/server/__mocks__/api.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/vitest-automock/src/server/api.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/vitest-automock/src/server/unused.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/vitest-automock/src/utils/__mocks__/helper.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/vitest-automock/src/utils/helper.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/vitest-coverage/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/vitest-coverage/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/vitest-coverage/src/core.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/vitest-coverage/src/utils.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/vitest-coverage/tests/core.test.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/vitest-coverage/vitest.config.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/vitest-custom/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/vitest-custom/spec/utils-spec.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/vitest-custom/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/vitest-custom/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/vitest-custom/tsconfig.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/vitest-custom/vitest.config.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/vitest-override-target/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/vitest-override-target/pnpm-workspace.yaml (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/vitest-override-target/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/vitest-override-target/vitest.config.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/vitest-setup/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/vitest-setup/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/vitest-setup/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/vitest-setup/src/test/setup.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/vitest-setup/src/utils.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/vitest-setup/vitest.config.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/vue-app/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/vue-app/src/App.vue (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/vue-app/src/components/HelloWorld.vue (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/vue-app/src/components/OrphanComponent.vue (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/vue-app/src/main.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/vue-app/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/vue-app/src/utils.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/webpack-entries/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/webpack-entries/src/components/App.js (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/webpack-entries/src/components/Vendor.js (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/webpack-entries/src/index.js (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/webpack-entries/src/orphan.js (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/webpack-entries/src/vendor.js (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/webpack-entries/webpack.config.js (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/webpack-path/app/index.js (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/webpack-path/app/orphan.js (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/webpack-path/app/renderer.js (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/webpack-path/configs/webpack.config.renderer.prod.babel.js (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/webpack-path/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/webpack-require-ctx/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/webpack-require-ctx/src/components/Button.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/webpack-require-ctx/src/components/nested/Card.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/webpack-require-ctx/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/webpack-require-ctx/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/webpack-require-ctx/src/pages/home.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/webpack-resolve/app/views/actions/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/webpack-resolve/app/views/actions/run-action.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/webpack-resolve/app/views/utils/helper.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/webpack-resolve/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/webpack-resolve/src/App.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/webpack-resolve/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/webpack-resolve/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/webpack-resolve/webpack.config.js (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/wildcard-css/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/wildcard-css/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/wildcard-css/src/components/Button.css (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/wildcard-css/src/components/Button.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/wildcard-css/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/wildcard-late-consume/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/wildcard-late-consume/src/components/color-picker/color-picker.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/wildcard-late-consume/src/components/color-picker/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/wildcard-late-consume/src/components/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/wildcard-late-consume/src/components/text-field.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/wildcard-late-consume/src/components/unused-widget.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/wildcard-late-consume/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/wildcard-late-consume/src/plugins/color-plugin.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/wildcard-late-consume/src/plugins/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/wildcard-late-consume/src/plugins/text-plugin.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/wildcard-subpath/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/wildcard-subpath/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/wildcard-subpath/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/wildcard-subpath/src/templates/goodbye.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/wildcard-subpath/src/templates/welcome.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/worker-new-url/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/worker-new-url/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/worker-new-url/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/worker-new-url/src/worker.js (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-deep-imports/apps/web/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-deep-imports/apps/web/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-deep-imports/apps/web/tsconfig.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-deep-imports/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-deep-imports/packages/shared/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-deep-imports/packages/shared/src/components/button.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-deep-imports/packages/shared/src/components/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-deep-imports/packages/shared/src/hooks/assets.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-deep-imports/packages/shared/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-deep-imports/packages/shared/tsconfig.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-defaults/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-defaults/packages/lib-a/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-defaults/packages/lib-a/src/helper.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-defaults/packages/lib-a/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-defaults/packages/lib-a/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-defaults/packages/lib-b/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-defaults/packages/lib-b/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-dist-resolve/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-dist-resolve/packages/app/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-dist-resolve/packages/app/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-dist-resolve/packages/utils/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-dist-resolve/packages/utils/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-dist-resolve/packages/utils/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-dist-src/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-dist-src/packages/app/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-dist-src/packages/app/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-dist-src/packages/core/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-dist-src/packages/core/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-dist-src/packages/core/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-dist-src/packages/core/src/visualdebug.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-explicit/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-explicit/packages/ui/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-explicit/packages/ui/src/button.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-explicit/packages/ui/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-explicit/packages/utils/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-explicit/packages/utils/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-explicit/packages/utils/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-local-bin/.gitignore (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-local-bin/node_modules/react-email/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-local-bin/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-local-bin/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-no-main/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-no-main/packages/app/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-no-main/packages/app/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-no-main/packages/lib-a/helper.js (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-no-main/packages/lib-a/index.js (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-no-main/packages/lib-a/orphan.js (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-no-main/packages/lib-a/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-path-alias-no-tsconfig/apps/web/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-path-alias-no-tsconfig/apps/web/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-path-alias-no-tsconfig/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-path-alias-no-tsconfig/packages/core/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-path-alias-no-tsconfig/packages/core/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-path-alias-no-tsconfig/packages/core/utils.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-path-alias/apps/web/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-path-alias/apps/web/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-path-alias/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-path-alias/packages/core/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-path-alias/packages/core/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-path-alias/packages/core/utils.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-path-alias/tsconfig.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-structural-alias/apps/web/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-structural-alias/apps/web/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-structural-alias/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-structural-alias/packages/core/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-structural-alias/packages/core/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-structural-alias/packages/core/utils.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-subpath-import-built/apps/web/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-subpath-import-built/apps/web/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-subpath-import-built/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-subpath-import-built/packages/ui/dist/button.js (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-subpath-import-built/packages/ui/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-subpath-import-built/packages/ui/src/button.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-subpath-import-built/packages/ui/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-subpath-import/apps/web/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-subpath-import/apps/web/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-subpath-import/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-subpath-import/packages/ui/button.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-subpath-import/packages/ui/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-subpath-import/packages/ui/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-subpath-import/packages/ui/utils.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-subpath-wildcard-export/apps/web/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-subpath-wildcard-export/apps/web/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-subpath-wildcard-export/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-subpath-wildcard-export/packages/ui/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-subpath-wildcard-export/packages/ui/src/components/button.tsx (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-subpath-wildcard-export/packages/ui/src/components/helpers.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-subpath-wildcard-export/packages/ui/src/components/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-wildcards/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-wildcards/packages/app/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-wildcards/packages/app/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-wildcards/packages/ui/internal/hidden.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-wildcards/packages/ui/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-wildcards/packages/ui/src/components/button.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-wildcards/packages/ui/src/components/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/workspace-wildcards/packages/ui/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/zx-scripts/package.json (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/zx-scripts/scripts/build-image.mjs (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/zx-scripts/src/index.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/fixtures/zx-scripts/src/orphan.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/helpers/fixtures-dir.ts (100%) rename packages/{deslop-js/tests => core/tests/deslop}/path-normalization.test.ts (91%) rename packages/{deslop-js/tests => core/tests/deslop}/semantic.test.ts (99%) rename packages/{deslop-js/tests => core/tests/deslop}/type-analysis.test.ts (98%) create mode 100644 packages/core/tests/helpers/in-process-dead-code-worker.ts diff --git a/.changeset/deslop-engine-in-core.md b/.changeset/deslop-engine-in-core.md new file mode 100644 index 000000000..60cab02fc --- /dev/null +++ b/.changeset/deslop-engine-in-core.md @@ -0,0 +1,5 @@ +--- +"deslop-js": patch +--- + +Restructure internally: the deslop analysis engine now lives in `@react-doctor/core` (under `src/deslop`, exposed via the `@react-doctor/core/deslop` subpath) and `deslop-js` is a thin facade that re-exports it. `vp pack` still bundles the engine into this package's `dist` (CJS + ESM) alongside the sibling `parse-worker.mjs`, so the published tarball stays self-contained and runtime-dependency-free beyond the existing `oxc-parser`/`oxc-resolver`/`fast-glob`/`minimatch` externals. The public API (`analyze`, `defineConfig`, `isOxcAstNode`, and every exported type) is unchanged. diff --git a/packages/api/package.json b/packages/api/package.json index a12960f84..6caa447f9 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -19,6 +19,7 @@ }, "dependencies": { "@react-doctor/core": "workspace:*", + "deslop-js": "workspace:*", "effect": "4.0.0-beta.70" }, "devDependencies": { diff --git a/packages/core/package.json b/packages/core/package.json index 46b1acc64..e4a4fdda6 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -14,6 +14,10 @@ "./schemas": { "types": "./dist/schemas.d.ts", "default": "./dist/schemas.js" + }, + "./deslop": { + "types": "./dist/deslop.d.ts", + "default": "./dist/deslop.js" } }, "scripts": { @@ -23,11 +27,15 @@ }, "dependencies": { "@effect/platform-node-shared": "4.0.0-beta.70", + "@oxc-project/types": "^0.132.0", "confbox": "^0.2.4", - "deslop-js": "workspace:*", "effect": "4.0.0-beta.70", "eslint-plugin-react-hooks": "^7.1.1", + "fast-glob": "^3.3.3", "jiti": "^2.7.0", + "minimatch": "^10.2.5", + "oxc-parser": "^0.132.0", + "oxc-resolver": "^11.19.1", "oxlint": ">=1.66.0 <1.67.0", "oxlint-plugin-react-doctor": "workspace:*", "picomatch": "^4.0.4", @@ -36,9 +44,11 @@ }, "devDependencies": { "@effect/vitest": "4.0.0-beta.70", + "@types/minimatch": "^5.1.2", "@types/node": "^25.6.0", "@types/picomatch": "^4.0.3", - "@types/semver": "^7.7.1" + "@types/semver": "^7.7.1", + "tsx": "^4.21.0" }, "engines": { "node": "^20.19.0 || >=22.13.0" diff --git a/packages/deslop-js/src/collect/config-string-entries.ts b/packages/core/src/deslop/collect/config-string-entries.ts similarity index 100% rename from packages/deslop-js/src/collect/config-string-entries.ts rename to packages/core/src/deslop/collect/config-string-entries.ts diff --git a/packages/deslop-js/src/collect/entries.ts b/packages/core/src/deslop/collect/entries.ts similarity index 100% rename from packages/deslop-js/src/collect/entries.ts rename to packages/core/src/deslop/collect/entries.ts diff --git a/packages/deslop-js/src/collect/expo-config-plugin-entries.ts b/packages/core/src/deslop/collect/expo-config-plugin-entries.ts similarity index 100% rename from packages/deslop-js/src/collect/expo-config-plugin-entries.ts rename to packages/core/src/deslop/collect/expo-config-plugin-entries.ts diff --git a/packages/deslop-js/src/collect/parallel-parse.ts b/packages/core/src/deslop/collect/parallel-parse.ts similarity index 100% rename from packages/deslop-js/src/collect/parallel-parse.ts rename to packages/core/src/deslop/collect/parallel-parse.ts diff --git a/packages/deslop-js/src/collect/parse-worker.ts b/packages/core/src/deslop/collect/parse-worker.ts similarity index 100% rename from packages/deslop-js/src/collect/parse-worker.ts rename to packages/core/src/deslop/collect/parse-worker.ts diff --git a/packages/deslop-js/src/collect/parse.ts b/packages/core/src/deslop/collect/parse.ts similarity index 100% rename from packages/deslop-js/src/collect/parse.ts rename to packages/core/src/deslop/collect/parse.ts diff --git a/packages/deslop-js/src/collect/sections-module-entries.ts b/packages/core/src/deslop/collect/sections-module-entries.ts similarity index 100% rename from packages/deslop-js/src/collect/sections-module-entries.ts rename to packages/core/src/deslop/collect/sections-module-entries.ts diff --git a/packages/deslop-js/src/collect/sibling-workspace-import-entries.ts b/packages/core/src/deslop/collect/sibling-workspace-import-entries.ts similarity index 100% rename from packages/deslop-js/src/collect/sibling-workspace-import-entries.ts rename to packages/core/src/deslop/collect/sibling-workspace-import-entries.ts diff --git a/packages/deslop-js/src/collect/workspaces.ts b/packages/core/src/deslop/collect/workspaces.ts similarity index 100% rename from packages/deslop-js/src/collect/workspaces.ts rename to packages/core/src/deslop/collect/workspaces.ts diff --git a/packages/deslop-js/src/constants.ts b/packages/core/src/deslop/constants.ts similarity index 100% rename from packages/deslop-js/src/constants.ts rename to packages/core/src/deslop/constants.ts diff --git a/packages/deslop-js/src/duplicate-blocks/clusters.ts b/packages/core/src/deslop/duplicate-blocks/clusters.ts similarity index 100% rename from packages/deslop-js/src/duplicate-blocks/clusters.ts rename to packages/core/src/deslop/duplicate-blocks/clusters.ts diff --git a/packages/deslop-js/src/duplicate-blocks/concatenate.ts b/packages/core/src/deslop/duplicate-blocks/concatenate.ts similarity index 100% rename from packages/deslop-js/src/duplicate-blocks/concatenate.ts rename to packages/core/src/deslop/duplicate-blocks/concatenate.ts diff --git a/packages/deslop-js/src/duplicate-blocks/extract.ts b/packages/core/src/deslop/duplicate-blocks/extract.ts similarity index 100% rename from packages/deslop-js/src/duplicate-blocks/extract.ts rename to packages/core/src/deslop/duplicate-blocks/extract.ts diff --git a/packages/deslop-js/src/duplicate-blocks/index.ts b/packages/core/src/deslop/duplicate-blocks/index.ts similarity index 100% rename from packages/deslop-js/src/duplicate-blocks/index.ts rename to packages/core/src/deslop/duplicate-blocks/index.ts diff --git a/packages/deslop-js/src/duplicate-blocks/normalize.ts b/packages/core/src/deslop/duplicate-blocks/normalize.ts similarity index 100% rename from packages/deslop-js/src/duplicate-blocks/normalize.ts rename to packages/core/src/deslop/duplicate-blocks/normalize.ts diff --git a/packages/deslop-js/src/duplicate-blocks/shadowed-directory-pairs.ts b/packages/core/src/deslop/duplicate-blocks/shadowed-directory-pairs.ts similarity index 100% rename from packages/deslop-js/src/duplicate-blocks/shadowed-directory-pairs.ts rename to packages/core/src/deslop/duplicate-blocks/shadowed-directory-pairs.ts diff --git a/packages/deslop-js/src/duplicate-blocks/suffix-array.ts b/packages/core/src/deslop/duplicate-blocks/suffix-array.ts similarity index 100% rename from packages/deslop-js/src/duplicate-blocks/suffix-array.ts rename to packages/core/src/deslop/duplicate-blocks/suffix-array.ts diff --git a/packages/deslop-js/src/duplicate-blocks/token-types.ts b/packages/core/src/deslop/duplicate-blocks/token-types.ts similarity index 100% rename from packages/deslop-js/src/duplicate-blocks/token-types.ts rename to packages/core/src/deslop/duplicate-blocks/token-types.ts diff --git a/packages/deslop-js/src/duplicate-blocks/token-visitor.ts b/packages/core/src/deslop/duplicate-blocks/token-visitor.ts similarity index 100% rename from packages/deslop-js/src/duplicate-blocks/token-visitor.ts rename to packages/core/src/deslop/duplicate-blocks/token-visitor.ts diff --git a/packages/deslop-js/src/errors.ts b/packages/core/src/deslop/errors.ts similarity index 100% rename from packages/deslop-js/src/errors.ts rename to packages/core/src/deslop/errors.ts diff --git a/packages/core/src/deslop/index.ts b/packages/core/src/deslop/index.ts new file mode 100644 index 000000000..c2baa15a3 --- /dev/null +++ b/packages/core/src/deslop/index.ts @@ -0,0 +1,729 @@ +import { resolve, dirname } from "node:path"; +import { existsSync, readFileSync } from "node:fs"; +import fg from "fast-glob"; +import type { DeslopConfig, DeslopError, ScanResult } from "./types.js"; +import { + ConfigError, + DetectorError, + ResolverError, + WorkspaceError, + describeUnknownError, +} from "./errors.js"; +import { + DEFAULT_DUPLICATE_BLOCK_MIN_LINES, + DEFAULT_DUPLICATE_BLOCK_MIN_OCCURRENCES, + DEFAULT_DUPLICATE_BLOCK_MIN_TOKENS, + DEFAULT_COGNITIVE_THRESHOLD, + DEFAULT_CYCLOMATIC_THRESHOLD, + DEFAULT_FUNCTION_LINE_THRESHOLD, + DEFAULT_PARAM_COUNT_THRESHOLD, + DEFAULT_ENTRY_GLOBS, + DEFAULT_EXTENSIONS, + DEFAULT_SEMANTIC_DECORATOR_ALLOWLIST, + OUTPUT_DIRECTORIES, +} from "./constants.js"; +import { collectSourceFiles, resolveEntries, getFrameworkExclusions } from "./collect/entries.js"; +import { resolveWorkspaces } from "./collect/workspaces.js"; +import { parseSourceFile } from "./collect/parse.js"; +import { parseFilesInParallel } from "./collect/parallel-parse.js"; +import { createResolver } from "./resolver/resolve.js"; +import { buildDependencyGraph, type ModuleLinkInput } from "./linker/build.js"; +import { traceReachability } from "./linker/reachability.js"; +import { resolveReExportChains } from "./linker/re-exports.js"; +import { generateReport } from "./report/generate.js"; +import { findMonorepoRoot } from "./utils/find-monorepo-root.js"; +import { collectGitIgnoredPaths } from "./utils/collect-git-ignored-paths.js"; + +const STYLE_EXTENSIONS = [".css", ".scss"]; + +const REACT_NATIVE_ENABLERS = ["react-native", "expo"]; + +const basenameFromPath = (filePath: string): string => { + const lastSlashIndex = filePath.lastIndexOf("/"); + return lastSlashIndex === -1 ? filePath : filePath.slice(lastSlashIndex + 1); +}; + +/** + * Dynamic registry pattern: many codebases use a central "schema/registry" + * module that lists tool/command/page filenames as string literals, then a + * runner spawns them via `path.resolve(dir, file)` or `import()`. Static + * analysis can't follow the indirection, so those targets get falsely + * flagged as unused. + * + * Heuristic: if a parsed string literal exactly matches the basename of + * exactly one file in the project, treat that file as an entry point. + * Uniqueness guards against false-positives from common names like + * `index.ts` matching dozens of unrelated files. + */ +const markFilenameRegistryEntries = ( + moduleGraph: ReturnType, +): void => { + const basenameToModuleIndex = new Map(); + for (const module of moduleGraph.modules) { + const basename = basenameFromPath(module.fileId.path); + const existing = basenameToModuleIndex.get(basename); + if (existing === undefined) { + basenameToModuleIndex.set(basename, module.fileId.index); + } else if (existing !== "ambiguous") { + basenameToModuleIndex.set(basename, "ambiguous"); + } + } + + for (const module of moduleGraph.modules) { + for (const referencedFilename of module.referencedFilenames) { + const targetIndex = basenameToModuleIndex.get(referencedFilename); + if (typeof targetIndex !== "number") continue; + const targetModule = moduleGraph.modules[targetIndex]; + if (!targetModule || targetModule.isEntryPoint) continue; + if (targetModule.fileId.index === module.fileId.index) continue; + targetModule.isEntryPoint = true; + } + } +}; + +const detectReactNative = ( + rootDir: string, + workspacePackages: Array<{ directory: string }>, +): boolean => { + const directoriesToCheck = [ + rootDir, + ...workspacePackages.map((workspacePackage) => workspacePackage.directory), + ]; + for (const directory of directoriesToCheck) { + const packageJsonPath = resolve(directory, "package.json"); + if (!existsSync(packageJsonPath)) continue; + try { + const content = readFileSync(packageJsonPath, "utf-8"); + const packageJson = JSON.parse(content); + const allDependencies = { + ...packageJson.dependencies, + ...packageJson.devDependencies, + ...packageJson.optionalDependencies, + }; + if (REACT_NATIVE_ENABLERS.some((enabler) => enabler in allDependencies)) return true; + } catch { + continue; + } + } + return false; +}; + +export type { + ScanResult, + DeslopConfig, + UnusedFile, + UnusedExport, + UnusedDependency, + CircularDependency, + UnusedType, + UnusedTypeKind, + SemanticConfig, + SemanticConfidence, + MisclassifiedDependency, + DependencyDeclaredAs, + UnusedEnumMember, + UnusedClassMember, + ClassMemberKind, + RedundantAlias, + RedundantAliasKind, + DuplicateExport, + DuplicateExportOccurrence, + DuplicateImport, + DuplicateImportOccurrence, + RedundantTypePattern, + RedundantTypePatternKind, + IdentityWrapper, + DuplicateTypeDefinition, + DuplicateTypeDefinitionInstance, + DuplicateInlineType, + InlineTypeOccurrence, + InlineTypeContext, + SimplifiableFunction, + SimplifiableFunctionKind, + SimplifiableExpression, + SimplifiableExpressionKind, + DuplicateConstant, + DuplicateConstantOccurrence, + CrossFileDuplicateExport, + CrossFileDuplicateExportLocation, + DuplicateBlock, + DuplicateBlockOccurrence, + DuplicateBlockCluster, + DuplicateBlockRefactoringKind, + DuplicateBlockRefactoringHint, + DuplicateBlockDetectionMode, + DuplicateBlocksConfig, + ShadowedDirectoryPair, + ReExportCycle, + ReExportCycleKind, + FeatureFlag, + FeatureFlagKind, + FeatureFlagsConfig, + FunctionComplexity, + ComplexityConfig, + PrivateTypeLeak, + UnnecessaryAssertion, + UnnecessaryAssertionKind, + LazyImportAtTopLevel, + LazyImportKind, + CommonjsInEsm, + CommonjsInEsmKind, + TypeScriptEscapeHatch, + TypeScriptEscapeHatchKind, + DeslopError, + DeslopErrorCode, + DeslopErrorModule, + DeslopErrorSeverity, +} from "./types.js"; + +export { isOxcAstNode } from "./utils/oxc-ast-node.js"; +export type { OxcAstNode } from "./utils/oxc-ast-node.js"; + +/** + * Default flags below mark rules off-by-default. Rationale for each: + * + * - `reportUnusedClassMembers: false` — class-member dead-code detection + * requires whole-program semantic analysis to be sound (subclass overrides, + * structural typing, framework method-by-name invocation like `@HttpGet`). + * When enabled on real React/Effect/NestJS codebases it produces a high + * rate of stylistic-FP findings (lifecycle methods, framework hooks). Off + * by default until the heuristics are tightened. Opt in via + * `semantic.reportUnusedClassMembers = true` when you accept the noise. + * + * - `reportTypes: false` — type-only exports are over-represented in + * barrel re-exports (the canonical `export type * from "./types"` pattern) + * and are rarely actionable signal. Off by default; opt in when auditing + * a type-heavy package. + * + * - `includeEntryExports: false` — exports from entry-point files are + * "API surface" and intentionally exported for external consumers; flagging + * them as "unused" is noise within a single repo scan. Opt in when auditing + * a package boundary (e.g. before deleting public APIs). + * + * - `reportRedundancy: true` — on because redundancy findings are mostly + * high-signal and the detectors carry their own confidence tiers. + * + * - `duplicateBlocks: undefined` — token-based copy-paste detection (suffix + * array + LCP) is opt-in. It re-parses every source + * file to emit a token stream and adds significant runtime to the scan. + * Pass `duplicateBlocks: { enabled: true }` to turn it on. + */ +const fillSemanticConfig = ( + semanticOverrides: Partial | undefined, +): DeslopConfig["semantic"] => { + const overrides = semanticOverrides ?? {}; + return { + enabled: overrides.enabled ?? true, + reportUnusedTypes: overrides.reportUnusedTypes ?? true, + reportUnusedEnumMembers: overrides.reportUnusedEnumMembers ?? true, + reportUnusedClassMembers: overrides.reportUnusedClassMembers ?? false, + reportRedundantVariableAliases: overrides.reportRedundantVariableAliases ?? true, + reportMisclassifiedDependencies: overrides.reportMisclassifiedDependencies ?? true, + reportRoundTripAliases: overrides.reportRoundTripAliases ?? true, + decoratorAllowlist: overrides.decoratorAllowlist ?? DEFAULT_SEMANTIC_DECORATOR_ALLOWLIST, + }; +}; + +const fillDuplicateBlocksConfig = ( + duplicateBlocksOverrides: Partial | undefined, +): DeslopConfig["duplicateBlocks"] => { + const overrides = duplicateBlocksOverrides ?? {}; + return { + enabled: overrides.enabled ?? true, + mode: overrides.mode ?? "semantic", + minTokens: overrides.minTokens ?? DEFAULT_DUPLICATE_BLOCK_MIN_TOKENS, + minLines: overrides.minLines ?? DEFAULT_DUPLICATE_BLOCK_MIN_LINES, + minOccurrences: overrides.minOccurrences ?? DEFAULT_DUPLICATE_BLOCK_MIN_OCCURRENCES, + skipLocal: overrides.skipLocal ?? false, + }; +}; + +const fillFeatureFlagsConfig = ( + flagsOverrides: Partial | undefined, +): DeslopConfig["featureFlags"] => { + const overrides = flagsOverrides ?? {}; + return { + enabled: overrides.enabled ?? true, + extraEnvPrefixes: overrides.extraEnvPrefixes ?? [], + extraSdkFunctionNames: overrides.extraSdkFunctionNames ?? [], + detectConfigObjects: overrides.detectConfigObjects ?? false, + }; +}; + +const fillComplexityConfig = ( + complexityOverrides: Partial | undefined, +): DeslopConfig["complexity"] => { + const overrides = complexityOverrides ?? {}; + return { + enabled: overrides.enabled ?? true, + cyclomaticThreshold: overrides.cyclomaticThreshold ?? DEFAULT_CYCLOMATIC_THRESHOLD, + cognitiveThreshold: overrides.cognitiveThreshold ?? DEFAULT_COGNITIVE_THRESHOLD, + paramCountThreshold: overrides.paramCountThreshold ?? DEFAULT_PARAM_COUNT_THRESHOLD, + functionLineThreshold: overrides.functionLineThreshold ?? DEFAULT_FUNCTION_LINE_THRESHOLD, + }; +}; +export const defineConfig = ( + options: Partial & { rootDir: string }, +): DeslopConfig => ({ + rootDir: resolve(options.rootDir), + entryPatterns: options.entryPatterns ?? DEFAULT_ENTRY_GLOBS, + ignorePatterns: options.ignorePatterns ?? [], + includeExtensions: options.includeExtensions ?? DEFAULT_EXTENSIONS, + tsConfigPath: options.tsConfigPath, + paths: options.paths, + reportTypes: options.reportTypes ?? false, + includeEntryExports: options.includeEntryExports ?? false, + reportRedundancy: options.reportRedundancy ?? true, + semantic: fillSemanticConfig(options.semantic), + duplicateBlocks: fillDuplicateBlocksConfig(options.duplicateBlocks), + featureFlags: fillFeatureFlagsConfig(options.featureFlags), + complexity: fillComplexityConfig(options.complexity), +}); + +const buildEmptyScanResult = (errors: DeslopError[], elapsedMs: number): ScanResult => ({ + unusedFiles: [], + unusedExports: [], + unusedDependencies: [], + circularDependencies: [], + unusedTypes: [], + misclassifiedDependencies: [], + unusedEnumMembers: [], + unusedClassMembers: [], + redundantAliases: [], + duplicateExports: [], + duplicateImports: [], + redundantTypePatterns: [], + identityWrappers: [], + duplicateTypeDefinitions: [], + duplicateInlineTypes: [], + simplifiableFunctions: [], + simplifiableExpressions: [], + duplicateConstants: [], + crossFileDuplicateExports: [], + duplicateBlocks: [], + duplicateBlockClusters: [], + shadowedDirectoryPairs: [], + reExportCycles: [], + featureFlags: [], + complexFunctions: [], + privateTypeLeaks: [], + unnecessaryAssertions: [], + lazyImportsAtTopLevel: [], + commonjsInEsm: [], + typeScriptEscapeHatches: [], + analysisErrors: errors, + totalFiles: 0, + totalExports: 0, + analysisTimeMs: elapsedMs, +}); + +const validateConfig = (config: DeslopConfig): DeslopError | undefined => { + if (!config.rootDir || typeof config.rootDir !== "string") { + return new ConfigError({ message: "config.rootDir must be a non-empty string" }); + } + if (!existsSync(config.rootDir)) { + return new ConfigError({ + message: `config.rootDir does not exist: ${config.rootDir}`, + path: config.rootDir, + }); + } + return undefined; +}; + +export const analyze = async (config: DeslopConfig): Promise => { + const pipelineStartTime = performance.now(); + const setupErrors: DeslopError[] = []; + + const configValidationError = validateConfig(config); + if (configValidationError) { + return buildEmptyScanResult([configValidationError], performance.now() - pipelineStartTime); + } + + let workspaceDiscovery: ReturnType; + try { + workspaceDiscovery = resolveWorkspaces(resolve(config.rootDir)); + } catch (workspaceError) { + setupErrors.push( + new WorkspaceError({ + code: "workspace-discovery-failed", + message: "resolveWorkspaces threw — falling back to single-package mode", + path: config.rootDir, + detail: describeUnknownError(workspaceError), + }), + ); + workspaceDiscovery = { + packages: [], + excludedDirectories: [], + hasRootLevelWorkspacePatterns: false, + }; + } + const workspacePackages = [...workspaceDiscovery.packages]; + + let monorepoRoot: string | undefined; + try { + monorepoRoot = findMonorepoRoot(config.rootDir); + } catch (monorepoError) { + setupErrors.push( + new WorkspaceError({ + code: "monorepo-discovery-failed", + message: "findMonorepoRoot threw", + path: config.rootDir, + detail: describeUnknownError(monorepoError), + }), + ); + monorepoRoot = undefined; + } + if (monorepoRoot) { + try { + const monorepoWorkspaces = resolveWorkspaces(monorepoRoot); + const existingDirectories = new Set( + workspacePackages.map((workspacePackage) => workspacePackage.directory), + ); + for (const monorepoPackage of monorepoWorkspaces.packages) { + if (!existingDirectories.has(monorepoPackage.directory)) { + workspacePackages.push(monorepoPackage); + } + } + } catch (monorepoWorkspaceError) { + setupErrors.push( + new WorkspaceError({ + code: "workspace-discovery-failed", + message: "resolveWorkspaces threw on monorepo root", + path: monorepoRoot, + detail: describeUnknownError(monorepoWorkspaceError), + }), + ); + } + } + + let frameworkIgnorePatterns: string[] = []; + try { + frameworkIgnorePatterns = getFrameworkExclusions(config.rootDir); + } catch (frameworkError) { + setupErrors.push( + new WorkspaceError({ + code: "workspace-discovery-failed", + message: "getFrameworkExclusions failed — proceeding without framework exclusion patterns", + path: config.rootDir, + detail: describeUnknownError(frameworkError), + }), + ); + } + + const absoluteRoot = resolve(config.rootDir); + const outputDirectoryExclusions = OUTPUT_DIRECTORIES.flatMap((outputDirectory) => [ + `${absoluteRoot}/${outputDirectory}/**`, + `${absoluteRoot}/**/${outputDirectory}/**`, + ]); + + const allExclusionPatterns = [ + ...workspaceDiscovery.excludedDirectories.map((directory) => `${directory}/**`), + ...frameworkIgnorePatterns, + ...outputDirectoryExclusions, + ]; + + const configWithExclusions = + allExclusionPatterns.length > 0 + ? { + ...config, + ignorePatterns: [...config.ignorePatterns, ...allExclusionPatterns], + } + : config; + + let files: Awaited>; + let discoveredEntries: Awaited>; + try { + const [collectedFiles, resolvedEntries] = await Promise.all([ + collectSourceFiles(configWithExclusions), + resolveEntries(configWithExclusions).catch((entriesError: unknown) => { + setupErrors.push( + new WorkspaceError({ + code: "workspace-discovery-failed", + message: "resolveEntries failed — defaulting to empty entry set", + path: config.rootDir, + detail: describeUnknownError(entriesError), + }), + ); + return { + productionEntries: [] as string[], + testEntries: [] as string[], + alwaysUsedFiles: [] as string[], + }; + }), + ]); + files = collectedFiles; + discoveredEntries = resolvedEntries; + } catch (collectError) { + setupErrors.push( + new WorkspaceError({ + code: "workspace-discovery-failed", + severity: "fatal", + message: "collectSourceFiles failed", + path: config.rootDir, + detail: describeUnknownError(collectError), + }), + ); + return buildEmptyScanResult(setupErrors, performance.now() - pipelineStartTime); + } + const productionEntrySet = new Set(discoveredEntries.productionEntries); + const testEntrySet = new Set(discoveredEntries.testEntries); + const alwaysUsedFileSet = new Set(discoveredEntries.alwaysUsedFiles); + const gitIgnoreResult = collectGitIgnoredPaths( + resolve(config.rootDir), + files.map((file) => file.path), + ); + const gitIgnoredFileSet = gitIgnoreResult.ignoredPaths; + if (gitIgnoreResult.gitUnavailable) { + setupErrors.push( + new WorkspaceError({ + code: "gitignore-check-failed", + severity: "info", + message: "git unavailable — .gitignore filtering skipped", + path: config.rootDir, + }), + ); + } + + let hasReactNative = false; + try { + hasReactNative = detectReactNative(config.rootDir, workspacePackages); + } catch { + hasReactNative = false; + } + + let moduleResolver: ReturnType; + try { + moduleResolver = createResolver( + config, + workspacePackages.map((workspacePackage) => ({ + name: workspacePackage.name, + directory: workspacePackage.directory, + })), + { hasReactNative, monorepoRoot }, + ); + } catch (resolverError) { + setupErrors.push( + new ResolverError({ + message: "createResolver failed", + path: config.rootDir, + detail: describeUnknownError(resolverError), + }), + ); + return buildEmptyScanResult(setupErrors, performance.now() - pipelineStartTime); + } + const parsedModules = await parseFilesInParallel(files); + + const graphInputs: ModuleLinkInput[] = []; + + for (let fileIndex = 0; fileIndex < files.length; fileIndex++) { + const file = files[fileIndex]; + const parsedModule = parsedModules[fileIndex]; + const resolvedImportMap = new Map>(); + + const safeResolveImport = ( + specifier: string, + ): ReturnType => { + try { + return moduleResolver.resolveModule(specifier, file.path); + } catch (resolveError) { + setupErrors.push( + new ResolverError({ + severity: "warning", + message: `moduleResolver.resolveModule threw on specifier "${specifier}"`, + path: file.path, + detail: describeUnknownError(resolveError), + }), + ); + return { resolvedPath: undefined, isExternal: false, packageName: undefined }; + } + }; + + for (const importInfo of parsedModule.imports) { + if (importInfo.isGlob) { + const fileDir = dirname(file.path); + let expandedFiles: string[] = []; + try { + expandedFiles = fg.sync(importInfo.specifier, { + cwd: fileDir, + absolute: true, + onlyFiles: true, + ignore: ["**/node_modules/**"], + }); + } catch (globError) { + setupErrors.push( + new WorkspaceError({ + code: "workspace-discovery-failed", + message: `fast-glob threw on import glob "${importInfo.specifier}"`, + path: file.path, + detail: describeUnknownError(globError), + }), + ); + } + for (const expandedFile of expandedFiles) { + resolvedImportMap.set(expandedFile, { + resolvedPath: expandedFile, + isExternal: false, + packageName: undefined, + }); + } + resolvedImportMap.set(importInfo.specifier, { + resolvedPath: undefined, + isExternal: false, + packageName: undefined, + }); + continue; + } + resolvedImportMap.set(importInfo.specifier, safeResolveImport(importInfo.specifier)); + } + + for (const exportInfo of parsedModule.exports) { + if (exportInfo.isReExport && exportInfo.reExportSource) { + if (!resolvedImportMap.has(exportInfo.reExportSource)) { + resolvedImportMap.set( + exportInfo.reExportSource, + safeResolveImport(exportInfo.reExportSource), + ); + } + } + } + + const isAlwaysUsed = alwaysUsedFileSet.has(file.path); + graphInputs.push({ + fileId: file, + parsed: parsedModule, + resolvedImports: resolvedImportMap, + isEntryPoint: + isAlwaysUsed || productionEntrySet.has(file.path) || testEntrySet.has(file.path), + isTestEntry: testEntrySet.has(file.path), + isGitIgnored: gitIgnoredFileSet.has(file.path), + }); + } + + const discoveredFilePaths = new Set(files.map((file) => file.path)); + const styleFilesToAdd = new Set(); + + for (const input of graphInputs) { + for (const [, resolvedImport] of input.resolvedImports) { + if (!resolvedImport.resolvedPath || resolvedImport.isExternal) continue; + if (discoveredFilePaths.has(resolvedImport.resolvedPath)) continue; + const isStyleFile = STYLE_EXTENSIONS.some((ext) => + resolvedImport.resolvedPath!.endsWith(ext), + ); + if (isStyleFile && existsSync(resolvedImport.resolvedPath)) { + styleFilesToAdd.add(resolvedImport.resolvedPath); + } + } + } + + const sortedStyleFiles = [...styleFilesToAdd].sort(); + let nextFileIndex = files.length; + for (const styleFilePath of sortedStyleFiles) { + const styleSourceFile = { index: nextFileIndex, path: styleFilePath }; + const parsedStyleModule = parseSourceFile(styleFilePath); + const resolvedStyleImportMap = new Map< + string, + ReturnType + >(); + + for (const importInfo of parsedStyleModule.imports) { + let resolvedImport: ReturnType; + try { + resolvedImport = moduleResolver.resolveModule(importInfo.specifier, styleFilePath); + } catch (styleResolveError) { + setupErrors.push( + new ResolverError({ + severity: "warning", + message: `moduleResolver.resolveModule threw on style import "${importInfo.specifier}"`, + path: styleFilePath, + detail: describeUnknownError(styleResolveError), + }), + ); + resolvedImport = { resolvedPath: undefined, isExternal: false, packageName: undefined }; + } + resolvedStyleImportMap.set(importInfo.specifier, resolvedImport); + if (resolvedImport.resolvedPath && !discoveredFilePaths.has(resolvedImport.resolvedPath)) { + const isNestedStyle = STYLE_EXTENSIONS.some((ext) => + resolvedImport.resolvedPath!.endsWith(ext), + ); + if (isNestedStyle && existsSync(resolvedImport.resolvedPath)) { + styleFilesToAdd.add(resolvedImport.resolvedPath); + } + } + } + + graphInputs.push({ + fileId: styleSourceFile, + parsed: parsedStyleModule, + resolvedImports: resolvedStyleImportMap, + isEntryPoint: false, + isTestEntry: false, + isGitIgnored: gitIgnoredFileSet.has(styleFilePath), + }); + discoveredFilePaths.add(styleFilePath); + nextFileIndex++; + } + + let moduleGraph: ReturnType; + try { + moduleGraph = buildDependencyGraph(graphInputs); + } catch (graphError) { + setupErrors.push( + new DetectorError({ + module: "linker", + severity: "fatal", + message: "buildDependencyGraph threw", + detail: describeUnknownError(graphError), + }), + ); + return buildEmptyScanResult(setupErrors, performance.now() - pipelineStartTime); + } + + try { + resolveReExportChains(moduleGraph); + } catch (reExportError) { + setupErrors.push( + new DetectorError({ + module: "linker", + message: "resolveReExportChains threw — re-export propagation skipped", + detail: describeUnknownError(reExportError), + }), + ); + } + + markFilenameRegistryEntries(moduleGraph); + + try { + traceReachability(moduleGraph); + } catch (reachabilityError) { + setupErrors.push( + new DetectorError({ + module: "linker", + message: "traceReachability threw — every module marked reachable to avoid over-reporting", + detail: describeUnknownError(reachabilityError), + }), + ); + for (const module of moduleGraph.modules) module.isReachable = true; + } + + let analysisResult: ScanResult; + try { + analysisResult = generateReport(moduleGraph, config); + } catch (reportError) { + setupErrors.push( + new DetectorError({ + module: "report", + severity: "fatal", + message: "generateReport threw at the top level", + detail: describeUnknownError(reportError), + }), + ); + return buildEmptyScanResult(setupErrors, performance.now() - pipelineStartTime); + } + + if (setupErrors.length > 0) { + analysisResult.analysisErrors = [...setupErrors, ...analysisResult.analysisErrors]; + } + analysisResult.analysisTimeMs = performance.now() - pipelineStartTime; + + return analysisResult; +}; diff --git a/packages/deslop-js/src/linker/build.ts b/packages/core/src/deslop/linker/build.ts similarity index 100% rename from packages/deslop-js/src/linker/build.ts rename to packages/core/src/deslop/linker/build.ts diff --git a/packages/deslop-js/src/linker/re-exports.ts b/packages/core/src/deslop/linker/re-exports.ts similarity index 100% rename from packages/deslop-js/src/linker/re-exports.ts rename to packages/core/src/deslop/linker/re-exports.ts diff --git a/packages/deslop-js/src/linker/reachability.ts b/packages/core/src/deslop/linker/reachability.ts similarity index 100% rename from packages/deslop-js/src/linker/reachability.ts rename to packages/core/src/deslop/linker/reachability.ts diff --git a/packages/deslop-js/src/report/complexity.ts b/packages/core/src/deslop/report/complexity.ts similarity index 100% rename from packages/deslop-js/src/report/complexity.ts rename to packages/core/src/deslop/report/complexity.ts diff --git a/packages/deslop-js/src/report/cross-file-duplicate-exports.ts b/packages/core/src/deslop/report/cross-file-duplicate-exports.ts similarity index 100% rename from packages/deslop-js/src/report/cross-file-duplicate-exports.ts rename to packages/core/src/deslop/report/cross-file-duplicate-exports.ts diff --git a/packages/deslop-js/src/report/cycles.ts b/packages/core/src/deslop/report/cycles.ts similarity index 100% rename from packages/deslop-js/src/report/cycles.ts rename to packages/core/src/deslop/report/cycles.ts diff --git a/packages/deslop-js/src/report/dry-patterns.ts b/packages/core/src/deslop/report/dry-patterns.ts similarity index 100% rename from packages/deslop-js/src/report/dry-patterns.ts rename to packages/core/src/deslop/report/dry-patterns.ts diff --git a/packages/deslop-js/src/report/exports.ts b/packages/core/src/deslop/report/exports.ts similarity index 100% rename from packages/deslop-js/src/report/exports.ts rename to packages/core/src/deslop/report/exports.ts diff --git a/packages/deslop-js/src/report/feature-flags.ts b/packages/core/src/deslop/report/feature-flags.ts similarity index 100% rename from packages/deslop-js/src/report/feature-flags.ts rename to packages/core/src/deslop/report/feature-flags.ts diff --git a/packages/deslop-js/src/report/files.ts b/packages/core/src/deslop/report/files.ts similarity index 100% rename from packages/deslop-js/src/report/files.ts rename to packages/core/src/deslop/report/files.ts diff --git a/packages/deslop-js/src/report/generate.ts b/packages/core/src/deslop/report/generate.ts similarity index 100% rename from packages/deslop-js/src/report/generate.ts rename to packages/core/src/deslop/report/generate.ts diff --git a/packages/deslop-js/src/report/packages.ts b/packages/core/src/deslop/report/packages.ts similarity index 100% rename from packages/deslop-js/src/report/packages.ts rename to packages/core/src/deslop/report/packages.ts diff --git a/packages/deslop-js/src/report/private-type-leaks.ts b/packages/core/src/deslop/report/private-type-leaks.ts similarity index 100% rename from packages/deslop-js/src/report/private-type-leaks.ts rename to packages/core/src/deslop/report/private-type-leaks.ts diff --git a/packages/deslop-js/src/report/re-export-cycles.ts b/packages/core/src/deslop/report/re-export-cycles.ts similarity index 100% rename from packages/deslop-js/src/report/re-export-cycles.ts rename to packages/core/src/deslop/report/re-export-cycles.ts diff --git a/packages/deslop-js/src/report/redundancy.ts b/packages/core/src/deslop/report/redundancy.ts similarity index 100% rename from packages/deslop-js/src/report/redundancy.ts rename to packages/core/src/deslop/report/redundancy.ts diff --git a/packages/deslop-js/src/report/typescript-smells.ts b/packages/core/src/deslop/report/typescript-smells.ts similarity index 100% rename from packages/deslop-js/src/report/typescript-smells.ts rename to packages/core/src/deslop/report/typescript-smells.ts diff --git a/packages/deslop-js/src/resolver/resolve.ts b/packages/core/src/deslop/resolver/resolve.ts similarity index 100% rename from packages/deslop-js/src/resolver/resolve.ts rename to packages/core/src/deslop/resolver/resolve.ts diff --git a/packages/deslop-js/src/resolver/source-path.ts b/packages/core/src/deslop/resolver/source-path.ts similarity index 100% rename from packages/deslop-js/src/resolver/source-path.ts rename to packages/core/src/deslop/resolver/source-path.ts diff --git a/packages/deslop-js/src/semantic/index.ts b/packages/core/src/deslop/semantic/index.ts similarity index 100% rename from packages/deslop-js/src/semantic/index.ts rename to packages/core/src/deslop/semantic/index.ts diff --git a/packages/deslop-js/src/semantic/misclassified-dependencies.ts b/packages/core/src/deslop/semantic/misclassified-dependencies.ts similarity index 100% rename from packages/deslop-js/src/semantic/misclassified-dependencies.ts rename to packages/core/src/deslop/semantic/misclassified-dependencies.ts diff --git a/packages/deslop-js/src/semantic/program.ts b/packages/core/src/deslop/semantic/program.ts similarity index 100% rename from packages/deslop-js/src/semantic/program.ts rename to packages/core/src/deslop/semantic/program.ts diff --git a/packages/deslop-js/src/semantic/redundant-reexports.ts b/packages/core/src/deslop/semantic/redundant-reexports.ts similarity index 100% rename from packages/deslop-js/src/semantic/redundant-reexports.ts rename to packages/core/src/deslop/semantic/redundant-reexports.ts diff --git a/packages/deslop-js/src/semantic/references.ts b/packages/core/src/deslop/semantic/references.ts similarity index 100% rename from packages/deslop-js/src/semantic/references.ts rename to packages/core/src/deslop/semantic/references.ts diff --git a/packages/deslop-js/src/semantic/unused-class-members.ts b/packages/core/src/deslop/semantic/unused-class-members.ts similarity index 100% rename from packages/deslop-js/src/semantic/unused-class-members.ts rename to packages/core/src/deslop/semantic/unused-class-members.ts diff --git a/packages/deslop-js/src/semantic/unused-enum-members.ts b/packages/core/src/deslop/semantic/unused-enum-members.ts similarity index 100% rename from packages/deslop-js/src/semantic/unused-enum-members.ts rename to packages/core/src/deslop/semantic/unused-enum-members.ts diff --git a/packages/deslop-js/src/semantic/unused-types.ts b/packages/core/src/deslop/semantic/unused-types.ts similarity index 100% rename from packages/deslop-js/src/semantic/unused-types.ts rename to packages/core/src/deslop/semantic/unused-types.ts diff --git a/packages/deslop-js/src/semantic/utils/source-file-lookup.ts b/packages/core/src/deslop/semantic/utils/source-file-lookup.ts similarity index 100% rename from packages/deslop-js/src/semantic/utils/source-file-lookup.ts rename to packages/core/src/deslop/semantic/utils/source-file-lookup.ts diff --git a/packages/deslop-js/src/semantic/variable-aliases.ts b/packages/core/src/deslop/semantic/variable-aliases.ts similarity index 100% rename from packages/deslop-js/src/semantic/variable-aliases.ts rename to packages/core/src/deslop/semantic/variable-aliases.ts diff --git a/packages/deslop-js/src/types.ts b/packages/core/src/deslop/types.ts similarity index 100% rename from packages/deslop-js/src/types.ts rename to packages/core/src/deslop/types.ts diff --git a/packages/deslop-js/src/utils/collect-duplicate-constants.ts b/packages/core/src/deslop/utils/collect-duplicate-constants.ts similarity index 100% rename from packages/deslop-js/src/utils/collect-duplicate-constants.ts rename to packages/core/src/deslop/utils/collect-duplicate-constants.ts diff --git a/packages/deslop-js/src/utils/collect-git-ignored-paths.ts b/packages/core/src/deslop/utils/collect-git-ignored-paths.ts similarity index 100% rename from packages/deslop-js/src/utils/collect-git-ignored-paths.ts rename to packages/core/src/deslop/utils/collect-git-ignored-paths.ts diff --git a/packages/deslop-js/src/utils/collect-inline-type-literals.ts b/packages/core/src/deslop/utils/collect-inline-type-literals.ts similarity index 100% rename from packages/deslop-js/src/utils/collect-inline-type-literals.ts rename to packages/core/src/deslop/utils/collect-inline-type-literals.ts diff --git a/packages/deslop-js/src/utils/collect-override-mappings-from-record.ts b/packages/core/src/deslop/utils/collect-override-mappings-from-record.ts similarity index 100% rename from packages/deslop-js/src/utils/collect-override-mappings-from-record.ts rename to packages/core/src/deslop/utils/collect-override-mappings-from-record.ts diff --git a/packages/deslop-js/src/utils/collect-simplifiable-expressions.ts b/packages/core/src/deslop/utils/collect-simplifiable-expressions.ts similarity index 100% rename from packages/deslop-js/src/utils/collect-simplifiable-expressions.ts rename to packages/core/src/deslop/utils/collect-simplifiable-expressions.ts diff --git a/packages/deslop-js/src/utils/collect-simplifiable-functions.ts b/packages/core/src/deslop/utils/collect-simplifiable-functions.ts similarity index 100% rename from packages/deslop-js/src/utils/collect-simplifiable-functions.ts rename to packages/core/src/deslop/utils/collect-simplifiable-functions.ts diff --git a/packages/deslop-js/src/utils/compute-line-starts.ts b/packages/core/src/deslop/utils/compute-line-starts.ts similarity index 100% rename from packages/deslop-js/src/utils/compute-line-starts.ts rename to packages/core/src/deslop/utils/compute-line-starts.ts diff --git a/packages/deslop-js/src/utils/detect-identity-wrapper.ts b/packages/core/src/deslop/utils/detect-identity-wrapper.ts similarity index 100% rename from packages/deslop-js/src/utils/detect-identity-wrapper.ts rename to packages/core/src/deslop/utils/detect-identity-wrapper.ts diff --git a/packages/deslop-js/src/utils/detect-redundant-type-pattern.ts b/packages/core/src/deslop/utils/detect-redundant-type-pattern.ts similarity index 100% rename from packages/deslop-js/src/utils/detect-redundant-type-pattern.ts rename to packages/core/src/deslop/utils/detect-redundant-type-pattern.ts diff --git a/packages/deslop-js/src/utils/detect-simplifiable-function.ts b/packages/core/src/deslop/utils/detect-simplifiable-function.ts similarity index 100% rename from packages/deslop-js/src/utils/detect-simplifiable-function.ts rename to packages/core/src/deslop/utils/detect-simplifiable-function.ts diff --git a/packages/deslop-js/src/utils/escape-reg-exp.ts b/packages/core/src/deslop/utils/escape-reg-exp.ts similarity index 100% rename from packages/deslop-js/src/utils/escape-reg-exp.ts rename to packages/core/src/deslop/utils/escape-reg-exp.ts diff --git a/packages/deslop-js/src/utils/extract-default-export-local-name.ts b/packages/core/src/deslop/utils/extract-default-export-local-name.ts similarity index 100% rename from packages/deslop-js/src/utils/extract-default-export-local-name.ts rename to packages/core/src/deslop/utils/extract-default-export-local-name.ts diff --git a/packages/deslop-js/src/utils/extract-override-target.ts b/packages/core/src/deslop/utils/extract-override-target.ts similarity index 100% rename from packages/deslop-js/src/utils/extract-override-target.ts rename to packages/core/src/deslop/utils/extract-override-target.ts diff --git a/packages/deslop-js/src/utils/find-monorepo-root.ts b/packages/core/src/deslop/utils/find-monorepo-root.ts similarity index 100% rename from packages/deslop-js/src/utils/find-monorepo-root.ts rename to packages/core/src/deslop/utils/find-monorepo-root.ts diff --git a/packages/deslop-js/src/utils/is-ast-node.ts b/packages/core/src/deslop/utils/is-ast-node.ts similarity index 100% rename from packages/deslop-js/src/utils/is-ast-node.ts rename to packages/core/src/deslop/utils/is-ast-node.ts diff --git a/packages/deslop-js/src/utils/is-config-file.ts b/packages/core/src/deslop/utils/is-config-file.ts similarity index 100% rename from packages/deslop-js/src/utils/is-config-file.ts rename to packages/core/src/deslop/utils/is-config-file.ts diff --git a/packages/deslop-js/src/utils/is-framework-lifecycle-method.ts b/packages/core/src/deslop/utils/is-framework-lifecycle-method.ts similarity index 100% rename from packages/deslop-js/src/utils/is-framework-lifecycle-method.ts rename to packages/core/src/deslop/utils/is-framework-lifecycle-method.ts diff --git a/packages/deslop-js/src/utils/is-platform-builtin-or-virtual.ts b/packages/core/src/deslop/utils/is-platform-builtin-or-virtual.ts similarity index 100% rename from packages/deslop-js/src/utils/is-platform-builtin-or-virtual.ts rename to packages/core/src/deslop/utils/is-platform-builtin-or-virtual.ts diff --git a/packages/deslop-js/src/utils/line-column.ts b/packages/core/src/deslop/utils/line-column.ts similarity index 100% rename from packages/deslop-js/src/utils/line-column.ts rename to packages/core/src/deslop/utils/line-column.ts diff --git a/packages/deslop-js/src/utils/matches-package-import-reference.ts b/packages/core/src/deslop/utils/matches-package-import-reference.ts similarity index 100% rename from packages/deslop-js/src/utils/matches-package-import-reference.ts rename to packages/core/src/deslop/utils/matches-package-import-reference.ts diff --git a/packages/deslop-js/src/utils/matches-package-token-reference.ts b/packages/core/src/deslop/utils/matches-package-token-reference.ts similarity index 100% rename from packages/deslop-js/src/utils/matches-package-token-reference.ts rename to packages/core/src/deslop/utils/matches-package-token-reference.ts diff --git a/packages/deslop-js/src/utils/normalize-type-hash.ts b/packages/core/src/deslop/utils/normalize-type-hash.ts similarity index 100% rename from packages/deslop-js/src/utils/normalize-type-hash.ts rename to packages/core/src/deslop/utils/normalize-type-hash.ts diff --git a/packages/deslop-js/src/utils/offset-to-line-column.ts b/packages/core/src/deslop/utils/offset-to-line-column.ts similarity index 100% rename from packages/deslop-js/src/utils/offset-to-line-column.ts rename to packages/core/src/deslop/utils/offset-to-line-column.ts diff --git a/packages/deslop-js/src/utils/oxc-ast-node.ts b/packages/core/src/deslop/utils/oxc-ast-node.ts similarity index 100% rename from packages/deslop-js/src/utils/oxc-ast-node.ts rename to packages/core/src/deslop/utils/oxc-ast-node.ts diff --git a/packages/deslop-js/src/utils/package-name.ts b/packages/core/src/deslop/utils/package-name.ts similarity index 100% rename from packages/deslop-js/src/utils/package-name.ts rename to packages/core/src/deslop/utils/package-name.ts diff --git a/packages/deslop-js/src/utils/parse-pnpm-workspace-overrides.ts b/packages/core/src/deslop/utils/parse-pnpm-workspace-overrides.ts similarity index 100% rename from packages/deslop-js/src/utils/parse-pnpm-workspace-overrides.ts rename to packages/core/src/deslop/utils/parse-pnpm-workspace-overrides.ts diff --git a/packages/deslop-js/src/utils/resolve-available-concurrency.ts b/packages/core/src/deslop/utils/resolve-available-concurrency.ts similarity index 100% rename from packages/deslop-js/src/utils/resolve-available-concurrency.ts rename to packages/core/src/deslop/utils/resolve-available-concurrency.ts diff --git a/packages/deslop-js/src/utils/resolve-entry-with-extensions.ts b/packages/core/src/deslop/utils/resolve-entry-with-extensions.ts similarity index 100% rename from packages/deslop-js/src/utils/resolve-entry-with-extensions.ts rename to packages/core/src/deslop/utils/resolve-entry-with-extensions.ts diff --git a/packages/deslop-js/src/utils/run-safe-detector.ts b/packages/core/src/deslop/utils/run-safe-detector.ts similarity index 100% rename from packages/deslop-js/src/utils/run-safe-detector.ts rename to packages/core/src/deslop/utils/run-safe-detector.ts diff --git a/packages/deslop-js/src/utils/sanitize-import-specifier.ts b/packages/core/src/deslop/utils/sanitize-import-specifier.ts similarity index 100% rename from packages/deslop-js/src/utils/sanitize-import-specifier.ts rename to packages/core/src/deslop/utils/sanitize-import-specifier.ts diff --git a/packages/deslop-js/src/utils/to-posix-path.ts b/packages/core/src/deslop/utils/to-posix-path.ts similarity index 100% rename from packages/deslop-js/src/utils/to-posix-path.ts rename to packages/core/src/deslop/utils/to-posix-path.ts diff --git a/packages/core/tests/check-dead-code.test.ts b/packages/core/tests/check-dead-code.test.ts index 26d5074ed..e1cd94e70 100644 --- a/packages/core/tests/check-dead-code.test.ts +++ b/packages/core/tests/check-dead-code.test.ts @@ -3,6 +3,7 @@ import os from "node:os"; import * as path from "node:path"; import { afterAll, describe, expect, it } from "vite-plus/test"; import { checkDeadCode } from "../src/check-dead-code.js"; +import { inProcessDeadCodeWorker } from "./helpers/in-process-dead-code-worker.js"; const tempRoot = fs.mkdtempSync(path.join(os.tmpdir(), "rd-check-dead-code-")); @@ -76,7 +77,7 @@ const setupAliasProject = (caseId: string): string => { }; const flaggedUnusedFiles = async (rootDirectory: string): Promise => - (await checkDeadCode({ rootDirectory })) + (await checkDeadCode({ rootDirectory, createWorker: inProcessDeadCodeWorker })) .filter((diagnostic) => diagnostic.rule === "unused-file") .map((diagnostic) => diagnostic.filePath) .sort(); @@ -93,7 +94,10 @@ describe("checkDeadCode", () => { "src/index.ts": "export const used = 1;\n", "src/orphan.ts": "export const orphan = 1;\n", }); - const diagnostics = await checkDeadCode({ rootDirectory: directory }); + const diagnostics = await checkDeadCode({ + rootDirectory: directory, + createWorker: inProcessDeadCodeWorker, + }); const orphan = diagnostics.find( (diagnostic) => diagnostic.rule === "unused-file" && diagnostic.filePath.endsWith("orphan.ts"), @@ -127,6 +131,7 @@ describe("checkDeadCode", () => { const diagnostics = await checkDeadCode({ rootDirectory: directory, userConfig: { ignore: { files: ["src/sanity/components/**"] } }, + createWorker: inProcessDeadCodeWorker, }); const flagged = diagnostics .filter((diagnostic) => diagnostic.rule === "unused-file") diff --git a/packages/deslop-js/tests/analyze.test.ts b/packages/core/tests/deslop/analyze.test.ts similarity index 99% rename from packages/deslop-js/tests/analyze.test.ts rename to packages/core/tests/deslop/analyze.test.ts index f9628bc60..943fbbc24 100644 --- a/packages/deslop-js/tests/analyze.test.ts +++ b/packages/core/tests/deslop/analyze.test.ts @@ -1,8 +1,8 @@ -import { describe, it, test } from "node:test"; +import { describe, it, it as test } from "vite-plus/test"; import assert from "node:assert/strict"; import { resolve, relative } from "node:path"; -import { analyze, defineConfig } from "../src/index.js"; -import type { ScanResult } from "../src/types.js"; +import { analyze, defineConfig } from "../../src/deslop/index.js"; +import type { ScanResult } from "../../src/deslop/types.js"; import { FIXTURES_DIR } from "./helpers/fixtures-dir.js"; const scanFixture = async ( diff --git a/packages/deslop-js/tests/collect-git-ignored-paths.test.ts b/packages/core/tests/deslop/collect-git-ignored-paths.test.ts similarity index 90% rename from packages/deslop-js/tests/collect-git-ignored-paths.test.ts rename to packages/core/tests/deslop/collect-git-ignored-paths.test.ts index 2f87e29c4..74002f101 100644 --- a/packages/deslop-js/tests/collect-git-ignored-paths.test.ts +++ b/packages/core/tests/deslop/collect-git-ignored-paths.test.ts @@ -1,11 +1,11 @@ -import { describe, it } from "node:test"; +import { describe, it } from "vite-plus/test"; import assert from "node:assert/strict"; import { execFileSync } from "node:child_process"; import { mkdtempSync, mkdirSync, rmSync, writeFileSync } from "node:fs"; import { tmpdir } from "node:os"; import { join, resolve } from "node:path"; -import { collectGitIgnoredPaths } from "../src/utils/collect-git-ignored-paths.js"; -import { toPosixPath } from "../src/utils/to-posix-path.js"; +import { collectGitIgnoredPaths } from "../../src/deslop/utils/collect-git-ignored-paths.js"; +import { toPosixPath } from "../../src/deslop/utils/to-posix-path.js"; const createTempProject = (): string => mkdtempSync(join(tmpdir(), "deslop-gitignore-")); diff --git a/packages/deslop-js/tests/dependency-utils.test.ts b/packages/core/tests/deslop/dependency-utils.test.ts similarity index 85% rename from packages/deslop-js/tests/dependency-utils.test.ts rename to packages/core/tests/deslop/dependency-utils.test.ts index 49d8fc370..7a1f7905e 100644 --- a/packages/deslop-js/tests/dependency-utils.test.ts +++ b/packages/core/tests/deslop/dependency-utils.test.ts @@ -1,9 +1,9 @@ -import { describe, it } from "node:test"; +import { describe, it } from "vite-plus/test"; import assert from "node:assert/strict"; -import { collectOverrideMappingsFromRecord } from "../src/utils/collect-override-mappings-from-record.js"; -import { collectPnpmWorkspaceOverrideMappings } from "../src/utils/parse-pnpm-workspace-overrides.js"; -import { matchesPackageImportReference } from "../src/utils/matches-package-import-reference.js"; -import { matchesPackageTokenReference } from "../src/utils/matches-package-token-reference.js"; +import { collectOverrideMappingsFromRecord } from "../../src/deslop/utils/collect-override-mappings-from-record.js"; +import { collectPnpmWorkspaceOverrideMappings } from "../../src/deslop/utils/parse-pnpm-workspace-overrides.js"; +import { matchesPackageImportReference } from "../../src/deslop/utils/matches-package-import-reference.js"; +import { matchesPackageTokenReference } from "../../src/deslop/utils/matches-package-token-reference.js"; import { resolve } from "node:path"; describe("collectOverrideMappingsFromRecord", () => { diff --git a/packages/deslop-js/tests/errors.test.ts b/packages/core/tests/deslop/errors.test.ts similarity index 97% rename from packages/deslop-js/tests/errors.test.ts rename to packages/core/tests/deslop/errors.test.ts index d3c6ec3b7..d9e4914e2 100644 --- a/packages/deslop-js/tests/errors.test.ts +++ b/packages/core/tests/deslop/errors.test.ts @@ -1,7 +1,7 @@ -import { describe, it } from "node:test"; +import { describe, it } from "vite-plus/test"; import assert from "node:assert/strict"; import { resolve } from "node:path"; -import { analyze, defineConfig } from "../src/index.js"; +import { analyze, defineConfig } from "../../src/deslop/index.js"; import { ConfigError, DeslopError, @@ -13,7 +13,7 @@ import { WorkspaceError, createDeslopError, DeslopErrorCollector, -} from "../src/errors.js"; +} from "../../src/deslop/errors.js"; import { FIXTURES_DIR } from "./helpers/fixtures-dir.js"; describe("errors / DeslopError class hierarchy", () => { diff --git a/packages/deslop-js/tests/fixtures/alias-mixed-exports/package.json b/packages/core/tests/deslop/fixtures/alias-mixed-exports/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/alias-mixed-exports/package.json rename to packages/core/tests/deslop/fixtures/alias-mixed-exports/package.json diff --git a/packages/deslop-js/tests/fixtures/alias-mixed-exports/src/helpers.ts b/packages/core/tests/deslop/fixtures/alias-mixed-exports/src/helpers.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/alias-mixed-exports/src/helpers.ts rename to packages/core/tests/deslop/fixtures/alias-mixed-exports/src/helpers.ts diff --git a/packages/deslop-js/tests/fixtures/alias-mixed-exports/src/index.ts b/packages/core/tests/deslop/fixtures/alias-mixed-exports/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/alias-mixed-exports/src/index.ts rename to packages/core/tests/deslop/fixtures/alias-mixed-exports/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/alias-mixed-exports/src/orphan.ts b/packages/core/tests/deslop/fixtures/alias-mixed-exports/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/alias-mixed-exports/src/orphan.ts rename to packages/core/tests/deslop/fixtures/alias-mixed-exports/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/alias-mixed-exports/src/types.ts b/packages/core/tests/deslop/fixtures/alias-mixed-exports/src/types.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/alias-mixed-exports/src/types.ts rename to packages/core/tests/deslop/fixtures/alias-mixed-exports/src/types.ts diff --git a/packages/deslop-js/tests/fixtures/alias-mixed-exports/tsconfig.json b/packages/core/tests/deslop/fixtures/alias-mixed-exports/tsconfig.json similarity index 100% rename from packages/deslop-js/tests/fixtures/alias-mixed-exports/tsconfig.json rename to packages/core/tests/deslop/fixtures/alias-mixed-exports/tsconfig.json diff --git a/packages/deslop-js/tests/fixtures/alias-named-exports/barrel.ts b/packages/core/tests/deslop/fixtures/alias-named-exports/barrel.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/alias-named-exports/barrel.ts rename to packages/core/tests/deslop/fixtures/alias-named-exports/barrel.ts diff --git a/packages/deslop-js/tests/fixtures/alias-named-exports/greetings.ts b/packages/core/tests/deslop/fixtures/alias-named-exports/greetings.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/alias-named-exports/greetings.ts rename to packages/core/tests/deslop/fixtures/alias-named-exports/greetings.ts diff --git a/packages/deslop-js/tests/fixtures/alias-named-exports/index.ts b/packages/core/tests/deslop/fixtures/alias-named-exports/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/alias-named-exports/index.ts rename to packages/core/tests/deslop/fixtures/alias-named-exports/index.ts diff --git a/packages/deslop-js/tests/fixtures/alias-named-exports/package.json b/packages/core/tests/deslop/fixtures/alias-named-exports/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/alias-named-exports/package.json rename to packages/core/tests/deslop/fixtures/alias-named-exports/package.json diff --git a/packages/deslop-js/tests/fixtures/alias-paths/package.json b/packages/core/tests/deslop/fixtures/alias-paths/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/alias-paths/package.json rename to packages/core/tests/deslop/fixtures/alias-paths/package.json diff --git a/packages/deslop-js/tests/fixtures/alias-paths/src/index.ts b/packages/core/tests/deslop/fixtures/alias-paths/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/alias-paths/src/index.ts rename to packages/core/tests/deslop/fixtures/alias-paths/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/alias-paths/src/utils.ts b/packages/core/tests/deslop/fixtures/alias-paths/src/utils.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/alias-paths/src/utils.ts rename to packages/core/tests/deslop/fixtures/alias-paths/src/utils.ts diff --git a/packages/deslop-js/tests/fixtures/alias-paths/tsconfig.json b/packages/core/tests/deslop/fixtures/alias-paths/tsconfig.json similarity index 100% rename from packages/deslop-js/tests/fixtures/alias-paths/tsconfig.json rename to packages/core/tests/deslop/fixtures/alias-paths/tsconfig.json diff --git a/packages/deslop-js/tests/fixtures/angular-workspace/angular.json b/packages/core/tests/deslop/fixtures/angular-workspace/angular.json similarity index 100% rename from packages/deslop-js/tests/fixtures/angular-workspace/angular.json rename to packages/core/tests/deslop/fixtures/angular-workspace/angular.json diff --git a/packages/deslop-js/tests/fixtures/angular-workspace/orphan.ts b/packages/core/tests/deslop/fixtures/angular-workspace/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/angular-workspace/orphan.ts rename to packages/core/tests/deslop/fixtures/angular-workspace/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/angular-workspace/package.json b/packages/core/tests/deslop/fixtures/angular-workspace/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/angular-workspace/package.json rename to packages/core/tests/deslop/fixtures/angular-workspace/package.json diff --git a/packages/deslop-js/tests/fixtures/angular-workspace/projects/demo/src/app/app.component.css b/packages/core/tests/deslop/fixtures/angular-workspace/projects/demo/src/app/app.component.css similarity index 100% rename from packages/deslop-js/tests/fixtures/angular-workspace/projects/demo/src/app/app.component.css rename to packages/core/tests/deslop/fixtures/angular-workspace/projects/demo/src/app/app.component.css diff --git a/packages/deslop-js/tests/fixtures/angular-workspace/projects/demo/src/app/app.component.html b/packages/core/tests/deslop/fixtures/angular-workspace/projects/demo/src/app/app.component.html similarity index 100% rename from packages/deslop-js/tests/fixtures/angular-workspace/projects/demo/src/app/app.component.html rename to packages/core/tests/deslop/fixtures/angular-workspace/projects/demo/src/app/app.component.html diff --git a/packages/deslop-js/tests/fixtures/angular-workspace/projects/demo/src/app/app.component.ts b/packages/core/tests/deslop/fixtures/angular-workspace/projects/demo/src/app/app.component.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/angular-workspace/projects/demo/src/app/app.component.ts rename to packages/core/tests/deslop/fixtures/angular-workspace/projects/demo/src/app/app.component.ts diff --git a/packages/deslop-js/tests/fixtures/angular-workspace/projects/demo/src/app/app.module.ts b/packages/core/tests/deslop/fixtures/angular-workspace/projects/demo/src/app/app.module.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/angular-workspace/projects/demo/src/app/app.module.ts rename to packages/core/tests/deslop/fixtures/angular-workspace/projects/demo/src/app/app.module.ts diff --git a/packages/deslop-js/tests/fixtures/angular-workspace/projects/demo/src/app/orphan.css b/packages/core/tests/deslop/fixtures/angular-workspace/projects/demo/src/app/orphan.css similarity index 100% rename from packages/deslop-js/tests/fixtures/angular-workspace/projects/demo/src/app/orphan.css rename to packages/core/tests/deslop/fixtures/angular-workspace/projects/demo/src/app/orphan.css diff --git a/packages/deslop-js/tests/fixtures/angular-workspace/projects/demo/src/environments/environment.ts b/packages/core/tests/deslop/fixtures/angular-workspace/projects/demo/src/environments/environment.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/angular-workspace/projects/demo/src/environments/environment.ts rename to packages/core/tests/deslop/fixtures/angular-workspace/projects/demo/src/environments/environment.ts diff --git a/packages/deslop-js/tests/fixtures/angular-workspace/projects/demo/src/main.ts b/packages/core/tests/deslop/fixtures/angular-workspace/projects/demo/src/main.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/angular-workspace/projects/demo/src/main.ts rename to packages/core/tests/deslop/fixtures/angular-workspace/projects/demo/src/main.ts diff --git a/packages/deslop-js/tests/fixtures/angular-workspace/projects/demo/src/polyfills.ts b/packages/core/tests/deslop/fixtures/angular-workspace/projects/demo/src/polyfills.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/angular-workspace/projects/demo/src/polyfills.ts rename to packages/core/tests/deslop/fixtures/angular-workspace/projects/demo/src/polyfills.ts diff --git a/packages/deslop-js/tests/fixtures/angular-workspace/projects/demo/src/styles.css b/packages/core/tests/deslop/fixtures/angular-workspace/projects/demo/src/styles.css similarity index 100% rename from packages/deslop-js/tests/fixtures/angular-workspace/projects/demo/src/styles.css rename to packages/core/tests/deslop/fixtures/angular-workspace/projects/demo/src/styles.css diff --git a/packages/deslop-js/tests/fixtures/angular-workspace/projects/demo/src/test.ts b/packages/core/tests/deslop/fixtures/angular-workspace/projects/demo/src/test.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/angular-workspace/projects/demo/src/test.ts rename to packages/core/tests/deslop/fixtures/angular-workspace/projects/demo/src/test.ts diff --git a/packages/deslop-js/tests/fixtures/arrow-wrapped-import-dynamic/package.json b/packages/core/tests/deslop/fixtures/arrow-wrapped-import-dynamic/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/arrow-wrapped-import-dynamic/package.json rename to packages/core/tests/deslop/fixtures/arrow-wrapped-import-dynamic/package.json diff --git a/packages/deslop-js/tests/fixtures/arrow-wrapped-import-dynamic/src/Bar.tsx b/packages/core/tests/deslop/fixtures/arrow-wrapped-import-dynamic/src/Bar.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/arrow-wrapped-import-dynamic/src/Bar.tsx rename to packages/core/tests/deslop/fixtures/arrow-wrapped-import-dynamic/src/Bar.tsx diff --git a/packages/deslop-js/tests/fixtures/arrow-wrapped-import-dynamic/src/Baz.tsx b/packages/core/tests/deslop/fixtures/arrow-wrapped-import-dynamic/src/Baz.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/arrow-wrapped-import-dynamic/src/Baz.tsx rename to packages/core/tests/deslop/fixtures/arrow-wrapped-import-dynamic/src/Baz.tsx diff --git a/packages/deslop-js/tests/fixtures/arrow-wrapped-import-dynamic/src/Foo.tsx b/packages/core/tests/deslop/fixtures/arrow-wrapped-import-dynamic/src/Foo.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/arrow-wrapped-import-dynamic/src/Foo.tsx rename to packages/core/tests/deslop/fixtures/arrow-wrapped-import-dynamic/src/Foo.tsx diff --git a/packages/deslop-js/tests/fixtures/arrow-wrapped-import-dynamic/src/feature.routes.ts b/packages/core/tests/deslop/fixtures/arrow-wrapped-import-dynamic/src/feature.routes.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/arrow-wrapped-import-dynamic/src/feature.routes.ts rename to packages/core/tests/deslop/fixtures/arrow-wrapped-import-dynamic/src/feature.routes.ts diff --git a/packages/deslop-js/tests/fixtures/arrow-wrapped-import-dynamic/src/index.tsx b/packages/core/tests/deslop/fixtures/arrow-wrapped-import-dynamic/src/index.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/arrow-wrapped-import-dynamic/src/index.tsx rename to packages/core/tests/deslop/fixtures/arrow-wrapped-import-dynamic/src/index.tsx diff --git a/packages/deslop-js/tests/fixtures/arrow-wrapped-import-dynamic/src/orphan.ts b/packages/core/tests/deslop/fixtures/arrow-wrapped-import-dynamic/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/arrow-wrapped-import-dynamic/src/orphan.ts rename to packages/core/tests/deslop/fixtures/arrow-wrapped-import-dynamic/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/astro-content/astro.config.ts b/packages/core/tests/deslop/fixtures/astro-content/astro.config.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/astro-content/astro.config.ts rename to packages/core/tests/deslop/fixtures/astro-content/astro.config.ts diff --git a/packages/deslop-js/tests/fixtures/astro-content/package.json b/packages/core/tests/deslop/fixtures/astro-content/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/astro-content/package.json rename to packages/core/tests/deslop/fixtures/astro-content/package.json diff --git a/packages/deslop-js/tests/fixtures/astro-content/src/content.config.ts b/packages/core/tests/deslop/fixtures/astro-content/src/content.config.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/astro-content/src/content.config.ts rename to packages/core/tests/deslop/fixtures/astro-content/src/content.config.ts diff --git a/packages/deslop-js/tests/fixtures/astro-content/src/content/config.ts b/packages/core/tests/deslop/fixtures/astro-content/src/content/config.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/astro-content/src/content/config.ts rename to packages/core/tests/deslop/fixtures/astro-content/src/content/config.ts diff --git a/packages/deslop-js/tests/fixtures/astro-content/src/orphan.ts b/packages/core/tests/deslop/fixtures/astro-content/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/astro-content/src/orphan.ts rename to packages/core/tests/deslop/fixtures/astro-content/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/astro-content/src/pages/index.astro b/packages/core/tests/deslop/fixtures/astro-content/src/pages/index.astro similarity index 100% rename from packages/deslop-js/tests/fixtures/astro-content/src/pages/index.astro rename to packages/core/tests/deslop/fixtures/astro-content/src/pages/index.astro diff --git a/packages/deslop-js/tests/fixtures/astro-frontmatter-return/package.json b/packages/core/tests/deslop/fixtures/astro-frontmatter-return/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/astro-frontmatter-return/package.json rename to packages/core/tests/deslop/fixtures/astro-frontmatter-return/package.json diff --git a/packages/deslop-js/tests/fixtures/astro-frontmatter-return/src/components/Greeting.tsx b/packages/core/tests/deslop/fixtures/astro-frontmatter-return/src/components/Greeting.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/astro-frontmatter-return/src/components/Greeting.tsx rename to packages/core/tests/deslop/fixtures/astro-frontmatter-return/src/components/Greeting.tsx diff --git a/packages/deslop-js/tests/fixtures/astro-frontmatter-return/src/components/orphan.ts b/packages/core/tests/deslop/fixtures/astro-frontmatter-return/src/components/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/astro-frontmatter-return/src/components/orphan.ts rename to packages/core/tests/deslop/fixtures/astro-frontmatter-return/src/components/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/astro-frontmatter-return/src/pages/[...slug].astro b/packages/core/tests/deslop/fixtures/astro-frontmatter-return/src/pages/[...slug].astro similarity index 100% rename from packages/deslop-js/tests/fixtures/astro-frontmatter-return/src/pages/[...slug].astro rename to packages/core/tests/deslop/fixtures/astro-frontmatter-return/src/pages/[...slug].astro diff --git a/packages/deslop-js/tests/fixtures/astro-frontmatter-return/src/scripts/analytics.ts b/packages/core/tests/deslop/fixtures/astro-frontmatter-return/src/scripts/analytics.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/astro-frontmatter-return/src/scripts/analytics.ts rename to packages/core/tests/deslop/fixtures/astro-frontmatter-return/src/scripts/analytics.ts diff --git a/packages/deslop-js/tests/fixtures/astro-frontmatter-return/src/scripts/inline-helper.ts b/packages/core/tests/deslop/fixtures/astro-frontmatter-return/src/scripts/inline-helper.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/astro-frontmatter-return/src/scripts/inline-helper.ts rename to packages/core/tests/deslop/fixtures/astro-frontmatter-return/src/scripts/inline-helper.ts diff --git a/packages/deslop-js/tests/fixtures/astro-live-config/astro.config.ts b/packages/core/tests/deslop/fixtures/astro-live-config/astro.config.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/astro-live-config/astro.config.ts rename to packages/core/tests/deslop/fixtures/astro-live-config/astro.config.ts diff --git a/packages/deslop-js/tests/fixtures/astro-live-config/package.json b/packages/core/tests/deslop/fixtures/astro-live-config/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/astro-live-config/package.json rename to packages/core/tests/deslop/fixtures/astro-live-config/package.json diff --git a/packages/deslop-js/tests/fixtures/astro-live-config/src/live.config.ts b/packages/core/tests/deslop/fixtures/astro-live-config/src/live.config.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/astro-live-config/src/live.config.ts rename to packages/core/tests/deslop/fixtures/astro-live-config/src/live.config.ts diff --git a/packages/deslop-js/tests/fixtures/astro-live-config/src/loaders/wordpress-loader.ts b/packages/core/tests/deslop/fixtures/astro-live-config/src/loaders/wordpress-loader.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/astro-live-config/src/loaders/wordpress-loader.ts rename to packages/core/tests/deslop/fixtures/astro-live-config/src/loaders/wordpress-loader.ts diff --git a/packages/deslop-js/tests/fixtures/astro-live-config/src/orphan.ts b/packages/core/tests/deslop/fixtures/astro-live-config/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/astro-live-config/src/orphan.ts rename to packages/core/tests/deslop/fixtures/astro-live-config/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/astro-live-config/src/pages/index.astro b/packages/core/tests/deslop/fixtures/astro-live-config/src/pages/index.astro similarity index 100% rename from packages/deslop-js/tests/fixtures/astro-live-config/src/pages/index.astro rename to packages/core/tests/deslop/fixtures/astro-live-config/src/pages/index.astro diff --git a/packages/deslop-js/tests/fixtures/astro-mw/orphan.ts b/packages/core/tests/deslop/fixtures/astro-mw/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/astro-mw/orphan.ts rename to packages/core/tests/deslop/fixtures/astro-mw/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/astro-mw/package.json b/packages/core/tests/deslop/fixtures/astro-mw/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/astro-mw/package.json rename to packages/core/tests/deslop/fixtures/astro-mw/package.json diff --git a/packages/deslop-js/tests/fixtures/astro-mw/src/middleware.ts b/packages/core/tests/deslop/fixtures/astro-mw/src/middleware.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/astro-mw/src/middleware.ts rename to packages/core/tests/deslop/fixtures/astro-mw/src/middleware.ts diff --git a/packages/deslop-js/tests/fixtures/astro-mw/src/pages/index.astro b/packages/core/tests/deslop/fixtures/astro-mw/src/pages/index.astro similarity index 100% rename from packages/deslop-js/tests/fixtures/astro-mw/src/pages/index.astro rename to packages/core/tests/deslop/fixtures/astro-mw/src/pages/index.astro diff --git a/packages/deslop-js/tests/fixtures/ava-app/package.json b/packages/core/tests/deslop/fixtures/ava-app/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/ava-app/package.json rename to packages/core/tests/deslop/fixtures/ava-app/package.json diff --git a/packages/deslop-js/tests/fixtures/ava-app/src/index.ts b/packages/core/tests/deslop/fixtures/ava-app/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/ava-app/src/index.ts rename to packages/core/tests/deslop/fixtures/ava-app/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/ava-app/src/math.ts b/packages/core/tests/deslop/fixtures/ava-app/src/math.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/ava-app/src/math.ts rename to packages/core/tests/deslop/fixtures/ava-app/src/math.ts diff --git a/packages/deslop-js/tests/fixtures/ava-app/src/orphan.ts b/packages/core/tests/deslop/fixtures/ava-app/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/ava-app/src/orphan.ts rename to packages/core/tests/deslop/fixtures/ava-app/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/ava-app/test/math.test.ts b/packages/core/tests/deslop/fixtures/ava-app/test/math.test.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/ava-app/test/math.test.ts rename to packages/core/tests/deslop/fixtures/ava-app/test/math.test.ts diff --git a/packages/deslop-js/tests/fixtures/babel-module-resolver/babel.config.js b/packages/core/tests/deslop/fixtures/babel-module-resolver/babel.config.js similarity index 100% rename from packages/deslop-js/tests/fixtures/babel-module-resolver/babel.config.js rename to packages/core/tests/deslop/fixtures/babel-module-resolver/babel.config.js diff --git a/packages/deslop-js/tests/fixtures/babel-module-resolver/package.json b/packages/core/tests/deslop/fixtures/babel-module-resolver/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/babel-module-resolver/package.json rename to packages/core/tests/deslop/fixtures/babel-module-resolver/package.json diff --git a/packages/deslop-js/tests/fixtures/babel-module-resolver/src/components/button.ts b/packages/core/tests/deslop/fixtures/babel-module-resolver/src/components/button.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/babel-module-resolver/src/components/button.ts rename to packages/core/tests/deslop/fixtures/babel-module-resolver/src/components/button.ts diff --git a/packages/deslop-js/tests/fixtures/babel-module-resolver/src/components/orphan.ts b/packages/core/tests/deslop/fixtures/babel-module-resolver/src/components/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/babel-module-resolver/src/components/orphan.ts rename to packages/core/tests/deslop/fixtures/babel-module-resolver/src/components/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/babel-module-resolver/src/index.ts b/packages/core/tests/deslop/fixtures/babel-module-resolver/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/babel-module-resolver/src/index.ts rename to packages/core/tests/deslop/fixtures/babel-module-resolver/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/broken-tsconfig/package.json b/packages/core/tests/deslop/fixtures/broken-tsconfig/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/broken-tsconfig/package.json rename to packages/core/tests/deslop/fixtures/broken-tsconfig/package.json diff --git a/packages/deslop-js/tests/fixtures/broken-tsconfig/src/index.ts b/packages/core/tests/deslop/fixtures/broken-tsconfig/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/broken-tsconfig/src/index.ts rename to packages/core/tests/deslop/fixtures/broken-tsconfig/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/broken-tsconfig/tsconfig.json b/packages/core/tests/deslop/fixtures/broken-tsconfig/tsconfig.json similarity index 100% rename from packages/deslop-js/tests/fixtures/broken-tsconfig/tsconfig.json rename to packages/core/tests/deslop/fixtures/broken-tsconfig/tsconfig.json diff --git a/packages/deslop-js/tests/fixtures/build-root-fallback/bin/server.js b/packages/core/tests/deslop/fixtures/build-root-fallback/bin/server.js similarity index 100% rename from packages/deslop-js/tests/fixtures/build-root-fallback/bin/server.js rename to packages/core/tests/deslop/fixtures/build-root-fallback/bin/server.js diff --git a/packages/deslop-js/tests/fixtures/build-root-fallback/package.json b/packages/core/tests/deslop/fixtures/build-root-fallback/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/build-root-fallback/package.json rename to packages/core/tests/deslop/fixtures/build-root-fallback/package.json diff --git a/packages/deslop-js/tests/fixtures/build-root-fallback/src/app.ts b/packages/core/tests/deslop/fixtures/build-root-fallback/src/app.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/build-root-fallback/src/app.ts rename to packages/core/tests/deslop/fixtures/build-root-fallback/src/app.ts diff --git a/packages/deslop-js/tests/fixtures/build-root-fallback/src/db.ts b/packages/core/tests/deslop/fixtures/build-root-fallback/src/db.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/build-root-fallback/src/db.ts rename to packages/core/tests/deslop/fixtures/build-root-fallback/src/db.ts diff --git a/packages/deslop-js/tests/fixtures/build-root-fallback/src/orphan.ts b/packages/core/tests/deslop/fixtures/build-root-fallback/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/build-root-fallback/src/orphan.ts rename to packages/core/tests/deslop/fixtures/build-root-fallback/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/build-script-map/package.json b/packages/core/tests/deslop/fixtures/build-script-map/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/build-script-map/package.json rename to packages/core/tests/deslop/fixtures/build-script-map/package.json diff --git a/packages/deslop-js/tests/fixtures/build-script-map/src/index.ts b/packages/core/tests/deslop/fixtures/build-script-map/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/build-script-map/src/index.ts rename to packages/core/tests/deslop/fixtures/build-script-map/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/build-script-map/src/orphan.ts b/packages/core/tests/deslop/fixtures/build-script-map/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/build-script-map/src/orphan.ts rename to packages/core/tests/deslop/fixtures/build-script-map/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/build-script-map/src/scripts/health-check.ts b/packages/core/tests/deslop/fixtures/build-script-map/src/scripts/health-check.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/build-script-map/src/scripts/health-check.ts rename to packages/core/tests/deslop/fixtures/build-script-map/src/scripts/health-check.ts diff --git a/packages/deslop-js/tests/fixtures/build-script-map/src/scripts/migrate.ts b/packages/core/tests/deslop/fixtures/build-script-map/src/scripts/migrate.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/build-script-map/src/scripts/migrate.ts rename to packages/core/tests/deslop/fixtures/build-script-map/src/scripts/migrate.ts diff --git a/packages/deslop-js/tests/fixtures/bun-test/__tests__/integration.test.ts b/packages/core/tests/deslop/fixtures/bun-test/__tests__/integration.test.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/bun-test/__tests__/integration.test.ts rename to packages/core/tests/deslop/fixtures/bun-test/__tests__/integration.test.ts diff --git a/packages/deslop-js/tests/fixtures/bun-test/orphan.ts b/packages/core/tests/deslop/fixtures/bun-test/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/bun-test/orphan.ts rename to packages/core/tests/deslop/fixtures/bun-test/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/bun-test/package.json b/packages/core/tests/deslop/fixtures/bun-test/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/bun-test/package.json rename to packages/core/tests/deslop/fixtures/bun-test/package.json diff --git a/packages/deslop-js/tests/fixtures/bun-test/src/__tests__/build-output.test.ts b/packages/core/tests/deslop/fixtures/bun-test/src/__tests__/build-output.test.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/bun-test/src/__tests__/build-output.test.ts rename to packages/core/tests/deslop/fixtures/bun-test/src/__tests__/build-output.test.ts diff --git a/packages/deslop-js/tests/fixtures/bun-test/src/add.test.ts b/packages/core/tests/deslop/fixtures/bun-test/src/add.test.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/bun-test/src/add.test.ts rename to packages/core/tests/deslop/fixtures/bun-test/src/add.test.ts diff --git a/packages/deslop-js/tests/fixtures/bun-test/src/index.ts b/packages/core/tests/deslop/fixtures/bun-test/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/bun-test/src/index.ts rename to packages/core/tests/deslop/fixtures/bun-test/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/bun-test/src/orphan.ts b/packages/core/tests/deslop/fixtures/bun-test/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/bun-test/src/orphan.ts rename to packages/core/tests/deslop/fixtures/bun-test/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/bun-test/src/utils_test.ts b/packages/core/tests/deslop/fixtures/bun-test/src/utils_test.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/bun-test/src/utils_test.ts rename to packages/core/tests/deslop/fixtures/bun-test/src/utils_test.ts diff --git a/packages/deslop-js/tests/fixtures/ci-scripts/.github/workflows/release.yml b/packages/core/tests/deslop/fixtures/ci-scripts/.github/workflows/release.yml similarity index 100% rename from packages/deslop-js/tests/fixtures/ci-scripts/.github/workflows/release.yml rename to packages/core/tests/deslop/fixtures/ci-scripts/.github/workflows/release.yml diff --git a/packages/deslop-js/tests/fixtures/ci-scripts/package.json b/packages/core/tests/deslop/fixtures/ci-scripts/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/ci-scripts/package.json rename to packages/core/tests/deslop/fixtures/ci-scripts/package.json diff --git a/packages/deslop-js/tests/fixtures/ci-scripts/scripts/build-release.ts b/packages/core/tests/deslop/fixtures/ci-scripts/scripts/build-release.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/ci-scripts/scripts/build-release.ts rename to packages/core/tests/deslop/fixtures/ci-scripts/scripts/build-release.ts diff --git a/packages/deslop-js/tests/fixtures/ci-scripts/scripts/deploy.mjs b/packages/core/tests/deslop/fixtures/ci-scripts/scripts/deploy.mjs similarity index 100% rename from packages/deslop-js/tests/fixtures/ci-scripts/scripts/deploy.mjs rename to packages/core/tests/deslop/fixtures/ci-scripts/scripts/deploy.mjs diff --git a/packages/deslop-js/tests/fixtures/ci-scripts/src/index.ts b/packages/core/tests/deslop/fixtures/ci-scripts/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/ci-scripts/src/index.ts rename to packages/core/tests/deslop/fixtures/ci-scripts/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/ci-scripts/src/orphan.ts b/packages/core/tests/deslop/fixtures/ci-scripts/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/ci-scripts/src/orphan.ts rename to packages/core/tests/deslop/fixtures/ci-scripts/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/ci-yaml-non-run/.github/changelog/changelog.js b/packages/core/tests/deslop/fixtures/ci-yaml-non-run/.github/changelog/changelog.js similarity index 100% rename from packages/deslop-js/tests/fixtures/ci-yaml-non-run/.github/changelog/changelog.js rename to packages/core/tests/deslop/fixtures/ci-yaml-non-run/.github/changelog/changelog.js diff --git a/packages/deslop-js/tests/fixtures/ci-yaml-non-run/.github/workflows/release.yml b/packages/core/tests/deslop/fixtures/ci-yaml-non-run/.github/workflows/release.yml similarity index 100% rename from packages/deslop-js/tests/fixtures/ci-yaml-non-run/.github/workflows/release.yml rename to packages/core/tests/deslop/fixtures/ci-yaml-non-run/.github/workflows/release.yml diff --git a/packages/deslop-js/tests/fixtures/ci-yaml-non-run/package.json b/packages/core/tests/deslop/fixtures/ci-yaml-non-run/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/ci-yaml-non-run/package.json rename to packages/core/tests/deslop/fixtures/ci-yaml-non-run/package.json diff --git a/packages/deslop-js/tests/fixtures/ci-yaml-non-run/scripts/deploy.mjs b/packages/core/tests/deslop/fixtures/ci-yaml-non-run/scripts/deploy.mjs similarity index 100% rename from packages/deslop-js/tests/fixtures/ci-yaml-non-run/scripts/deploy.mjs rename to packages/core/tests/deslop/fixtures/ci-yaml-non-run/scripts/deploy.mjs diff --git a/packages/deslop-js/tests/fixtures/ci-yaml-non-run/src/index.ts b/packages/core/tests/deslop/fixtures/ci-yaml-non-run/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/ci-yaml-non-run/src/index.ts rename to packages/core/tests/deslop/fixtures/ci-yaml-non-run/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/cloudflare-worker/package.json b/packages/core/tests/deslop/fixtures/cloudflare-worker/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/cloudflare-worker/package.json rename to packages/core/tests/deslop/fixtures/cloudflare-worker/package.json diff --git a/packages/deslop-js/tests/fixtures/cloudflare-worker/src/index.ts b/packages/core/tests/deslop/fixtures/cloudflare-worker/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/cloudflare-worker/src/index.ts rename to packages/core/tests/deslop/fixtures/cloudflare-worker/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/cloudflare-worker/src/orphan.ts b/packages/core/tests/deslop/fixtures/cloudflare-worker/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/cloudflare-worker/src/orphan.ts rename to packages/core/tests/deslop/fixtures/cloudflare-worker/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/commonjs-app/package.json b/packages/core/tests/deslop/fixtures/commonjs-app/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/commonjs-app/package.json rename to packages/core/tests/deslop/fixtures/commonjs-app/package.json diff --git a/packages/deslop-js/tests/fixtures/commonjs-app/src/index.js b/packages/core/tests/deslop/fixtures/commonjs-app/src/index.js similarity index 100% rename from packages/deslop-js/tests/fixtures/commonjs-app/src/index.js rename to packages/core/tests/deslop/fixtures/commonjs-app/src/index.js diff --git a/packages/deslop-js/tests/fixtures/commonjs-app/src/orphan.js b/packages/core/tests/deslop/fixtures/commonjs-app/src/orphan.js similarity index 100% rename from packages/deslop-js/tests/fixtures/commonjs-app/src/orphan.js rename to packages/core/tests/deslop/fixtures/commonjs-app/src/orphan.js diff --git a/packages/deslop-js/tests/fixtures/commonjs-app/src/utils.js b/packages/core/tests/deslop/fixtures/commonjs-app/src/utils.js similarity index 100% rename from packages/deslop-js/tests/fixtures/commonjs-app/src/utils.js rename to packages/core/tests/deslop/fixtures/commonjs-app/src/utils.js diff --git a/packages/deslop-js/tests/fixtures/complex-functions/package.json b/packages/core/tests/deslop/fixtures/complex-functions/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/complex-functions/package.json rename to packages/core/tests/deslop/fixtures/complex-functions/package.json diff --git a/packages/deslop-js/tests/fixtures/complex-functions/src/index.ts b/packages/core/tests/deslop/fixtures/complex-functions/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/complex-functions/src/index.ts rename to packages/core/tests/deslop/fixtures/complex-functions/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/config-compound-name/cypress.config.contract.js b/packages/core/tests/deslop/fixtures/config-compound-name/cypress.config.contract.js similarity index 100% rename from packages/deslop-js/tests/fixtures/config-compound-name/cypress.config.contract.js rename to packages/core/tests/deslop/fixtures/config-compound-name/cypress.config.contract.js diff --git a/packages/deslop-js/tests/fixtures/config-compound-name/package.json b/packages/core/tests/deslop/fixtures/config-compound-name/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/config-compound-name/package.json rename to packages/core/tests/deslop/fixtures/config-compound-name/package.json diff --git a/packages/deslop-js/tests/fixtures/config-compound-name/src/index.ts b/packages/core/tests/deslop/fixtures/config-compound-name/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/config-compound-name/src/index.ts rename to packages/core/tests/deslop/fixtures/config-compound-name/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/config-compound-name/src/orphan.ts b/packages/core/tests/deslop/fixtures/config-compound-name/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/config-compound-name/src/orphan.ts rename to packages/core/tests/deslop/fixtures/config-compound-name/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/config-compound-name/vitest.config.unit.ts b/packages/core/tests/deslop/fixtures/config-compound-name/vitest.config.unit.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/config-compound-name/vitest.config.unit.ts rename to packages/core/tests/deslop/fixtures/config-compound-name/vitest.config.unit.ts diff --git a/packages/deslop-js/tests/fixtures/config-detection/.desloprc.json b/packages/core/tests/deslop/fixtures/config-detection/.desloprc.json similarity index 100% rename from packages/deslop-js/tests/fixtures/config-detection/.desloprc.json rename to packages/core/tests/deslop/fixtures/config-detection/.desloprc.json diff --git a/packages/deslop-js/tests/fixtures/config-detection/package.json b/packages/core/tests/deslop/fixtures/config-detection/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/config-detection/package.json rename to packages/core/tests/deslop/fixtures/config-detection/package.json diff --git a/packages/deslop-js/tests/fixtures/config-detection/src/index.ts b/packages/core/tests/deslop/fixtures/config-detection/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/config-detection/src/index.ts rename to packages/core/tests/deslop/fixtures/config-detection/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/config-detection/src/orphan.ts b/packages/core/tests/deslop/fixtures/config-detection/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/config-detection/src/orphan.ts rename to packages/core/tests/deslop/fixtures/config-detection/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/config-detection/src/utils.ts b/packages/core/tests/deslop/fixtures/config-detection/src/utils.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/config-detection/src/utils.ts rename to packages/core/tests/deslop/fixtures/config-detection/src/utils.ts diff --git a/packages/deslop-js/tests/fixtures/config-entry-seed/package.json b/packages/core/tests/deslop/fixtures/config-entry-seed/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/config-entry-seed/package.json rename to packages/core/tests/deslop/fixtures/config-entry-seed/package.json diff --git a/packages/deslop-js/tests/fixtures/config-entry-seed/src/helper.ts b/packages/core/tests/deslop/fixtures/config-entry-seed/src/helper.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/config-entry-seed/src/helper.ts rename to packages/core/tests/deslop/fixtures/config-entry-seed/src/helper.ts diff --git a/packages/deslop-js/tests/fixtures/config-entry-seed/src/index.ts b/packages/core/tests/deslop/fixtures/config-entry-seed/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/config-entry-seed/src/index.ts rename to packages/core/tests/deslop/fixtures/config-entry-seed/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/config-entry-seed/src/orphan.ts b/packages/core/tests/deslop/fixtures/config-entry-seed/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/config-entry-seed/src/orphan.ts rename to packages/core/tests/deslop/fixtures/config-entry-seed/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/config-entry-seed/src/vite-plugin.ts b/packages/core/tests/deslop/fixtures/config-entry-seed/src/vite-plugin.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/config-entry-seed/src/vite-plugin.ts rename to packages/core/tests/deslop/fixtures/config-entry-seed/src/vite-plugin.ts diff --git a/packages/deslop-js/tests/fixtures/config-entry-seed/vite.config.ts b/packages/core/tests/deslop/fixtures/config-entry-seed/vite.config.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/config-entry-seed/vite.config.ts rename to packages/core/tests/deslop/fixtures/config-entry-seed/vite.config.ts diff --git a/packages/deslop-js/tests/fixtures/config-exclusion/package.json b/packages/core/tests/deslop/fixtures/config-exclusion/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/config-exclusion/package.json rename to packages/core/tests/deslop/fixtures/config-exclusion/package.json diff --git a/packages/deslop-js/tests/fixtures/config-exclusion/playwright.smoke.config.mjs b/packages/core/tests/deslop/fixtures/config-exclusion/playwright.smoke.config.mjs similarity index 100% rename from packages/deslop-js/tests/fixtures/config-exclusion/playwright.smoke.config.mjs rename to packages/core/tests/deslop/fixtures/config-exclusion/playwright.smoke.config.mjs diff --git a/packages/deslop-js/tests/fixtures/config-exclusion/sanity.cli.ts b/packages/core/tests/deslop/fixtures/config-exclusion/sanity.cli.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/config-exclusion/sanity.cli.ts rename to packages/core/tests/deslop/fixtures/config-exclusion/sanity.cli.ts diff --git a/packages/deslop-js/tests/fixtures/config-exclusion/sanity.config.ts b/packages/core/tests/deslop/fixtures/config-exclusion/sanity.config.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/config-exclusion/sanity.config.ts rename to packages/core/tests/deslop/fixtures/config-exclusion/sanity.config.ts diff --git a/packages/deslop-js/tests/fixtures/config-exclusion/src/index.ts b/packages/core/tests/deslop/fixtures/config-exclusion/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/config-exclusion/src/index.ts rename to packages/core/tests/deslop/fixtures/config-exclusion/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/config-exclusion/src/orphan.ts b/packages/core/tests/deslop/fixtures/config-exclusion/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/config-exclusion/src/orphan.ts rename to packages/core/tests/deslop/fixtures/config-exclusion/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/config-exclusion/vitest.config.ts b/packages/core/tests/deslop/fixtures/config-exclusion/vitest.config.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/config-exclusion/vitest.config.ts rename to packages/core/tests/deslop/fixtures/config-exclusion/vitest.config.ts diff --git a/packages/deslop-js/tests/fixtures/config-global-scope/package.json b/packages/core/tests/deslop/fixtures/config-global-scope/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/config-global-scope/package.json rename to packages/core/tests/deslop/fixtures/config-global-scope/package.json diff --git a/packages/deslop-js/tests/fixtures/config-global-scope/src/index.ts b/packages/core/tests/deslop/fixtures/config-global-scope/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/config-global-scope/src/index.ts rename to packages/core/tests/deslop/fixtures/config-global-scope/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/config-global-scope/templates/next-app/eslint.config.js b/packages/core/tests/deslop/fixtures/config-global-scope/templates/next-app/eslint.config.js similarity index 100% rename from packages/deslop-js/tests/fixtures/config-global-scope/templates/next-app/eslint.config.js rename to packages/core/tests/deslop/fixtures/config-global-scope/templates/next-app/eslint.config.js diff --git a/packages/deslop-js/tests/fixtures/config-global-scope/templates/next-app/orphan.ts b/packages/core/tests/deslop/fixtures/config-global-scope/templates/next-app/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/config-global-scope/templates/next-app/orphan.ts rename to packages/core/tests/deslop/fixtures/config-global-scope/templates/next-app/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/config-global-scope/templates/next-app/postcss.config.mjs b/packages/core/tests/deslop/fixtures/config-global-scope/templates/next-app/postcss.config.mjs similarity index 100% rename from packages/deslop-js/tests/fixtures/config-global-scope/templates/next-app/postcss.config.mjs rename to packages/core/tests/deslop/fixtures/config-global-scope/templates/next-app/postcss.config.mjs diff --git a/packages/deslop-js/tests/fixtures/config-imports/my-vite-plugin.ts b/packages/core/tests/deslop/fixtures/config-imports/my-vite-plugin.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/config-imports/my-vite-plugin.ts rename to packages/core/tests/deslop/fixtures/config-imports/my-vite-plugin.ts diff --git a/packages/deslop-js/tests/fixtures/config-imports/package.json b/packages/core/tests/deslop/fixtures/config-imports/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/config-imports/package.json rename to packages/core/tests/deslop/fixtures/config-imports/package.json diff --git a/packages/deslop-js/tests/fixtures/config-imports/src/app.ts b/packages/core/tests/deslop/fixtures/config-imports/src/app.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/config-imports/src/app.ts rename to packages/core/tests/deslop/fixtures/config-imports/src/app.ts diff --git a/packages/deslop-js/tests/fixtures/config-imports/src/index.ts b/packages/core/tests/deslop/fixtures/config-imports/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/config-imports/src/index.ts rename to packages/core/tests/deslop/fixtures/config-imports/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/config-imports/src/shared-util.ts b/packages/core/tests/deslop/fixtures/config-imports/src/shared-util.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/config-imports/src/shared-util.ts rename to packages/core/tests/deslop/fixtures/config-imports/src/shared-util.ts diff --git a/packages/deslop-js/tests/fixtures/config-imports/vite.config.ts b/packages/core/tests/deslop/fixtures/config-imports/vite.config.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/config-imports/vite.config.ts rename to packages/core/tests/deslop/fixtures/config-imports/vite.config.ts diff --git a/packages/deslop-js/tests/fixtures/config-mixed-formats/lage.config.cjs b/packages/core/tests/deslop/fixtures/config-mixed-formats/lage.config.cjs similarity index 100% rename from packages/deslop-js/tests/fixtures/config-mixed-formats/lage.config.cjs rename to packages/core/tests/deslop/fixtures/config-mixed-formats/lage.config.cjs diff --git a/packages/deslop-js/tests/fixtures/config-mixed-formats/package.json b/packages/core/tests/deslop/fixtures/config-mixed-formats/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/config-mixed-formats/package.json rename to packages/core/tests/deslop/fixtures/config-mixed-formats/package.json diff --git a/packages/deslop-js/tests/fixtures/config-mixed-formats/prettier.config.mjs b/packages/core/tests/deslop/fixtures/config-mixed-formats/prettier.config.mjs similarity index 100% rename from packages/deslop-js/tests/fixtures/config-mixed-formats/prettier.config.mjs rename to packages/core/tests/deslop/fixtures/config-mixed-formats/prettier.config.mjs diff --git a/packages/deslop-js/tests/fixtures/config-mixed-formats/src/index.ts b/packages/core/tests/deslop/fixtures/config-mixed-formats/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/config-mixed-formats/src/index.ts rename to packages/core/tests/deslop/fixtures/config-mixed-formats/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/config-mixed-formats/src/orphan.ts b/packages/core/tests/deslop/fixtures/config-mixed-formats/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/config-mixed-formats/src/orphan.ts rename to packages/core/tests/deslop/fixtures/config-mixed-formats/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/config-mixed-formats/vitest.config.mts b/packages/core/tests/deslop/fixtures/config-mixed-formats/vitest.config.mts similarity index 100% rename from packages/deslop-js/tests/fixtures/config-mixed-formats/vitest.config.mts rename to packages/core/tests/deslop/fixtures/config-mixed-formats/vitest.config.mts diff --git a/packages/deslop-js/tests/fixtures/config-paths-only/lib/orphan.ts b/packages/core/tests/deslop/fixtures/config-paths-only/lib/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/config-paths-only/lib/orphan.ts rename to packages/core/tests/deslop/fixtures/config-paths-only/lib/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/config-paths-only/lib/thing.ts b/packages/core/tests/deslop/fixtures/config-paths-only/lib/thing.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/config-paths-only/lib/thing.ts rename to packages/core/tests/deslop/fixtures/config-paths-only/lib/thing.ts diff --git a/packages/deslop-js/tests/fixtures/config-paths-only/package.json b/packages/core/tests/deslop/fixtures/config-paths-only/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/config-paths-only/package.json rename to packages/core/tests/deslop/fixtures/config-paths-only/package.json diff --git a/packages/deslop-js/tests/fixtures/config-paths-only/src/index.ts b/packages/core/tests/deslop/fixtures/config-paths-only/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/config-paths-only/src/index.ts rename to packages/core/tests/deslop/fixtures/config-paths-only/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/config-script-flags/db/drizzle.config.ts b/packages/core/tests/deslop/fixtures/config-script-flags/db/drizzle.config.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/config-script-flags/db/drizzle.config.ts rename to packages/core/tests/deslop/fixtures/config-script-flags/db/drizzle.config.ts diff --git a/packages/deslop-js/tests/fixtures/config-script-flags/package.json b/packages/core/tests/deslop/fixtures/config-script-flags/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/config-script-flags/package.json rename to packages/core/tests/deslop/fixtures/config-script-flags/package.json diff --git a/packages/deslop-js/tests/fixtures/config-script-flags/scripts/seed.ts b/packages/core/tests/deslop/fixtures/config-script-flags/scripts/seed.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/config-script-flags/scripts/seed.ts rename to packages/core/tests/deslop/fixtures/config-script-flags/scripts/seed.ts diff --git a/packages/deslop-js/tests/fixtures/config-script-flags/src/index.ts b/packages/core/tests/deslop/fixtures/config-script-flags/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/config-script-flags/src/index.ts rename to packages/core/tests/deslop/fixtures/config-script-flags/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/config-script-flags/src/orphan.ts b/packages/core/tests/deslop/fixtures/config-script-flags/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/config-script-flags/src/orphan.ts rename to packages/core/tests/deslop/fixtures/config-script-flags/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/cra-jest-transforms/config/jest/babelTransform.js b/packages/core/tests/deslop/fixtures/cra-jest-transforms/config/jest/babelTransform.js similarity index 100% rename from packages/deslop-js/tests/fixtures/cra-jest-transforms/config/jest/babelTransform.js rename to packages/core/tests/deslop/fixtures/cra-jest-transforms/config/jest/babelTransform.js diff --git a/packages/deslop-js/tests/fixtures/cra-jest-transforms/config/jest/cssTransform.js b/packages/core/tests/deslop/fixtures/cra-jest-transforms/config/jest/cssTransform.js similarity index 100% rename from packages/deslop-js/tests/fixtures/cra-jest-transforms/config/jest/cssTransform.js rename to packages/core/tests/deslop/fixtures/cra-jest-transforms/config/jest/cssTransform.js diff --git a/packages/deslop-js/tests/fixtures/cra-jest-transforms/config/jest/fileTransform.js b/packages/core/tests/deslop/fixtures/cra-jest-transforms/config/jest/fileTransform.js similarity index 100% rename from packages/deslop-js/tests/fixtures/cra-jest-transforms/config/jest/fileTransform.js rename to packages/core/tests/deslop/fixtures/cra-jest-transforms/config/jest/fileTransform.js diff --git a/packages/deslop-js/tests/fixtures/cra-jest-transforms/config/jest/orphanTransform.js b/packages/core/tests/deslop/fixtures/cra-jest-transforms/config/jest/orphanTransform.js similarity index 100% rename from packages/deslop-js/tests/fixtures/cra-jest-transforms/config/jest/orphanTransform.js rename to packages/core/tests/deslop/fixtures/cra-jest-transforms/config/jest/orphanTransform.js diff --git a/packages/deslop-js/tests/fixtures/cra-jest-transforms/package.json b/packages/core/tests/deslop/fixtures/cra-jest-transforms/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/cra-jest-transforms/package.json rename to packages/core/tests/deslop/fixtures/cra-jest-transforms/package.json diff --git a/packages/deslop-js/tests/fixtures/cra-jest-transforms/scripts/utils/createJestConfig.js b/packages/core/tests/deslop/fixtures/cra-jest-transforms/scripts/utils/createJestConfig.js similarity index 100% rename from packages/deslop-js/tests/fixtures/cra-jest-transforms/scripts/utils/createJestConfig.js rename to packages/core/tests/deslop/fixtures/cra-jest-transforms/scripts/utils/createJestConfig.js diff --git a/packages/deslop-js/tests/fixtures/cra-jest-transforms/src/index.js b/packages/core/tests/deslop/fixtures/cra-jest-transforms/src/index.js similarity index 100% rename from packages/deslop-js/tests/fixtures/cra-jest-transforms/src/index.js rename to packages/core/tests/deslop/fixtures/cra-jest-transforms/src/index.js diff --git a/packages/deslop-js/tests/fixtures/cra-monorepo-scope/package.json b/packages/core/tests/deslop/fixtures/cra-monorepo-scope/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/cra-monorepo-scope/package.json rename to packages/core/tests/deslop/fixtures/cra-monorepo-scope/package.json diff --git a/packages/deslop-js/tests/fixtures/cra-monorepo-scope/packages/app/package.json b/packages/core/tests/deslop/fixtures/cra-monorepo-scope/packages/app/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/cra-monorepo-scope/packages/app/package.json rename to packages/core/tests/deslop/fixtures/cra-monorepo-scope/packages/app/package.json diff --git a/packages/deslop-js/tests/fixtures/cra-monorepo-scope/packages/app/src/App.ts b/packages/core/tests/deslop/fixtures/cra-monorepo-scope/packages/app/src/App.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/cra-monorepo-scope/packages/app/src/App.ts rename to packages/core/tests/deslop/fixtures/cra-monorepo-scope/packages/app/src/App.ts diff --git a/packages/deslop-js/tests/fixtures/cra-monorepo-scope/packages/app/src/index.ts b/packages/core/tests/deslop/fixtures/cra-monorepo-scope/packages/app/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/cra-monorepo-scope/packages/app/src/index.ts rename to packages/core/tests/deslop/fixtures/cra-monorepo-scope/packages/app/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/cra-monorepo-scope/packages/lib/package.json b/packages/core/tests/deslop/fixtures/cra-monorepo-scope/packages/lib/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/cra-monorepo-scope/packages/lib/package.json rename to packages/core/tests/deslop/fixtures/cra-monorepo-scope/packages/lib/package.json diff --git a/packages/deslop-js/tests/fixtures/cra-monorepo-scope/packages/lib/src/RootOnly.ts b/packages/core/tests/deslop/fixtures/cra-monorepo-scope/packages/lib/src/RootOnly.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/cra-monorepo-scope/packages/lib/src/RootOnly.ts rename to packages/core/tests/deslop/fixtures/cra-monorepo-scope/packages/lib/src/RootOnly.ts diff --git a/packages/deslop-js/tests/fixtures/cra-monorepo-scope/packages/lib/src/index.ts b/packages/core/tests/deslop/fixtures/cra-monorepo-scope/packages/lib/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/cra-monorepo-scope/packages/lib/src/index.ts rename to packages/core/tests/deslop/fixtures/cra-monorepo-scope/packages/lib/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/cra-rewired/package.json b/packages/core/tests/deslop/fixtures/cra-rewired/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/cra-rewired/package.json rename to packages/core/tests/deslop/fixtures/cra-rewired/package.json diff --git a/packages/deslop-js/tests/fixtures/cra-rewired/src/App.tsx b/packages/core/tests/deslop/fixtures/cra-rewired/src/App.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/cra-rewired/src/App.tsx rename to packages/core/tests/deslop/fixtures/cra-rewired/src/App.tsx diff --git a/packages/deslop-js/tests/fixtures/cra-rewired/src/components/Header.tsx b/packages/core/tests/deslop/fixtures/cra-rewired/src/components/Header.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/cra-rewired/src/components/Header.tsx rename to packages/core/tests/deslop/fixtures/cra-rewired/src/components/Header.tsx diff --git a/packages/deslop-js/tests/fixtures/cra-rewired/src/index.tsx b/packages/core/tests/deslop/fixtures/cra-rewired/src/index.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/cra-rewired/src/index.tsx rename to packages/core/tests/deslop/fixtures/cra-rewired/src/index.tsx diff --git a/packages/deslop-js/tests/fixtures/cra-rewired/src/orphan.ts b/packages/core/tests/deslop/fixtures/cra-rewired/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/cra-rewired/src/orphan.ts rename to packages/core/tests/deslop/fixtures/cra-rewired/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/cra-src-baseurl/package.json b/packages/core/tests/deslop/fixtures/cra-src-baseurl/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/cra-src-baseurl/package.json rename to packages/core/tests/deslop/fixtures/cra-src-baseurl/package.json diff --git a/packages/deslop-js/tests/fixtures/cra-src-baseurl/src/App.tsx b/packages/core/tests/deslop/fixtures/cra-src-baseurl/src/App.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/cra-src-baseurl/src/App.tsx rename to packages/core/tests/deslop/fixtures/cra-src-baseurl/src/App.tsx diff --git a/packages/deslop-js/tests/fixtures/cra-src-baseurl/src/components/Header.tsx b/packages/core/tests/deslop/fixtures/cra-src-baseurl/src/components/Header.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/cra-src-baseurl/src/components/Header.tsx rename to packages/core/tests/deslop/fixtures/cra-src-baseurl/src/components/Header.tsx diff --git a/packages/deslop-js/tests/fixtures/cra-src-baseurl/src/index.tsx b/packages/core/tests/deslop/fixtures/cra-src-baseurl/src/index.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/cra-src-baseurl/src/index.tsx rename to packages/core/tests/deslop/fixtures/cra-src-baseurl/src/index.tsx diff --git a/packages/deslop-js/tests/fixtures/cra-src-baseurl/src/orphan.ts b/packages/core/tests/deslop/fixtures/cra-src-baseurl/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/cra-src-baseurl/src/orphan.ts rename to packages/core/tests/deslop/fixtures/cra-src-baseurl/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/cross-ext-js-ts/generators.ts b/packages/core/tests/deslop/fixtures/cross-ext-js-ts/generators.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/cross-ext-js-ts/generators.ts rename to packages/core/tests/deslop/fixtures/cross-ext-js-ts/generators.ts diff --git a/packages/deslop-js/tests/fixtures/cross-ext-js-ts/orphan.ts b/packages/core/tests/deslop/fixtures/cross-ext-js-ts/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/cross-ext-js-ts/orphan.ts rename to packages/core/tests/deslop/fixtures/cross-ext-js-ts/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/cross-ext-js-ts/package.json b/packages/core/tests/deslop/fixtures/cross-ext-js-ts/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/cross-ext-js-ts/package.json rename to packages/core/tests/deslop/fixtures/cross-ext-js-ts/package.json diff --git a/packages/deslop-js/tests/fixtures/cross-ext-js-ts/plugin.ts b/packages/core/tests/deslop/fixtures/cross-ext-js-ts/plugin.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/cross-ext-js-ts/plugin.ts rename to packages/core/tests/deslop/fixtures/cross-ext-js-ts/plugin.ts diff --git a/packages/deslop-js/tests/fixtures/cross-ext-js-ts/src/utils/index.ts b/packages/core/tests/deslop/fixtures/cross-ext-js-ts/src/utils/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/cross-ext-js-ts/src/utils/index.ts rename to packages/core/tests/deslop/fixtures/cross-ext-js-ts/src/utils/index.ts diff --git a/packages/deslop-js/tests/fixtures/cross-ext-ts-tsx/package.json b/packages/core/tests/deslop/fixtures/cross-ext-ts-tsx/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/cross-ext-ts-tsx/package.json rename to packages/core/tests/deslop/fixtures/cross-ext-ts-tsx/package.json diff --git a/packages/deslop-js/tests/fixtures/cross-ext-ts-tsx/src/App.tsx b/packages/core/tests/deslop/fixtures/cross-ext-ts-tsx/src/App.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/cross-ext-ts-tsx/src/App.tsx rename to packages/core/tests/deslop/fixtures/cross-ext-ts-tsx/src/App.tsx diff --git a/packages/deslop-js/tests/fixtures/cross-ext-ts-tsx/src/components/Button.tsx b/packages/core/tests/deslop/fixtures/cross-ext-ts-tsx/src/components/Button.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/cross-ext-ts-tsx/src/components/Button.tsx rename to packages/core/tests/deslop/fixtures/cross-ext-ts-tsx/src/components/Button.tsx diff --git a/packages/deslop-js/tests/fixtures/cross-ext-ts-tsx/src/index.ts b/packages/core/tests/deslop/fixtures/cross-ext-ts-tsx/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/cross-ext-ts-tsx/src/index.ts rename to packages/core/tests/deslop/fixtures/cross-ext-ts-tsx/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/cross-ext-ts-tsx/src/orphan.ts b/packages/core/tests/deslop/fixtures/cross-ext-ts-tsx/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/cross-ext-ts-tsx/src/orphan.ts rename to packages/core/tests/deslop/fixtures/cross-ext-ts-tsx/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/cross-file-duplicate-exports-unrelated/package.json b/packages/core/tests/deslop/fixtures/cross-file-duplicate-exports-unrelated/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/cross-file-duplicate-exports-unrelated/package.json rename to packages/core/tests/deslop/fixtures/cross-file-duplicate-exports-unrelated/package.json diff --git a/packages/deslop-js/tests/fixtures/cross-file-duplicate-exports-unrelated/src/index.ts b/packages/core/tests/deslop/fixtures/cross-file-duplicate-exports-unrelated/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/cross-file-duplicate-exports-unrelated/src/index.ts rename to packages/core/tests/deslop/fixtures/cross-file-duplicate-exports-unrelated/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/cross-file-duplicate-exports-unrelated/src/routes/alpha/handler.ts b/packages/core/tests/deslop/fixtures/cross-file-duplicate-exports-unrelated/src/routes/alpha/handler.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/cross-file-duplicate-exports-unrelated/src/routes/alpha/handler.ts rename to packages/core/tests/deslop/fixtures/cross-file-duplicate-exports-unrelated/src/routes/alpha/handler.ts diff --git a/packages/deslop-js/tests/fixtures/cross-file-duplicate-exports-unrelated/src/routes/beta/handler.ts b/packages/core/tests/deslop/fixtures/cross-file-duplicate-exports-unrelated/src/routes/beta/handler.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/cross-file-duplicate-exports-unrelated/src/routes/beta/handler.ts rename to packages/core/tests/deslop/fixtures/cross-file-duplicate-exports-unrelated/src/routes/beta/handler.ts diff --git a/packages/deslop-js/tests/fixtures/cross-file-duplicate-exports/package.json b/packages/core/tests/deslop/fixtures/cross-file-duplicate-exports/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/cross-file-duplicate-exports/package.json rename to packages/core/tests/deslop/fixtures/cross-file-duplicate-exports/package.json diff --git a/packages/deslop-js/tests/fixtures/cross-file-duplicate-exports/src/alpha.ts b/packages/core/tests/deslop/fixtures/cross-file-duplicate-exports/src/alpha.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/cross-file-duplicate-exports/src/alpha.ts rename to packages/core/tests/deslop/fixtures/cross-file-duplicate-exports/src/alpha.ts diff --git a/packages/deslop-js/tests/fixtures/cross-file-duplicate-exports/src/beta.ts b/packages/core/tests/deslop/fixtures/cross-file-duplicate-exports/src/beta.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/cross-file-duplicate-exports/src/beta.ts rename to packages/core/tests/deslop/fixtures/cross-file-duplicate-exports/src/beta.ts diff --git a/packages/deslop-js/tests/fixtures/cross-file-duplicate-exports/src/gamma.ts b/packages/core/tests/deslop/fixtures/cross-file-duplicate-exports/src/gamma.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/cross-file-duplicate-exports/src/gamma.ts rename to packages/core/tests/deslop/fixtures/cross-file-duplicate-exports/src/gamma.ts diff --git a/packages/deslop-js/tests/fixtures/cross-file-duplicate-exports/src/index.ts b/packages/core/tests/deslop/fixtures/cross-file-duplicate-exports/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/cross-file-duplicate-exports/src/index.ts rename to packages/core/tests/deslop/fixtures/cross-file-duplicate-exports/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/css-tilde-import/package.json b/packages/core/tests/deslop/fixtures/css-tilde-import/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/css-tilde-import/package.json rename to packages/core/tests/deslop/fixtures/css-tilde-import/package.json diff --git a/packages/deslop-js/tests/fixtures/css-tilde-import/src/index.ts b/packages/core/tests/deslop/fixtures/css-tilde-import/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/css-tilde-import/src/index.ts rename to packages/core/tests/deslop/fixtures/css-tilde-import/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/css-tilde-import/src/styles.scss b/packages/core/tests/deslop/fixtures/css-tilde-import/src/styles.scss similarity index 100% rename from packages/deslop-js/tests/fixtures/css-tilde-import/src/styles.scss rename to packages/core/tests/deslop/fixtures/css-tilde-import/src/styles.scss diff --git a/packages/deslop-js/tests/fixtures/cycle-chain/package.json b/packages/core/tests/deslop/fixtures/cycle-chain/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/cycle-chain/package.json rename to packages/core/tests/deslop/fixtures/cycle-chain/package.json diff --git a/packages/deslop-js/tests/fixtures/cycle-chain/src/a.ts b/packages/core/tests/deslop/fixtures/cycle-chain/src/a.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/cycle-chain/src/a.ts rename to packages/core/tests/deslop/fixtures/cycle-chain/src/a.ts diff --git a/packages/deslop-js/tests/fixtures/cycle-chain/src/b.ts b/packages/core/tests/deslop/fixtures/cycle-chain/src/b.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/cycle-chain/src/b.ts rename to packages/core/tests/deslop/fixtures/cycle-chain/src/b.ts diff --git a/packages/deslop-js/tests/fixtures/cycle-chain/src/c.ts b/packages/core/tests/deslop/fixtures/cycle-chain/src/c.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/cycle-chain/src/c.ts rename to packages/core/tests/deslop/fixtures/cycle-chain/src/c.ts diff --git a/packages/deslop-js/tests/fixtures/cycle-chain/src/index.ts b/packages/core/tests/deslop/fixtures/cycle-chain/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/cycle-chain/src/index.ts rename to packages/core/tests/deslop/fixtures/cycle-chain/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/cycle-none/package.json b/packages/core/tests/deslop/fixtures/cycle-none/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/cycle-none/package.json rename to packages/core/tests/deslop/fixtures/cycle-none/package.json diff --git a/packages/deslop-js/tests/fixtures/cycle-none/src/helper.ts b/packages/core/tests/deslop/fixtures/cycle-none/src/helper.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/cycle-none/src/helper.ts rename to packages/core/tests/deslop/fixtures/cycle-none/src/helper.ts diff --git a/packages/deslop-js/tests/fixtures/cycle-none/src/index.ts b/packages/core/tests/deslop/fixtures/cycle-none/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/cycle-none/src/index.ts rename to packages/core/tests/deslop/fixtures/cycle-none/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/cycle-none/src/util.ts b/packages/core/tests/deslop/fixtures/cycle-none/src/util.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/cycle-none/src/util.ts rename to packages/core/tests/deslop/fixtures/cycle-none/src/util.ts diff --git a/packages/deslop-js/tests/fixtures/cycle-reexport/package.json b/packages/core/tests/deslop/fixtures/cycle-reexport/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/cycle-reexport/package.json rename to packages/core/tests/deslop/fixtures/cycle-reexport/package.json diff --git a/packages/deslop-js/tests/fixtures/cycle-reexport/src/index.ts b/packages/core/tests/deslop/fixtures/cycle-reexport/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/cycle-reexport/src/index.ts rename to packages/core/tests/deslop/fixtures/cycle-reexport/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/cycle-reexport/src/module-a.ts b/packages/core/tests/deslop/fixtures/cycle-reexport/src/module-a.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/cycle-reexport/src/module-a.ts rename to packages/core/tests/deslop/fixtures/cycle-reexport/src/module-a.ts diff --git a/packages/deslop-js/tests/fixtures/cycle-reexport/src/module-b.ts b/packages/core/tests/deslop/fixtures/cycle-reexport/src/module-b.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/cycle-reexport/src/module-b.ts rename to packages/core/tests/deslop/fixtures/cycle-reexport/src/module-b.ts diff --git a/packages/deslop-js/tests/fixtures/cycle-simple/package.json b/packages/core/tests/deslop/fixtures/cycle-simple/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/cycle-simple/package.json rename to packages/core/tests/deslop/fixtures/cycle-simple/package.json diff --git a/packages/deslop-js/tests/fixtures/cycle-simple/src/a.ts b/packages/core/tests/deslop/fixtures/cycle-simple/src/a.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/cycle-simple/src/a.ts rename to packages/core/tests/deslop/fixtures/cycle-simple/src/a.ts diff --git a/packages/deslop-js/tests/fixtures/cycle-simple/src/b.ts b/packages/core/tests/deslop/fixtures/cycle-simple/src/b.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/cycle-simple/src/b.ts rename to packages/core/tests/deslop/fixtures/cycle-simple/src/b.ts diff --git a/packages/deslop-js/tests/fixtures/cycle-simple/src/index.ts b/packages/core/tests/deslop/fixtures/cycle-simple/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/cycle-simple/src/index.ts rename to packages/core/tests/deslop/fixtures/cycle-simple/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/cycle-type-only/package.json b/packages/core/tests/deslop/fixtures/cycle-type-only/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/cycle-type-only/package.json rename to packages/core/tests/deslop/fixtures/cycle-type-only/package.json diff --git a/packages/deslop-js/tests/fixtures/cycle-type-only/src/a.ts b/packages/core/tests/deslop/fixtures/cycle-type-only/src/a.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/cycle-type-only/src/a.ts rename to packages/core/tests/deslop/fixtures/cycle-type-only/src/a.ts diff --git a/packages/deslop-js/tests/fixtures/cycle-type-only/src/b.ts b/packages/core/tests/deslop/fixtures/cycle-type-only/src/b.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/cycle-type-only/src/b.ts rename to packages/core/tests/deslop/fixtures/cycle-type-only/src/b.ts diff --git a/packages/deslop-js/tests/fixtures/cycle-type-only/src/index.ts b/packages/core/tests/deslop/fixtures/cycle-type-only/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/cycle-type-only/src/index.ts rename to packages/core/tests/deslop/fixtures/cycle-type-only/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/cycle-with-orphans/index.ts b/packages/core/tests/deslop/fixtures/cycle-with-orphans/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/cycle-with-orphans/index.ts rename to packages/core/tests/deslop/fixtures/cycle-with-orphans/index.ts diff --git a/packages/deslop-js/tests/fixtures/cycle-with-orphans/module-a.ts b/packages/core/tests/deslop/fixtures/cycle-with-orphans/module-a.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/cycle-with-orphans/module-a.ts rename to packages/core/tests/deslop/fixtures/cycle-with-orphans/module-a.ts diff --git a/packages/deslop-js/tests/fixtures/cycle-with-orphans/module-b.ts b/packages/core/tests/deslop/fixtures/cycle-with-orphans/module-b.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/cycle-with-orphans/module-b.ts rename to packages/core/tests/deslop/fixtures/cycle-with-orphans/module-b.ts diff --git a/packages/deslop-js/tests/fixtures/cycle-with-orphans/orphan.ts b/packages/core/tests/deslop/fixtures/cycle-with-orphans/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/cycle-with-orphans/orphan.ts rename to packages/core/tests/deslop/fixtures/cycle-with-orphans/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/cycle-with-orphans/package.json b/packages/core/tests/deslop/fixtures/cycle-with-orphans/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/cycle-with-orphans/package.json rename to packages/core/tests/deslop/fixtures/cycle-with-orphans/package.json diff --git a/packages/deslop-js/tests/fixtures/deep-reexport-chain/consumer.ts b/packages/core/tests/deslop/fixtures/deep-reexport-chain/consumer.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/deep-reexport-chain/consumer.ts rename to packages/core/tests/deslop/fixtures/deep-reexport-chain/consumer.ts diff --git a/packages/deslop-js/tests/fixtures/deep-reexport-chain/index.ts b/packages/core/tests/deslop/fixtures/deep-reexport-chain/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/deep-reexport-chain/index.ts rename to packages/core/tests/deslop/fixtures/deep-reexport-chain/index.ts diff --git a/packages/deslop-js/tests/fixtures/deep-reexport-chain/level-1.ts b/packages/core/tests/deslop/fixtures/deep-reexport-chain/level-1.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/deep-reexport-chain/level-1.ts rename to packages/core/tests/deslop/fixtures/deep-reexport-chain/level-1.ts diff --git a/packages/deslop-js/tests/fixtures/deep-reexport-chain/level-2.ts b/packages/core/tests/deslop/fixtures/deep-reexport-chain/level-2.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/deep-reexport-chain/level-2.ts rename to packages/core/tests/deslop/fixtures/deep-reexport-chain/level-2.ts diff --git a/packages/deslop-js/tests/fixtures/deep-reexport-chain/level-3.ts b/packages/core/tests/deslop/fixtures/deep-reexport-chain/level-3.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/deep-reexport-chain/level-3.ts rename to packages/core/tests/deslop/fixtures/deep-reexport-chain/level-3.ts diff --git a/packages/deslop-js/tests/fixtures/deep-reexport-chain/package.json b/packages/core/tests/deslop/fixtures/deep-reexport-chain/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/deep-reexport-chain/package.json rename to packages/core/tests/deslop/fixtures/deep-reexport-chain/package.json diff --git a/packages/deslop-js/tests/fixtures/deep-reexport-tracking/package.json b/packages/core/tests/deslop/fixtures/deep-reexport-tracking/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/deep-reexport-tracking/package.json rename to packages/core/tests/deslop/fixtures/deep-reexport-tracking/package.json diff --git a/packages/deslop-js/tests/fixtures/deep-reexport-tracking/src/barrel-mid.ts b/packages/core/tests/deslop/fixtures/deep-reexport-tracking/src/barrel-mid.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/deep-reexport-tracking/src/barrel-mid.ts rename to packages/core/tests/deslop/fixtures/deep-reexport-tracking/src/barrel-mid.ts diff --git a/packages/deslop-js/tests/fixtures/deep-reexport-tracking/src/barrel-top.ts b/packages/core/tests/deslop/fixtures/deep-reexport-tracking/src/barrel-top.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/deep-reexport-tracking/src/barrel-top.ts rename to packages/core/tests/deslop/fixtures/deep-reexport-tracking/src/barrel-top.ts diff --git a/packages/deslop-js/tests/fixtures/deep-reexport-tracking/src/index.ts b/packages/core/tests/deslop/fixtures/deep-reexport-tracking/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/deep-reexport-tracking/src/index.ts rename to packages/core/tests/deslop/fixtures/deep-reexport-tracking/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/deep-reexport-tracking/src/orphan.ts b/packages/core/tests/deslop/fixtures/deep-reexport-tracking/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/deep-reexport-tracking/src/orphan.ts rename to packages/core/tests/deslop/fixtures/deep-reexport-tracking/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/deep-reexport-tracking/src/unused-source.ts b/packages/core/tests/deslop/fixtures/deep-reexport-tracking/src/unused-source.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/deep-reexport-tracking/src/unused-source.ts rename to packages/core/tests/deslop/fixtures/deep-reexport-tracking/src/unused-source.ts diff --git a/packages/deslop-js/tests/fixtures/deep-reexport-tracking/src/used-source.ts b/packages/core/tests/deslop/fixtures/deep-reexport-tracking/src/used-source.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/deep-reexport-tracking/src/used-source.ts rename to packages/core/tests/deslop/fixtures/deep-reexport-tracking/src/used-source.ts diff --git a/packages/deslop-js/tests/fixtures/default-import-named-export/package.json b/packages/core/tests/deslop/fixtures/default-import-named-export/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/default-import-named-export/package.json rename to packages/core/tests/deslop/fixtures/default-import-named-export/package.json diff --git a/packages/deslop-js/tests/fixtures/default-import-named-export/src/index.ts b/packages/core/tests/deslop/fixtures/default-import-named-export/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/default-import-named-export/src/index.ts rename to packages/core/tests/deslop/fixtures/default-import-named-export/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/default-import-named-export/src/orphan.ts b/packages/core/tests/deslop/fixtures/default-import-named-export/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/default-import-named-export/src/orphan.ts rename to packages/core/tests/deslop/fixtures/default-import-named-export/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/default-import-named-export/src/settings-panel.test.tsx b/packages/core/tests/deslop/fixtures/default-import-named-export/src/settings-panel.test.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/default-import-named-export/src/settings-panel.test.tsx rename to packages/core/tests/deslop/fixtures/default-import-named-export/src/settings-panel.test.tsx diff --git a/packages/deslop-js/tests/fixtures/default-import-named-export/src/settings-panel.tsx b/packages/core/tests/deslop/fixtures/default-import-named-export/src/settings-panel.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/default-import-named-export/src/settings-panel.tsx rename to packages/core/tests/deslop/fixtures/default-import-named-export/src/settings-panel.tsx diff --git a/packages/deslop-js/tests/fixtures/dependency-tooling/.eslintrc.json b/packages/core/tests/deslop/fixtures/dependency-tooling/.eslintrc.json similarity index 100% rename from packages/deslop-js/tests/fixtures/dependency-tooling/.eslintrc.json rename to packages/core/tests/deslop/fixtures/dependency-tooling/.eslintrc.json diff --git a/packages/deslop-js/tests/fixtures/dependency-tooling/jest.config.js b/packages/core/tests/deslop/fixtures/dependency-tooling/jest.config.js similarity index 100% rename from packages/deslop-js/tests/fixtures/dependency-tooling/jest.config.js rename to packages/core/tests/deslop/fixtures/dependency-tooling/jest.config.js diff --git a/packages/deslop-js/tests/fixtures/dependency-tooling/package.json b/packages/core/tests/deslop/fixtures/dependency-tooling/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/dependency-tooling/package.json rename to packages/core/tests/deslop/fixtures/dependency-tooling/package.json diff --git a/packages/deslop-js/tests/fixtures/dependency-tooling/project.json b/packages/core/tests/deslop/fixtures/dependency-tooling/project.json similarity index 100% rename from packages/deslop-js/tests/fixtures/dependency-tooling/project.json rename to packages/core/tests/deslop/fixtures/dependency-tooling/project.json diff --git a/packages/deslop-js/tests/fixtures/dependency-tooling/src/index.ts b/packages/core/tests/deslop/fixtures/dependency-tooling/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/dependency-tooling/src/index.ts rename to packages/core/tests/deslop/fixtures/dependency-tooling/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/docusaurus-docs/blog/first-post.mdx b/packages/core/tests/deslop/fixtures/docusaurus-docs/blog/first-post.mdx similarity index 100% rename from packages/deslop-js/tests/fixtures/docusaurus-docs/blog/first-post.mdx rename to packages/core/tests/deslop/fixtures/docusaurus-docs/blog/first-post.mdx diff --git a/packages/deslop-js/tests/fixtures/docusaurus-docs/docs/intro.mdx b/packages/core/tests/deslop/fixtures/docusaurus-docs/docs/intro.mdx similarity index 100% rename from packages/deslop-js/tests/fixtures/docusaurus-docs/docs/intro.mdx rename to packages/core/tests/deslop/fixtures/docusaurus-docs/docs/intro.mdx diff --git a/packages/deslop-js/tests/fixtures/docusaurus-docs/docusaurus.config.ts b/packages/core/tests/deslop/fixtures/docusaurus-docs/docusaurus.config.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/docusaurus-docs/docusaurus.config.ts rename to packages/core/tests/deslop/fixtures/docusaurus-docs/docusaurus.config.ts diff --git a/packages/deslop-js/tests/fixtures/docusaurus-docs/package.json b/packages/core/tests/deslop/fixtures/docusaurus-docs/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/docusaurus-docs/package.json rename to packages/core/tests/deslop/fixtures/docusaurus-docs/package.json diff --git a/packages/deslop-js/tests/fixtures/docusaurus-docs/src/components/orphan.tsx b/packages/core/tests/deslop/fixtures/docusaurus-docs/src/components/orphan.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/docusaurus-docs/src/components/orphan.tsx rename to packages/core/tests/deslop/fixtures/docusaurus-docs/src/components/orphan.tsx diff --git a/packages/deslop-js/tests/fixtures/docusaurus-docs/src/components/used.tsx b/packages/core/tests/deslop/fixtures/docusaurus-docs/src/components/used.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/docusaurus-docs/src/components/used.tsx rename to packages/core/tests/deslop/fixtures/docusaurus-docs/src/components/used.tsx diff --git a/packages/deslop-js/tests/fixtures/docusaurus-docs/src/pages/index.tsx b/packages/core/tests/deslop/fixtures/docusaurus-docs/src/pages/index.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/docusaurus-docs/src/pages/index.tsx rename to packages/core/tests/deslop/fixtures/docusaurus-docs/src/pages/index.tsx diff --git a/packages/deslop-js/tests/fixtures/dry-patterns-syntactic/package.json b/packages/core/tests/deslop/fixtures/dry-patterns-syntactic/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/dry-patterns-syntactic/package.json rename to packages/core/tests/deslop/fixtures/dry-patterns-syntactic/package.json diff --git a/packages/deslop-js/tests/fixtures/dry-patterns-syntactic/src/duplicate-imports.ts b/packages/core/tests/deslop/fixtures/dry-patterns-syntactic/src/duplicate-imports.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/dry-patterns-syntactic/src/duplicate-imports.ts rename to packages/core/tests/deslop/fixtures/dry-patterns-syntactic/src/duplicate-imports.ts diff --git a/packages/deslop-js/tests/fixtures/dry-patterns-syntactic/src/duplicate-type-other/types.ts b/packages/core/tests/deslop/fixtures/dry-patterns-syntactic/src/duplicate-type-other/types.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/dry-patterns-syntactic/src/duplicate-type-other/types.ts rename to packages/core/tests/deslop/fixtures/dry-patterns-syntactic/src/duplicate-type-other/types.ts diff --git a/packages/deslop-js/tests/fixtures/dry-patterns-syntactic/src/helpers.ts b/packages/core/tests/deslop/fixtures/dry-patterns-syntactic/src/helpers.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/dry-patterns-syntactic/src/helpers.ts rename to packages/core/tests/deslop/fixtures/dry-patterns-syntactic/src/helpers.ts diff --git a/packages/deslop-js/tests/fixtures/dry-patterns-syntactic/src/index.ts b/packages/core/tests/deslop/fixtures/dry-patterns-syntactic/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/dry-patterns-syntactic/src/index.ts rename to packages/core/tests/deslop/fixtures/dry-patterns-syntactic/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/dry-patterns-syntactic/src/other.ts b/packages/core/tests/deslop/fixtures/dry-patterns-syntactic/src/other.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/dry-patterns-syntactic/src/other.ts rename to packages/core/tests/deslop/fixtures/dry-patterns-syntactic/src/other.ts diff --git a/packages/deslop-js/tests/fixtures/dry-patterns-syntactic/src/types.ts b/packages/core/tests/deslop/fixtures/dry-patterns-syntactic/src/types.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/dry-patterns-syntactic/src/types.ts rename to packages/core/tests/deslop/fixtures/dry-patterns-syntactic/src/types.ts diff --git a/packages/deslop-js/tests/fixtures/dry-patterns-syntactic/src/wrappers.ts b/packages/core/tests/deslop/fixtures/dry-patterns-syntactic/src/wrappers.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/dry-patterns-syntactic/src/wrappers.ts rename to packages/core/tests/deslop/fixtures/dry-patterns-syntactic/src/wrappers.ts diff --git a/packages/deslop-js/tests/fixtures/dts-imports/orphan.ts b/packages/core/tests/deslop/fixtures/dts-imports/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/dts-imports/orphan.ts rename to packages/core/tests/deslop/fixtures/dts-imports/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/dts-imports/package.json b/packages/core/tests/deslop/fixtures/dts-imports/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/dts-imports/package.json rename to packages/core/tests/deslop/fixtures/dts-imports/package.json diff --git a/packages/deslop-js/tests/fixtures/dts-imports/src/helper.ts b/packages/core/tests/deslop/fixtures/dts-imports/src/helper.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/dts-imports/src/helper.ts rename to packages/core/tests/deslop/fixtures/dts-imports/src/helper.ts diff --git a/packages/deslop-js/tests/fixtures/dts-imports/src/index.ts b/packages/core/tests/deslop/fixtures/dts-imports/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/dts-imports/src/index.ts rename to packages/core/tests/deslop/fixtures/dts-imports/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/dts-imports/src/types.d.ts b/packages/core/tests/deslop/fixtures/dts-imports/src/types.d.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/dts-imports/src/types.d.ts rename to packages/core/tests/deslop/fixtures/dts-imports/src/types.d.ts diff --git a/packages/deslop-js/tests/fixtures/duplicate-blocks-basic/package.json b/packages/core/tests/deslop/fixtures/duplicate-blocks-basic/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/duplicate-blocks-basic/package.json rename to packages/core/tests/deslop/fixtures/duplicate-blocks-basic/package.json diff --git a/packages/deslop-js/tests/fixtures/duplicate-blocks-basic/src/index.ts b/packages/core/tests/deslop/fixtures/duplicate-blocks-basic/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/duplicate-blocks-basic/src/index.ts rename to packages/core/tests/deslop/fixtures/duplicate-blocks-basic/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/duplicate-blocks-basic/src/invoices.ts b/packages/core/tests/deslop/fixtures/duplicate-blocks-basic/src/invoices.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/duplicate-blocks-basic/src/invoices.ts rename to packages/core/tests/deslop/fixtures/duplicate-blocks-basic/src/invoices.ts diff --git a/packages/deslop-js/tests/fixtures/duplicate-blocks-basic/src/orders.ts b/packages/core/tests/deslop/fixtures/duplicate-blocks-basic/src/orders.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/duplicate-blocks-basic/src/orders.ts rename to packages/core/tests/deslop/fixtures/duplicate-blocks-basic/src/orders.ts diff --git a/packages/deslop-js/tests/fixtures/duplicate-constants-unit-mismatch/package.json b/packages/core/tests/deslop/fixtures/duplicate-constants-unit-mismatch/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/duplicate-constants-unit-mismatch/package.json rename to packages/core/tests/deslop/fixtures/duplicate-constants-unit-mismatch/package.json diff --git a/packages/deslop-js/tests/fixtures/duplicate-constants-unit-mismatch/src/feature-cache.ts b/packages/core/tests/deslop/fixtures/duplicate-constants-unit-mismatch/src/feature-cache.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/duplicate-constants-unit-mismatch/src/feature-cache.ts rename to packages/core/tests/deslop/fixtures/duplicate-constants-unit-mismatch/src/feature-cache.ts diff --git a/packages/deslop-js/tests/fixtures/duplicate-constants-unit-mismatch/src/feature-pixels.ts b/packages/core/tests/deslop/fixtures/duplicate-constants-unit-mismatch/src/feature-pixels.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/duplicate-constants-unit-mismatch/src/feature-pixels.ts rename to packages/core/tests/deslop/fixtures/duplicate-constants-unit-mismatch/src/feature-pixels.ts diff --git a/packages/deslop-js/tests/fixtures/duplicate-constants-unit-mismatch/src/feature-poll.ts b/packages/core/tests/deslop/fixtures/duplicate-constants-unit-mismatch/src/feature-poll.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/duplicate-constants-unit-mismatch/src/feature-poll.ts rename to packages/core/tests/deslop/fixtures/duplicate-constants-unit-mismatch/src/feature-poll.ts diff --git a/packages/deslop-js/tests/fixtures/duplicate-constants-unit-mismatch/src/feature-reconnect.ts b/packages/core/tests/deslop/fixtures/duplicate-constants-unit-mismatch/src/feature-reconnect.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/duplicate-constants-unit-mismatch/src/feature-reconnect.ts rename to packages/core/tests/deslop/fixtures/duplicate-constants-unit-mismatch/src/feature-reconnect.ts diff --git a/packages/deslop-js/tests/fixtures/duplicate-constants-unit-mismatch/src/feature-time.ts b/packages/core/tests/deslop/fixtures/duplicate-constants-unit-mismatch/src/feature-time.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/duplicate-constants-unit-mismatch/src/feature-time.ts rename to packages/core/tests/deslop/fixtures/duplicate-constants-unit-mismatch/src/feature-time.ts diff --git a/packages/deslop-js/tests/fixtures/duplicate-constants-unit-mismatch/src/feature-tokens.ts b/packages/core/tests/deslop/fixtures/duplicate-constants-unit-mismatch/src/feature-tokens.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/duplicate-constants-unit-mismatch/src/feature-tokens.ts rename to packages/core/tests/deslop/fixtures/duplicate-constants-unit-mismatch/src/feature-tokens.ts diff --git a/packages/deslop-js/tests/fixtures/duplicate-constants-unit-mismatch/src/index.ts b/packages/core/tests/deslop/fixtures/duplicate-constants-unit-mismatch/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/duplicate-constants-unit-mismatch/src/index.ts rename to packages/core/tests/deslop/fixtures/duplicate-constants-unit-mismatch/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/duplicate-constants/package.json b/packages/core/tests/deslop/fixtures/duplicate-constants/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/duplicate-constants/package.json rename to packages/core/tests/deslop/fixtures/duplicate-constants/package.json diff --git a/packages/deslop-js/tests/fixtures/duplicate-constants/src/feature-one.ts b/packages/core/tests/deslop/fixtures/duplicate-constants/src/feature-one.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/duplicate-constants/src/feature-one.ts rename to packages/core/tests/deslop/fixtures/duplicate-constants/src/feature-one.ts diff --git a/packages/deslop-js/tests/fixtures/duplicate-constants/src/feature-three.ts b/packages/core/tests/deslop/fixtures/duplicate-constants/src/feature-three.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/duplicate-constants/src/feature-three.ts rename to packages/core/tests/deslop/fixtures/duplicate-constants/src/feature-three.ts diff --git a/packages/deslop-js/tests/fixtures/duplicate-constants/src/feature-two.ts b/packages/core/tests/deslop/fixtures/duplicate-constants/src/feature-two.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/duplicate-constants/src/feature-two.ts rename to packages/core/tests/deslop/fixtures/duplicate-constants/src/feature-two.ts diff --git a/packages/deslop-js/tests/fixtures/duplicate-constants/src/index.ts b/packages/core/tests/deslop/fixtures/duplicate-constants/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/duplicate-constants/src/index.ts rename to packages/core/tests/deslop/fixtures/duplicate-constants/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/duplicate-exports-barrel/package.json b/packages/core/tests/deslop/fixtures/duplicate-exports-barrel/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/duplicate-exports-barrel/package.json rename to packages/core/tests/deslop/fixtures/duplicate-exports-barrel/package.json diff --git a/packages/deslop-js/tests/fixtures/duplicate-exports-barrel/src/alpha.ts b/packages/core/tests/deslop/fixtures/duplicate-exports-barrel/src/alpha.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/duplicate-exports-barrel/src/alpha.ts rename to packages/core/tests/deslop/fixtures/duplicate-exports-barrel/src/alpha.ts diff --git a/packages/deslop-js/tests/fixtures/duplicate-exports-barrel/src/barrel.ts b/packages/core/tests/deslop/fixtures/duplicate-exports-barrel/src/barrel.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/duplicate-exports-barrel/src/barrel.ts rename to packages/core/tests/deslop/fixtures/duplicate-exports-barrel/src/barrel.ts diff --git a/packages/deslop-js/tests/fixtures/duplicate-exports-barrel/src/beta.ts b/packages/core/tests/deslop/fixtures/duplicate-exports-barrel/src/beta.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/duplicate-exports-barrel/src/beta.ts rename to packages/core/tests/deslop/fixtures/duplicate-exports-barrel/src/beta.ts diff --git a/packages/deslop-js/tests/fixtures/duplicate-exports-barrel/src/index.ts b/packages/core/tests/deslop/fixtures/duplicate-exports-barrel/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/duplicate-exports-barrel/src/index.ts rename to packages/core/tests/deslop/fixtures/duplicate-exports-barrel/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/duplicate-import-type-value/package.json b/packages/core/tests/deslop/fixtures/duplicate-import-type-value/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/duplicate-import-type-value/package.json rename to packages/core/tests/deslop/fixtures/duplicate-import-type-value/package.json diff --git a/packages/deslop-js/tests/fixtures/duplicate-import-type-value/src/api.ts b/packages/core/tests/deslop/fixtures/duplicate-import-type-value/src/api.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/duplicate-import-type-value/src/api.ts rename to packages/core/tests/deslop/fixtures/duplicate-import-type-value/src/api.ts diff --git a/packages/deslop-js/tests/fixtures/duplicate-import-type-value/src/consumer-split.ts b/packages/core/tests/deslop/fixtures/duplicate-import-type-value/src/consumer-split.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/duplicate-import-type-value/src/consumer-split.ts rename to packages/core/tests/deslop/fixtures/duplicate-import-type-value/src/consumer-split.ts diff --git a/packages/deslop-js/tests/fixtures/duplicate-inline-types/package.json b/packages/core/tests/deslop/fixtures/duplicate-inline-types/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/duplicate-inline-types/package.json rename to packages/core/tests/deslop/fixtures/duplicate-inline-types/package.json diff --git a/packages/deslop-js/tests/fixtures/duplicate-inline-types/src/elsewhere.ts b/packages/core/tests/deslop/fixtures/duplicate-inline-types/src/elsewhere.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/duplicate-inline-types/src/elsewhere.ts rename to packages/core/tests/deslop/fixtures/duplicate-inline-types/src/elsewhere.ts diff --git a/packages/deslop-js/tests/fixtures/duplicate-inline-types/src/index.ts b/packages/core/tests/deslop/fixtures/duplicate-inline-types/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/duplicate-inline-types/src/index.ts rename to packages/core/tests/deslop/fixtures/duplicate-inline-types/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/duplicate-inline-types/src/operations.ts b/packages/core/tests/deslop/fixtures/duplicate-inline-types/src/operations.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/duplicate-inline-types/src/operations.ts rename to packages/core/tests/deslop/fixtures/duplicate-inline-types/src/operations.ts diff --git a/packages/deslop-js/tests/fixtures/electron-app/orphan.ts b/packages/core/tests/deslop/fixtures/electron-app/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/electron-app/orphan.ts rename to packages/core/tests/deslop/fixtures/electron-app/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/electron-app/package.json b/packages/core/tests/deslop/fixtures/electron-app/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/electron-app/package.json rename to packages/core/tests/deslop/fixtures/electron-app/package.json diff --git a/packages/deslop-js/tests/fixtures/electron-app/src/main/index.ts b/packages/core/tests/deslop/fixtures/electron-app/src/main/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/electron-app/src/main/index.ts rename to packages/core/tests/deslop/fixtures/electron-app/src/main/index.ts diff --git a/packages/deslop-js/tests/fixtures/electron-app/src/main/window.ts b/packages/core/tests/deslop/fixtures/electron-app/src/main/window.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/electron-app/src/main/window.ts rename to packages/core/tests/deslop/fixtures/electron-app/src/main/window.ts diff --git a/packages/deslop-js/tests/fixtures/electron-app/src/preload.ts b/packages/core/tests/deslop/fixtures/electron-app/src/preload.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/electron-app/src/preload.ts rename to packages/core/tests/deslop/fixtures/electron-app/src/preload.ts diff --git a/packages/deslop-js/tests/fixtures/electron-app/src/preload/preload.ts b/packages/core/tests/deslop/fixtures/electron-app/src/preload/preload.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/electron-app/src/preload/preload.ts rename to packages/core/tests/deslop/fixtures/electron-app/src/preload/preload.ts diff --git a/packages/deslop-js/tests/fixtures/electron-builder-files/package.json b/packages/core/tests/deslop/fixtures/electron-builder-files/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/electron-builder-files/package.json rename to packages/core/tests/deslop/fixtures/electron-builder-files/package.json diff --git a/packages/deslop-js/tests/fixtures/electron-builder-files/src/main.ts b/packages/core/tests/deslop/fixtures/electron-builder-files/src/main.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/electron-builder-files/src/main.ts rename to packages/core/tests/deslop/fixtures/electron-builder-files/src/main.ts diff --git a/packages/deslop-js/tests/fixtures/electron-builder-files/src/orphan.ts b/packages/core/tests/deslop/fixtures/electron-builder-files/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/electron-builder-files/src/orphan.ts rename to packages/core/tests/deslop/fixtures/electron-builder-files/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/electron-builder-files/src/preload.ts b/packages/core/tests/deslop/fixtures/electron-builder-files/src/preload.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/electron-builder-files/src/preload.ts rename to packages/core/tests/deslop/fixtures/electron-builder-files/src/preload.ts diff --git a/packages/deslop-js/tests/fixtures/electron-builder-files/src/worker.ts b/packages/core/tests/deslop/fixtures/electron-builder-files/src/worker.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/electron-builder-files/src/worker.ts rename to packages/core/tests/deslop/fixtures/electron-builder-files/src/worker.ts diff --git a/packages/deslop-js/tests/fixtures/electron-detection/package.json b/packages/core/tests/deslop/fixtures/electron-detection/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/electron-detection/package.json rename to packages/core/tests/deslop/fixtures/electron-detection/package.json diff --git a/packages/deslop-js/tests/fixtures/electron-detection/src/main.ts b/packages/core/tests/deslop/fixtures/electron-detection/src/main.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/electron-detection/src/main.ts rename to packages/core/tests/deslop/fixtures/electron-detection/src/main.ts diff --git a/packages/deslop-js/tests/fixtures/electron-detection/src/orphan.ts b/packages/core/tests/deslop/fixtures/electron-detection/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/electron-detection/src/orphan.ts rename to packages/core/tests/deslop/fixtures/electron-detection/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/electron-detection/src/preload/index.ts b/packages/core/tests/deslop/fixtures/electron-detection/src/preload/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/electron-detection/src/preload/index.ts rename to packages/core/tests/deslop/fixtures/electron-detection/src/preload/index.ts diff --git a/packages/deslop-js/tests/fixtures/electron-detection/src/window.ts b/packages/core/tests/deslop/fixtures/electron-detection/src/window.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/electron-detection/src/window.ts rename to packages/core/tests/deslop/fixtures/electron-detection/src/window.ts diff --git a/packages/deslop-js/tests/fixtures/electron-entries/package.json b/packages/core/tests/deslop/fixtures/electron-entries/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/electron-entries/package.json rename to packages/core/tests/deslop/fixtures/electron-entries/package.json diff --git a/packages/deslop-js/tests/fixtures/electron-entries/src/app.ts b/packages/core/tests/deslop/fixtures/electron-entries/src/app.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/electron-entries/src/app.ts rename to packages/core/tests/deslop/fixtures/electron-entries/src/app.ts diff --git a/packages/deslop-js/tests/fixtures/electron-entries/src/main.ts b/packages/core/tests/deslop/fixtures/electron-entries/src/main.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/electron-entries/src/main.ts rename to packages/core/tests/deslop/fixtures/electron-entries/src/main.ts diff --git a/packages/deslop-js/tests/fixtures/electron-entries/src/orphan.ts b/packages/core/tests/deslop/fixtures/electron-entries/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/electron-entries/src/orphan.ts rename to packages/core/tests/deslop/fixtures/electron-entries/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/electron-entries/src/preload/bridge.ts b/packages/core/tests/deslop/fixtures/electron-entries/src/preload/bridge.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/electron-entries/src/preload/bridge.ts rename to packages/core/tests/deslop/fixtures/electron-entries/src/preload/bridge.ts diff --git a/packages/deslop-js/tests/fixtures/electron-entries/src/preload/index.ts b/packages/core/tests/deslop/fixtures/electron-entries/src/preload/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/electron-entries/src/preload/index.ts rename to packages/core/tests/deslop/fixtures/electron-entries/src/preload/index.ts diff --git a/packages/deslop-js/tests/fixtures/empty-and-binary-files/package.json b/packages/core/tests/deslop/fixtures/empty-and-binary-files/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/empty-and-binary-files/package.json rename to packages/core/tests/deslop/fixtures/empty-and-binary-files/package.json diff --git a/packages/deslop-js/tests/fixtures/empty-and-binary-files/src/binary-file.ts b/packages/core/tests/deslop/fixtures/empty-and-binary-files/src/binary-file.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/empty-and-binary-files/src/binary-file.ts rename to packages/core/tests/deslop/fixtures/empty-and-binary-files/src/binary-file.ts diff --git a/packages/deslop-js/tests/fixtures/empty-and-binary-files/src/empty-file.ts b/packages/core/tests/deslop/fixtures/empty-and-binary-files/src/empty-file.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/empty-and-binary-files/src/empty-file.ts rename to packages/core/tests/deslop/fixtures/empty-and-binary-files/src/empty-file.ts diff --git a/packages/deslop-js/tests/fixtures/empty-and-binary-files/src/index.ts b/packages/core/tests/deslop/fixtures/empty-and-binary-files/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/empty-and-binary-files/src/index.ts rename to packages/core/tests/deslop/fixtures/empty-and-binary-files/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/empty-and-binary-files/src/minified-bundle.js b/packages/core/tests/deslop/fixtures/empty-and-binary-files/src/minified-bundle.js similarity index 100% rename from packages/deslop-js/tests/fixtures/empty-and-binary-files/src/minified-bundle.js rename to packages/core/tests/deslop/fixtures/empty-and-binary-files/src/minified-bundle.js diff --git a/packages/deslop-js/tests/fixtures/entry-validation/package.json b/packages/core/tests/deslop/fixtures/entry-validation/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/entry-validation/package.json rename to packages/core/tests/deslop/fixtures/entry-validation/package.json diff --git a/packages/deslop-js/tests/fixtures/entry-validation/src/consumer.ts b/packages/core/tests/deslop/fixtures/entry-validation/src/consumer.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/entry-validation/src/consumer.ts rename to packages/core/tests/deslop/fixtures/entry-validation/src/consumer.ts diff --git a/packages/deslop-js/tests/fixtures/entry-validation/src/index.ts b/packages/core/tests/deslop/fixtures/entry-validation/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/entry-validation/src/index.ts rename to packages/core/tests/deslop/fixtures/entry-validation/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/enum-export/index.ts b/packages/core/tests/deslop/fixtures/enum-export/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/enum-export/index.ts rename to packages/core/tests/deslop/fixtures/enum-export/index.ts diff --git a/packages/deslop-js/tests/fixtures/enum-export/package.json b/packages/core/tests/deslop/fixtures/enum-export/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/enum-export/package.json rename to packages/core/tests/deslop/fixtures/enum-export/package.json diff --git a/packages/deslop-js/tests/fixtures/enum-export/status.ts b/packages/core/tests/deslop/fixtures/enum-export/status.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/enum-export/status.ts rename to packages/core/tests/deslop/fixtures/enum-export/status.ts diff --git a/packages/deslop-js/tests/fixtures/env-wrapper/orphan.js b/packages/core/tests/deslop/fixtures/env-wrapper/orphan.js similarity index 100% rename from packages/deslop-js/tests/fixtures/env-wrapper/orphan.js rename to packages/core/tests/deslop/fixtures/env-wrapper/orphan.js diff --git a/packages/deslop-js/tests/fixtures/env-wrapper/package.json b/packages/core/tests/deslop/fixtures/env-wrapper/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/env-wrapper/package.json rename to packages/core/tests/deslop/fixtures/env-wrapper/package.json diff --git a/packages/deslop-js/tests/fixtures/env-wrapper/src/dev-entry.js b/packages/core/tests/deslop/fixtures/env-wrapper/src/dev-entry.js similarity index 100% rename from packages/deslop-js/tests/fixtures/env-wrapper/src/dev-entry.js rename to packages/core/tests/deslop/fixtures/env-wrapper/src/dev-entry.js diff --git a/packages/deslop-js/tests/fixtures/env-wrapper/src/helper.js b/packages/core/tests/deslop/fixtures/env-wrapper/src/helper.js similarity index 100% rename from packages/deslop-js/tests/fixtures/env-wrapper/src/helper.js rename to packages/core/tests/deslop/fixtures/env-wrapper/src/helper.js diff --git a/packages/deslop-js/tests/fixtures/env-wrapper/src/main.js b/packages/core/tests/deslop/fixtures/env-wrapper/src/main.js similarity index 100% rename from packages/deslop-js/tests/fixtures/env-wrapper/src/main.js rename to packages/core/tests/deslop/fixtures/env-wrapper/src/main.js diff --git a/packages/deslop-js/tests/fixtures/expo-config-plugins/app.config.ts b/packages/core/tests/deslop/fixtures/expo-config-plugins/app.config.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/expo-config-plugins/app.config.ts rename to packages/core/tests/deslop/fixtures/expo-config-plugins/app.config.ts diff --git a/packages/deslop-js/tests/fixtures/expo-config-plugins/app.json b/packages/core/tests/deslop/fixtures/expo-config-plugins/app.json similarity index 100% rename from packages/deslop-js/tests/fixtures/expo-config-plugins/app.json rename to packages/core/tests/deslop/fixtures/expo-config-plugins/app.json diff --git a/packages/deslop-js/tests/fixtures/expo-config-plugins/apps/mobile/app.config.js b/packages/core/tests/deslop/fixtures/expo-config-plugins/apps/mobile/app.config.js similarity index 100% rename from packages/deslop-js/tests/fixtures/expo-config-plugins/apps/mobile/app.config.js rename to packages/core/tests/deslop/fixtures/expo-config-plugins/apps/mobile/app.config.js diff --git a/packages/deslop-js/tests/fixtures/expo-config-plugins/apps/mobile/package.json b/packages/core/tests/deslop/fixtures/expo-config-plugins/apps/mobile/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/expo-config-plugins/apps/mobile/package.json rename to packages/core/tests/deslop/fixtures/expo-config-plugins/apps/mobile/package.json diff --git a/packages/deslop-js/tests/fixtures/expo-config-plugins/apps/shared/cross-workspace-plugin.ts b/packages/core/tests/deslop/fixtures/expo-config-plugins/apps/shared/cross-workspace-plugin.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/expo-config-plugins/apps/shared/cross-workspace-plugin.ts rename to packages/core/tests/deslop/fixtures/expo-config-plugins/apps/shared/cross-workspace-plugin.ts diff --git a/packages/deslop-js/tests/fixtures/expo-config-plugins/expo-camera.ts b/packages/core/tests/deslop/fixtures/expo-config-plugins/expo-camera.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/expo-config-plugins/expo-camera.ts rename to packages/core/tests/deslop/fixtures/expo-config-plugins/expo-camera.ts diff --git a/packages/deslop-js/tests/fixtures/expo-config-plugins/package.json b/packages/core/tests/deslop/fixtures/expo-config-plugins/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/expo-config-plugins/package.json rename to packages/core/tests/deslop/fixtures/expo-config-plugins/package.json diff --git a/packages/deslop-js/tests/fixtures/expo-config-plugins/plugins/directory-index-plugin/index.ts b/packages/core/tests/deslop/fixtures/expo-config-plugins/plugins/directory-index-plugin/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/expo-config-plugins/plugins/directory-index-plugin/index.ts rename to packages/core/tests/deslop/fixtures/expo-config-plugins/plugins/directory-index-plugin/index.ts diff --git a/packages/deslop-js/tests/fixtures/expo-config-plugins/plugins/expo-json-extensionless-plugin.ts b/packages/core/tests/deslop/fixtures/expo-config-plugins/plugins/expo-json-extensionless-plugin.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/expo-config-plugins/plugins/expo-json-extensionless-plugin.ts rename to packages/core/tests/deslop/fixtures/expo-config-plugins/plugins/expo-json-extensionless-plugin.ts diff --git a/packages/deslop-js/tests/fixtures/expo-config-plugins/plugins/false-positive-target.ts b/packages/core/tests/deslop/fixtures/expo-config-plugins/plugins/false-positive-target.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/expo-config-plugins/plugins/false-positive-target.ts rename to packages/core/tests/deslop/fixtures/expo-config-plugins/plugins/false-positive-target.ts diff --git a/packages/deslop-js/tests/fixtures/expo-config-plugins/plugins/root-json-plugin.ts b/packages/core/tests/deslop/fixtures/expo-config-plugins/plugins/root-json-plugin.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/expo-config-plugins/plugins/root-json-plugin.ts rename to packages/core/tests/deslop/fixtures/expo-config-plugins/plugins/root-json-plugin.ts diff --git a/packages/deslop-js/tests/fixtures/expo-config-plugins/plugins/template-literal-plugin.ts b/packages/core/tests/deslop/fixtures/expo-config-plugins/plugins/template-literal-plugin.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/expo-config-plugins/plugins/template-literal-plugin.ts rename to packages/core/tests/deslop/fixtures/expo-config-plugins/plugins/template-literal-plugin.ts diff --git a/packages/deslop-js/tests/fixtures/expo-config-plugins/src/index.ts b/packages/core/tests/deslop/fixtures/expo-config-plugins/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/expo-config-plugins/src/index.ts rename to packages/core/tests/deslop/fixtures/expo-config-plugins/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/expo-router-app/app/(tabs)/_layout.tsx b/packages/core/tests/deslop/fixtures/expo-router-app/app/(tabs)/_layout.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/expo-router-app/app/(tabs)/_layout.tsx rename to packages/core/tests/deslop/fixtures/expo-router-app/app/(tabs)/_layout.tsx diff --git a/packages/deslop-js/tests/fixtures/expo-router-app/app/(tabs)/index.tsx b/packages/core/tests/deslop/fixtures/expo-router-app/app/(tabs)/index.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/expo-router-app/app/(tabs)/index.tsx rename to packages/core/tests/deslop/fixtures/expo-router-app/app/(tabs)/index.tsx diff --git a/packages/deslop-js/tests/fixtures/expo-router-app/app/(tabs)/settings.tsx b/packages/core/tests/deslop/fixtures/expo-router-app/app/(tabs)/settings.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/expo-router-app/app/(tabs)/settings.tsx rename to packages/core/tests/deslop/fixtures/expo-router-app/app/(tabs)/settings.tsx diff --git a/packages/deslop-js/tests/fixtures/expo-router-app/app/_layout.tsx b/packages/core/tests/deslop/fixtures/expo-router-app/app/_layout.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/expo-router-app/app/_layout.tsx rename to packages/core/tests/deslop/fixtures/expo-router-app/app/_layout.tsx diff --git a/packages/deslop-js/tests/fixtures/expo-router-app/package.json b/packages/core/tests/deslop/fixtures/expo-router-app/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/expo-router-app/package.json rename to packages/core/tests/deslop/fixtures/expo-router-app/package.json diff --git a/packages/deslop-js/tests/fixtures/expo-router-src-app-orphan/package.json b/packages/core/tests/deslop/fixtures/expo-router-src-app-orphan/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/expo-router-src-app-orphan/package.json rename to packages/core/tests/deslop/fixtures/expo-router-src-app-orphan/package.json diff --git a/packages/deslop-js/tests/fixtures/expo-router-src-app-orphan/src/app/(tabs)/_layout.tsx b/packages/core/tests/deslop/fixtures/expo-router-src-app-orphan/src/app/(tabs)/_layout.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/expo-router-src-app-orphan/src/app/(tabs)/_layout.tsx rename to packages/core/tests/deslop/fixtures/expo-router-src-app-orphan/src/app/(tabs)/_layout.tsx diff --git a/packages/deslop-js/tests/fixtures/expo-router-src-app-orphan/src/app/(tabs)/index.tsx b/packages/core/tests/deslop/fixtures/expo-router-src-app-orphan/src/app/(tabs)/index.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/expo-router-src-app-orphan/src/app/(tabs)/index.tsx rename to packages/core/tests/deslop/fixtures/expo-router-src-app-orphan/src/app/(tabs)/index.tsx diff --git a/packages/deslop-js/tests/fixtures/expo-router-src-app-orphan/src/app/_layout.tsx b/packages/core/tests/deslop/fixtures/expo-router-src-app-orphan/src/app/_layout.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/expo-router-src-app-orphan/src/app/_layout.tsx rename to packages/core/tests/deslop/fixtures/expo-router-src-app-orphan/src/app/_layout.tsx diff --git a/packages/deslop-js/tests/fixtures/expo-router-src-app-orphan/src/utils/orphan.ts b/packages/core/tests/deslop/fixtures/expo-router-src-app-orphan/src/utils/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/expo-router-src-app-orphan/src/utils/orphan.ts rename to packages/core/tests/deslop/fixtures/expo-router-src-app-orphan/src/utils/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/expo-router-src-app/package.json b/packages/core/tests/deslop/fixtures/expo-router-src-app/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/expo-router-src-app/package.json rename to packages/core/tests/deslop/fixtures/expo-router-src-app/package.json diff --git a/packages/deslop-js/tests/fixtures/expo-router-src-app/src/app/(tabs)/_layout.tsx b/packages/core/tests/deslop/fixtures/expo-router-src-app/src/app/(tabs)/_layout.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/expo-router-src-app/src/app/(tabs)/_layout.tsx rename to packages/core/tests/deslop/fixtures/expo-router-src-app/src/app/(tabs)/_layout.tsx diff --git a/packages/deslop-js/tests/fixtures/expo-router-src-app/src/app/(tabs)/index.tsx b/packages/core/tests/deslop/fixtures/expo-router-src-app/src/app/(tabs)/index.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/expo-router-src-app/src/app/(tabs)/index.tsx rename to packages/core/tests/deslop/fixtures/expo-router-src-app/src/app/(tabs)/index.tsx diff --git a/packages/deslop-js/tests/fixtures/expo-router-src-app/src/app/(tabs)/settings.tsx b/packages/core/tests/deslop/fixtures/expo-router-src-app/src/app/(tabs)/settings.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/expo-router-src-app/src/app/(tabs)/settings.tsx rename to packages/core/tests/deslop/fixtures/expo-router-src-app/src/app/(tabs)/settings.tsx diff --git a/packages/deslop-js/tests/fixtures/expo-router-src-app/src/app/_layout.tsx b/packages/core/tests/deslop/fixtures/expo-router-src-app/src/app/_layout.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/expo-router-src-app/src/app/_layout.tsx rename to packages/core/tests/deslop/fixtures/expo-router-src-app/src/app/_layout.tsx diff --git a/packages/deslop-js/tests/fixtures/export-default/package.json b/packages/core/tests/deslop/fixtures/export-default/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/export-default/package.json rename to packages/core/tests/deslop/fixtures/export-default/package.json diff --git a/packages/deslop-js/tests/fixtures/export-default/src/component.ts b/packages/core/tests/deslop/fixtures/export-default/src/component.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/export-default/src/component.ts rename to packages/core/tests/deslop/fixtures/export-default/src/component.ts diff --git a/packages/deslop-js/tests/fixtures/export-default/src/index.ts b/packages/core/tests/deslop/fixtures/export-default/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/export-default/src/index.ts rename to packages/core/tests/deslop/fixtures/export-default/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/export-default/src/unused-default.ts b/packages/core/tests/deslop/fixtures/export-default/src/unused-default.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/export-default/src/unused-default.ts rename to packages/core/tests/deslop/fixtures/export-default/src/unused-default.ts diff --git a/packages/deslop-js/tests/fixtures/extensionless-relative-import/package.json b/packages/core/tests/deslop/fixtures/extensionless-relative-import/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/extensionless-relative-import/package.json rename to packages/core/tests/deslop/fixtures/extensionless-relative-import/package.json diff --git a/packages/deslop-js/tests/fixtures/extensionless-relative-import/src/App.tsx b/packages/core/tests/deslop/fixtures/extensionless-relative-import/src/App.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/extensionless-relative-import/src/App.tsx rename to packages/core/tests/deslop/fixtures/extensionless-relative-import/src/App.tsx diff --git a/packages/deslop-js/tests/fixtures/extensionless-relative-import/src/Radio.tsx b/packages/core/tests/deslop/fixtures/extensionless-relative-import/src/Radio.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/extensionless-relative-import/src/Radio.tsx rename to packages/core/tests/deslop/fixtures/extensionless-relative-import/src/Radio.tsx diff --git a/packages/deslop-js/tests/fixtures/extensionless-relative-import/src/index.tsx b/packages/core/tests/deslop/fixtures/extensionless-relative-import/src/index.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/extensionless-relative-import/src/index.tsx rename to packages/core/tests/deslop/fixtures/extensionless-relative-import/src/index.tsx diff --git a/packages/deslop-js/tests/fixtures/extensionless-relative-import/src/orphan.ts b/packages/core/tests/deslop/fixtures/extensionless-relative-import/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/extensionless-relative-import/src/orphan.ts rename to packages/core/tests/deslop/fixtures/extensionless-relative-import/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/feature-flags-basic/package.json b/packages/core/tests/deslop/fixtures/feature-flags-basic/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/feature-flags-basic/package.json rename to packages/core/tests/deslop/fixtures/feature-flags-basic/package.json diff --git a/packages/deslop-js/tests/fixtures/feature-flags-basic/src/index.ts b/packages/core/tests/deslop/fixtures/feature-flags-basic/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/feature-flags-basic/src/index.ts rename to packages/core/tests/deslop/fixtures/feature-flags-basic/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/filename-registry-entries/package.json b/packages/core/tests/deslop/fixtures/filename-registry-entries/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/filename-registry-entries/package.json rename to packages/core/tests/deslop/fixtures/filename-registry-entries/package.json diff --git a/packages/deslop-js/tests/fixtures/filename-registry-entries/src/index.ts b/packages/core/tests/deslop/fixtures/filename-registry-entries/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/filename-registry-entries/src/index.ts rename to packages/core/tests/deslop/fixtures/filename-registry-entries/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/filename-registry-entries/src/registry.ts b/packages/core/tests/deslop/fixtures/filename-registry-entries/src/registry.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/filename-registry-entries/src/registry.ts rename to packages/core/tests/deslop/fixtures/filename-registry-entries/src/registry.ts diff --git a/packages/deslop-js/tests/fixtures/filename-registry-entries/tools/diagnose-user.ts b/packages/core/tests/deslop/fixtures/filename-registry-entries/tools/diagnose-user.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/filename-registry-entries/tools/diagnose-user.ts rename to packages/core/tests/deslop/fixtures/filename-registry-entries/tools/diagnose-user.ts diff --git a/packages/deslop-js/tests/fixtures/filename-registry-entries/tools/export-data.ts b/packages/core/tests/deslop/fixtures/filename-registry-entries/tools/export-data.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/filename-registry-entries/tools/export-data.ts rename to packages/core/tests/deslop/fixtures/filename-registry-entries/tools/export-data.ts diff --git a/packages/deslop-js/tests/fixtures/filename-registry-entries/tools/genuinely-dead.ts b/packages/core/tests/deslop/fixtures/filename-registry-entries/tools/genuinely-dead.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/filename-registry-entries/tools/genuinely-dead.ts rename to packages/core/tests/deslop/fixtures/filename-registry-entries/tools/genuinely-dead.ts diff --git a/packages/deslop-js/tests/fixtures/flow-js-app/package.json b/packages/core/tests/deslop/fixtures/flow-js-app/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/flow-js-app/package.json rename to packages/core/tests/deslop/fixtures/flow-js-app/package.json diff --git a/packages/deslop-js/tests/fixtures/flow-js-app/src/Widget.js b/packages/core/tests/deslop/fixtures/flow-js-app/src/Widget.js similarity index 100% rename from packages/deslop-js/tests/fixtures/flow-js-app/src/Widget.js rename to packages/core/tests/deslop/fixtures/flow-js-app/src/Widget.js diff --git a/packages/deslop-js/tests/fixtures/flow-js-app/src/actions/helper.js b/packages/core/tests/deslop/fixtures/flow-js-app/src/actions/helper.js similarity index 100% rename from packages/deslop-js/tests/fixtures/flow-js-app/src/actions/helper.js rename to packages/core/tests/deslop/fixtures/flow-js-app/src/actions/helper.js diff --git a/packages/deslop-js/tests/fixtures/flow-js-app/src/main.dev.js b/packages/core/tests/deslop/fixtures/flow-js-app/src/main.dev.js similarity index 100% rename from packages/deslop-js/tests/fixtures/flow-js-app/src/main.dev.js rename to packages/core/tests/deslop/fixtures/flow-js-app/src/main.dev.js diff --git a/packages/deslop-js/tests/fixtures/flow-js-app/src/orphan.js b/packages/core/tests/deslop/fixtures/flow-js-app/src/orphan.js similarity index 100% rename from packages/deslop-js/tests/fixtures/flow-js-app/src/orphan.js rename to packages/core/tests/deslop/fixtures/flow-js-app/src/orphan.js diff --git a/packages/deslop-js/tests/fixtures/framework-gate/no-framework/app/dashboard/page.tsx b/packages/core/tests/deslop/fixtures/framework-gate/no-framework/app/dashboard/page.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/framework-gate/no-framework/app/dashboard/page.tsx rename to packages/core/tests/deslop/fixtures/framework-gate/no-framework/app/dashboard/page.tsx diff --git a/packages/deslop-js/tests/fixtures/framework-gate/no-framework/index.ts b/packages/core/tests/deslop/fixtures/framework-gate/no-framework/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/framework-gate/no-framework/index.ts rename to packages/core/tests/deslop/fixtures/framework-gate/no-framework/index.ts diff --git a/packages/deslop-js/tests/fixtures/framework-gate/no-framework/package.json b/packages/core/tests/deslop/fixtures/framework-gate/no-framework/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/framework-gate/no-framework/package.json rename to packages/core/tests/deslop/fixtures/framework-gate/no-framework/package.json diff --git a/packages/deslop-js/tests/fixtures/framework-gate/no-framework/pages/index.tsx b/packages/core/tests/deslop/fixtures/framework-gate/no-framework/pages/index.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/framework-gate/no-framework/pages/index.tsx rename to packages/core/tests/deslop/fixtures/framework-gate/no-framework/pages/index.tsx diff --git a/packages/deslop-js/tests/fixtures/framework-gate/no-framework/resources/js/Pages/dashboard.tsx b/packages/core/tests/deslop/fixtures/framework-gate/no-framework/resources/js/Pages/dashboard.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/framework-gate/no-framework/resources/js/Pages/dashboard.tsx rename to packages/core/tests/deslop/fixtures/framework-gate/no-framework/resources/js/Pages/dashboard.tsx diff --git a/packages/deslop-js/tests/fixtures/framework-gate/no-framework/src/routes/index.tsx b/packages/core/tests/deslop/fixtures/framework-gate/no-framework/src/routes/index.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/framework-gate/no-framework/src/routes/index.tsx rename to packages/core/tests/deslop/fixtures/framework-gate/no-framework/src/routes/index.tsx diff --git a/packages/deslop-js/tests/fixtures/framework-gate/with-additional-framework-pages/module-federation.config.ts b/packages/core/tests/deslop/fixtures/framework-gate/with-additional-framework-pages/module-federation.config.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/framework-gate/with-additional-framework-pages/module-federation.config.ts rename to packages/core/tests/deslop/fixtures/framework-gate/with-additional-framework-pages/module-federation.config.ts diff --git a/packages/deslop-js/tests/fixtures/framework-gate/with-additional-framework-pages/package.json b/packages/core/tests/deslop/fixtures/framework-gate/with-additional-framework-pages/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/framework-gate/with-additional-framework-pages/package.json rename to packages/core/tests/deslop/fixtures/framework-gate/with-additional-framework-pages/package.json diff --git a/packages/deslop-js/tests/fixtures/framework-gate/with-additional-framework-pages/src/orphan.ts b/packages/core/tests/deslop/fixtures/framework-gate/with-additional-framework-pages/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/framework-gate/with-additional-framework-pages/src/orphan.ts rename to packages/core/tests/deslop/fixtures/framework-gate/with-additional-framework-pages/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/framework-gate/with-additional-framework-pages/src/pages/blog/index.page.tsx b/packages/core/tests/deslop/fixtures/framework-gate/with-additional-framework-pages/src/pages/blog/index.page.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/framework-gate/with-additional-framework-pages/src/pages/blog/index.page.tsx rename to packages/core/tests/deslop/fixtures/framework-gate/with-additional-framework-pages/src/pages/blog/index.page.tsx diff --git a/packages/deslop-js/tests/fixtures/framework-gate/with-additional-framework-pages/src/remote-entry.ts b/packages/core/tests/deslop/fixtures/framework-gate/with-additional-framework-pages/src/remote-entry.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/framework-gate/with-additional-framework-pages/src/remote-entry.ts rename to packages/core/tests/deslop/fixtures/framework-gate/with-additional-framework-pages/src/remote-entry.ts diff --git a/packages/deslop-js/tests/fixtures/framework-gate/with-additional-framework-pages/src/renderer/on-render-client.tsx b/packages/core/tests/deslop/fixtures/framework-gate/with-additional-framework-pages/src/renderer/on-render-client.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/framework-gate/with-additional-framework-pages/src/renderer/on-render-client.tsx rename to packages/core/tests/deslop/fixtures/framework-gate/with-additional-framework-pages/src/renderer/on-render-client.tsx diff --git a/packages/deslop-js/tests/fixtures/framework-gate/with-additional-framework-pages/src/routes/dashboard/index.tsx b/packages/core/tests/deslop/fixtures/framework-gate/with-additional-framework-pages/src/routes/dashboard/index.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/framework-gate/with-additional-framework-pages/src/routes/dashboard/index.tsx rename to packages/core/tests/deslop/fixtures/framework-gate/with-additional-framework-pages/src/routes/dashboard/index.tsx diff --git a/packages/deslop-js/tests/fixtures/framework-gate/with-additional-framework-pages/src/waku.client.tsx b/packages/core/tests/deslop/fixtures/framework-gate/with-additional-framework-pages/src/waku.client.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/framework-gate/with-additional-framework-pages/src/waku.client.tsx rename to packages/core/tests/deslop/fixtures/framework-gate/with-additional-framework-pages/src/waku.client.tsx diff --git a/packages/deslop-js/tests/fixtures/framework-gate/with-additional-framework-pages/web/src/Routes.tsx b/packages/core/tests/deslop/fixtures/framework-gate/with-additional-framework-pages/web/src/Routes.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/framework-gate/with-additional-framework-pages/web/src/Routes.tsx rename to packages/core/tests/deslop/fixtures/framework-gate/with-additional-framework-pages/web/src/Routes.tsx diff --git a/packages/deslop-js/tests/fixtures/framework-gate/with-additional-framework-pages/web/src/layouts/main.tsx b/packages/core/tests/deslop/fixtures/framework-gate/with-additional-framework-pages/web/src/layouts/main.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/framework-gate/with-additional-framework-pages/web/src/layouts/main.tsx rename to packages/core/tests/deslop/fixtures/framework-gate/with-additional-framework-pages/web/src/layouts/main.tsx diff --git a/packages/deslop-js/tests/fixtures/framework-gate/with-additional-framework-pages/web/src/pages/home.tsx b/packages/core/tests/deslop/fixtures/framework-gate/with-additional-framework-pages/web/src/pages/home.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/framework-gate/with-additional-framework-pages/web/src/pages/home.tsx rename to packages/core/tests/deslop/fixtures/framework-gate/with-additional-framework-pages/web/src/pages/home.tsx diff --git a/packages/deslop-js/tests/fixtures/framework-gate/with-inertia/package.json b/packages/core/tests/deslop/fixtures/framework-gate/with-inertia/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/framework-gate/with-inertia/package.json rename to packages/core/tests/deslop/fixtures/framework-gate/with-inertia/package.json diff --git a/packages/deslop-js/tests/fixtures/framework-gate/with-inertia/resources/js/Pages/Admin/index.tsx b/packages/core/tests/deslop/fixtures/framework-gate/with-inertia/resources/js/Pages/Admin/index.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/framework-gate/with-inertia/resources/js/Pages/Admin/index.tsx rename to packages/core/tests/deslop/fixtures/framework-gate/with-inertia/resources/js/Pages/Admin/index.tsx diff --git a/packages/deslop-js/tests/fixtures/framework-gate/with-inertia/resources/js/app.tsx b/packages/core/tests/deslop/fixtures/framework-gate/with-inertia/resources/js/app.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/framework-gate/with-inertia/resources/js/app.tsx rename to packages/core/tests/deslop/fixtures/framework-gate/with-inertia/resources/js/app.tsx diff --git a/packages/deslop-js/tests/fixtures/framework-gate/with-inertia/resources/js/components/bootstrap.ts b/packages/core/tests/deslop/fixtures/framework-gate/with-inertia/resources/js/components/bootstrap.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/framework-gate/with-inertia/resources/js/components/bootstrap.ts rename to packages/core/tests/deslop/fixtures/framework-gate/with-inertia/resources/js/components/bootstrap.ts diff --git a/packages/deslop-js/tests/fixtures/framework-gate/with-inertia/resources/js/components/page-title.tsx b/packages/core/tests/deslop/fixtures/framework-gate/with-inertia/resources/js/components/page-title.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/framework-gate/with-inertia/resources/js/components/page-title.tsx rename to packages/core/tests/deslop/fixtures/framework-gate/with-inertia/resources/js/components/page-title.tsx diff --git a/packages/deslop-js/tests/fixtures/framework-gate/with-inertia/resources/js/orphan.tsx b/packages/core/tests/deslop/fixtures/framework-gate/with-inertia/resources/js/orphan.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/framework-gate/with-inertia/resources/js/orphan.tsx rename to packages/core/tests/deslop/fixtures/framework-gate/with-inertia/resources/js/orphan.tsx diff --git a/packages/deslop-js/tests/fixtures/framework-gate/with-nextjs/app/dashboard/page.tsx b/packages/core/tests/deslop/fixtures/framework-gate/with-nextjs/app/dashboard/page.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/framework-gate/with-nextjs/app/dashboard/page.tsx rename to packages/core/tests/deslop/fixtures/framework-gate/with-nextjs/app/dashboard/page.tsx diff --git a/packages/deslop-js/tests/fixtures/framework-gate/with-nextjs/package.json b/packages/core/tests/deslop/fixtures/framework-gate/with-nextjs/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/framework-gate/with-nextjs/package.json rename to packages/core/tests/deslop/fixtures/framework-gate/with-nextjs/package.json diff --git a/packages/deslop-js/tests/fixtures/framework-gate/with-nextjs/pages/index.tsx b/packages/core/tests/deslop/fixtures/framework-gate/with-nextjs/pages/index.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/framework-gate/with-nextjs/pages/index.tsx rename to packages/core/tests/deslop/fixtures/framework-gate/with-nextjs/pages/index.tsx diff --git a/packages/deslop-js/tests/fixtures/framework-gate/with-nextjs/unused.tsx b/packages/core/tests/deslop/fixtures/framework-gate/with-nextjs/unused.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/framework-gate/with-nextjs/unused.tsx rename to packages/core/tests/deslop/fixtures/framework-gate/with-nextjs/unused.tsx diff --git a/packages/deslop-js/tests/fixtures/framework-gate/with-react-router/package.json b/packages/core/tests/deslop/fixtures/framework-gate/with-react-router/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/framework-gate/with-react-router/package.json rename to packages/core/tests/deslop/fixtures/framework-gate/with-react-router/package.json diff --git a/packages/deslop-js/tests/fixtures/framework-gate/with-react-router/react-router.config.ts b/packages/core/tests/deslop/fixtures/framework-gate/with-react-router/react-router.config.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/framework-gate/with-react-router/react-router.config.ts rename to packages/core/tests/deslop/fixtures/framework-gate/with-react-router/react-router.config.ts diff --git a/packages/deslop-js/tests/fixtures/framework-gate/with-react-router/src/root.tsx b/packages/core/tests/deslop/fixtures/framework-gate/with-react-router/src/root.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/framework-gate/with-react-router/src/root.tsx rename to packages/core/tests/deslop/fixtures/framework-gate/with-react-router/src/root.tsx diff --git a/packages/deslop-js/tests/fixtures/framework-gate/with-react-router/src/routes/home.tsx b/packages/core/tests/deslop/fixtures/framework-gate/with-react-router/src/routes/home.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/framework-gate/with-react-router/src/routes/home.tsx rename to packages/core/tests/deslop/fixtures/framework-gate/with-react-router/src/routes/home.tsx diff --git a/packages/deslop-js/tests/fixtures/framework-gate/with-react-router/unused.tsx b/packages/core/tests/deslop/fixtures/framework-gate/with-react-router/unused.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/framework-gate/with-react-router/unused.tsx rename to packages/core/tests/deslop/fixtures/framework-gate/with-react-router/unused.tsx diff --git a/packages/deslop-js/tests/fixtures/framework-gate/with-redwood-non-router-package/package.json b/packages/core/tests/deslop/fixtures/framework-gate/with-redwood-non-router-package/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/framework-gate/with-redwood-non-router-package/package.json rename to packages/core/tests/deslop/fixtures/framework-gate/with-redwood-non-router-package/package.json diff --git a/packages/deslop-js/tests/fixtures/framework-gate/with-redwood-non-router-package/web/src/pages/home.tsx b/packages/core/tests/deslop/fixtures/framework-gate/with-redwood-non-router-package/web/src/pages/home.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/framework-gate/with-redwood-non-router-package/web/src/pages/home.tsx rename to packages/core/tests/deslop/fixtures/framework-gate/with-redwood-non-router-package/web/src/pages/home.tsx diff --git a/packages/deslop-js/tests/fixtures/framework-hoisted-router-scripts/package.json b/packages/core/tests/deslop/fixtures/framework-hoisted-router-scripts/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/framework-hoisted-router-scripts/package.json rename to packages/core/tests/deslop/fixtures/framework-hoisted-router-scripts/package.json diff --git a/packages/deslop-js/tests/fixtures/framework-hoisted-router-scripts/packages/react-router-app/app/root.tsx b/packages/core/tests/deslop/fixtures/framework-hoisted-router-scripts/packages/react-router-app/app/root.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/framework-hoisted-router-scripts/packages/react-router-app/app/root.tsx rename to packages/core/tests/deslop/fixtures/framework-hoisted-router-scripts/packages/react-router-app/app/root.tsx diff --git a/packages/deslop-js/tests/fixtures/framework-hoisted-router-scripts/packages/react-router-app/app/routes/home.tsx b/packages/core/tests/deslop/fixtures/framework-hoisted-router-scripts/packages/react-router-app/app/routes/home.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/framework-hoisted-router-scripts/packages/react-router-app/app/routes/home.tsx rename to packages/core/tests/deslop/fixtures/framework-hoisted-router-scripts/packages/react-router-app/app/routes/home.tsx diff --git a/packages/deslop-js/tests/fixtures/framework-hoisted-router-scripts/packages/react-router-app/orphan.tsx b/packages/core/tests/deslop/fixtures/framework-hoisted-router-scripts/packages/react-router-app/orphan.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/framework-hoisted-router-scripts/packages/react-router-app/orphan.tsx rename to packages/core/tests/deslop/fixtures/framework-hoisted-router-scripts/packages/react-router-app/orphan.tsx diff --git a/packages/deslop-js/tests/fixtures/framework-hoisted-router-scripts/packages/react-router-app/package.json b/packages/core/tests/deslop/fixtures/framework-hoisted-router-scripts/packages/react-router-app/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/framework-hoisted-router-scripts/packages/react-router-app/package.json rename to packages/core/tests/deslop/fixtures/framework-hoisted-router-scripts/packages/react-router-app/package.json diff --git a/packages/deslop-js/tests/fixtures/framework-hoisted-router-scripts/packages/remix-app/app/root.tsx b/packages/core/tests/deslop/fixtures/framework-hoisted-router-scripts/packages/remix-app/app/root.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/framework-hoisted-router-scripts/packages/remix-app/app/root.tsx rename to packages/core/tests/deslop/fixtures/framework-hoisted-router-scripts/packages/remix-app/app/root.tsx diff --git a/packages/deslop-js/tests/fixtures/framework-hoisted-router-scripts/packages/remix-app/app/routes/home.tsx b/packages/core/tests/deslop/fixtures/framework-hoisted-router-scripts/packages/remix-app/app/routes/home.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/framework-hoisted-router-scripts/packages/remix-app/app/routes/home.tsx rename to packages/core/tests/deslop/fixtures/framework-hoisted-router-scripts/packages/remix-app/app/routes/home.tsx diff --git a/packages/deslop-js/tests/fixtures/framework-hoisted-router-scripts/packages/remix-app/orphan.tsx b/packages/core/tests/deslop/fixtures/framework-hoisted-router-scripts/packages/remix-app/orphan.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/framework-hoisted-router-scripts/packages/remix-app/orphan.tsx rename to packages/core/tests/deslop/fixtures/framework-hoisted-router-scripts/packages/remix-app/orphan.tsx diff --git a/packages/deslop-js/tests/fixtures/framework-hoisted-router-scripts/packages/remix-app/package.json b/packages/core/tests/deslop/fixtures/framework-hoisted-router-scripts/packages/remix-app/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/framework-hoisted-router-scripts/packages/remix-app/package.json rename to packages/core/tests/deslop/fixtures/framework-hoisted-router-scripts/packages/remix-app/package.json diff --git a/packages/deslop-js/tests/fixtures/framework-hoisted-script-entry/package.json b/packages/core/tests/deslop/fixtures/framework-hoisted-script-entry/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/framework-hoisted-script-entry/package.json rename to packages/core/tests/deslop/fixtures/framework-hoisted-script-entry/package.json diff --git a/packages/deslop-js/tests/fixtures/framework-hoisted-script-entry/packages/app/orphan.tsx b/packages/core/tests/deslop/fixtures/framework-hoisted-script-entry/packages/app/orphan.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/framework-hoisted-script-entry/packages/app/orphan.tsx rename to packages/core/tests/deslop/fixtures/framework-hoisted-script-entry/packages/app/orphan.tsx diff --git a/packages/deslop-js/tests/fixtures/framework-hoisted-script-entry/packages/app/package.json b/packages/core/tests/deslop/fixtures/framework-hoisted-script-entry/packages/app/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/framework-hoisted-script-entry/packages/app/package.json rename to packages/core/tests/deslop/fixtures/framework-hoisted-script-entry/packages/app/package.json diff --git a/packages/deslop-js/tests/fixtures/framework-hoisted-script-entry/packages/app/pages/index.tsx b/packages/core/tests/deslop/fixtures/framework-hoisted-script-entry/packages/app/pages/index.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/framework-hoisted-script-entry/packages/app/pages/index.tsx rename to packages/core/tests/deslop/fixtures/framework-hoisted-script-entry/packages/app/pages/index.tsx diff --git a/packages/deslop-js/tests/fixtures/gatsby-app/gatsby-config.js b/packages/core/tests/deslop/fixtures/gatsby-app/gatsby-config.js similarity index 100% rename from packages/deslop-js/tests/fixtures/gatsby-app/gatsby-config.js rename to packages/core/tests/deslop/fixtures/gatsby-app/gatsby-config.js diff --git a/packages/deslop-js/tests/fixtures/gatsby-app/package.json b/packages/core/tests/deslop/fixtures/gatsby-app/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/gatsby-app/package.json rename to packages/core/tests/deslop/fixtures/gatsby-app/package.json diff --git a/packages/deslop-js/tests/fixtures/gatsby-app/src/api/hello.ts b/packages/core/tests/deslop/fixtures/gatsby-app/src/api/hello.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/gatsby-app/src/api/hello.ts rename to packages/core/tests/deslop/fixtures/gatsby-app/src/api/hello.ts diff --git a/packages/deslop-js/tests/fixtures/gatsby-app/src/components/unused.tsx b/packages/core/tests/deslop/fixtures/gatsby-app/src/components/unused.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/gatsby-app/src/components/unused.tsx rename to packages/core/tests/deslop/fixtures/gatsby-app/src/components/unused.tsx diff --git a/packages/deslop-js/tests/fixtures/gatsby-app/src/components/used.tsx b/packages/core/tests/deslop/fixtures/gatsby-app/src/components/used.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/gatsby-app/src/components/used.tsx rename to packages/core/tests/deslop/fixtures/gatsby-app/src/components/used.tsx diff --git a/packages/deslop-js/tests/fixtures/gatsby-app/src/pages/index.tsx b/packages/core/tests/deslop/fixtures/gatsby-app/src/pages/index.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/gatsby-app/src/pages/index.tsx rename to packages/core/tests/deslop/fixtures/gatsby-app/src/pages/index.tsx diff --git a/packages/deslop-js/tests/fixtures/gatsby-app/src/templates/post.tsx b/packages/core/tests/deslop/fixtures/gatsby-app/src/templates/post.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/gatsby-app/src/templates/post.tsx rename to packages/core/tests/deslop/fixtures/gatsby-app/src/templates/post.tsx diff --git a/packages/deslop-js/tests/fixtures/generated-specs/package.json b/packages/core/tests/deslop/fixtures/generated-specs/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/generated-specs/package.json rename to packages/core/tests/deslop/fixtures/generated-specs/package.json diff --git a/packages/deslop-js/tests/fixtures/generated-specs/src/__tests__/index.test.ts b/packages/core/tests/deslop/fixtures/generated-specs/src/__tests__/index.test.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/generated-specs/src/__tests__/index.test.ts rename to packages/core/tests/deslop/fixtures/generated-specs/src/__tests__/index.test.ts diff --git a/packages/deslop-js/tests/fixtures/generated-specs/src/generated/schema.gen.ts b/packages/core/tests/deslop/fixtures/generated-specs/src/generated/schema.gen.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/generated-specs/src/generated/schema.gen.ts rename to packages/core/tests/deslop/fixtures/generated-specs/src/generated/schema.gen.ts diff --git a/packages/deslop-js/tests/fixtures/generated-specs/src/generated/types.spec.gen.ts b/packages/core/tests/deslop/fixtures/generated-specs/src/generated/types.spec.gen.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/generated-specs/src/generated/types.spec.gen.ts rename to packages/core/tests/deslop/fixtures/generated-specs/src/generated/types.spec.gen.ts diff --git a/packages/deslop-js/tests/fixtures/generated-specs/src/index.ts b/packages/core/tests/deslop/fixtures/generated-specs/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/generated-specs/src/index.ts rename to packages/core/tests/deslop/fixtures/generated-specs/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/gh-actions-scripts/.github/actions/deploy/run.js b/packages/core/tests/deslop/fixtures/gh-actions-scripts/.github/actions/deploy/run.js similarity index 100% rename from packages/deslop-js/tests/fixtures/gh-actions-scripts/.github/actions/deploy/run.js rename to packages/core/tests/deslop/fixtures/gh-actions-scripts/.github/actions/deploy/run.js diff --git a/packages/deslop-js/tests/fixtures/gh-actions-scripts/.github/actions/deploy/unused-helper.js b/packages/core/tests/deslop/fixtures/gh-actions-scripts/.github/actions/deploy/unused-helper.js similarity index 100% rename from packages/deslop-js/tests/fixtures/gh-actions-scripts/.github/actions/deploy/unused-helper.js rename to packages/core/tests/deslop/fixtures/gh-actions-scripts/.github/actions/deploy/unused-helper.js diff --git a/packages/deslop-js/tests/fixtures/gh-actions-scripts/.github/workflows/ci.yml b/packages/core/tests/deslop/fixtures/gh-actions-scripts/.github/workflows/ci.yml similarity index 100% rename from packages/deslop-js/tests/fixtures/gh-actions-scripts/.github/workflows/ci.yml rename to packages/core/tests/deslop/fixtures/gh-actions-scripts/.github/workflows/ci.yml diff --git a/packages/deslop-js/tests/fixtures/gh-actions-scripts/package.json b/packages/core/tests/deslop/fixtures/gh-actions-scripts/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/gh-actions-scripts/package.json rename to packages/core/tests/deslop/fixtures/gh-actions-scripts/package.json diff --git a/packages/deslop-js/tests/fixtures/gh-actions-scripts/src/index.ts b/packages/core/tests/deslop/fixtures/gh-actions-scripts/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/gh-actions-scripts/src/index.ts rename to packages/core/tests/deslop/fixtures/gh-actions-scripts/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/gitignore-app/.gitignore b/packages/core/tests/deslop/fixtures/gitignore-app/.gitignore similarity index 100% rename from packages/deslop-js/tests/fixtures/gitignore-app/.gitignore rename to packages/core/tests/deslop/fixtures/gitignore-app/.gitignore diff --git a/packages/deslop-js/tests/fixtures/gitignore-app/generated/output.ts b/packages/core/tests/deslop/fixtures/gitignore-app/generated/output.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/gitignore-app/generated/output.ts rename to packages/core/tests/deslop/fixtures/gitignore-app/generated/output.ts diff --git a/packages/deslop-js/tests/fixtures/gitignore-app/generated/routes.ts b/packages/core/tests/deslop/fixtures/gitignore-app/generated/routes.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/gitignore-app/generated/routes.ts rename to packages/core/tests/deslop/fixtures/gitignore-app/generated/routes.ts diff --git a/packages/deslop-js/tests/fixtures/gitignore-app/package.json b/packages/core/tests/deslop/fixtures/gitignore-app/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/gitignore-app/package.json rename to packages/core/tests/deslop/fixtures/gitignore-app/package.json diff --git a/packages/deslop-js/tests/fixtures/gitignore-app/src/home-route.ts b/packages/core/tests/deslop/fixtures/gitignore-app/src/home-route.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/gitignore-app/src/home-route.ts rename to packages/core/tests/deslop/fixtures/gitignore-app/src/home-route.ts diff --git a/packages/deslop-js/tests/fixtures/gitignore-app/src/index.ts b/packages/core/tests/deslop/fixtures/gitignore-app/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/gitignore-app/src/index.ts rename to packages/core/tests/deslop/fixtures/gitignore-app/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/gitignore-app/src/orphan.ts b/packages/core/tests/deslop/fixtures/gitignore-app/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/gitignore-app/src/orphan.ts rename to packages/core/tests/deslop/fixtures/gitignore-app/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/graphql-schema/package.json b/packages/core/tests/deslop/fixtures/graphql-schema/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/graphql-schema/package.json rename to packages/core/tests/deslop/fixtures/graphql-schema/package.json diff --git a/packages/deslop-js/tests/fixtures/graphql-schema/src/index.ts b/packages/core/tests/deslop/fixtures/graphql-schema/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/graphql-schema/src/index.ts rename to packages/core/tests/deslop/fixtures/graphql-schema/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/graphql-schema/src/schema.graphql b/packages/core/tests/deslop/fixtures/graphql-schema/src/schema.graphql similarity index 100% rename from packages/deslop-js/tests/fixtures/graphql-schema/src/schema.graphql rename to packages/core/tests/deslop/fixtures/graphql-schema/src/schema.graphql diff --git a/packages/deslop-js/tests/fixtures/graphql-schema/src/unused.graphql b/packages/core/tests/deslop/fixtures/graphql-schema/src/unused.graphql similarity index 100% rename from packages/deslop-js/tests/fixtures/graphql-schema/src/unused.graphql rename to packages/core/tests/deslop/fixtures/graphql-schema/src/unused.graphql diff --git a/packages/deslop-js/tests/fixtures/heuristic-no-dir-fallback/package.json b/packages/core/tests/deslop/fixtures/heuristic-no-dir-fallback/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/heuristic-no-dir-fallback/package.json rename to packages/core/tests/deslop/fixtures/heuristic-no-dir-fallback/package.json diff --git a/packages/deslop-js/tests/fixtures/heuristic-no-dir-fallback/src/cli/index.ts b/packages/core/tests/deslop/fixtures/heuristic-no-dir-fallback/src/cli/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/heuristic-no-dir-fallback/src/cli/index.ts rename to packages/core/tests/deslop/fixtures/heuristic-no-dir-fallback/src/cli/index.ts diff --git a/packages/deslop-js/tests/fixtures/heuristic-no-dir-fallback/src/index.ts b/packages/core/tests/deslop/fixtures/heuristic-no-dir-fallback/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/heuristic-no-dir-fallback/src/index.ts rename to packages/core/tests/deslop/fixtures/heuristic-no-dir-fallback/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/heuristic-no-dir-fallback/src/orphan.ts b/packages/core/tests/deslop/fixtures/heuristic-no-dir-fallback/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/heuristic-no-dir-fallback/src/orphan.ts rename to packages/core/tests/deslop/fixtures/heuristic-no-dir-fallback/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/hoc-wrapped-default-export/package.json b/packages/core/tests/deslop/fixtures/hoc-wrapped-default-export/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/hoc-wrapped-default-export/package.json rename to packages/core/tests/deslop/fixtures/hoc-wrapped-default-export/package.json diff --git a/packages/deslop-js/tests/fixtures/hoc-wrapped-default-export/src/apps-badge.tsx b/packages/core/tests/deslop/fixtures/hoc-wrapped-default-export/src/apps-badge.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/hoc-wrapped-default-export/src/apps-badge.tsx rename to packages/core/tests/deslop/fixtures/hoc-wrapped-default-export/src/apps-badge.tsx diff --git a/packages/deslop-js/tests/fixtures/hoc-wrapped-default-export/src/index.ts b/packages/core/tests/deslop/fixtures/hoc-wrapped-default-export/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/hoc-wrapped-default-export/src/index.ts rename to packages/core/tests/deslop/fixtures/hoc-wrapped-default-export/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/hoc-wrapped-default-export/src/orphan.ts b/packages/core/tests/deslop/fixtures/hoc-wrapped-default-export/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/hoc-wrapped-default-export/src/orphan.ts rename to packages/core/tests/deslop/fixtures/hoc-wrapped-default-export/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/html-entry-scope/package.json b/packages/core/tests/deslop/fixtures/html-entry-scope/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/html-entry-scope/package.json rename to packages/core/tests/deslop/fixtures/html-entry-scope/package.json diff --git a/packages/deslop-js/tests/fixtures/html-entry-scope/packages/app/index.html b/packages/core/tests/deslop/fixtures/html-entry-scope/packages/app/index.html similarity index 100% rename from packages/deslop-js/tests/fixtures/html-entry-scope/packages/app/index.html rename to packages/core/tests/deslop/fixtures/html-entry-scope/packages/app/index.html diff --git a/packages/deslop-js/tests/fixtures/html-entry-scope/packages/app/package.json b/packages/core/tests/deslop/fixtures/html-entry-scope/packages/app/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/html-entry-scope/packages/app/package.json rename to packages/core/tests/deslop/fixtures/html-entry-scope/packages/app/package.json diff --git a/packages/deslop-js/tests/fixtures/html-entry-scope/packages/app/sample/demo.tsx b/packages/core/tests/deslop/fixtures/html-entry-scope/packages/app/sample/demo.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/html-entry-scope/packages/app/sample/demo.tsx rename to packages/core/tests/deslop/fixtures/html-entry-scope/packages/app/sample/demo.tsx diff --git a/packages/deslop-js/tests/fixtures/html-entry-scope/packages/app/sample/index.html b/packages/core/tests/deslop/fixtures/html-entry-scope/packages/app/sample/index.html similarity index 100% rename from packages/deslop-js/tests/fixtures/html-entry-scope/packages/app/sample/index.html rename to packages/core/tests/deslop/fixtures/html-entry-scope/packages/app/sample/index.html diff --git a/packages/deslop-js/tests/fixtures/html-entry-scope/packages/app/src/helper.ts b/packages/core/tests/deslop/fixtures/html-entry-scope/packages/app/src/helper.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/html-entry-scope/packages/app/src/helper.ts rename to packages/core/tests/deslop/fixtures/html-entry-scope/packages/app/src/helper.ts diff --git a/packages/deslop-js/tests/fixtures/html-entry-scope/packages/app/src/main.tsx b/packages/core/tests/deslop/fixtures/html-entry-scope/packages/app/src/main.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/html-entry-scope/packages/app/src/main.tsx rename to packages/core/tests/deslop/fixtures/html-entry-scope/packages/app/src/main.tsx diff --git a/packages/deslop-js/tests/fixtures/html-entry-scope/packages/lib/package.json b/packages/core/tests/deslop/fixtures/html-entry-scope/packages/lib/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/html-entry-scope/packages/lib/package.json rename to packages/core/tests/deslop/fixtures/html-entry-scope/packages/lib/package.json diff --git a/packages/deslop-js/tests/fixtures/html-entry-scope/packages/lib/src/index.ts b/packages/core/tests/deslop/fixtures/html-entry-scope/packages/lib/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/html-entry-scope/packages/lib/src/index.ts rename to packages/core/tests/deslop/fixtures/html-entry-scope/packages/lib/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/html-entry-scope/packages/lib/src/orphan.ts b/packages/core/tests/deslop/fixtures/html-entry-scope/packages/lib/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/html-entry-scope/packages/lib/src/orphan.ts rename to packages/core/tests/deslop/fixtures/html-entry-scope/packages/lib/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/i18n-app/package.json b/packages/core/tests/deslop/fixtures/i18n-app/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/i18n-app/package.json rename to packages/core/tests/deslop/fixtures/i18n-app/package.json diff --git a/packages/deslop-js/tests/fixtures/i18n-app/public/locales/en.json b/packages/core/tests/deslop/fixtures/i18n-app/public/locales/en.json similarity index 100% rename from packages/deslop-js/tests/fixtures/i18n-app/public/locales/en.json rename to packages/core/tests/deslop/fixtures/i18n-app/public/locales/en.json diff --git a/packages/deslop-js/tests/fixtures/i18n-app/src/i18n.ts b/packages/core/tests/deslop/fixtures/i18n-app/src/i18n.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/i18n-app/src/i18n.ts rename to packages/core/tests/deslop/fixtures/i18n-app/src/i18n.ts diff --git a/packages/deslop-js/tests/fixtures/i18n-app/src/index.ts b/packages/core/tests/deslop/fixtures/i18n-app/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/i18n-app/src/index.ts rename to packages/core/tests/deslop/fixtures/i18n-app/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/i18n-app/src/orphan.ts b/packages/core/tests/deslop/fixtures/i18n-app/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/i18n-app/src/orphan.ts rename to packages/core/tests/deslop/fixtures/i18n-app/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/i18n-glob-skip/package.json b/packages/core/tests/deslop/fixtures/i18n-glob-skip/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/i18n-glob-skip/package.json rename to packages/core/tests/deslop/fixtures/i18n-glob-skip/package.json diff --git a/packages/deslop-js/tests/fixtures/i18n-glob-skip/src/app.ts b/packages/core/tests/deslop/fixtures/i18n-glob-skip/src/app.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/i18n-glob-skip/src/app.ts rename to packages/core/tests/deslop/fixtures/i18n-glob-skip/src/app.ts diff --git a/packages/deslop-js/tests/fixtures/i18n-glob-skip/src/orphan.ts b/packages/core/tests/deslop/fixtures/i18n-glob-skip/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/i18n-glob-skip/src/orphan.ts rename to packages/core/tests/deslop/fixtures/i18n-glob-skip/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/i18n-glob-skip/tsconfig.json b/packages/core/tests/deslop/fixtures/i18n-glob-skip/tsconfig.json similarity index 100% rename from packages/deslop-js/tests/fixtures/i18n-glob-skip/tsconfig.json rename to packages/core/tests/deslop/fixtures/i18n-glob-skip/tsconfig.json diff --git a/packages/deslop-js/tests/fixtures/import-dynamic-literal/notes.ts b/packages/core/tests/deslop/fixtures/import-dynamic-literal/notes.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/import-dynamic-literal/notes.ts rename to packages/core/tests/deslop/fixtures/import-dynamic-literal/notes.ts diff --git a/packages/deslop-js/tests/fixtures/import-dynamic-literal/package.json b/packages/core/tests/deslop/fixtures/import-dynamic-literal/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/import-dynamic-literal/package.json rename to packages/core/tests/deslop/fixtures/import-dynamic-literal/package.json diff --git a/packages/deslop-js/tests/fixtures/import-dynamic-literal/src/index.ts b/packages/core/tests/deslop/fixtures/import-dynamic-literal/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/import-dynamic-literal/src/index.ts rename to packages/core/tests/deslop/fixtures/import-dynamic-literal/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/import-dynamic-literal/src/orphan.ts b/packages/core/tests/deslop/fixtures/import-dynamic-literal/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/import-dynamic-literal/src/orphan.ts rename to packages/core/tests/deslop/fixtures/import-dynamic-literal/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/import-dynamic-template/package.json b/packages/core/tests/deslop/fixtures/import-dynamic-template/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/import-dynamic-template/package.json rename to packages/core/tests/deslop/fixtures/import-dynamic-template/package.json diff --git a/packages/deslop-js/tests/fixtures/import-dynamic-template/src/index.ts b/packages/core/tests/deslop/fixtures/import-dynamic-template/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/import-dynamic-template/src/index.ts rename to packages/core/tests/deslop/fixtures/import-dynamic-template/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/import-dynamic-template/src/locales/de/core.js b/packages/core/tests/deslop/fixtures/import-dynamic-template/src/locales/de/core.js similarity index 100% rename from packages/deslop-js/tests/fixtures/import-dynamic-template/src/locales/de/core.js rename to packages/core/tests/deslop/fixtures/import-dynamic-template/src/locales/de/core.js diff --git a/packages/deslop-js/tests/fixtures/import-dynamic-template/src/locales/en/core.js b/packages/core/tests/deslop/fixtures/import-dynamic-template/src/locales/en/core.js similarity index 100% rename from packages/deslop-js/tests/fixtures/import-dynamic-template/src/locales/en/core.js rename to packages/core/tests/deslop/fixtures/import-dynamic-template/src/locales/en/core.js diff --git a/packages/deslop-js/tests/fixtures/import-dynamic-template/src/locales/fr/core.js b/packages/core/tests/deslop/fixtures/import-dynamic-template/src/locales/fr/core.js similarity index 100% rename from packages/deslop-js/tests/fixtures/import-dynamic-template/src/locales/fr/core.js rename to packages/core/tests/deslop/fixtures/import-dynamic-template/src/locales/fr/core.js diff --git a/packages/deslop-js/tests/fixtures/import-dynamic-template/src/orphan.ts b/packages/core/tests/deslop/fixtures/import-dynamic-template/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/import-dynamic-template/src/orphan.ts rename to packages/core/tests/deslop/fixtures/import-dynamic-template/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/import-dynamic/package.json b/packages/core/tests/deslop/fixtures/import-dynamic/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/import-dynamic/package.json rename to packages/core/tests/deslop/fixtures/import-dynamic/package.json diff --git a/packages/deslop-js/tests/fixtures/import-dynamic/src/index.ts b/packages/core/tests/deslop/fixtures/import-dynamic/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/import-dynamic/src/index.ts rename to packages/core/tests/deslop/fixtures/import-dynamic/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/import-dynamic/src/lazy.ts b/packages/core/tests/deslop/fixtures/import-dynamic/src/lazy.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/import-dynamic/src/lazy.ts rename to packages/core/tests/deslop/fixtures/import-dynamic/src/lazy.ts diff --git a/packages/deslop-js/tests/fixtures/import-dynamic/src/orphan.ts b/packages/core/tests/deslop/fixtures/import-dynamic/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/import-dynamic/src/orphan.ts rename to packages/core/tests/deslop/fixtures/import-dynamic/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/import-dynamic/src/utils.ts b/packages/core/tests/deslop/fixtures/import-dynamic/src/utils.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/import-dynamic/src/utils.ts rename to packages/core/tests/deslop/fixtures/import-dynamic/src/utils.ts diff --git a/packages/deslop-js/tests/fixtures/import-mixed/index.ts b/packages/core/tests/deslop/fixtures/import-mixed/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/import-mixed/index.ts rename to packages/core/tests/deslop/fixtures/import-mixed/index.ts diff --git a/packages/deslop-js/tests/fixtures/import-mixed/lib.ts b/packages/core/tests/deslop/fixtures/import-mixed/lib.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/import-mixed/lib.ts rename to packages/core/tests/deslop/fixtures/import-mixed/lib.ts diff --git a/packages/deslop-js/tests/fixtures/import-mixed/orphan.ts b/packages/core/tests/deslop/fixtures/import-mixed/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/import-mixed/orphan.ts rename to packages/core/tests/deslop/fixtures/import-mixed/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/import-mixed/package.json b/packages/core/tests/deslop/fixtures/import-mixed/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/import-mixed/package.json rename to packages/core/tests/deslop/fixtures/import-mixed/package.json diff --git a/packages/deslop-js/tests/fixtures/import-mixed/utils.ts b/packages/core/tests/deslop/fixtures/import-mixed/utils.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/import-mixed/utils.ts rename to packages/core/tests/deslop/fixtures/import-mixed/utils.ts diff --git a/packages/deslop-js/tests/fixtures/import-query-param/config.ts b/packages/core/tests/deslop/fixtures/import-query-param/config.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/import-query-param/config.ts rename to packages/core/tests/deslop/fixtures/import-query-param/config.ts diff --git a/packages/deslop-js/tests/fixtures/import-query-param/index.ts b/packages/core/tests/deslop/fixtures/import-query-param/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/import-query-param/index.ts rename to packages/core/tests/deslop/fixtures/import-query-param/index.ts diff --git a/packages/deslop-js/tests/fixtures/import-query-param/orphan.ts b/packages/core/tests/deslop/fixtures/import-query-param/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/import-query-param/orphan.ts rename to packages/core/tests/deslop/fixtures/import-query-param/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/import-query-param/package.json b/packages/core/tests/deslop/fixtures/import-query-param/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/import-query-param/package.json rename to packages/core/tests/deslop/fixtures/import-query-param/package.json diff --git a/packages/deslop-js/tests/fixtures/import-query-param/styles.css b/packages/core/tests/deslop/fixtures/import-query-param/styles.css similarity index 100% rename from packages/deslop-js/tests/fixtures/import-query-param/styles.css rename to packages/core/tests/deslop/fixtures/import-query-param/styles.css diff --git a/packages/deslop-js/tests/fixtures/import-query-param/theme.css b/packages/core/tests/deslop/fixtures/import-query-param/theme.css similarity index 100% rename from packages/deslop-js/tests/fixtures/import-query-param/theme.css rename to packages/core/tests/deslop/fixtures/import-query-param/theme.css diff --git a/packages/deslop-js/tests/fixtures/import-query-param/worker.ts b/packages/core/tests/deslop/fixtures/import-query-param/worker.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/import-query-param/worker.ts rename to packages/core/tests/deslop/fixtures/import-query-param/worker.ts diff --git a/packages/deslop-js/tests/fixtures/import-reexport-same/package.json b/packages/core/tests/deslop/fixtures/import-reexport-same/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/import-reexport-same/package.json rename to packages/core/tests/deslop/fixtures/import-reexport-same/package.json diff --git a/packages/deslop-js/tests/fixtures/import-reexport-same/src/components/helper.ts b/packages/core/tests/deslop/fixtures/import-reexport-same/src/components/helper.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/import-reexport-same/src/components/helper.ts rename to packages/core/tests/deslop/fixtures/import-reexport-same/src/components/helper.ts diff --git a/packages/deslop-js/tests/fixtures/import-reexport-same/src/components/index.ts b/packages/core/tests/deslop/fixtures/import-reexport-same/src/components/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/import-reexport-same/src/components/index.ts rename to packages/core/tests/deslop/fixtures/import-reexport-same/src/components/index.ts diff --git a/packages/deslop-js/tests/fixtures/import-reexport-same/src/components/unused-component.ts b/packages/core/tests/deslop/fixtures/import-reexport-same/src/components/unused-component.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/import-reexport-same/src/components/unused-component.ts rename to packages/core/tests/deslop/fixtures/import-reexport-same/src/components/unused-component.ts diff --git a/packages/deslop-js/tests/fixtures/import-reexport-same/src/components/widget.ts b/packages/core/tests/deslop/fixtures/import-reexport-same/src/components/widget.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/import-reexport-same/src/components/widget.ts rename to packages/core/tests/deslop/fixtures/import-reexport-same/src/components/widget.ts diff --git a/packages/deslop-js/tests/fixtures/import-reexport-same/src/index.ts b/packages/core/tests/deslop/fixtures/import-reexport-same/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/import-reexport-same/src/index.ts rename to packages/core/tests/deslop/fixtures/import-reexport-same/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/import-reexport-same/src/orphan.ts b/packages/core/tests/deslop/fixtures/import-reexport-same/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/import-reexport-same/src/orphan.ts rename to packages/core/tests/deslop/fixtures/import-reexport-same/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/import-side-effect/package.json b/packages/core/tests/deslop/fixtures/import-side-effect/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/import-side-effect/package.json rename to packages/core/tests/deslop/fixtures/import-side-effect/package.json diff --git a/packages/deslop-js/tests/fixtures/import-side-effect/src/index.ts b/packages/core/tests/deslop/fixtures/import-side-effect/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/import-side-effect/src/index.ts rename to packages/core/tests/deslop/fixtures/import-side-effect/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/import-side-effect/src/orphan.ts b/packages/core/tests/deslop/fixtures/import-side-effect/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/import-side-effect/src/orphan.ts rename to packages/core/tests/deslop/fixtures/import-side-effect/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/import-side-effect/src/setup.ts b/packages/core/tests/deslop/fixtures/import-side-effect/src/setup.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/import-side-effect/src/setup.ts rename to packages/core/tests/deslop/fixtures/import-side-effect/src/setup.ts diff --git a/packages/deslop-js/tests/fixtures/import-specifier-sanitize/package.json b/packages/core/tests/deslop/fixtures/import-specifier-sanitize/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/import-specifier-sanitize/package.json rename to packages/core/tests/deslop/fixtures/import-specifier-sanitize/package.json diff --git a/packages/deslop-js/tests/fixtures/import-specifier-sanitize/src/frag.ts b/packages/core/tests/deslop/fixtures/import-specifier-sanitize/src/frag.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/import-specifier-sanitize/src/frag.ts rename to packages/core/tests/deslop/fixtures/import-specifier-sanitize/src/frag.ts diff --git a/packages/deslop-js/tests/fixtures/import-specifier-sanitize/src/index.ts b/packages/core/tests/deslop/fixtures/import-specifier-sanitize/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/import-specifier-sanitize/src/index.ts rename to packages/core/tests/deslop/fixtures/import-specifier-sanitize/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/import-specifier-sanitize/src/orphan.ts b/packages/core/tests/deslop/fixtures/import-specifier-sanitize/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/import-specifier-sanitize/src/orphan.ts rename to packages/core/tests/deslop/fixtures/import-specifier-sanitize/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/import-specifier-sanitize/src/query.ts b/packages/core/tests/deslop/fixtures/import-specifier-sanitize/src/query.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/import-specifier-sanitize/src/query.ts rename to packages/core/tests/deslop/fixtures/import-specifier-sanitize/src/query.ts diff --git a/packages/deslop-js/tests/fixtures/import-specifier-sanitize/src/worker.ts b/packages/core/tests/deslop/fixtures/import-specifier-sanitize/src/worker.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/import-specifier-sanitize/src/worker.ts rename to packages/core/tests/deslop/fixtures/import-specifier-sanitize/src/worker.ts diff --git a/packages/deslop-js/tests/fixtures/import-subpath/package.json b/packages/core/tests/deslop/fixtures/import-subpath/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/import-subpath/package.json rename to packages/core/tests/deslop/fixtures/import-subpath/package.json diff --git a/packages/deslop-js/tests/fixtures/import-subpath/src/api/orphan.ts b/packages/core/tests/deslop/fixtures/import-subpath/src/api/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/import-subpath/src/api/orphan.ts rename to packages/core/tests/deslop/fixtures/import-subpath/src/api/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/import-subpath/src/api/user.ts b/packages/core/tests/deslop/fixtures/import-subpath/src/api/user.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/import-subpath/src/api/user.ts rename to packages/core/tests/deslop/fixtures/import-subpath/src/api/user.ts diff --git a/packages/deslop-js/tests/fixtures/import-subpath/src/index.ts b/packages/core/tests/deslop/fixtures/import-subpath/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/import-subpath/src/index.ts rename to packages/core/tests/deslop/fixtures/import-subpath/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/import-subpath/tsconfig.json b/packages/core/tests/deslop/fixtures/import-subpath/tsconfig.json similarity index 100% rename from packages/deslop-js/tests/fixtures/import-subpath/tsconfig.json rename to packages/core/tests/deslop/fixtures/import-subpath/tsconfig.json diff --git a/packages/deslop-js/tests/fixtures/internal-export-usage/package.json b/packages/core/tests/deslop/fixtures/internal-export-usage/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/internal-export-usage/package.json rename to packages/core/tests/deslop/fixtures/internal-export-usage/package.json diff --git a/packages/deslop-js/tests/fixtures/internal-export-usage/src/index.ts b/packages/core/tests/deslop/fixtures/internal-export-usage/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/internal-export-usage/src/index.ts rename to packages/core/tests/deslop/fixtures/internal-export-usage/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/internal-export-usage/src/module-registry.ts b/packages/core/tests/deslop/fixtures/internal-export-usage/src/module-registry.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/internal-export-usage/src/module-registry.ts rename to packages/core/tests/deslop/fixtures/internal-export-usage/src/module-registry.ts diff --git a/packages/deslop-js/tests/fixtures/internal-export-usage/src/orphan.ts b/packages/core/tests/deslop/fixtures/internal-export-usage/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/internal-export-usage/src/orphan.ts rename to packages/core/tests/deslop/fixtures/internal-export-usage/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/internal-export-usage/src/service.module.ts b/packages/core/tests/deslop/fixtures/internal-export-usage/src/service.module.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/internal-export-usage/src/service.module.ts rename to packages/core/tests/deslop/fixtures/internal-export-usage/src/service.module.ts diff --git a/packages/deslop-js/tests/fixtures/jest-config-cts/jest.config.cts b/packages/core/tests/deslop/fixtures/jest-config-cts/jest.config.cts similarity index 100% rename from packages/deslop-js/tests/fixtures/jest-config-cts/jest.config.cts rename to packages/core/tests/deslop/fixtures/jest-config-cts/jest.config.cts diff --git a/packages/deslop-js/tests/fixtures/jest-config-cts/package.json b/packages/core/tests/deslop/fixtures/jest-config-cts/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/jest-config-cts/package.json rename to packages/core/tests/deslop/fixtures/jest-config-cts/package.json diff --git a/packages/deslop-js/tests/fixtures/jest-config-cts/src/orphan.ts b/packages/core/tests/deslop/fixtures/jest-config-cts/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/jest-config-cts/src/orphan.ts rename to packages/core/tests/deslop/fixtures/jest-config-cts/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/jest-config-cts/test-setup.ts b/packages/core/tests/deslop/fixtures/jest-config-cts/test-setup.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/jest-config-cts/test-setup.ts rename to packages/core/tests/deslop/fixtures/jest-config-cts/test-setup.ts diff --git a/packages/deslop-js/tests/fixtures/jest-mapper/__mocks__/fileMock.js b/packages/core/tests/deslop/fixtures/jest-mapper/__mocks__/fileMock.js similarity index 100% rename from packages/deslop-js/tests/fixtures/jest-mapper/__mocks__/fileMock.js rename to packages/core/tests/deslop/fixtures/jest-mapper/__mocks__/fileMock.js diff --git a/packages/deslop-js/tests/fixtures/jest-mapper/__mocks__/styleMock.js b/packages/core/tests/deslop/fixtures/jest-mapper/__mocks__/styleMock.js similarity index 100% rename from packages/deslop-js/tests/fixtures/jest-mapper/__mocks__/styleMock.js rename to packages/core/tests/deslop/fixtures/jest-mapper/__mocks__/styleMock.js diff --git a/packages/deslop-js/tests/fixtures/jest-mapper/jest.config.js b/packages/core/tests/deslop/fixtures/jest-mapper/jest.config.js similarity index 100% rename from packages/deslop-js/tests/fixtures/jest-mapper/jest.config.js rename to packages/core/tests/deslop/fixtures/jest-mapper/jest.config.js diff --git a/packages/deslop-js/tests/fixtures/jest-mapper/package.json b/packages/core/tests/deslop/fixtures/jest-mapper/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/jest-mapper/package.json rename to packages/core/tests/deslop/fixtures/jest-mapper/package.json diff --git a/packages/deslop-js/tests/fixtures/jest-mapper/src/index.ts b/packages/core/tests/deslop/fixtures/jest-mapper/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/jest-mapper/src/index.ts rename to packages/core/tests/deslop/fixtures/jest-mapper/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/jest-mapper/src/orphan.ts b/packages/core/tests/deslop/fixtures/jest-mapper/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/jest-mapper/src/orphan.ts rename to packages/core/tests/deslop/fixtures/jest-mapper/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/jest-match/jest.config.ts b/packages/core/tests/deslop/fixtures/jest-match/jest.config.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/jest-match/jest.config.ts rename to packages/core/tests/deslop/fixtures/jest-match/jest.config.ts diff --git a/packages/deslop-js/tests/fixtures/jest-match/package.json b/packages/core/tests/deslop/fixtures/jest-match/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/jest-match/package.json rename to packages/core/tests/deslop/fixtures/jest-match/package.json diff --git a/packages/deslop-js/tests/fixtures/jest-match/src/__tests__/app.test.ts b/packages/core/tests/deslop/fixtures/jest-match/src/__tests__/app.test.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/jest-match/src/__tests__/app.test.ts rename to packages/core/tests/deslop/fixtures/jest-match/src/__tests__/app.test.ts diff --git a/packages/deslop-js/tests/fixtures/jest-match/src/index.ts b/packages/core/tests/deslop/fixtures/jest-match/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/jest-match/src/index.ts rename to packages/core/tests/deslop/fixtures/jest-match/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/jest-match/src/orphan.ts b/packages/core/tests/deslop/fixtures/jest-match/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/jest-match/src/orphan.ts rename to packages/core/tests/deslop/fixtures/jest-match/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/jest-match/src/utils.test.ts b/packages/core/tests/deslop/fixtures/jest-match/src/utils.test.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/jest-match/src/utils.test.ts rename to packages/core/tests/deslop/fixtures/jest-match/src/utils.test.ts diff --git a/packages/deslop-js/tests/fixtures/jest-match/tests/outside.test.ts b/packages/core/tests/deslop/fixtures/jest-match/tests/outside.test.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/jest-match/tests/outside.test.ts rename to packages/core/tests/deslop/fixtures/jest-match/tests/outside.test.ts diff --git a/packages/deslop-js/tests/fixtures/jest-mock-entry/__mocks__/some-lib.js b/packages/core/tests/deslop/fixtures/jest-mock-entry/__mocks__/some-lib.js similarity index 100% rename from packages/deslop-js/tests/fixtures/jest-mock-entry/__mocks__/some-lib.js rename to packages/core/tests/deslop/fixtures/jest-mock-entry/__mocks__/some-lib.js diff --git a/packages/deslop-js/tests/fixtures/jest-mock-entry/orphan.ts b/packages/core/tests/deslop/fixtures/jest-mock-entry/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/jest-mock-entry/orphan.ts rename to packages/core/tests/deslop/fixtures/jest-mock-entry/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/jest-mock-entry/package.json b/packages/core/tests/deslop/fixtures/jest-mock-entry/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/jest-mock-entry/package.json rename to packages/core/tests/deslop/fixtures/jest-mock-entry/package.json diff --git a/packages/deslop-js/tests/fixtures/jest-mock-entry/src/__mocks__/axios.ts b/packages/core/tests/deslop/fixtures/jest-mock-entry/src/__mocks__/axios.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/jest-mock-entry/src/__mocks__/axios.ts rename to packages/core/tests/deslop/fixtures/jest-mock-entry/src/__mocks__/axios.ts diff --git a/packages/deslop-js/tests/fixtures/jest-mock-entry/src/__mocks__/fs.ts b/packages/core/tests/deslop/fixtures/jest-mock-entry/src/__mocks__/fs.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/jest-mock-entry/src/__mocks__/fs.ts rename to packages/core/tests/deslop/fixtures/jest-mock-entry/src/__mocks__/fs.ts diff --git a/packages/deslop-js/tests/fixtures/jest-mock-entry/src/index.ts b/packages/core/tests/deslop/fixtures/jest-mock-entry/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/jest-mock-entry/src/index.ts rename to packages/core/tests/deslop/fixtures/jest-mock-entry/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/jest-mock-files/__mocks__/api-client.ts b/packages/core/tests/deslop/fixtures/jest-mock-files/__mocks__/api-client.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/jest-mock-files/__mocks__/api-client.ts rename to packages/core/tests/deslop/fixtures/jest-mock-files/__mocks__/api-client.ts diff --git a/packages/deslop-js/tests/fixtures/jest-mock-files/__mocks__/fs.ts b/packages/core/tests/deslop/fixtures/jest-mock-files/__mocks__/fs.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/jest-mock-files/__mocks__/fs.ts rename to packages/core/tests/deslop/fixtures/jest-mock-files/__mocks__/fs.ts diff --git a/packages/deslop-js/tests/fixtures/jest-mock-files/package.json b/packages/core/tests/deslop/fixtures/jest-mock-files/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/jest-mock-files/package.json rename to packages/core/tests/deslop/fixtures/jest-mock-files/package.json diff --git a/packages/deslop-js/tests/fixtures/jest-mock-files/src/index.ts b/packages/core/tests/deslop/fixtures/jest-mock-files/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/jest-mock-files/src/index.ts rename to packages/core/tests/deslop/fixtures/jest-mock-files/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/jest-mock-files/src/orphan.ts b/packages/core/tests/deslop/fixtures/jest-mock-files/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/jest-mock-files/src/orphan.ts rename to packages/core/tests/deslop/fixtures/jest-mock-files/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/jest-module-name-mapper/jest.config.js b/packages/core/tests/deslop/fixtures/jest-module-name-mapper/jest.config.js similarity index 100% rename from packages/deslop-js/tests/fixtures/jest-module-name-mapper/jest.config.js rename to packages/core/tests/deslop/fixtures/jest-module-name-mapper/jest.config.js diff --git a/packages/deslop-js/tests/fixtures/jest-module-name-mapper/package.json b/packages/core/tests/deslop/fixtures/jest-module-name-mapper/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/jest-module-name-mapper/package.json rename to packages/core/tests/deslop/fixtures/jest-module-name-mapper/package.json diff --git a/packages/deslop-js/tests/fixtures/jest-module-name-mapper/src/index.ts b/packages/core/tests/deslop/fixtures/jest-module-name-mapper/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/jest-module-name-mapper/src/index.ts rename to packages/core/tests/deslop/fixtures/jest-module-name-mapper/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/jest-module-name-mapper/src/orphan.ts b/packages/core/tests/deslop/fixtures/jest-module-name-mapper/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/jest-module-name-mapper/src/orphan.ts rename to packages/core/tests/deslop/fixtures/jest-module-name-mapper/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/jest-module-name-mapper/src/value.ts b/packages/core/tests/deslop/fixtures/jest-module-name-mapper/src/value.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/jest-module-name-mapper/src/value.ts rename to packages/core/tests/deslop/fixtures/jest-module-name-mapper/src/value.ts diff --git a/packages/deslop-js/tests/fixtures/jest-setup-config/__mocks__/styleMock.js b/packages/core/tests/deslop/fixtures/jest-setup-config/__mocks__/styleMock.js similarity index 100% rename from packages/deslop-js/tests/fixtures/jest-setup-config/__mocks__/styleMock.js rename to packages/core/tests/deslop/fixtures/jest-setup-config/__mocks__/styleMock.js diff --git a/packages/deslop-js/tests/fixtures/jest-setup-config/jest.config.js b/packages/core/tests/deslop/fixtures/jest-setup-config/jest.config.js similarity index 100% rename from packages/deslop-js/tests/fixtures/jest-setup-config/jest.config.js rename to packages/core/tests/deslop/fixtures/jest-setup-config/jest.config.js diff --git a/packages/deslop-js/tests/fixtures/jest-setup-config/jest.setup.ts b/packages/core/tests/deslop/fixtures/jest-setup-config/jest.setup.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/jest-setup-config/jest.setup.ts rename to packages/core/tests/deslop/fixtures/jest-setup-config/jest.setup.ts diff --git a/packages/deslop-js/tests/fixtures/jest-setup-config/package.json b/packages/core/tests/deslop/fixtures/jest-setup-config/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/jest-setup-config/package.json rename to packages/core/tests/deslop/fixtures/jest-setup-config/package.json diff --git a/packages/deslop-js/tests/fixtures/jest-setup-config/src/index.ts b/packages/core/tests/deslop/fixtures/jest-setup-config/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/jest-setup-config/src/index.ts rename to packages/core/tests/deslop/fixtures/jest-setup-config/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/jest-setup-config/src/orphan.ts b/packages/core/tests/deslop/fixtures/jest-setup-config/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/jest-setup-config/src/orphan.ts rename to packages/core/tests/deslop/fixtures/jest-setup-config/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/jest-setup-config/src/setup-helper.ts b/packages/core/tests/deslop/fixtures/jest-setup-config/src/setup-helper.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/jest-setup-config/src/setup-helper.ts rename to packages/core/tests/deslop/fixtures/jest-setup-config/src/setup-helper.ts diff --git a/packages/deslop-js/tests/fixtures/jsx-block-arrow/package.json b/packages/core/tests/deslop/fixtures/jsx-block-arrow/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/jsx-block-arrow/package.json rename to packages/core/tests/deslop/fixtures/jsx-block-arrow/package.json diff --git a/packages/deslop-js/tests/fixtures/jsx-block-arrow/src/index.tsx b/packages/core/tests/deslop/fixtures/jsx-block-arrow/src/index.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/jsx-block-arrow/src/index.tsx rename to packages/core/tests/deslop/fixtures/jsx-block-arrow/src/index.tsx diff --git a/packages/deslop-js/tests/fixtures/lerna-workspace/lerna.json b/packages/core/tests/deslop/fixtures/lerna-workspace/lerna.json similarity index 100% rename from packages/deslop-js/tests/fixtures/lerna-workspace/lerna.json rename to packages/core/tests/deslop/fixtures/lerna-workspace/lerna.json diff --git a/packages/deslop-js/tests/fixtures/lerna-workspace/package.json b/packages/core/tests/deslop/fixtures/lerna-workspace/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/lerna-workspace/package.json rename to packages/core/tests/deslop/fixtures/lerna-workspace/package.json diff --git a/packages/deslop-js/tests/fixtures/lerna-workspace/packages/app/package.json b/packages/core/tests/deslop/fixtures/lerna-workspace/packages/app/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/lerna-workspace/packages/app/package.json rename to packages/core/tests/deslop/fixtures/lerna-workspace/packages/app/package.json diff --git a/packages/deslop-js/tests/fixtures/lerna-workspace/packages/app/src/index.ts b/packages/core/tests/deslop/fixtures/lerna-workspace/packages/app/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/lerna-workspace/packages/app/src/index.ts rename to packages/core/tests/deslop/fixtures/lerna-workspace/packages/app/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/lerna-workspace/packages/ui/package.json b/packages/core/tests/deslop/fixtures/lerna-workspace/packages/ui/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/lerna-workspace/packages/ui/package.json rename to packages/core/tests/deslop/fixtures/lerna-workspace/packages/ui/package.json diff --git a/packages/deslop-js/tests/fixtures/lerna-workspace/packages/ui/src/button.ts b/packages/core/tests/deslop/fixtures/lerna-workspace/packages/ui/src/button.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/lerna-workspace/packages/ui/src/button.ts rename to packages/core/tests/deslop/fixtures/lerna-workspace/packages/ui/src/button.ts diff --git a/packages/deslop-js/tests/fixtures/lerna-workspace/packages/ui/src/index.ts b/packages/core/tests/deslop/fixtures/lerna-workspace/packages/ui/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/lerna-workspace/packages/ui/src/index.ts rename to packages/core/tests/deslop/fixtures/lerna-workspace/packages/ui/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/lerna-workspace/packages/ui/src/orphan.ts b/packages/core/tests/deslop/fixtures/lerna-workspace/packages/ui/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/lerna-workspace/packages/ui/src/orphan.ts rename to packages/core/tests/deslop/fixtures/lerna-workspace/packages/ui/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/mdx-import/docs/intro.mdx b/packages/core/tests/deslop/fixtures/mdx-import/docs/intro.mdx similarity index 100% rename from packages/deslop-js/tests/fixtures/mdx-import/docs/intro.mdx rename to packages/core/tests/deslop/fixtures/mdx-import/docs/intro.mdx diff --git a/packages/deslop-js/tests/fixtures/mdx-import/docusaurus.config.ts b/packages/core/tests/deslop/fixtures/mdx-import/docusaurus.config.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/mdx-import/docusaurus.config.ts rename to packages/core/tests/deslop/fixtures/mdx-import/docusaurus.config.ts diff --git a/packages/deslop-js/tests/fixtures/mdx-import/orphan.ts b/packages/core/tests/deslop/fixtures/mdx-import/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/mdx-import/orphan.ts rename to packages/core/tests/deslop/fixtures/mdx-import/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/mdx-import/package.json b/packages/core/tests/deslop/fixtures/mdx-import/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/mdx-import/package.json rename to packages/core/tests/deslop/fixtures/mdx-import/package.json diff --git a/packages/deslop-js/tests/fixtures/mdx-import/src/components/Chart.tsx b/packages/core/tests/deslop/fixtures/mdx-import/src/components/Chart.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/mdx-import/src/components/Chart.tsx rename to packages/core/tests/deslop/fixtures/mdx-import/src/components/Chart.tsx diff --git a/packages/deslop-js/tests/fixtures/mdx-import/src/components/Unused.tsx b/packages/core/tests/deslop/fixtures/mdx-import/src/components/Unused.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/mdx-import/src/components/Unused.tsx rename to packages/core/tests/deslop/fixtures/mdx-import/src/components/Unused.tsx diff --git a/packages/deslop-js/tests/fixtures/migration-orm/migrations/001-create-users.ts b/packages/core/tests/deslop/fixtures/migration-orm/migrations/001-create-users.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/migration-orm/migrations/001-create-users.ts rename to packages/core/tests/deslop/fixtures/migration-orm/migrations/001-create-users.ts diff --git a/packages/deslop-js/tests/fixtures/migration-orm/package.json b/packages/core/tests/deslop/fixtures/migration-orm/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/migration-orm/package.json rename to packages/core/tests/deslop/fixtures/migration-orm/package.json diff --git a/packages/deslop-js/tests/fixtures/migration-orm/src/index.ts b/packages/core/tests/deslop/fixtures/migration-orm/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/migration-orm/src/index.ts rename to packages/core/tests/deslop/fixtures/migration-orm/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/migration-orm/src/orphan.ts b/packages/core/tests/deslop/fixtures/migration-orm/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/migration-orm/src/orphan.ts rename to packages/core/tests/deslop/fixtures/migration-orm/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/migration-raw/migrations/001-create-users.ts b/packages/core/tests/deslop/fixtures/migration-raw/migrations/001-create-users.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/migration-raw/migrations/001-create-users.ts rename to packages/core/tests/deslop/fixtures/migration-raw/migrations/001-create-users.ts diff --git a/packages/deslop-js/tests/fixtures/migration-raw/package.json b/packages/core/tests/deslop/fixtures/migration-raw/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/migration-raw/package.json rename to packages/core/tests/deslop/fixtures/migration-raw/package.json diff --git a/packages/deslop-js/tests/fixtures/migration-raw/src/index.ts b/packages/core/tests/deslop/fixtures/migration-raw/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/migration-raw/src/index.ts rename to packages/core/tests/deslop/fixtures/migration-raw/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/misclassified-deps-typeonly/package.json b/packages/core/tests/deslop/fixtures/misclassified-deps-typeonly/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/misclassified-deps-typeonly/package.json rename to packages/core/tests/deslop/fixtures/misclassified-deps-typeonly/package.json diff --git a/packages/deslop-js/tests/fixtures/misclassified-deps-typeonly/src/index.ts b/packages/core/tests/deslop/fixtures/misclassified-deps-typeonly/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/misclassified-deps-typeonly/src/index.ts rename to packages/core/tests/deslop/fixtures/misclassified-deps-typeonly/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/mock-patterns/package.json b/packages/core/tests/deslop/fixtures/mock-patterns/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/mock-patterns/package.json rename to packages/core/tests/deslop/fixtures/mock-patterns/package.json diff --git a/packages/deslop-js/tests/fixtures/mock-patterns/src/__fixtures__/user-data.ts b/packages/core/tests/deslop/fixtures/mock-patterns/src/__fixtures__/user-data.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/mock-patterns/src/__fixtures__/user-data.ts rename to packages/core/tests/deslop/fixtures/mock-patterns/src/__fixtures__/user-data.ts diff --git a/packages/deslop-js/tests/fixtures/mock-patterns/src/__mocks__/api-client.ts b/packages/core/tests/deslop/fixtures/mock-patterns/src/__mocks__/api-client.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/mock-patterns/src/__mocks__/api-client.ts rename to packages/core/tests/deslop/fixtures/mock-patterns/src/__mocks__/api-client.ts diff --git a/packages/deslop-js/tests/fixtures/mock-patterns/src/fixtures/sample-data.json b/packages/core/tests/deslop/fixtures/mock-patterns/src/fixtures/sample-data.json similarity index 100% rename from packages/deslop-js/tests/fixtures/mock-patterns/src/fixtures/sample-data.json rename to packages/core/tests/deslop/fixtures/mock-patterns/src/fixtures/sample-data.json diff --git a/packages/deslop-js/tests/fixtures/mock-patterns/src/index.ts b/packages/core/tests/deslop/fixtures/mock-patterns/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/mock-patterns/src/index.ts rename to packages/core/tests/deslop/fixtures/mock-patterns/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/mock-patterns/src/orphan.ts b/packages/core/tests/deslop/fixtures/mock-patterns/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/mock-patterns/src/orphan.ts rename to packages/core/tests/deslop/fixtures/mock-patterns/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/module-side-effect/index.ts b/packages/core/tests/deslop/fixtures/module-side-effect/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/module-side-effect/index.ts rename to packages/core/tests/deslop/fixtures/module-side-effect/index.ts diff --git a/packages/deslop-js/tests/fixtures/module-side-effect/lib.ts b/packages/core/tests/deslop/fixtures/module-side-effect/lib.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/module-side-effect/lib.ts rename to packages/core/tests/deslop/fixtures/module-side-effect/lib.ts diff --git a/packages/deslop-js/tests/fixtures/module-side-effect/orphan.ts b/packages/core/tests/deslop/fixtures/module-side-effect/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/module-side-effect/orphan.ts rename to packages/core/tests/deslop/fixtures/module-side-effect/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/module-side-effect/package.json b/packages/core/tests/deslop/fixtures/module-side-effect/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/module-side-effect/package.json rename to packages/core/tests/deslop/fixtures/module-side-effect/package.json diff --git a/packages/deslop-js/tests/fixtures/module-side-effect/polyfill.ts b/packages/core/tests/deslop/fixtures/module-side-effect/polyfill.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/module-side-effect/polyfill.ts rename to packages/core/tests/deslop/fixtures/module-side-effect/polyfill.ts diff --git a/packages/deslop-js/tests/fixtures/module-side-effect/register.ts b/packages/core/tests/deslop/fixtures/module-side-effect/register.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/module-side-effect/register.ts rename to packages/core/tests/deslop/fixtures/module-side-effect/register.ts diff --git a/packages/deslop-js/tests/fixtures/monorepo-script-entry/package.json b/packages/core/tests/deslop/fixtures/monorepo-script-entry/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/monorepo-script-entry/package.json rename to packages/core/tests/deslop/fixtures/monorepo-script-entry/package.json diff --git a/packages/deslop-js/tests/fixtures/monorepo-script-entry/packages/sub/internal-tools/renderer.ts b/packages/core/tests/deslop/fixtures/monorepo-script-entry/packages/sub/internal-tools/renderer.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/monorepo-script-entry/packages/sub/internal-tools/renderer.ts rename to packages/core/tests/deslop/fixtures/monorepo-script-entry/packages/sub/internal-tools/renderer.ts diff --git a/packages/deslop-js/tests/fixtures/monorepo-script-entry/packages/sub/internal-tools/tui.ts b/packages/core/tests/deslop/fixtures/monorepo-script-entry/packages/sub/internal-tools/tui.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/monorepo-script-entry/packages/sub/internal-tools/tui.ts rename to packages/core/tests/deslop/fixtures/monorepo-script-entry/packages/sub/internal-tools/tui.ts diff --git a/packages/deslop-js/tests/fixtures/monorepo-script-entry/packages/sub/package.json b/packages/core/tests/deslop/fixtures/monorepo-script-entry/packages/sub/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/monorepo-script-entry/packages/sub/package.json rename to packages/core/tests/deslop/fixtures/monorepo-script-entry/packages/sub/package.json diff --git a/packages/deslop-js/tests/fixtures/monorepo-script-entry/packages/sub/src/index.ts b/packages/core/tests/deslop/fixtures/monorepo-script-entry/packages/sub/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/monorepo-script-entry/packages/sub/src/index.ts rename to packages/core/tests/deslop/fixtures/monorepo-script-entry/packages/sub/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/monorepo-script-entry/pnpm-workspace.yaml b/packages/core/tests/deslop/fixtures/monorepo-script-entry/pnpm-workspace.yaml similarity index 100% rename from packages/deslop-js/tests/fixtures/monorepo-script-entry/pnpm-workspace.yaml rename to packages/core/tests/deslop/fixtures/monorepo-script-entry/pnpm-workspace.yaml diff --git a/packages/deslop-js/tests/fixtures/nested-dist-non-workspace/.gitignore b/packages/core/tests/deslop/fixtures/nested-dist-non-workspace/.gitignore similarity index 100% rename from packages/deslop-js/tests/fixtures/nested-dist-non-workspace/.gitignore rename to packages/core/tests/deslop/fixtures/nested-dist-non-workspace/.gitignore diff --git a/packages/deslop-js/tests/fixtures/nested-dist-non-workspace/apps/orphan/dist/index.mjs b/packages/core/tests/deslop/fixtures/nested-dist-non-workspace/apps/orphan/dist/index.mjs similarity index 100% rename from packages/deslop-js/tests/fixtures/nested-dist-non-workspace/apps/orphan/dist/index.mjs rename to packages/core/tests/deslop/fixtures/nested-dist-non-workspace/apps/orphan/dist/index.mjs diff --git a/packages/deslop-js/tests/fixtures/nested-dist-non-workspace/package.json b/packages/core/tests/deslop/fixtures/nested-dist-non-workspace/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/nested-dist-non-workspace/package.json rename to packages/core/tests/deslop/fixtures/nested-dist-non-workspace/package.json diff --git a/packages/deslop-js/tests/fixtures/nested-dist-non-workspace/src/index.ts b/packages/core/tests/deslop/fixtures/nested-dist-non-workspace/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/nested-dist-non-workspace/src/index.ts rename to packages/core/tests/deslop/fixtures/nested-dist-non-workspace/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/nested-overrides/package.json b/packages/core/tests/deslop/fixtures/nested-overrides/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/nested-overrides/package.json rename to packages/core/tests/deslop/fixtures/nested-overrides/package.json diff --git a/packages/deslop-js/tests/fixtures/nested-overrides/src/index.ts b/packages/core/tests/deslop/fixtures/nested-overrides/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/nested-overrides/src/index.ts rename to packages/core/tests/deslop/fixtures/nested-overrides/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/nestjs-app/package.json b/packages/core/tests/deslop/fixtures/nestjs-app/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/nestjs-app/package.json rename to packages/core/tests/deslop/fixtures/nestjs-app/package.json diff --git a/packages/deslop-js/tests/fixtures/nestjs-app/src/app.module.ts b/packages/core/tests/deslop/fixtures/nestjs-app/src/app.module.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/nestjs-app/src/app.module.ts rename to packages/core/tests/deslop/fixtures/nestjs-app/src/app.module.ts diff --git a/packages/deslop-js/tests/fixtures/nestjs-app/src/main.ts b/packages/core/tests/deslop/fixtures/nestjs-app/src/main.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/nestjs-app/src/main.ts rename to packages/core/tests/deslop/fixtures/nestjs-app/src/main.ts diff --git a/packages/deslop-js/tests/fixtures/nestjs-app/src/orphan.ts b/packages/core/tests/deslop/fixtures/nestjs-app/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/nestjs-app/src/orphan.ts rename to packages/core/tests/deslop/fixtures/nestjs-app/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/nestjs-app/src/users.controller.ts b/packages/core/tests/deslop/fixtures/nestjs-app/src/users.controller.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/nestjs-app/src/users.controller.ts rename to packages/core/tests/deslop/fixtures/nestjs-app/src/users.controller.ts diff --git a/packages/deslop-js/tests/fixtures/next-config-scope/examples/my-app/next.config.mjs b/packages/core/tests/deslop/fixtures/next-config-scope/examples/my-app/next.config.mjs similarity index 100% rename from packages/deslop-js/tests/fixtures/next-config-scope/examples/my-app/next.config.mjs rename to packages/core/tests/deslop/fixtures/next-config-scope/examples/my-app/next.config.mjs diff --git a/packages/deslop-js/tests/fixtures/next-config-scope/examples/my-app/package.json b/packages/core/tests/deslop/fixtures/next-config-scope/examples/my-app/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/next-config-scope/examples/my-app/package.json rename to packages/core/tests/deslop/fixtures/next-config-scope/examples/my-app/package.json diff --git a/packages/deslop-js/tests/fixtures/next-config-scope/package.json b/packages/core/tests/deslop/fixtures/next-config-scope/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/next-config-scope/package.json rename to packages/core/tests/deslop/fixtures/next-config-scope/package.json diff --git a/packages/deslop-js/tests/fixtures/next-config-scope/src/index.ts b/packages/core/tests/deslop/fixtures/next-config-scope/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/next-config-scope/src/index.ts rename to packages/core/tests/deslop/fixtures/next-config-scope/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/next-config-scope/src/orphan.ts b/packages/core/tests/deslop/fixtures/next-config-scope/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/next-config-scope/src/orphan.ts rename to packages/core/tests/deslop/fixtures/next-config-scope/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/next-empty-tsconfig/package.json b/packages/core/tests/deslop/fixtures/next-empty-tsconfig/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/next-empty-tsconfig/package.json rename to packages/core/tests/deslop/fixtures/next-empty-tsconfig/package.json diff --git a/packages/deslop-js/tests/fixtures/next-empty-tsconfig/src/env.ts b/packages/core/tests/deslop/fixtures/next-empty-tsconfig/src/env.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/next-empty-tsconfig/src/env.ts rename to packages/core/tests/deslop/fixtures/next-empty-tsconfig/src/env.ts diff --git a/packages/deslop-js/tests/fixtures/next-empty-tsconfig/src/index.ts b/packages/core/tests/deslop/fixtures/next-empty-tsconfig/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/next-empty-tsconfig/src/index.ts rename to packages/core/tests/deslop/fixtures/next-empty-tsconfig/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/next-empty-tsconfig/src/orphan.ts b/packages/core/tests/deslop/fixtures/next-empty-tsconfig/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/next-empty-tsconfig/src/orphan.ts rename to packages/core/tests/deslop/fixtures/next-empty-tsconfig/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/next-empty-tsconfig/tsconfig.json b/packages/core/tests/deslop/fixtures/next-empty-tsconfig/tsconfig.json similarity index 100% rename from packages/deslop-js/tests/fixtures/next-empty-tsconfig/tsconfig.json rename to packages/core/tests/deslop/fixtures/next-empty-tsconfig/tsconfig.json diff --git a/packages/deslop-js/tests/fixtures/next-middleware/instrumentation.ts b/packages/core/tests/deslop/fixtures/next-middleware/instrumentation.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/next-middleware/instrumentation.ts rename to packages/core/tests/deslop/fixtures/next-middleware/instrumentation.ts diff --git a/packages/deslop-js/tests/fixtures/next-middleware/orphan.ts b/packages/core/tests/deslop/fixtures/next-middleware/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/next-middleware/orphan.ts rename to packages/core/tests/deslop/fixtures/next-middleware/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/next-middleware/package.json b/packages/core/tests/deslop/fixtures/next-middleware/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/next-middleware/package.json rename to packages/core/tests/deslop/fixtures/next-middleware/package.json diff --git a/packages/deslop-js/tests/fixtures/next-middleware/proxy.ts b/packages/core/tests/deslop/fixtures/next-middleware/proxy.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/next-middleware/proxy.ts rename to packages/core/tests/deslop/fixtures/next-middleware/proxy.ts diff --git a/packages/deslop-js/tests/fixtures/next-middleware/src/auth.ts b/packages/core/tests/deslop/fixtures/next-middleware/src/auth.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/next-middleware/src/auth.ts rename to packages/core/tests/deslop/fixtures/next-middleware/src/auth.ts diff --git a/packages/deslop-js/tests/fixtures/next-middleware/src/middleware.ts b/packages/core/tests/deslop/fixtures/next-middleware/src/middleware.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/next-middleware/src/middleware.ts rename to packages/core/tests/deslop/fixtures/next-middleware/src/middleware.ts diff --git a/packages/deslop-js/tests/fixtures/next-pages-mdx/package.json b/packages/core/tests/deslop/fixtures/next-pages-mdx/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/next-pages-mdx/package.json rename to packages/core/tests/deslop/fixtures/next-pages-mdx/package.json diff --git a/packages/deslop-js/tests/fixtures/next-pages-mdx/pages/about.mdx b/packages/core/tests/deslop/fixtures/next-pages-mdx/pages/about.mdx similarity index 100% rename from packages/deslop-js/tests/fixtures/next-pages-mdx/pages/about.mdx rename to packages/core/tests/deslop/fixtures/next-pages-mdx/pages/about.mdx diff --git a/packages/deslop-js/tests/fixtures/next-pages-mdx/pages/index.tsx b/packages/core/tests/deslop/fixtures/next-pages-mdx/pages/index.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/next-pages-mdx/pages/index.tsx rename to packages/core/tests/deslop/fixtures/next-pages-mdx/pages/index.tsx diff --git a/packages/deslop-js/tests/fixtures/next-pages-mdx/src/Home.ts b/packages/core/tests/deslop/fixtures/next-pages-mdx/src/Home.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/next-pages-mdx/src/Home.ts rename to packages/core/tests/deslop/fixtures/next-pages-mdx/src/Home.ts diff --git a/packages/deslop-js/tests/fixtures/next-pages-mdx/src/orphan.ts b/packages/core/tests/deslop/fixtures/next-pages-mdx/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/next-pages-mdx/src/orphan.ts rename to packages/core/tests/deslop/fixtures/next-pages-mdx/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/ns-chain/consumer.ts b/packages/core/tests/deslop/fixtures/ns-chain/consumer.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/ns-chain/consumer.ts rename to packages/core/tests/deslop/fixtures/ns-chain/consumer.ts diff --git a/packages/deslop-js/tests/fixtures/ns-chain/helpers.ts b/packages/core/tests/deslop/fixtures/ns-chain/helpers.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/ns-chain/helpers.ts rename to packages/core/tests/deslop/fixtures/ns-chain/helpers.ts diff --git a/packages/deslop-js/tests/fixtures/ns-chain/index.ts b/packages/core/tests/deslop/fixtures/ns-chain/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/ns-chain/index.ts rename to packages/core/tests/deslop/fixtures/ns-chain/index.ts diff --git a/packages/deslop-js/tests/fixtures/ns-chain/package.json b/packages/core/tests/deslop/fixtures/ns-chain/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/ns-chain/package.json rename to packages/core/tests/deslop/fixtures/ns-chain/package.json diff --git a/packages/deslop-js/tests/fixtures/ns-chain/unused-module.ts b/packages/core/tests/deslop/fixtures/ns-chain/unused-module.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/ns-chain/unused-module.ts rename to packages/core/tests/deslop/fixtures/ns-chain/unused-module.ts diff --git a/packages/deslop-js/tests/fixtures/ns-exports/package.json b/packages/core/tests/deslop/fixtures/ns-exports/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/ns-exports/package.json rename to packages/core/tests/deslop/fixtures/ns-exports/package.json diff --git a/packages/deslop-js/tests/fixtures/ns-exports/src/helpers.ts b/packages/core/tests/deslop/fixtures/ns-exports/src/helpers.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/ns-exports/src/helpers.ts rename to packages/core/tests/deslop/fixtures/ns-exports/src/helpers.ts diff --git a/packages/deslop-js/tests/fixtures/ns-exports/src/index.ts b/packages/core/tests/deslop/fixtures/ns-exports/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/ns-exports/src/index.ts rename to packages/core/tests/deslop/fixtures/ns-exports/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/ns-forin/package.json b/packages/core/tests/deslop/fixtures/ns-forin/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/ns-forin/package.json rename to packages/core/tests/deslop/fixtures/ns-forin/package.json diff --git a/packages/deslop-js/tests/fixtures/ns-forin/src/config.ts b/packages/core/tests/deslop/fixtures/ns-forin/src/config.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/ns-forin/src/config.ts rename to packages/core/tests/deslop/fixtures/ns-forin/src/config.ts diff --git a/packages/deslop-js/tests/fixtures/ns-forin/src/index.ts b/packages/core/tests/deslop/fixtures/ns-forin/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/ns-forin/src/index.ts rename to packages/core/tests/deslop/fixtures/ns-forin/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/ns-imports/package.json b/packages/core/tests/deslop/fixtures/ns-imports/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/ns-imports/package.json rename to packages/core/tests/deslop/fixtures/ns-imports/package.json diff --git a/packages/deslop-js/tests/fixtures/ns-imports/src/index.ts b/packages/core/tests/deslop/fixtures/ns-imports/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/ns-imports/src/index.ts rename to packages/core/tests/deslop/fixtures/ns-imports/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/ns-imports/src/utils.ts b/packages/core/tests/deslop/fixtures/ns-imports/src/utils.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/ns-imports/src/utils.ts rename to packages/core/tests/deslop/fixtures/ns-imports/src/utils.ts diff --git a/packages/deslop-js/tests/fixtures/ns-partial/package.json b/packages/core/tests/deslop/fixtures/ns-partial/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/ns-partial/package.json rename to packages/core/tests/deslop/fixtures/ns-partial/package.json diff --git a/packages/deslop-js/tests/fixtures/ns-partial/src/index.ts b/packages/core/tests/deslop/fixtures/ns-partial/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/ns-partial/src/index.ts rename to packages/core/tests/deslop/fixtures/ns-partial/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/ns-partial/src/math.ts b/packages/core/tests/deslop/fixtures/ns-partial/src/math.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/ns-partial/src/math.ts rename to packages/core/tests/deslop/fixtures/ns-partial/src/math.ts diff --git a/packages/deslop-js/tests/fixtures/ns-reexport/package.json b/packages/core/tests/deslop/fixtures/ns-reexport/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/ns-reexport/package.json rename to packages/core/tests/deslop/fixtures/ns-reexport/package.json diff --git a/packages/deslop-js/tests/fixtures/ns-reexport/src/index.ts b/packages/core/tests/deslop/fixtures/ns-reexport/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/ns-reexport/src/index.ts rename to packages/core/tests/deslop/fixtures/ns-reexport/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/ns-reexport/src/lib/helpers.ts b/packages/core/tests/deslop/fixtures/ns-reexport/src/lib/helpers.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/ns-reexport/src/lib/helpers.ts rename to packages/core/tests/deslop/fixtures/ns-reexport/src/lib/helpers.ts diff --git a/packages/deslop-js/tests/fixtures/ns-reexport/src/lib/index.ts b/packages/core/tests/deslop/fixtures/ns-reexport/src/lib/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/ns-reexport/src/lib/index.ts rename to packages/core/tests/deslop/fixtures/ns-reexport/src/lib/index.ts diff --git a/packages/deslop-js/tests/fixtures/ns-spread/package.json b/packages/core/tests/deslop/fixtures/ns-spread/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/ns-spread/package.json rename to packages/core/tests/deslop/fixtures/ns-spread/package.json diff --git a/packages/deslop-js/tests/fixtures/ns-spread/src/index.ts b/packages/core/tests/deslop/fixtures/ns-spread/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/ns-spread/src/index.ts rename to packages/core/tests/deslop/fixtures/ns-spread/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/ns-spread/src/utils.ts b/packages/core/tests/deslop/fixtures/ns-spread/src/utils.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/ns-spread/src/utils.ts rename to packages/core/tests/deslop/fixtures/ns-spread/src/utils.ts diff --git a/packages/deslop-js/tests/fixtures/ns-whole/package.json b/packages/core/tests/deslop/fixtures/ns-whole/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/ns-whole/package.json rename to packages/core/tests/deslop/fixtures/ns-whole/package.json diff --git a/packages/deslop-js/tests/fixtures/ns-whole/src/index.ts b/packages/core/tests/deslop/fixtures/ns-whole/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/ns-whole/src/index.ts rename to packages/core/tests/deslop/fixtures/ns-whole/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/ns-whole/src/utils.ts b/packages/core/tests/deslop/fixtures/ns-whole/src/utils.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/ns-whole/src/utils.ts rename to packages/core/tests/deslop/fixtures/ns-whole/src/utils.ts diff --git a/packages/deslop-js/tests/fixtures/numeric-keys-types/package.json b/packages/core/tests/deslop/fixtures/numeric-keys-types/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/numeric-keys-types/package.json rename to packages/core/tests/deslop/fixtures/numeric-keys-types/package.json diff --git a/packages/deslop-js/tests/fixtures/numeric-keys-types/src/index.ts b/packages/core/tests/deslop/fixtures/numeric-keys-types/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/numeric-keys-types/src/index.ts rename to packages/core/tests/deslop/fixtures/numeric-keys-types/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/optional-deps/orphan.ts b/packages/core/tests/deslop/fixtures/optional-deps/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/optional-deps/orphan.ts rename to packages/core/tests/deslop/fixtures/optional-deps/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/optional-deps/package.json b/packages/core/tests/deslop/fixtures/optional-deps/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/optional-deps/package.json rename to packages/core/tests/deslop/fixtures/optional-deps/package.json diff --git a/packages/deslop-js/tests/fixtures/optional-deps/sanity.cli.ts b/packages/core/tests/deslop/fixtures/optional-deps/sanity.cli.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/optional-deps/sanity.cli.ts rename to packages/core/tests/deslop/fixtures/optional-deps/sanity.cli.ts diff --git a/packages/deslop-js/tests/fixtures/optional-deps/sanity.config.ts b/packages/core/tests/deslop/fixtures/optional-deps/sanity.config.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/optional-deps/sanity.config.ts rename to packages/core/tests/deslop/fixtures/optional-deps/sanity.config.ts diff --git a/packages/deslop-js/tests/fixtures/optional-deps/src/index.ts b/packages/core/tests/deslop/fixtures/optional-deps/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/optional-deps/src/index.ts rename to packages/core/tests/deslop/fixtures/optional-deps/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/orphan-barrel-subtree/package.json b/packages/core/tests/deslop/fixtures/orphan-barrel-subtree/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/orphan-barrel-subtree/package.json rename to packages/core/tests/deslop/fixtures/orphan-barrel-subtree/package.json diff --git a/packages/deslop-js/tests/fixtures/orphan-barrel-subtree/src/index.ts b/packages/core/tests/deslop/fixtures/orphan-barrel-subtree/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/orphan-barrel-subtree/src/index.ts rename to packages/core/tests/deslop/fixtures/orphan-barrel-subtree/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/orphan-barrel-subtree/src/subtree/setup.ts b/packages/core/tests/deslop/fixtures/orphan-barrel-subtree/src/subtree/setup.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/orphan-barrel-subtree/src/subtree/setup.ts rename to packages/core/tests/deslop/fixtures/orphan-barrel-subtree/src/subtree/setup.ts diff --git a/packages/deslop-js/tests/fixtures/orphan-barrel-subtree/src/subtree/tabs/helpers.ts b/packages/core/tests/deslop/fixtures/orphan-barrel-subtree/src/subtree/tabs/helpers.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/orphan-barrel-subtree/src/subtree/tabs/helpers.ts rename to packages/core/tests/deslop/fixtures/orphan-barrel-subtree/src/subtree/tabs/helpers.ts diff --git a/packages/deslop-js/tests/fixtures/orphan-barrel-subtree/src/subtree/tabs/index.ts b/packages/core/tests/deslop/fixtures/orphan-barrel-subtree/src/subtree/tabs/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/orphan-barrel-subtree/src/subtree/tabs/index.ts rename to packages/core/tests/deslop/fixtures/orphan-barrel-subtree/src/subtree/tabs/index.ts diff --git a/packages/deslop-js/tests/fixtures/orphan-dynamic-subtree/package.json b/packages/core/tests/deslop/fixtures/orphan-dynamic-subtree/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/orphan-dynamic-subtree/package.json rename to packages/core/tests/deslop/fixtures/orphan-dynamic-subtree/package.json diff --git a/packages/deslop-js/tests/fixtures/orphan-dynamic-subtree/src/index.ts b/packages/core/tests/deslop/fixtures/orphan-dynamic-subtree/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/orphan-dynamic-subtree/src/index.ts rename to packages/core/tests/deslop/fixtures/orphan-dynamic-subtree/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/orphan-dynamic-subtree/src/subtree/lazy.ts b/packages/core/tests/deslop/fixtures/orphan-dynamic-subtree/src/subtree/lazy.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/orphan-dynamic-subtree/src/subtree/lazy.ts rename to packages/core/tests/deslop/fixtures/orphan-dynamic-subtree/src/subtree/lazy.ts diff --git a/packages/deslop-js/tests/fixtures/orphan-dynamic-subtree/src/subtree/setup.ts b/packages/core/tests/deslop/fixtures/orphan-dynamic-subtree/src/subtree/setup.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/orphan-dynamic-subtree/src/subtree/setup.ts rename to packages/core/tests/deslop/fixtures/orphan-dynamic-subtree/src/subtree/setup.ts diff --git a/packages/deslop-js/tests/fixtures/orphan-mixed-exports/package.json b/packages/core/tests/deslop/fixtures/orphan-mixed-exports/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/orphan-mixed-exports/package.json rename to packages/core/tests/deslop/fixtures/orphan-mixed-exports/package.json diff --git a/packages/deslop-js/tests/fixtures/orphan-mixed-exports/src/index.ts b/packages/core/tests/deslop/fixtures/orphan-mixed-exports/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/orphan-mixed-exports/src/index.ts rename to packages/core/tests/deslop/fixtures/orphan-mixed-exports/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/orphan-mixed-exports/src/test-utils/helpers.ts b/packages/core/tests/deslop/fixtures/orphan-mixed-exports/src/test-utils/helpers.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/orphan-mixed-exports/src/test-utils/helpers.ts rename to packages/core/tests/deslop/fixtures/orphan-mixed-exports/src/test-utils/helpers.ts diff --git a/packages/deslop-js/tests/fixtures/orphan-mixed-exports/src/test-utils/setup.ts b/packages/core/tests/deslop/fixtures/orphan-mixed-exports/src/test-utils/setup.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/orphan-mixed-exports/src/test-utils/setup.ts rename to packages/core/tests/deslop/fixtures/orphan-mixed-exports/src/test-utils/setup.ts diff --git a/packages/deslop-js/tests/fixtures/orphan-shared-child/package.json b/packages/core/tests/deslop/fixtures/orphan-shared-child/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/orphan-shared-child/package.json rename to packages/core/tests/deslop/fixtures/orphan-shared-child/package.json diff --git a/packages/deslop-js/tests/fixtures/orphan-shared-child/src/index.ts b/packages/core/tests/deslop/fixtures/orphan-shared-child/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/orphan-shared-child/src/index.ts rename to packages/core/tests/deslop/fixtures/orphan-shared-child/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/orphan-shared-child/src/shared/utils.ts b/packages/core/tests/deslop/fixtures/orphan-shared-child/src/shared/utils.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/orphan-shared-child/src/shared/utils.ts rename to packages/core/tests/deslop/fixtures/orphan-shared-child/src/shared/utils.ts diff --git a/packages/deslop-js/tests/fixtures/orphan-shared-child/src/subtree/helpers.ts b/packages/core/tests/deslop/fixtures/orphan-shared-child/src/subtree/helpers.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/orphan-shared-child/src/subtree/helpers.ts rename to packages/core/tests/deslop/fixtures/orphan-shared-child/src/subtree/helpers.ts diff --git a/packages/deslop-js/tests/fixtures/orphan-shared-child/src/subtree/setup.ts b/packages/core/tests/deslop/fixtures/orphan-shared-child/src/subtree/setup.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/orphan-shared-child/src/subtree/setup.ts rename to packages/core/tests/deslop/fixtures/orphan-shared-child/src/subtree/setup.ts diff --git a/packages/deslop-js/tests/fixtures/outdir-mapping/main/index.ts b/packages/core/tests/deslop/fixtures/outdir-mapping/main/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/outdir-mapping/main/index.ts rename to packages/core/tests/deslop/fixtures/outdir-mapping/main/index.ts diff --git a/packages/deslop-js/tests/fixtures/outdir-mapping/main/orphan.ts b/packages/core/tests/deslop/fixtures/outdir-mapping/main/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/outdir-mapping/main/orphan.ts rename to packages/core/tests/deslop/fixtures/outdir-mapping/main/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/outdir-mapping/main/setup.ts b/packages/core/tests/deslop/fixtures/outdir-mapping/main/setup.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/outdir-mapping/main/setup.ts rename to packages/core/tests/deslop/fixtures/outdir-mapping/main/setup.ts diff --git a/packages/deslop-js/tests/fixtures/outdir-mapping/package.json b/packages/core/tests/deslop/fixtures/outdir-mapping/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/outdir-mapping/package.json rename to packages/core/tests/deslop/fixtures/outdir-mapping/package.json diff --git a/packages/deslop-js/tests/fixtures/outdir-mapping/tsconfig.json b/packages/core/tests/deslop/fixtures/outdir-mapping/tsconfig.json similarity index 100% rename from packages/deslop-js/tests/fixtures/outdir-mapping/tsconfig.json rename to packages/core/tests/deslop/fixtures/outdir-mapping/tsconfig.json diff --git a/packages/deslop-js/tests/fixtures/path-alias-specificity/general/feature/thing.ts b/packages/core/tests/deslop/fixtures/path-alias-specificity/general/feature/thing.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/path-alias-specificity/general/feature/thing.ts rename to packages/core/tests/deslop/fixtures/path-alias-specificity/general/feature/thing.ts diff --git a/packages/deslop-js/tests/fixtures/path-alias-specificity/package.json b/packages/core/tests/deslop/fixtures/path-alias-specificity/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/path-alias-specificity/package.json rename to packages/core/tests/deslop/fixtures/path-alias-specificity/package.json diff --git a/packages/deslop-js/tests/fixtures/path-alias-specificity/special/thing.ts b/packages/core/tests/deslop/fixtures/path-alias-specificity/special/thing.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/path-alias-specificity/special/thing.ts rename to packages/core/tests/deslop/fixtures/path-alias-specificity/special/thing.ts diff --git a/packages/deslop-js/tests/fixtures/path-alias-specificity/src/index.ts b/packages/core/tests/deslop/fixtures/path-alias-specificity/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/path-alias-specificity/src/index.ts rename to packages/core/tests/deslop/fixtures/path-alias-specificity/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/playwright-ext/index.ts b/packages/core/tests/deslop/fixtures/playwright-ext/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/playwright-ext/index.ts rename to packages/core/tests/deslop/fixtures/playwright-ext/index.ts diff --git a/packages/deslop-js/tests/fixtures/playwright-ext/my-test.pw.ts b/packages/core/tests/deslop/fixtures/playwright-ext/my-test.pw.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/playwright-ext/my-test.pw.ts rename to packages/core/tests/deslop/fixtures/playwright-ext/my-test.pw.ts diff --git a/packages/deslop-js/tests/fixtures/playwright-ext/orphan.ts b/packages/core/tests/deslop/fixtures/playwright-ext/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/playwright-ext/orphan.ts rename to packages/core/tests/deslop/fixtures/playwright-ext/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/playwright-ext/package.json b/packages/core/tests/deslop/fixtures/playwright-ext/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/playwright-ext/package.json rename to packages/core/tests/deslop/fixtures/playwright-ext/package.json diff --git a/packages/deslop-js/tests/fixtures/playwright-lib/e2e/login.spec.ts b/packages/core/tests/deslop/fixtures/playwright-lib/e2e/login.spec.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/playwright-lib/e2e/login.spec.ts rename to packages/core/tests/deslop/fixtures/playwright-lib/e2e/login.spec.ts diff --git a/packages/deslop-js/tests/fixtures/playwright-lib/index.ts b/packages/core/tests/deslop/fixtures/playwright-lib/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/playwright-lib/index.ts rename to packages/core/tests/deslop/fixtures/playwright-lib/index.ts diff --git a/packages/deslop-js/tests/fixtures/playwright-lib/lib/helpers.ts b/packages/core/tests/deslop/fixtures/playwright-lib/lib/helpers.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/playwright-lib/lib/helpers.ts rename to packages/core/tests/deslop/fixtures/playwright-lib/lib/helpers.ts diff --git a/packages/deslop-js/tests/fixtures/playwright-lib/orphan.ts b/packages/core/tests/deslop/fixtures/playwright-lib/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/playwright-lib/orphan.ts rename to packages/core/tests/deslop/fixtures/playwright-lib/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/playwright-lib/package.json b/packages/core/tests/deslop/fixtures/playwright-lib/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/playwright-lib/package.json rename to packages/core/tests/deslop/fixtures/playwright-lib/package.json diff --git a/packages/deslop-js/tests/fixtures/playwright-lib/support/commands.ts b/packages/core/tests/deslop/fixtures/playwright-lib/support/commands.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/playwright-lib/support/commands.ts rename to packages/core/tests/deslop/fixtures/playwright-lib/support/commands.ts diff --git a/packages/deslop-js/tests/fixtures/playwright-lib/tests/smoke.spec.ts b/packages/core/tests/deslop/fixtures/playwright-lib/tests/smoke.spec.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/playwright-lib/tests/smoke.spec.ts rename to packages/core/tests/deslop/fixtures/playwright-lib/tests/smoke.spec.ts diff --git a/packages/deslop-js/tests/fixtures/pnpm-nested-overrides/package.json b/packages/core/tests/deslop/fixtures/pnpm-nested-overrides/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/pnpm-nested-overrides/package.json rename to packages/core/tests/deslop/fixtures/pnpm-nested-overrides/package.json diff --git a/packages/deslop-js/tests/fixtures/pnpm-nested-overrides/pnpm-workspace.yaml b/packages/core/tests/deslop/fixtures/pnpm-nested-overrides/pnpm-workspace.yaml similarity index 100% rename from packages/deslop-js/tests/fixtures/pnpm-nested-overrides/pnpm-workspace.yaml rename to packages/core/tests/deslop/fixtures/pnpm-nested-overrides/pnpm-workspace.yaml diff --git a/packages/deslop-js/tests/fixtures/pnpm-nested-overrides/src/index.ts b/packages/core/tests/deslop/fixtures/pnpm-nested-overrides/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/pnpm-nested-overrides/src/index.ts rename to packages/core/tests/deslop/fixtures/pnpm-nested-overrides/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/pnpm-workspace-override/package.json b/packages/core/tests/deslop/fixtures/pnpm-workspace-override/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/pnpm-workspace-override/package.json rename to packages/core/tests/deslop/fixtures/pnpm-workspace-override/package.json diff --git a/packages/deslop-js/tests/fixtures/pnpm-workspace-override/pnpm-workspace.yaml b/packages/core/tests/deslop/fixtures/pnpm-workspace-override/pnpm-workspace.yaml similarity index 100% rename from packages/deslop-js/tests/fixtures/pnpm-workspace-override/pnpm-workspace.yaml rename to packages/core/tests/deslop/fixtures/pnpm-workspace-override/pnpm-workspace.yaml diff --git a/packages/deslop-js/tests/fixtures/pnpm-workspace-override/src/index.ts b/packages/core/tests/deslop/fixtures/pnpm-workspace-override/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/pnpm-workspace-override/src/index.ts rename to packages/core/tests/deslop/fixtures/pnpm-workspace-override/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/pnpm-workspace-override/vite.config.ts b/packages/core/tests/deslop/fixtures/pnpm-workspace-override/vite.config.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/pnpm-workspace-override/vite.config.ts rename to packages/core/tests/deslop/fixtures/pnpm-workspace-override/vite.config.ts diff --git a/packages/deslop-js/tests/fixtures/polyrepo/orphan-dir/stray.ts b/packages/core/tests/deslop/fixtures/polyrepo/orphan-dir/stray.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/polyrepo/orphan-dir/stray.ts rename to packages/core/tests/deslop/fixtures/polyrepo/orphan-dir/stray.ts diff --git a/packages/deslop-js/tests/fixtures/polyrepo/project-a/package.json b/packages/core/tests/deslop/fixtures/polyrepo/project-a/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/polyrepo/project-a/package.json rename to packages/core/tests/deslop/fixtures/polyrepo/project-a/package.json diff --git a/packages/deslop-js/tests/fixtures/polyrepo/project-a/src/helper.ts b/packages/core/tests/deslop/fixtures/polyrepo/project-a/src/helper.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/polyrepo/project-a/src/helper.ts rename to packages/core/tests/deslop/fixtures/polyrepo/project-a/src/helper.ts diff --git a/packages/deslop-js/tests/fixtures/polyrepo/project-a/src/index.ts b/packages/core/tests/deslop/fixtures/polyrepo/project-a/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/polyrepo/project-a/src/index.ts rename to packages/core/tests/deslop/fixtures/polyrepo/project-a/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/polyrepo/project-a/src/orphan.ts b/packages/core/tests/deslop/fixtures/polyrepo/project-a/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/polyrepo/project-a/src/orphan.ts rename to packages/core/tests/deslop/fixtures/polyrepo/project-a/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/polyrepo/project-b/package.json b/packages/core/tests/deslop/fixtures/polyrepo/project-b/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/polyrepo/project-b/package.json rename to packages/core/tests/deslop/fixtures/polyrepo/project-b/package.json diff --git a/packages/deslop-js/tests/fixtures/polyrepo/project-b/src/index.ts b/packages/core/tests/deslop/fixtures/polyrepo/project-b/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/polyrepo/project-b/src/index.ts rename to packages/core/tests/deslop/fixtures/polyrepo/project-b/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/polyrepo/project-b/src/unused.ts b/packages/core/tests/deslop/fixtures/polyrepo/project-b/src/unused.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/polyrepo/project-b/src/unused.ts rename to packages/core/tests/deslop/fixtures/polyrepo/project-b/src/unused.ts diff --git a/packages/deslop-js/tests/fixtures/prettier-rc-plugins/.prettierrc b/packages/core/tests/deslop/fixtures/prettier-rc-plugins/.prettierrc similarity index 100% rename from packages/deslop-js/tests/fixtures/prettier-rc-plugins/.prettierrc rename to packages/core/tests/deslop/fixtures/prettier-rc-plugins/.prettierrc diff --git a/packages/deslop-js/tests/fixtures/prettier-rc-plugins/package.json b/packages/core/tests/deslop/fixtures/prettier-rc-plugins/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/prettier-rc-plugins/package.json rename to packages/core/tests/deslop/fixtures/prettier-rc-plugins/package.json diff --git a/packages/deslop-js/tests/fixtures/prettier-rc-plugins/src/index.ts b/packages/core/tests/deslop/fixtures/prettier-rc-plugins/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/prettier-rc-plugins/src/index.ts rename to packages/core/tests/deslop/fixtures/prettier-rc-plugins/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/private-type-leak/package.json b/packages/core/tests/deslop/fixtures/private-type-leak/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/private-type-leak/package.json rename to packages/core/tests/deslop/fixtures/private-type-leak/package.json diff --git a/packages/deslop-js/tests/fixtures/private-type-leak/src/index.ts b/packages/core/tests/deslop/fixtures/private-type-leak/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/private-type-leak/src/index.ts rename to packages/core/tests/deslop/fixtures/private-type-leak/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/re-export-cycle/package.json b/packages/core/tests/deslop/fixtures/re-export-cycle/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/re-export-cycle/package.json rename to packages/core/tests/deslop/fixtures/re-export-cycle/package.json diff --git a/packages/deslop-js/tests/fixtures/re-export-cycle/src/barrel.ts b/packages/core/tests/deslop/fixtures/re-export-cycle/src/barrel.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/re-export-cycle/src/barrel.ts rename to packages/core/tests/deslop/fixtures/re-export-cycle/src/barrel.ts diff --git a/packages/deslop-js/tests/fixtures/re-export-cycle/src/index.ts b/packages/core/tests/deslop/fixtures/re-export-cycle/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/re-export-cycle/src/index.ts rename to packages/core/tests/deslop/fixtures/re-export-cycle/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/re-export-cycle/src/leaf.ts b/packages/core/tests/deslop/fixtures/re-export-cycle/src/leaf.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/re-export-cycle/src/leaf.ts rename to packages/core/tests/deslop/fixtures/re-export-cycle/src/leaf.ts diff --git a/packages/deslop-js/tests/fixtures/re-export-cycle/src/other.ts b/packages/core/tests/deslop/fixtures/re-export-cycle/src/other.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/re-export-cycle/src/other.ts rename to packages/core/tests/deslop/fixtures/re-export-cycle/src/other.ts diff --git a/packages/deslop-js/tests/fixtures/react-router/app/components/header.tsx b/packages/core/tests/deslop/fixtures/react-router/app/components/header.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/react-router/app/components/header.tsx rename to packages/core/tests/deslop/fixtures/react-router/app/components/header.tsx diff --git a/packages/deslop-js/tests/fixtures/react-router/app/components/unused-widget.tsx b/packages/core/tests/deslop/fixtures/react-router/app/components/unused-widget.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/react-router/app/components/unused-widget.tsx rename to packages/core/tests/deslop/fixtures/react-router/app/components/unused-widget.tsx diff --git a/packages/deslop-js/tests/fixtures/react-router/app/dashboard/layout.tsx b/packages/core/tests/deslop/fixtures/react-router/app/dashboard/layout.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/react-router/app/dashboard/layout.tsx rename to packages/core/tests/deslop/fixtures/react-router/app/dashboard/layout.tsx diff --git a/packages/deslop-js/tests/fixtures/react-router/app/dashboard/page.tsx b/packages/core/tests/deslop/fixtures/react-router/app/dashboard/page.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/react-router/app/dashboard/page.tsx rename to packages/core/tests/deslop/fixtures/react-router/app/dashboard/page.tsx diff --git a/packages/deslop-js/tests/fixtures/react-router/app/root.tsx b/packages/core/tests/deslop/fixtures/react-router/app/root.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/react-router/app/root.tsx rename to packages/core/tests/deslop/fixtures/react-router/app/root.tsx diff --git a/packages/deslop-js/tests/fixtures/react-router/app/routes.ts b/packages/core/tests/deslop/fixtures/react-router/app/routes.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/react-router/app/routes.ts rename to packages/core/tests/deslop/fixtures/react-router/app/routes.ts diff --git a/packages/deslop-js/tests/fixtures/react-router/app/routes/about.tsx b/packages/core/tests/deslop/fixtures/react-router/app/routes/about.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/react-router/app/routes/about.tsx rename to packages/core/tests/deslop/fixtures/react-router/app/routes/about.tsx diff --git a/packages/deslop-js/tests/fixtures/react-router/app/routes/home.tsx b/packages/core/tests/deslop/fixtures/react-router/app/routes/home.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/react-router/app/routes/home.tsx rename to packages/core/tests/deslop/fixtures/react-router/app/routes/home.tsx diff --git a/packages/deslop-js/tests/fixtures/react-router/package.json b/packages/core/tests/deslop/fixtures/react-router/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/react-router/package.json rename to packages/core/tests/deslop/fixtures/react-router/package.json diff --git a/packages/deslop-js/tests/fixtures/react-router/react-router.config.ts b/packages/core/tests/deslop/fixtures/react-router/react-router.config.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/react-router/react-router.config.ts rename to packages/core/tests/deslop/fixtures/react-router/react-router.config.ts diff --git a/packages/deslop-js/tests/fixtures/redundant-aliases-self/package.json b/packages/core/tests/deslop/fixtures/redundant-aliases-self/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/redundant-aliases-self/package.json rename to packages/core/tests/deslop/fixtures/redundant-aliases-self/package.json diff --git a/packages/deslop-js/tests/fixtures/redundant-aliases-self/src/barrel.ts b/packages/core/tests/deslop/fixtures/redundant-aliases-self/src/barrel.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/redundant-aliases-self/src/barrel.ts rename to packages/core/tests/deslop/fixtures/redundant-aliases-self/src/barrel.ts diff --git a/packages/deslop-js/tests/fixtures/redundant-aliases-self/src/index.ts b/packages/core/tests/deslop/fixtures/redundant-aliases-self/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/redundant-aliases-self/src/index.ts rename to packages/core/tests/deslop/fixtures/redundant-aliases-self/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/redundant-aliases-self/src/source.ts b/packages/core/tests/deslop/fixtures/redundant-aliases-self/src/source.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/redundant-aliases-self/src/source.ts rename to packages/core/tests/deslop/fixtures/redundant-aliases-self/src/source.ts diff --git a/packages/deslop-js/tests/fixtures/redundant-aliases-variable/package.json b/packages/core/tests/deslop/fixtures/redundant-aliases-variable/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/redundant-aliases-variable/package.json rename to packages/core/tests/deslop/fixtures/redundant-aliases-variable/package.json diff --git a/packages/deslop-js/tests/fixtures/redundant-aliases-variable/src/index.ts b/packages/core/tests/deslop/fixtures/redundant-aliases-variable/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/redundant-aliases-variable/src/index.ts rename to packages/core/tests/deslop/fixtures/redundant-aliases-variable/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/redundant-aliases-variable/src/source.ts b/packages/core/tests/deslop/fixtures/redundant-aliases-variable/src/source.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/redundant-aliases-variable/src/source.ts rename to packages/core/tests/deslop/fixtures/redundant-aliases-variable/src/source.ts diff --git a/packages/deslop-js/tests/fixtures/redundant-aliases-variable/tsconfig.json b/packages/core/tests/deslop/fixtures/redundant-aliases-variable/tsconfig.json similarity index 100% rename from packages/deslop-js/tests/fixtures/redundant-aliases-variable/tsconfig.json rename to packages/core/tests/deslop/fixtures/redundant-aliases-variable/tsconfig.json diff --git a/packages/deslop-js/tests/fixtures/redundant-reexports-semantic/package.json b/packages/core/tests/deslop/fixtures/redundant-reexports-semantic/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/redundant-reexports-semantic/package.json rename to packages/core/tests/deslop/fixtures/redundant-reexports-semantic/package.json diff --git a/packages/deslop-js/tests/fixtures/redundant-reexports-semantic/src/barrel.ts b/packages/core/tests/deslop/fixtures/redundant-reexports-semantic/src/barrel.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/redundant-reexports-semantic/src/barrel.ts rename to packages/core/tests/deslop/fixtures/redundant-reexports-semantic/src/barrel.ts diff --git a/packages/deslop-js/tests/fixtures/redundant-reexports-semantic/src/consumer.ts b/packages/core/tests/deslop/fixtures/redundant-reexports-semantic/src/consumer.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/redundant-reexports-semantic/src/consumer.ts rename to packages/core/tests/deslop/fixtures/redundant-reexports-semantic/src/consumer.ts diff --git a/packages/deslop-js/tests/fixtures/redundant-reexports-semantic/src/impl.ts b/packages/core/tests/deslop/fixtures/redundant-reexports-semantic/src/impl.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/redundant-reexports-semantic/src/impl.ts rename to packages/core/tests/deslop/fixtures/redundant-reexports-semantic/src/impl.ts diff --git a/packages/deslop-js/tests/fixtures/redundant-reexports-semantic/src/index.ts b/packages/core/tests/deslop/fixtures/redundant-reexports-semantic/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/redundant-reexports-semantic/src/index.ts rename to packages/core/tests/deslop/fixtures/redundant-reexports-semantic/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/redundant-reexports-semantic/tsconfig.json b/packages/core/tests/deslop/fixtures/redundant-reexports-semantic/tsconfig.json similarity index 100% rename from packages/deslop-js/tests/fixtures/redundant-reexports-semantic/tsconfig.json rename to packages/core/tests/deslop/fixtures/redundant-reexports-semantic/tsconfig.json diff --git a/packages/deslop-js/tests/fixtures/reexport-alias/package.json b/packages/core/tests/deslop/fixtures/reexport-alias/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/reexport-alias/package.json rename to packages/core/tests/deslop/fixtures/reexport-alias/package.json diff --git a/packages/deslop-js/tests/fixtures/reexport-alias/src/barrel-mid.ts b/packages/core/tests/deslop/fixtures/reexport-alias/src/barrel-mid.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/reexport-alias/src/barrel-mid.ts rename to packages/core/tests/deslop/fixtures/reexport-alias/src/barrel-mid.ts diff --git a/packages/deslop-js/tests/fixtures/reexport-alias/src/barrel-top.ts b/packages/core/tests/deslop/fixtures/reexport-alias/src/barrel-top.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/reexport-alias/src/barrel-top.ts rename to packages/core/tests/deslop/fixtures/reexport-alias/src/barrel-top.ts diff --git a/packages/deslop-js/tests/fixtures/reexport-alias/src/index.ts b/packages/core/tests/deslop/fixtures/reexport-alias/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/reexport-alias/src/index.ts rename to packages/core/tests/deslop/fixtures/reexport-alias/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/reexport-alias/src/source.ts b/packages/core/tests/deslop/fixtures/reexport-alias/src/source.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/reexport-alias/src/source.ts rename to packages/core/tests/deslop/fixtures/reexport-alias/src/source.ts diff --git a/packages/deslop-js/tests/fixtures/reexport-chains/package.json b/packages/core/tests/deslop/fixtures/reexport-chains/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/reexport-chains/package.json rename to packages/core/tests/deslop/fixtures/reexport-chains/package.json diff --git a/packages/deslop-js/tests/fixtures/reexport-chains/src/barrel-a.ts b/packages/core/tests/deslop/fixtures/reexport-chains/src/barrel-a.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/reexport-chains/src/barrel-a.ts rename to packages/core/tests/deslop/fixtures/reexport-chains/src/barrel-a.ts diff --git a/packages/deslop-js/tests/fixtures/reexport-chains/src/barrel-b.ts b/packages/core/tests/deslop/fixtures/reexport-chains/src/barrel-b.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/reexport-chains/src/barrel-b.ts rename to packages/core/tests/deslop/fixtures/reexport-chains/src/barrel-b.ts diff --git a/packages/deslop-js/tests/fixtures/reexport-chains/src/barrel-c.ts b/packages/core/tests/deslop/fixtures/reexport-chains/src/barrel-c.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/reexport-chains/src/barrel-c.ts rename to packages/core/tests/deslop/fixtures/reexport-chains/src/barrel-c.ts diff --git a/packages/deslop-js/tests/fixtures/reexport-chains/src/index.ts b/packages/core/tests/deslop/fixtures/reexport-chains/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/reexport-chains/src/index.ts rename to packages/core/tests/deslop/fixtures/reexport-chains/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/reexport-chains/src/source.ts b/packages/core/tests/deslop/fixtures/reexport-chains/src/source.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/reexport-chains/src/source.ts rename to packages/core/tests/deslop/fixtures/reexport-chains/src/source.ts diff --git a/packages/deslop-js/tests/fixtures/reexport-default-named/consumer.ts b/packages/core/tests/deslop/fixtures/reexport-default-named/consumer.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/reexport-default-named/consumer.ts rename to packages/core/tests/deslop/fixtures/reexport-default-named/consumer.ts diff --git a/packages/deslop-js/tests/fixtures/reexport-default-named/gadget.ts b/packages/core/tests/deslop/fixtures/reexport-default-named/gadget.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/reexport-default-named/gadget.ts rename to packages/core/tests/deslop/fixtures/reexport-default-named/gadget.ts diff --git a/packages/deslop-js/tests/fixtures/reexport-default-named/index.ts b/packages/core/tests/deslop/fixtures/reexport-default-named/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/reexport-default-named/index.ts rename to packages/core/tests/deslop/fixtures/reexport-default-named/index.ts diff --git a/packages/deslop-js/tests/fixtures/reexport-default-named/package.json b/packages/core/tests/deslop/fixtures/reexport-default-named/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/reexport-default-named/package.json rename to packages/core/tests/deslop/fixtures/reexport-default-named/package.json diff --git a/packages/deslop-js/tests/fixtures/reexport-default-named/widget.ts b/packages/core/tests/deslop/fixtures/reexport-default-named/widget.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/reexport-default-named/widget.ts rename to packages/core/tests/deslop/fixtures/reexport-default-named/widget.ts diff --git a/packages/deslop-js/tests/fixtures/reexport-default/package.json b/packages/core/tests/deslop/fixtures/reexport-default/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/reexport-default/package.json rename to packages/core/tests/deslop/fixtures/reexport-default/package.json diff --git a/packages/deslop-js/tests/fixtures/reexport-default/src/components/Button.ts b/packages/core/tests/deslop/fixtures/reexport-default/src/components/Button.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/reexport-default/src/components/Button.ts rename to packages/core/tests/deslop/fixtures/reexport-default/src/components/Button.ts diff --git a/packages/deslop-js/tests/fixtures/reexport-default/src/components/Card/Card.tsx b/packages/core/tests/deslop/fixtures/reexport-default/src/components/Card/Card.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/reexport-default/src/components/Card/Card.tsx rename to packages/core/tests/deslop/fixtures/reexport-default/src/components/Card/Card.tsx diff --git a/packages/deslop-js/tests/fixtures/reexport-default/src/components/Card/index.ts b/packages/core/tests/deslop/fixtures/reexport-default/src/components/Card/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/reexport-default/src/components/Card/index.ts rename to packages/core/tests/deslop/fixtures/reexport-default/src/components/Card/index.ts diff --git a/packages/deslop-js/tests/fixtures/reexport-default/src/components/index.ts b/packages/core/tests/deslop/fixtures/reexport-default/src/components/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/reexport-default/src/components/index.ts rename to packages/core/tests/deslop/fixtures/reexport-default/src/components/index.ts diff --git a/packages/deslop-js/tests/fixtures/reexport-default/src/index.ts b/packages/core/tests/deslop/fixtures/reexport-default/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/reexport-default/src/index.ts rename to packages/core/tests/deslop/fixtures/reexport-default/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/reexport-file-variants/package.json b/packages/core/tests/deslop/fixtures/reexport-file-variants/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/reexport-file-variants/package.json rename to packages/core/tests/deslop/fixtures/reexport-file-variants/package.json diff --git a/packages/deslop-js/tests/fixtures/reexport-file-variants/src/index.ts b/packages/core/tests/deslop/fixtures/reexport-file-variants/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/reexport-file-variants/src/index.ts rename to packages/core/tests/deslop/fixtures/reexport-file-variants/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/reexport-file-variants/src/named-barrel.ts b/packages/core/tests/deslop/fixtures/reexport-file-variants/src/named-barrel.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/reexport-file-variants/src/named-barrel.ts rename to packages/core/tests/deslop/fixtures/reexport-file-variants/src/named-barrel.ts diff --git a/packages/deslop-js/tests/fixtures/reexport-file-variants/src/orphan.ts b/packages/core/tests/deslop/fixtures/reexport-file-variants/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/reexport-file-variants/src/orphan.ts rename to packages/core/tests/deslop/fixtures/reexport-file-variants/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/reexport-file-variants/src/star-barrel.ts b/packages/core/tests/deslop/fixtures/reexport-file-variants/src/star-barrel.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/reexport-file-variants/src/star-barrel.ts rename to packages/core/tests/deslop/fixtures/reexport-file-variants/src/star-barrel.ts diff --git a/packages/deslop-js/tests/fixtures/reexport-file-variants/src/utils/format.ts b/packages/core/tests/deslop/fixtures/reexport-file-variants/src/utils/format.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/reexport-file-variants/src/utils/format.ts rename to packages/core/tests/deslop/fixtures/reexport-file-variants/src/utils/format.ts diff --git a/packages/deslop-js/tests/fixtures/reexport-file-variants/src/utils/greet.ts b/packages/core/tests/deslop/fixtures/reexport-file-variants/src/utils/greet.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/reexport-file-variants/src/utils/greet.ts rename to packages/core/tests/deslop/fixtures/reexport-file-variants/src/utils/greet.ts diff --git a/packages/deslop-js/tests/fixtures/reexport-mixed/package.json b/packages/core/tests/deslop/fixtures/reexport-mixed/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/reexport-mixed/package.json rename to packages/core/tests/deslop/fixtures/reexport-mixed/package.json diff --git a/packages/deslop-js/tests/fixtures/reexport-mixed/src/barrel.ts b/packages/core/tests/deslop/fixtures/reexport-mixed/src/barrel.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/reexport-mixed/src/barrel.ts rename to packages/core/tests/deslop/fixtures/reexport-mixed/src/barrel.ts diff --git a/packages/deslop-js/tests/fixtures/reexport-mixed/src/index.ts b/packages/core/tests/deslop/fixtures/reexport-mixed/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/reexport-mixed/src/index.ts rename to packages/core/tests/deslop/fixtures/reexport-mixed/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/reexport-mixed/src/named-source.ts b/packages/core/tests/deslop/fixtures/reexport-mixed/src/named-source.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/reexport-mixed/src/named-source.ts rename to packages/core/tests/deslop/fixtures/reexport-mixed/src/named-source.ts diff --git a/packages/deslop-js/tests/fixtures/reexport-mixed/src/star-source.ts b/packages/core/tests/deslop/fixtures/reexport-mixed/src/star-source.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/reexport-mixed/src/star-source.ts rename to packages/core/tests/deslop/fixtures/reexport-mixed/src/star-source.ts diff --git a/packages/deslop-js/tests/fixtures/reexport-multi-hop/package.json b/packages/core/tests/deslop/fixtures/reexport-multi-hop/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/reexport-multi-hop/package.json rename to packages/core/tests/deslop/fixtures/reexport-multi-hop/package.json diff --git a/packages/deslop-js/tests/fixtures/reexport-multi-hop/src/barrel1.ts b/packages/core/tests/deslop/fixtures/reexport-multi-hop/src/barrel1.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/reexport-multi-hop/src/barrel1.ts rename to packages/core/tests/deslop/fixtures/reexport-multi-hop/src/barrel1.ts diff --git a/packages/deslop-js/tests/fixtures/reexport-multi-hop/src/barrel2.ts b/packages/core/tests/deslop/fixtures/reexport-multi-hop/src/barrel2.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/reexport-multi-hop/src/barrel2.ts rename to packages/core/tests/deslop/fixtures/reexport-multi-hop/src/barrel2.ts diff --git a/packages/deslop-js/tests/fixtures/reexport-multi-hop/src/index.ts b/packages/core/tests/deslop/fixtures/reexport-multi-hop/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/reexport-multi-hop/src/index.ts rename to packages/core/tests/deslop/fixtures/reexport-multi-hop/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/reexport-multi-hop/src/source.ts b/packages/core/tests/deslop/fixtures/reexport-multi-hop/src/source.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/reexport-multi-hop/src/source.ts rename to packages/core/tests/deslop/fixtures/reexport-multi-hop/src/source.ts diff --git a/packages/deslop-js/tests/fixtures/reexport-multi-level/package.json b/packages/core/tests/deslop/fixtures/reexport-multi-level/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/reexport-multi-level/package.json rename to packages/core/tests/deslop/fixtures/reexport-multi-level/package.json diff --git a/packages/deslop-js/tests/fixtures/reexport-multi-level/src/barrel-a.ts b/packages/core/tests/deslop/fixtures/reexport-multi-level/src/barrel-a.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/reexport-multi-level/src/barrel-a.ts rename to packages/core/tests/deslop/fixtures/reexport-multi-level/src/barrel-a.ts diff --git a/packages/deslop-js/tests/fixtures/reexport-multi-level/src/barrel-b.ts b/packages/core/tests/deslop/fixtures/reexport-multi-level/src/barrel-b.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/reexport-multi-level/src/barrel-b.ts rename to packages/core/tests/deslop/fixtures/reexport-multi-level/src/barrel-b.ts diff --git a/packages/deslop-js/tests/fixtures/reexport-multi-level/src/index.ts b/packages/core/tests/deslop/fixtures/reexport-multi-level/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/reexport-multi-level/src/index.ts rename to packages/core/tests/deslop/fixtures/reexport-multi-level/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/reexport-multi-level/src/source.ts b/packages/core/tests/deslop/fixtures/reexport-multi-level/src/source.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/reexport-multi-level/src/source.ts rename to packages/core/tests/deslop/fixtures/reexport-multi-level/src/source.ts diff --git a/packages/deslop-js/tests/fixtures/reexport-star-named/consumer.ts b/packages/core/tests/deslop/fixtures/reexport-star-named/consumer.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/reexport-star-named/consumer.ts rename to packages/core/tests/deslop/fixtures/reexport-star-named/consumer.ts diff --git a/packages/deslop-js/tests/fixtures/reexport-star-named/index.ts b/packages/core/tests/deslop/fixtures/reexport-star-named/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/reexport-star-named/index.ts rename to packages/core/tests/deslop/fixtures/reexport-star-named/index.ts diff --git a/packages/deslop-js/tests/fixtures/reexport-star-named/package.json b/packages/core/tests/deslop/fixtures/reexport-star-named/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/reexport-star-named/package.json rename to packages/core/tests/deslop/fixtures/reexport-star-named/package.json diff --git a/packages/deslop-js/tests/fixtures/reexport-star-named/special.ts b/packages/core/tests/deslop/fixtures/reexport-star-named/special.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/reexport-star-named/special.ts rename to packages/core/tests/deslop/fixtures/reexport-star-named/special.ts diff --git a/packages/deslop-js/tests/fixtures/reexport-star-named/utils.ts b/packages/core/tests/deslop/fixtures/reexport-star-named/utils.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/reexport-star-named/utils.ts rename to packages/core/tests/deslop/fixtures/reexport-star-named/utils.ts diff --git a/packages/deslop-js/tests/fixtures/reexport-star/package.json b/packages/core/tests/deslop/fixtures/reexport-star/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/reexport-star/package.json rename to packages/core/tests/deslop/fixtures/reexport-star/package.json diff --git a/packages/deslop-js/tests/fixtures/reexport-star/src/barrel.ts b/packages/core/tests/deslop/fixtures/reexport-star/src/barrel.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/reexport-star/src/barrel.ts rename to packages/core/tests/deslop/fixtures/reexport-star/src/barrel.ts diff --git a/packages/deslop-js/tests/fixtures/reexport-star/src/index.ts b/packages/core/tests/deslop/fixtures/reexport-star/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/reexport-star/src/index.ts rename to packages/core/tests/deslop/fixtures/reexport-star/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/reexport-star/src/module-a.ts b/packages/core/tests/deslop/fixtures/reexport-star/src/module-a.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/reexport-star/src/module-a.ts rename to packages/core/tests/deslop/fixtures/reexport-star/src/module-a.ts diff --git a/packages/deslop-js/tests/fixtures/reexport-star/src/module-b.ts b/packages/core/tests/deslop/fixtures/reexport-star/src/module-b.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/reexport-star/src/module-b.ts rename to packages/core/tests/deslop/fixtures/reexport-star/src/module-b.ts diff --git a/packages/deslop-js/tests/fixtures/reexport-star/src/module-c.ts b/packages/core/tests/deslop/fixtures/reexport-star/src/module-c.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/reexport-star/src/module-c.ts rename to packages/core/tests/deslop/fixtures/reexport-star/src/module-c.ts diff --git a/packages/deslop-js/tests/fixtures/reexport-unused/package.json b/packages/core/tests/deslop/fixtures/reexport-unused/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/reexport-unused/package.json rename to packages/core/tests/deslop/fixtures/reexport-unused/package.json diff --git a/packages/deslop-js/tests/fixtures/reexport-unused/src/components/index.ts b/packages/core/tests/deslop/fixtures/reexport-unused/src/components/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/reexport-unused/src/components/index.ts rename to packages/core/tests/deslop/fixtures/reexport-unused/src/components/index.ts diff --git a/packages/deslop-js/tests/fixtures/reexport-unused/src/components/types-source.ts b/packages/core/tests/deslop/fixtures/reexport-unused/src/components/types-source.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/reexport-unused/src/components/types-source.ts rename to packages/core/tests/deslop/fixtures/reexport-unused/src/components/types-source.ts diff --git a/packages/deslop-js/tests/fixtures/reexport-unused/src/components/unused-source.ts b/packages/core/tests/deslop/fixtures/reexport-unused/src/components/unused-source.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/reexport-unused/src/components/unused-source.ts rename to packages/core/tests/deslop/fixtures/reexport-unused/src/components/unused-source.ts diff --git a/packages/deslop-js/tests/fixtures/reexport-unused/src/components/used-source.ts b/packages/core/tests/deslop/fixtures/reexport-unused/src/components/used-source.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/reexport-unused/src/components/used-source.ts rename to packages/core/tests/deslop/fixtures/reexport-unused/src/components/used-source.ts diff --git a/packages/deslop-js/tests/fixtures/reexport-unused/src/index.ts b/packages/core/tests/deslop/fixtures/reexport-unused/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/reexport-unused/src/index.ts rename to packages/core/tests/deslop/fixtures/reexport-unused/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/remark-config-deps/.remarkrc.json b/packages/core/tests/deslop/fixtures/remark-config-deps/.remarkrc.json similarity index 100% rename from packages/deslop-js/tests/fixtures/remark-config-deps/.remarkrc.json rename to packages/core/tests/deslop/fixtures/remark-config-deps/.remarkrc.json diff --git a/packages/deslop-js/tests/fixtures/remark-config-deps/docs/guide.mdx b/packages/core/tests/deslop/fixtures/remark-config-deps/docs/guide.mdx similarity index 100% rename from packages/deslop-js/tests/fixtures/remark-config-deps/docs/guide.mdx rename to packages/core/tests/deslop/fixtures/remark-config-deps/docs/guide.mdx diff --git a/packages/deslop-js/tests/fixtures/remark-config-deps/package.json b/packages/core/tests/deslop/fixtures/remark-config-deps/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/remark-config-deps/package.json rename to packages/core/tests/deslop/fixtures/remark-config-deps/package.json diff --git a/packages/deslop-js/tests/fixtures/remark-config-deps/src/button.tsx b/packages/core/tests/deslop/fixtures/remark-config-deps/src/button.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/remark-config-deps/src/button.tsx rename to packages/core/tests/deslop/fixtures/remark-config-deps/src/button.tsx diff --git a/packages/deslop-js/tests/fixtures/remark-config-deps/src/index.ts b/packages/core/tests/deslop/fixtures/remark-config-deps/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/remark-config-deps/src/index.ts rename to packages/core/tests/deslop/fixtures/remark-config-deps/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/remark-config-deps/src/orphan.ts b/packages/core/tests/deslop/fixtures/remark-config-deps/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/remark-config-deps/src/orphan.ts rename to packages/core/tests/deslop/fixtures/remark-config-deps/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/remark-glob-skip/docs/guide.mdx b/packages/core/tests/deslop/fixtures/remark-glob-skip/docs/guide.mdx similarity index 100% rename from packages/deslop-js/tests/fixtures/remark-glob-skip/docs/guide.mdx rename to packages/core/tests/deslop/fixtures/remark-glob-skip/docs/guide.mdx diff --git a/packages/deslop-js/tests/fixtures/remark-glob-skip/docs/intro.mdx b/packages/core/tests/deslop/fixtures/remark-glob-skip/docs/intro.mdx similarity index 100% rename from packages/deslop-js/tests/fixtures/remark-glob-skip/docs/intro.mdx rename to packages/core/tests/deslop/fixtures/remark-glob-skip/docs/intro.mdx diff --git a/packages/deslop-js/tests/fixtures/remark-glob-skip/package.json b/packages/core/tests/deslop/fixtures/remark-glob-skip/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/remark-glob-skip/package.json rename to packages/core/tests/deslop/fixtures/remark-glob-skip/package.json diff --git a/packages/deslop-js/tests/fixtures/remark-glob-skip/src/index.ts b/packages/core/tests/deslop/fixtures/remark-glob-skip/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/remark-glob-skip/src/index.ts rename to packages/core/tests/deslop/fixtures/remark-glob-skip/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/remark-glob-skip/src/orphan.ts b/packages/core/tests/deslop/fixtures/remark-glob-skip/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/remark-glob-skip/src/orphan.ts rename to packages/core/tests/deslop/fixtures/remark-glob-skip/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/rn-app/App.tsx b/packages/core/tests/deslop/fixtures/rn-app/App.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/rn-app/App.tsx rename to packages/core/tests/deslop/fixtures/rn-app/App.tsx diff --git a/packages/deslop-js/tests/fixtures/rn-app/index.js b/packages/core/tests/deslop/fixtures/rn-app/index.js similarity index 100% rename from packages/deslop-js/tests/fixtures/rn-app/index.js rename to packages/core/tests/deslop/fixtures/rn-app/index.js diff --git a/packages/deslop-js/tests/fixtures/rn-app/metro.config.js b/packages/core/tests/deslop/fixtures/rn-app/metro.config.js similarity index 100% rename from packages/deslop-js/tests/fixtures/rn-app/metro.config.js rename to packages/core/tests/deslop/fixtures/rn-app/metro.config.js diff --git a/packages/deslop-js/tests/fixtures/rn-app/package.json b/packages/core/tests/deslop/fixtures/rn-app/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/rn-app/package.json rename to packages/core/tests/deslop/fixtures/rn-app/package.json diff --git a/packages/deslop-js/tests/fixtures/rn-app/src/screens/orphan.tsx b/packages/core/tests/deslop/fixtures/rn-app/src/screens/orphan.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/rn-app/src/screens/orphan.tsx rename to packages/core/tests/deslop/fixtures/rn-app/src/screens/orphan.tsx diff --git a/packages/deslop-js/tests/fixtures/rn-app/src/screens/used.tsx b/packages/core/tests/deslop/fixtures/rn-app/src/screens/used.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/rn-app/src/screens/used.tsx rename to packages/core/tests/deslop/fixtures/rn-app/src/screens/used.tsx diff --git a/packages/deslop-js/tests/fixtures/rn-platform/package.json b/packages/core/tests/deslop/fixtures/rn-platform/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/rn-platform/package.json rename to packages/core/tests/deslop/fixtures/rn-platform/package.json diff --git a/packages/deslop-js/tests/fixtures/rn-platform/src/button.android.tsx b/packages/core/tests/deslop/fixtures/rn-platform/src/button.android.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/rn-platform/src/button.android.tsx rename to packages/core/tests/deslop/fixtures/rn-platform/src/button.android.tsx diff --git a/packages/deslop-js/tests/fixtures/rn-platform/src/button.ios.tsx b/packages/core/tests/deslop/fixtures/rn-platform/src/button.ios.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/rn-platform/src/button.ios.tsx rename to packages/core/tests/deslop/fixtures/rn-platform/src/button.ios.tsx diff --git a/packages/deslop-js/tests/fixtures/rn-platform/src/button.tsx b/packages/core/tests/deslop/fixtures/rn-platform/src/button.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/rn-platform/src/button.tsx rename to packages/core/tests/deslop/fixtures/rn-platform/src/button.tsx diff --git a/packages/deslop-js/tests/fixtures/rn-platform/src/handler.native.ts b/packages/core/tests/deslop/fixtures/rn-platform/src/handler.native.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/rn-platform/src/handler.native.ts rename to packages/core/tests/deslop/fixtures/rn-platform/src/handler.native.ts diff --git a/packages/deslop-js/tests/fixtures/rn-platform/src/handler.web.ts b/packages/core/tests/deslop/fixtures/rn-platform/src/handler.web.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/rn-platform/src/handler.web.ts rename to packages/core/tests/deslop/fixtures/rn-platform/src/handler.web.ts diff --git a/packages/deslop-js/tests/fixtures/rn-platform/src/index.ts b/packages/core/tests/deslop/fixtures/rn-platform/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/rn-platform/src/index.ts rename to packages/core/tests/deslop/fixtures/rn-platform/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/rn-platform/src/orphan.ts b/packages/core/tests/deslop/fixtures/rn-platform/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/rn-platform/src/orphan.ts rename to packages/core/tests/deslop/fixtures/rn-platform/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/rn-platform/src/utils.ts b/packages/core/tests/deslop/fixtures/rn-platform/src/utils.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/rn-platform/src/utils.ts rename to packages/core/tests/deslop/fixtures/rn-platform/src/utils.ts diff --git a/packages/deslop-js/tests/fixtures/rspack-app/package.json b/packages/core/tests/deslop/fixtures/rspack-app/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/rspack-app/package.json rename to packages/core/tests/deslop/fixtures/rspack-app/package.json diff --git a/packages/deslop-js/tests/fixtures/rspack-app/rspack.config.js b/packages/core/tests/deslop/fixtures/rspack-app/rspack.config.js similarity index 100% rename from packages/deslop-js/tests/fixtures/rspack-app/rspack.config.js rename to packages/core/tests/deslop/fixtures/rspack-app/rspack.config.js diff --git a/packages/deslop-js/tests/fixtures/rspack-app/rspack.dev.config.js b/packages/core/tests/deslop/fixtures/rspack-app/rspack.dev.config.js similarity index 100% rename from packages/deslop-js/tests/fixtures/rspack-app/rspack.dev.config.js rename to packages/core/tests/deslop/fixtures/rspack-app/rspack.dev.config.js diff --git a/packages/deslop-js/tests/fixtures/rspack-app/src/index.ts b/packages/core/tests/deslop/fixtures/rspack-app/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/rspack-app/src/index.ts rename to packages/core/tests/deslop/fixtures/rspack-app/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/rspack-app/src/orphan.ts b/packages/core/tests/deslop/fixtures/rspack-app/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/rspack-app/src/orphan.ts rename to packages/core/tests/deslop/fixtures/rspack-app/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/script-cli-deps/package.json b/packages/core/tests/deslop/fixtures/script-cli-deps/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/script-cli-deps/package.json rename to packages/core/tests/deslop/fixtures/script-cli-deps/package.json diff --git a/packages/deslop-js/tests/fixtures/script-cli-deps/src/index.ts b/packages/core/tests/deslop/fixtures/script-cli-deps/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/script-cli-deps/src/index.ts rename to packages/core/tests/deslop/fixtures/script-cli-deps/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/script-flags/orphan.ts b/packages/core/tests/deslop/fixtures/script-flags/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/script-flags/orphan.ts rename to packages/core/tests/deslop/fixtures/script-flags/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/script-flags/package.json b/packages/core/tests/deslop/fixtures/script-flags/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/script-flags/package.json rename to packages/core/tests/deslop/fixtures/script-flags/package.json diff --git a/packages/deslop-js/tests/fixtures/script-flags/scripts/build.ts b/packages/core/tests/deslop/fixtures/script-flags/scripts/build.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/script-flags/scripts/build.ts rename to packages/core/tests/deslop/fixtures/script-flags/scripts/build.ts diff --git a/packages/deslop-js/tests/fixtures/script-flags/scripts/generate.mts b/packages/core/tests/deslop/fixtures/script-flags/scripts/generate.mts similarity index 100% rename from packages/deslop-js/tests/fixtures/script-flags/scripts/generate.mts rename to packages/core/tests/deslop/fixtures/script-flags/scripts/generate.mts diff --git a/packages/deslop-js/tests/fixtures/script-flags/tests/run.ts b/packages/core/tests/deslop/fixtures/script-flags/tests/run.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/script-flags/tests/run.ts rename to packages/core/tests/deslop/fixtures/script-flags/tests/run.ts diff --git a/packages/deslop-js/tests/fixtures/script-flags/tsconfig.build.json b/packages/core/tests/deslop/fixtures/script-flags/tsconfig.build.json similarity index 100% rename from packages/deslop-js/tests/fixtures/script-flags/tsconfig.build.json rename to packages/core/tests/deslop/fixtures/script-flags/tsconfig.build.json diff --git a/packages/deslop-js/tests/fixtures/script-glob-formatter/package.json b/packages/core/tests/deslop/fixtures/script-glob-formatter/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/script-glob-formatter/package.json rename to packages/core/tests/deslop/fixtures/script-glob-formatter/package.json diff --git a/packages/deslop-js/tests/fixtures/script-glob-formatter/scripts/build.ts b/packages/core/tests/deslop/fixtures/script-glob-formatter/scripts/build.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/script-glob-formatter/scripts/build.ts rename to packages/core/tests/deslop/fixtures/script-glob-formatter/scripts/build.ts diff --git a/packages/deslop-js/tests/fixtures/script-glob-formatter/src/helper.ts b/packages/core/tests/deslop/fixtures/script-glob-formatter/src/helper.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/script-glob-formatter/src/helper.ts rename to packages/core/tests/deslop/fixtures/script-glob-formatter/src/helper.ts diff --git a/packages/deslop-js/tests/fixtures/script-glob-formatter/src/index.ts b/packages/core/tests/deslop/fixtures/script-glob-formatter/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/script-glob-formatter/src/index.ts rename to packages/core/tests/deslop/fixtures/script-glob-formatter/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/script-glob-formatter/src/orphan.ts b/packages/core/tests/deslop/fixtures/script-glob-formatter/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/script-glob-formatter/src/orphan.ts rename to packages/core/tests/deslop/fixtures/script-glob-formatter/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/script-globs/package.json b/packages/core/tests/deslop/fixtures/script-globs/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/script-globs/package.json rename to packages/core/tests/deslop/fixtures/script-globs/package.json diff --git a/packages/deslop-js/tests/fixtures/script-globs/src/index.ts b/packages/core/tests/deslop/fixtures/script-globs/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/script-globs/src/index.ts rename to packages/core/tests/deslop/fixtures/script-globs/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/script-globs/src/orphan.ts b/packages/core/tests/deslop/fixtures/script-globs/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/script-globs/src/orphan.ts rename to packages/core/tests/deslop/fixtures/script-globs/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/script-globs/styles/themes/dark.css b/packages/core/tests/deslop/fixtures/script-globs/styles/themes/dark.css similarity index 100% rename from packages/deslop-js/tests/fixtures/script-globs/styles/themes/dark.css rename to packages/core/tests/deslop/fixtures/script-globs/styles/themes/dark.css diff --git a/packages/deslop-js/tests/fixtures/script-globs/styles/themes/light.css b/packages/core/tests/deslop/fixtures/script-globs/styles/themes/light.css similarity index 100% rename from packages/deslop-js/tests/fixtures/script-globs/styles/themes/light.css rename to packages/core/tests/deslop/fixtures/script-globs/styles/themes/light.css diff --git a/packages/deslop-js/tests/fixtures/script-no-extension/orphan.ts b/packages/core/tests/deslop/fixtures/script-no-extension/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/script-no-extension/orphan.ts rename to packages/core/tests/deslop/fixtures/script-no-extension/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/script-no-extension/package.json b/packages/core/tests/deslop/fixtures/script-no-extension/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/script-no-extension/package.json rename to packages/core/tests/deslop/fixtures/script-no-extension/package.json diff --git a/packages/deslop-js/tests/fixtures/script-no-extension/scripts/build-data.ts b/packages/core/tests/deslop/fixtures/script-no-extension/scripts/build-data.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/script-no-extension/scripts/build-data.ts rename to packages/core/tests/deslop/fixtures/script-no-extension/scripts/build-data.ts diff --git a/packages/deslop-js/tests/fixtures/script-no-extension/scripts/lint-code.js b/packages/core/tests/deslop/fixtures/script-no-extension/scripts/lint-code.js similarity index 100% rename from packages/deslop-js/tests/fixtures/script-no-extension/scripts/lint-code.js rename to packages/core/tests/deslop/fixtures/script-no-extension/scripts/lint-code.js diff --git a/packages/deslop-js/tests/fixtures/script-no-extension/scripts/process-items.ts b/packages/core/tests/deslop/fixtures/script-no-extension/scripts/process-items.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/script-no-extension/scripts/process-items.ts rename to packages/core/tests/deslop/fixtures/script-no-extension/scripts/process-items.ts diff --git a/packages/deslop-js/tests/fixtures/script-no-extension/src/index.ts b/packages/core/tests/deslop/fixtures/script-no-extension/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/script-no-extension/src/index.ts rename to packages/core/tests/deslop/fixtures/script-no-extension/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/scss-partial/package.json b/packages/core/tests/deslop/fixtures/scss-partial/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/scss-partial/package.json rename to packages/core/tests/deslop/fixtures/scss-partial/package.json diff --git a/packages/deslop-js/tests/fixtures/scss-partial/src/index.ts b/packages/core/tests/deslop/fixtures/scss-partial/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/scss-partial/src/index.ts rename to packages/core/tests/deslop/fixtures/scss-partial/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/scss-partial/src/styles/_mixins.scss b/packages/core/tests/deslop/fixtures/scss-partial/src/styles/_mixins.scss similarity index 100% rename from packages/deslop-js/tests/fixtures/scss-partial/src/styles/_mixins.scss rename to packages/core/tests/deslop/fixtures/scss-partial/src/styles/_mixins.scss diff --git a/packages/deslop-js/tests/fixtures/scss-partial/src/styles/_orphan.scss b/packages/core/tests/deslop/fixtures/scss-partial/src/styles/_orphan.scss similarity index 100% rename from packages/deslop-js/tests/fixtures/scss-partial/src/styles/_orphan.scss rename to packages/core/tests/deslop/fixtures/scss-partial/src/styles/_orphan.scss diff --git a/packages/deslop-js/tests/fixtures/scss-partial/src/styles/_variables.scss b/packages/core/tests/deslop/fixtures/scss-partial/src/styles/_variables.scss similarity index 100% rename from packages/deslop-js/tests/fixtures/scss-partial/src/styles/_variables.scss rename to packages/core/tests/deslop/fixtures/scss-partial/src/styles/_variables.scss diff --git a/packages/deslop-js/tests/fixtures/scss-partial/src/styles/main.scss b/packages/core/tests/deslop/fixtures/scss-partial/src/styles/main.scss similarity index 100% rename from packages/deslop-js/tests/fixtures/scss-partial/src/styles/main.scss rename to packages/core/tests/deslop/fixtures/scss-partial/src/styles/main.scss diff --git a/packages/deslop-js/tests/fixtures/side-effects-glob/package.json b/packages/core/tests/deslop/fixtures/side-effects-glob/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/side-effects-glob/package.json rename to packages/core/tests/deslop/fixtures/side-effects-glob/package.json diff --git a/packages/deslop-js/tests/fixtures/side-effects-glob/src/foo/index.ts b/packages/core/tests/deslop/fixtures/side-effects-glob/src/foo/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/side-effects-glob/src/foo/index.ts rename to packages/core/tests/deslop/fixtures/side-effects-glob/src/foo/index.ts diff --git a/packages/deslop-js/tests/fixtures/side-effects-glob/src/foo/widget/style.ts b/packages/core/tests/deslop/fixtures/side-effects-glob/src/foo/widget/style.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/side-effects-glob/src/foo/widget/style.ts rename to packages/core/tests/deslop/fixtures/side-effects-glob/src/foo/widget/style.ts diff --git a/packages/deslop-js/tests/fixtures/side-effects-glob/src/index.ts b/packages/core/tests/deslop/fixtures/side-effects-glob/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/side-effects-glob/src/index.ts rename to packages/core/tests/deslop/fixtures/side-effects-glob/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/side-effects-glob/src/orphan.ts b/packages/core/tests/deslop/fixtures/side-effects-glob/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/side-effects-glob/src/orphan.ts rename to packages/core/tests/deslop/fixtures/side-effects-glob/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/simple-app/package.json b/packages/core/tests/deslop/fixtures/simple-app/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/simple-app/package.json rename to packages/core/tests/deslop/fixtures/simple-app/package.json diff --git a/packages/deslop-js/tests/fixtures/simple-app/src/index.ts b/packages/core/tests/deslop/fixtures/simple-app/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/simple-app/src/index.ts rename to packages/core/tests/deslop/fixtures/simple-app/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/simple-app/src/orphan.ts b/packages/core/tests/deslop/fixtures/simple-app/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/simple-app/src/orphan.ts rename to packages/core/tests/deslop/fixtures/simple-app/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/simple-app/src/types.ts b/packages/core/tests/deslop/fixtures/simple-app/src/types.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/simple-app/src/types.ts rename to packages/core/tests/deslop/fixtures/simple-app/src/types.ts diff --git a/packages/deslop-js/tests/fixtures/simple-app/src/utils.ts b/packages/core/tests/deslop/fixtures/simple-app/src/utils.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/simple-app/src/utils.ts rename to packages/core/tests/deslop/fixtures/simple-app/src/utils.ts diff --git a/packages/deslop-js/tests/fixtures/simplifiable-expressions/package.json b/packages/core/tests/deslop/fixtures/simplifiable-expressions/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/simplifiable-expressions/package.json rename to packages/core/tests/deslop/fixtures/simplifiable-expressions/package.json diff --git a/packages/deslop-js/tests/fixtures/simplifiable-expressions/src/index.ts b/packages/core/tests/deslop/fixtures/simplifiable-expressions/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/simplifiable-expressions/src/index.ts rename to packages/core/tests/deslop/fixtures/simplifiable-expressions/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/simplifiable-functions/package.json b/packages/core/tests/deslop/fixtures/simplifiable-functions/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/simplifiable-functions/package.json rename to packages/core/tests/deslop/fixtures/simplifiable-functions/package.json diff --git a/packages/deslop-js/tests/fixtures/simplifiable-functions/src/index.ts b/packages/core/tests/deslop/fixtures/simplifiable-functions/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/simplifiable-functions/src/index.ts rename to packages/core/tests/deslop/fixtures/simplifiable-functions/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/spec-dash-patterns/package.json b/packages/core/tests/deslop/fixtures/spec-dash-patterns/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/spec-dash-patterns/package.json rename to packages/core/tests/deslop/fixtures/spec-dash-patterns/package.json diff --git a/packages/deslop-js/tests/fixtures/spec-dash-patterns/spec/engine_spec.ts b/packages/core/tests/deslop/fixtures/spec-dash-patterns/spec/engine_spec.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/spec-dash-patterns/spec/engine_spec.ts rename to packages/core/tests/deslop/fixtures/spec-dash-patterns/spec/engine_spec.ts diff --git a/packages/deslop-js/tests/fixtures/spec-dash-patterns/spec/utils-spec.ts b/packages/core/tests/deslop/fixtures/spec-dash-patterns/spec/utils-spec.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/spec-dash-patterns/spec/utils-spec.ts rename to packages/core/tests/deslop/fixtures/spec-dash-patterns/spec/utils-spec.ts diff --git a/packages/deslop-js/tests/fixtures/spec-dash-patterns/src/index.ts b/packages/core/tests/deslop/fixtures/spec-dash-patterns/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/spec-dash-patterns/src/index.ts rename to packages/core/tests/deslop/fixtures/spec-dash-patterns/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/spec-dash-patterns/src/orphan.ts b/packages/core/tests/deslop/fixtures/spec-dash-patterns/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/spec-dash-patterns/src/orphan.ts rename to packages/core/tests/deslop/fixtures/spec-dash-patterns/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/src-build-dir/package.json b/packages/core/tests/deslop/fixtures/src-build-dir/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/src-build-dir/package.json rename to packages/core/tests/deslop/fixtures/src-build-dir/package.json diff --git a/packages/deslop-js/tests/fixtures/src-build-dir/src/build/helpers.ts b/packages/core/tests/deslop/fixtures/src-build-dir/src/build/helpers.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/src-build-dir/src/build/helpers.ts rename to packages/core/tests/deslop/fixtures/src-build-dir/src/build/helpers.ts diff --git a/packages/deslop-js/tests/fixtures/src-build-dir/src/build/plugins.ts b/packages/core/tests/deslop/fixtures/src-build-dir/src/build/plugins.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/src-build-dir/src/build/plugins.ts rename to packages/core/tests/deslop/fixtures/src-build-dir/src/build/plugins.ts diff --git a/packages/deslop-js/tests/fixtures/src-build-dir/src/index.ts b/packages/core/tests/deslop/fixtures/src-build-dir/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/src-build-dir/src/index.ts rename to packages/core/tests/deslop/fixtures/src-build-dir/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/src-build-dir/src/orphan.ts b/packages/core/tests/deslop/fixtures/src-build-dir/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/src-build-dir/src/orphan.ts rename to packages/core/tests/deslop/fixtures/src-build-dir/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/src-path-fallback/package.json b/packages/core/tests/deslop/fixtures/src-path-fallback/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/src-path-fallback/package.json rename to packages/core/tests/deslop/fixtures/src-path-fallback/package.json diff --git a/packages/deslop-js/tests/fixtures/src-path-fallback/src/cli/index.ts b/packages/core/tests/deslop/fixtures/src-path-fallback/src/cli/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/src-path-fallback/src/cli/index.ts rename to packages/core/tests/deslop/fixtures/src-path-fallback/src/cli/index.ts diff --git a/packages/deslop-js/tests/fixtures/src-path-fallback/src/cli/runner.ts b/packages/core/tests/deslop/fixtures/src-path-fallback/src/cli/runner.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/src-path-fallback/src/cli/runner.ts rename to packages/core/tests/deslop/fixtures/src-path-fallback/src/cli/runner.ts diff --git a/packages/deslop-js/tests/fixtures/src-path-fallback/src/helper.ts b/packages/core/tests/deslop/fixtures/src-path-fallback/src/helper.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/src-path-fallback/src/helper.ts rename to packages/core/tests/deslop/fixtures/src-path-fallback/src/helper.ts diff --git a/packages/deslop-js/tests/fixtures/src-path-fallback/src/index.ts b/packages/core/tests/deslop/fixtures/src-path-fallback/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/src-path-fallback/src/index.ts rename to packages/core/tests/deslop/fixtures/src-path-fallback/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/src-path-fallback/src/orphan.ts b/packages/core/tests/deslop/fixtures/src-path-fallback/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/src-path-fallback/src/orphan.ts rename to packages/core/tests/deslop/fixtures/src-path-fallback/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/src-path-fallback/tsconfig.json b/packages/core/tests/deslop/fixtures/src-path-fallback/tsconfig.json similarity index 100% rename from packages/deslop-js/tests/fixtures/src-path-fallback/tsconfig.json rename to packages/core/tests/deslop/fixtures/src-path-fallback/tsconfig.json diff --git a/packages/deslop-js/tests/fixtures/star-reexport-chain/package.json b/packages/core/tests/deslop/fixtures/star-reexport-chain/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/star-reexport-chain/package.json rename to packages/core/tests/deslop/fixtures/star-reexport-chain/package.json diff --git a/packages/deslop-js/tests/fixtures/star-reexport-chain/src/barrel1.ts b/packages/core/tests/deslop/fixtures/star-reexport-chain/src/barrel1.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/star-reexport-chain/src/barrel1.ts rename to packages/core/tests/deslop/fixtures/star-reexport-chain/src/barrel1.ts diff --git a/packages/deslop-js/tests/fixtures/star-reexport-chain/src/barrel2.ts b/packages/core/tests/deslop/fixtures/star-reexport-chain/src/barrel2.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/star-reexport-chain/src/barrel2.ts rename to packages/core/tests/deslop/fixtures/star-reexport-chain/src/barrel2.ts diff --git a/packages/deslop-js/tests/fixtures/star-reexport-chain/src/index.ts b/packages/core/tests/deslop/fixtures/star-reexport-chain/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/star-reexport-chain/src/index.ts rename to packages/core/tests/deslop/fixtures/star-reexport-chain/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/star-reexport-chain/src/source.ts b/packages/core/tests/deslop/fixtures/star-reexport-chain/src/source.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/star-reexport-chain/src/source.ts rename to packages/core/tests/deslop/fixtures/star-reexport-chain/src/source.ts diff --git a/packages/deslop-js/tests/fixtures/star-selective/package.json b/packages/core/tests/deslop/fixtures/star-selective/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/star-selective/package.json rename to packages/core/tests/deslop/fixtures/star-selective/package.json diff --git a/packages/deslop-js/tests/fixtures/star-selective/src/barrel.ts b/packages/core/tests/deslop/fixtures/star-selective/src/barrel.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/star-selective/src/barrel.ts rename to packages/core/tests/deslop/fixtures/star-selective/src/barrel.ts diff --git a/packages/deslop-js/tests/fixtures/star-selective/src/index.ts b/packages/core/tests/deslop/fixtures/star-selective/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/star-selective/src/index.ts rename to packages/core/tests/deslop/fixtures/star-selective/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/star-selective/src/source.ts b/packages/core/tests/deslop/fixtures/star-selective/src/source.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/star-selective/src/source.ts rename to packages/core/tests/deslop/fixtures/star-selective/src/source.ts diff --git a/packages/deslop-js/tests/fixtures/storybook-app/.storybook/main.ts b/packages/core/tests/deslop/fixtures/storybook-app/.storybook/main.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/storybook-app/.storybook/main.ts rename to packages/core/tests/deslop/fixtures/storybook-app/.storybook/main.ts diff --git a/packages/deslop-js/tests/fixtures/storybook-app/.storybook/preview.ts b/packages/core/tests/deslop/fixtures/storybook-app/.storybook/preview.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/storybook-app/.storybook/preview.ts rename to packages/core/tests/deslop/fixtures/storybook-app/.storybook/preview.ts diff --git a/packages/deslop-js/tests/fixtures/storybook-app/package.json b/packages/core/tests/deslop/fixtures/storybook-app/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/storybook-app/package.json rename to packages/core/tests/deslop/fixtures/storybook-app/package.json diff --git a/packages/deslop-js/tests/fixtures/storybook-app/src/components/Button.stories.ts b/packages/core/tests/deslop/fixtures/storybook-app/src/components/Button.stories.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/storybook-app/src/components/Button.stories.ts rename to packages/core/tests/deslop/fixtures/storybook-app/src/components/Button.stories.ts diff --git a/packages/deslop-js/tests/fixtures/storybook-app/src/components/Button.ts b/packages/core/tests/deslop/fixtures/storybook-app/src/components/Button.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/storybook-app/src/components/Button.ts rename to packages/core/tests/deslop/fixtures/storybook-app/src/components/Button.ts diff --git a/packages/deslop-js/tests/fixtures/storybook-app/src/orphan.ts b/packages/core/tests/deslop/fixtures/storybook-app/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/storybook-app/src/orphan.ts rename to packages/core/tests/deslop/fixtures/storybook-app/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/storybook-mdx-import/package.json b/packages/core/tests/deslop/fixtures/storybook-mdx-import/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/storybook-mdx-import/package.json rename to packages/core/tests/deslop/fixtures/storybook-mdx-import/package.json diff --git a/packages/deslop-js/tests/fixtures/storybook-mdx-import/src/components/Alert.mdx b/packages/core/tests/deslop/fixtures/storybook-mdx-import/src/components/Alert.mdx similarity index 100% rename from packages/deslop-js/tests/fixtures/storybook-mdx-import/src/components/Alert.mdx rename to packages/core/tests/deslop/fixtures/storybook-mdx-import/src/components/Alert.mdx diff --git a/packages/deslop-js/tests/fixtures/storybook-mdx-import/src/components/Alert.story.tsx b/packages/core/tests/deslop/fixtures/storybook-mdx-import/src/components/Alert.story.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/storybook-mdx-import/src/components/Alert.story.tsx rename to packages/core/tests/deslop/fixtures/storybook-mdx-import/src/components/Alert.story.tsx diff --git a/packages/deslop-js/tests/fixtures/storybook-mdx-import/src/components/Alert.ts b/packages/core/tests/deslop/fixtures/storybook-mdx-import/src/components/Alert.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/storybook-mdx-import/src/components/Alert.ts rename to packages/core/tests/deslop/fixtures/storybook-mdx-import/src/components/Alert.ts diff --git a/packages/deslop-js/tests/fixtures/storybook-mdx-import/src/components/orphan.ts b/packages/core/tests/deslop/fixtures/storybook-mdx-import/src/components/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/storybook-mdx-import/src/components/orphan.ts rename to packages/core/tests/deslop/fixtures/storybook-mdx-import/src/components/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/storybook-mdx-import/src/index.ts b/packages/core/tests/deslop/fixtures/storybook-mdx-import/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/storybook-mdx-import/src/index.ts rename to packages/core/tests/deslop/fixtures/storybook-mdx-import/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/style-alias/package.json b/packages/core/tests/deslop/fixtures/style-alias/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/style-alias/package.json rename to packages/core/tests/deslop/fixtures/style-alias/package.json diff --git a/packages/deslop-js/tests/fixtures/style-alias/src/index.ts b/packages/core/tests/deslop/fixtures/style-alias/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/style-alias/src/index.ts rename to packages/core/tests/deslop/fixtures/style-alias/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/style-alias/src/lib/utils.ts b/packages/core/tests/deslop/fixtures/style-alias/src/lib/utils.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/style-alias/src/lib/utils.ts rename to packages/core/tests/deslop/fixtures/style-alias/src/lib/utils.ts diff --git a/packages/deslop-js/tests/fixtures/style-alias/src/orphan.ts b/packages/core/tests/deslop/fixtures/style-alias/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/style-alias/src/orphan.ts rename to packages/core/tests/deslop/fixtures/style-alias/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/style-alias/src/styles/globals.css b/packages/core/tests/deslop/fixtures/style-alias/src/styles/globals.css similarity index 100% rename from packages/deslop-js/tests/fixtures/style-alias/src/styles/globals.css rename to packages/core/tests/deslop/fixtures/style-alias/src/styles/globals.css diff --git a/packages/deslop-js/tests/fixtures/style-alias/tsconfig.json b/packages/core/tests/deslop/fixtures/style-alias/tsconfig.json similarity index 100% rename from packages/deslop-js/tests/fixtures/style-alias/tsconfig.json rename to packages/core/tests/deslop/fixtures/style-alias/tsconfig.json diff --git a/packages/deslop-js/tests/fixtures/style-export-map/package.json b/packages/core/tests/deslop/fixtures/style-export-map/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/style-export-map/package.json rename to packages/core/tests/deslop/fixtures/style-export-map/package.json diff --git a/packages/deslop-js/tests/fixtures/style-export-map/src/index.ts b/packages/core/tests/deslop/fixtures/style-export-map/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/style-export-map/src/index.ts rename to packages/core/tests/deslop/fixtures/style-export-map/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/style-export-map/src/orphan.css b/packages/core/tests/deslop/fixtures/style-export-map/src/orphan.css similarity index 100% rename from packages/deslop-js/tests/fixtures/style-export-map/src/orphan.css rename to packages/core/tests/deslop/fixtures/style-export-map/src/orphan.css diff --git a/packages/deslop-js/tests/fixtures/style-export-map/src/style.css b/packages/core/tests/deslop/fixtures/style-export-map/src/style.css similarity index 100% rename from packages/deslop-js/tests/fixtures/style-export-map/src/style.css rename to packages/core/tests/deslop/fixtures/style-export-map/src/style.css diff --git a/packages/deslop-js/tests/fixtures/style-export-map/tsconfig.json b/packages/core/tests/deslop/fixtures/style-export-map/tsconfig.json similarity index 100% rename from packages/deslop-js/tests/fixtures/style-export-map/tsconfig.json rename to packages/core/tests/deslop/fixtures/style-export-map/tsconfig.json diff --git a/packages/deslop-js/tests/fixtures/style-imports/package.json b/packages/core/tests/deslop/fixtures/style-imports/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/style-imports/package.json rename to packages/core/tests/deslop/fixtures/style-imports/package.json diff --git a/packages/deslop-js/tests/fixtures/style-imports/src/app.css b/packages/core/tests/deslop/fixtures/style-imports/src/app.css similarity index 100% rename from packages/deslop-js/tests/fixtures/style-imports/src/app.css rename to packages/core/tests/deslop/fixtures/style-imports/src/app.css diff --git a/packages/deslop-js/tests/fixtures/style-imports/src/index.ts b/packages/core/tests/deslop/fixtures/style-imports/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/style-imports/src/index.ts rename to packages/core/tests/deslop/fixtures/style-imports/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/style-imports/styles/base.css b/packages/core/tests/deslop/fixtures/style-imports/styles/base.css similarity index 100% rename from packages/deslop-js/tests/fixtures/style-imports/styles/base.css rename to packages/core/tests/deslop/fixtures/style-imports/styles/base.css diff --git a/packages/deslop-js/tests/fixtures/style-imports/styles/orphan.css b/packages/core/tests/deslop/fixtures/style-imports/styles/orphan.css similarity index 100% rename from packages/deslop-js/tests/fixtures/style-imports/styles/orphan.css rename to packages/core/tests/deslop/fixtures/style-imports/styles/orphan.css diff --git a/packages/deslop-js/tests/fixtures/style-tracking/package.json b/packages/core/tests/deslop/fixtures/style-tracking/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/style-tracking/package.json rename to packages/core/tests/deslop/fixtures/style-tracking/package.json diff --git a/packages/deslop-js/tests/fixtures/style-tracking/src/helper.ts b/packages/core/tests/deslop/fixtures/style-tracking/src/helper.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/style-tracking/src/helper.ts rename to packages/core/tests/deslop/fixtures/style-tracking/src/helper.ts diff --git a/packages/deslop-js/tests/fixtures/style-tracking/src/index.ts b/packages/core/tests/deslop/fixtures/style-tracking/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/style-tracking/src/index.ts rename to packages/core/tests/deslop/fixtures/style-tracking/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/style-tracking/src/orphan.ts b/packages/core/tests/deslop/fixtures/style-tracking/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/style-tracking/src/orphan.ts rename to packages/core/tests/deslop/fixtures/style-tracking/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/style-tracking/src/styles.css b/packages/core/tests/deslop/fixtures/style-tracking/src/styles.css similarity index 100% rename from packages/deslop-js/tests/fixtures/style-tracking/src/styles.css rename to packages/core/tests/deslop/fixtures/style-tracking/src/styles.css diff --git a/packages/deslop-js/tests/fixtures/style-tracking/src/unused.css b/packages/core/tests/deslop/fixtures/style-tracking/src/unused.css similarity index 100% rename from packages/deslop-js/tests/fixtures/style-tracking/src/unused.css rename to packages/core/tests/deslop/fixtures/style-tracking/src/unused.css diff --git a/packages/deslop-js/tests/fixtures/subproject-standalone/app/package.json b/packages/core/tests/deslop/fixtures/subproject-standalone/app/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/subproject-standalone/app/package.json rename to packages/core/tests/deslop/fixtures/subproject-standalone/app/package.json diff --git a/packages/deslop-js/tests/fixtures/subproject-standalone/app/packages/utils/package.json b/packages/core/tests/deslop/fixtures/subproject-standalone/app/packages/utils/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/subproject-standalone/app/packages/utils/package.json rename to packages/core/tests/deslop/fixtures/subproject-standalone/app/packages/utils/package.json diff --git a/packages/deslop-js/tests/fixtures/subproject-standalone/app/packages/utils/src/index.ts b/packages/core/tests/deslop/fixtures/subproject-standalone/app/packages/utils/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/subproject-standalone/app/packages/utils/src/index.ts rename to packages/core/tests/deslop/fixtures/subproject-standalone/app/packages/utils/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/subproject-standalone/app/src/index.ts b/packages/core/tests/deslop/fixtures/subproject-standalone/app/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/subproject-standalone/app/src/index.ts rename to packages/core/tests/deslop/fixtures/subproject-standalone/app/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/subproject-standalone/app/src/orphan.ts b/packages/core/tests/deslop/fixtures/subproject-standalone/app/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/subproject-standalone/app/src/orphan.ts rename to packages/core/tests/deslop/fixtures/subproject-standalone/app/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/subproject-standalone/docs/package.json b/packages/core/tests/deslop/fixtures/subproject-standalone/docs/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/subproject-standalone/docs/package.json rename to packages/core/tests/deslop/fixtures/subproject-standalone/docs/package.json diff --git a/packages/deslop-js/tests/fixtures/subproject-standalone/docs/src/guide.ts b/packages/core/tests/deslop/fixtures/subproject-standalone/docs/src/guide.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/subproject-standalone/docs/src/guide.ts rename to packages/core/tests/deslop/fixtures/subproject-standalone/docs/src/guide.ts diff --git a/packages/deslop-js/tests/fixtures/subproject-standalone/docs/src/index.ts b/packages/core/tests/deslop/fixtures/subproject-standalone/docs/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/subproject-standalone/docs/src/index.ts rename to packages/core/tests/deslop/fixtures/subproject-standalone/docs/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/subproject-standalone/docs/yarn.lock b/packages/core/tests/deslop/fixtures/subproject-standalone/docs/yarn.lock similarity index 100% rename from packages/deslop-js/tests/fixtures/subproject-standalone/docs/yarn.lock rename to packages/core/tests/deslop/fixtures/subproject-standalone/docs/yarn.lock diff --git a/packages/deslop-js/tests/fixtures/subproject-standalone/package.json b/packages/core/tests/deslop/fixtures/subproject-standalone/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/subproject-standalone/package.json rename to packages/core/tests/deslop/fixtures/subproject-standalone/package.json diff --git a/packages/deslop-js/tests/fixtures/subproject-workspace/app/package.json b/packages/core/tests/deslop/fixtures/subproject-workspace/app/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/subproject-workspace/app/package.json rename to packages/core/tests/deslop/fixtures/subproject-workspace/app/package.json diff --git a/packages/deslop-js/tests/fixtures/subproject-workspace/app/packages/core/app/page.ts b/packages/core/tests/deslop/fixtures/subproject-workspace/app/packages/core/app/page.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/subproject-workspace/app/packages/core/app/page.ts rename to packages/core/tests/deslop/fixtures/subproject-workspace/app/packages/core/app/page.ts diff --git a/packages/deslop-js/tests/fixtures/subproject-workspace/app/packages/core/package.json b/packages/core/tests/deslop/fixtures/subproject-workspace/app/packages/core/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/subproject-workspace/app/packages/core/package.json rename to packages/core/tests/deslop/fixtures/subproject-workspace/app/packages/core/package.json diff --git a/packages/deslop-js/tests/fixtures/subproject-workspace/app/packages/core/src/index.ts b/packages/core/tests/deslop/fixtures/subproject-workspace/app/packages/core/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/subproject-workspace/app/packages/core/src/index.ts rename to packages/core/tests/deslop/fixtures/subproject-workspace/app/packages/core/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/subproject-workspace/app/packages/core/src/unused-util.ts b/packages/core/tests/deslop/fixtures/subproject-workspace/app/packages/core/src/unused-util.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/subproject-workspace/app/packages/core/src/unused-util.ts rename to packages/core/tests/deslop/fixtures/subproject-workspace/app/packages/core/src/unused-util.ts diff --git a/packages/deslop-js/tests/fixtures/subproject-workspace/app/packages/icons/package.json b/packages/core/tests/deslop/fixtures/subproject-workspace/app/packages/icons/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/subproject-workspace/app/packages/icons/package.json rename to packages/core/tests/deslop/fixtures/subproject-workspace/app/packages/icons/package.json diff --git a/packages/deslop-js/tests/fixtures/subproject-workspace/app/packages/icons/src/icons/heart.ts b/packages/core/tests/deslop/fixtures/subproject-workspace/app/packages/icons/src/icons/heart.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/subproject-workspace/app/packages/icons/src/icons/heart.ts rename to packages/core/tests/deslop/fixtures/subproject-workspace/app/packages/icons/src/icons/heart.ts diff --git a/packages/deslop-js/tests/fixtures/subproject-workspace/app/packages/icons/src/icons/star.ts b/packages/core/tests/deslop/fixtures/subproject-workspace/app/packages/icons/src/icons/star.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/subproject-workspace/app/packages/icons/src/icons/star.ts rename to packages/core/tests/deslop/fixtures/subproject-workspace/app/packages/icons/src/icons/star.ts diff --git a/packages/deslop-js/tests/fixtures/subproject-workspace/app/packages/icons/src/index.ts b/packages/core/tests/deslop/fixtures/subproject-workspace/app/packages/icons/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/subproject-workspace/app/packages/icons/src/index.ts rename to packages/core/tests/deslop/fixtures/subproject-workspace/app/packages/icons/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/subproject-workspace/app/pnpm-workspace.yaml b/packages/core/tests/deslop/fixtures/subproject-workspace/app/pnpm-workspace.yaml similarity index 100% rename from packages/deslop-js/tests/fixtures/subproject-workspace/app/pnpm-workspace.yaml rename to packages/core/tests/deslop/fixtures/subproject-workspace/app/pnpm-workspace.yaml diff --git a/packages/deslop-js/tests/fixtures/tailwind-v4-plugin/package.json b/packages/core/tests/deslop/fixtures/tailwind-v4-plugin/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/tailwind-v4-plugin/package.json rename to packages/core/tests/deslop/fixtures/tailwind-v4-plugin/package.json diff --git a/packages/deslop-js/tests/fixtures/tailwind-v4-plugin/src/index.ts b/packages/core/tests/deslop/fixtures/tailwind-v4-plugin/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/tailwind-v4-plugin/src/index.ts rename to packages/core/tests/deslop/fixtures/tailwind-v4-plugin/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/tailwind-v4-plugin/src/styles.css b/packages/core/tests/deslop/fixtures/tailwind-v4-plugin/src/styles.css similarity index 100% rename from packages/deslop-js/tests/fixtures/tailwind-v4-plugin/src/styles.css rename to packages/core/tests/deslop/fixtures/tailwind-v4-plugin/src/styles.css diff --git a/packages/deslop-js/tests/fixtures/tanstack-app/package.json b/packages/core/tests/deslop/fixtures/tanstack-app/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/tanstack-app/package.json rename to packages/core/tests/deslop/fixtures/tanstack-app/package.json diff --git a/packages/deslop-js/tests/fixtures/tanstack-app/src/orphan.ts b/packages/core/tests/deslop/fixtures/tanstack-app/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/tanstack-app/src/orphan.ts rename to packages/core/tests/deslop/fixtures/tanstack-app/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/tanstack-app/src/routes/about.tsx b/packages/core/tests/deslop/fixtures/tanstack-app/src/routes/about.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/tanstack-app/src/routes/about.tsx rename to packages/core/tests/deslop/fixtures/tanstack-app/src/routes/about.tsx diff --git a/packages/deslop-js/tests/fixtures/tanstack-app/src/routes/index.tsx b/packages/core/tests/deslop/fixtures/tanstack-app/src/routes/index.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/tanstack-app/src/routes/index.tsx rename to packages/core/tests/deslop/fixtures/tanstack-app/src/routes/index.tsx diff --git a/packages/deslop-js/tests/fixtures/tanstack-app/src/server.ts b/packages/core/tests/deslop/fixtures/tanstack-app/src/server.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/tanstack-app/src/server.ts rename to packages/core/tests/deslop/fixtures/tanstack-app/src/server.ts diff --git a/packages/deslop-js/tests/fixtures/test-custom-ext/package.json b/packages/core/tests/deslop/fixtures/test-custom-ext/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/test-custom-ext/package.json rename to packages/core/tests/deslop/fixtures/test-custom-ext/package.json diff --git a/packages/deslop-js/tests/fixtures/test-custom-ext/src/__e2e__/login.test.ts b/packages/core/tests/deslop/fixtures/test-custom-ext/src/__e2e__/login.test.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/test-custom-ext/src/__e2e__/login.test.ts rename to packages/core/tests/deslop/fixtures/test-custom-ext/src/__e2e__/login.test.ts diff --git a/packages/deslop-js/tests/fixtures/test-custom-ext/src/api.servertest.ts b/packages/core/tests/deslop/fixtures/test-custom-ext/src/api.servertest.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/test-custom-ext/src/api.servertest.ts rename to packages/core/tests/deslop/fixtures/test-custom-ext/src/api.servertest.ts diff --git a/packages/deslop-js/tests/fixtures/test-custom-ext/src/index.ts b/packages/core/tests/deslop/fixtures/test-custom-ext/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/test-custom-ext/src/index.ts rename to packages/core/tests/deslop/fixtures/test-custom-ext/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/test-custom-ext/src/orphan.ts b/packages/core/tests/deslop/fixtures/test-custom-ext/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/test-custom-ext/src/orphan.ts rename to packages/core/tests/deslop/fixtures/test-custom-ext/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/test-custom-ext/src/utils.clienttest.ts b/packages/core/tests/deslop/fixtures/test-custom-ext/src/utils.clienttest.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/test-custom-ext/src/utils.clienttest.ts rename to packages/core/tests/deslop/fixtures/test-custom-ext/src/utils.clienttest.ts diff --git a/packages/deslop-js/tests/fixtures/test-mock-import/__tests__/example.test.ts b/packages/core/tests/deslop/fixtures/test-mock-import/__tests__/example.test.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/test-mock-import/__tests__/example.test.ts rename to packages/core/tests/deslop/fixtures/test-mock-import/__tests__/example.test.ts diff --git a/packages/deslop-js/tests/fixtures/test-mock-import/package.json b/packages/core/tests/deslop/fixtures/test-mock-import/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/test-mock-import/package.json rename to packages/core/tests/deslop/fixtures/test-mock-import/package.json diff --git a/packages/deslop-js/tests/fixtures/test-mock-import/src/helper.ts b/packages/core/tests/deslop/fixtures/test-mock-import/src/helper.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/test-mock-import/src/helper.ts rename to packages/core/tests/deslop/fixtures/test-mock-import/src/helper.ts diff --git a/packages/deslop-js/tests/fixtures/test-mock-import/src/index.ts b/packages/core/tests/deslop/fixtures/test-mock-import/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/test-mock-import/src/index.ts rename to packages/core/tests/deslop/fixtures/test-mock-import/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/test-mock-import/src/mocked-util.ts b/packages/core/tests/deslop/fixtures/test-mock-import/src/mocked-util.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/test-mock-import/src/mocked-util.ts rename to packages/core/tests/deslop/fixtures/test-mock-import/src/mocked-util.ts diff --git a/packages/deslop-js/tests/fixtures/test-mock-import/src/orphan.ts b/packages/core/tests/deslop/fixtures/test-mock-import/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/test-mock-import/src/orphan.ts rename to packages/core/tests/deslop/fixtures/test-mock-import/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/test-no-runner/package.json b/packages/core/tests/deslop/fixtures/test-no-runner/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/test-no-runner/package.json rename to packages/core/tests/deslop/fixtures/test-no-runner/package.json diff --git a/packages/deslop-js/tests/fixtures/test-no-runner/src/helper.test.ts b/packages/core/tests/deslop/fixtures/test-no-runner/src/helper.test.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/test-no-runner/src/helper.test.ts rename to packages/core/tests/deslop/fixtures/test-no-runner/src/helper.test.ts diff --git a/packages/deslop-js/tests/fixtures/test-no-runner/src/index.ts b/packages/core/tests/deslop/fixtures/test-no-runner/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/test-no-runner/src/index.ts rename to packages/core/tests/deslop/fixtures/test-no-runner/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/test-node-runner/package.json b/packages/core/tests/deslop/fixtures/test-node-runner/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/test-node-runner/package.json rename to packages/core/tests/deslop/fixtures/test-node-runner/package.json diff --git a/packages/deslop-js/tests/fixtures/test-node-runner/src/__tests__/main.test.ts b/packages/core/tests/deslop/fixtures/test-node-runner/src/__tests__/main.test.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/test-node-runner/src/__tests__/main.test.ts rename to packages/core/tests/deslop/fixtures/test-node-runner/src/__tests__/main.test.ts diff --git a/packages/deslop-js/tests/fixtures/test-node-runner/src/index.ts b/packages/core/tests/deslop/fixtures/test-node-runner/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/test-node-runner/src/index.ts rename to packages/core/tests/deslop/fixtures/test-node-runner/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/test-node-runner/src/orphan.ts b/packages/core/tests/deslop/fixtures/test-node-runner/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/test-node-runner/src/orphan.ts rename to packages/core/tests/deslop/fixtures/test-node-runner/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/test-runner-detect/package.json b/packages/core/tests/deslop/fixtures/test-runner-detect/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/test-runner-detect/package.json rename to packages/core/tests/deslop/fixtures/test-runner-detect/package.json diff --git a/packages/deslop-js/tests/fixtures/test-runner-detect/src/__tests__/utils.test.ts b/packages/core/tests/deslop/fixtures/test-runner-detect/src/__tests__/utils.test.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/test-runner-detect/src/__tests__/utils.test.ts rename to packages/core/tests/deslop/fixtures/test-runner-detect/src/__tests__/utils.test.ts diff --git a/packages/deslop-js/tests/fixtures/test-runner-detect/src/helper.test.ts b/packages/core/tests/deslop/fixtures/test-runner-detect/src/helper.test.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/test-runner-detect/src/helper.test.ts rename to packages/core/tests/deslop/fixtures/test-runner-detect/src/helper.test.ts diff --git a/packages/deslop-js/tests/fixtures/test-runner-detect/src/helper.ts b/packages/core/tests/deslop/fixtures/test-runner-detect/src/helper.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/test-runner-detect/src/helper.ts rename to packages/core/tests/deslop/fixtures/test-runner-detect/src/helper.ts diff --git a/packages/deslop-js/tests/fixtures/test-runner-detect/src/index.ts b/packages/core/tests/deslop/fixtures/test-runner-detect/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/test-runner-detect/src/index.ts rename to packages/core/tests/deslop/fixtures/test-runner-detect/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/test-runner-detect/src/orphan.ts b/packages/core/tests/deslop/fixtures/test-runner-detect/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/test-runner-detect/src/orphan.ts rename to packages/core/tests/deslop/fixtures/test-runner-detect/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/test-runner-detect/src/test-only-used.ts b/packages/core/tests/deslop/fixtures/test-runner-detect/src/test-only-used.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/test-runner-detect/src/test-only-used.ts rename to packages/core/tests/deslop/fixtures/test-runner-detect/src/test-only-used.ts diff --git a/packages/deslop-js/tests/fixtures/tsconfig-wildcard/package.json b/packages/core/tests/deslop/fixtures/tsconfig-wildcard/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/tsconfig-wildcard/package.json rename to packages/core/tests/deslop/fixtures/tsconfig-wildcard/package.json diff --git a/packages/deslop-js/tests/fixtures/tsconfig-wildcard/src/constants/api.ts b/packages/core/tests/deslop/fixtures/tsconfig-wildcard/src/constants/api.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/tsconfig-wildcard/src/constants/api.ts rename to packages/core/tests/deslop/fixtures/tsconfig-wildcard/src/constants/api.ts diff --git a/packages/deslop-js/tests/fixtures/tsconfig-wildcard/src/index.ts b/packages/core/tests/deslop/fixtures/tsconfig-wildcard/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/tsconfig-wildcard/src/index.ts rename to packages/core/tests/deslop/fixtures/tsconfig-wildcard/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/tsconfig-wildcard/src/orphan.ts b/packages/core/tests/deslop/fixtures/tsconfig-wildcard/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/tsconfig-wildcard/src/orphan.ts rename to packages/core/tests/deslop/fixtures/tsconfig-wildcard/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/tsconfig-wildcard/tsconfig.json b/packages/core/tests/deslop/fixtures/tsconfig-wildcard/tsconfig.json similarity index 100% rename from packages/deslop-js/tests/fixtures/tsconfig-wildcard/tsconfig.json rename to packages/core/tests/deslop/fixtures/tsconfig-wildcard/tsconfig.json diff --git a/packages/deslop-js/tests/fixtures/tsdown-entry/package.json b/packages/core/tests/deslop/fixtures/tsdown-entry/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/tsdown-entry/package.json rename to packages/core/tests/deslop/fixtures/tsdown-entry/package.json diff --git a/packages/deslop-js/tests/fixtures/tsdown-entry/src/main.ts b/packages/core/tests/deslop/fixtures/tsdown-entry/src/main.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/tsdown-entry/src/main.ts rename to packages/core/tests/deslop/fixtures/tsdown-entry/src/main.ts diff --git a/packages/deslop-js/tests/fixtures/tsdown-entry/src/preload.ts b/packages/core/tests/deslop/fixtures/tsdown-entry/src/preload.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/tsdown-entry/src/preload.ts rename to packages/core/tests/deslop/fixtures/tsdown-entry/src/preload.ts diff --git a/packages/deslop-js/tests/fixtures/tsdown-entry/src/unused.ts b/packages/core/tests/deslop/fixtures/tsdown-entry/src/unused.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/tsdown-entry/src/unused.ts rename to packages/core/tests/deslop/fixtures/tsdown-entry/src/unused.ts diff --git a/packages/deslop-js/tests/fixtures/tsdown-entry/src/utils.ts b/packages/core/tests/deslop/fixtures/tsdown-entry/src/utils.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/tsdown-entry/src/utils.ts rename to packages/core/tests/deslop/fixtures/tsdown-entry/src/utils.ts diff --git a/packages/deslop-js/tests/fixtures/tsdown-entry/tsdown.config.ts b/packages/core/tests/deslop/fixtures/tsdown-entry/tsdown.config.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/tsdown-entry/tsdown.config.ts rename to packages/core/tests/deslop/fixtures/tsdown-entry/tsdown.config.ts diff --git a/packages/deslop-js/tests/fixtures/type-cycle/package.json b/packages/core/tests/deslop/fixtures/type-cycle/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/type-cycle/package.json rename to packages/core/tests/deslop/fixtures/type-cycle/package.json diff --git a/packages/deslop-js/tests/fixtures/type-cycle/src/index.ts b/packages/core/tests/deslop/fixtures/type-cycle/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/type-cycle/src/index.ts rename to packages/core/tests/deslop/fixtures/type-cycle/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/type-cycle/src/post.ts b/packages/core/tests/deslop/fixtures/type-cycle/src/post.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/type-cycle/src/post.ts rename to packages/core/tests/deslop/fixtures/type-cycle/src/post.ts diff --git a/packages/deslop-js/tests/fixtures/type-cycle/src/user.ts b/packages/core/tests/deslop/fixtures/type-cycle/src/user.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/type-cycle/src/user.ts rename to packages/core/tests/deslop/fixtures/type-cycle/src/user.ts diff --git a/packages/deslop-js/tests/fixtures/type-cycle/tsconfig.json b/packages/core/tests/deslop/fixtures/type-cycle/tsconfig.json similarity index 100% rename from packages/deslop-js/tests/fixtures/type-cycle/tsconfig.json rename to packages/core/tests/deslop/fixtures/type-cycle/tsconfig.json diff --git a/packages/deslop-js/tests/fixtures/type-deps/package.json b/packages/core/tests/deslop/fixtures/type-deps/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/type-deps/package.json rename to packages/core/tests/deslop/fixtures/type-deps/package.json diff --git a/packages/deslop-js/tests/fixtures/type-deps/src/index.ts b/packages/core/tests/deslop/fixtures/type-deps/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/type-deps/src/index.ts rename to packages/core/tests/deslop/fixtures/type-deps/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/type-reexport-filter/consumer.ts b/packages/core/tests/deslop/fixtures/type-reexport-filter/consumer.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/type-reexport-filter/consumer.ts rename to packages/core/tests/deslop/fixtures/type-reexport-filter/consumer.ts diff --git a/packages/deslop-js/tests/fixtures/type-reexport-filter/index.ts b/packages/core/tests/deslop/fixtures/type-reexport-filter/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/type-reexport-filter/index.ts rename to packages/core/tests/deslop/fixtures/type-reexport-filter/index.ts diff --git a/packages/deslop-js/tests/fixtures/type-reexport-filter/package.json b/packages/core/tests/deslop/fixtures/type-reexport-filter/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/type-reexport-filter/package.json rename to packages/core/tests/deslop/fixtures/type-reexport-filter/package.json diff --git a/packages/deslop-js/tests/fixtures/type-reexport-filter/types.ts b/packages/core/tests/deslop/fixtures/type-reexport-filter/types.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/type-reexport-filter/types.ts rename to packages/core/tests/deslop/fixtures/type-reexport-filter/types.ts diff --git a/packages/deslop-js/tests/fixtures/type-reexport-filter/user.ts b/packages/core/tests/deslop/fixtures/type-reexport-filter/user.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/type-reexport-filter/user.ts rename to packages/core/tests/deslop/fixtures/type-reexport-filter/user.ts diff --git a/packages/deslop-js/tests/fixtures/typescript-smells/package.json b/packages/core/tests/deslop/fixtures/typescript-smells/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/typescript-smells/package.json rename to packages/core/tests/deslop/fixtures/typescript-smells/package.json diff --git a/packages/deslop-js/tests/fixtures/typescript-smells/src/alpha.ts b/packages/core/tests/deslop/fixtures/typescript-smells/src/alpha.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/typescript-smells/src/alpha.ts rename to packages/core/tests/deslop/fixtures/typescript-smells/src/alpha.ts diff --git a/packages/deslop-js/tests/fixtures/typescript-smells/src/beta.ts b/packages/core/tests/deslop/fixtures/typescript-smells/src/beta.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/typescript-smells/src/beta.ts rename to packages/core/tests/deslop/fixtures/typescript-smells/src/beta.ts diff --git a/packages/deslop-js/tests/fixtures/typescript-smells/src/delta.ts b/packages/core/tests/deslop/fixtures/typescript-smells/src/delta.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/typescript-smells/src/delta.ts rename to packages/core/tests/deslop/fixtures/typescript-smells/src/delta.ts diff --git a/packages/deslop-js/tests/fixtures/typescript-smells/src/gamma.ts b/packages/core/tests/deslop/fixtures/typescript-smells/src/gamma.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/typescript-smells/src/gamma.ts rename to packages/core/tests/deslop/fixtures/typescript-smells/src/gamma.ts diff --git a/packages/deslop-js/tests/fixtures/typescript-smells/src/index.ts b/packages/core/tests/deslop/fixtures/typescript-smells/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/typescript-smells/src/index.ts rename to packages/core/tests/deslop/fixtures/typescript-smells/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/unused-class-members-basic/package.json b/packages/core/tests/deslop/fixtures/unused-class-members-basic/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/unused-class-members-basic/package.json rename to packages/core/tests/deslop/fixtures/unused-class-members-basic/package.json diff --git a/packages/deslop-js/tests/fixtures/unused-class-members-basic/src/calculator.ts b/packages/core/tests/deslop/fixtures/unused-class-members-basic/src/calculator.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/unused-class-members-basic/src/calculator.ts rename to packages/core/tests/deslop/fixtures/unused-class-members-basic/src/calculator.ts diff --git a/packages/deslop-js/tests/fixtures/unused-class-members-basic/src/index.ts b/packages/core/tests/deslop/fixtures/unused-class-members-basic/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/unused-class-members-basic/src/index.ts rename to packages/core/tests/deslop/fixtures/unused-class-members-basic/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/unused-class-members-basic/tsconfig.json b/packages/core/tests/deslop/fixtures/unused-class-members-basic/tsconfig.json similarity index 100% rename from packages/deslop-js/tests/fixtures/unused-class-members-basic/tsconfig.json rename to packages/core/tests/deslop/fixtures/unused-class-members-basic/tsconfig.json diff --git a/packages/deslop-js/tests/fixtures/unused-class-members-decorated/package.json b/packages/core/tests/deslop/fixtures/unused-class-members-decorated/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/unused-class-members-decorated/package.json rename to packages/core/tests/deslop/fixtures/unused-class-members-decorated/package.json diff --git a/packages/deslop-js/tests/fixtures/unused-class-members-decorated/src/controller.ts b/packages/core/tests/deslop/fixtures/unused-class-members-decorated/src/controller.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/unused-class-members-decorated/src/controller.ts rename to packages/core/tests/deslop/fixtures/unused-class-members-decorated/src/controller.ts diff --git a/packages/deslop-js/tests/fixtures/unused-class-members-decorated/src/decorators.ts b/packages/core/tests/deslop/fixtures/unused-class-members-decorated/src/decorators.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/unused-class-members-decorated/src/decorators.ts rename to packages/core/tests/deslop/fixtures/unused-class-members-decorated/src/decorators.ts diff --git a/packages/deslop-js/tests/fixtures/unused-class-members-decorated/src/index.ts b/packages/core/tests/deslop/fixtures/unused-class-members-decorated/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/unused-class-members-decorated/src/index.ts rename to packages/core/tests/deslop/fixtures/unused-class-members-decorated/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/unused-class-members-decorated/tsconfig.json b/packages/core/tests/deslop/fixtures/unused-class-members-decorated/tsconfig.json similarity index 100% rename from packages/deslop-js/tests/fixtures/unused-class-members-decorated/tsconfig.json rename to packages/core/tests/deslop/fixtures/unused-class-members-decorated/tsconfig.json diff --git a/packages/deslop-js/tests/fixtures/unused-class-members-inherited/package.json b/packages/core/tests/deslop/fixtures/unused-class-members-inherited/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/unused-class-members-inherited/package.json rename to packages/core/tests/deslop/fixtures/unused-class-members-inherited/package.json diff --git a/packages/deslop-js/tests/fixtures/unused-class-members-inherited/src/animals.ts b/packages/core/tests/deslop/fixtures/unused-class-members-inherited/src/animals.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/unused-class-members-inherited/src/animals.ts rename to packages/core/tests/deslop/fixtures/unused-class-members-inherited/src/animals.ts diff --git a/packages/deslop-js/tests/fixtures/unused-class-members-inherited/src/index.ts b/packages/core/tests/deslop/fixtures/unused-class-members-inherited/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/unused-class-members-inherited/src/index.ts rename to packages/core/tests/deslop/fixtures/unused-class-members-inherited/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/unused-class-members-inherited/tsconfig.json b/packages/core/tests/deslop/fixtures/unused-class-members-inherited/tsconfig.json similarity index 100% rename from packages/deslop-js/tests/fixtures/unused-class-members-inherited/tsconfig.json rename to packages/core/tests/deslop/fixtures/unused-class-members-inherited/tsconfig.json diff --git a/packages/deslop-js/tests/fixtures/unused-enum-members-const/package.json b/packages/core/tests/deslop/fixtures/unused-enum-members-const/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/unused-enum-members-const/package.json rename to packages/core/tests/deslop/fixtures/unused-enum-members-const/package.json diff --git a/packages/deslop-js/tests/fixtures/unused-enum-members-const/src/flags.ts b/packages/core/tests/deslop/fixtures/unused-enum-members-const/src/flags.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/unused-enum-members-const/src/flags.ts rename to packages/core/tests/deslop/fixtures/unused-enum-members-const/src/flags.ts diff --git a/packages/deslop-js/tests/fixtures/unused-enum-members-const/src/index.ts b/packages/core/tests/deslop/fixtures/unused-enum-members-const/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/unused-enum-members-const/src/index.ts rename to packages/core/tests/deslop/fixtures/unused-enum-members-const/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/unused-enum-members-const/tsconfig.json b/packages/core/tests/deslop/fixtures/unused-enum-members-const/tsconfig.json similarity index 100% rename from packages/deslop-js/tests/fixtures/unused-enum-members-const/tsconfig.json rename to packages/core/tests/deslop/fixtures/unused-enum-members-const/tsconfig.json diff --git a/packages/deslop-js/tests/fixtures/unused-enum-members-numeric/package.json b/packages/core/tests/deslop/fixtures/unused-enum-members-numeric/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/unused-enum-members-numeric/package.json rename to packages/core/tests/deslop/fixtures/unused-enum-members-numeric/package.json diff --git a/packages/deslop-js/tests/fixtures/unused-enum-members-numeric/src/index.ts b/packages/core/tests/deslop/fixtures/unused-enum-members-numeric/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/unused-enum-members-numeric/src/index.ts rename to packages/core/tests/deslop/fixtures/unused-enum-members-numeric/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/unused-enum-members-numeric/src/level.ts b/packages/core/tests/deslop/fixtures/unused-enum-members-numeric/src/level.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/unused-enum-members-numeric/src/level.ts rename to packages/core/tests/deslop/fixtures/unused-enum-members-numeric/src/level.ts diff --git a/packages/deslop-js/tests/fixtures/unused-enum-members-numeric/tsconfig.json b/packages/core/tests/deslop/fixtures/unused-enum-members-numeric/tsconfig.json similarity index 100% rename from packages/deslop-js/tests/fixtures/unused-enum-members-numeric/tsconfig.json rename to packages/core/tests/deslop/fixtures/unused-enum-members-numeric/tsconfig.json diff --git a/packages/deslop-js/tests/fixtures/unused-enum-members-reverse-lookup/package.json b/packages/core/tests/deslop/fixtures/unused-enum-members-reverse-lookup/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/unused-enum-members-reverse-lookup/package.json rename to packages/core/tests/deslop/fixtures/unused-enum-members-reverse-lookup/package.json diff --git a/packages/deslop-js/tests/fixtures/unused-enum-members-reverse-lookup/src/code.ts b/packages/core/tests/deslop/fixtures/unused-enum-members-reverse-lookup/src/code.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/unused-enum-members-reverse-lookup/src/code.ts rename to packages/core/tests/deslop/fixtures/unused-enum-members-reverse-lookup/src/code.ts diff --git a/packages/deslop-js/tests/fixtures/unused-enum-members-reverse-lookup/src/index.ts b/packages/core/tests/deslop/fixtures/unused-enum-members-reverse-lookup/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/unused-enum-members-reverse-lookup/src/index.ts rename to packages/core/tests/deslop/fixtures/unused-enum-members-reverse-lookup/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/unused-enum-members-reverse-lookup/tsconfig.json b/packages/core/tests/deslop/fixtures/unused-enum-members-reverse-lookup/tsconfig.json similarity index 100% rename from packages/deslop-js/tests/fixtures/unused-enum-members-reverse-lookup/tsconfig.json rename to packages/core/tests/deslop/fixtures/unused-enum-members-reverse-lookup/tsconfig.json diff --git a/packages/deslop-js/tests/fixtures/unused-enum-members-string/package.json b/packages/core/tests/deslop/fixtures/unused-enum-members-string/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/unused-enum-members-string/package.json rename to packages/core/tests/deslop/fixtures/unused-enum-members-string/package.json diff --git a/packages/deslop-js/tests/fixtures/unused-enum-members-string/src/index.ts b/packages/core/tests/deslop/fixtures/unused-enum-members-string/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/unused-enum-members-string/src/index.ts rename to packages/core/tests/deslop/fixtures/unused-enum-members-string/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/unused-enum-members-string/src/status.ts b/packages/core/tests/deslop/fixtures/unused-enum-members-string/src/status.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/unused-enum-members-string/src/status.ts rename to packages/core/tests/deslop/fixtures/unused-enum-members-string/src/status.ts diff --git a/packages/deslop-js/tests/fixtures/unused-enum-members-string/tsconfig.json b/packages/core/tests/deslop/fixtures/unused-enum-members-string/tsconfig.json similarity index 100% rename from packages/deslop-js/tests/fixtures/unused-enum-members-string/tsconfig.json rename to packages/core/tests/deslop/fixtures/unused-enum-members-string/tsconfig.json diff --git a/packages/deslop-js/tests/fixtures/unused-types-basic/package.json b/packages/core/tests/deslop/fixtures/unused-types-basic/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/unused-types-basic/package.json rename to packages/core/tests/deslop/fixtures/unused-types-basic/package.json diff --git a/packages/deslop-js/tests/fixtures/unused-types-basic/src/consumer.ts b/packages/core/tests/deslop/fixtures/unused-types-basic/src/consumer.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/unused-types-basic/src/consumer.ts rename to packages/core/tests/deslop/fixtures/unused-types-basic/src/consumer.ts diff --git a/packages/deslop-js/tests/fixtures/unused-types-basic/src/index.ts b/packages/core/tests/deslop/fixtures/unused-types-basic/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/unused-types-basic/src/index.ts rename to packages/core/tests/deslop/fixtures/unused-types-basic/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/unused-types-basic/src/types.ts b/packages/core/tests/deslop/fixtures/unused-types-basic/src/types.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/unused-types-basic/src/types.ts rename to packages/core/tests/deslop/fixtures/unused-types-basic/src/types.ts diff --git a/packages/deslop-js/tests/fixtures/unused-types-basic/tsconfig.json b/packages/core/tests/deslop/fixtures/unused-types-basic/tsconfig.json similarity index 100% rename from packages/deslop-js/tests/fixtures/unused-types-basic/tsconfig.json rename to packages/core/tests/deslop/fixtures/unused-types-basic/tsconfig.json diff --git a/packages/deslop-js/tests/fixtures/unused-types-decl-merge/package.json b/packages/core/tests/deslop/fixtures/unused-types-decl-merge/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/unused-types-decl-merge/package.json rename to packages/core/tests/deslop/fixtures/unused-types-decl-merge/package.json diff --git a/packages/deslop-js/tests/fixtures/unused-types-decl-merge/src/index.ts b/packages/core/tests/deslop/fixtures/unused-types-decl-merge/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/unused-types-decl-merge/src/index.ts rename to packages/core/tests/deslop/fixtures/unused-types-decl-merge/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/unused-types-decl-merge/src/merged.ts b/packages/core/tests/deslop/fixtures/unused-types-decl-merge/src/merged.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/unused-types-decl-merge/src/merged.ts rename to packages/core/tests/deslop/fixtures/unused-types-decl-merge/src/merged.ts diff --git a/packages/deslop-js/tests/fixtures/unused-types-decl-merge/tsconfig.json b/packages/core/tests/deslop/fixtures/unused-types-decl-merge/tsconfig.json similarity index 100% rename from packages/deslop-js/tests/fixtures/unused-types-decl-merge/tsconfig.json rename to packages/core/tests/deslop/fixtures/unused-types-decl-merge/tsconfig.json diff --git a/packages/deslop-js/tests/fixtures/unused-types-entry-export/package.json b/packages/core/tests/deslop/fixtures/unused-types-entry-export/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/unused-types-entry-export/package.json rename to packages/core/tests/deslop/fixtures/unused-types-entry-export/package.json diff --git a/packages/deslop-js/tests/fixtures/unused-types-entry-export/src/index.ts b/packages/core/tests/deslop/fixtures/unused-types-entry-export/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/unused-types-entry-export/src/index.ts rename to packages/core/tests/deslop/fixtures/unused-types-entry-export/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/unused-types-entry-export/tsconfig.json b/packages/core/tests/deslop/fixtures/unused-types-entry-export/tsconfig.json similarity index 100% rename from packages/deslop-js/tests/fixtures/unused-types-entry-export/tsconfig.json rename to packages/core/tests/deslop/fixtures/unused-types-entry-export/tsconfig.json diff --git a/packages/deslop-js/tests/fixtures/unused-types-extends/package.json b/packages/core/tests/deslop/fixtures/unused-types-extends/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/unused-types-extends/package.json rename to packages/core/tests/deslop/fixtures/unused-types-extends/package.json diff --git a/packages/deslop-js/tests/fixtures/unused-types-extends/src/index.ts b/packages/core/tests/deslop/fixtures/unused-types-extends/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/unused-types-extends/src/index.ts rename to packages/core/tests/deslop/fixtures/unused-types-extends/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/unused-types-extends/src/types.ts b/packages/core/tests/deslop/fixtures/unused-types-extends/src/types.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/unused-types-extends/src/types.ts rename to packages/core/tests/deslop/fixtures/unused-types-extends/src/types.ts diff --git a/packages/deslop-js/tests/fixtures/unused-types-extends/tsconfig.json b/packages/core/tests/deslop/fixtures/unused-types-extends/tsconfig.json similarity index 100% rename from packages/deslop-js/tests/fixtures/unused-types-extends/tsconfig.json rename to packages/core/tests/deslop/fixtures/unused-types-extends/tsconfig.json diff --git a/packages/deslop-js/tests/fixtures/unused-types-generics/package.json b/packages/core/tests/deslop/fixtures/unused-types-generics/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/unused-types-generics/package.json rename to packages/core/tests/deslop/fixtures/unused-types-generics/package.json diff --git a/packages/deslop-js/tests/fixtures/unused-types-generics/src/index.ts b/packages/core/tests/deslop/fixtures/unused-types-generics/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/unused-types-generics/src/index.ts rename to packages/core/tests/deslop/fixtures/unused-types-generics/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/unused-types-generics/src/types.ts b/packages/core/tests/deslop/fixtures/unused-types-generics/src/types.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/unused-types-generics/src/types.ts rename to packages/core/tests/deslop/fixtures/unused-types-generics/src/types.ts diff --git a/packages/deslop-js/tests/fixtures/unused-types-generics/tsconfig.json b/packages/core/tests/deslop/fixtures/unused-types-generics/tsconfig.json similarity index 100% rename from packages/deslop-js/tests/fixtures/unused-types-generics/tsconfig.json rename to packages/core/tests/deslop/fixtures/unused-types-generics/tsconfig.json diff --git a/packages/deslop-js/tests/fixtures/unused-types-import-type/package.json b/packages/core/tests/deslop/fixtures/unused-types-import-type/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/unused-types-import-type/package.json rename to packages/core/tests/deslop/fixtures/unused-types-import-type/package.json diff --git a/packages/deslop-js/tests/fixtures/unused-types-import-type/src/index.ts b/packages/core/tests/deslop/fixtures/unused-types-import-type/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/unused-types-import-type/src/index.ts rename to packages/core/tests/deslop/fixtures/unused-types-import-type/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/unused-types-import-type/src/types.ts b/packages/core/tests/deslop/fixtures/unused-types-import-type/src/types.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/unused-types-import-type/src/types.ts rename to packages/core/tests/deslop/fixtures/unused-types-import-type/src/types.ts diff --git a/packages/deslop-js/tests/fixtures/unused-types-import-type/tsconfig.json b/packages/core/tests/deslop/fixtures/unused-types-import-type/tsconfig.json similarity index 100% rename from packages/deslop-js/tests/fixtures/unused-types-import-type/tsconfig.json rename to packages/core/tests/deslop/fixtures/unused-types-import-type/tsconfig.json diff --git a/packages/deslop-js/tests/fixtures/unused-types-jsdoc/package.json b/packages/core/tests/deslop/fixtures/unused-types-jsdoc/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/unused-types-jsdoc/package.json rename to packages/core/tests/deslop/fixtures/unused-types-jsdoc/package.json diff --git a/packages/deslop-js/tests/fixtures/unused-types-jsdoc/src/bridge.ts b/packages/core/tests/deslop/fixtures/unused-types-jsdoc/src/bridge.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/unused-types-jsdoc/src/bridge.ts rename to packages/core/tests/deslop/fixtures/unused-types-jsdoc/src/bridge.ts diff --git a/packages/deslop-js/tests/fixtures/unused-types-jsdoc/src/index.js b/packages/core/tests/deslop/fixtures/unused-types-jsdoc/src/index.js similarity index 100% rename from packages/deslop-js/tests/fixtures/unused-types-jsdoc/src/index.js rename to packages/core/tests/deslop/fixtures/unused-types-jsdoc/src/index.js diff --git a/packages/deslop-js/tests/fixtures/unused-types-jsdoc/src/jsdoc-consumer.js b/packages/core/tests/deslop/fixtures/unused-types-jsdoc/src/jsdoc-consumer.js similarity index 100% rename from packages/deslop-js/tests/fixtures/unused-types-jsdoc/src/jsdoc-consumer.js rename to packages/core/tests/deslop/fixtures/unused-types-jsdoc/src/jsdoc-consumer.js diff --git a/packages/deslop-js/tests/fixtures/unused-types-jsdoc/src/types.ts b/packages/core/tests/deslop/fixtures/unused-types-jsdoc/src/types.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/unused-types-jsdoc/src/types.ts rename to packages/core/tests/deslop/fixtures/unused-types-jsdoc/src/types.ts diff --git a/packages/deslop-js/tests/fixtures/unused-types-jsdoc/tsconfig.json b/packages/core/tests/deslop/fixtures/unused-types-jsdoc/tsconfig.json similarity index 100% rename from packages/deslop-js/tests/fixtures/unused-types-jsdoc/tsconfig.json rename to packages/core/tests/deslop/fixtures/unused-types-jsdoc/tsconfig.json diff --git a/packages/deslop-js/tests/fixtures/unused-types-nested/package.json b/packages/core/tests/deslop/fixtures/unused-types-nested/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/unused-types-nested/package.json rename to packages/core/tests/deslop/fixtures/unused-types-nested/package.json diff --git a/packages/deslop-js/tests/fixtures/unused-types-nested/src/index.ts b/packages/core/tests/deslop/fixtures/unused-types-nested/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/unused-types-nested/src/index.ts rename to packages/core/tests/deslop/fixtures/unused-types-nested/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/unused-types-nested/src/types.ts b/packages/core/tests/deslop/fixtures/unused-types-nested/src/types.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/unused-types-nested/src/types.ts rename to packages/core/tests/deslop/fixtures/unused-types-nested/src/types.ts diff --git a/packages/deslop-js/tests/fixtures/unused-types-nested/tsconfig.json b/packages/core/tests/deslop/fixtures/unused-types-nested/tsconfig.json similarity index 100% rename from packages/deslop-js/tests/fixtures/unused-types-nested/tsconfig.json rename to packages/core/tests/deslop/fixtures/unused-types-nested/tsconfig.json diff --git a/packages/deslop-js/tests/fixtures/unused-types-reexport-chain/package.json b/packages/core/tests/deslop/fixtures/unused-types-reexport-chain/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/unused-types-reexport-chain/package.json rename to packages/core/tests/deslop/fixtures/unused-types-reexport-chain/package.json diff --git a/packages/deslop-js/tests/fixtures/unused-types-reexport-chain/src/a.ts b/packages/core/tests/deslop/fixtures/unused-types-reexport-chain/src/a.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/unused-types-reexport-chain/src/a.ts rename to packages/core/tests/deslop/fixtures/unused-types-reexport-chain/src/a.ts diff --git a/packages/deslop-js/tests/fixtures/unused-types-reexport-chain/src/b.ts b/packages/core/tests/deslop/fixtures/unused-types-reexport-chain/src/b.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/unused-types-reexport-chain/src/b.ts rename to packages/core/tests/deslop/fixtures/unused-types-reexport-chain/src/b.ts diff --git a/packages/deslop-js/tests/fixtures/unused-types-reexport-chain/src/c.ts b/packages/core/tests/deslop/fixtures/unused-types-reexport-chain/src/c.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/unused-types-reexport-chain/src/c.ts rename to packages/core/tests/deslop/fixtures/unused-types-reexport-chain/src/c.ts diff --git a/packages/deslop-js/tests/fixtures/unused-types-reexport-chain/src/index.ts b/packages/core/tests/deslop/fixtures/unused-types-reexport-chain/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/unused-types-reexport-chain/src/index.ts rename to packages/core/tests/deslop/fixtures/unused-types-reexport-chain/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/unused-types-reexport-chain/tsconfig.json b/packages/core/tests/deslop/fixtures/unused-types-reexport-chain/tsconfig.json similarity index 100% rename from packages/deslop-js/tests/fixtures/unused-types-reexport-chain/tsconfig.json rename to packages/core/tests/deslop/fixtures/unused-types-reexport-chain/tsconfig.json diff --git a/packages/deslop-js/tests/fixtures/vercel-config-app/package.json b/packages/core/tests/deslop/fixtures/vercel-config-app/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/vercel-config-app/package.json rename to packages/core/tests/deslop/fixtures/vercel-config-app/package.json diff --git a/packages/deslop-js/tests/fixtures/vercel-config-app/src/index.ts b/packages/core/tests/deslop/fixtures/vercel-config-app/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/vercel-config-app/src/index.ts rename to packages/core/tests/deslop/fixtures/vercel-config-app/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/vercel-config-app/vercel.ts b/packages/core/tests/deslop/fixtures/vercel-config-app/vercel.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/vercel-config-app/vercel.ts rename to packages/core/tests/deslop/fixtures/vercel-config-app/vercel.ts diff --git a/packages/deslop-js/tests/fixtures/vite-app/package.json b/packages/core/tests/deslop/fixtures/vite-app/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/vite-app/package.json rename to packages/core/tests/deslop/fixtures/vite-app/package.json diff --git a/packages/deslop-js/tests/fixtures/vite-app/src/main.tsx b/packages/core/tests/deslop/fixtures/vite-app/src/main.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/vite-app/src/main.tsx rename to packages/core/tests/deslop/fixtures/vite-app/src/main.tsx diff --git a/packages/deslop-js/tests/fixtures/vite-app/src/orphan.ts b/packages/core/tests/deslop/fixtures/vite-app/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/vite-app/src/orphan.ts rename to packages/core/tests/deslop/fixtures/vite-app/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/vite-app/src/render.ts b/packages/core/tests/deslop/fixtures/vite-app/src/render.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/vite-app/src/render.ts rename to packages/core/tests/deslop/fixtures/vite-app/src/render.ts diff --git a/packages/deslop-js/tests/fixtures/vite-app/vite.config.ts b/packages/core/tests/deslop/fixtures/vite-app/vite.config.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/vite-app/vite.config.ts rename to packages/core/tests/deslop/fixtures/vite-app/vite.config.ts diff --git a/packages/deslop-js/tests/fixtures/vite-glob-import/package.json b/packages/core/tests/deslop/fixtures/vite-glob-import/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/vite-glob-import/package.json rename to packages/core/tests/deslop/fixtures/vite-glob-import/package.json diff --git a/packages/deslop-js/tests/fixtures/vite-glob-import/src/index.ts b/packages/core/tests/deslop/fixtures/vite-glob-import/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/vite-glob-import/src/index.ts rename to packages/core/tests/deslop/fixtures/vite-glob-import/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/vite-glob-import/src/layouts/main.ts b/packages/core/tests/deslop/fixtures/vite-glob-import/src/layouts/main.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/vite-glob-import/src/layouts/main.ts rename to packages/core/tests/deslop/fixtures/vite-glob-import/src/layouts/main.ts diff --git a/packages/deslop-js/tests/fixtures/vite-glob-import/src/modules/alpha.ts b/packages/core/tests/deslop/fixtures/vite-glob-import/src/modules/alpha.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/vite-glob-import/src/modules/alpha.ts rename to packages/core/tests/deslop/fixtures/vite-glob-import/src/modules/alpha.ts diff --git a/packages/deslop-js/tests/fixtures/vite-glob-import/src/modules/beta.ts b/packages/core/tests/deslop/fixtures/vite-glob-import/src/modules/beta.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/vite-glob-import/src/modules/beta.ts rename to packages/core/tests/deslop/fixtures/vite-glob-import/src/modules/beta.ts diff --git a/packages/deslop-js/tests/fixtures/vite-glob-import/src/orphan.ts b/packages/core/tests/deslop/fixtures/vite-glob-import/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/vite-glob-import/src/orphan.ts rename to packages/core/tests/deslop/fixtures/vite-glob-import/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/vite-resolve-alias/package.json b/packages/core/tests/deslop/fixtures/vite-resolve-alias/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/vite-resolve-alias/package.json rename to packages/core/tests/deslop/fixtures/vite-resolve-alias/package.json diff --git a/packages/deslop-js/tests/fixtures/vite-resolve-alias/src/lib/orphan.ts b/packages/core/tests/deslop/fixtures/vite-resolve-alias/src/lib/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/vite-resolve-alias/src/lib/orphan.ts rename to packages/core/tests/deslop/fixtures/vite-resolve-alias/src/lib/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/vite-resolve-alias/src/lib/util.ts b/packages/core/tests/deslop/fixtures/vite-resolve-alias/src/lib/util.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/vite-resolve-alias/src/lib/util.ts rename to packages/core/tests/deslop/fixtures/vite-resolve-alias/src/lib/util.ts diff --git a/packages/deslop-js/tests/fixtures/vite-resolve-alias/src/main.ts b/packages/core/tests/deslop/fixtures/vite-resolve-alias/src/main.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/vite-resolve-alias/src/main.ts rename to packages/core/tests/deslop/fixtures/vite-resolve-alias/src/main.ts diff --git a/packages/deslop-js/tests/fixtures/vite-resolve-alias/src/widget.ts b/packages/core/tests/deslop/fixtures/vite-resolve-alias/src/widget.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/vite-resolve-alias/src/widget.ts rename to packages/core/tests/deslop/fixtures/vite-resolve-alias/src/widget.ts diff --git a/packages/deslop-js/tests/fixtures/vite-resolve-alias/vite.config.ts b/packages/core/tests/deslop/fixtures/vite-resolve-alias/vite.config.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/vite-resolve-alias/vite.config.ts rename to packages/core/tests/deslop/fixtures/vite-resolve-alias/vite.config.ts diff --git a/packages/deslop-js/tests/fixtures/vitest-automock/__tests__/server.test.ts b/packages/core/tests/deslop/fixtures/vitest-automock/__tests__/server.test.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/vitest-automock/__tests__/server.test.ts rename to packages/core/tests/deslop/fixtures/vitest-automock/__tests__/server.test.ts diff --git a/packages/deslop-js/tests/fixtures/vitest-automock/__tests__/utils.test.ts b/packages/core/tests/deslop/fixtures/vitest-automock/__tests__/utils.test.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/vitest-automock/__tests__/utils.test.ts rename to packages/core/tests/deslop/fixtures/vitest-automock/__tests__/utils.test.ts diff --git a/packages/deslop-js/tests/fixtures/vitest-automock/package.json b/packages/core/tests/deslop/fixtures/vitest-automock/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/vitest-automock/package.json rename to packages/core/tests/deslop/fixtures/vitest-automock/package.json diff --git a/packages/deslop-js/tests/fixtures/vitest-automock/src/index.ts b/packages/core/tests/deslop/fixtures/vitest-automock/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/vitest-automock/src/index.ts rename to packages/core/tests/deslop/fixtures/vitest-automock/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/vitest-automock/src/server/__mocks__/api.ts b/packages/core/tests/deslop/fixtures/vitest-automock/src/server/__mocks__/api.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/vitest-automock/src/server/__mocks__/api.ts rename to packages/core/tests/deslop/fixtures/vitest-automock/src/server/__mocks__/api.ts diff --git a/packages/deslop-js/tests/fixtures/vitest-automock/src/server/api.ts b/packages/core/tests/deslop/fixtures/vitest-automock/src/server/api.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/vitest-automock/src/server/api.ts rename to packages/core/tests/deslop/fixtures/vitest-automock/src/server/api.ts diff --git a/packages/deslop-js/tests/fixtures/vitest-automock/src/server/unused.ts b/packages/core/tests/deslop/fixtures/vitest-automock/src/server/unused.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/vitest-automock/src/server/unused.ts rename to packages/core/tests/deslop/fixtures/vitest-automock/src/server/unused.ts diff --git a/packages/deslop-js/tests/fixtures/vitest-automock/src/utils/__mocks__/helper.ts b/packages/core/tests/deslop/fixtures/vitest-automock/src/utils/__mocks__/helper.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/vitest-automock/src/utils/__mocks__/helper.ts rename to packages/core/tests/deslop/fixtures/vitest-automock/src/utils/__mocks__/helper.ts diff --git a/packages/deslop-js/tests/fixtures/vitest-automock/src/utils/helper.ts b/packages/core/tests/deslop/fixtures/vitest-automock/src/utils/helper.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/vitest-automock/src/utils/helper.ts rename to packages/core/tests/deslop/fixtures/vitest-automock/src/utils/helper.ts diff --git a/packages/deslop-js/tests/fixtures/vitest-coverage/orphan.ts b/packages/core/tests/deslop/fixtures/vitest-coverage/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/vitest-coverage/orphan.ts rename to packages/core/tests/deslop/fixtures/vitest-coverage/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/vitest-coverage/package.json b/packages/core/tests/deslop/fixtures/vitest-coverage/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/vitest-coverage/package.json rename to packages/core/tests/deslop/fixtures/vitest-coverage/package.json diff --git a/packages/deslop-js/tests/fixtures/vitest-coverage/src/core.ts b/packages/core/tests/deslop/fixtures/vitest-coverage/src/core.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/vitest-coverage/src/core.ts rename to packages/core/tests/deslop/fixtures/vitest-coverage/src/core.ts diff --git a/packages/deslop-js/tests/fixtures/vitest-coverage/src/utils.ts b/packages/core/tests/deslop/fixtures/vitest-coverage/src/utils.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/vitest-coverage/src/utils.ts rename to packages/core/tests/deslop/fixtures/vitest-coverage/src/utils.ts diff --git a/packages/deslop-js/tests/fixtures/vitest-coverage/tests/core.test.ts b/packages/core/tests/deslop/fixtures/vitest-coverage/tests/core.test.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/vitest-coverage/tests/core.test.ts rename to packages/core/tests/deslop/fixtures/vitest-coverage/tests/core.test.ts diff --git a/packages/deslop-js/tests/fixtures/vitest-coverage/vitest.config.ts b/packages/core/tests/deslop/fixtures/vitest-coverage/vitest.config.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/vitest-coverage/vitest.config.ts rename to packages/core/tests/deslop/fixtures/vitest-coverage/vitest.config.ts diff --git a/packages/deslop-js/tests/fixtures/vitest-custom/package.json b/packages/core/tests/deslop/fixtures/vitest-custom/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/vitest-custom/package.json rename to packages/core/tests/deslop/fixtures/vitest-custom/package.json diff --git a/packages/deslop-js/tests/fixtures/vitest-custom/spec/utils-spec.ts b/packages/core/tests/deslop/fixtures/vitest-custom/spec/utils-spec.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/vitest-custom/spec/utils-spec.ts rename to packages/core/tests/deslop/fixtures/vitest-custom/spec/utils-spec.ts diff --git a/packages/deslop-js/tests/fixtures/vitest-custom/src/index.ts b/packages/core/tests/deslop/fixtures/vitest-custom/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/vitest-custom/src/index.ts rename to packages/core/tests/deslop/fixtures/vitest-custom/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/vitest-custom/src/orphan.ts b/packages/core/tests/deslop/fixtures/vitest-custom/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/vitest-custom/src/orphan.ts rename to packages/core/tests/deslop/fixtures/vitest-custom/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/vitest-custom/tsconfig.json b/packages/core/tests/deslop/fixtures/vitest-custom/tsconfig.json similarity index 100% rename from packages/deslop-js/tests/fixtures/vitest-custom/tsconfig.json rename to packages/core/tests/deslop/fixtures/vitest-custom/tsconfig.json diff --git a/packages/deslop-js/tests/fixtures/vitest-custom/vitest.config.ts b/packages/core/tests/deslop/fixtures/vitest-custom/vitest.config.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/vitest-custom/vitest.config.ts rename to packages/core/tests/deslop/fixtures/vitest-custom/vitest.config.ts diff --git a/packages/deslop-js/tests/fixtures/vitest-override-target/package.json b/packages/core/tests/deslop/fixtures/vitest-override-target/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/vitest-override-target/package.json rename to packages/core/tests/deslop/fixtures/vitest-override-target/package.json diff --git a/packages/deslop-js/tests/fixtures/vitest-override-target/pnpm-workspace.yaml b/packages/core/tests/deslop/fixtures/vitest-override-target/pnpm-workspace.yaml similarity index 100% rename from packages/deslop-js/tests/fixtures/vitest-override-target/pnpm-workspace.yaml rename to packages/core/tests/deslop/fixtures/vitest-override-target/pnpm-workspace.yaml diff --git a/packages/deslop-js/tests/fixtures/vitest-override-target/src/index.ts b/packages/core/tests/deslop/fixtures/vitest-override-target/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/vitest-override-target/src/index.ts rename to packages/core/tests/deslop/fixtures/vitest-override-target/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/vitest-override-target/vitest.config.ts b/packages/core/tests/deslop/fixtures/vitest-override-target/vitest.config.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/vitest-override-target/vitest.config.ts rename to packages/core/tests/deslop/fixtures/vitest-override-target/vitest.config.ts diff --git a/packages/deslop-js/tests/fixtures/vitest-setup/package.json b/packages/core/tests/deslop/fixtures/vitest-setup/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/vitest-setup/package.json rename to packages/core/tests/deslop/fixtures/vitest-setup/package.json diff --git a/packages/deslop-js/tests/fixtures/vitest-setup/src/index.ts b/packages/core/tests/deslop/fixtures/vitest-setup/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/vitest-setup/src/index.ts rename to packages/core/tests/deslop/fixtures/vitest-setup/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/vitest-setup/src/orphan.ts b/packages/core/tests/deslop/fixtures/vitest-setup/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/vitest-setup/src/orphan.ts rename to packages/core/tests/deslop/fixtures/vitest-setup/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/vitest-setup/src/test/setup.ts b/packages/core/tests/deslop/fixtures/vitest-setup/src/test/setup.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/vitest-setup/src/test/setup.ts rename to packages/core/tests/deslop/fixtures/vitest-setup/src/test/setup.ts diff --git a/packages/deslop-js/tests/fixtures/vitest-setup/src/utils.ts b/packages/core/tests/deslop/fixtures/vitest-setup/src/utils.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/vitest-setup/src/utils.ts rename to packages/core/tests/deslop/fixtures/vitest-setup/src/utils.ts diff --git a/packages/deslop-js/tests/fixtures/vitest-setup/vitest.config.ts b/packages/core/tests/deslop/fixtures/vitest-setup/vitest.config.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/vitest-setup/vitest.config.ts rename to packages/core/tests/deslop/fixtures/vitest-setup/vitest.config.ts diff --git a/packages/deslop-js/tests/fixtures/vue-app/package.json b/packages/core/tests/deslop/fixtures/vue-app/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/vue-app/package.json rename to packages/core/tests/deslop/fixtures/vue-app/package.json diff --git a/packages/deslop-js/tests/fixtures/vue-app/src/App.vue b/packages/core/tests/deslop/fixtures/vue-app/src/App.vue similarity index 100% rename from packages/deslop-js/tests/fixtures/vue-app/src/App.vue rename to packages/core/tests/deslop/fixtures/vue-app/src/App.vue diff --git a/packages/deslop-js/tests/fixtures/vue-app/src/components/HelloWorld.vue b/packages/core/tests/deslop/fixtures/vue-app/src/components/HelloWorld.vue similarity index 100% rename from packages/deslop-js/tests/fixtures/vue-app/src/components/HelloWorld.vue rename to packages/core/tests/deslop/fixtures/vue-app/src/components/HelloWorld.vue diff --git a/packages/deslop-js/tests/fixtures/vue-app/src/components/OrphanComponent.vue b/packages/core/tests/deslop/fixtures/vue-app/src/components/OrphanComponent.vue similarity index 100% rename from packages/deslop-js/tests/fixtures/vue-app/src/components/OrphanComponent.vue rename to packages/core/tests/deslop/fixtures/vue-app/src/components/OrphanComponent.vue diff --git a/packages/deslop-js/tests/fixtures/vue-app/src/main.ts b/packages/core/tests/deslop/fixtures/vue-app/src/main.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/vue-app/src/main.ts rename to packages/core/tests/deslop/fixtures/vue-app/src/main.ts diff --git a/packages/deslop-js/tests/fixtures/vue-app/src/orphan.ts b/packages/core/tests/deslop/fixtures/vue-app/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/vue-app/src/orphan.ts rename to packages/core/tests/deslop/fixtures/vue-app/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/vue-app/src/utils.ts b/packages/core/tests/deslop/fixtures/vue-app/src/utils.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/vue-app/src/utils.ts rename to packages/core/tests/deslop/fixtures/vue-app/src/utils.ts diff --git a/packages/deslop-js/tests/fixtures/webpack-entries/package.json b/packages/core/tests/deslop/fixtures/webpack-entries/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/webpack-entries/package.json rename to packages/core/tests/deslop/fixtures/webpack-entries/package.json diff --git a/packages/deslop-js/tests/fixtures/webpack-entries/src/components/App.js b/packages/core/tests/deslop/fixtures/webpack-entries/src/components/App.js similarity index 100% rename from packages/deslop-js/tests/fixtures/webpack-entries/src/components/App.js rename to packages/core/tests/deslop/fixtures/webpack-entries/src/components/App.js diff --git a/packages/deslop-js/tests/fixtures/webpack-entries/src/components/Vendor.js b/packages/core/tests/deslop/fixtures/webpack-entries/src/components/Vendor.js similarity index 100% rename from packages/deslop-js/tests/fixtures/webpack-entries/src/components/Vendor.js rename to packages/core/tests/deslop/fixtures/webpack-entries/src/components/Vendor.js diff --git a/packages/deslop-js/tests/fixtures/webpack-entries/src/index.js b/packages/core/tests/deslop/fixtures/webpack-entries/src/index.js similarity index 100% rename from packages/deslop-js/tests/fixtures/webpack-entries/src/index.js rename to packages/core/tests/deslop/fixtures/webpack-entries/src/index.js diff --git a/packages/deslop-js/tests/fixtures/webpack-entries/src/orphan.js b/packages/core/tests/deslop/fixtures/webpack-entries/src/orphan.js similarity index 100% rename from packages/deslop-js/tests/fixtures/webpack-entries/src/orphan.js rename to packages/core/tests/deslop/fixtures/webpack-entries/src/orphan.js diff --git a/packages/deslop-js/tests/fixtures/webpack-entries/src/vendor.js b/packages/core/tests/deslop/fixtures/webpack-entries/src/vendor.js similarity index 100% rename from packages/deslop-js/tests/fixtures/webpack-entries/src/vendor.js rename to packages/core/tests/deslop/fixtures/webpack-entries/src/vendor.js diff --git a/packages/deslop-js/tests/fixtures/webpack-entries/webpack.config.js b/packages/core/tests/deslop/fixtures/webpack-entries/webpack.config.js similarity index 100% rename from packages/deslop-js/tests/fixtures/webpack-entries/webpack.config.js rename to packages/core/tests/deslop/fixtures/webpack-entries/webpack.config.js diff --git a/packages/deslop-js/tests/fixtures/webpack-path/app/index.js b/packages/core/tests/deslop/fixtures/webpack-path/app/index.js similarity index 100% rename from packages/deslop-js/tests/fixtures/webpack-path/app/index.js rename to packages/core/tests/deslop/fixtures/webpack-path/app/index.js diff --git a/packages/deslop-js/tests/fixtures/webpack-path/app/orphan.js b/packages/core/tests/deslop/fixtures/webpack-path/app/orphan.js similarity index 100% rename from packages/deslop-js/tests/fixtures/webpack-path/app/orphan.js rename to packages/core/tests/deslop/fixtures/webpack-path/app/orphan.js diff --git a/packages/deslop-js/tests/fixtures/webpack-path/app/renderer.js b/packages/core/tests/deslop/fixtures/webpack-path/app/renderer.js similarity index 100% rename from packages/deslop-js/tests/fixtures/webpack-path/app/renderer.js rename to packages/core/tests/deslop/fixtures/webpack-path/app/renderer.js diff --git a/packages/deslop-js/tests/fixtures/webpack-path/configs/webpack.config.renderer.prod.babel.js b/packages/core/tests/deslop/fixtures/webpack-path/configs/webpack.config.renderer.prod.babel.js similarity index 100% rename from packages/deslop-js/tests/fixtures/webpack-path/configs/webpack.config.renderer.prod.babel.js rename to packages/core/tests/deslop/fixtures/webpack-path/configs/webpack.config.renderer.prod.babel.js diff --git a/packages/deslop-js/tests/fixtures/webpack-path/package.json b/packages/core/tests/deslop/fixtures/webpack-path/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/webpack-path/package.json rename to packages/core/tests/deslop/fixtures/webpack-path/package.json diff --git a/packages/deslop-js/tests/fixtures/webpack-require-ctx/package.json b/packages/core/tests/deslop/fixtures/webpack-require-ctx/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/webpack-require-ctx/package.json rename to packages/core/tests/deslop/fixtures/webpack-require-ctx/package.json diff --git a/packages/deslop-js/tests/fixtures/webpack-require-ctx/src/components/Button.tsx b/packages/core/tests/deslop/fixtures/webpack-require-ctx/src/components/Button.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/webpack-require-ctx/src/components/Button.tsx rename to packages/core/tests/deslop/fixtures/webpack-require-ctx/src/components/Button.tsx diff --git a/packages/deslop-js/tests/fixtures/webpack-require-ctx/src/components/nested/Card.tsx b/packages/core/tests/deslop/fixtures/webpack-require-ctx/src/components/nested/Card.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/webpack-require-ctx/src/components/nested/Card.tsx rename to packages/core/tests/deslop/fixtures/webpack-require-ctx/src/components/nested/Card.tsx diff --git a/packages/deslop-js/tests/fixtures/webpack-require-ctx/src/index.ts b/packages/core/tests/deslop/fixtures/webpack-require-ctx/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/webpack-require-ctx/src/index.ts rename to packages/core/tests/deslop/fixtures/webpack-require-ctx/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/webpack-require-ctx/src/orphan.ts b/packages/core/tests/deslop/fixtures/webpack-require-ctx/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/webpack-require-ctx/src/orphan.ts rename to packages/core/tests/deslop/fixtures/webpack-require-ctx/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/webpack-require-ctx/src/pages/home.ts b/packages/core/tests/deslop/fixtures/webpack-require-ctx/src/pages/home.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/webpack-require-ctx/src/pages/home.ts rename to packages/core/tests/deslop/fixtures/webpack-require-ctx/src/pages/home.ts diff --git a/packages/deslop-js/tests/fixtures/webpack-resolve/app/views/actions/orphan.ts b/packages/core/tests/deslop/fixtures/webpack-resolve/app/views/actions/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/webpack-resolve/app/views/actions/orphan.ts rename to packages/core/tests/deslop/fixtures/webpack-resolve/app/views/actions/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/webpack-resolve/app/views/actions/run-action.ts b/packages/core/tests/deslop/fixtures/webpack-resolve/app/views/actions/run-action.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/webpack-resolve/app/views/actions/run-action.ts rename to packages/core/tests/deslop/fixtures/webpack-resolve/app/views/actions/run-action.ts diff --git a/packages/deslop-js/tests/fixtures/webpack-resolve/app/views/utils/helper.ts b/packages/core/tests/deslop/fixtures/webpack-resolve/app/views/utils/helper.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/webpack-resolve/app/views/utils/helper.ts rename to packages/core/tests/deslop/fixtures/webpack-resolve/app/views/utils/helper.ts diff --git a/packages/deslop-js/tests/fixtures/webpack-resolve/package.json b/packages/core/tests/deslop/fixtures/webpack-resolve/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/webpack-resolve/package.json rename to packages/core/tests/deslop/fixtures/webpack-resolve/package.json diff --git a/packages/deslop-js/tests/fixtures/webpack-resolve/src/App.ts b/packages/core/tests/deslop/fixtures/webpack-resolve/src/App.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/webpack-resolve/src/App.ts rename to packages/core/tests/deslop/fixtures/webpack-resolve/src/App.ts diff --git a/packages/deslop-js/tests/fixtures/webpack-resolve/src/index.ts b/packages/core/tests/deslop/fixtures/webpack-resolve/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/webpack-resolve/src/index.ts rename to packages/core/tests/deslop/fixtures/webpack-resolve/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/webpack-resolve/src/orphan.ts b/packages/core/tests/deslop/fixtures/webpack-resolve/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/webpack-resolve/src/orphan.ts rename to packages/core/tests/deslop/fixtures/webpack-resolve/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/webpack-resolve/webpack.config.js b/packages/core/tests/deslop/fixtures/webpack-resolve/webpack.config.js similarity index 100% rename from packages/deslop-js/tests/fixtures/webpack-resolve/webpack.config.js rename to packages/core/tests/deslop/fixtures/webpack-resolve/webpack.config.js diff --git a/packages/deslop-js/tests/fixtures/wildcard-css/orphan.ts b/packages/core/tests/deslop/fixtures/wildcard-css/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/wildcard-css/orphan.ts rename to packages/core/tests/deslop/fixtures/wildcard-css/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/wildcard-css/package.json b/packages/core/tests/deslop/fixtures/wildcard-css/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/wildcard-css/package.json rename to packages/core/tests/deslop/fixtures/wildcard-css/package.json diff --git a/packages/deslop-js/tests/fixtures/wildcard-css/src/components/Button.css b/packages/core/tests/deslop/fixtures/wildcard-css/src/components/Button.css similarity index 100% rename from packages/deslop-js/tests/fixtures/wildcard-css/src/components/Button.css rename to packages/core/tests/deslop/fixtures/wildcard-css/src/components/Button.css diff --git a/packages/deslop-js/tests/fixtures/wildcard-css/src/components/Button.ts b/packages/core/tests/deslop/fixtures/wildcard-css/src/components/Button.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/wildcard-css/src/components/Button.ts rename to packages/core/tests/deslop/fixtures/wildcard-css/src/components/Button.ts diff --git a/packages/deslop-js/tests/fixtures/wildcard-css/src/index.ts b/packages/core/tests/deslop/fixtures/wildcard-css/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/wildcard-css/src/index.ts rename to packages/core/tests/deslop/fixtures/wildcard-css/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/wildcard-late-consume/package.json b/packages/core/tests/deslop/fixtures/wildcard-late-consume/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/wildcard-late-consume/package.json rename to packages/core/tests/deslop/fixtures/wildcard-late-consume/package.json diff --git a/packages/deslop-js/tests/fixtures/wildcard-late-consume/src/components/color-picker/color-picker.ts b/packages/core/tests/deslop/fixtures/wildcard-late-consume/src/components/color-picker/color-picker.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/wildcard-late-consume/src/components/color-picker/color-picker.ts rename to packages/core/tests/deslop/fixtures/wildcard-late-consume/src/components/color-picker/color-picker.ts diff --git a/packages/deslop-js/tests/fixtures/wildcard-late-consume/src/components/color-picker/index.ts b/packages/core/tests/deslop/fixtures/wildcard-late-consume/src/components/color-picker/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/wildcard-late-consume/src/components/color-picker/index.ts rename to packages/core/tests/deslop/fixtures/wildcard-late-consume/src/components/color-picker/index.ts diff --git a/packages/deslop-js/tests/fixtures/wildcard-late-consume/src/components/index.ts b/packages/core/tests/deslop/fixtures/wildcard-late-consume/src/components/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/wildcard-late-consume/src/components/index.ts rename to packages/core/tests/deslop/fixtures/wildcard-late-consume/src/components/index.ts diff --git a/packages/deslop-js/tests/fixtures/wildcard-late-consume/src/components/text-field.ts b/packages/core/tests/deslop/fixtures/wildcard-late-consume/src/components/text-field.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/wildcard-late-consume/src/components/text-field.ts rename to packages/core/tests/deslop/fixtures/wildcard-late-consume/src/components/text-field.ts diff --git a/packages/deslop-js/tests/fixtures/wildcard-late-consume/src/components/unused-widget.ts b/packages/core/tests/deslop/fixtures/wildcard-late-consume/src/components/unused-widget.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/wildcard-late-consume/src/components/unused-widget.ts rename to packages/core/tests/deslop/fixtures/wildcard-late-consume/src/components/unused-widget.ts diff --git a/packages/deslop-js/tests/fixtures/wildcard-late-consume/src/index.ts b/packages/core/tests/deslop/fixtures/wildcard-late-consume/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/wildcard-late-consume/src/index.ts rename to packages/core/tests/deslop/fixtures/wildcard-late-consume/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/wildcard-late-consume/src/plugins/color-plugin.ts b/packages/core/tests/deslop/fixtures/wildcard-late-consume/src/plugins/color-plugin.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/wildcard-late-consume/src/plugins/color-plugin.ts rename to packages/core/tests/deslop/fixtures/wildcard-late-consume/src/plugins/color-plugin.ts diff --git a/packages/deslop-js/tests/fixtures/wildcard-late-consume/src/plugins/index.ts b/packages/core/tests/deslop/fixtures/wildcard-late-consume/src/plugins/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/wildcard-late-consume/src/plugins/index.ts rename to packages/core/tests/deslop/fixtures/wildcard-late-consume/src/plugins/index.ts diff --git a/packages/deslop-js/tests/fixtures/wildcard-late-consume/src/plugins/text-plugin.ts b/packages/core/tests/deslop/fixtures/wildcard-late-consume/src/plugins/text-plugin.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/wildcard-late-consume/src/plugins/text-plugin.ts rename to packages/core/tests/deslop/fixtures/wildcard-late-consume/src/plugins/text-plugin.ts diff --git a/packages/deslop-js/tests/fixtures/wildcard-subpath/orphan.ts b/packages/core/tests/deslop/fixtures/wildcard-subpath/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/wildcard-subpath/orphan.ts rename to packages/core/tests/deslop/fixtures/wildcard-subpath/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/wildcard-subpath/package.json b/packages/core/tests/deslop/fixtures/wildcard-subpath/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/wildcard-subpath/package.json rename to packages/core/tests/deslop/fixtures/wildcard-subpath/package.json diff --git a/packages/deslop-js/tests/fixtures/wildcard-subpath/src/index.ts b/packages/core/tests/deslop/fixtures/wildcard-subpath/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/wildcard-subpath/src/index.ts rename to packages/core/tests/deslop/fixtures/wildcard-subpath/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/wildcard-subpath/src/templates/goodbye.tsx b/packages/core/tests/deslop/fixtures/wildcard-subpath/src/templates/goodbye.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/wildcard-subpath/src/templates/goodbye.tsx rename to packages/core/tests/deslop/fixtures/wildcard-subpath/src/templates/goodbye.tsx diff --git a/packages/deslop-js/tests/fixtures/wildcard-subpath/src/templates/welcome.tsx b/packages/core/tests/deslop/fixtures/wildcard-subpath/src/templates/welcome.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/wildcard-subpath/src/templates/welcome.tsx rename to packages/core/tests/deslop/fixtures/wildcard-subpath/src/templates/welcome.tsx diff --git a/packages/deslop-js/tests/fixtures/worker-new-url/package.json b/packages/core/tests/deslop/fixtures/worker-new-url/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/worker-new-url/package.json rename to packages/core/tests/deslop/fixtures/worker-new-url/package.json diff --git a/packages/deslop-js/tests/fixtures/worker-new-url/src/index.ts b/packages/core/tests/deslop/fixtures/worker-new-url/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/worker-new-url/src/index.ts rename to packages/core/tests/deslop/fixtures/worker-new-url/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/worker-new-url/src/orphan.ts b/packages/core/tests/deslop/fixtures/worker-new-url/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/worker-new-url/src/orphan.ts rename to packages/core/tests/deslop/fixtures/worker-new-url/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/worker-new-url/src/worker.js b/packages/core/tests/deslop/fixtures/worker-new-url/src/worker.js similarity index 100% rename from packages/deslop-js/tests/fixtures/worker-new-url/src/worker.js rename to packages/core/tests/deslop/fixtures/worker-new-url/src/worker.js diff --git a/packages/deslop-js/tests/fixtures/workspace-deep-imports/apps/web/package.json b/packages/core/tests/deslop/fixtures/workspace-deep-imports/apps/web/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-deep-imports/apps/web/package.json rename to packages/core/tests/deslop/fixtures/workspace-deep-imports/apps/web/package.json diff --git a/packages/deslop-js/tests/fixtures/workspace-deep-imports/apps/web/src/index.ts b/packages/core/tests/deslop/fixtures/workspace-deep-imports/apps/web/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-deep-imports/apps/web/src/index.ts rename to packages/core/tests/deslop/fixtures/workspace-deep-imports/apps/web/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/workspace-deep-imports/apps/web/tsconfig.json b/packages/core/tests/deslop/fixtures/workspace-deep-imports/apps/web/tsconfig.json similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-deep-imports/apps/web/tsconfig.json rename to packages/core/tests/deslop/fixtures/workspace-deep-imports/apps/web/tsconfig.json diff --git a/packages/deslop-js/tests/fixtures/workspace-deep-imports/package.json b/packages/core/tests/deslop/fixtures/workspace-deep-imports/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-deep-imports/package.json rename to packages/core/tests/deslop/fixtures/workspace-deep-imports/package.json diff --git a/packages/deslop-js/tests/fixtures/workspace-deep-imports/packages/shared/package.json b/packages/core/tests/deslop/fixtures/workspace-deep-imports/packages/shared/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-deep-imports/packages/shared/package.json rename to packages/core/tests/deslop/fixtures/workspace-deep-imports/packages/shared/package.json diff --git a/packages/deslop-js/tests/fixtures/workspace-deep-imports/packages/shared/src/components/button.ts b/packages/core/tests/deslop/fixtures/workspace-deep-imports/packages/shared/src/components/button.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-deep-imports/packages/shared/src/components/button.ts rename to packages/core/tests/deslop/fixtures/workspace-deep-imports/packages/shared/src/components/button.ts diff --git a/packages/deslop-js/tests/fixtures/workspace-deep-imports/packages/shared/src/components/orphan.ts b/packages/core/tests/deslop/fixtures/workspace-deep-imports/packages/shared/src/components/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-deep-imports/packages/shared/src/components/orphan.ts rename to packages/core/tests/deslop/fixtures/workspace-deep-imports/packages/shared/src/components/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/workspace-deep-imports/packages/shared/src/hooks/assets.ts b/packages/core/tests/deslop/fixtures/workspace-deep-imports/packages/shared/src/hooks/assets.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-deep-imports/packages/shared/src/hooks/assets.ts rename to packages/core/tests/deslop/fixtures/workspace-deep-imports/packages/shared/src/hooks/assets.ts diff --git a/packages/deslop-js/tests/fixtures/workspace-deep-imports/packages/shared/src/index.ts b/packages/core/tests/deslop/fixtures/workspace-deep-imports/packages/shared/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-deep-imports/packages/shared/src/index.ts rename to packages/core/tests/deslop/fixtures/workspace-deep-imports/packages/shared/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/workspace-deep-imports/packages/shared/tsconfig.json b/packages/core/tests/deslop/fixtures/workspace-deep-imports/packages/shared/tsconfig.json similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-deep-imports/packages/shared/tsconfig.json rename to packages/core/tests/deslop/fixtures/workspace-deep-imports/packages/shared/tsconfig.json diff --git a/packages/deslop-js/tests/fixtures/workspace-defaults/package.json b/packages/core/tests/deslop/fixtures/workspace-defaults/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-defaults/package.json rename to packages/core/tests/deslop/fixtures/workspace-defaults/package.json diff --git a/packages/deslop-js/tests/fixtures/workspace-defaults/packages/lib-a/package.json b/packages/core/tests/deslop/fixtures/workspace-defaults/packages/lib-a/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-defaults/packages/lib-a/package.json rename to packages/core/tests/deslop/fixtures/workspace-defaults/packages/lib-a/package.json diff --git a/packages/deslop-js/tests/fixtures/workspace-defaults/packages/lib-a/src/helper.ts b/packages/core/tests/deslop/fixtures/workspace-defaults/packages/lib-a/src/helper.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-defaults/packages/lib-a/src/helper.ts rename to packages/core/tests/deslop/fixtures/workspace-defaults/packages/lib-a/src/helper.ts diff --git a/packages/deslop-js/tests/fixtures/workspace-defaults/packages/lib-a/src/index.ts b/packages/core/tests/deslop/fixtures/workspace-defaults/packages/lib-a/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-defaults/packages/lib-a/src/index.ts rename to packages/core/tests/deslop/fixtures/workspace-defaults/packages/lib-a/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/workspace-defaults/packages/lib-a/src/orphan.ts b/packages/core/tests/deslop/fixtures/workspace-defaults/packages/lib-a/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-defaults/packages/lib-a/src/orphan.ts rename to packages/core/tests/deslop/fixtures/workspace-defaults/packages/lib-a/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/workspace-defaults/packages/lib-b/package.json b/packages/core/tests/deslop/fixtures/workspace-defaults/packages/lib-b/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-defaults/packages/lib-b/package.json rename to packages/core/tests/deslop/fixtures/workspace-defaults/packages/lib-b/package.json diff --git a/packages/deslop-js/tests/fixtures/workspace-defaults/packages/lib-b/src/index.ts b/packages/core/tests/deslop/fixtures/workspace-defaults/packages/lib-b/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-defaults/packages/lib-b/src/index.ts rename to packages/core/tests/deslop/fixtures/workspace-defaults/packages/lib-b/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/workspace-dist-resolve/package.json b/packages/core/tests/deslop/fixtures/workspace-dist-resolve/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-dist-resolve/package.json rename to packages/core/tests/deslop/fixtures/workspace-dist-resolve/package.json diff --git a/packages/deslop-js/tests/fixtures/workspace-dist-resolve/packages/app/package.json b/packages/core/tests/deslop/fixtures/workspace-dist-resolve/packages/app/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-dist-resolve/packages/app/package.json rename to packages/core/tests/deslop/fixtures/workspace-dist-resolve/packages/app/package.json diff --git a/packages/deslop-js/tests/fixtures/workspace-dist-resolve/packages/app/src/index.ts b/packages/core/tests/deslop/fixtures/workspace-dist-resolve/packages/app/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-dist-resolve/packages/app/src/index.ts rename to packages/core/tests/deslop/fixtures/workspace-dist-resolve/packages/app/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/workspace-dist-resolve/packages/utils/package.json b/packages/core/tests/deslop/fixtures/workspace-dist-resolve/packages/utils/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-dist-resolve/packages/utils/package.json rename to packages/core/tests/deslop/fixtures/workspace-dist-resolve/packages/utils/package.json diff --git a/packages/deslop-js/tests/fixtures/workspace-dist-resolve/packages/utils/src/index.ts b/packages/core/tests/deslop/fixtures/workspace-dist-resolve/packages/utils/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-dist-resolve/packages/utils/src/index.ts rename to packages/core/tests/deslop/fixtures/workspace-dist-resolve/packages/utils/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/workspace-dist-resolve/packages/utils/src/orphan.ts b/packages/core/tests/deslop/fixtures/workspace-dist-resolve/packages/utils/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-dist-resolve/packages/utils/src/orphan.ts rename to packages/core/tests/deslop/fixtures/workspace-dist-resolve/packages/utils/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/workspace-dist-src/package.json b/packages/core/tests/deslop/fixtures/workspace-dist-src/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-dist-src/package.json rename to packages/core/tests/deslop/fixtures/workspace-dist-src/package.json diff --git a/packages/deslop-js/tests/fixtures/workspace-dist-src/packages/app/package.json b/packages/core/tests/deslop/fixtures/workspace-dist-src/packages/app/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-dist-src/packages/app/package.json rename to packages/core/tests/deslop/fixtures/workspace-dist-src/packages/app/package.json diff --git a/packages/deslop-js/tests/fixtures/workspace-dist-src/packages/app/src/index.ts b/packages/core/tests/deslop/fixtures/workspace-dist-src/packages/app/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-dist-src/packages/app/src/index.ts rename to packages/core/tests/deslop/fixtures/workspace-dist-src/packages/app/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/workspace-dist-src/packages/core/package.json b/packages/core/tests/deslop/fixtures/workspace-dist-src/packages/core/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-dist-src/packages/core/package.json rename to packages/core/tests/deslop/fixtures/workspace-dist-src/packages/core/package.json diff --git a/packages/deslop-js/tests/fixtures/workspace-dist-src/packages/core/src/index.ts b/packages/core/tests/deslop/fixtures/workspace-dist-src/packages/core/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-dist-src/packages/core/src/index.ts rename to packages/core/tests/deslop/fixtures/workspace-dist-src/packages/core/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/workspace-dist-src/packages/core/src/orphan.ts b/packages/core/tests/deslop/fixtures/workspace-dist-src/packages/core/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-dist-src/packages/core/src/orphan.ts rename to packages/core/tests/deslop/fixtures/workspace-dist-src/packages/core/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/workspace-dist-src/packages/core/src/visualdebug.ts b/packages/core/tests/deslop/fixtures/workspace-dist-src/packages/core/src/visualdebug.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-dist-src/packages/core/src/visualdebug.ts rename to packages/core/tests/deslop/fixtures/workspace-dist-src/packages/core/src/visualdebug.ts diff --git a/packages/deslop-js/tests/fixtures/workspace-explicit/package.json b/packages/core/tests/deslop/fixtures/workspace-explicit/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-explicit/package.json rename to packages/core/tests/deslop/fixtures/workspace-explicit/package.json diff --git a/packages/deslop-js/tests/fixtures/workspace-explicit/packages/ui/package.json b/packages/core/tests/deslop/fixtures/workspace-explicit/packages/ui/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-explicit/packages/ui/package.json rename to packages/core/tests/deslop/fixtures/workspace-explicit/packages/ui/package.json diff --git a/packages/deslop-js/tests/fixtures/workspace-explicit/packages/ui/src/button.ts b/packages/core/tests/deslop/fixtures/workspace-explicit/packages/ui/src/button.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-explicit/packages/ui/src/button.ts rename to packages/core/tests/deslop/fixtures/workspace-explicit/packages/ui/src/button.ts diff --git a/packages/deslop-js/tests/fixtures/workspace-explicit/packages/ui/src/index.ts b/packages/core/tests/deslop/fixtures/workspace-explicit/packages/ui/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-explicit/packages/ui/src/index.ts rename to packages/core/tests/deslop/fixtures/workspace-explicit/packages/ui/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/workspace-explicit/packages/utils/package.json b/packages/core/tests/deslop/fixtures/workspace-explicit/packages/utils/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-explicit/packages/utils/package.json rename to packages/core/tests/deslop/fixtures/workspace-explicit/packages/utils/package.json diff --git a/packages/deslop-js/tests/fixtures/workspace-explicit/packages/utils/src/index.ts b/packages/core/tests/deslop/fixtures/workspace-explicit/packages/utils/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-explicit/packages/utils/src/index.ts rename to packages/core/tests/deslop/fixtures/workspace-explicit/packages/utils/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/workspace-explicit/packages/utils/src/orphan.ts b/packages/core/tests/deslop/fixtures/workspace-explicit/packages/utils/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-explicit/packages/utils/src/orphan.ts rename to packages/core/tests/deslop/fixtures/workspace-explicit/packages/utils/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/workspace-local-bin/.gitignore b/packages/core/tests/deslop/fixtures/workspace-local-bin/.gitignore similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-local-bin/.gitignore rename to packages/core/tests/deslop/fixtures/workspace-local-bin/.gitignore diff --git a/packages/deslop-js/tests/fixtures/workspace-local-bin/node_modules/react-email/package.json b/packages/core/tests/deslop/fixtures/workspace-local-bin/node_modules/react-email/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-local-bin/node_modules/react-email/package.json rename to packages/core/tests/deslop/fixtures/workspace-local-bin/node_modules/react-email/package.json diff --git a/packages/deslop-js/tests/fixtures/workspace-local-bin/package.json b/packages/core/tests/deslop/fixtures/workspace-local-bin/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-local-bin/package.json rename to packages/core/tests/deslop/fixtures/workspace-local-bin/package.json diff --git a/packages/deslop-js/tests/fixtures/workspace-local-bin/src/index.ts b/packages/core/tests/deslop/fixtures/workspace-local-bin/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-local-bin/src/index.ts rename to packages/core/tests/deslop/fixtures/workspace-local-bin/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/workspace-no-main/package.json b/packages/core/tests/deslop/fixtures/workspace-no-main/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-no-main/package.json rename to packages/core/tests/deslop/fixtures/workspace-no-main/package.json diff --git a/packages/deslop-js/tests/fixtures/workspace-no-main/packages/app/index.ts b/packages/core/tests/deslop/fixtures/workspace-no-main/packages/app/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-no-main/packages/app/index.ts rename to packages/core/tests/deslop/fixtures/workspace-no-main/packages/app/index.ts diff --git a/packages/deslop-js/tests/fixtures/workspace-no-main/packages/app/package.json b/packages/core/tests/deslop/fixtures/workspace-no-main/packages/app/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-no-main/packages/app/package.json rename to packages/core/tests/deslop/fixtures/workspace-no-main/packages/app/package.json diff --git a/packages/deslop-js/tests/fixtures/workspace-no-main/packages/lib-a/helper.js b/packages/core/tests/deslop/fixtures/workspace-no-main/packages/lib-a/helper.js similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-no-main/packages/lib-a/helper.js rename to packages/core/tests/deslop/fixtures/workspace-no-main/packages/lib-a/helper.js diff --git a/packages/deslop-js/tests/fixtures/workspace-no-main/packages/lib-a/index.js b/packages/core/tests/deslop/fixtures/workspace-no-main/packages/lib-a/index.js similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-no-main/packages/lib-a/index.js rename to packages/core/tests/deslop/fixtures/workspace-no-main/packages/lib-a/index.js diff --git a/packages/deslop-js/tests/fixtures/workspace-no-main/packages/lib-a/orphan.js b/packages/core/tests/deslop/fixtures/workspace-no-main/packages/lib-a/orphan.js similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-no-main/packages/lib-a/orphan.js rename to packages/core/tests/deslop/fixtures/workspace-no-main/packages/lib-a/orphan.js diff --git a/packages/deslop-js/tests/fixtures/workspace-no-main/packages/lib-a/package.json b/packages/core/tests/deslop/fixtures/workspace-no-main/packages/lib-a/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-no-main/packages/lib-a/package.json rename to packages/core/tests/deslop/fixtures/workspace-no-main/packages/lib-a/package.json diff --git a/packages/deslop-js/tests/fixtures/workspace-path-alias-no-tsconfig/apps/web/package.json b/packages/core/tests/deslop/fixtures/workspace-path-alias-no-tsconfig/apps/web/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-path-alias-no-tsconfig/apps/web/package.json rename to packages/core/tests/deslop/fixtures/workspace-path-alias-no-tsconfig/apps/web/package.json diff --git a/packages/deslop-js/tests/fixtures/workspace-path-alias-no-tsconfig/apps/web/src/index.ts b/packages/core/tests/deslop/fixtures/workspace-path-alias-no-tsconfig/apps/web/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-path-alias-no-tsconfig/apps/web/src/index.ts rename to packages/core/tests/deslop/fixtures/workspace-path-alias-no-tsconfig/apps/web/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/workspace-path-alias-no-tsconfig/package.json b/packages/core/tests/deslop/fixtures/workspace-path-alias-no-tsconfig/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-path-alias-no-tsconfig/package.json rename to packages/core/tests/deslop/fixtures/workspace-path-alias-no-tsconfig/package.json diff --git a/packages/deslop-js/tests/fixtures/workspace-path-alias-no-tsconfig/packages/core/orphan.ts b/packages/core/tests/deslop/fixtures/workspace-path-alias-no-tsconfig/packages/core/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-path-alias-no-tsconfig/packages/core/orphan.ts rename to packages/core/tests/deslop/fixtures/workspace-path-alias-no-tsconfig/packages/core/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/workspace-path-alias-no-tsconfig/packages/core/package.json b/packages/core/tests/deslop/fixtures/workspace-path-alias-no-tsconfig/packages/core/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-path-alias-no-tsconfig/packages/core/package.json rename to packages/core/tests/deslop/fixtures/workspace-path-alias-no-tsconfig/packages/core/package.json diff --git a/packages/deslop-js/tests/fixtures/workspace-path-alias-no-tsconfig/packages/core/utils.ts b/packages/core/tests/deslop/fixtures/workspace-path-alias-no-tsconfig/packages/core/utils.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-path-alias-no-tsconfig/packages/core/utils.ts rename to packages/core/tests/deslop/fixtures/workspace-path-alias-no-tsconfig/packages/core/utils.ts diff --git a/packages/deslop-js/tests/fixtures/workspace-path-alias/apps/web/package.json b/packages/core/tests/deslop/fixtures/workspace-path-alias/apps/web/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-path-alias/apps/web/package.json rename to packages/core/tests/deslop/fixtures/workspace-path-alias/apps/web/package.json diff --git a/packages/deslop-js/tests/fixtures/workspace-path-alias/apps/web/src/index.ts b/packages/core/tests/deslop/fixtures/workspace-path-alias/apps/web/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-path-alias/apps/web/src/index.ts rename to packages/core/tests/deslop/fixtures/workspace-path-alias/apps/web/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/workspace-path-alias/package.json b/packages/core/tests/deslop/fixtures/workspace-path-alias/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-path-alias/package.json rename to packages/core/tests/deslop/fixtures/workspace-path-alias/package.json diff --git a/packages/deslop-js/tests/fixtures/workspace-path-alias/packages/core/orphan.ts b/packages/core/tests/deslop/fixtures/workspace-path-alias/packages/core/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-path-alias/packages/core/orphan.ts rename to packages/core/tests/deslop/fixtures/workspace-path-alias/packages/core/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/workspace-path-alias/packages/core/package.json b/packages/core/tests/deslop/fixtures/workspace-path-alias/packages/core/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-path-alias/packages/core/package.json rename to packages/core/tests/deslop/fixtures/workspace-path-alias/packages/core/package.json diff --git a/packages/deslop-js/tests/fixtures/workspace-path-alias/packages/core/utils.ts b/packages/core/tests/deslop/fixtures/workspace-path-alias/packages/core/utils.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-path-alias/packages/core/utils.ts rename to packages/core/tests/deslop/fixtures/workspace-path-alias/packages/core/utils.ts diff --git a/packages/deslop-js/tests/fixtures/workspace-path-alias/tsconfig.json b/packages/core/tests/deslop/fixtures/workspace-path-alias/tsconfig.json similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-path-alias/tsconfig.json rename to packages/core/tests/deslop/fixtures/workspace-path-alias/tsconfig.json diff --git a/packages/deslop-js/tests/fixtures/workspace-structural-alias/apps/web/package.json b/packages/core/tests/deslop/fixtures/workspace-structural-alias/apps/web/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-structural-alias/apps/web/package.json rename to packages/core/tests/deslop/fixtures/workspace-structural-alias/apps/web/package.json diff --git a/packages/deslop-js/tests/fixtures/workspace-structural-alias/apps/web/src/index.ts b/packages/core/tests/deslop/fixtures/workspace-structural-alias/apps/web/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-structural-alias/apps/web/src/index.ts rename to packages/core/tests/deslop/fixtures/workspace-structural-alias/apps/web/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/workspace-structural-alias/package.json b/packages/core/tests/deslop/fixtures/workspace-structural-alias/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-structural-alias/package.json rename to packages/core/tests/deslop/fixtures/workspace-structural-alias/package.json diff --git a/packages/deslop-js/tests/fixtures/workspace-structural-alias/packages/core/orphan.ts b/packages/core/tests/deslop/fixtures/workspace-structural-alias/packages/core/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-structural-alias/packages/core/orphan.ts rename to packages/core/tests/deslop/fixtures/workspace-structural-alias/packages/core/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/workspace-structural-alias/packages/core/package.json b/packages/core/tests/deslop/fixtures/workspace-structural-alias/packages/core/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-structural-alias/packages/core/package.json rename to packages/core/tests/deslop/fixtures/workspace-structural-alias/packages/core/package.json diff --git a/packages/deslop-js/tests/fixtures/workspace-structural-alias/packages/core/utils.ts b/packages/core/tests/deslop/fixtures/workspace-structural-alias/packages/core/utils.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-structural-alias/packages/core/utils.ts rename to packages/core/tests/deslop/fixtures/workspace-structural-alias/packages/core/utils.ts diff --git a/packages/deslop-js/tests/fixtures/workspace-subpath-import-built/apps/web/package.json b/packages/core/tests/deslop/fixtures/workspace-subpath-import-built/apps/web/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-subpath-import-built/apps/web/package.json rename to packages/core/tests/deslop/fixtures/workspace-subpath-import-built/apps/web/package.json diff --git a/packages/deslop-js/tests/fixtures/workspace-subpath-import-built/apps/web/src/index.ts b/packages/core/tests/deslop/fixtures/workspace-subpath-import-built/apps/web/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-subpath-import-built/apps/web/src/index.ts rename to packages/core/tests/deslop/fixtures/workspace-subpath-import-built/apps/web/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/workspace-subpath-import-built/package.json b/packages/core/tests/deslop/fixtures/workspace-subpath-import-built/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-subpath-import-built/package.json rename to packages/core/tests/deslop/fixtures/workspace-subpath-import-built/package.json diff --git a/packages/deslop-js/tests/fixtures/workspace-subpath-import-built/packages/ui/dist/button.js b/packages/core/tests/deslop/fixtures/workspace-subpath-import-built/packages/ui/dist/button.js similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-subpath-import-built/packages/ui/dist/button.js rename to packages/core/tests/deslop/fixtures/workspace-subpath-import-built/packages/ui/dist/button.js diff --git a/packages/deslop-js/tests/fixtures/workspace-subpath-import-built/packages/ui/package.json b/packages/core/tests/deslop/fixtures/workspace-subpath-import-built/packages/ui/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-subpath-import-built/packages/ui/package.json rename to packages/core/tests/deslop/fixtures/workspace-subpath-import-built/packages/ui/package.json diff --git a/packages/deslop-js/tests/fixtures/workspace-subpath-import-built/packages/ui/src/button.ts b/packages/core/tests/deslop/fixtures/workspace-subpath-import-built/packages/ui/src/button.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-subpath-import-built/packages/ui/src/button.ts rename to packages/core/tests/deslop/fixtures/workspace-subpath-import-built/packages/ui/src/button.ts diff --git a/packages/deslop-js/tests/fixtures/workspace-subpath-import-built/packages/ui/src/orphan.ts b/packages/core/tests/deslop/fixtures/workspace-subpath-import-built/packages/ui/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-subpath-import-built/packages/ui/src/orphan.ts rename to packages/core/tests/deslop/fixtures/workspace-subpath-import-built/packages/ui/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/workspace-subpath-import/apps/web/package.json b/packages/core/tests/deslop/fixtures/workspace-subpath-import/apps/web/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-subpath-import/apps/web/package.json rename to packages/core/tests/deslop/fixtures/workspace-subpath-import/apps/web/package.json diff --git a/packages/deslop-js/tests/fixtures/workspace-subpath-import/apps/web/src/index.ts b/packages/core/tests/deslop/fixtures/workspace-subpath-import/apps/web/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-subpath-import/apps/web/src/index.ts rename to packages/core/tests/deslop/fixtures/workspace-subpath-import/apps/web/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/workspace-subpath-import/package.json b/packages/core/tests/deslop/fixtures/workspace-subpath-import/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-subpath-import/package.json rename to packages/core/tests/deslop/fixtures/workspace-subpath-import/package.json diff --git a/packages/deslop-js/tests/fixtures/workspace-subpath-import/packages/ui/button.tsx b/packages/core/tests/deslop/fixtures/workspace-subpath-import/packages/ui/button.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-subpath-import/packages/ui/button.tsx rename to packages/core/tests/deslop/fixtures/workspace-subpath-import/packages/ui/button.tsx diff --git a/packages/deslop-js/tests/fixtures/workspace-subpath-import/packages/ui/orphan.ts b/packages/core/tests/deslop/fixtures/workspace-subpath-import/packages/ui/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-subpath-import/packages/ui/orphan.ts rename to packages/core/tests/deslop/fixtures/workspace-subpath-import/packages/ui/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/workspace-subpath-import/packages/ui/package.json b/packages/core/tests/deslop/fixtures/workspace-subpath-import/packages/ui/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-subpath-import/packages/ui/package.json rename to packages/core/tests/deslop/fixtures/workspace-subpath-import/packages/ui/package.json diff --git a/packages/deslop-js/tests/fixtures/workspace-subpath-import/packages/ui/utils.ts b/packages/core/tests/deslop/fixtures/workspace-subpath-import/packages/ui/utils.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-subpath-import/packages/ui/utils.ts rename to packages/core/tests/deslop/fixtures/workspace-subpath-import/packages/ui/utils.ts diff --git a/packages/deslop-js/tests/fixtures/workspace-subpath-wildcard-export/apps/web/package.json b/packages/core/tests/deslop/fixtures/workspace-subpath-wildcard-export/apps/web/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-subpath-wildcard-export/apps/web/package.json rename to packages/core/tests/deslop/fixtures/workspace-subpath-wildcard-export/apps/web/package.json diff --git a/packages/deslop-js/tests/fixtures/workspace-subpath-wildcard-export/apps/web/src/index.ts b/packages/core/tests/deslop/fixtures/workspace-subpath-wildcard-export/apps/web/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-subpath-wildcard-export/apps/web/src/index.ts rename to packages/core/tests/deslop/fixtures/workspace-subpath-wildcard-export/apps/web/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/workspace-subpath-wildcard-export/package.json b/packages/core/tests/deslop/fixtures/workspace-subpath-wildcard-export/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-subpath-wildcard-export/package.json rename to packages/core/tests/deslop/fixtures/workspace-subpath-wildcard-export/package.json diff --git a/packages/deslop-js/tests/fixtures/workspace-subpath-wildcard-export/packages/ui/package.json b/packages/core/tests/deslop/fixtures/workspace-subpath-wildcard-export/packages/ui/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-subpath-wildcard-export/packages/ui/package.json rename to packages/core/tests/deslop/fixtures/workspace-subpath-wildcard-export/packages/ui/package.json diff --git a/packages/deslop-js/tests/fixtures/workspace-subpath-wildcard-export/packages/ui/src/components/button.tsx b/packages/core/tests/deslop/fixtures/workspace-subpath-wildcard-export/packages/ui/src/components/button.tsx similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-subpath-wildcard-export/packages/ui/src/components/button.tsx rename to packages/core/tests/deslop/fixtures/workspace-subpath-wildcard-export/packages/ui/src/components/button.tsx diff --git a/packages/deslop-js/tests/fixtures/workspace-subpath-wildcard-export/packages/ui/src/components/helpers.ts b/packages/core/tests/deslop/fixtures/workspace-subpath-wildcard-export/packages/ui/src/components/helpers.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-subpath-wildcard-export/packages/ui/src/components/helpers.ts rename to packages/core/tests/deslop/fixtures/workspace-subpath-wildcard-export/packages/ui/src/components/helpers.ts diff --git a/packages/deslop-js/tests/fixtures/workspace-subpath-wildcard-export/packages/ui/src/components/orphan.ts b/packages/core/tests/deslop/fixtures/workspace-subpath-wildcard-export/packages/ui/src/components/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-subpath-wildcard-export/packages/ui/src/components/orphan.ts rename to packages/core/tests/deslop/fixtures/workspace-subpath-wildcard-export/packages/ui/src/components/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/workspace-wildcards/package.json b/packages/core/tests/deslop/fixtures/workspace-wildcards/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-wildcards/package.json rename to packages/core/tests/deslop/fixtures/workspace-wildcards/package.json diff --git a/packages/deslop-js/tests/fixtures/workspace-wildcards/packages/app/package.json b/packages/core/tests/deslop/fixtures/workspace-wildcards/packages/app/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-wildcards/packages/app/package.json rename to packages/core/tests/deslop/fixtures/workspace-wildcards/packages/app/package.json diff --git a/packages/deslop-js/tests/fixtures/workspace-wildcards/packages/app/src/index.ts b/packages/core/tests/deslop/fixtures/workspace-wildcards/packages/app/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-wildcards/packages/app/src/index.ts rename to packages/core/tests/deslop/fixtures/workspace-wildcards/packages/app/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/workspace-wildcards/packages/ui/internal/hidden.ts b/packages/core/tests/deslop/fixtures/workspace-wildcards/packages/ui/internal/hidden.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-wildcards/packages/ui/internal/hidden.ts rename to packages/core/tests/deslop/fixtures/workspace-wildcards/packages/ui/internal/hidden.ts diff --git a/packages/deslop-js/tests/fixtures/workspace-wildcards/packages/ui/package.json b/packages/core/tests/deslop/fixtures/workspace-wildcards/packages/ui/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-wildcards/packages/ui/package.json rename to packages/core/tests/deslop/fixtures/workspace-wildcards/packages/ui/package.json diff --git a/packages/deslop-js/tests/fixtures/workspace-wildcards/packages/ui/src/components/button.ts b/packages/core/tests/deslop/fixtures/workspace-wildcards/packages/ui/src/components/button.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-wildcards/packages/ui/src/components/button.ts rename to packages/core/tests/deslop/fixtures/workspace-wildcards/packages/ui/src/components/button.ts diff --git a/packages/deslop-js/tests/fixtures/workspace-wildcards/packages/ui/src/components/index.ts b/packages/core/tests/deslop/fixtures/workspace-wildcards/packages/ui/src/components/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-wildcards/packages/ui/src/components/index.ts rename to packages/core/tests/deslop/fixtures/workspace-wildcards/packages/ui/src/components/index.ts diff --git a/packages/deslop-js/tests/fixtures/workspace-wildcards/packages/ui/src/orphan.ts b/packages/core/tests/deslop/fixtures/workspace-wildcards/packages/ui/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/workspace-wildcards/packages/ui/src/orphan.ts rename to packages/core/tests/deslop/fixtures/workspace-wildcards/packages/ui/src/orphan.ts diff --git a/packages/deslop-js/tests/fixtures/zx-scripts/package.json b/packages/core/tests/deslop/fixtures/zx-scripts/package.json similarity index 100% rename from packages/deslop-js/tests/fixtures/zx-scripts/package.json rename to packages/core/tests/deslop/fixtures/zx-scripts/package.json diff --git a/packages/deslop-js/tests/fixtures/zx-scripts/scripts/build-image.mjs b/packages/core/tests/deslop/fixtures/zx-scripts/scripts/build-image.mjs similarity index 100% rename from packages/deslop-js/tests/fixtures/zx-scripts/scripts/build-image.mjs rename to packages/core/tests/deslop/fixtures/zx-scripts/scripts/build-image.mjs diff --git a/packages/deslop-js/tests/fixtures/zx-scripts/src/index.ts b/packages/core/tests/deslop/fixtures/zx-scripts/src/index.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/zx-scripts/src/index.ts rename to packages/core/tests/deslop/fixtures/zx-scripts/src/index.ts diff --git a/packages/deslop-js/tests/fixtures/zx-scripts/src/orphan.ts b/packages/core/tests/deslop/fixtures/zx-scripts/src/orphan.ts similarity index 100% rename from packages/deslop-js/tests/fixtures/zx-scripts/src/orphan.ts rename to packages/core/tests/deslop/fixtures/zx-scripts/src/orphan.ts diff --git a/packages/deslop-js/tests/helpers/fixtures-dir.ts b/packages/core/tests/deslop/helpers/fixtures-dir.ts similarity index 100% rename from packages/deslop-js/tests/helpers/fixtures-dir.ts rename to packages/core/tests/deslop/helpers/fixtures-dir.ts diff --git a/packages/deslop-js/tests/path-normalization.test.ts b/packages/core/tests/deslop/path-normalization.test.ts similarity index 91% rename from packages/deslop-js/tests/path-normalization.test.ts rename to packages/core/tests/deslop/path-normalization.test.ts index c49f4a490..b7d7a55dc 100644 --- a/packages/deslop-js/tests/path-normalization.test.ts +++ b/packages/core/tests/deslop/path-normalization.test.ts @@ -1,12 +1,12 @@ -import { describe, it } from "node:test"; +import { describe, it } from "vite-plus/test"; import assert from "node:assert/strict"; -import { toPosixPath } from "../src/utils/to-posix-path.js"; -import { buildDependencyGraph, type ModuleLinkInput } from "../src/linker/build.js"; -import { traceReachability } from "../src/linker/reachability.js"; -import { detectDeadExports } from "../src/report/exports.js"; -import type { ParsedSource } from "../src/collect/parse.js"; -import type { ResolvedImport } from "../src/resolver/resolve.js"; -import type { DeslopConfig, ExportReference, ImportReference } from "../src/types.js"; +import { toPosixPath } from "../../src/deslop/utils/to-posix-path.js"; +import { buildDependencyGraph, type ModuleLinkInput } from "../../src/deslop/linker/build.js"; +import { traceReachability } from "../../src/deslop/linker/reachability.js"; +import { detectDeadExports } from "../../src/deslop/report/exports.js"; +import type { ParsedSource } from "../../src/deslop/collect/parse.js"; +import type { ResolvedImport } from "../../src/deslop/resolver/resolve.js"; +import type { DeslopConfig, ExportReference, ImportReference } from "../../src/deslop/types.js"; const emptyParsed = (overrides: Partial = {}): ParsedSource => ({ imports: [], diff --git a/packages/deslop-js/tests/semantic.test.ts b/packages/core/tests/deslop/semantic.test.ts similarity index 99% rename from packages/deslop-js/tests/semantic.test.ts rename to packages/core/tests/deslop/semantic.test.ts index 6557d22c8..d7283d058 100644 --- a/packages/deslop-js/tests/semantic.test.ts +++ b/packages/core/tests/deslop/semantic.test.ts @@ -1,8 +1,8 @@ -import { describe, it } from "node:test"; +import { describe, it } from "vite-plus/test"; import assert from "node:assert/strict"; import { resolve } from "node:path"; -import { analyze, defineConfig } from "../src/index.js"; -import type { ScanResult, SemanticConfig } from "../src/types.js"; +import { analyze, defineConfig } from "../../src/deslop/index.js"; +import type { ScanResult, SemanticConfig } from "../../src/deslop/types.js"; import { FIXTURES_DIR } from "./helpers/fixtures-dir.js"; const scanFixtureWithSemantic = async ( diff --git a/packages/deslop-js/tests/type-analysis.test.ts b/packages/core/tests/deslop/type-analysis.test.ts similarity index 98% rename from packages/deslop-js/tests/type-analysis.test.ts rename to packages/core/tests/deslop/type-analysis.test.ts index 54e55b9fc..4afed7fba 100644 --- a/packages/deslop-js/tests/type-analysis.test.ts +++ b/packages/core/tests/deslop/type-analysis.test.ts @@ -1,8 +1,8 @@ -import { describe, it } from "node:test"; +import { describe, it } from "vite-plus/test"; import assert from "node:assert/strict"; import { resolve, dirname } from "node:path"; import ts from "typescript"; -import { analyze, defineConfig } from "../src/index.js"; +import { analyze, defineConfig } from "../../src/deslop/index.js"; import { FIXTURES_DIR } from "./helpers/fixtures-dir.js"; interface DifferentialOutcome { diff --git a/packages/core/tests/helpers/in-process-dead-code-worker.ts b/packages/core/tests/helpers/in-process-dead-code-worker.ts new file mode 100644 index 000000000..433c7f197 --- /dev/null +++ b/packages/core/tests/helpers/in-process-dead-code-worker.ts @@ -0,0 +1,46 @@ +import { analyze, defineConfig } from "../../src/deslop/index.js"; + +interface DeadCodeWorkerInput { + readonly rootDirectory: string; + readonly entryPatterns: ReadonlyArray; + readonly tsConfigPath?: string; + readonly ignorePatterns: ReadonlyArray; +} + +/** + * Runs the deslop engine in-process for core's dead-code integration tests, + * mirroring the normalization the production child-process worker does in + * `check-dead-code.ts`. The production path spawns a child process that + * `import("deslop-js")`s the published facade; since `deslop-js` now builds + * after `core` (it bundles core), tests can't rely on that artifact existing, + * and the subprocess isolation is a production concern, not engine behavior. + * This exercises the same `analyze`/`defineConfig` logic the facade re-exports. + */ +export const inProcessDeadCodeWorker = ( + input: DeadCodeWorkerInput, +): { result: Promise } => ({ + result: (async () => { + const config = defineConfig({ + rootDir: input.rootDirectory, + ...(input.entryPatterns.length > 0 ? { entryPatterns: input.entryPatterns } : {}), + ...(input.tsConfigPath ? { tsConfigPath: input.tsConfigPath } : {}), + ...(input.ignorePatterns.length > 0 ? { ignorePatterns: input.ignorePatterns } : {}), + }); + const result = await analyze(config); + return { + unusedFiles: result.unusedFiles.map((unusedFile) => ({ path: unusedFile.path })), + unusedExports: result.unusedExports.map((unusedExport) => ({ + path: unusedExport.path, + name: unusedExport.name, + line: unusedExport.line, + column: unusedExport.column, + isTypeOnly: unusedExport.isTypeOnly, + })), + unusedDependencies: result.unusedDependencies.map((unusedDependency) => ({ + name: unusedDependency.name, + isDevDependency: unusedDependency.isDevDependency, + })), + circularDependencies: result.circularDependencies.map((cycle) => ({ files: cycle.files })), + }; + })(), +}); diff --git a/packages/core/vite.config.ts b/packages/core/vite.config.ts index fcbee2ca9..1fd01c0f4 100644 --- a/packages/core/vite.config.ts +++ b/packages/core/vite.config.ts @@ -3,12 +3,18 @@ import { defineConfig } from "vite-plus"; export default defineConfig({ pack: [ { - entry: { index: "./src/index.ts", schemas: "./src/schemas.ts" }, + entry: { + index: "./src/index.ts", + schemas: "./src/schemas.ts", + deslop: "./src/deslop/index.ts", + }, deps: { neverBundle: [ "@effect/platform-node-shared", - "deslop-js", + "@oxc-project/types", "effect", + "fast-glob", + "minimatch", "oxc-parser", "oxc-resolver", "oxlint", @@ -21,8 +27,27 @@ export default defineConfig({ platform: "node", fixedExtension: false, }, + { + // Emitted as a standalone `dist/parse-worker.mjs` so the deslop parallel + // parser (bundled into `dist/deslop.js`) can spawn it via + // `new URL("./parse-worker.mjs", import.meta.url)`. + entry: ["./src/deslop/collect/parse-worker.ts"], + format: ["esm"], + deps: { + neverBundle: ["@oxc-project/types", "fast-glob", "minimatch", "oxc-parser", "oxc-resolver"], + }, + dts: false, + clean: false, + target: "node20", + platform: "node", + }, ], test: { testTimeout: 30_000, + include: ["tests/**/*.test.ts"], + // The deslop engine's tests scan fixture projects that deliberately + // contain their own `*.test.ts` / `*.spec.ts` files (test data for the + // dead-code analyzer); never collect those as real tests. + exclude: ["**/node_modules/**", "**/dist/**", "**/fixtures/**"], }, }); diff --git a/packages/deslop-cli/tests/helpers/fixtures-dir.ts b/packages/deslop-cli/tests/helpers/fixtures-dir.ts index 0c85990dd..27a782493 100644 --- a/packages/deslop-cli/tests/helpers/fixtures-dir.ts +++ b/packages/deslop-cli/tests/helpers/fixtures-dir.ts @@ -7,9 +7,10 @@ import { join, resolve } from "node:path"; // them OUTSIDE the repository and `git init` the copy so the CLI's // findMonorepoRoot walk stops at the temp boundary instead of escaping into the // enclosing react-doctor workspace and folding its packages into the scan. -// Mirrors packages/deslop-js/tests/helpers/fixtures-dir.ts (kept local rather -// than shared because the two packages publish independently). -const sourceFixturesDirectory = resolve(import.meta.dirname, "../../../deslop-js/tests/fixtures"); +// Mirrors packages/core/tests/deslop/helpers/fixtures-dir.ts (kept local rather +// than shared because the two packages publish independently). The deslop +// engine — and its fixtures — now live in @react-doctor/core. +const sourceFixturesDirectory = resolve(import.meta.dirname, "../../../core/tests/deslop/fixtures"); const temporaryFixturesRoot = mkdtempSync(join(tmpdir(), "deslop-cli-fixtures-")); cpSync(sourceFixturesDirectory, temporaryFixturesRoot, { recursive: true }); diff --git a/packages/deslop-js/package.json b/packages/deslop-js/package.json index d670b7397..fe2ef9ff7 100644 --- a/packages/deslop-js/package.json +++ b/packages/deslop-js/package.json @@ -55,7 +55,6 @@ "scripts": { "build": "vp pack", "dev": "vp pack --watch", - "test": "node --import tsx --test tests/*.test.ts", "typecheck": "tsc --noEmit" }, "dependencies": { @@ -67,8 +66,7 @@ "typescript": "^6.0.3" }, "devDependencies": { - "@types/minimatch": "^5.1.2", - "@types/node": "^25.6.0", - "tsx": "^4.21.0" + "@react-doctor/core": "workspace:*", + "@types/node": "^25.6.0" } } diff --git a/packages/deslop-js/src/index.ts b/packages/deslop-js/src/index.ts index c2baa15a3..c60eb3c05 100644 --- a/packages/deslop-js/src/index.ts +++ b/packages/deslop-js/src/index.ts @@ -1,729 +1,6 @@ -import { resolve, dirname } from "node:path"; -import { existsSync, readFileSync } from "node:fs"; -import fg from "fast-glob"; -import type { DeslopConfig, DeslopError, ScanResult } from "./types.js"; -import { - ConfigError, - DetectorError, - ResolverError, - WorkspaceError, - describeUnknownError, -} from "./errors.js"; -import { - DEFAULT_DUPLICATE_BLOCK_MIN_LINES, - DEFAULT_DUPLICATE_BLOCK_MIN_OCCURRENCES, - DEFAULT_DUPLICATE_BLOCK_MIN_TOKENS, - DEFAULT_COGNITIVE_THRESHOLD, - DEFAULT_CYCLOMATIC_THRESHOLD, - DEFAULT_FUNCTION_LINE_THRESHOLD, - DEFAULT_PARAM_COUNT_THRESHOLD, - DEFAULT_ENTRY_GLOBS, - DEFAULT_EXTENSIONS, - DEFAULT_SEMANTIC_DECORATOR_ALLOWLIST, - OUTPUT_DIRECTORIES, -} from "./constants.js"; -import { collectSourceFiles, resolveEntries, getFrameworkExclusions } from "./collect/entries.js"; -import { resolveWorkspaces } from "./collect/workspaces.js"; -import { parseSourceFile } from "./collect/parse.js"; -import { parseFilesInParallel } from "./collect/parallel-parse.js"; -import { createResolver } from "./resolver/resolve.js"; -import { buildDependencyGraph, type ModuleLinkInput } from "./linker/build.js"; -import { traceReachability } from "./linker/reachability.js"; -import { resolveReExportChains } from "./linker/re-exports.js"; -import { generateReport } from "./report/generate.js"; -import { findMonorepoRoot } from "./utils/find-monorepo-root.js"; -import { collectGitIgnoredPaths } from "./utils/collect-git-ignored-paths.js"; - -const STYLE_EXTENSIONS = [".css", ".scss"]; - -const REACT_NATIVE_ENABLERS = ["react-native", "expo"]; - -const basenameFromPath = (filePath: string): string => { - const lastSlashIndex = filePath.lastIndexOf("/"); - return lastSlashIndex === -1 ? filePath : filePath.slice(lastSlashIndex + 1); -}; - -/** - * Dynamic registry pattern: many codebases use a central "schema/registry" - * module that lists tool/command/page filenames as string literals, then a - * runner spawns them via `path.resolve(dir, file)` or `import()`. Static - * analysis can't follow the indirection, so those targets get falsely - * flagged as unused. - * - * Heuristic: if a parsed string literal exactly matches the basename of - * exactly one file in the project, treat that file as an entry point. - * Uniqueness guards against false-positives from common names like - * `index.ts` matching dozens of unrelated files. - */ -const markFilenameRegistryEntries = ( - moduleGraph: ReturnType, -): void => { - const basenameToModuleIndex = new Map(); - for (const module of moduleGraph.modules) { - const basename = basenameFromPath(module.fileId.path); - const existing = basenameToModuleIndex.get(basename); - if (existing === undefined) { - basenameToModuleIndex.set(basename, module.fileId.index); - } else if (existing !== "ambiguous") { - basenameToModuleIndex.set(basename, "ambiguous"); - } - } - - for (const module of moduleGraph.modules) { - for (const referencedFilename of module.referencedFilenames) { - const targetIndex = basenameToModuleIndex.get(referencedFilename); - if (typeof targetIndex !== "number") continue; - const targetModule = moduleGraph.modules[targetIndex]; - if (!targetModule || targetModule.isEntryPoint) continue; - if (targetModule.fileId.index === module.fileId.index) continue; - targetModule.isEntryPoint = true; - } - } -}; - -const detectReactNative = ( - rootDir: string, - workspacePackages: Array<{ directory: string }>, -): boolean => { - const directoriesToCheck = [ - rootDir, - ...workspacePackages.map((workspacePackage) => workspacePackage.directory), - ]; - for (const directory of directoriesToCheck) { - const packageJsonPath = resolve(directory, "package.json"); - if (!existsSync(packageJsonPath)) continue; - try { - const content = readFileSync(packageJsonPath, "utf-8"); - const packageJson = JSON.parse(content); - const allDependencies = { - ...packageJson.dependencies, - ...packageJson.devDependencies, - ...packageJson.optionalDependencies, - }; - if (REACT_NATIVE_ENABLERS.some((enabler) => enabler in allDependencies)) return true; - } catch { - continue; - } - } - return false; -}; - -export type { - ScanResult, - DeslopConfig, - UnusedFile, - UnusedExport, - UnusedDependency, - CircularDependency, - UnusedType, - UnusedTypeKind, - SemanticConfig, - SemanticConfidence, - MisclassifiedDependency, - DependencyDeclaredAs, - UnusedEnumMember, - UnusedClassMember, - ClassMemberKind, - RedundantAlias, - RedundantAliasKind, - DuplicateExport, - DuplicateExportOccurrence, - DuplicateImport, - DuplicateImportOccurrence, - RedundantTypePattern, - RedundantTypePatternKind, - IdentityWrapper, - DuplicateTypeDefinition, - DuplicateTypeDefinitionInstance, - DuplicateInlineType, - InlineTypeOccurrence, - InlineTypeContext, - SimplifiableFunction, - SimplifiableFunctionKind, - SimplifiableExpression, - SimplifiableExpressionKind, - DuplicateConstant, - DuplicateConstantOccurrence, - CrossFileDuplicateExport, - CrossFileDuplicateExportLocation, - DuplicateBlock, - DuplicateBlockOccurrence, - DuplicateBlockCluster, - DuplicateBlockRefactoringKind, - DuplicateBlockRefactoringHint, - DuplicateBlockDetectionMode, - DuplicateBlocksConfig, - ShadowedDirectoryPair, - ReExportCycle, - ReExportCycleKind, - FeatureFlag, - FeatureFlagKind, - FeatureFlagsConfig, - FunctionComplexity, - ComplexityConfig, - PrivateTypeLeak, - UnnecessaryAssertion, - UnnecessaryAssertionKind, - LazyImportAtTopLevel, - LazyImportKind, - CommonjsInEsm, - CommonjsInEsmKind, - TypeScriptEscapeHatch, - TypeScriptEscapeHatchKind, - DeslopError, - DeslopErrorCode, - DeslopErrorModule, - DeslopErrorSeverity, -} from "./types.js"; - -export { isOxcAstNode } from "./utils/oxc-ast-node.js"; -export type { OxcAstNode } from "./utils/oxc-ast-node.js"; - -/** - * Default flags below mark rules off-by-default. Rationale for each: - * - * - `reportUnusedClassMembers: false` — class-member dead-code detection - * requires whole-program semantic analysis to be sound (subclass overrides, - * structural typing, framework method-by-name invocation like `@HttpGet`). - * When enabled on real React/Effect/NestJS codebases it produces a high - * rate of stylistic-FP findings (lifecycle methods, framework hooks). Off - * by default until the heuristics are tightened. Opt in via - * `semantic.reportUnusedClassMembers = true` when you accept the noise. - * - * - `reportTypes: false` — type-only exports are over-represented in - * barrel re-exports (the canonical `export type * from "./types"` pattern) - * and are rarely actionable signal. Off by default; opt in when auditing - * a type-heavy package. - * - * - `includeEntryExports: false` — exports from entry-point files are - * "API surface" and intentionally exported for external consumers; flagging - * them as "unused" is noise within a single repo scan. Opt in when auditing - * a package boundary (e.g. before deleting public APIs). - * - * - `reportRedundancy: true` — on because redundancy findings are mostly - * high-signal and the detectors carry their own confidence tiers. - * - * - `duplicateBlocks: undefined` — token-based copy-paste detection (suffix - * array + LCP) is opt-in. It re-parses every source - * file to emit a token stream and adds significant runtime to the scan. - * Pass `duplicateBlocks: { enabled: true }` to turn it on. - */ -const fillSemanticConfig = ( - semanticOverrides: Partial | undefined, -): DeslopConfig["semantic"] => { - const overrides = semanticOverrides ?? {}; - return { - enabled: overrides.enabled ?? true, - reportUnusedTypes: overrides.reportUnusedTypes ?? true, - reportUnusedEnumMembers: overrides.reportUnusedEnumMembers ?? true, - reportUnusedClassMembers: overrides.reportUnusedClassMembers ?? false, - reportRedundantVariableAliases: overrides.reportRedundantVariableAliases ?? true, - reportMisclassifiedDependencies: overrides.reportMisclassifiedDependencies ?? true, - reportRoundTripAliases: overrides.reportRoundTripAliases ?? true, - decoratorAllowlist: overrides.decoratorAllowlist ?? DEFAULT_SEMANTIC_DECORATOR_ALLOWLIST, - }; -}; - -const fillDuplicateBlocksConfig = ( - duplicateBlocksOverrides: Partial | undefined, -): DeslopConfig["duplicateBlocks"] => { - const overrides = duplicateBlocksOverrides ?? {}; - return { - enabled: overrides.enabled ?? true, - mode: overrides.mode ?? "semantic", - minTokens: overrides.minTokens ?? DEFAULT_DUPLICATE_BLOCK_MIN_TOKENS, - minLines: overrides.minLines ?? DEFAULT_DUPLICATE_BLOCK_MIN_LINES, - minOccurrences: overrides.minOccurrences ?? DEFAULT_DUPLICATE_BLOCK_MIN_OCCURRENCES, - skipLocal: overrides.skipLocal ?? false, - }; -}; - -const fillFeatureFlagsConfig = ( - flagsOverrides: Partial | undefined, -): DeslopConfig["featureFlags"] => { - const overrides = flagsOverrides ?? {}; - return { - enabled: overrides.enabled ?? true, - extraEnvPrefixes: overrides.extraEnvPrefixes ?? [], - extraSdkFunctionNames: overrides.extraSdkFunctionNames ?? [], - detectConfigObjects: overrides.detectConfigObjects ?? false, - }; -}; - -const fillComplexityConfig = ( - complexityOverrides: Partial | undefined, -): DeslopConfig["complexity"] => { - const overrides = complexityOverrides ?? {}; - return { - enabled: overrides.enabled ?? true, - cyclomaticThreshold: overrides.cyclomaticThreshold ?? DEFAULT_CYCLOMATIC_THRESHOLD, - cognitiveThreshold: overrides.cognitiveThreshold ?? DEFAULT_COGNITIVE_THRESHOLD, - paramCountThreshold: overrides.paramCountThreshold ?? DEFAULT_PARAM_COUNT_THRESHOLD, - functionLineThreshold: overrides.functionLineThreshold ?? DEFAULT_FUNCTION_LINE_THRESHOLD, - }; -}; -export const defineConfig = ( - options: Partial & { rootDir: string }, -): DeslopConfig => ({ - rootDir: resolve(options.rootDir), - entryPatterns: options.entryPatterns ?? DEFAULT_ENTRY_GLOBS, - ignorePatterns: options.ignorePatterns ?? [], - includeExtensions: options.includeExtensions ?? DEFAULT_EXTENSIONS, - tsConfigPath: options.tsConfigPath, - paths: options.paths, - reportTypes: options.reportTypes ?? false, - includeEntryExports: options.includeEntryExports ?? false, - reportRedundancy: options.reportRedundancy ?? true, - semantic: fillSemanticConfig(options.semantic), - duplicateBlocks: fillDuplicateBlocksConfig(options.duplicateBlocks), - featureFlags: fillFeatureFlagsConfig(options.featureFlags), - complexity: fillComplexityConfig(options.complexity), -}); - -const buildEmptyScanResult = (errors: DeslopError[], elapsedMs: number): ScanResult => ({ - unusedFiles: [], - unusedExports: [], - unusedDependencies: [], - circularDependencies: [], - unusedTypes: [], - misclassifiedDependencies: [], - unusedEnumMembers: [], - unusedClassMembers: [], - redundantAliases: [], - duplicateExports: [], - duplicateImports: [], - redundantTypePatterns: [], - identityWrappers: [], - duplicateTypeDefinitions: [], - duplicateInlineTypes: [], - simplifiableFunctions: [], - simplifiableExpressions: [], - duplicateConstants: [], - crossFileDuplicateExports: [], - duplicateBlocks: [], - duplicateBlockClusters: [], - shadowedDirectoryPairs: [], - reExportCycles: [], - featureFlags: [], - complexFunctions: [], - privateTypeLeaks: [], - unnecessaryAssertions: [], - lazyImportsAtTopLevel: [], - commonjsInEsm: [], - typeScriptEscapeHatches: [], - analysisErrors: errors, - totalFiles: 0, - totalExports: 0, - analysisTimeMs: elapsedMs, -}); - -const validateConfig = (config: DeslopConfig): DeslopError | undefined => { - if (!config.rootDir || typeof config.rootDir !== "string") { - return new ConfigError({ message: "config.rootDir must be a non-empty string" }); - } - if (!existsSync(config.rootDir)) { - return new ConfigError({ - message: `config.rootDir does not exist: ${config.rootDir}`, - path: config.rootDir, - }); - } - return undefined; -}; - -export const analyze = async (config: DeslopConfig): Promise => { - const pipelineStartTime = performance.now(); - const setupErrors: DeslopError[] = []; - - const configValidationError = validateConfig(config); - if (configValidationError) { - return buildEmptyScanResult([configValidationError], performance.now() - pipelineStartTime); - } - - let workspaceDiscovery: ReturnType; - try { - workspaceDiscovery = resolveWorkspaces(resolve(config.rootDir)); - } catch (workspaceError) { - setupErrors.push( - new WorkspaceError({ - code: "workspace-discovery-failed", - message: "resolveWorkspaces threw — falling back to single-package mode", - path: config.rootDir, - detail: describeUnknownError(workspaceError), - }), - ); - workspaceDiscovery = { - packages: [], - excludedDirectories: [], - hasRootLevelWorkspacePatterns: false, - }; - } - const workspacePackages = [...workspaceDiscovery.packages]; - - let monorepoRoot: string | undefined; - try { - monorepoRoot = findMonorepoRoot(config.rootDir); - } catch (monorepoError) { - setupErrors.push( - new WorkspaceError({ - code: "monorepo-discovery-failed", - message: "findMonorepoRoot threw", - path: config.rootDir, - detail: describeUnknownError(monorepoError), - }), - ); - monorepoRoot = undefined; - } - if (monorepoRoot) { - try { - const monorepoWorkspaces = resolveWorkspaces(monorepoRoot); - const existingDirectories = new Set( - workspacePackages.map((workspacePackage) => workspacePackage.directory), - ); - for (const monorepoPackage of monorepoWorkspaces.packages) { - if (!existingDirectories.has(monorepoPackage.directory)) { - workspacePackages.push(monorepoPackage); - } - } - } catch (monorepoWorkspaceError) { - setupErrors.push( - new WorkspaceError({ - code: "workspace-discovery-failed", - message: "resolveWorkspaces threw on monorepo root", - path: monorepoRoot, - detail: describeUnknownError(monorepoWorkspaceError), - }), - ); - } - } - - let frameworkIgnorePatterns: string[] = []; - try { - frameworkIgnorePatterns = getFrameworkExclusions(config.rootDir); - } catch (frameworkError) { - setupErrors.push( - new WorkspaceError({ - code: "workspace-discovery-failed", - message: "getFrameworkExclusions failed — proceeding without framework exclusion patterns", - path: config.rootDir, - detail: describeUnknownError(frameworkError), - }), - ); - } - - const absoluteRoot = resolve(config.rootDir); - const outputDirectoryExclusions = OUTPUT_DIRECTORIES.flatMap((outputDirectory) => [ - `${absoluteRoot}/${outputDirectory}/**`, - `${absoluteRoot}/**/${outputDirectory}/**`, - ]); - - const allExclusionPatterns = [ - ...workspaceDiscovery.excludedDirectories.map((directory) => `${directory}/**`), - ...frameworkIgnorePatterns, - ...outputDirectoryExclusions, - ]; - - const configWithExclusions = - allExclusionPatterns.length > 0 - ? { - ...config, - ignorePatterns: [...config.ignorePatterns, ...allExclusionPatterns], - } - : config; - - let files: Awaited>; - let discoveredEntries: Awaited>; - try { - const [collectedFiles, resolvedEntries] = await Promise.all([ - collectSourceFiles(configWithExclusions), - resolveEntries(configWithExclusions).catch((entriesError: unknown) => { - setupErrors.push( - new WorkspaceError({ - code: "workspace-discovery-failed", - message: "resolveEntries failed — defaulting to empty entry set", - path: config.rootDir, - detail: describeUnknownError(entriesError), - }), - ); - return { - productionEntries: [] as string[], - testEntries: [] as string[], - alwaysUsedFiles: [] as string[], - }; - }), - ]); - files = collectedFiles; - discoveredEntries = resolvedEntries; - } catch (collectError) { - setupErrors.push( - new WorkspaceError({ - code: "workspace-discovery-failed", - severity: "fatal", - message: "collectSourceFiles failed", - path: config.rootDir, - detail: describeUnknownError(collectError), - }), - ); - return buildEmptyScanResult(setupErrors, performance.now() - pipelineStartTime); - } - const productionEntrySet = new Set(discoveredEntries.productionEntries); - const testEntrySet = new Set(discoveredEntries.testEntries); - const alwaysUsedFileSet = new Set(discoveredEntries.alwaysUsedFiles); - const gitIgnoreResult = collectGitIgnoredPaths( - resolve(config.rootDir), - files.map((file) => file.path), - ); - const gitIgnoredFileSet = gitIgnoreResult.ignoredPaths; - if (gitIgnoreResult.gitUnavailable) { - setupErrors.push( - new WorkspaceError({ - code: "gitignore-check-failed", - severity: "info", - message: "git unavailable — .gitignore filtering skipped", - path: config.rootDir, - }), - ); - } - - let hasReactNative = false; - try { - hasReactNative = detectReactNative(config.rootDir, workspacePackages); - } catch { - hasReactNative = false; - } - - let moduleResolver: ReturnType; - try { - moduleResolver = createResolver( - config, - workspacePackages.map((workspacePackage) => ({ - name: workspacePackage.name, - directory: workspacePackage.directory, - })), - { hasReactNative, monorepoRoot }, - ); - } catch (resolverError) { - setupErrors.push( - new ResolverError({ - message: "createResolver failed", - path: config.rootDir, - detail: describeUnknownError(resolverError), - }), - ); - return buildEmptyScanResult(setupErrors, performance.now() - pipelineStartTime); - } - const parsedModules = await parseFilesInParallel(files); - - const graphInputs: ModuleLinkInput[] = []; - - for (let fileIndex = 0; fileIndex < files.length; fileIndex++) { - const file = files[fileIndex]; - const parsedModule = parsedModules[fileIndex]; - const resolvedImportMap = new Map>(); - - const safeResolveImport = ( - specifier: string, - ): ReturnType => { - try { - return moduleResolver.resolveModule(specifier, file.path); - } catch (resolveError) { - setupErrors.push( - new ResolverError({ - severity: "warning", - message: `moduleResolver.resolveModule threw on specifier "${specifier}"`, - path: file.path, - detail: describeUnknownError(resolveError), - }), - ); - return { resolvedPath: undefined, isExternal: false, packageName: undefined }; - } - }; - - for (const importInfo of parsedModule.imports) { - if (importInfo.isGlob) { - const fileDir = dirname(file.path); - let expandedFiles: string[] = []; - try { - expandedFiles = fg.sync(importInfo.specifier, { - cwd: fileDir, - absolute: true, - onlyFiles: true, - ignore: ["**/node_modules/**"], - }); - } catch (globError) { - setupErrors.push( - new WorkspaceError({ - code: "workspace-discovery-failed", - message: `fast-glob threw on import glob "${importInfo.specifier}"`, - path: file.path, - detail: describeUnknownError(globError), - }), - ); - } - for (const expandedFile of expandedFiles) { - resolvedImportMap.set(expandedFile, { - resolvedPath: expandedFile, - isExternal: false, - packageName: undefined, - }); - } - resolvedImportMap.set(importInfo.specifier, { - resolvedPath: undefined, - isExternal: false, - packageName: undefined, - }); - continue; - } - resolvedImportMap.set(importInfo.specifier, safeResolveImport(importInfo.specifier)); - } - - for (const exportInfo of parsedModule.exports) { - if (exportInfo.isReExport && exportInfo.reExportSource) { - if (!resolvedImportMap.has(exportInfo.reExportSource)) { - resolvedImportMap.set( - exportInfo.reExportSource, - safeResolveImport(exportInfo.reExportSource), - ); - } - } - } - - const isAlwaysUsed = alwaysUsedFileSet.has(file.path); - graphInputs.push({ - fileId: file, - parsed: parsedModule, - resolvedImports: resolvedImportMap, - isEntryPoint: - isAlwaysUsed || productionEntrySet.has(file.path) || testEntrySet.has(file.path), - isTestEntry: testEntrySet.has(file.path), - isGitIgnored: gitIgnoredFileSet.has(file.path), - }); - } - - const discoveredFilePaths = new Set(files.map((file) => file.path)); - const styleFilesToAdd = new Set(); - - for (const input of graphInputs) { - for (const [, resolvedImport] of input.resolvedImports) { - if (!resolvedImport.resolvedPath || resolvedImport.isExternal) continue; - if (discoveredFilePaths.has(resolvedImport.resolvedPath)) continue; - const isStyleFile = STYLE_EXTENSIONS.some((ext) => - resolvedImport.resolvedPath!.endsWith(ext), - ); - if (isStyleFile && existsSync(resolvedImport.resolvedPath)) { - styleFilesToAdd.add(resolvedImport.resolvedPath); - } - } - } - - const sortedStyleFiles = [...styleFilesToAdd].sort(); - let nextFileIndex = files.length; - for (const styleFilePath of sortedStyleFiles) { - const styleSourceFile = { index: nextFileIndex, path: styleFilePath }; - const parsedStyleModule = parseSourceFile(styleFilePath); - const resolvedStyleImportMap = new Map< - string, - ReturnType - >(); - - for (const importInfo of parsedStyleModule.imports) { - let resolvedImport: ReturnType; - try { - resolvedImport = moduleResolver.resolveModule(importInfo.specifier, styleFilePath); - } catch (styleResolveError) { - setupErrors.push( - new ResolverError({ - severity: "warning", - message: `moduleResolver.resolveModule threw on style import "${importInfo.specifier}"`, - path: styleFilePath, - detail: describeUnknownError(styleResolveError), - }), - ); - resolvedImport = { resolvedPath: undefined, isExternal: false, packageName: undefined }; - } - resolvedStyleImportMap.set(importInfo.specifier, resolvedImport); - if (resolvedImport.resolvedPath && !discoveredFilePaths.has(resolvedImport.resolvedPath)) { - const isNestedStyle = STYLE_EXTENSIONS.some((ext) => - resolvedImport.resolvedPath!.endsWith(ext), - ); - if (isNestedStyle && existsSync(resolvedImport.resolvedPath)) { - styleFilesToAdd.add(resolvedImport.resolvedPath); - } - } - } - - graphInputs.push({ - fileId: styleSourceFile, - parsed: parsedStyleModule, - resolvedImports: resolvedStyleImportMap, - isEntryPoint: false, - isTestEntry: false, - isGitIgnored: gitIgnoredFileSet.has(styleFilePath), - }); - discoveredFilePaths.add(styleFilePath); - nextFileIndex++; - } - - let moduleGraph: ReturnType; - try { - moduleGraph = buildDependencyGraph(graphInputs); - } catch (graphError) { - setupErrors.push( - new DetectorError({ - module: "linker", - severity: "fatal", - message: "buildDependencyGraph threw", - detail: describeUnknownError(graphError), - }), - ); - return buildEmptyScanResult(setupErrors, performance.now() - pipelineStartTime); - } - - try { - resolveReExportChains(moduleGraph); - } catch (reExportError) { - setupErrors.push( - new DetectorError({ - module: "linker", - message: "resolveReExportChains threw — re-export propagation skipped", - detail: describeUnknownError(reExportError), - }), - ); - } - - markFilenameRegistryEntries(moduleGraph); - - try { - traceReachability(moduleGraph); - } catch (reachabilityError) { - setupErrors.push( - new DetectorError({ - module: "linker", - message: "traceReachability threw — every module marked reachable to avoid over-reporting", - detail: describeUnknownError(reachabilityError), - }), - ); - for (const module of moduleGraph.modules) module.isReachable = true; - } - - let analysisResult: ScanResult; - try { - analysisResult = generateReport(moduleGraph, config); - } catch (reportError) { - setupErrors.push( - new DetectorError({ - module: "report", - severity: "fatal", - message: "generateReport threw at the top level", - detail: describeUnknownError(reportError), - }), - ); - return buildEmptyScanResult(setupErrors, performance.now() - pipelineStartTime); - } - - if (setupErrors.length > 0) { - analysisResult.analysisErrors = [...setupErrors, ...analysisResult.analysisErrors]; - } - analysisResult.analysisTimeMs = performance.now() - pipelineStartTime; - - return analysisResult; -}; +// deslop-js is a thin published facade. The engine lives in +// `@react-doctor/core` (private) under `src/deslop` and is exposed via the +// `@react-doctor/core/deslop` subpath; `vp pack` bundles it into this +// package's output so the published tarball stays self-contained. Keep this +// file a pure re-export so the public API tracks the engine automatically. +export * from "@react-doctor/core/deslop"; diff --git a/packages/deslop-js/vite.config.ts b/packages/deslop-js/vite.config.ts index a48e2cacd..998799ebe 100644 --- a/packages/deslop-js/vite.config.ts +++ b/packages/deslop-js/vite.config.ts @@ -12,7 +12,11 @@ export default defineConfig({ minify: process.env.NODE_ENV === "production", }, { - entry: ["./src/collect/parse-worker.ts"], + // The engine moved into `@react-doctor/core/deslop`; build the worker + // entry straight from core's source so this package still emits a + // sibling `dist/parse-worker.mjs` for the bundled parallel parser to + // resolve via `import.meta.url`. + entry: ["../core/src/deslop/collect/parse-worker.ts"], format: ["esm"], dts: false, clean: false, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index df167531d..e006cfaff 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -51,6 +51,9 @@ importers: '@react-doctor/core': specifier: workspace:* version: link:../core + deslop-js: + specifier: workspace:* + version: link:../deslop-js effect: specifier: 4.0.0-beta.70 version: 4.0.0-beta.70 @@ -64,21 +67,33 @@ importers: '@effect/platform-node-shared': specifier: 4.0.0-beta.70 version: 4.0.0-beta.70(effect@4.0.0-beta.70) + '@oxc-project/types': + specifier: ^0.132.0 + version: 0.132.0 confbox: specifier: ^0.2.4 version: 0.2.4 - deslop-js: - specifier: workspace:* - version: link:../deslop-js effect: specifier: 4.0.0-beta.70 version: 4.0.0-beta.70 eslint-plugin-react-hooks: specifier: ^7.1.1 version: 7.1.1(eslint@9.39.2(jiti@2.7.0)) + fast-glob: + specifier: ^3.3.3 + version: 3.3.3 jiti: specifier: ^2.7.0 version: 2.7.0 + minimatch: + specifier: ^10.2.5 + version: 10.2.5 + oxc-parser: + specifier: ^0.132.0 + version: 0.132.0 + oxc-resolver: + specifier: ^11.19.1 + version: 11.19.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) oxlint: specifier: '>=1.66.0 <1.67.0' version: 1.66.0(oxlint-tsgolint@0.23.0) @@ -98,6 +113,9 @@ importers: '@effect/vitest': specifier: 4.0.0-beta.70 version: 4.0.0-beta.70(effect@4.0.0-beta.70)(vitest@4.1.7(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(vite@7.3.1(@types/node@25.6.0)(jiti@2.7.0)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.22.4)(yaml@2.9.0))) + '@types/minimatch': + specifier: ^5.1.2 + version: 5.1.2 '@types/node': specifier: ^25.6.0 version: 25.6.0 @@ -107,6 +125,9 @@ importers: '@types/semver': specifier: ^7.7.1 version: 7.7.1 + tsx: + specifier: ^4.21.0 + version: 4.22.4 packages/deslop-cli: dependencies: @@ -142,15 +163,12 @@ importers: specifier: ^6.0.3 version: 6.0.3 devDependencies: - '@types/minimatch': - specifier: ^5.1.2 - version: 5.1.2 + '@react-doctor/core': + specifier: workspace:* + version: link:../core '@types/node': specifier: ^25.6.0 version: 25.6.0 - tsx: - specifier: ^4.21.0 - version: 4.22.4 packages/eslint-plugin-react-doctor: dependencies: diff --git a/vite.config.ts b/vite.config.ts index fed1a9e83..8e1901db0 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -14,7 +14,7 @@ export default defineConfig({ "packages/zed-react-doctor/**", "packages/react-doctor/tests/fixtures/**", "packages/language-server/tests/fixtures/**", - "packages/deslop-js/tests/fixtures/**", + "packages/core/tests/deslop/fixtures/**", ], plugins: ["typescript", "react", "import"], rules: {}, @@ -30,7 +30,7 @@ export default defineConfig({ "pnpm-lock.yaml", "packages/zed-react-doctor/**", "packages/language-server/tests/fixtures/**", - "packages/deslop-js/tests/fixtures/**", + "packages/core/tests/deslop/fixtures/**", ], }, }); From c6741273d2347670bdeafd956fb819ef299739f4 Mon Sep 17 00:00:00 2001 From: Aiden Bai Date: Tue, 23 Jun 2026 15:19:49 -0700 Subject: [PATCH 12/13] fix(core): keep deslop analyze() tests POSIX-only on Windows analyze.test.ts asserts POSIX-relative paths against the deslop engine's raw output, which uses OS-native separators (production normalizes via check-dead-code's toRelativeFilePath). The cases never executed on Windows under deslop-js's `node --test tests/*.test.ts` glob; exclude them on win32, mirroring check-dead-code.test.ts's existing skipIf(win32). --- packages/core/vite.config.ts | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/packages/core/vite.config.ts b/packages/core/vite.config.ts index 1fd01c0f4..15409f831 100644 --- a/packages/core/vite.config.ts +++ b/packages/core/vite.config.ts @@ -48,6 +48,17 @@ export default defineConfig({ // The deslop engine's tests scan fixture projects that deliberately // contain their own `*.test.ts` / `*.spec.ts` files (test data for the // dead-code analyzer); never collect those as real tests. - exclude: ["**/node_modules/**", "**/dist/**", "**/fixtures/**"], + exclude: [ + "**/node_modules/**", + "**/dist/**", + "**/fixtures/**", + // deslop's analyze() returns OS-native path separators; production + // normalizes them to POSIX in check-dead-code's toRelativeFilePath, but + // these integration tests assert POSIX paths against the raw engine + // output. They're POSIX-only (the same reason check-dead-code.test.ts + // skips its import-graph cases on win32), and never ran on Windows under + // deslop-js's `node --test tests/*.test.ts` glob. + ...(process.platform === "win32" ? ["tests/deslop/analyze.test.ts"] : []), + ], }, }); From 596c0c703f9c7005f3689e722426eff546b86a98 Mon Sep 17 00:00:00 2001 From: Aiden Bai Date: Tue, 23 Jun 2026 16:52:41 -0700 Subject: [PATCH 13/13] fix(language-server): declare deslop-js for the dead-code path MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit scanWorkspaceFull enqueues scans with runDeadCode: true, which routes through core's checkDeadCode and resolves deslop-js via import.meta.resolve("deslop-js"). Since core no longer depends on deslop-js (it resolves the specifier at runtime), each consumer that triggers dead-code must declare it directly — react-doctor, deslop-cli, and api already do; this adds the missing dependency to language-server so full workspace audits resolve the engine under pnpm's strict layout. --- packages/language-server/package.json | 1 + pnpm-lock.yaml | 3 +++ 2 files changed, 4 insertions(+) diff --git a/packages/language-server/package.json b/packages/language-server/package.json index 935706e5f..b329a7845 100644 --- a/packages/language-server/package.json +++ b/packages/language-server/package.json @@ -29,6 +29,7 @@ }, "dependencies": { "@react-doctor/core": "workspace:*", + "deslop-js": "workspace:*", "vscode-languageserver": "^9.0.1", "vscode-languageserver-textdocument": "^1.0.12", "vscode-uri": "^3.1.0" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e006cfaff..c959e8038 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -185,6 +185,9 @@ importers: '@react-doctor/core': specifier: workspace:* version: link:../core + deslop-js: + specifier: workspace:* + version: link:../deslop-js vscode-languageserver: specifier: ^9.0.1 version: 9.0.1