diff --git a/package.json b/package.json index da63492..96f9d7c 100644 --- a/package.json +++ b/package.json @@ -18,10 +18,11 @@ "svelte" ], "scripts": { - "build": "rimraf ./dist && rollup -c && yarn build:types && yarn build:lib && yarn build:svelte", + "build": "rimraf ./dist && rollup -c && yarn build:types && yarn build:lib && yarn build:svelte && yarn build:svelte-types", "build:types": "tsc --project ./tsconfig.types.json && replace 'import type' 'import' ./dist -r --silent && replace 'export type' 'export' ./dist -r --silent", "build:lib": "rimraf ./lib && tsc --project tsconfig.lib.json --module 'CommonJS' --outDir ./lib", "build:svelte": "rimraf ./svelte && tsc --project tsconfig.lib.json --module 'es2015' --outDir ./svelte && node scripts/svelte-copy.js", + "build:svelte-types": "node scripts/svelte-dts.js", "prepublishOnly": "yarn run build", "test:watch": "yarn test -- --watch", "test": "yarn build && yarn build:types && yarn test:eslint", @@ -78,6 +79,7 @@ "svelte": "^3.29.0", "svelte-check": "^1.0.55", "svelte-jester": "^1.0.5", + "svelte2tsx": "^0.4.8", "ts-jest": "^26.5.4", "type-fest": "^0.21.1", "typescript": "^4.0.3" diff --git a/scripts/svelte-dts.js b/scripts/svelte-dts.js new file mode 100644 index 0000000..f0419b5 --- /dev/null +++ b/scripts/svelte-dts.js @@ -0,0 +1,12 @@ +const path = require("path") +const { emitDts } = require("svelte2tsx") + +main() + +async function main() { + await emitDts({ + libRoot: path.join(__dirname, "..", "src"), + declarationDir: path.join(__dirname, "..", "dist"), + svelteShimsPath: require.resolve("svelte2tsx/svelte-shims.d.ts") + }) +} diff --git a/src/hydration/Hydrate.svelte b/src/hydration/Hydrate.svelte index 81f973c..605fefa 100644 --- a/src/hydration/Hydrate.svelte +++ b/src/hydration/Hydrate.svelte @@ -3,7 +3,7 @@ import useHydrate from './useHydrate' export let state: DehydratedState - export let options: HydrateOptions + export let options: HydrateOptions | undefined = undefined useHydrate(state, options) diff --git a/src/infiniteQuery/InfiniteQuery.svelte b/src/infiniteQuery/InfiniteQuery.svelte index cd90e98..af8cff2 100644 --- a/src/infiniteQuery/InfiniteQuery.svelte +++ b/src/infiniteQuery/InfiniteQuery.svelte @@ -7,9 +7,23 @@ } from '../types' import useInfiniteQuery from './useInfiniteQuery' - export let options: UseInfiniteQueryOptions + type TQueryFnData = $$Generic + type TError = $$Generic + type TData = $$Generic + type TQueryData = $$Generic + type TQueryKey = $$Generic + + export let options: UseInfiniteQueryOptions< + TQueryFnData, + TError, + TData, + TQueryData, + TQueryKey + > // useful for binding - export let queryResult: UseInfiniteQueryResult + export let queryResult: + | UseInfiniteQueryResult + | undefined = undefined let firstRender = true diff --git a/src/isFetching/IsFetching.svelte b/src/isFetching/IsFetching.svelte index d07034f..ced37f0 100644 --- a/src/isFetching/IsFetching.svelte +++ b/src/isFetching/IsFetching.svelte @@ -3,8 +3,8 @@ import useIsFetching from './useIsFetching' - export let filters: QueryFilters - export let isFetching + export let filters: QueryFilters | undefined = undefined + export let isFetching: number | undefined = undefined $: isFetchingResult = useIsFetching(filters) $: isFetching = $isFetchingResult diff --git a/src/isMutating/IsMutating.svelte b/src/isMutating/IsMutating.svelte index 52eaeea..f2b9692 100644 --- a/src/isMutating/IsMutating.svelte +++ b/src/isMutating/IsMutating.svelte @@ -3,8 +3,8 @@ import useIsMutating from './useIsMutating' - export let filters: MutationFilters - export let isMutating + export let filters: MutationFilters | undefined = undefined + export let isMutating: number | undefined = undefined $: isMutatingResult = useIsMutating(filters) $: isMutating = $isMutatingResult diff --git a/src/mutation/Mutation.svelte b/src/mutation/Mutation.svelte index 7784dfc..602c12f 100644 --- a/src/mutation/Mutation.svelte +++ b/src/mutation/Mutation.svelte @@ -5,11 +5,20 @@ import type { UseMutationOptions, UseMutationResult } from '../types' import useMutation from './useMutation' - export let mutationFn: MutationFunction - export let options: UseMutationOptions + type TData = $$Generic + type TError = $$Generic + type TVariables = $$Generic + type TContext = $$Generic + + export let mutationFn: MutationFunction + export let options: + | UseMutationOptions + | undefined = undefined // useful for binding - export let mutationResult: UseMutationResult + export let mutationResult: + | UseMutationResult + | undefined = undefined let firstRender = true diff --git a/src/queries/Queries.svelte b/src/queries/Queries.svelte index 252cf3d..98934d4 100644 --- a/src/queries/Queries.svelte +++ b/src/queries/Queries.svelte @@ -1,12 +1,21 @@