diff --git a/.changeset/bright-baboons-ring.md b/.changeset/bright-baboons-ring.md
new file mode 100644
index 0000000000..3f09a51f34
--- /dev/null
+++ b/.changeset/bright-baboons-ring.md
@@ -0,0 +1,8 @@
+---
+'houdini-plugin-svelte-global-stores': patch
+'houdini-svelte': patch
+'houdini-react': patch
+'houdini': patch
+---
+
+fix internal circular dependencies
diff --git a/.madgerc b/.madgerc
new file mode 100644
index 0000000000..66f0c66c64
--- /dev/null
+++ b/.madgerc
@@ -0,0 +1,7 @@
+{
+	"detectiveOptions": {
+		"ts": {
+			"skipTypeImports": true
+		}
+	}
+}
diff --git a/package.json b/package.json
index 8e756d6467..ddb197e633 100755
--- a/package.json
+++ b/package.json
@@ -8,6 +8,7 @@
 		"tests": "vitest",
 		"tests:ui": "vitest --ui --coverage",
 		"test": "pnpm run tests",
+		"check-circular-deps": "pnpm npx madge --circular --extensions ts,tsx ./",
 		"build:all": "turbo build",
 		"build": "turbo run build --filter=\"./packages/*\"",
 		"dev": "turbo dev --filter=\"./packages/*\"",
@@ -39,6 +40,7 @@
 		"eslint-plugin-unused-imports": "^3.0.0",
 		"graphql": "^15.8.0",
 		"lint-staged": "^12.3.4",
+		"madge": "^8.0.0",
 		"prettier": "^2.8.3",
 		"turbo": "^1.8.8",
 		"typescript": "^4.9",
diff --git a/packages/houdini-react/src/plugin/index.ts b/packages/houdini-react/src/plugin/index.ts
index 55b1f56fc3..409cbb2b4d 100644
--- a/packages/houdini-react/src/plugin/index.ts
+++ b/packages/houdini-react/src/plugin/index.ts
@@ -9,7 +9,6 @@ import {
 	type Document,
 	type Config,
 	type Plugin,
-	type ProjectManifest,
 } from 'houdini'
 import path from 'node:path'
 import { loadEnv } from 'vite'
@@ -17,11 +16,10 @@ import { loadEnv } from 'vite'
 import generate from './codegen'
 import { format_router_manifest } from './codegen/router'
 import { extractDocuments } from './extract'
+import { manifest, setManifest } from './state'
 import { transformFile } from './transform'
 import vite_plugin from './vite'
 
-export let manifest: ProjectManifest
-
 export const hooks: Plugin = async () => ({
 	order: 'core',
 
@@ -32,7 +30,7 @@ export const hooks: Plugin = async () => ({
 	// we generate anything
 	async beforeGenerate({ config }) {
 		try {
-			manifest = await load_manifest({ config })
+			setManifest(await load_manifest({ config }))
 		} catch (e) {
 			console.log('something went wrong: ' + (e as Error).message)
 			return
@@ -327,7 +325,3 @@ ${
 export default plugin('houdini-react', hooks)
 
 export type HoudiniReactPluginConfig = {}
-
-export function setManifest(newManifest: ProjectManifest): void {
-	manifest = newManifest
-}
diff --git a/packages/houdini-react/src/plugin/state.ts b/packages/houdini-react/src/plugin/state.ts
new file mode 100644
index 0000000000..3867cecf4c
--- /dev/null
+++ b/packages/houdini-react/src/plugin/state.ts
@@ -0,0 +1,7 @@
+import type { ProjectManifest } from 'houdini'
+
+export let manifest: ProjectManifest
+
+export function setManifest(newManifest: ProjectManifest): void {
+	manifest = newManifest
+}
diff --git a/packages/houdini-react/src/plugin/vite.tsx b/packages/houdini-react/src/plugin/vite.tsx
index 4f2bf0c39f..aa568d95a7 100644
--- a/packages/houdini-react/src/plugin/vite.tsx
+++ b/packages/houdini-react/src/plugin/vite.tsx
@@ -11,7 +11,7 @@ import {
 import React from 'react'
 import { build, type BuildOptions, ConfigEnv, type Connect } from 'vite'
 
-import { manifest, setManifest } from '.'
+import { manifest, setManifest } from './state'
 
 let viteEnv: ConfigEnv
 let devServer = false
diff --git a/packages/houdini-react/src/runtime/hooks/useDocumentHandle.ts b/packages/houdini-react/src/runtime/hooks/useDocumentHandle.ts
index 5a9684dc7b..d1d6868452 100644
--- a/packages/houdini-react/src/runtime/hooks/useDocumentHandle.ts
+++ b/packages/houdini-react/src/runtime/hooks/useDocumentHandle.ts
@@ -15,7 +15,7 @@ import type {
 } from '$houdini/runtime/lib/types'
 import React from 'react'
 
-import { useClient, useLocation, useSession } from '../routing/Router'
+import { useClient, useSession, useLocation } from '../routing/hooks'
 
 export function useDocumentHandle<
 	_Artifact extends QueryArtifact,
diff --git a/packages/houdini-react/src/runtime/hooks/useDocumentStore.ts b/packages/houdini-react/src/runtime/hooks/useDocumentStore.ts
index 13be07d7f9..028034dc3d 100644
--- a/packages/houdini-react/src/runtime/hooks/useDocumentStore.ts
+++ b/packages/houdini-react/src/runtime/hooks/useDocumentStore.ts
@@ -3,7 +3,7 @@ import type { DocumentStore, ObserveParams } from '$houdini/runtime/client'
 import type { GraphQLObject } from 'houdini'
 import * as React from 'react'
 
-import { useClient } from '../routing'
+import { useClient } from '../routing/hooks'
 import { useIsMountedRef } from './useIsMounted'
 
 export type UseDocumentStoreParams<
diff --git a/packages/houdini-react/src/runtime/hooks/useDocumentSubscription.ts b/packages/houdini-react/src/runtime/hooks/useDocumentSubscription.ts
index 4c78e6f282..e6e8b7ca35 100644
--- a/packages/houdini-react/src/runtime/hooks/useDocumentSubscription.ts
+++ b/packages/houdini-react/src/runtime/hooks/useDocumentSubscription.ts
@@ -2,7 +2,7 @@ import type { DocumentArtifact, GraphQLVariables, QueryResult } from '$houdini/l
 import type { DocumentStore, SendParams } from '$houdini/runtime/client'
 import type { GraphQLObject } from 'houdini'
 
-import { useSession } from '../routing/Router'
+import { useSession } from '../routing/hooks'
 import useDeepCompareEffect from './useDeepCompareEffect'
 import { useDocumentStore, type UseDocumentStoreParams } from './useDocumentStore'
 
diff --git a/packages/houdini-react/src/runtime/hooks/useMutation.ts b/packages/houdini-react/src/runtime/hooks/useMutation.ts
index bf1199f713..c731f06330 100644
--- a/packages/houdini-react/src/runtime/hooks/useMutation.ts
+++ b/packages/houdini-react/src/runtime/hooks/useMutation.ts
@@ -5,7 +5,7 @@ import type {
 	GraphQLVariables,
 } from '$houdini/runtime/lib/types'
 
-import { useSession } from '../routing/Router'
+import { useSession } from '../routing/hooks'
 import { useDocumentStore } from './useDocumentStore'
 
 export type MutationHandler<_Result, _Input, _Optimistic extends GraphQLObject> = (args: {
diff --git a/packages/houdini-react/src/runtime/routing/Router.tsx b/packages/houdini-react/src/runtime/routing/Router.tsx
index da6133d019..686f586a2a 100644
--- a/packages/houdini-react/src/runtime/routing/Router.tsx
+++ b/packages/houdini-react/src/runtime/routing/Router.tsx
@@ -2,20 +2,20 @@ import type { Cache } from '$houdini/runtime/cache/cache'
 import { DocumentStore, HoudiniClient } from '$houdini/runtime/client'
 import configFile from '$houdini/runtime/imports/config'
 import { deepEquals } from '$houdini/runtime/lib/deepEquals'
-import { LRUCache } from '$houdini/runtime/lib/lru'
+import type { LRUCache } from '$houdini/runtime/lib/lru'
 import { marshalSelection, marshalInputs } from '$houdini/runtime/lib/scalars'
-import { GraphQLObject, GraphQLVariables } from '$houdini/runtime/lib/types'
-import { QueryArtifact } from '$houdini/runtime/lib/types'
+import type { GraphQLObject, GraphQLVariables } from '$houdini/runtime/lib/types'
+import type { QueryArtifact } from '$houdini/runtime/lib/types'
 import { find_match } from '$houdini/runtime/router/match'
 import type { RouterManifest, RouterPageManifest } from '$houdini/runtime/router/types'
 import React from 'react'
 import { useContext } from 'react'
 
-import { DocumentHandle, useDocumentHandle } from '../hooks/useDocumentHandle'
-import { useDocumentStore } from '../hooks/useDocumentStore'
-import { SuspenseCache, suspense_cache } from './cache'
+import { suspense_cache, type SuspenseCache } from './cache'
 
-type PageComponent = React.ComponentType<{ url: string }>
+import { useDocumentHandle, type DocumentHandle } from '../hooks/useDocumentHandle'
+import { useDocumentStore } from '../hooks/useDocumentStore'
+import { Context, useRouterContext, useSession, useLocation, LocationContext, type PageComponent, type PendingCache } from './hooks'
 
 const PreloadWhich = {
 	component: 'component',
@@ -153,9 +153,6 @@ export function Router({
 	)
 }
 
-// export the location information in context
-export const useLocation = () => useContext(LocationContext)
-
 /**
  * usePageData is responsible for kicking off the network requests necessary to render the page.
  * This includes loading the artifact, the component source, and any query results. This hook
@@ -514,58 +511,6 @@ export function RouterContextProvider({
 	)
 }
 
-type RouterContext = {
-	client: HoudiniClient
-	cache: Cache
-
-	// We also need a cache for artifacts so that we can avoid suspending to
-	// load them if possible.
-	artifact_cache: SuspenseCache<QueryArtifact>
-
-	// We also need a cache for component references so we can avoid suspending
-	// when we load the same page multiple times
-	component_cache: SuspenseCache<PageComponent>
-
-	// Pages need a way to wait for data
-	data_cache: SuspenseCache<DocumentStore<GraphQLObject, GraphQLVariables>>
-
-	// A way to dedupe requests for a query
-	ssr_signals: PendingCache
-
-	// A way to track the last known good variables
-	last_variables: LRUCache<GraphQLVariables>
-
-	// The current session
-	session: App.Session
-
-	// a function to call that sets the client-side session singletone
-	setSession: (newSession: Partial<App.Session>) => void
-}
-
-export type PendingCache = SuspenseCache<
-	Promise<void> & { resolve: () => void; reject: (message: string) => void }
->
-
-const Context = React.createContext<RouterContext | null>(null)
-
-export const useRouterContext = () => {
-	const ctx = React.useContext(Context)
-
-	if (!ctx) {
-		throw new Error('Could not find router context')
-	}
-
-	return ctx
-}
-
-export function useClient() {
-	return useRouterContext().client
-}
-
-export function useCache() {
-	return useRouterContext().cache
-}
-
 export function updateLocalSession(session: App.Session) {
 	window.dispatchEvent(
 		new CustomEvent<App.Session>('_houdini_session_', {
@@ -575,56 +520,12 @@ export function updateLocalSession(session: App.Session) {
 	)
 }
 
-export function useSession(): [App.Session, (newSession: Partial<App.Session>) => void] {
-	const ctx = useRouterContext()
-
-	// when we update the session we have to do 2 things. (1) we have to update the local state
-	// that we will use on the client (2) we have to send a request to the server so that it
-	// can update the cookie that we use for the session
-	const updateSession = (newSession: Partial<App.Session>) => {
-		// clear the data cache so that we refetch queries with the new session (will force a cache-lookup)
-		ctx.data_cache.clear()
-
-		// update the local state
-		ctx.setSession(newSession)
-
-		// figure out the url that we will use to send values to the server
-		const auth = configFile.router?.auth
-		if (!auth) {
-			return
-		}
-		const url = 'redirect' in auth ? auth.redirect : auth.url
-
-		fetch(url, {
-			method: 'POST',
-			body: JSON.stringify(newSession),
-			headers: {
-				'Content-Type': 'application/json',
-				Accept: 'application/json',
-			},
-		})
-	}
-
-	return [ctx.session, updateSession]
-}
-
 export function useCurrentVariables(): GraphQLVariables {
-	return React.useContext(VariableContext)
+    return React.useContext(VariableContext)
 }
 
 const VariableContext = React.createContext<GraphQLVariables>(null)
 
-const LocationContext = React.createContext<{
-	pathname: string
-	params: Record<string, any>
-	// a function to imperatively navigate to a url
-	goto: (url: string) => void
-}>({
-	pathname: '',
-	params: {},
-	goto: () => {},
-})
-
 export function useQueryResult<_Data extends GraphQLObject, _Input extends GraphQLVariables>(
 	name: string
 ): [_Data | null, DocumentHandle<any, _Data, _Input>] {
diff --git a/packages/houdini-react/src/runtime/routing/hooks.ts b/packages/houdini-react/src/runtime/routing/hooks.ts
new file mode 100644
index 0000000000..189214d77d
--- /dev/null
+++ b/packages/houdini-react/src/runtime/routing/hooks.ts
@@ -0,0 +1,108 @@
+import type { Cache } from '$houdini/runtime/cache/cache'
+import type { DocumentStore, HoudiniClient } from '$houdini/runtime/client'
+import configFile from '$houdini/runtime/imports/config'
+import type { LRUCache } from '$houdini/runtime/lib/lru'
+import type { GraphQLObject, GraphQLVariables, QueryArtifact } from '$houdini/runtime/lib/types'
+import { useContext, default as React } from 'react'
+
+import type { SuspenseCache } from './cache'
+
+export type PageComponent = React.ComponentType<{ url: string }>
+
+export type PendingCache = SuspenseCache<
+	Promise<void> & { resolve: () => void; reject: (message: string) => void }
+>
+
+type RouterContext = {
+	client: HoudiniClient
+	cache: Cache
+
+	// We also need a cache for artifacts so that we can avoid suspending to
+	// load them if possible.
+	artifact_cache: SuspenseCache<QueryArtifact>
+
+	// We also need a cache for component references so we can avoid suspending
+	// when we load the same page multiple times
+	component_cache: SuspenseCache<PageComponent>
+
+	// Pages need a way to wait for data
+	data_cache: SuspenseCache<DocumentStore<GraphQLObject, GraphQLVariables>>
+
+	// A way to dedupe requests for a query
+	ssr_signals: PendingCache
+
+	// A way to track the last known good variables
+	last_variables: LRUCache<GraphQLVariables>
+
+	// The current session
+	session: App.Session
+
+	// a function to call that sets the client-side session singletone
+	setSession: (newSession: Partial<App.Session>) => void
+}
+
+export const Context = React.createContext<RouterContext | null>(null)
+
+export const LocationContext = React.createContext<{
+	pathname: string
+	params: Record<string, any>
+	// a function to imperatively navigate to a url
+	goto: (url: string) => void
+}>({
+	pathname: '',
+	params: {},
+	goto: () => {},
+})
+// export the location information in context
+export const useLocation = () => useContext(LocationContext)
+
+export const useRouterContext = () => {
+	const ctx = React.useContext(Context)
+
+	if (!ctx) {
+		throw new Error('Could not find router context')
+	}
+
+	return ctx
+}
+
+export function useClient() {
+	return useRouterContext().client
+}
+
+export function useCache() {
+	return useRouterContext().cache
+}
+
+export function useSession(): [App.Session, (newSession: Partial<App.Session>) => void] {
+	const ctx = useRouterContext()
+
+	// when we update the session we have to do 2 things. (1) we have to update the local state
+	// that we will use on the client (2) we have to send a request to the server so that it
+	// can update the cookie that we use for the session
+	const updateSession = (newSession: Partial<App.Session>) => {
+		// clear the data cache so that we refetch queries with the new session (will force a cache-lookup)
+		ctx.data_cache.clear()
+
+		// update the local state
+		ctx.setSession(newSession)
+
+		// figure out the url that we will use to send values to the server
+		const auth = configFile.router?.auth
+		if (!auth) {
+			return
+		}
+		const url = 'redirect' in auth ? auth.redirect : auth.url
+
+		fetch(url, {
+			method: 'POST',
+			body: JSON.stringify(newSession),
+			headers: {
+				'Content-Type': 'application/json',
+				Accept: 'application/json',
+			},
+		})
+	}
+
+	return [ctx.session, updateSession]
+}
diff --git a/packages/houdini-react/src/runtime/routing/index.ts b/packages/houdini-react/src/runtime/routing/index.ts
index 5c47561a84..03cd8ed41e 100644
--- a/packages/houdini-react/src/runtime/routing/index.ts
+++ b/packages/houdini-react/src/runtime/routing/index.ts
@@ -1,2 +1,3 @@
 export * from './Router'
+export * from './hooks'
 export { type SuspenseCache, suspense_cache } from './cache'
diff --git a/packages/houdini-svelte/src/plugin/codegen/fragmentTypedefs/index.ts b/packages/houdini-svelte/src/plugin/codegen/fragmentTypedefs/index.ts
index 79085dbfc6..215931d4fc 100644
--- a/packages/houdini-svelte/src/plugin/codegen/fragmentTypedefs/index.ts
+++ b/packages/houdini-svelte/src/plugin/codegen/fragmentTypedefs/index.ts
@@ -4,7 +4,7 @@ import { printJS, fragmentKey, parseJS, path, fs, ArtifactKind, ensureImports }
 import * as recast from 'recast'
 
 import type { PluginGenerateInput } from '..'
-import { stores_directory_name, store_name } from '../../kit'
+import { stores_directory_name, store_name } from '../../storeConfig'
 
 const AST = recast.types.builders
 
diff --git a/packages/houdini-svelte/src/plugin/codegen/index.ts b/packages/houdini-svelte/src/plugin/codegen/index.ts
index 8257ba8d85..ea2e45715a 100644
--- a/packages/houdini-svelte/src/plugin/codegen/index.ts
+++ b/packages/houdini-svelte/src/plugin/codegen/index.ts
@@ -1,7 +1,7 @@
 import type { GenerateHookInput } from 'houdini'
 import { fs } from 'houdini'
 
-import { stores_directory, type_route_dir } from '../kit'
+import { stores_directory, type_route_dir } from '../storeConfig'
 import components from './components'
 import fragmentTypedefs from './fragmentTypedefs'
 import kit from './routes'
diff --git a/packages/houdini-svelte/src/plugin/codegen/routes/index.ts b/packages/houdini-svelte/src/plugin/codegen/routes/index.ts
index 1c1df2d701..f02c02f6a9 100644
--- a/packages/houdini-svelte/src/plugin/codegen/routes/index.ts
+++ b/packages/houdini-svelte/src/plugin/codegen/routes/index.ts
@@ -2,16 +2,12 @@ import type { OperationDefinitionNode } from 'graphql'
 import type { Config, GenerateHookInput } from 'houdini'
 import { fs, path } from 'houdini'
 
+import { plugin_config } from '../../config'
 import type { Framework } from '../../kit'
-import {
-	type_route_dir,
-	stores_directory_name,
-	store_suffix,
-	walk_routes,
-	plugin_config,
-} from '../../kit'
+import { walk_routes } from '../../kit'
 import { houdini_afterLoad_fn, houdini_before_load_fn, houdini_on_error_fn } from '../../naming'
 import { route_params } from '../../routing'
+import { type_route_dir, stores_directory_name, store_suffix } from '../../storeConfig'
 
 export default async function svelteKitGenerator(
 	framework: Framework,
diff --git a/packages/houdini-svelte/src/plugin/codegen/routes/kit.test.ts b/packages/houdini-svelte/src/plugin/codegen/routes/kit.test.ts
index 6dc6a32741..389c383226 100644
--- a/packages/houdini-svelte/src/plugin/codegen/routes/kit.test.ts
+++ b/packages/houdini-svelte/src/plugin/codegen/routes/kit.test.ts
@@ -3,7 +3,7 @@ import { testConfig } from 'houdini/test'
 import { test, expect } from 'vitest'
 
 import generate from '..'
-import { type_route_dir } from '../../kit'
+import { type_route_dir } from '../../storeConfig'
 
 const config = testConfig()
 const pluginRoot = config.pluginDirectory('test-plugin')
diff --git a/packages/houdini-svelte/src/plugin/codegen/stores/custom.ts b/packages/houdini-svelte/src/plugin/codegen/stores/custom.ts
index 5c72580ca9..31175871b0 100644
--- a/packages/houdini-svelte/src/plugin/codegen/stores/custom.ts
+++ b/packages/houdini-svelte/src/plugin/codegen/stores/custom.ts
@@ -1,7 +1,6 @@
 import type { Config } from 'houdini'
 
-import type { HoudiniSvelteConfig } from '../../'
-import { plugin_config } from '../../kit'
+import { plugin_config, type HoudiniSvelteConfig } from '../../config'
 
 export function store_import(
 	cfg: Config,
diff --git a/packages/houdini-svelte/src/plugin/codegen/stores/fragment.test.ts b/packages/houdini-svelte/src/plugin/codegen/stores/fragment.test.ts
index 2474c54d36..18fb1c13b0 100644
--- a/packages/houdini-svelte/src/plugin/codegen/stores/fragment.test.ts
+++ b/packages/houdini-svelte/src/plugin/codegen/stores/fragment.test.ts
@@ -8,7 +8,7 @@ import { test, expect } from 'vitest'
 import runPipeline from '..'
 import '../..'
 import { test_config } from '../../../test'
-import { stores_directory } from '../../kit'
+import { stores_directory } from '../../storeConfig'
 
 test('generates a store for every fragment', async function () {
 	const config = await test_config()
diff --git a/packages/houdini-svelte/src/plugin/codegen/stores/fragment.ts b/packages/houdini-svelte/src/plugin/codegen/stores/fragment.ts
index 15f6c0e757..9916f262fb 100644
--- a/packages/houdini-svelte/src/plugin/codegen/stores/fragment.ts
+++ b/packages/houdini-svelte/src/plugin/codegen/stores/fragment.ts
@@ -1,8 +1,8 @@
 import type { Document, GenerateHookInput } from 'houdini'
 import { fs, path } from 'houdini'
 
-import type { HoudiniSvelteConfig } from '../..'
-import { stores_directory, store_name } from '../../kit'
+import type { HoudiniSvelteConfig } from '../../config'
+import { stores_directory, store_name } from '../../storeConfig'
 import { store_import } from './custom'
 
 export async function fragmentStore({ config, pluginRoot }: GenerateHookInput, doc: Document) {
diff --git a/packages/houdini-svelte/src/plugin/codegen/stores/index.ts b/packages/houdini-svelte/src/plugin/codegen/stores/index.ts
index a51468b03f..be9df1ab64 100644
--- a/packages/houdini-svelte/src/plugin/codegen/stores/index.ts
+++ b/packages/houdini-svelte/src/plugin/codegen/stores/index.ts
@@ -1,7 +1,7 @@
 import type { GenerateHookInput } from 'houdini'
 import { cleanupFiles, fs, ArtifactKind, path } from 'houdini'
 
-import { stores_directory } from '../../kit'
+import { stores_directory } from '../../storeConfig'
 import { fragmentStore } from './fragment'
 import { mutationStore } from './mutation'
 import { queryStore } from './query'
diff --git a/packages/houdini-svelte/src/plugin/codegen/stores/mutation.test.ts b/packages/houdini-svelte/src/plugin/codegen/stores/mutation.test.ts
index 4c3e1d2211..2496c3b9f7 100644
--- a/packages/houdini-svelte/src/plugin/codegen/stores/mutation.test.ts
+++ b/packages/houdini-svelte/src/plugin/codegen/stores/mutation.test.ts
@@ -8,7 +8,7 @@ import { test, expect } from 'vitest'
 import runPipeline from '..'
 import '../..'
 import { test_config } from '../../../test'
-import { stores_directory } from '../../kit'
+import { stores_directory } from '../../storeConfig'
 
 test('generates a store for every mutation', async function () {
 	const config = await test_config()
diff --git a/packages/houdini-svelte/src/plugin/codegen/stores/mutation.ts b/packages/houdini-svelte/src/plugin/codegen/stores/mutation.ts
index 9f6a4684b5..f326fcf2b5 100644
--- a/packages/houdini-svelte/src/plugin/codegen/stores/mutation.ts
+++ b/packages/houdini-svelte/src/plugin/codegen/stores/mutation.ts
@@ -1,7 +1,7 @@
 import type { Document, GenerateHookInput } from 'houdini'
 import { fs, path } from 'houdini'
 
-import { stores_directory, store_name } from '../../kit'
+import { stores_directory, store_name } from '../../storeConfig'
 import { store_import } from './custom'
 
 export async function mutationStore({ config, pluginRoot }: GenerateHookInput, doc: Document) {
diff --git a/packages/houdini-svelte/src/plugin/codegen/stores/query.test.ts b/packages/houdini-svelte/src/plugin/codegen/stores/query.test.ts
index 569301bc8a..9f83f818c2 100644
--- a/packages/houdini-svelte/src/plugin/codegen/stores/query.test.ts
+++ b/packages/houdini-svelte/src/plugin/codegen/stores/query.test.ts
@@ -8,7 +8,7 @@ import { test, expect } from 'vitest'
 import runPipeline from '..'
 import '../..'
 import { pipeline_test, test_config } from '../../../test'
-import { stores_directory } from '../../kit'
+import { stores_directory } from '../../storeConfig'
 
 test('generates a query store for every query', async function () {
 	const config = await test_config()
diff --git a/packages/houdini-svelte/src/plugin/codegen/stores/query.ts b/packages/houdini-svelte/src/plugin/codegen/stores/query.ts
index 14773f72ac..7559bfaf52 100644
--- a/packages/houdini-svelte/src/plugin/codegen/stores/query.ts
+++ b/packages/houdini-svelte/src/plugin/codegen/stores/query.ts
@@ -2,8 +2,8 @@ import type * as graphql from 'graphql'
 import type { Document, GenerateHookInput } from 'houdini'
 import { fs, operation_requires_variables, path } from 'houdini'
 
-import type { HoudiniSvelteConfig } from '../..'
-import { stores_directory, store_name } from '../../kit'
+import type { HoudiniSvelteConfig } from '../../config'
+import { stores_directory, store_name } from '../../storeConfig'
 import { store_import } from './custom'
 
 export async function queryStore({ config, pluginRoot }: GenerateHookInput, doc: Document) {
diff --git a/packages/houdini-svelte/src/plugin/codegen/stores/subscription.test.ts b/packages/houdini-svelte/src/plugin/codegen/stores/subscription.test.ts
index 75a012278d..530af6b12b 100644
--- a/packages/houdini-svelte/src/plugin/codegen/stores/subscription.test.ts
+++ b/packages/houdini-svelte/src/plugin/codegen/stores/subscription.test.ts
@@ -8,7 +8,7 @@ import { test, expect } from 'vitest'
 import runPipeline from '..'
 import '../..'
 import { test_config } from '../../../test'
-import { stores_directory } from '../../kit'
+import { stores_directory } from '../../storeConfig'
 
 test('generates a store for every subscription', async function () {
 	const config = await test_config()
diff --git a/packages/houdini-svelte/src/plugin/codegen/stores/subscription.ts b/packages/houdini-svelte/src/plugin/codegen/stores/subscription.ts
index fd68528aad..fe02a0ad18 100644
--- a/packages/houdini-svelte/src/plugin/codegen/stores/subscription.ts
+++ b/packages/houdini-svelte/src/plugin/codegen/stores/subscription.ts
@@ -1,7 +1,7 @@
 import type { Document, GenerateHookInput } from 'houdini'
 import { fs, path } from 'houdini'
 
-import { stores_directory, store_name } from '../../kit'
+import { stores_directory, store_name } from '../../storeConfig'
 import { store_import } from './custom'
 
 export async function subscriptionStore({ config, pluginRoot }: GenerateHookInput, doc: Document) {
diff --git a/packages/houdini-svelte/src/plugin/config.ts b/packages/houdini-svelte/src/plugin/config.ts
new file mode 100644
index 0000000000..664722b2b2
--- /dev/null
+++ b/packages/houdini-svelte/src/plugin/config.ts
@@ -0,0 +1,85 @@
+import type { Config } from 'houdini'
+
+export type HoudiniSvelteConfig = {
+	/**
+	 * A relative path from your houdini.config.js to the file that exports your client as its default value
+	 * @default `./src/client.ts`
+	 */
+	client?: string
+
+	/**
+	 * Specifies whether the client side routing is blocking or not. (default: `false`)
+	 */
+	defaultRouteBlocking?: boolean
+
+	/**
+	 * The name of the file used to define page queries.
+	 * @default +page.gql
+	 */
+	pageQueryFilename?: string
+
+	/**
+	 * The name of the file used to define layout queries.
+	 * @default +layout.gql
+	 */
+	layoutQueryFilename?: string
+
+	/**
+	 * A flag to treat every component as a non-route. This is useful for projects built with the static-adapter
+	 * @default false
+	 */
+	static?: boolean
+
+	/**
+	 * set the framework to use. It should be automatically detected but you can override it here.
+	 * @default undefined
+	 */
+	framework: 'kit' | 'svelte' | undefined
+
+	/**
+	 * Force Houdini to always use Runes under the hood. Set this to true if you are enabling Runes mode globally for your app.
+	 * When disabled, Houdini will try to detect Runes and go into Runes mode if required.
+	 * @default false
+	 */
+	forceRunesMode?: boolean
+
+	/**
+	 * Override the classes used when building stores for documents. Values should take the form package.export
+	 * For example, if you have a store exported from $lib/stores you should set the value to "$lib/stores.CustomStore".
+	 */
+	customStores?: {
+		query?: string
+		mutation?: string
+		subscription?: string
+		fragment?: string
+		queryCursor?: string
+		queryOffset?: string
+		fragmentCursor?: string
+		fragmentOffset?: string
+	}
+}
+
+export function plugin_config(config: Config): Required<HoudiniSvelteConfig> {
+	const cfg = config.pluginConfig<HoudiniSvelteConfig>('houdini-svelte')
+
+	return {
+		client: './src/client',
+		defaultRouteBlocking: false,
+		pageQueryFilename: '+page.gql',
+		layoutQueryFilename: '+layout.gql',
+		static: false,
+		forceRunesMode: false,
+		...cfg,
+		customStores: {
+			query: '../runtime/stores/query.QueryStore',
+			mutation: '../runtime/stores/mutation.MutationStore',
+			fragment: '../runtime/stores/fragment.FragmentStore',
+			subscription: '../runtime/stores/subscription.SubscriptionStore',
+			queryCursor: '../runtime/stores/pagination/query.QueryStoreCursor',
+			queryOffset: '../runtime/stores/pagination/query.QueryStoreOffset',
+			fragmentCursor: '../runtime/stores/pagination/fragment.FragmentStoreCursor',
+			fragmentOffset: '../runtime/stores/pagination/fragment.FragmentStoreOffset',
+			...cfg?.customStores,
+		},
+	}
+}
diff --git a/packages/houdini-svelte/src/plugin/extract.ts b/packages/houdini-svelte/src/plugin/extract.ts
index 4f535bae23..a17493a3cf 100644
--- a/packages/houdini-svelte/src/plugin/extract.ts
+++ b/packages/houdini-svelte/src/plugin/extract.ts
@@ -4,7 +4,7 @@ import type { Config, Maybe, Script } from 'houdini'
 import { find_graphql, parseJS } from 'houdini'
 import * as svelte from 'svelte/compiler'
 
-import { plugin_config } from './kit'
+import { plugin_config } from './config'
 
 export default async function ({
 	config,
diff --git a/packages/houdini-svelte/src/plugin/extractLoadFunction.ts b/packages/houdini-svelte/src/plugin/extractLoadFunction.ts
index e51ba6c404..fe1a1b9594 100644
--- a/packages/houdini-svelte/src/plugin/extractLoadFunction.ts
+++ b/packages/houdini-svelte/src/plugin/extractLoadFunction.ts
@@ -6,13 +6,17 @@ import { fs, parseJS, path } from 'houdini'
 import type * as recast from 'recast'
 import { transformWithEsbuild } from 'vite'
 
-import type { HoudiniRouteScript } from './kit'
-import { stores_directory_name, store_suffix } from './kit'
 import { houdini_load_fn } from './naming'
+import { stores_directory_name, store_suffix } from './storeConfig'
 
 type Program = recast.types.namedTypes.Program
 type VariableDeclaration = recast.types.namedTypes.VariableDeclaration
 
+export type HoudiniRouteScript = {
+	houdini_load?: graphql.OperationDefinitionNode[]
+	exports: string[]
+}
+
 export async function extract_load_function(
 	config: Config,
 	filepath: string,
diff --git a/packages/houdini-svelte/src/plugin/fsPatch.ts b/packages/houdini-svelte/src/plugin/fsPatch.ts
index 5b19255043..6dd9cc8583 100644
--- a/packages/houdini-svelte/src/plugin/fsPatch.ts
+++ b/packages/houdini-svelte/src/plugin/fsPatch.ts
@@ -3,15 +3,10 @@ import { fs, path } from 'houdini'
 import filesystem, { Dirent, type PathOrFileDescriptor, type PathLike } from 'node:fs'
 import filesystemPromises, { type FileHandle } from 'node:fs/promises'
 
-import { _config } from '.'
+import { plugin_config } from './config'
 import type { Framework } from './kit'
-import {
-	is_root_layout,
-	is_root_layout_server,
-	is_route_script,
-	plugin_config,
-	resolve_relative,
-} from './kit'
+import { is_root_layout, is_root_layout_server, is_route_script, resolve_relative } from './kit'
+import { _config } from './state'
 
 // this plugin is responsible for faking `+page.js` existence in the eyes of sveltekit
 export default (getFramework: () => Framework) =>
diff --git a/packages/houdini-svelte/src/plugin/index.ts b/packages/houdini-svelte/src/plugin/index.ts
index 2a2b67bd3c..fd17981d13 100644
--- a/packages/houdini-svelte/src/plugin/index.ts
+++ b/packages/houdini-svelte/src/plugin/index.ts
@@ -1,27 +1,21 @@
-import type { Config, PluginHooks } from 'houdini'
+import type { PluginHooks } from 'houdini'
 import { HoudiniError, detectFromPackageJSON, fs, path, plugin } from 'houdini'
 import * as url from 'node:url'
 import { loadEnv } from 'vite'
 
 import { artifactData } from './artifactData'
 import generate from './codegen'
+import { plugin_config, type HoudiniSvelteConfig } from './config'
 import extract from './extract'
 import fs_patch from './fsPatch'
-import {
-	plugin_config,
-	resolve_relative,
-	store_import_path,
-	store_name,
-	stores_directory,
-	type Framework,
-} from './kit'
+import { resolve_relative, type Framework } from './kit'
+import { setConfig } from './state'
+import { store_import_path, store_name, stores_directory } from './storeConfig'
 import apply_transforms from './transforms'
 import { validate } from './validate'
 
 let framework: Framework = 'svelte'
 
-export let _config: Config
-
 export const pluginHooks = async (): Promise<PluginHooks> => ({
 	/**
 	 * Config
@@ -166,7 +160,7 @@ directive @${config.blockingDisableDirective} on QUERY
 	 */
 
 	async afterLoad({ config: cfg }) {
-		_config = cfg
+		setConfig(cfg)
 		const cfgPlugin = plugin_config(cfg)
 
 		let client_file_exists = false
@@ -234,62 +228,3 @@ declare module 'houdini' {
 		'houdini-svelte': HoudiniSvelteConfig
 	}
 }
-
-export type HoudiniSvelteConfig = {
-	/**
-	 * A relative path from your houdini.config.js to the file that exports your client as its default value
-	 * @default `./src/client.ts`
-	 */
-	client?: string
-
-	/**
-	 * Specifies whether the client side routing is blocking or not. (default: `false`)
-	 */
-	defaultRouteBlocking?: boolean
-
-	/**
-	 * The name of the file used to define page queries.
-	 * @default +page.gql
-	 */
-	pageQueryFilename?: string
-
-	/**
-	 * The name of the file used to define layout queries.
-	 * @default +layout.gql
-	 */
-	layoutQueryFilename?: string
-
-	/**
-	 * A flag to treat every component as a non-route. This is useful for projects built with the static-adapter
-	 * @default false
-	 */
-	static?: boolean
-
-	/**
-	 * set the framework to use. It should be automatically detected but you can override it here.
-	 * @default undefined
-	 */
-	framework: 'kit' | 'svelte' | undefined
-
-	/**
-	 * Force Houdini to always use Runes under the hood. Set this to true if you are enabling Runes mode globally for your app.
-	 * When disabled, Houdini will try to detect Runes and go into Runes mode if required.
-	 * @default false
-	 */
-	forceRunesMode?: boolean
-
-	/**
-	 * Override the classes used when building stores for documents. Values should take the form package.export
-	 * For example, if you have a store exported from $lib/stores you should set the value to "$lib/stores.CustomStore".
-	 */
-	customStores?: {
-		query?: string
-		mutation?: string
-		subscription?: string
-		fragment?: string
-		queryCursor?: string
-		queryOffset?: string
-		fragmentCursor?: string
-		fragmentOffset?: string
-	}
-}
diff --git a/packages/houdini-svelte/src/plugin/kit.ts b/packages/houdini-svelte/src/plugin/kit.ts
index df1bc56b8a..2c72aaa28a 100644
--- a/packages/houdini-svelte/src/plugin/kit.ts
+++ b/packages/houdini-svelte/src/plugin/kit.ts
@@ -4,9 +4,10 @@ import { find_graphql, fs, path } from 'houdini'
 import { ensure_imports } from 'houdini/vite'
 import type * as recast from 'recast'
 
-import type { HoudiniSvelteConfig } from '.'
+import { plugin_config } from './config'
 import { parseSvelte } from './extract'
 import { extract_load_function } from './extractLoadFunction'
+import { store_import_path, store_name } from './storeConfig'
 import type { SvelteTransformPage } from './transforms/types'
 
 type Identifier = recast.types.namedTypes.Identifier
@@ -365,11 +366,6 @@ export type RouteVisitor = {
 
 type RouteVisitorHandler<_Payload> = (value: _Payload, filepath: string) => Promise<void> | void
 
-export type HoudiniRouteScript = {
-	houdini_load?: graphql.OperationDefinitionNode[]
-	exports: string[]
-}
-
 const routeQueryError = (filepath: string) => ({
 	filepath,
 	message: 'route query error',
@@ -379,58 +375,6 @@ export function route_page_path(config: Config, filename: string) {
 	return resolve_relative(config, filename).replace('.js', '.svelte').replace('.ts', '.svelte')
 }
 
-export function stores_directory_name() {
-	return 'stores'
-}
-
-// the directory where we put all of the stores
-export function stores_directory(pluginRoot: string) {
-	return path.join(pluginRoot, stores_directory_name())
-}
-
-export function type_route_dir(config: Config) {
-	return path.join(config.typeRootDir, 'src', 'routes')
-}
-
-// the path that the runtime can use to import a store
-export function store_import_path({ config, name }: { config: Config; name: string }): string {
-	return `$houdini/plugins/houdini-svelte/${stores_directory_name()}/${name}`
-}
-
-export function store_suffix(config: Config) {
-	// if config changes, we might have more forbiddenNames to add in the validator
-	return 'Store'
-}
-
-export function store_name({ config, name }: { config: Config; name: string }) {
-	return name + store_suffix(config)
-}
-
-export function plugin_config(config: Config): Required<HoudiniSvelteConfig> {
-	const cfg = config.pluginConfig<HoudiniSvelteConfig>('houdini-svelte')
-
-	return {
-		client: './src/client',
-		defaultRouteBlocking: false,
-		pageQueryFilename: '+page.gql',
-		layoutQueryFilename: '+layout.gql',
-		static: false,
-		forceRunesMode: false,
-		...cfg,
-		customStores: {
-			query: '../runtime/stores/query.QueryStore',
-			mutation: '../runtime/stores/mutation.MutationStore',
-			fragment: '../runtime/stores/fragment.FragmentStore',
-			subscription: '../runtime/stores/subscription.SubscriptionStore',
-			queryCursor: '../runtime/stores/pagination/query.QueryStoreCursor',
-			queryOffset: '../runtime/stores/pagination/query.QueryStoreOffset',
-			fragmentCursor: '../runtime/stores/pagination/fragment.FragmentStoreCursor',
-			fragmentOffset: '../runtime/stores/pagination/fragment.FragmentStoreOffset',
-			...cfg?.customStores,
-		},
-	}
-}
-
 export function store_import({
 	page,
 	artifact,
diff --git a/packages/houdini-svelte/src/plugin/state.ts b/packages/houdini-svelte/src/plugin/state.ts
new file mode 100644
index 0000000000..09102694cd
--- /dev/null
+++ b/packages/houdini-svelte/src/plugin/state.ts
@@ -0,0 +1,7 @@
+import type { Config } from 'houdini'
+
+export let _config: Config
+
+export function setConfig(config: Config) {
+	_config = config
+}
diff --git a/packages/houdini-svelte/src/plugin/storeConfig.ts b/packages/houdini-svelte/src/plugin/storeConfig.ts
new file mode 100644
index 0000000000..b543663883
--- /dev/null
+++ b/packages/houdini-svelte/src/plugin/storeConfig.ts
@@ -0,0 +1,29 @@
+import type { Config } from 'houdini'
+import path from 'node:path'
+
+export function stores_directory_name() {
+	return 'stores'
+}
+
+// the directory where we put all of the stores
+export function stores_directory(pluginRoot: string) {
+	return path.join(pluginRoot, stores_directory_name())
+}
+
+export function type_route_dir(config: Config) {
+	return path.join(config.typeRootDir, 'src', 'routes')
+}
+
+// the path that the runtime can use to import a store
+export function store_import_path({ config, name }: { config: Config; name: string }): string {
+	return `$houdini/plugins/houdini-svelte/${stores_directory_name()}/${name}`
+}
+
+export function store_suffix(config: Config) {
+	// if config changes, we might have more forbiddenNames to add in the validator
+	return 'Store'
+}
+
+export function store_name({ config, name }: { config: Config; name: string }) {
+	return name + store_suffix(config)
+}
diff --git a/packages/houdini-svelte/src/plugin/transforms/componentQuery.ts b/packages/houdini-svelte/src/plugin/transforms/componentQuery.ts
index 85d141c0b4..a04abcb019 100644
--- a/packages/houdini-svelte/src/plugin/transforms/componentQuery.ts
+++ b/packages/houdini-svelte/src/plugin/transforms/componentQuery.ts
@@ -12,8 +12,9 @@ import type { TransformPage } from 'houdini/vite'
 import { find_exported_fn, find_insert_index, ensure_imports } from 'houdini/vite'
 import * as recast from 'recast'
 
-import { is_component, store_import_path } from '../kit'
+import { is_component } from '../kit'
 import { query_variable_fn } from '../naming'
+import { store_import_path } from '../storeConfig'
 import type { SvelteTransformPage } from './types'
 
 const AST = recast.types.builders
diff --git a/packages/houdini-svelte/src/plugin/transforms/index.ts b/packages/houdini-svelte/src/plugin/transforms/index.ts
index df071394b4..ae3fa754cb 100644
--- a/packages/houdini-svelte/src/plugin/transforms/index.ts
+++ b/packages/houdini-svelte/src/plugin/transforms/index.ts
@@ -4,8 +4,9 @@ import type { TransformPage } from 'houdini/vite'
 import * as recast from 'recast'
 import type { SourceMapInput } from 'rollup'
 
+import { plugin_config } from '../config'
 import { parseSvelte } from '../extract'
-import { plugin_config, type Framework } from '../kit'
+import { type Framework } from '../kit'
 import query from './componentQuery'
 import kit from './kit'
 import tags from './tags'
diff --git a/packages/houdini-svelte/src/plugin/transforms/kit/load.ts b/packages/houdini-svelte/src/plugin/transforms/kit/load.ts
index 6912fb4e26..bd3f77ccdb 100644
--- a/packages/houdini-svelte/src/plugin/transforms/kit/load.ts
+++ b/packages/houdini-svelte/src/plugin/transforms/kit/load.ts
@@ -6,19 +6,17 @@ import { formatErrors, fs, TypeWrapper, unwrapType } from 'houdini'
 import { artifact_import, ensure_imports, find_insert_index } from 'houdini/vite'
 import * as recast from 'recast'
 
+import { plugin_config } from '../../config'
 import { parseSvelte } from '../../extract'
-import { extract_load_function } from '../../extractLoadFunction'
-import type { HoudiniRouteScript } from '../../kit'
+import { extract_load_function, type HoudiniRouteScript } from '../../extractLoadFunction'
 import {
 	is_layout,
 	is_route,
 	is_route_script,
 	layout_query_path,
 	page_query_path,
-	plugin_config,
 	route_data_path,
 	route_page_path,
-	store_import_path,
 } from '../../kit'
 import {
 	houdini_afterLoad_fn,
@@ -28,6 +26,7 @@ import {
 } from '../../naming'
 import type { RouteParam } from '../../routing'
 import { route_params } from '../../routing'
+import { store_import_path } from '../../storeConfig'
 import type { LoadTarget } from '../componentQuery'
 import { find_inline_queries } from '../componentQuery'
 import type { SvelteTransformPage } from '../types'
diff --git a/packages/houdini-svelte/src/plugin/validate.ts b/packages/houdini-svelte/src/plugin/validate.ts
index eaa0a50ef6..219bc94955 100644
--- a/packages/houdini-svelte/src/plugin/validate.ts
+++ b/packages/houdini-svelte/src/plugin/validate.ts
@@ -2,7 +2,7 @@ import * as graphql from 'graphql'
 import type { Config, Document } from 'houdini'
 import { HoudiniError, definitionFromAncestors } from 'houdini'
 
-import { store_name } from './kit'
+import { store_name } from './storeConfig'
 
 // const directivesErrors: HoudiniError[] = []
 
diff --git a/packages/houdini-svelte/src/runtime/stores/query.ts b/packages/houdini-svelte/src/runtime/stores/query.ts
index 983cb62ca0..e3dbfa5388 100644
--- a/packages/houdini-svelte/src/runtime/stores/query.ts
+++ b/packages/houdini-svelte/src/runtime/stores/query.ts
@@ -13,8 +13,8 @@ import { ArtifactKind, CachePolicy, CompiledQueryKind } from '$houdini/runtime/l
 import type { LoadEvent } from '@sveltejs/kit'
 import { get } from 'svelte/store'
 
-import type { HoudiniSvelteConfig } from '../../plugin'
 import type { PluginArtifactData } from '../../plugin/artifactData'
+import type { HoudiniSvelteConfig } from '../../plugin/config'
 import { clientStarted, isBrowser } from '../adapter'
 import { initClient } from '../client'
 import { getSession } from '../session'
diff --git a/packages/houdini-svelte/src/test/index.ts b/packages/houdini-svelte/src/test/index.ts
index 5e71294c1d..f956c5aad9 100644
--- a/packages/houdini-svelte/src/test/index.ts
+++ b/packages/houdini-svelte/src/test/index.ts
@@ -4,9 +4,10 @@ import { runPipeline } from 'houdini/codegen'
 import { mockCollectedDoc, testConfig } from 'houdini/test'
 
 import { pluginHooks } from '../plugin'
+import { plugin_config } from '../plugin/config'
 import { parseSvelte } from '../plugin/extract'
 import type { Framework } from '../plugin/kit'
-import { layout_query_path, page_query_path, plugin_config, route_data_path } from '../plugin/kit'
+import { layout_query_path, page_query_path, route_data_path } from '../plugin/kit'
 import runTransforms from '../plugin/transforms'
 
 const schema = `
diff --git a/packages/houdini/src/codegen/generators/runtime/index.ts b/packages/houdini/src/codegen/generators/runtime/index.ts
index 32919888e8..4f4f0461bc 100644
--- a/packages/houdini/src/codegen/generators/runtime/index.ts
+++ b/packages/houdini/src/codegen/generators/runtime/index.ts
@@ -1,10 +1,12 @@
-import { exportDefault, exportStarFrom, importDefaultFrom } from '../../../codegen/utils'
-import type { Config, Document } from '../../../lib'
-import { siteURL as SITE_URL, fs, path } from '../../../lib'
+import type { Config } from '../../../lib/config'
+import { siteURL as SITE_URL } from '../../../lib/constants'
+import * as fs from '../../../lib/fs'
+import * as path from '../../../lib/path'
+import type { Document } from '../../../lib/types'
 import generateGraphqlReturnTypes from './graphqlFunction'
 import injectPlugins from './injectPlugins'
 import { generatePluginIndex } from './pluginIndex'
-import { generatePluginRuntimes } from './pluginRuntime'
+import { generatePluginRuntimes, moduleStatments } from './pluginRuntime'
 import { injectConfig } from './runtimeConfig'
 
 export default async function runtimeGenerator(config: Config, docs: Document[]) {
@@ -51,24 +53,3 @@ ${exportStatement('config')}
 
 	await generateGraphqlReturnTypes(config, docs)
 }
-
-export function moduleStatments(config: Config) {
-	const importStatement =
-		config.module === 'commonjs'
-			? importDefaultFrom
-			: (where: string, as: string) => `import ${as} from '${where}'`
-
-	const exportDefaultStatement =
-		config.module === 'commonjs' ? exportDefault : (as: string) => `export default ${as}`
-
-	const exportStarStatement =
-		config.module === 'commonjs'
-			? exportStarFrom
-			: (where: string) => `export * from '${where}'`
-
-	return {
-		importStatement,
-		exportDefaultStatement,
-		exportStarStatement,
-	}
-}
diff --git a/packages/houdini/src/codegen/generators/runtime/pluginRuntime.ts b/packages/houdini/src/codegen/generators/runtime/pluginRuntime.ts
index b702698eec..8f134be32f 100644
--- a/packages/houdini/src/codegen/generators/runtime/pluginRuntime.ts
+++ b/packages/houdini/src/codegen/generators/runtime/pluginRuntime.ts
@@ -1,6 +1,31 @@
-import { moduleStatments } from '.'
-import type { Config, Document } from '../../../lib'
-import { fs, HoudiniError, path, houdini_mode } from '../../../lib'
+import { exportDefault, exportStarFrom, importDefaultFrom } from '../../../codegen/utils'
+import type { Config } from '../../../lib/config'
+import { houdini_mode } from '../../../lib/constants'
+import { HoudiniError } from '../../../lib/error'
+import * as fs from '../../../lib/fs'
+import * as path from '../../../lib/path'
+import type { Document } from '../../../lib/types'
+
+export function moduleStatments(config: Config) {
+	const importStatement =
+		config.module === 'commonjs'
+			? importDefaultFrom
+			: (where: string, as: string) => `import ${as} from '${where}'`
+
+	const exportDefaultStatement =
+		config.module === 'commonjs' ? exportDefault : (as: string) => `export default ${as}`
+
+	const exportStarStatement =
+		config.module === 'commonjs'
+			? exportStarFrom
+			: (where: string) => `export * from '${where}'`
+
+	return {
+		importStatement,
+		exportDefaultStatement,
+		exportStarStatement,
+	}
+}
 
 export async function generatePluginRuntimes({
 	config,
diff --git a/packages/houdini/src/lib/detectTools.ts b/packages/houdini/src/lib/detectTools.ts
index 2709cc9d53..186316cb7c 100644
--- a/packages/houdini/src/lib/detectTools.ts
+++ b/packages/houdini/src/lib/detectTools.ts
@@ -1,4 +1,5 @@
-import { fs, path } from '.'
+import * as fs from './fs'
+import * as path from './path'
 
 export type HoudiniFrameworkInfo =
 	| {
diff --git a/packages/houdini/src/lib/router/conventions.ts b/packages/houdini/src/lib/router/conventions.ts
index a06380b714..52c715c595 100644
--- a/packages/houdini/src/lib/router/conventions.ts
+++ b/packages/houdini/src/lib/router/conventions.ts
@@ -1,4 +1,6 @@
-import { path, fs, type Config } from '..'
+import type { Config } from '../config'
+import * as fs from '../fs'
+import * as path from '../path'
 
 /** The location of the project's router */
 export function router_path(config: Config) {
diff --git a/packages/houdini/src/lib/router/manifest.ts b/packages/houdini/src/lib/router/manifest.ts
index 0c4587f81e..c1d390e9c3 100644
--- a/packages/houdini/src/lib/router/manifest.ts
+++ b/packages/houdini/src/lib/router/manifest.ts
@@ -1,16 +1,13 @@
 import * as t from '@babel/types'
 import * as graphql from 'graphql'
 
-import {
-	path,
-	fs,
-	parseJS,
-	type Config,
-	type TypeWrapper,
-	unwrapType,
-	parse_page_pattern,
-} from '..'
 import type { ProjectManifest, PageManifest, QueryManifest } from '../../runtime/lib/types'
+import { parse_page_pattern } from '../../runtime/router/match'
+import type { Config } from '../config'
+import * as fs from '../fs'
+import { unwrapType, type TypeWrapper } from '../graphql'
+import { parseJS } from '../parse'
+import * as path from '../path'
 import {
 	read_layoutQuery,
 	read_layoutView,
diff --git a/packages/houdini/src/lib/router/server.ts b/packages/houdini/src/lib/router/server.ts
index 44911a1ef6..7d0a6351bb 100644
--- a/packages/houdini/src/lib/router/server.ts
+++ b/packages/houdini/src/lib/router/server.ts
@@ -1,9 +1,10 @@
 import * as graphql from 'graphql'
 import path from 'node:path'
 
-import { fs, routerConventions } from '..'
 import type { Config } from '../config'
+import * as fs from '../fs'
 import { localApiEndpoint, type ConfigFile } from '../types'
+import * as routerConventions from './conventions'
 
 export function isSecondaryBuild() {
 	return process.env.HOUDINI_SECONDARY_BUILD && process.env.HOUDINI_SECONDARY_BUILD !== 'false'
diff --git a/packages/houdini/src/lib/typescript.ts b/packages/houdini/src/lib/typescript.ts
index dd76d49f76..c45eeaf50e 100644
--- a/packages/houdini/src/lib/typescript.ts
+++ b/packages/houdini/src/lib/typescript.ts
@@ -2,8 +2,11 @@ import type { StatementKind, TSTypeKind } from 'ast-types/lib/gen/kinds'
 import * as graphql from 'graphql'
 import * as recast from 'recast'
 
-import { ensureImports, type Config, path, fs } from '.'
+import type { Config } from './config'
+import * as fs from './fs'
 import { unwrapType, TypeWrapper } from './graphql'
+import { ensureImports } from './imports'
+import * as path from './path'
 
 const AST = recast.types.builders
 
diff --git a/packages/plugin-svelte-global-stores/src/plugin/codegen/stores/fragment.ts b/packages/plugin-svelte-global-stores/src/plugin/codegen/stores/fragment.ts
index 3bc48c833c..d4d4e45481 100644
--- a/packages/plugin-svelte-global-stores/src/plugin/codegen/stores/fragment.ts
+++ b/packages/plugin-svelte-global-stores/src/plugin/codegen/stores/fragment.ts
@@ -1,7 +1,10 @@
 import type { Document, GenerateHookInput } from 'houdini'
 import { fs, path } from 'houdini'
 
-import { store_name, stores_directory_name } from '../../../../../houdini-svelte/src/plugin/kit'
+import {
+	store_name,
+	stores_directory_name,
+} from '../../../../../houdini-svelte/src/plugin/storeConfig'
 import { global_store_name, global_stores_directory } from '../../kit'
 
 export async function fragmentStore({ config, pluginRoot }: GenerateHookInput, doc: Document) {
diff --git a/packages/plugin-svelte-global-stores/src/plugin/codegen/stores/mutation.ts b/packages/plugin-svelte-global-stores/src/plugin/codegen/stores/mutation.ts
index 65762d3434..dfa6f5da39 100644
--- a/packages/plugin-svelte-global-stores/src/plugin/codegen/stores/mutation.ts
+++ b/packages/plugin-svelte-global-stores/src/plugin/codegen/stores/mutation.ts
@@ -1,7 +1,10 @@
 import type { Document, GenerateHookInput } from 'houdini'
 import { fs, path } from 'houdini'
 
-import { store_name, stores_directory_name } from '../../../../../houdini-svelte/src/plugin/kit'
+import {
+	store_name,
+	stores_directory_name,
+} from '../../../../../houdini-svelte/src/plugin/storeConfig'
 import { global_stores_directory, global_store_name } from '../../kit'
 
 // import { store_import } from './custom'
diff --git a/packages/plugin-svelte-global-stores/src/plugin/codegen/stores/query.ts b/packages/plugin-svelte-global-stores/src/plugin/codegen/stores/query.ts
index b708bb3fe1..c8933b5e8d 100644
--- a/packages/plugin-svelte-global-stores/src/plugin/codegen/stores/query.ts
+++ b/packages/plugin-svelte-global-stores/src/plugin/codegen/stores/query.ts
@@ -1,7 +1,10 @@
 import type { Document, GenerateHookInput } from 'houdini'
 import { fs, path } from 'houdini'
 
-import { store_name, stores_directory_name } from '../../../../../houdini-svelte/src/plugin/kit'
+import {
+	store_name,
+	stores_directory_name,
+} from '../../../../../houdini-svelte/src/plugin/storeConfig'
 import { global_stores_directory, global_store_name } from '../../kit'
 
 export async function queryStore({ config, pluginRoot }: GenerateHookInput, doc: Document) {
diff --git a/packages/plugin-svelte-global-stores/src/plugin/codegen/stores/subscription.ts b/packages/plugin-svelte-global-stores/src/plugin/codegen/stores/subscription.ts
index 72bd0fe6f3..1e4003d3b0 100644
--- a/packages/plugin-svelte-global-stores/src/plugin/codegen/stores/subscription.ts
+++ b/packages/plugin-svelte-global-stores/src/plugin/codegen/stores/subscription.ts
@@ -1,7 +1,10 @@
 import type { Document, GenerateHookInput } from 'houdini'
 import { fs, path } from 'houdini'
 
-import { stores_directory_name, store_name } from '../../../../../houdini-svelte/src/plugin/kit'
+import {
+	stores_directory_name,
+	store_name,
+} from '../../../../../houdini-svelte/src/plugin/storeConfig'
 import { global_stores_directory, global_store_name } from '../../kit'
 
 export async function subscriptionStore({ config, pluginRoot }: GenerateHookInput, doc: Document) {
diff --git a/packages/plugin-svelte-global-stores/src/plugin/index.ts b/packages/plugin-svelte-global-stores/src/plugin/index.ts
index 2a467ec360..b25d994c33 100644
--- a/packages/plugin-svelte-global-stores/src/plugin/index.ts
+++ b/packages/plugin-svelte-global-stores/src/plugin/index.ts
@@ -1,7 +1,7 @@
 import { plugin, type PluginHooks } from 'houdini'
 import { HoudiniError, path } from 'houdini'
 
-import { store_name } from '../../../houdini-svelte/src/plugin/kit'
+import { store_name } from '../../../houdini-svelte/src/plugin/storeConfig'
 import generate from './codegen'
 import { global_stores_directory, global_store_name } from './kit'
 
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 4dddcbb982..bf89c2982f 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -41,13 +41,13 @@ importers:
         version: 0.8.1(eslint@8.57.0)(typescript@4.9.4)
       '@trivago/prettier-plugin-sort-imports':
         specifier: ^4.0.0
-        version: 4.0.0(@vue/compiler-sfc@3.2.47)(prettier@2.8.3)
+        version: 4.0.0(@vue/compiler-sfc@3.5.13)(prettier@2.8.3)
       '@types/react':
         specifier: ^19.0.7
         version: 19.0.7
       '@vitest/coverage-v8':
         specifier: ^1.6.0
-        version: 1.6.0(vitest@1.6.0)
+        version: 1.6.0(vitest@1.6.0(@types/node@18.11.15)(@vitest/ui@1.6.0)(terser@5.16.1))
       '@vitest/ui':
         specifier: ^1.6.0
         version: 1.6.0(vitest@1.6.0)
@@ -60,6 +60,9 @@ importers:
       lint-staged:
         specifier: ^12.3.4
         version: 12.5.0(enquirer@2.3.6)
+      madge:
+        specifier: ^8.0.0
+        version: 8.0.0(typescript@4.9.4)
       prettier:
         specifier: ^2.8.3
         version: 2.8.3
@@ -377,7 +380,7 @@ importers:
         version: link:../_scripts
       tsup:
         specifier: ^7.2.0
-        version: 7.2.0(postcss@8.5.1)(typescript@5.5.4)
+        version: 7.2.0(postcss@8.5.1)(typescript@5.8.2)
 
   packages/adapter-cloudflare:
     dependencies:
@@ -393,7 +396,7 @@ importers:
         version: link:../_scripts
       tsup:
         specifier: ^7.2.0
-        version: 7.2.0(postcss@8.5.1)(typescript@5.5.4)
+        version: 7.2.0(postcss@8.5.1)(typescript@5.8.2)
 
   packages/adapter-node:
     dependencies:
@@ -406,7 +409,7 @@ importers:
         version: link:../_scripts
       tsup:
         specifier: ^7.2.0
-        version: 7.2.0(postcss@8.5.1)(typescript@5.5.4)
+        version: 7.2.0(postcss@8.5.1)(typescript@5.8.2)
 
   packages/adapter-static:
     dependencies:
@@ -550,7 +553,7 @@ importers:
         version: 7.24.6
       '@trivago/prettier-plugin-sort-imports':
         specifier: ^4.0.0
-        version: 4.0.0(@vue/compiler-sfc@3.2.47)(prettier@2.8.3)
+        version: 4.0.0(@vue/compiler-sfc@3.5.13)(prettier@2.8.3)
       '@types/glob':
         specifier: ^8.0.0
         version: 8.0.0
@@ -938,6 +941,10 @@ packages:
     resolution: {integrity: sha512-WdJjwMEkmBicq5T9fm/cHND3+UlFa2Yj8ALLgmoSQAJZysYbBjw+azChSGPN4DSPLXOcooGRvDwZWMcF/mLO2Q==}
     engines: {node: '>=6.9.0'}
 
+  '@babel/helper-string-parser@7.25.9':
+    resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==}
+    engines: {node: '>=6.9.0'}
+
   '@babel/helper-validator-identifier@7.19.1':
     resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==}
     engines: {node: '>=6.9.0'}
@@ -946,6 +953,10 @@ packages:
     resolution: {integrity: sha512-4yA7s865JHaqUdRbnaxarZREuPTHrjpDT+pXoAZ1yhyo6uFnIEpS8VMu16siFOHDpZNKYv5BObhsB//ycbICyw==}
     engines: {node: '>=6.9.0'}
 
+  '@babel/helper-validator-identifier@7.25.9':
+    resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==}
+    engines: {node: '>=6.9.0'}
+
   '@babel/helper-validator-option@7.21.0':
     resolution: {integrity: sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==}
     engines: {node: '>=6.9.0'}
@@ -973,6 +984,11 @@ packages:
     engines: {node: '>=6.0.0'}
     hasBin: true
 
+  '@babel/parser@7.26.10':
+    resolution: {integrity: sha512-6aQR2zGE/QFi8JpDLjUZEPYOs7+mhKXm86VaKFiLP35JQwQb6bwUE+XbvkH0EptsYhbNBSUGaUBLKqxH1xSgsA==}
+    engines: {node: '>=6.0.0'}
+    hasBin: true
+
   '@babel/plugin-syntax-async-generators@7.8.4':
     resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==}
     peerDependencies:
@@ -1090,6 +1106,10 @@ packages:
     resolution: {integrity: sha512-WaMsgi6Q8zMgMth93GvWPXkhAIEobfsIkLTacoVZoK1J0CevIPGYY2Vo5YvJGqyHqXM6P4ppOYGsIRU8MM9pFQ==}
     engines: {node: '>=6.9.0'}
 
+  '@babel/types@7.26.10':
+    resolution: {integrity: sha512-emqcG3vHrpxUKTrxcblR36dcrcoRDvKmnL/dCL6ZsHaShW80qxCAcNhzQZrpeM765VzEos+xOi4s+r4IXzTwdQ==}
+    engines: {node: '>=6.9.0'}
+
   '@bcoe/v8-coverage@0.2.3':
     resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==}
 
@@ -1209,6 +1229,10 @@ packages:
     resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==}
     engines: {node: '>=12'}
 
+  '@dependents/detective-less@5.0.1':
+    resolution: {integrity: sha512-Y6+WUMsTFWE5jb20IFP4YGa5IrGY/+a/FbOSjDF/wz9gepU2hwCYSXRHP/vPwBvwcY3SVMASt4yXxbXNXigmZQ==}
+    engines: {node: '>=18'}
+
   '@envelop/core@3.0.6':
     resolution: {integrity: sha512-06t1xCPXq6QFN7W1JUEf68aCwYN0OUDNAIoJe7bAqhaoa2vn7NCcuX1VHkJ/OWpmElUgCsRO6RiBbIru1in0Ig==}
 
@@ -2516,6 +2540,22 @@ packages:
       '@vue/compiler-sfc': 3.x
       prettier: 2.x
 
+  '@ts-graphviz/adapter@2.0.6':
+    resolution: {integrity: sha512-kJ10lIMSWMJkLkkCG5gt927SnGZcBuG0s0HHswGzcHTgvtUe7yk5/3zTEr0bafzsodsOq5Gi6FhQeV775nC35Q==}
+    engines: {node: '>=18'}
+
+  '@ts-graphviz/ast@2.0.7':
+    resolution: {integrity: sha512-e6+2qtNV99UT6DJSoLbHfkzfyqY84aIuoV8Xlb9+hZAjgpum8iVHprGeAMQ4rF6sKUAxrmY8rfF/vgAwoPc3gw==}
+    engines: {node: '>=18'}
+
+  '@ts-graphviz/common@2.1.5':
+    resolution: {integrity: sha512-S6/9+T6x8j6cr/gNhp+U2olwo1n0jKj/682QVqsh7yXWV6ednHYqxFw0ZsY3LyzT0N8jaZ6jQY9YD99le3cmvg==}
+    engines: {node: '>=18'}
+
+  '@ts-graphviz/core@2.0.7':
+    resolution: {integrity: sha512-w071DSzP94YfN6XiWhOxnLpYT3uqtxJBDYdh6Jdjzt+Ce6DNspJsPQgpC7rbts/B8tEkq0LHoYuIF/O5Jh5rPg==}
+    engines: {node: '>=18'}
+
   '@tsconfig/svelte@3.0.0':
     resolution: {integrity: sha512-pYrtLtOwku/7r1i9AMONsJMVYAtk3hzOfiGNekhtq5tYBGA7unMve8RvUclKLMT3PrihvJqUmzsRGh0RP84hKg==}
 
@@ -2821,6 +2861,10 @@ packages:
     resolution: {integrity: sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==}
     engines: {node: ^18.18.0 || >=20.0.0}
 
+  '@typescript-eslint/types@8.26.1':
+    resolution: {integrity: sha512-n4THUQW27VmQMx+3P+B0Yptl7ydfceUj4ON/AQILAASwgYdZ/2dhfymRMh5egRUrvK5lSmaOm77Ry+lmXPOgBQ==}
+    engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
   '@typescript-eslint/typescript-estree@5.50.0':
     resolution: {integrity: sha512-Gq4zapso+OtIZlv8YNAStFtT6d05zyVCK7Fx3h5inlLBx2hWuc/0465C2mg/EQDDU2LKe52+/jN4f0g9bd+kow==}
     engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@@ -2848,6 +2892,12 @@ packages:
       typescript:
         optional: true
 
+  '@typescript-eslint/typescript-estree@8.26.1':
+    resolution: {integrity: sha512-yUwPpUHDgdrv1QJ7YQal3cMVBGWfnuCdKbXw1yyjArax3353rEJP1ZA+4F8nOlQ3RfS2hUN/wze3nlY+ZOhvoA==}
+    engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+    peerDependencies:
+      typescript: '>=4.8.4 <5.9.0'
+
   '@typescript-eslint/utils@5.50.0':
     resolution: {integrity: sha512-v/AnUFImmh8G4PH0NDkf6wA8hujNNcrwtecqW4vtQ1UOSNBaZl49zP1SHoZ/06e+UiwzHpgb5zP5+hwlYYWYAw==}
     engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@@ -2878,6 +2928,10 @@ packages:
     resolution: {integrity: sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==}
     engines: {node: ^18.18.0 || >=20.0.0}
 
+  '@typescript-eslint/visitor-keys@8.26.1':
+    resolution: {integrity: sha512-AjOC3zfnxd6S4Eiy3jwktJPclqhFHNyd8L6Gycf9WUPoKZpgM5PjkxY1X7uSy61xVpiJDhhk7XT2NVsN3ALTWg==}
+    engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
   '@ungap/structured-clone@1.0.2':
     resolution: {integrity: sha512-06PHwE0K24Wi8FBmC8MuMi/+nQ3DTpcXYL3y/IaZz2ScY2GOJXOe8fyMykVXyLOKxpL2Y0frAnJZmm65OxzMLQ==}
 
@@ -2915,23 +2969,20 @@ packages:
   '@vitest/utils@1.6.0':
     resolution: {integrity: sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==}
 
-  '@vue/compiler-core@3.2.47':
-    resolution: {integrity: sha512-p4D7FDnQb7+YJmO2iPEv0SQNeNzcbHdGByJDsT4lynf63AFkOTFN07HsiRSvjGo0QrxR/o3d0hUyNCUnBU2Tig==}
-
-  '@vue/compiler-dom@3.2.47':
-    resolution: {integrity: sha512-dBBnEHEPoftUiS03a4ggEig74J2YBZ2UIeyfpcRM2tavgMWo4bsEfgCGsu+uJIL/vax9S+JztH8NmQerUo7shQ==}
+  '@vue/compiler-core@3.5.13':
+    resolution: {integrity: sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==}
 
-  '@vue/compiler-sfc@3.2.47':
-    resolution: {integrity: sha512-rog05W+2IFfxjMcFw10tM9+f7i/+FFpZJJ5XHX72NP9eC2uRD+42M3pYcQqDXVYoj74kHMSEdQ/WmCjt8JFksQ==}
+  '@vue/compiler-dom@3.5.13':
+    resolution: {integrity: sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==}
 
-  '@vue/compiler-ssr@3.2.47':
-    resolution: {integrity: sha512-wVXC+gszhulcMD8wpxMsqSOpvDZ6xKXSVWkf50Guf/S+28hTAXPDYRTbLQ3EDkOP5Xz/+SY37YiwDquKbJOgZw==}
+  '@vue/compiler-sfc@3.5.13':
+    resolution: {integrity: sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==}
 
-  '@vue/reactivity-transform@3.2.47':
-    resolution: {integrity: sha512-m8lGXw8rdnPVVIdIFhf0LeQ/ixyHkH5plYuS83yop5n7ggVJU+z5v0zecwEnX7fa7HNLBhh2qngJJkxpwEEmYA==}
+  '@vue/compiler-ssr@3.5.13':
+    resolution: {integrity: sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==}
 
-  '@vue/shared@3.2.47':
-    resolution: {integrity: sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ==}
+  '@vue/shared@3.5.13':
+    resolution: {integrity: sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==}
 
   '@whatwg-node/events@0.1.1':
     resolution: {integrity: sha512-AyQEn5hIPV7Ze+xFoXVU3QTHXVbWPrzaOkxtENMPMuNL6VVHrp4hHfDt9nrQpjO7BgvuM95dMtkycX5M/DZR3w==}
@@ -3036,6 +3087,9 @@ packages:
     resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
     engines: {node: '>= 8'}
 
+  app-module-path@2.2.0:
+    resolution: {integrity: sha512-gkco+qxENJV+8vFcDiiFhuoSvRXb2a/QPqpSoWhVz829VNJfOTnELbBmPmNKFxf3xdNnw4DWCkzkDaavcX/1YQ==}
+
   arg@5.0.2:
     resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==}
 
@@ -3114,6 +3168,10 @@ packages:
   assertion-error@1.1.0:
     resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==}
 
+  ast-module-types@6.0.1:
+    resolution: {integrity: sha512-WHw67kLXYbZuHTmcdbIrVArCq5wxo6NEuj3hiYAWr8mwJeC+C2mMCIBIWCiDoCye/OF/xelc+teJ1ERoWmnEIA==}
+    engines: {node: '>=18'}
+
   ast-types-flow@0.0.8:
     resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==}
 
@@ -3169,6 +3227,9 @@ packages:
   balanced-match@1.0.2:
     resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
 
+  base64-js@1.5.1:
+    resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
+
   better-path-resolve@1.0.0:
     resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==}
     engines: {node: '>=4'}
@@ -3177,6 +3238,9 @@ packages:
     resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
     engines: {node: '>=8'}
 
+  bl@4.1.0:
+    resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==}
+
   blake3-wasm@2.1.5:
     resolution: {integrity: sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==}
 
@@ -3219,6 +3283,9 @@ packages:
   buffer-from@1.1.2:
     resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
 
+  buffer@5.7.1:
+    resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==}
+
   builtin-modules@3.3.0:
     resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==}
     engines: {node: '>=6'}
@@ -3345,6 +3412,10 @@ packages:
     resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==}
     engines: {node: '>=8'}
 
+  cli-spinners@2.9.2:
+    resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==}
+    engines: {node: '>=6'}
+
   cli-truncate@2.1.0:
     resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==}
     engines: {node: '>=8'}
@@ -3387,6 +3458,10 @@ packages:
   colorette@2.0.19:
     resolution: {integrity: sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==}
 
+  commander@12.1.0:
+    resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==}
+    engines: {node: '>=18'}
+
   commander@2.20.3:
     resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==}
 
@@ -3759,6 +3834,10 @@ packages:
     resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==}
     engines: {node: '>=6'}
 
+  deep-extend@0.6.0:
+    resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==}
+    engines: {node: '>=4.0.0'}
+
   deep-is@0.1.4:
     resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
 
@@ -3795,6 +3874,11 @@ packages:
     resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==}
     engines: {node: '>= 0.8'}
 
+  dependency-tree@11.1.1:
+    resolution: {integrity: sha512-pnkCd8VGOq70EVaEQxDC9mZCjCwYj4yG4j8h+PEJswuWp+rdE6p8zbtVvWk+yPwaVimOjlhNi782U9K5KOU9MQ==}
+    engines: {node: '>=18'}
+    hasBin: true
+
   dequal@2.0.3:
     resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
     engines: {node: '>=6'}
@@ -3807,6 +3891,49 @@ packages:
     resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==}
     engines: {node: '>=8'}
 
+  detective-amd@6.0.1:
+    resolution: {integrity: sha512-TtyZ3OhwUoEEIhTFoc1C9IyJIud3y+xYkSRjmvCt65+ycQuc3VcBrPRTMWoO/AnuCyOB8T5gky+xf7Igxtjd3g==}
+    engines: {node: '>=18'}
+    hasBin: true
+
+  detective-cjs@6.0.1:
+    resolution: {integrity: sha512-tLTQsWvd2WMcmn/60T2inEJNhJoi7a//PQ7DwRKEj1yEeiQs4mrONgsUtEJKnZmrGWBBmE0kJ1vqOG/NAxwaJw==}
+    engines: {node: '>=18'}
+
+  detective-es6@5.0.1:
+    resolution: {integrity: sha512-XusTPuewnSUdoxRSx8OOI6xIA/uld/wMQwYsouvFN2LAg7HgP06NF1lHRV3x6BZxyL2Kkoih4ewcq8hcbGtwew==}
+    engines: {node: '>=18'}
+
+  detective-postcss@7.0.1:
+    resolution: {integrity: sha512-bEOVpHU9picRZux5XnwGsmCN4+8oZo7vSW0O0/Enq/TO5R2pIAP2279NsszpJR7ocnQt4WXU0+nnh/0JuK4KHQ==}
+    engines: {node: ^14.0.0 || >=16.0.0}
+    peerDependencies:
+      postcss: ^8.4.47
+
+  detective-sass@6.0.1:
+    resolution: {integrity: sha512-jSGPO8QDy7K7pztUmGC6aiHkexBQT4GIH+mBAL9ZyBmnUIOFbkfZnO8wPRRJFP/QP83irObgsZHCoDHZ173tRw==}
+    engines: {node: '>=18'}
+
+  detective-scss@5.0.1:
+    resolution: {integrity: sha512-MAyPYRgS6DCiS6n6AoSBJXLGVOydsr9huwXORUlJ37K3YLyiN0vYHpzs3AdJOgHobBfispokoqrEon9rbmKacg==}
+    engines: {node: '>=18'}
+
+  detective-stylus@5.0.1:
+    resolution: {integrity: sha512-Dgn0bUqdGbE3oZJ+WCKf8Dmu7VWLcmRJGc6RCzBgG31DLIyai9WAoEhYRgIHpt/BCRMrnXLbGWGPQuBUrnF0TA==}
+    engines: {node: '>=18'}
+
+  detective-typescript@14.0.0:
+    resolution: {integrity: sha512-pgN43/80MmWVSEi5LUuiVvO/0a9ss5V7fwVfrJ4QzAQRd3cwqU1SfWGXJFcNKUqoD5cS+uIovhw5t/0rSeC5Mw==}
+    engines: {node: '>=18'}
+    peerDependencies:
+      typescript: ^5.4.4
+
+  detective-vue2@2.2.0:
+    resolution: {integrity: sha512-sVg/t6O2z1zna8a/UIV6xL5KUa2cMTQbdTIIvqNM0NIPswp52fe43Nwmbahzj3ww4D844u/vC2PYfiGLvD3zFA==}
+    engines: {node: '>=18'}
+    peerDependencies:
+      typescript: ^5.4.4
+
   devalue@4.3.0:
     resolution: {integrity: sha512-n94yQo4LI3w7erwf84mhRUkUJfhLoCZiLyoOZ/QFsDbcWNZePrLwbQpvZBUG2TNxwV3VjCKPxkiiQA6pe3TrTA==}
 
@@ -3896,6 +4023,10 @@ packages:
     resolution: {integrity: sha512-4U5pNsuDl0EhuZpq46M5xPslstkviJuhrdobaRDBk2Jy2KO37FDAJl4lb2KlNabxT0m4MTK2UHNrsAcphE8nyw==}
     engines: {node: '>=10.13.0'}
 
+  enhanced-resolve@5.18.1:
+    resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==}
+    engines: {node: '>=10.13.0'}
+
   enquirer@2.3.6:
     resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==}
     engines: {node: '>=8.6'}
@@ -3903,6 +4034,10 @@ packages:
   entities@2.2.0:
     resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==}
 
+  entities@4.5.0:
+    resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
+    engines: {node: '>=0.12'}
+
   error-ex@1.3.2:
     resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==}
 
@@ -4139,6 +4274,11 @@ packages:
     resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
     engines: {node: '>=10'}
 
+  escodegen@2.1.0:
+    resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==}
+    engines: {node: '>=6.0'}
+    hasBin: true
+
   eslint-compat-utils@0.5.1:
     resolution: {integrity: sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==}
     engines: {node: '>=12'}
@@ -4344,6 +4484,10 @@ packages:
     resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
     engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
 
+  eslint-visitor-keys@4.2.0:
+    resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==}
+    engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
   eslint@8.33.0:
     resolution: {integrity: sha512-WjOpFQgKK8VrCnAtl8We0SUOy/oVZ5NHykyMiagV1M9r8IFpIJX7DduK6n1mpfhlG7T1NLWm2SuD8QB7KFySaA==}
     engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@@ -4515,6 +4659,11 @@ packages:
     resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
     engines: {node: ^10.12.0 || >=12.0.0}
 
+  filing-cabinet@5.0.3:
+    resolution: {integrity: sha512-PlPcMwVWg60NQkhvfoxZs4wEHjhlOO/y7OAm4sKM60o1Z9nttRY4mcdQxp/iZ+kg/Vv6Hw1OAaTbYVM9DA9pYg==}
+    engines: {node: '>=18'}
+    hasBin: true
+
   fill-range@7.0.1:
     resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
     engines: {node: '>=8'}
@@ -4629,6 +4778,10 @@ packages:
     resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
     engines: {node: '>=6.9.0'}
 
+  get-amd-module-type@6.0.1:
+    resolution: {integrity: sha512-MtjsmYiCXcYDDrGqtNbeIYdAl85n+5mSv2r3FbzER/YV3ZILw4HNNIw34HuV5pyl0jzs6GFYU1VHVEefhgcNHQ==}
+    engines: {node: '>=18'}
+
   get-caller-file@2.0.5:
     resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
     engines: {node: 6.* || 8.* || >= 10.*}
@@ -4643,6 +4796,9 @@ packages:
     resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==}
     engines: {node: '>= 0.4'}
 
+  get-own-enumerable-property-symbols@3.0.2:
+    resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==}
+
   get-package-type@0.1.0:
     resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==}
     engines: {node: '>=8.0.0'}
@@ -4732,6 +4888,11 @@ packages:
   globrex@0.1.2:
     resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==}
 
+  gonzales-pe@4.3.0:
+    resolution: {integrity: sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ==}
+    engines: {node: '>=0.6.0'}
+    hasBin: true
+
   gopd@1.0.1:
     resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==}
 
@@ -4880,6 +5041,9 @@ packages:
     resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==}
     engines: {node: '>=0.10.0'}
 
+  ieee754@1.2.1:
+    resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
+
   ignore@5.2.1:
     resolution: {integrity: sha512-d2qQLzTJ9WxQftPAuEQpSPmKqzxePjzVbpAVv62AQ64NTL+wR4JkrVqR/LqFsFEUsHDAiId52mJteHDFuDkElA==}
     engines: {node: '>= 4'}
@@ -4915,6 +5079,9 @@ packages:
   inherits@2.0.4:
     resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
 
+  ini@1.3.8:
+    resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==}
+
   ini@4.1.3:
     resolution: {integrity: sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==}
     engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
@@ -5001,6 +5168,10 @@ packages:
   is-core-module@2.13.1:
     resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==}
 
+  is-core-module@2.16.1:
+    resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==}
+    engines: {node: '>= 0.4'}
+
   is-data-view@1.0.1:
     resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==}
     engines: {node: '>= 0.4'}
@@ -5047,6 +5218,10 @@ packages:
   is-hexadecimal@2.0.1:
     resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==}
 
+  is-interactive@1.0.0:
+    resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==}
+    engines: {node: '>=8'}
+
   is-map@2.0.3:
     resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==}
     engines: {node: '>= 0.4'}
@@ -5074,6 +5249,10 @@ packages:
     resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
     engines: {node: '>=0.12.0'}
 
+  is-obj@1.0.1:
+    resolution: {integrity: sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==}
+    engines: {node: '>=0.10.0'}
+
   is-path-inside@3.0.3:
     resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
     engines: {node: '>=8'}
@@ -5099,6 +5278,10 @@ packages:
     resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==}
     engines: {node: '>= 0.4'}
 
+  is-regexp@1.0.0:
+    resolution: {integrity: sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==}
+    engines: {node: '>=0.10.0'}
+
   is-set@2.0.3:
     resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==}
     engines: {node: '>= 0.4'}
@@ -5138,6 +5321,17 @@ packages:
     resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==}
     engines: {node: '>= 0.4'}
 
+  is-unicode-supported@0.1.0:
+    resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==}
+    engines: {node: '>=10'}
+
+  is-url-superb@4.0.0:
+    resolution: {integrity: sha512-GI+WjezhPPcbM+tqE9LnmsY5qqjwHzTvjJ36wxYX5ujNXefSUJ/T17r5bqDV8yLhcgB59KTPNOc9O9cmHTPWsA==}
+    engines: {node: '>=10'}
+
+  is-url@1.2.4:
+    resolution: {integrity: sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==}
+
   is-weakmap@2.0.2:
     resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==}
     engines: {node: '>= 0.4'}
@@ -5423,6 +5617,10 @@ packages:
   lodash@4.17.21:
     resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
 
+  log-symbols@4.1.0:
+    resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==}
+    engines: {node: '>=10'}
+
   log-update@4.0.0:
     resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==}
     engines: {node: '>=10'}
@@ -5459,6 +5657,16 @@ packages:
     resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
     engines: {node: '>=10'}
 
+  madge@8.0.0:
+    resolution: {integrity: sha512-9sSsi3TBPhmkTCIpVQF0SPiChj1L7Rq9kU2KDG1o6v2XH9cCw086MopjVCD+vuoL5v8S77DTbVopTO8OUiQpIw==}
+    engines: {node: '>=18'}
+    hasBin: true
+    peerDependencies:
+      typescript: ^5.4.4
+    peerDependenciesMeta:
+      typescript:
+        optional: true
+
   magic-string@0.25.9:
     resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==}
 
@@ -5744,6 +5952,16 @@ packages:
   mlly@1.7.4:
     resolution: {integrity: sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==}
 
+  module-definition@6.0.1:
+    resolution: {integrity: sha512-FeVc50FTfVVQnolk/WQT8MX+2WVcDnTGiq6Wo+/+lJ2ET1bRVi3HG3YlJUfqagNMc/kUlFSoR96AJkxGpKz13g==}
+    engines: {node: '>=18'}
+    hasBin: true
+
+  module-lookup-amd@9.0.4:
+    resolution: {integrity: sha512-DWJEuLVvjxh5b8wrvJC5wr2a7qo7pOWXIgdCBNazU416kcIyzO4drxvlqKhsHzYwxcC4cWuhoK+MiWCKCGnv7A==}
+    engines: {node: '>=18'}
+    hasBin: true
+
   mri@1.2.0:
     resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==}
     engines: {node: '>=4'}
@@ -5826,6 +6044,10 @@ packages:
   node-releases@2.0.8:
     resolution: {integrity: sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==}
 
+  node-source-walk@7.0.1:
+    resolution: {integrity: sha512-3VW/8JpPqPvnJvseXowjZcirPisssnBuDikk6JIZ8jQzF7KJQX52iPFX4RYYxLycYH7IbMRSPUOga/esVjy5Yg==}
+    engines: {node: '>=18'}
+
   non-layered-tidy-tree-layout@2.0.2:
     resolution: {integrity: sha512-gkXMxRzUH+PB0ax9dUN0yYF0S25BqeAYqhgMaLUFmpXLEk7Fcu8f4emJuOAY0V8kjDICxROIKsTAKsV/v355xw==}
 
@@ -5956,6 +6178,10 @@ packages:
     resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
     engines: {node: '>= 0.8.0'}
 
+  ora@5.4.1:
+    resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==}
+    engines: {node: '>=10'}
+
   os-tmpdir@1.0.2:
     resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==}
     engines: {node: '>=0.10.0'}
@@ -6020,6 +6246,10 @@ packages:
     resolution: {integrity: sha512-SA5aMiaIjXkAiBrW/yPgLgQAQg42f7K3ACO+2l/zOvtQBwX58DMUsFJXelW2fx3yMBmWOVkR6j1MGsdSbCA4UA==}
     engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
 
+  parse-ms@2.1.0:
+    resolution: {integrity: sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==}
+    engines: {node: '>=6'}
+
   parse-package-name@1.0.0:
     resolution: {integrity: sha512-kBeTUtcj+SkyfaW4+KBe0HtsloBJ/mKTPoxpVdA57GZiPerREsUWJOhVj9anXweFiJkm5y8FG1sxFZkZ0SN6wg==}
 
@@ -6204,6 +6434,12 @@ packages:
   postcss-value-parser@4.2.0:
     resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
 
+  postcss-values-parser@6.0.2:
+    resolution: {integrity: sha512-YLJpK0N1brcNJrs9WatuJFtHaV9q5aAOj+S4DI5S7jgHlRfm0PIbDCAFRYMQD5SHq7Fy6xsDhyutgS0QOAs0qw==}
+    engines: {node: '>=10'}
+    peerDependencies:
+      postcss: ^8.2.9
+
   postcss@8.4.28:
     resolution: {integrity: sha512-Z7V5j0cq8oEKyejIKfpD8b4eBy9cwW2JWPk0+fB1HOAMsfHbnAXLLS+PfVWlzMSLQaWttKDt607I0XHmpE67Vw==}
     engines: {node: ^10 || ^12 || >=14}
@@ -6220,6 +6456,11 @@ packages:
     resolution: {integrity: sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ==}
     engines: {node: ^10 || ^12 || >=14}
 
+  precinct@12.2.0:
+    resolution: {integrity: sha512-NFBMuwIfaJ4SocE9YXPU/n4AcNSoFMVFjP72nvl3cx69j/ke61/hPOWFREVxLkFhhEGnA8ZuVfTqJBa+PK3b5w==}
+    engines: {node: '>=18'}
+    hasBin: true
+
   preferred-pm@3.0.3:
     resolution: {integrity: sha512-+wZgbxNES/KlJs9q40F/1sfOd/j7f1O9JaHcW5Dsn3aUUOZg3L2bjpVUcKV2jvtElYfoTuQiNeMfQJ4kwUAhCQ==}
     engines: {node: '>=10'}
@@ -6263,6 +6504,10 @@ packages:
     resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==}
     engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
 
+  pretty-ms@7.0.1:
+    resolution: {integrity: sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==}
+    engines: {node: '>=10'}
+
   printable-characters@1.0.42:
     resolution: {integrity: sha512-dKp+C4iXWK4vVYZmYSd0KBH5F/h1HoZRsbJ82AVKRO3PEo8L4lBS/vLwhVtpwwuYcoIsVY+1JYKR268yn480uQ==}
 
@@ -6331,6 +6576,9 @@ packages:
     resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==}
     engines: {node: '>=8'}
 
+  quote-unquote@1.0.0:
+    resolution: {integrity: sha512-twwRO/ilhlG/FIgYeKGFqyHhoEhqgnKVkcmqMKi2r524gz3ZbDTcyFt38E9xjJI2vT+KbRNHVbnJ/e0I25Azwg==}
+
   range-parser@1.2.1:
     resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==}
     engines: {node: '>= 0.6'}
@@ -6339,6 +6587,10 @@ packages:
     resolution: {integrity: sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==}
     engines: {node: '>= 0.8'}
 
+  rc@1.2.8:
+    resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==}
+    hasBin: true
+
   react-dom@19.0.0:
     resolution: {integrity: sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ==}
     peerDependencies:
@@ -6459,6 +6711,19 @@ packages:
   require-main-filename@2.0.0:
     resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==}
 
+  requirejs-config-file@4.0.0:
+    resolution: {integrity: sha512-jnIre8cbWOyvr8a5F2KuqBnY+SDA4NXr/hzEZJG79Mxm2WiFQz2dzhC8ibtPJS7zkmBEl1mxSwp5HhC1W4qpxw==}
+    engines: {node: '>=10.13.0'}
+
+  requirejs@2.3.7:
+    resolution: {integrity: sha512-DouTG8T1WanGok6Qjg2SXuCMzszOo0eHeH9hDZ5Y4x8Je+9JB38HdTLT4/VA8OaUhBa0JPVHJ0pyBkM1z+pDsw==}
+    engines: {node: '>=0.4.0'}
+    hasBin: true
+
+  resolve-dependency-path@4.0.1:
+    resolution: {integrity: sha512-YQftIIC4vzO9UMhO/sCgXukNyiwVRCVaxiWskCBy7Zpqkplm8kTAISZ8O1MoKW1ca6xzgLUBjZTcDgypXvXxiQ==}
+    engines: {node: '>=18'}
+
   resolve-from@4.0.0:
     resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
     engines: {node: '>=4'}
@@ -6474,6 +6739,11 @@ packages:
     resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==}
     hasBin: true
 
+  resolve@1.22.10:
+    resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==}
+    engines: {node: '>= 0.4'}
+    hasBin: true
+
   resolve@1.22.8:
     resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==}
     hasBin: true
@@ -6588,6 +6858,11 @@ packages:
   sander@0.5.1:
     resolution: {integrity: sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==}
 
+  sass-lookup@6.1.0:
+    resolution: {integrity: sha512-Zx+lVyoWqXZxHuYWlTA17Z5sczJ6braNT2C7rmClw+c4E7r/n911Zwss3h1uHI9reR5AgHZyNHF7c2+VIp5AUA==}
+    engines: {node: '>=18'}
+    hasBin: true
+
   scheduler@0.25.0:
     resolution: {integrity: sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==}
 
@@ -6804,6 +7079,9 @@ packages:
     resolution: {integrity: sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==}
     engines: {node: '>=4', npm: '>=6'}
 
+  stream-to-array@2.3.0:
+    resolution: {integrity: sha512-UsZtOYEn4tWU2RGLOXr/o/xjRBftZRlG3dEWoaHr8j4GuypJ3isitGbVyjQKAuMu+xbiop8q224TjiZWc4XTZA==}
+
   stream-transform@2.1.3:
     resolution: {integrity: sha512-9GHUiM5hMiCi6Y03jD2ARC1ettBXkQBoQAe7nJsPknnI0ow10aXjTnew8QtYQmLjzn974BnmWEAJgCY6ZP1DeQ==}
 
@@ -6861,6 +7139,10 @@ packages:
   stringify-entities@4.0.3:
     resolution: {integrity: sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==}
 
+  stringify-object@3.3.0:
+    resolution: {integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==}
+    engines: {node: '>=4'}
+
   strip-ansi@6.0.1:
     resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
     engines: {node: '>=8'}
@@ -6885,6 +7167,10 @@ packages:
     resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==}
     engines: {node: '>=8'}
 
+  strip-json-comments@2.0.1:
+    resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==}
+    engines: {node: '>=0.10.0'}
+
   strip-json-comments@3.1.1:
     resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
     engines: {node: '>=8'}
@@ -6895,6 +7181,11 @@ packages:
   stylis@4.1.3:
     resolution: {integrity: sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA==}
 
+  stylus-lookup@6.1.0:
+    resolution: {integrity: sha512-5QSwgxAzXPMN+yugy61C60PhoANdItfdjSEZR8siFwz7yL9jTmV0UBKDCfn3K8GkGB4g0Y9py7vTCX8rFu4/pQ==}
+    engines: {node: '>=18'}
+    hasBin: true
+
   sucrase@3.34.0:
     resolution: {integrity: sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==}
     engines: {node: '>=8'}
@@ -7194,16 +7485,30 @@ packages:
     peerDependencies:
       typescript: '>=4.2.0'
 
+  ts-api-utils@2.0.1:
+    resolution: {integrity: sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==}
+    engines: {node: '>=18.12'}
+    peerDependencies:
+      typescript: '>=4.8.4'
+
   ts-dedent@2.2.0:
     resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==}
     engines: {node: '>=6.10'}
 
+  ts-graphviz@2.1.6:
+    resolution: {integrity: sha512-XyLVuhBVvdJTJr2FJJV2L1pc4MwSjMhcunRVgDE9k4wbb2ee7ORYnPewxMWUav12vxyfUM686MSGsqnVRIInuw==}
+    engines: {node: '>=18'}
+
   ts-interface-checker@0.1.13:
     resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
 
   tsconfig-paths@3.15.0:
     resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==}
 
+  tsconfig-paths@4.2.0:
+    resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==}
+    engines: {node: '>=6'}
+
   tslib@1.14.1:
     resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
 
@@ -7362,6 +7667,11 @@ packages:
     engines: {node: '>=14.17'}
     hasBin: true
 
+  typescript@5.8.2:
+    resolution: {integrity: sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==}
+    engines: {node: '>=14.17'}
+    hasBin: true
+
   ufo@1.5.4:
     resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==}
 
@@ -7696,6 +8006,10 @@ packages:
   walk-up-path@3.0.1:
     resolution: {integrity: sha512-9YlCL/ynK3CTlrSRrDxZvUauLzAswPCrsaCgilqFevUYpeEW0/3ScEjaa3kbW/T0ghhkEr7mv+fpjqn1Y1YuTA==}
 
+  walkdir@0.4.1:
+    resolution: {integrity: sha512-3eBwRyEln6E1MSzcxcVpQIhRG8Q1jLvEqRmCZqS3dsfXEDR/AhOF4d+jHg1qvDCpYaVRZjENPQyrVxAkQqxPgQ==}
+    engines: {node: '>=6.0.0'}
+
   walker@1.0.8:
     resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==}
 
@@ -8082,10 +8396,14 @@ snapshots:
 
   '@babel/helper-string-parser@7.24.6': {}
 
+  '@babel/helper-string-parser@7.25.9': {}
+
   '@babel/helper-validator-identifier@7.19.1': {}
 
   '@babel/helper-validator-identifier@7.24.6': {}
 
+  '@babel/helper-validator-identifier@7.25.9': {}
+
   '@babel/helper-validator-option@7.21.0': {}
 
   '@babel/helpers@7.21.0':
@@ -8114,6 +8432,10 @@ snapshots:
     dependencies:
       '@babel/types': 7.24.6
 
+  '@babel/parser@7.26.10':
+    dependencies:
+      '@babel/types': 7.26.10
+
   '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.20.7)':
     dependencies:
       '@babel/core': 7.20.7
@@ -8248,7 +8570,7 @@ snapshots:
       '@babel/helper-split-export-declaration': 7.18.6
       '@babel/parser': 7.24.6
       '@babel/types': 7.24.6
-      debug: 4.3.7
+      debug: 4.4.0
       globals: 11.12.0
     transitivePeerDependencies:
       - supports-color
@@ -8264,6 +8586,11 @@ snapshots:
       '@babel/helper-validator-identifier': 7.24.6
       to-fast-properties: 2.0.0
 
+  '@babel/types@7.26.10':
+    dependencies:
+      '@babel/helper-string-parser': 7.25.9
+      '@babel/helper-validator-identifier': 7.25.9
+
   '@bcoe/v8-coverage@0.2.3': {}
 
   '@braintree/sanitize-url@6.0.2': {}
@@ -8472,6 +8799,11 @@ snapshots:
     dependencies:
       '@jridgewell/trace-mapping': 0.3.9
 
+  '@dependents/detective-less@5.0.1':
+    dependencies:
+      gonzales-pe: 4.3.0
+      node-source-walk: 7.0.1
+
   '@envelop/core@3.0.6':
     dependencies:
       '@envelop/types': 3.0.2
@@ -9424,7 +9756,7 @@ snapshots:
   '@sveltejs/vite-plugin-svelte-inspector@1.0.4(@sveltejs/vite-plugin-svelte@2.5.3(svelte@3.57.0)(vite@4.1.1(@types/node@18.11.15)(terser@5.16.1)))(svelte@3.57.0)(vite@4.1.1(@types/node@18.11.15)(terser@5.16.1))':
     dependencies:
       '@sveltejs/vite-plugin-svelte': 2.5.3(svelte@3.57.0)(vite@4.1.1(@types/node@18.11.15)(terser@5.16.1))
-      debug: 4.3.7
+      debug: 4.4.0
       svelte: 3.57.0
       vite: 4.1.1(@types/node@18.11.15)(terser@5.16.1)
     transitivePeerDependencies:
@@ -9526,20 +9858,35 @@ snapshots:
       - supports-color
       - typescript
 
-  '@trivago/prettier-plugin-sort-imports@4.0.0(@vue/compiler-sfc@3.2.47)(prettier@2.8.3)':
+  '@trivago/prettier-plugin-sort-imports@4.0.0(@vue/compiler-sfc@3.5.13)(prettier@2.8.3)':
     dependencies:
       '@babel/core': 7.17.8
       '@babel/generator': 7.17.7
       '@babel/parser': 7.18.9
       '@babel/traverse': 7.17.3
       '@babel/types': 7.17.0
-      '@vue/compiler-sfc': 3.2.47
+      '@vue/compiler-sfc': 3.5.13
       javascript-natural-sort: 0.7.1
       lodash: 4.17.21
       prettier: 2.8.3
     transitivePeerDependencies:
       - supports-color
 
+  '@ts-graphviz/adapter@2.0.6':
+    dependencies:
+      '@ts-graphviz/common': 2.1.5
+
+  '@ts-graphviz/ast@2.0.7':
+    dependencies:
+      '@ts-graphviz/common': 2.1.5
+
+  '@ts-graphviz/common@2.1.5': {}
+
+  '@ts-graphviz/core@2.0.7':
+    dependencies:
+      '@ts-graphviz/ast': 2.0.7
+      '@ts-graphviz/common': 2.1.5
+
   '@tsconfig/svelte@3.0.0': {}
 
   '@types/acorn@4.0.6':
@@ -9878,7 +10225,7 @@ snapshots:
     dependencies:
       '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.4)
       '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@4.9.4)
-      debug: 4.3.7
+      debug: 4.4.0
       eslint: 8.57.0
       tsutils: 3.21.0(typescript@4.9.4)
     optionalDependencies:
@@ -9917,6 +10264,8 @@ snapshots:
 
   '@typescript-eslint/types@7.18.0': {}
 
+  '@typescript-eslint/types@8.26.1': {}
+
   '@typescript-eslint/typescript-estree@5.50.0(typescript@4.9.4)':
     dependencies:
       '@typescript-eslint/types': 5.50.0
@@ -9935,7 +10284,7 @@ snapshots:
     dependencies:
       '@typescript-eslint/types': 5.62.0
       '@typescript-eslint/visitor-keys': 5.62.0
-      debug: 4.3.7
+      debug: 4.4.0
       globby: 11.1.0
       is-glob: 4.0.3
       semver: 7.6.3
@@ -9976,6 +10325,20 @@ snapshots:
     transitivePeerDependencies:
       - supports-color
 
+  '@typescript-eslint/typescript-estree@8.26.1(typescript@5.8.2)':
+    dependencies:
+      '@typescript-eslint/types': 8.26.1
+      '@typescript-eslint/visitor-keys': 8.26.1
+      debug: 4.4.0
+      fast-glob: 3.3.2
+      is-glob: 4.0.3
+      minimatch: 9.0.4
+      semver: 7.6.3
+      ts-api-utils: 2.0.1(typescript@5.8.2)
+      typescript: 5.8.2
+    transitivePeerDependencies:
+      - supports-color
+
   '@typescript-eslint/utils@5.50.0(eslint@8.33.0)(typescript@4.9.4)':
     dependencies:
       '@types/json-schema': 7.0.11
@@ -10044,6 +10407,11 @@ snapshots:
       '@typescript-eslint/types': 7.18.0
       eslint-visitor-keys: 3.4.3
 
+  '@typescript-eslint/visitor-keys@8.26.1':
+    dependencies:
+      '@typescript-eslint/types': 8.26.1
+      eslint-visitor-keys: 4.2.0
+
   '@ungap/structured-clone@1.0.2': {}
 
   '@ungap/structured-clone@1.2.0': {}
@@ -10059,7 +10427,7 @@ snapshots:
     transitivePeerDependencies:
       - supports-color
 
-  '@vitest/coverage-v8@1.6.0(vitest@1.6.0)':
+  '@vitest/coverage-v8@1.6.0(vitest@1.6.0(@types/node@18.11.15)(@vitest/ui@1.6.0)(terser@5.16.1))':
     dependencies:
       '@ampproject/remapping': 2.2.1
       '@bcoe/v8-coverage': 0.2.3
@@ -10118,45 +10486,37 @@ snapshots:
       loupe: 2.3.7
       pretty-format: 29.7.0
 
-  '@vue/compiler-core@3.2.47':
+  '@vue/compiler-core@3.5.13':
     dependencies:
-      '@babel/parser': 7.24.6
-      '@vue/shared': 3.2.47
+      '@babel/parser': 7.26.10
+      '@vue/shared': 3.5.13
+      entities: 4.5.0
       estree-walker: 2.0.2
-      source-map: 0.6.1
+      source-map-js: 1.2.1
 
-  '@vue/compiler-dom@3.2.47':
+  '@vue/compiler-dom@3.5.13':
     dependencies:
-      '@vue/compiler-core': 3.2.47
-      '@vue/shared': 3.2.47
+      '@vue/compiler-core': 3.5.13
+      '@vue/shared': 3.5.13
 
-  '@vue/compiler-sfc@3.2.47':
+  '@vue/compiler-sfc@3.5.13':
     dependencies:
-      '@babel/parser': 7.24.6
-      '@vue/compiler-core': 3.2.47
-      '@vue/compiler-dom': 3.2.47
-      '@vue/compiler-ssr': 3.2.47
-      '@vue/reactivity-transform': 3.2.47
-      '@vue/shared': 3.2.47
+      '@babel/parser': 7.26.10
+      '@vue/compiler-core': 3.5.13
+      '@vue/compiler-dom': 3.5.13
+      '@vue/compiler-ssr': 3.5.13
+      '@vue/shared': 3.5.13
       estree-walker: 2.0.2
-      magic-string: 0.25.9
+      magic-string: 0.30.17
       postcss: 8.5.1
-      source-map: 0.6.1
-
-  '@vue/compiler-ssr@3.2.47':
-    dependencies:
-      '@vue/compiler-dom': 3.2.47
-      '@vue/shared': 3.2.47
+      source-map-js: 1.2.1
 
-  '@vue/reactivity-transform@3.2.47':
+  '@vue/compiler-ssr@3.5.13':
     dependencies:
-      '@babel/parser': 7.24.6
-      '@vue/compiler-core': 3.2.47
-      '@vue/shared': 3.2.47
-      estree-walker: 2.0.2
-      magic-string: 0.25.9
+      '@vue/compiler-dom': 3.5.13
+      '@vue/shared': 3.5.13
 
-  '@vue/shared@3.2.47': {}
+  '@vue/shared@3.5.13': {}
 
   '@whatwg-node/events@0.1.1': {}
 
@@ -10250,6 +10610,8 @@ snapshots:
       normalize-path: 3.0.0
       picomatch: 2.3.1
 
+  app-module-path@2.2.0: {}
+
   arg@5.0.2: {}
 
   argparse@1.0.10:
@@ -10373,6 +10735,8 @@ snapshots:
 
   assertion-error@1.1.0: {}
 
+  ast-module-types@6.0.1: {}
+
   ast-types-flow@0.0.8: {}
 
   ast-types@0.16.1:
@@ -10437,12 +10801,20 @@ snapshots:
 
   balanced-match@1.0.2: {}
 
+  base64-js@1.5.1: {}
+
   better-path-resolve@1.0.0:
     dependencies:
       is-windows: 1.0.2
 
   binary-extensions@2.2.0: {}
 
+  bl@4.1.0:
+    dependencies:
+      buffer: 5.7.1
+      inherits: 2.0.4
+      readable-stream: 3.6.2
+
   blake3-wasm@2.1.5: {}
 
   body-parser@1.20.1:
@@ -10503,6 +10875,11 @@ snapshots:
 
   buffer-from@1.1.2: {}
 
+  buffer@5.7.1:
+    dependencies:
+      base64-js: 1.5.1
+      ieee754: 1.2.1
+
   builtin-modules@3.3.0: {}
 
   builtins@5.0.1:
@@ -10629,6 +11006,8 @@ snapshots:
     dependencies:
       restore-cursor: 3.1.0
 
+  cli-spinners@2.9.2: {}
+
   cli-truncate@2.1.0:
     dependencies:
       slice-ansi: 3.0.0
@@ -10675,6 +11054,8 @@ snapshots:
 
   colorette@2.0.19: {}
 
+  commander@12.1.0: {}
+
   commander@2.20.3: {}
 
   commander@4.1.1: {}
@@ -11049,6 +11430,8 @@ snapshots:
     dependencies:
       type-detect: 4.0.8
 
+  deep-extend@0.6.0: {}
+
   deep-is@0.1.4: {}
 
   deepmerge@4.2.2: {}
@@ -11085,12 +11468,77 @@ snapshots:
 
   depd@2.0.0: {}
 
+  dependency-tree@11.1.1:
+    dependencies:
+      commander: 12.1.0
+      filing-cabinet: 5.0.3
+      precinct: 12.2.0
+      typescript: 5.8.2
+    transitivePeerDependencies:
+      - supports-color
+
   dequal@2.0.3: {}
 
   destroy@1.2.0: {}
 
   detect-indent@6.1.0: {}
 
+  detective-amd@6.0.1:
+    dependencies:
+      ast-module-types: 6.0.1
+      escodegen: 2.1.0
+      get-amd-module-type: 6.0.1
+      node-source-walk: 7.0.1
+
+  detective-cjs@6.0.1:
+    dependencies:
+      ast-module-types: 6.0.1
+      node-source-walk: 7.0.1
+
+  detective-es6@5.0.1:
+    dependencies:
+      node-source-walk: 7.0.1
+
+  detective-postcss@7.0.1(postcss@8.5.1):
+    dependencies:
+      is-url: 1.2.4
+      postcss: 8.5.1
+      postcss-values-parser: 6.0.2(postcss@8.5.1)
+
+  detective-sass@6.0.1:
+    dependencies:
+      gonzales-pe: 4.3.0
+      node-source-walk: 7.0.1
+
+  detective-scss@5.0.1:
+    dependencies:
+      gonzales-pe: 4.3.0
+      node-source-walk: 7.0.1
+
+  detective-stylus@5.0.1: {}
+
+  detective-typescript@14.0.0(typescript@5.8.2):
+    dependencies:
+      '@typescript-eslint/typescript-estree': 8.26.1(typescript@5.8.2)
+      ast-module-types: 6.0.1
+      node-source-walk: 7.0.1
+      typescript: 5.8.2
+    transitivePeerDependencies:
+      - supports-color
+
+  detective-vue2@2.2.0(typescript@5.8.2):
+    dependencies:
+      '@dependents/detective-less': 5.0.1
+      '@vue/compiler-sfc': 3.5.13
+      detective-es6: 5.0.1
+      detective-sass: 6.0.1
+      detective-scss: 5.0.1
+      detective-stylus: 5.0.1
+      detective-typescript: 14.0.0(typescript@5.8.2)
+      typescript: 5.8.2
+    transitivePeerDependencies:
+      - supports-color
+
   devalue@4.3.0: {}
 
   devalue@5.1.1: {}
@@ -11162,12 +11610,19 @@ snapshots:
       graceful-fs: 4.2.10
       tapable: 2.2.1
 
+  enhanced-resolve@5.18.1:
+    dependencies:
+      graceful-fs: 4.2.10
+      tapable: 2.2.1
+
   enquirer@2.3.6:
     dependencies:
       ansi-colors: 4.1.3
 
   entities@2.2.0: {}
 
+  entities@4.5.0: {}
+
   error-ex@1.3.2:
     dependencies:
       is-arrayish: 0.2.1
@@ -11584,6 +12039,14 @@ snapshots:
 
   escape-string-regexp@4.0.0: {}
 
+  escodegen@2.1.0:
+    dependencies:
+      esprima: 4.0.1
+      estraverse: 5.3.0
+      esutils: 2.0.3
+    optionalDependencies:
+      source-map: 0.6.1
+
   eslint-compat-utils@0.5.1(eslint@8.57.0):
     dependencies:
       eslint: 8.57.0
@@ -11614,7 +12077,7 @@ snapshots:
       debug: 4.3.7
       enhanced-resolve: 5.16.1
       eslint: 8.57.0
-      eslint-module-utils: 2.8.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@4.9.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0)
+      eslint-module-utils: 2.8.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@4.9.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@4.9.4))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0)
       eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@4.9.4))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0)
       fast-glob: 3.3.2
       get-tsconfig: 4.7.5
@@ -11646,7 +12109,7 @@ snapshots:
     transitivePeerDependencies:
       - supports-color
 
-  eslint-module-utils@2.8.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@4.9.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0):
+  eslint-module-utils@2.8.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@4.9.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@4.9.4))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0):
     dependencies:
       debug: 3.2.7
     optionalDependencies:
@@ -11673,7 +12136,7 @@ snapshots:
       doctrine: 2.1.0
       eslint: 8.57.0
       eslint-import-resolver-node: 0.3.9
-      eslint-module-utils: 2.8.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@4.9.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0)
+      eslint-module-utils: 2.8.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@4.9.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@4.9.4))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0)
       hasown: 2.0.2
       is-core-module: 2.13.1
       is-glob: 4.0.3
@@ -11889,6 +12352,8 @@ snapshots:
 
   eslint-visitor-keys@3.4.3: {}
 
+  eslint-visitor-keys@4.2.0: {}
+
   eslint@8.33.0:
     dependencies:
       '@eslint/eslintrc': 1.4.1
@@ -12205,6 +12670,20 @@ snapshots:
     dependencies:
       flat-cache: 3.0.4
 
+  filing-cabinet@5.0.3:
+    dependencies:
+      app-module-path: 2.2.0
+      commander: 12.1.0
+      enhanced-resolve: 5.18.1
+      module-definition: 6.0.1
+      module-lookup-amd: 9.0.4
+      resolve: 1.22.10
+      resolve-dependency-path: 4.0.1
+      sass-lookup: 6.1.0
+      stylus-lookup: 6.1.0
+      tsconfig-paths: 4.2.0
+      typescript: 5.8.2
+
   fill-range@7.0.1:
     dependencies:
       to-regex-range: 5.0.1
@@ -12328,6 +12807,11 @@ snapshots:
 
   gensync@1.0.0-beta.2: {}
 
+  get-amd-module-type@6.0.1:
+    dependencies:
+      ast-module-types: 6.0.1
+      node-source-walk: 7.0.1
+
   get-caller-file@2.0.5: {}
 
   get-func-name@2.0.2: {}
@@ -12347,6 +12831,8 @@ snapshots:
       has-symbols: 1.0.3
       hasown: 2.0.2
 
+  get-own-enumerable-property-symbols@3.0.2: {}
+
   get-package-type@0.1.0: {}
 
   get-source@2.0.12:
@@ -12455,6 +12941,10 @@ snapshots:
 
   globrex@0.1.2: {}
 
+  gonzales-pe@4.3.0:
+    dependencies:
+      minimist: 1.2.7
+
   gopd@1.0.1:
     dependencies:
       get-intrinsic: 1.2.1
@@ -12586,6 +13076,8 @@ snapshots:
     dependencies:
       safer-buffer: 2.1.2
 
+  ieee754@1.2.1: {}
+
   ignore@5.2.1: {}
 
   ignore@5.3.1: {}
@@ -12612,6 +13104,8 @@ snapshots:
 
   inherits@2.0.4: {}
 
+  ini@1.3.8: {}
+
   ini@4.1.3: {}
 
   internal-slot@1.0.5:
@@ -12703,6 +13197,10 @@ snapshots:
     dependencies:
       hasown: 2.0.2
 
+  is-core-module@2.16.1:
+    dependencies:
+      hasown: 2.0.2
+
   is-data-view@1.0.1:
     dependencies:
       is-typed-array: 1.1.13
@@ -12739,6 +13237,8 @@ snapshots:
 
   is-hexadecimal@2.0.1: {}
 
+  is-interactive@1.0.0: {}
+
   is-map@2.0.3: {}
 
   is-module@1.0.0: {}
@@ -12758,6 +13258,8 @@ snapshots:
 
   is-number@7.0.0: {}
 
+  is-obj@1.0.1: {}
+
   is-path-inside@3.0.3: {}
 
   is-plain-obj@1.1.0: {}
@@ -12781,6 +13283,8 @@ snapshots:
       call-bind: 1.0.2
       has-tostringtag: 1.0.0
 
+  is-regexp@1.0.0: {}
+
   is-set@2.0.3: {}
 
   is-shared-array-buffer@1.0.2:
@@ -12815,6 +13319,12 @@ snapshots:
     dependencies:
       which-typed-array: 1.1.15
 
+  is-unicode-supported@0.1.0: {}
+
+  is-url-superb@4.0.0: {}
+
+  is-url@1.2.4: {}
+
   is-weakmap@2.0.2: {}
 
   is-weakref@1.0.2:
@@ -13151,6 +13661,11 @@ snapshots:
 
   lodash@4.17.21: {}
 
+  log-symbols@4.1.0:
+    dependencies:
+      chalk: 4.1.2
+      is-unicode-supported: 0.1.0
+
   log-update@4.0.0:
     dependencies:
       ansi-escapes: 4.3.2
@@ -13187,6 +13702,25 @@ snapshots:
     dependencies:
       yallist: 4.0.0
 
+  madge@8.0.0(typescript@4.9.4):
+    dependencies:
+      chalk: 4.1.2
+      commander: 7.2.0
+      commondir: 1.0.1
+      debug: 4.4.0
+      dependency-tree: 11.1.1
+      ora: 5.4.1
+      pluralize: 8.0.0
+      pretty-ms: 7.0.1
+      rc: 1.2.8
+      stream-to-array: 2.3.0
+      ts-graphviz: 2.1.6
+      walkdir: 0.4.1
+    optionalDependencies:
+      typescript: 4.9.4
+    transitivePeerDependencies:
+      - supports-color
+
   magic-string@0.25.9:
     dependencies:
       sourcemap-codec: 1.4.8
@@ -13588,7 +14122,7 @@ snapshots:
 
   micromark@2.11.4:
     dependencies:
-      debug: 4.3.7
+      debug: 4.4.0
       parse-entities: 2.0.0
     transitivePeerDependencies:
       - supports-color
@@ -13596,7 +14130,7 @@ snapshots:
   micromark@3.2.0:
     dependencies:
       '@types/debug': 4.1.7
-      debug: 4.3.7
+      debug: 4.4.0
       decode-named-character-reference: 1.0.2
       micromark-core-commonmark: 1.1.0
       micromark-factory-space: 1.1.0
@@ -13703,6 +14237,18 @@ snapshots:
       pkg-types: 1.3.1
       ufo: 1.5.4
 
+  module-definition@6.0.1:
+    dependencies:
+      ast-module-types: 6.0.1
+      node-source-walk: 7.0.1
+
+  module-lookup-amd@9.0.4:
+    dependencies:
+      commander: 12.1.0
+      glob: 7.2.3
+      requirejs: 2.3.7
+      requirejs-config-file: 4.0.0
+
   mri@1.2.0: {}
 
   mrmime@1.0.1: {}
@@ -13758,6 +14304,10 @@ snapshots:
 
   node-releases@2.0.8: {}
 
+  node-source-walk@7.0.1:
+    dependencies:
+      '@babel/parser': 7.26.10
+
   non-layered-tidy-tree-layout@2.0.2: {}
 
   nopt@7.2.1:
@@ -13906,6 +14456,18 @@ snapshots:
       type-check: 0.4.0
       word-wrap: 1.2.5
 
+  ora@5.4.1:
+    dependencies:
+      bl: 4.1.0
+      chalk: 4.1.2
+      cli-cursor: 3.1.0
+      cli-spinners: 2.9.2
+      is-interactive: 1.0.0
+      is-unicode-supported: 0.1.0
+      log-symbols: 4.1.0
+      strip-ansi: 6.0.1
+      wcwidth: 1.0.1
+
   os-tmpdir@1.0.2: {}
 
   outdent@0.5.0: {}
@@ -13982,6 +14544,8 @@ snapshots:
       json-parse-even-better-errors: 2.3.1
       lines-and-columns: 2.0.4
 
+  parse-ms@2.1.0: {}
+
   parse-package-name@1.0.0: {}
 
   parseurl@1.3.3: {}
@@ -14132,6 +14696,13 @@ snapshots:
 
   postcss-value-parser@4.2.0: {}
 
+  postcss-values-parser@6.0.2(postcss@8.5.1):
+    dependencies:
+      color-name: 1.1.4
+      is-url-superb: 4.0.0
+      postcss: 8.5.1
+      quote-unquote: 1.0.0
+
   postcss@8.4.28:
     dependencies:
       nanoid: 3.3.6
@@ -14156,6 +14727,26 @@ snapshots:
       picocolors: 1.1.1
       source-map-js: 1.2.1
 
+  precinct@12.2.0:
+    dependencies:
+      '@dependents/detective-less': 5.0.1
+      commander: 12.1.0
+      detective-amd: 6.0.1
+      detective-cjs: 6.0.1
+      detective-es6: 5.0.1
+      detective-postcss: 7.0.1(postcss@8.5.1)
+      detective-sass: 6.0.1
+      detective-scss: 5.0.1
+      detective-stylus: 5.0.1
+      detective-typescript: 14.0.0(typescript@5.8.2)
+      detective-vue2: 2.2.0(typescript@5.8.2)
+      module-definition: 6.0.1
+      node-source-walk: 7.0.1
+      postcss: 8.5.1
+      typescript: 5.8.2
+    transitivePeerDependencies:
+      - supports-color
+
   preferred-pm@3.0.3:
     dependencies:
       find-up: 5.0.0
@@ -14198,6 +14789,10 @@ snapshots:
       ansi-styles: 5.2.0
       react-is: 18.2.0
 
+  pretty-ms@7.0.1:
+    dependencies:
+      parse-ms: 2.1.0
+
   printable-characters@1.0.42: {}
 
   prism-svelte@0.4.7: {}
@@ -14265,6 +14860,8 @@ snapshots:
 
   quick-lru@4.0.1: {}
 
+  quote-unquote@1.0.0: {}
+
   range-parser@1.2.1: {}
 
   raw-body@2.5.1:
@@ -14274,6 +14871,13 @@ snapshots:
       iconv-lite: 0.4.24
       unpipe: 1.0.0
 
+  rc@1.2.8:
+    dependencies:
+      deep-extend: 0.6.0
+      ini: 1.3.8
+      minimist: 1.2.7
+      strip-json-comments: 2.0.1
+
   react-dom@19.0.0(react@19.0.0):
     dependencies:
       react: 19.0.0
@@ -14444,6 +15048,15 @@ snapshots:
 
   require-main-filename@2.0.0: {}
 
+  requirejs-config-file@4.0.0:
+    dependencies:
+      esprima: 4.0.1
+      stringify-object: 3.3.0
+
+  requirejs@2.3.7: {}
+
+  resolve-dependency-path@4.0.1: {}
+
   resolve-from@4.0.0: {}
 
   resolve-from@5.0.0: {}
@@ -14456,6 +15069,12 @@ snapshots:
       path-parse: 1.0.7
       supports-preserve-symlinks-flag: 1.0.0
 
+  resolve@1.22.10:
+    dependencies:
+      is-core-module: 2.16.1
+      path-parse: 1.0.7
+      supports-preserve-symlinks-flag: 1.0.0
+
   resolve@1.22.8:
     dependencies:
       is-core-module: 2.13.0
@@ -14627,6 +15246,11 @@ snapshots:
       mkdirp: 0.5.6
       rimraf: 2.7.1
 
+  sass-lookup@6.1.0:
+    dependencies:
+      commander: 12.1.0
+      enhanced-resolve: 5.18.1
+
   scheduler@0.25.0: {}
 
   semver@5.7.1: {}
@@ -14858,6 +15482,10 @@ snapshots:
 
   stoppable@1.1.0: {}
 
+  stream-to-array@2.3.0:
+    dependencies:
+      any-promise: 1.3.0
+
   stream-transform@2.1.3:
     dependencies:
       mixme: 0.5.4
@@ -14945,6 +15573,12 @@ snapshots:
       character-entities-html4: 2.1.0
       character-entities-legacy: 3.0.0
 
+  stringify-object@3.3.0:
+    dependencies:
+      get-own-enumerable-property-symbols: 3.0.2
+      is-obj: 1.0.1
+      is-regexp: 1.0.0
+
   strip-ansi@6.0.1:
     dependencies:
       ansi-regex: 5.0.1
@@ -14963,6 +15597,8 @@ snapshots:
     dependencies:
       min-indent: 1.0.1
 
+  strip-json-comments@2.0.1: {}
+
   strip-json-comments@3.1.1: {}
 
   strip-literal@2.1.0:
@@ -14971,6 +15607,10 @@ snapshots:
 
   stylis@4.1.3: {}
 
+  stylus-lookup@6.1.0:
+    dependencies:
+      commander: 12.1.0
+
   sucrase@3.34.0:
     dependencies:
       '@jridgewell/gen-mapping': 0.3.2
@@ -15311,8 +15951,19 @@ snapshots:
     dependencies:
       typescript: 5.4.2
 
+  ts-api-utils@2.0.1(typescript@5.8.2):
+    dependencies:
+      typescript: 5.8.2
+
   ts-dedent@2.2.0: {}
 
+  ts-graphviz@2.1.6:
+    dependencies:
+      '@ts-graphviz/adapter': 2.0.6
+      '@ts-graphviz/ast': 2.0.7
+      '@ts-graphviz/common': 2.1.5
+      '@ts-graphviz/core': 2.0.7
+
   ts-interface-checker@0.1.13: {}
 
   tsconfig-paths@3.15.0:
@@ -15322,6 +15973,12 @@ snapshots:
       minimist: 1.2.7
       strip-bom: 3.0.0
 
+  tsconfig-paths@4.2.0:
+    dependencies:
+      json5: 2.2.2
+      minimist: 1.2.7
+      strip-bom: 3.0.0
+
   tslib@1.14.1: {}
 
   tslib@2.4.1: {}
@@ -15355,6 +16012,29 @@ snapshots:
       - supports-color
       - ts-node
 
+  tsup@7.2.0(postcss@8.5.1)(typescript@5.8.2):
+    dependencies:
+      bundle-require: 4.0.1(esbuild@0.18.17)
+      cac: 6.7.14
+      chokidar: 3.5.3
+      debug: 4.3.4(supports-color@9.3.1)
+      esbuild: 0.18.17
+      execa: 5.1.1
+      globby: 11.1.0
+      joycon: 3.1.1
+      postcss-load-config: 4.0.1(postcss@8.5.1)
+      resolve-from: 5.0.0
+      rollup: 3.27.1
+      source-map: 0.8.0-beta.0
+      sucrase: 3.34.0
+      tree-kill: 1.2.2
+    optionalDependencies:
+      postcss: 8.5.1
+      typescript: 5.8.2
+    transitivePeerDependencies:
+      - supports-color
+      - ts-node
+
   tsutils@3.21.0(typescript@4.9.4):
     dependencies:
       tslib: 1.14.1
@@ -15485,6 +16165,8 @@ snapshots:
 
   typescript@5.5.4: {}
 
+  typescript@5.8.2: {}
+
   ufo@1.5.4: {}
 
   unbox-primitive@1.0.2:
@@ -15518,7 +16200,7 @@ snapshots:
       '@types/node': 18.11.15
       '@types/unist': 2.0.6
       concat-stream: 2.0.0
-      debug: 4.3.7
+      debug: 4.4.0
       fault: 2.0.1
       glob: 8.0.3
       ignore: 5.3.1
@@ -15821,6 +16503,8 @@ snapshots:
 
   walk-up-path@3.0.1: {}
 
+  walkdir@0.4.1: {}
+
   walker@1.0.8:
     dependencies:
       makeerror: 1.0.12