import { type InvalidateOptions, type InvalidateQueryFilters, type QueryObserverResult, type RefetchOptions, type UseQueryReturnType } from "@tanstack/vue-query"; import { type Context, Effect, type Layer, type ManagedRuntime, S } from "effect-app"; import { type ApiClientFactory, type Req } from "effect-app/client"; import type { ExtractModuleName, RequestHandler, RequestHandlers, RequestHandlerWithInput, RequestInputFromMake, RequestsAny } from "effect-app/client/clientFor"; import type { InvalidationCallback } from "effect-app/client/makeClient"; import type * as ExitResult from "effect/Exit"; import { type Fiber } from "effect/Fiber"; import * as AsyncResult from "effect/unstable/reactivity/AsyncResult"; import { type ComputedRef, type WatchSource } from "vue"; import { type Commander } from "./commander.js"; import { type I18n } from "./intl.js"; import { type CommanderResolved } from "./makeUseCommand.js"; import { type MutationOptionsBase } from "./mutate.js"; import { type CustomUndefinedInitialQueryOptions, makeQuery } from "./query.js"; import { type Toast } from "./toast.js"; export interface CommandRequestExtensions { /** Defines a Command based on this call, taking the `id` of the call as the `id` of the Command. * The Request function will be taken as the first member of the Command, the Command required input will be the Request input. * see Command.wrap for details */ wrap: Commander.CommanderWrap; /** Defines a Command based on this call, taking the `id` of the call as the `id` of the Command. * see Command.fn for details */ fn: Commander.CommanderFn; } /** my other doc */ export interface RequestExtWithInput extends Commander.CommandContextLocal, CommandRequestExtensions { /** * Send the request to the endpoint and return the raw Effect response. * This does not perform query cache invalidation. */ request: (i: I) => Effect.Effect; } export interface RequestExt extends Commander.CommandContextLocal, Commander.CommanderWrap, CommandRequestExtensions { /** * Send the request to the endpoint and return the raw Effect response. * This does not perform query cache invalidation. */ request: Effect.Effect; } export type CommandRequestWithExtensions = Req extends RequestHandlerWithInput ? RequestExtWithInput : Req extends RequestHandler ? RequestExt : never; export interface QueryExtensionsWithInput { /** * Send the request to the endpoint and return the raw Effect response. * This does not set up query state tracking. */ request: (i: I) => Effect.Effect; } export interface QueryExtensions { /** * Send the request to the endpoint and return the raw Effect response. * This does not set up query state tracking. */ request: Effect.Effect; } export type QueryRequestWithExtensions = Req extends RequestHandlerWithInput ? QueryExtensionsWithInput : Req extends RequestHandler ? QueryExtensions : never; type QueryHandler = Req extends RequestHandlerWithInput ? Request["type"] extends "query" ? RequestHandlerWithInput : never : Req extends RequestHandler ? Request["type"] extends "query" ? RequestHandler : never : never; type CommandHandler = Req extends RequestHandlerWithInput ? Request["type"] extends "command" ? RequestHandlerWithInput : never : Req extends RequestHandler ? Request["type"] extends "command" ? RequestHandler : never : never; export interface MutationExtensions { /** Defines a Command based on this mutation, taking the `id` of the mutation as the `id` of the Command. * The Mutation function will be taken as the first member of the Command, the Command required input will be the Mutation input. * see Command.wrap for details */ wrap: Commander.CommanderWrap; } /** my other doc */ export interface MutationExtWithInput extends MutationExtensions { /** * Send the request to the endpoint and return the raw Effect response. * Also invalidates query caches using the request namespace by default. * Namespace invalidation targets parent namespace keys * (for example `$project/$configuration.get` invalidates `$project`). * Override invalidation in client options via `queryInvalidation`. */ (i: I): Effect.Effect; project: (schema: EA extends ProjSchema["Encoded"] ? ProjSchema : never) => MutationExtWithInput, E | S.SchemaError, R | S.Codec.DecodingServices, S.Codec.Encoded>; } /** * Send the request to the endpoint and return the raw Effect response. * Also invalidates query caches using the request namespace by default. * Namespace invalidation targets parent namespace keys * (for example `$project/$configuration.get` invalidates `$project`). * Override invalidation in client options via `queryInvalidation`. */ export interface MutationExt extends MutationExtensions, Effect.Effect { project: (schema: EA extends ProjSchema["Encoded"] ? ProjSchema : never) => MutationExt, E | S.SchemaError, R | S.Codec.DecodingServices, S.Codec.Encoded>; } export type MutationWithExtensions = Req extends RequestHandlerWithInput ? MutationExtWithInput> : Req extends RequestHandler ? MutationExt> : never; declare const useQuery_: QueryImpl["useQuery"]; declare const useSuspenseQuery_: QueryImpl["useSuspenseQuery"]; export interface ProjectResult { request: (i: I) => Effect.Effect; query: Exclude extends never ? ReturnType> : MissingDependencies & {}; suspense: Exclude extends never ? ReturnType> : MissingDependencies & {}; } export type QueryProjection = HandlerReq extends RequestHandlerWithInput ? Request["type"] extends "query" ? { project: (schema: S.Codec.Encoded extends ProjSchema["Encoded"] ? ProjSchema : never) => ProjectResult, E | S.SchemaError, R | S.Codec.DecodingServices, Request, Id>; } : {} : HandlerReq extends RequestHandler ? Request["type"] extends "query" ? { project: (schema: S.Codec.Encoded extends ProjSchema["Encoded"] ? ProjSchema : never) => ProjectResult, E | S.SchemaError, R | S.Codec.DecodingServices, Request, Id>; } : {} : {}; export interface QueriesWithInput { /** * Read helper for query requests. * Runs as a tracked Vue Query and returns reactive state. * Queries read state and should not be used to mutate it. */ query: ReturnType>; /** * Like `.query`, but returns a Promise for setup-time awaiting. * Use this when integrating with Vue Suspense / error boundaries. */ suspense: ReturnType>; } export interface QueriesWithoutInput { /** * Read helper for query requests. * Runs as a tracked Vue Query and returns reactive state. * Queries read state and should not be used to mutate it. */ query: ReturnType>; /** * Like `.query`, but returns a Promise for setup-time awaiting. * Use this when integrating with Vue Suspense / error boundaries. */ suspense: ReturnType>; } export type MissingDependencies = { message: "Dependencies required that are not provided by the runtime"; dependencies: Exclude; }; export type Queries = Req extends RequestHandlerWithInput ? Request["type"] extends "query" ? Exclude extends never ? QueriesWithInput : { query: MissingDependencies & {}; suspense: MissingDependencies & {}; } : never : Req extends RequestHandler ? Request["type"] extends "query" ? Exclude extends never ? QueriesWithoutInput : { query: MissingDependencies & {}; suspense: MissingDependencies & {}; } : never : never; declare const _useMutation: { (self: RequestHandlerWithInput, options?: MutationOptionsBase): ((i: I) => Effect.Effect) & { readonly id: Id; }; (self: RequestHandler, options?: MutationOptionsBase): Effect.Effect & { readonly id: Id; }; }; /** * Pass an Effect or a function that returns an Effect, e.g from a client action * Executes query cache invalidation based on default rules or provided option. * adds a span with the mutation id */ export declare const useMutation: typeof _useMutation; /** * Pass an Effect or a function that returns an Effect, e.g from a client action * Executes query cache invalidation based on default rules or provided option. * adds a span with the mutation id */ export declare const useMutationInt: () => { (self: RequestHandlerWithInput, options?: MutationOptionsBase): ((i: I) => Effect.Effect) & { readonly id: Id; }; (self: RequestHandler, options?: MutationOptionsBase): Effect.Effect & { readonly id: Id; }; }; export type ClientFrom = RequestHandlers>; export declare class QueryImpl { readonly getRuntime: () => Context.Context; constructor(getRuntime: () => Context.Context); /** * Effect results are passed to the caller, including errors. * @deprecated use client helpers instead (.query()) */ readonly useQuery: ReturnType>; /** * The difference with useQuery is that this function will return a Promise you can await in the Setup, * which ensures that either there always is a latest value, or an error occurs on load. * So that Suspense and error boundaries can be used. * @deprecated use client helpers instead (.suspense()) */ readonly useSuspenseQuery: { /** * The difference with useQuery is that this function will return a Promise you can await in the Setup, * which ensures that either there always is a latest value, or an error occurs on load. * So that Suspense and error boundaries can be used. * @deprecated use client helpers instead (.suspense()) */ (self: RequestHandler): { /** * The difference with useQuery is that this function will return a Promise you can await in the Setup, * which ensures that either there always is a latest value, or an error occurs on load. * So that Suspense and error boundaries can be used. */ (options?: CustomUndefinedInitialQueryOptions): Promise>, ComputedRef, (options?: RefetchOptions) => Effect.Effect>, UseQueryReturnType ]>; }; /** * The difference with useQuery is that this function will return a Promise you can await in the Setup, * which ensures that either there always is a latest value, or an error occurs on load. * So that Suspense and error boundaries can be used. */ (self: RequestHandlerWithInput): { /** * The difference with useQuery is that this function will return a Promise you can await in the Setup, * which ensures that either there always is a latest value, or an error occurs on load. * So that Suspense and error boundaries can be used. */ (arg: Arg | WatchSource, options?: CustomUndefinedInitialQueryOptions): Promise>, ComputedRef, (options?: RefetchOptions) => Effect.Effect>, UseQueryReturnType ]>; }; }; } type Base = I18n | Toast; type Mix = ApiClientFactory | Commander | Base; type InvalidationResources = Record>; type UnionToIntersection = (U extends unknown ? (arg: U) => void : never) extends ((arg: infer I) => void) ? I : never; type CommandInvalidationResources = Req extends { readonly type: "command"; readonly "~invalidationResources"?: infer Resources; } ? NonNullable extends InvalidationResources ? NonNullable : never : Req extends { readonly type: "command"; readonly config?: infer Config; } ? Config extends { readonly invalidationResources?: infer LegacyResources; } ? NonNullable extends InvalidationResources ? NonNullable : never : Config extends { readonly invalidatesQueries?: InvalidationCallback; } ? NonNullable extends InvalidationResources ? NonNullable : never : never : never; type InvalidationResourcesForUnion = { [K in keyof M]: CommandInvalidationResources; }[keyof M]; type InvalidationResourcesFor = [InvalidationResourcesForUnion] extends [never] ? never : UnionToIntersection> extends infer R ? R extends InvalidationResources ? R : never : never; type QueryInvalidationFactory = (client: ClientFrom) => QueryInvalidation; type StrictResourcesArg = Actual & Record, never>; type ClientForArgs = InvalidationResourcesFor> = [InvalidationResourcesFor] extends [never] ? [ queryInvalidation?: QueryInvalidationFactory, invalidationResources?: StrictResourcesArg, Resources> ] : [ queryInvalidation: QueryInvalidationFactory | undefined, invalidationResources: StrictResourcesArg, Resources> ]; export declare const makeClient: (getBaseMrt: () => ManagedRuntime.ManagedRuntime, clientFor_: ReturnType<(typeof ApiClientFactory)["makeFor"]>, rtHooks: Layer.Layer) => { Command: CommanderResolved; useCommand: () => CommanderResolved; clientFor: = InvalidationResourcesFor>(m: M, ...args: ClientForArgs) => { [Key in keyof RequestHandlers>]: RequestHandlers>[Key] & (QueryHandler>[Key]> extends never ? {} : QueryRequestWithExtensions>[Key]>> & Queries>[Key]>> & QueryProjection>[Key]>>) & (CommandHandler>[Key]> extends never ? {} : CommandRequestWithExtensions>[Key]>>) & (CommandHandler>[Key]> extends never ? {} : { mutate: MutationWithExtensions>[Key]>>; }) & { Input: RequestHandlers>[Key] extends RequestHandlerWithInput ? I : never; }; } & { helpers: { [Key in keyof RequestHandlers> as CommandHandler>[Key]> extends never ? never : `${ToCamel}Request`]: CommandRequestWithExtensions>[Key]>>; } & { [Key in keyof RequestHandlers> as CommandHandler>[Key]> extends never ? never : `${ToCamel}Mutation`]: MutationWithExtensions>[Key]>>; } & { [Key in keyof RequestHandlers> as QueryHandler>[Key]> extends never ? never : `${ToCamel}Query`]: Queries>[Key]>>["query"]; } & { [Key in keyof RequestHandlers> as QueryHandler>[Key]> extends never ? never : `${ToCamel}SuspenseQuery`]: Queries>[Key]>>["suspense"]; }; }; }; export type QueryInvalidation = { [K in keyof M]?: (defaultKey: string[], name: string, input?: unknown, output?: ExitResult.Exit) => { filters?: InvalidateQueryFilters | undefined; options?: InvalidateOptions | undefined; }[]; }; export type ToCamel = S extends string ? S extends `${infer Head}_${infer Tail}` ? `${Uncapitalize}${Capitalize>}` : Uncapitalize : never; export interface CommandBase { handle: (input: I) => A; waiting: boolean; blocked: boolean; allowed: boolean; action: string; label: string; } export interface EffectCommand extends CommandBase> { } export interface CommandFromRequest any; }, A = unknown, E = unknown> extends EffectCommand, A, E> { } export {}; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZUNsaWVudC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL21ha2VDbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLEtBQUssaUJBQWlCLEVBQUUsS0FBSyxzQkFBc0IsRUFBb0IsS0FBSyxtQkFBbUIsRUFBRSxLQUFLLGNBQWMsRUFBRSxLQUFLLGtCQUFrQixFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFFbkwsT0FBTyxFQUFFLEtBQUssT0FBTyxFQUFFLE1BQU0sRUFBYyxLQUFLLEtBQUssRUFBRSxLQUFLLGNBQWMsRUFBRSxDQUFDLEVBQVUsTUFBTSxZQUFZLENBQUE7QUFDekcsT0FBTyxFQUFFLEtBQUssZ0JBQWdCLEVBQUUsS0FBSyxHQUFHLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUNuRSxPQUFPLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLHVCQUF1QixFQUFFLG9CQUFvQixFQUFFLFdBQVcsRUFBRSxNQUFNLDZCQUE2QixDQUFBO0FBQ2pLLE9BQU8sS0FBSyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sOEJBQThCLENBQUE7QUFDeEUsT0FBTyxLQUFLLEtBQUssVUFBVSxNQUFNLGFBQWEsQ0FBQTtBQUM5QyxPQUFPLEVBQUUsS0FBSyxLQUFLLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDekMsT0FBTyxLQUFLLFdBQVcsTUFBTSx3Q0FBd0MsQ0FBQTtBQUNyRSxPQUFPLEVBQUUsS0FBSyxXQUFXLEVBQXdCLEtBQUssV0FBVyxFQUFFLE1BQU0sS0FBSyxDQUFBO0FBQzlFLE9BQU8sRUFBRSxLQUFLLFNBQVMsRUFBbUIsTUFBTSxnQkFBZ0IsQ0FBQTtBQUNoRSxPQUFPLEVBQUUsS0FBSyxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDckMsT0FBTyxFQUFFLEtBQUssaUJBQWlCLEVBQWtCLE1BQU0scUJBQXFCLENBQUE7QUFDNUUsT0FBTyxFQUFnQixLQUFLLG1C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