import type { Plugin as EnvelopPlugin } from '@envelop/core'; import type { CreateRedisEventTargetArgs } from '@graphql-yoga/redis-event-target'; import type { PubSub } from '@graphql-yoga/subscription'; import { createPubSub } from '@graphql-yoga/subscription'; import { InMemoryLiveQueryStore } from '@n1ru4l/in-memory-live-query-store'; import type { execute as defaultExecute } from 'graphql'; export { Repeater } from 'graphql-yoga'; /** * We want SubscriptionsGlobs type to be an object with this shape: * * But not fully supported in TS * { * schema: DocumentNode // <-- required * [string]: CedarSubscription * } * * Note: This type is duplicated from packages/graphql-server/src/subscriptions/makeSubscriptions * so there is no dependency on graphql-server from realtime and vice versa. */ export type SubscriptionGlobImports = Record; export type { PubSub }; export { createPubSub, InMemoryLiveQueryStore }; export declare const liveDirectiveTypeDefs: string; export type LiveQueryStorageMechanism = RedisLiveQueryStore | InMemoryLiveQueryStore; export type PublishClientType = CreateRedisEventTargetArgs['publishClient']; export type SubscribeClientType = CreateRedisEventTargetArgs['subscribeClient']; /** * Configure CedarJS Realtime * * Realtime supports Live Queries and Subscriptions over GraphQL SSE. * * Live Queries are GraphQL queries that are automatically re-run when the data * they depend on changes. * * Subscriptions are GraphQL queries that are run when a client subscribes to a * channel. * * CedarJS Realtime * - uses a publish/subscribe model to broadcast data to clients. * - uses a store to persist Live Query and Subscription data. * * CedarJS Realtime supports in-memory and Redis stores: * - In-memory stores are useful for development and testing. * - Redis stores are useful for production. */ export type CedarRealtimeOptions = { enableDeferStream?: boolean; liveQueries?: { /** * @description Cedar Realtime supports in-memory and Redis stores. If no * `store` is configured, live queries will be disabled. */ store: 'in-memory' | { redis: { /** * @description The channel to publish invalidations to. * @default 'live-query-invalidations' */ channel?: string; publishClient: PublishClientType; subscribeClient: SubscribeClientType; }; }; }; subscriptions?: { /** * @description Cedar Realtime supports in-memory and Redis stores. If no * `store` is configured, subscriptions will be disabled. */ store: 'in-memory' | { redis: { publishClient: PublishClientType; subscribeClient: SubscribeClientType; }; }; /** * @description Subscriptions passed from the glob import: * import subscriptions from 'src/subscriptions/**\/*.{js,ts}' */ subscriptions: SubscriptionGlobImports; }; }; /** * @deprecated Use `CedarRealtimeOptions` instead. */ export type RedwoodRealtimeOptions = CedarRealtimeOptions; export declare class RedisLiveQueryStore { pub: PublishClientType; sub: SubscribeClientType; channel: string; liveQueryStore: InMemoryLiveQueryStore; constructor(pub: PublishClientType, sub: SubscribeClientType, channel: string, liveQueryStore: InMemoryLiveQueryStore); invalidate(identifiers: string[] | string): Promise; makeExecute(execute: typeof defaultExecute): (args: import("graphql").ExecutionArgs) => AsyncIterableIterator, import("graphql/jsutils/ObjMap.js").ObjMap> | import("@n1ru4l/graphql-live-query").LiveExecutionResult> | import("graphql").ExecutionResult, import("graphql/jsutils/ObjMap.js").ObjMap> | Promise, import("graphql/jsutils/ObjMap.js").ObjMap> | import("@n1ru4l/graphql-live-query").LiveExecutionResult> | import("graphql").ExecutionResult, import("graphql/jsutils/ObjMap.js").ObjMap>>; } export declare let liveQueryStore: LiveQueryStorageMechanism | undefined; export declare let pubSub: ReturnType | undefined; export declare const useCedarRealtime: (options: CedarRealtimeOptions) => EnvelopPlugin; /** * @deprecated Use `useCedarRealtime` instead. */ export declare const useRedwoodRealtime: (options: CedarRealtimeOptions) => EnvelopPlugin; //# sourceMappingURL=useCedarRealtime.d.ts.map