Skip to content

Commit 53db87f

Browse files
authored
feat: improve components types with generics and definitions
* feat: improve components types (with generics) * build: extract types definitions from svelte components
1 parent e87d25c commit 53db87f

File tree

10 files changed

+5354
-5370
lines changed

10 files changed

+5354
-5370
lines changed

package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,11 @@
1818
"svelte"
1919
],
2020
"scripts": {
21-
"build": "rimraf ./dist && rollup -c && yarn build:types && yarn build:lib && yarn build:svelte",
21+
"build": "rimraf ./dist && rollup -c && yarn build:types && yarn build:lib && yarn build:svelte && yarn build:svelte-types",
2222
"build:types": "tsc --project ./tsconfig.types.json && replace 'import type' 'import' ./dist -r --silent && replace 'export type' 'export' ./dist -r --silent",
2323
"build:lib": "rimraf ./lib && tsc --project tsconfig.lib.json --module 'CommonJS' --outDir ./lib",
2424
"build:svelte": "rimraf ./svelte && tsc --project tsconfig.lib.json --module 'es2015' --outDir ./svelte && node scripts/svelte-copy.js",
25+
"build:svelte-types": "node scripts/svelte-dts.js",
2526
"prepublishOnly": "yarn run build",
2627
"test:watch": "yarn test -- --watch",
2728
"test": "yarn build && yarn build:types && yarn test:eslint",
@@ -78,6 +79,7 @@
7879
"svelte": "^3.29.0",
7980
"svelte-check": "^1.0.55",
8081
"svelte-jester": "^1.0.5",
82+
"svelte2tsx": "^0.4.8",
8183
"ts-jest": "^26.5.4",
8284
"type-fest": "^0.21.1",
8385
"typescript": "^4.0.3"

scripts/svelte-dts.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
const path = require("path")
2+
const { emitDts } = require("svelte2tsx")
3+
4+
main()
5+
6+
async function main() {
7+
await emitDts({
8+
libRoot: path.join(__dirname, "..", "src"),
9+
declarationDir: path.join(__dirname, "..", "dist"),
10+
svelteShimsPath: require.resolve("svelte2tsx/svelte-shims.d.ts")
11+
})
12+
}

src/hydration/Hydrate.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import useHydrate from './useHydrate'
44
55
export let state: DehydratedState
6-
export let options: HydrateOptions
6+
export let options: HydrateOptions | undefined = undefined
77
88
useHydrate(state, options)
99
</script>

src/infiniteQuery/InfiniteQuery.svelte

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,23 @@
77
} from '../types'
88
import useInfiniteQuery from './useInfiniteQuery'
99
10-
export let options: UseInfiniteQueryOptions
10+
type TQueryFnData = $$Generic<any>
11+
type TError = $$Generic<any>
12+
type TData = $$Generic<TQueryFnData>
13+
type TQueryData = $$Generic<TQueryFnData>
14+
type TQueryKey = $$Generic<QueryKey>
15+
16+
export let options: UseInfiniteQueryOptions<
17+
TQueryFnData,
18+
TError,
19+
TData,
20+
TQueryData,
21+
TQueryKey
22+
>
1123
// useful for binding
12-
export let queryResult: UseInfiniteQueryResult
24+
export let queryResult:
25+
| UseInfiniteQueryResult<TData, TError>
26+
| undefined = undefined
1327
1428
let firstRender = true
1529

src/isFetching/IsFetching.svelte

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
44
import useIsFetching from './useIsFetching'
55
6-
export let filters: QueryFilters
7-
export let isFetching
6+
export let filters: QueryFilters | undefined = undefined
7+
export let isFetching: number | undefined = undefined
88
99
$: isFetchingResult = useIsFetching(filters)
1010
$: isFetching = $isFetchingResult

src/isMutating/IsMutating.svelte

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
44
import useIsMutating from './useIsMutating'
55
6-
export let filters: MutationFilters
7-
export let isMutating
6+
export let filters: MutationFilters | undefined = undefined
7+
export let isMutating: number | undefined = undefined
88
99
$: isMutatingResult = useIsMutating(filters)
1010
$: isMutating = $isMutatingResult

src/mutation/Mutation.svelte

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,20 @@
55
import type { UseMutationOptions, UseMutationResult } from '../types'
66
import useMutation from './useMutation'
77
8-
export let mutationFn: MutationFunction
9-
export let options: UseMutationOptions<any, any, any, any>
8+
type TData = $$Generic<any>
9+
type TError = $$Generic<any>
10+
type TVariables = $$Generic<any>
11+
type TContext = $$Generic<any>
12+
13+
export let mutationFn: MutationFunction<TData, TVariables>
14+
export let options:
15+
| UseMutationOptions<TData, TError, TVariables, TContext>
16+
| undefined = undefined
1017
1118
// useful for binding
12-
export let mutationResult: UseMutationResult
19+
export let mutationResult:
20+
| UseMutationResult<TData, TError, TVariables, TContext>
21+
| undefined = undefined
1322
1423
let firstRender = true
1524

src/queries/Queries.svelte

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,21 @@
11
<script lang="ts">
22
import { onMount } from 'svelte'
33
4-
import type { UseQueryOptions, UseQueryResult } from '../types'
4+
import type { UseQueryOptions, UseQueriesResult } from '../types'
55
import useQueries from './useQueries'
66
7-
export let queries: readonly UseQueryOptions[]
7+
type TQueryFnData = $$Generic<any>
8+
type TError = $$Generic<any>
9+
type TData = $$Generic<TQueryFnData>
10+
type TQueryKey = $$Generic<QueryKey>
11+
12+
type T =
13+
| readonly UseQueryOptions<TQueryFnData, TError, TData, TQueryKey>[]
14+
| readonly [...UseQueryOptions[]]
15+
16+
export let queries: T
817
// useful for binding
9-
export let currentResult: readonly UseQueryResult[] = []
18+
export let currentResult: UseQueriesResult<T> = []
1019
1120
let firstRender = true
1221

src/query/Query.svelte

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,17 @@
22
import { onMount } from 'svelte'
33
44
import type { UseQueryOptions, UseQueryResult } from '../types'
5+
import type { QueryKey } from '../queryCore/core'
56
import useQuery from './useQuery'
67
7-
export let options: UseQueryOptions
8+
type TQueryFnData = $$Generic<any>
9+
type TError = $$Generic<any>
10+
type TData = $$Generic<TQueryFnData>
11+
type TQueryKey = $$Generic<QueryKey>
12+
13+
export let options: UseQueryOptions<TQueryFnData, TError, TData, TQueryKey>
814
// useful for binding
9-
export let queryResult: UseQueryResult
15+
export let queryResult: UseQueryResult<TData, TError> | undefined = undefined
1016
1117
let firstRender = true
1218

0 commit comments

Comments
 (0)