Skip to content

Commit b3e5b9f

Browse files
committed
fix(types): fixed generics of all hooks
1 parent 2e0a405 commit b3e5b9f

File tree

7 files changed

+20
-14
lines changed

7 files changed

+20
-14
lines changed

src/global.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ declare module 'pouchdb-utils' {
77
}
88

99
declare module 'pouchdb-selector-core' {
10-
export function matchesSelector<T>(
10+
export function matchesSelector<T extends {}>(
1111
doc: PouchDB.Core.Document<T>,
1212
selector: PouchDB.Find.Selector
1313
): boolean

src/subscription.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { clone } from 'pouchdb-utils'
22

3-
export type DocsCallback<T> = (
3+
export type DocsCallback<T extends {}> = (
44
deleted: boolean,
55
id: PouchDB.Core.DocumentId,
66
doc?: PouchDB.Core.Document<T>
@@ -22,7 +22,7 @@ interface SubscriptionToAView {
2222
feed: PouchDB.Core.Changes<Record<string, unknown>>
2323
callbacks: Set<ViewCallback>
2424
}
25-
export type subscribeToDocs = <T>(
25+
export type subscribeToDocs = <T extends {}>(
2626
ids: PouchDB.Core.DocumentId[] | null,
2727
callback: DocsCallback<T>
2828
) => () => void
@@ -44,7 +44,7 @@ export default class SubscriptionManager {
4444
pouch.once('destroyed', this.#destroyListener)
4545
}
4646

47-
subscribeToDocs<T>(
47+
subscribeToDocs<T extends {}>(
4848
ids: PouchDB.Core.DocumentId[] | null,
4949
callback: DocsCallback<T>
5050
): () => void {

src/useAllDocs.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import { useDeepMemo, CommonOptions } from './utils'
88
* Get all docs or a slice of all docs and subscribe to their updates.
99
* @param options PouchDB's allDocs options.
1010
*/
11-
export default function useAllDocs<Content>(
11+
export default function useAllDocs<Content extends {}>(
1212
options?: CommonOptions &
1313
(
1414
| PouchDB.Core.AllDocsWithKeyOptions

src/useDoc.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { useContext } from './context'
44
import useStateMachine, { ResultType } from './state-machine'
55
import type { CommonOptions } from './utils'
66

7-
type DocResultType<T> = ResultType<{
7+
type DocResultType<T extends {}> = ResultType<{
88
doc: (PouchDB.Core.Document<T> & PouchDB.Core.GetMeta) | null
99
}>
1010

@@ -14,7 +14,7 @@ type DocResultType<T> = ResultType<{
1414
* @param {object} [options] - PouchDB get options. Excluding 'open_revs'.
1515
* @param {object|function} [initialValue] - Value that should be returned while fetching the doc.
1616
*/
17-
export default function useDoc<Content>(
17+
export default function useDoc<Content extends {}>(
1818
id: PouchDB.Core.DocumentId,
1919
options?: (PouchDB.Core.GetOptions & CommonOptions) | null,
2020
initialValue?: (() => Content) | Content

src/useFind.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ export interface FindHookOptions extends CommonOptions {
8989
* Query, and optionally create, a Mango index and subscribe to its updates.
9090
* @param {object} [opts] A combination of PouchDB's find options and create index options.
9191
*/
92-
export default function useFind<Content>(
92+
export default function useFind<Content extends {}>(
9393
options: FindHookOptions
9494
): ResultType<PouchDB.Find.FindResponse<Content>> {
9595
const { pouchdb: pouch, subscriptionManager } = useContext(options.db)

src/usePouch.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ import { useContext } from './context'
44
* Get access to the PouchDB database that is provided by the provider.
55
* @param {string | undefined} dbName Select the database to be returned by its name/key.
66
*/
7-
export default function usePouch<T>(dbName?: string): PouchDB.Database<T> {
7+
export default function usePouch<T extends {}>(
8+
dbName?: string
9+
): PouchDB.Database<T> {
810
return useContext(dbName).pouchdb as PouchDB.Database<T>
911
}

src/useView.ts

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,22 +6,26 @@ import type SubscriptionManager from './subscription'
66
import useStateMachine, { ResultType, Dispatch } from './state-machine'
77
import { useDeepMemo, CommonOptions } from './utils'
88

9-
type ViewResponseBase<Result> = PouchDB.Query.Response<Result> & {
9+
type ViewResponseBase<Result extends {}> = PouchDB.Query.Response<Result> & {
1010
/**
1111
* Include an update_seq value indicating which sequence id of the underlying database the view
1212
* reflects.
1313
*/
1414
update_seq?: number | string
1515
}
1616

17-
export type ViewResponse<T> = ResultType<ViewResponseBase<T>>
17+
export type ViewResponse<T extends {}> = ResultType<ViewResponseBase<T>>
1818

1919
/**
2020
* Query a view and subscribe to its updates.
2121
* @param {string | function | object} fun The name of the view or a temporary view.
2222
* @param {object} [opts] PouchDB's query-options
2323
*/
24-
export default function useView<Content, Result, Model = Content>(
24+
export default function useView<
25+
Content extends {},
26+
Result extends {},
27+
Model extends {} = Content
28+
>(
2529
fun: string | PouchDB.Map<Model, Result> | PouchDB.Filter<Model, Result>,
2630
opts?: PouchDB.Query.Options<Model, Result> & {
2731
update_seq?: boolean
@@ -135,7 +139,7 @@ export default function useView<Content, Result, Model = Content>(
135139
* @param fn Name of the view.
136140
* @param option PouchDB's query options.
137141
*/
138-
function doDDocQuery<Model, Result>(
142+
function doDDocQuery<Model extends {}, Result extends {}>(
139143
dispatch: Dispatch<PouchDB.Query.Response<Result>>,
140144
pouch: PouchDB.Database<Record<string, unknown>>,
141145
subscriptionManager: SubscriptionManager,
@@ -277,7 +281,7 @@ function doDDocQuery<Model, Result>(
277281
* @param fn The temporary view.
278282
* @param option PouchDB's query options.
279283
*/
280-
function doTemporaryQuery<Model, Result>(
284+
function doTemporaryQuery<Model extends {}, Result extends {}>(
281285
dispatch: Dispatch<PouchDB.Query.Response<Result>>,
282286
pouch: PouchDB.Database<Record<string, unknown>>,
283287
subscriptionManager: SubscriptionManager,

0 commit comments

Comments
 (0)