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