@@ -8,7 +8,7 @@ import * as Subscribable from "./Subscribable.js"
|
||||
export const QueryTypeId: unique symbol = Symbol.for("@effect-fc/Query/Query")
|
||||
export type QueryTypeId = typeof QueryTypeId
|
||||
|
||||
export interface Query<in out K extends Query.AnyKey, in out A, in out KE = never, in out KR = never, in out E = never, in out R = never>
|
||||
export interface Query<in out K, in out A, in out KE = never, in out KR = never, in out E = never, in out R = never>
|
||||
extends Pipeable.Pipeable {
|
||||
readonly [QueryTypeId]: QueryTypeId
|
||||
|
||||
@@ -34,11 +34,10 @@ extends Pipeable.Pipeable {
|
||||
invalidateCacheEntry(key: K): Effect.Effect<void>
|
||||
}
|
||||
|
||||
export declare namespace Query {
|
||||
export type AnyKey = readonly any[]
|
||||
}
|
||||
export const isQuery = (u: unknown): u is Query<unknown, unknown, unknown, unknown, unknown, unknown> => Predicate.hasProperty(u, QueryTypeId)
|
||||
|
||||
export class QueryImpl<in out K extends Query.AnyKey, in out A, in out KE = never, in out KR = never, in out E = never, in out R = never>
|
||||
|
||||
export class QueryImpl<in out K, in out A, in out KE = never, in out KR = never, in out E = never, in out R = never>
|
||||
extends Pipeable.Class implements Query<K, A, KE, KR, E, R> {
|
||||
readonly [QueryTypeId]: QueryTypeId = QueryTypeId
|
||||
|
||||
@@ -239,7 +238,7 @@ extends Pipeable.Class implements Query<K, A, KE, KR, E, R> {
|
||||
}
|
||||
|
||||
makeCacheKey(key: K): QueryClient.QueryClientCacheKey {
|
||||
return new QueryClient.QueryClientCacheKey(key, this.f as (key: Query.AnyKey) => Effect.Effect<unknown, unknown, unknown>)
|
||||
return new QueryClient.QueryClientCacheKey(key, this.f as (key: unknown) => Effect.Effect<unknown, unknown, unknown>)
|
||||
}
|
||||
|
||||
getCacheEntry(
|
||||
@@ -269,7 +268,7 @@ extends Pipeable.Class implements Query<K, A, KE, KR, E, R> {
|
||||
|
||||
get invalidateCache(): Effect.Effect<void> {
|
||||
return QueryClient.QueryClient.pipe(
|
||||
Effect.andThen(client => client.invalidateCacheEntries(this.f as (key: Query.AnyKey) => Effect.Effect<unknown, unknown, unknown>)),
|
||||
Effect.andThen(client => client.invalidateCacheEntries(this.f as (key: unknown) => Effect.Effect<unknown, unknown, unknown>)),
|
||||
Effect.provide(this.context),
|
||||
)
|
||||
}
|
||||
@@ -285,12 +284,8 @@ extends Pipeable.Class implements Query<K, A, KE, KR, E, R> {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
export const isQuery = (u: unknown): u is Query<readonly unknown[], unknown, unknown, unknown, unknown, unknown> => Predicate.hasProperty(u, QueryTypeId)
|
||||
|
||||
|
||||
export declare namespace make {
|
||||
export interface Options<K extends Query.AnyKey, A, KE = never, KR = never, E = never, R = never> {
|
||||
export interface Options<K, A, KE = never, KR = never, E = never, R = never> {
|
||||
readonly key: Stream.Stream<K, KE, KR>
|
||||
readonly f: (key: NoInfer<K>) => Effect.Effect<A, E, R>
|
||||
readonly staleTime?: Duration.Input
|
||||
@@ -298,7 +293,7 @@ export declare namespace make {
|
||||
}
|
||||
}
|
||||
|
||||
export const make = Effect.fnUntraced(function* <K extends Query.AnyKey, A, KE = never, KR = never, E = never, R = never>(
|
||||
export const make = Effect.fnUntraced(function* <K, A, KE = never, KR = never, E = never, R = never>(
|
||||
options: make.Options<K, A, KE, KR, E, R>
|
||||
): Effect.fn.Return<
|
||||
Query<K, A, KE, KR, E, R>,
|
||||
@@ -324,7 +319,7 @@ export const make = Effect.fnUntraced(function* <K extends Query.AnyKey, A, KE =
|
||||
)
|
||||
})
|
||||
|
||||
export const service = <K extends Query.AnyKey, A, KE = never, KR = never, E = never, R = never>(
|
||||
export const service = <K, A, KE = never, KR = never, E = never, R = never>(
|
||||
options: make.Options<K, A, KE, KR, E, R>
|
||||
): Effect.Effect<
|
||||
Query<K, A, KE, KR, E, R>,
|
||||
|
||||
Reference in New Issue
Block a user