Skip to content

Commit

Permalink
fix(svelte5): ensure typings are actually included in the module (#402)
Browse files Browse the repository at this point in the history
  • Loading branch information
mcous authored Oct 2, 2024
1 parent f215ad8 commit f4b1508
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 9 deletions.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@
"types": "svelte-check",
"types:legacy": "svelte-check --tsconfig tsconfig.legacy.json",
"validate": "npm-run-all test:vitest:* test:jest types build",
"build": "tsc -p tsconfig.build.json",
"build": "tsc -p tsconfig.build.json && cp src/component-types.d.ts types",
"contributors:add": "all-contributors add",
"contributors:generate": "all-contributors generate",
"preview-release": "./scripts/preview-release"
Expand Down
20 changes: 12 additions & 8 deletions src/component-types.d.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
/* eslint-disable @typescript-eslint/no-explicit-any */
import type * as Svelte from 'svelte'

// eslint-disable-next-line @typescript-eslint/no-explicit-any
type IS_MODERN_SVELTE = any extends Svelte.Component ? false : true

/** A compiled, imported Svelte component. */
export type Component<P> = IS_MODERN_SVELTE extends true
? Svelte.Component<P> | Svelte.SvelteComponent<P>
export type Component<
P extends Record<string, any>,
E extends Record<string, any>,
> = IS_MODERN_SVELTE extends true
? Svelte.Component<P, E> | Svelte.SvelteComponent<P>
: Svelte.SvelteComponent<P>

/**
Expand All @@ -19,7 +22,7 @@ export type ComponentType<C> = C extends Svelte.SvelteComponent
: C

/** The props of a component. */
export type Props<C> = Svelte.ComponentProps<C>
export type Props<C extends Component<any, any>> = Svelte.ComponentProps<C>

/**
* The exported fields of a component.
Expand All @@ -29,7 +32,7 @@ export type Props<C> = Svelte.ComponentProps<C>
*/
export type Exports<C> = C extends Svelte.SvelteComponent
? C
: C extends Svelte.Component<unknown, infer E>
: C extends Svelte.Component<any, infer E>
? E
: never

Expand All @@ -38,6 +41,7 @@ export type Exports<C> = C extends Svelte.SvelteComponent
*
* In Svelte 4, these are the options passed to the component constructor.
*/
export type MountOptions<C> = IS_MODERN_SVELTE extends true
? Parameters<typeof Svelte.mount<Props<C>, Exports<C>>>[1]
: Svelte.ComponentConstructorOptions<Props<C>>
export type MountOptions<C extends Component<any, any>> =
IS_MODERN_SVELTE extends true
? Parameters<typeof Svelte.mount<Props<C>, Exports<C>>>[1]
: Svelte.ComponentConstructorOptions<Props<C>>

0 comments on commit f4b1508

Please sign in to comment.