@ttt-productions/query-core 0.14.32 → 0.14.33

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -7,6 +7,10 @@ export interface CallableErrorRouting {
7
7
  isAnswerSurfacedByCaller?: (error: unknown) => boolean;
8
8
  }
9
9
  export type CallableCaptureContext = Record<string, unknown>;
10
+ export interface SlowCallNotice {
11
+ afterMs: number;
12
+ show: (context: CallableCaptureContext) => () => void;
13
+ }
10
14
  export interface CallablePolicy {
11
15
  getFunctions: FunctionsProvider;
12
16
  timeoutMs: number;
@@ -14,6 +18,7 @@ export interface CallablePolicy {
14
18
  captureFault: (error: unknown, context: CallableCaptureContext) => void;
15
19
  captureRecoveredFallback: (error: unknown, context: CallableCaptureContext) => void;
16
20
  onActionError: (error: unknown, routing: CallableErrorRouting) => void;
21
+ onSlowCall: SlowCallNotice;
17
22
  }
18
23
  export interface CallableDeclaration {
19
24
  limitedUseAppCheck?: true;
@@ -1 +1 @@
1
- {"version":3,"file":"create-callables.d.ts","sourceRoot":"","sources":["../../../src/react/callables/create-callables.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create-callables.d.ts","sourceRoot":"","sources":["../../../src/react/callables/create-callables.ts"],"names":[],"mappings":"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"}
@@ -4,11 +4,24 @@ import { callCallable, isRecoveredFallbackReport, } from '@ttt-productions/fireb
4
4
  import { useMutationSessionCapture, useSessionMutation, } from '../session-mutation.js';
5
5
  export const MAX_RESUMABLE_CALLS = 12;
6
6
  export function createCallables(policy) {
7
+ function withSlowCallNotice(pending, functionName, session) {
8
+ let dismiss;
9
+ const timer = setTimeout(() => {
10
+ if (session.isCurrent())
11
+ dismiss = policy.onSlowCall.show({ functionName });
12
+ }, policy.onSlowCall.afterMs);
13
+ const settle = () => {
14
+ clearTimeout(timer);
15
+ dismiss?.();
16
+ };
17
+ pending.then(settle, settle);
18
+ return pending;
19
+ }
7
20
  function useCallableTransport(functionName, declaration, options) {
8
21
  const optionsRef = useRef(options);
9
22
  optionsRef.current = options;
10
23
  const limitedUseAppCheck = policy.resolveLimitedUseAppCheck(declaration.limitedUseAppCheck === true);
11
- return useCallback((input, session) => callCallable(policy.getFunctions, functionName, input, {
24
+ return useCallback((input, session) => withSlowCallNotice(callCallable(policy.getFunctions, functionName, input, {
12
25
  captureException: (error, context) => {
13
26
  if (optionsRef.current.captureFaults !== false)
14
27
  policy.captureFault(error, context);
@@ -25,7 +38,7 @@ export function createCallables(policy) {
25
38
  isAnswerSurfacedByCaller,
26
39
  });
27
40
  },
28
- }, { timeoutMs: policy.timeoutMs, limitedUseAppCheck }), [functionName, limitedUseAppCheck]);
41
+ }, { timeoutMs: policy.timeoutMs, limitedUseAppCheck }), functionName, session), [functionName, limitedUseAppCheck]);
29
42
  }
30
43
  function useSessionBoundCall(call) {
31
44
  const captureSession = useMutationSessionCapture();
@@ -1 +1 @@
1
- {"version":3,"file":"create-callables.js","sourceRoot":"","sources":["../../../src/react/callables/create-callables.ts"],"names":[],"mappings":"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","sourcesContent":["'use client';\n\nimport { useCallback, useMemo, useRef } from 'react';\nimport type { ExpectedCallableAnswerCode } from '@ttt-productions/firebase-helpers';\nimport {\n callCallable,\n isRecoveredFallbackReport,\n type FunctionsProvider,\n} from '@ttt-productions/firebase-helpers/client';\nimport {\n useMutationSessionCapture,\n useSessionMutation,\n type MutationSession,\n type SessionMutationOptions,\n type SessionMutationResult,\n} from '../session-mutation.js';\n\nexport interface CallableErrorRouting {\n showErrorToast: boolean;\n answeredRefusals: readonly ExpectedCallableAnswerCode[];\n isAnswerSurfacedByCaller?: (error: unknown) => boolean;\n}\n\nexport type CallableCaptureContext = Record<string, unknown>;\n\nexport interface CallablePolicy {\n getFunctions: FunctionsProvider;\n timeoutMs: number;\n resolveLimitedUseAppCheck: (requested: boolean) => boolean;\n captureFault: (error: unknown, context: CallableCaptureContext) => void;\n captureRecoveredFallback: (error: unknown, context: CallableCaptureContext) => void;\n onActionError: (error: unknown, routing: CallableErrorRouting) => void;\n}\n\nexport interface CallableDeclaration {\n limitedUseAppCheck?: true;\n}\n\ninterface CallableTransportOptions extends Partial<CallableErrorRouting> {\n captureFaults?: boolean;\n}\n\nexport type CallableMutationOptions<TInput, TResult, TOnMutateResult = unknown> = Omit<\n SessionMutationOptions<TResult, Error, TInput, TOnMutateResult>,\n 'mutationFn' | 'retry'\n> &\n Pick<\n CallableTransportOptions,\n 'showErrorToast' | 'answeredRefusals' | 'isAnswerSurfacedByCaller' | 'captureFaults'\n >;\n\nexport const MAX_RESUMABLE_CALLS = 12;\n\nexport type ResumableOutcome<TResult> = TResult & { interruption: Error | null };\n\nexport interface Callables {\n createCallableHook<TInput, TResult>(\n functionName: string,\n declaration?: CallableDeclaration,\n ): <TOnMutateResult = unknown>(\n options?: CallableMutationOptions<TInput, TResult, TOnMutateResult>,\n ) => SessionMutationResult<TResult, Error, TInput, TOnMutateResult>;\n createResumableCallableHook<TInput, TResult extends { complete: boolean }>(\n functionName: string,\n merge: (earlier: TResult, later: TResult) => TResult,\n declaration?: CallableDeclaration,\n ): <TOnMutateResult = unknown>(\n options?: CallableMutationOptions<TInput, ResumableOutcome<TResult>, TOnMutateResult>,\n ) => SessionMutationResult<ResumableOutcome<TResult>, Error, TInput, TOnMutateResult>;\n createCallableReader<TInput, TResult>(\n functionName: string,\n declaration?: CallableDeclaration,\n ): () => (input: TInput) => Promise<TResult>;\n createCallableInvoker<TInput, TResult>(\n functionName: string,\n declaration?: CallableDeclaration,\n ): () => (input: TInput) => Promise<TResult>;\n}\n\ntype CallableTransport = <TInput, TResult>(\n input: TInput,\n session: MutationSession,\n) => Promise<TResult>;\n\nexport function createCallables(policy: CallablePolicy): Callables {\n function useCallableTransport(\n functionName: string,\n declaration: CallableDeclaration,\n options: CallableTransportOptions,\n ): CallableTransport {\n const optionsRef = useRef(options);\n optionsRef.current = options;\n const limitedUseAppCheck = policy.resolveLimitedUseAppCheck(\n declaration.limitedUseAppCheck === true,\n );\n\n return useCallback(\n <TInput, TResult>(input: TInput, session: MutationSession) =>\n callCallable<TInput, TResult>(\n policy.getFunctions,\n functionName,\n input,\n {\n captureException: (error, context) => {\n if (optionsRef.current.captureFaults !== false) policy.captureFault(error, context);\n else if (isRecoveredFallbackReport(context))\n policy.captureRecoveredFallback(error, context);\n },\n onError: (error) => {\n if (!session.isCurrent()) return;\n const {\n showErrorToast = true,\n answeredRefusals = [],\n isAnswerSurfacedByCaller,\n } = optionsRef.current;\n policy.onActionError(error, {\n showErrorToast,\n answeredRefusals,\n isAnswerSurfacedByCaller,\n });\n },\n },\n { timeoutMs: policy.timeoutMs, limitedUseAppCheck },\n ),\n [functionName, limitedUseAppCheck],\n );\n }\n\n function useSessionBoundCall<TInput, TResult>(\n call: CallableTransport,\n ): (input: TInput) => Promise<TResult> {\n const captureSession = useMutationSessionCapture();\n return useMemo(\n () => (input: TInput) => call<TInput, TResult>(input, captureSession()),\n [call, captureSession],\n );\n }\n\n return {\n createCallableHook<TInput, TResult>(\n functionName: string,\n declaration: CallableDeclaration = {},\n ) {\n return function useNamedCallable<TOnMutateResult = unknown>(\n options: CallableMutationOptions<TInput, TResult, TOnMutateResult> = {},\n ): SessionMutationResult<TResult, Error, TInput, TOnMutateResult> {\n const {\n showErrorToast,\n answeredRefusals,\n isAnswerSurfacedByCaller,\n captureFaults,\n ...mutationOptions\n } = options;\n const call = useCallableTransport(functionName, declaration, {\n showErrorToast,\n answeredRefusals,\n isAnswerSurfacedByCaller,\n captureFaults,\n });\n // `retry: false` comes last so nothing overrides it: a deadline expiry is an unknown outcome,\n // and a retry after a committed first attempt writes twice.\n return useSessionMutation<TResult, Error, TInput, TOnMutateResult>({\n ...mutationOptions,\n retry: false,\n mutationFn: (input, { session }) => call<TInput, TResult>(input, session),\n });\n };\n },\n\n createResumableCallableHook<TInput, TResult extends { complete: boolean }>(\n functionName: string,\n merge: (earlier: TResult, later: TResult) => TResult,\n declaration: CallableDeclaration = {},\n ) {\n return function useNamedResumableCallable<TOnMutateResult = unknown>(\n options: CallableMutationOptions<TInput, ResumableOutcome<TResult>, TOnMutateResult> = {},\n ): SessionMutationResult<ResumableOutcome<TResult>, Error, TInput, TOnMutateResult> {\n const {\n showErrorToast,\n answeredRefusals,\n isAnswerSurfacedByCaller,\n captureFaults,\n ...mutationOptions\n } = options;\n const call = useCallableTransport(functionName, declaration, {\n showErrorToast,\n answeredRefusals,\n isAnswerSurfacedByCaller,\n captureFaults,\n });\n return useSessionMutation<ResumableOutcome<TResult>, Error, TInput, TOnMutateResult>({\n ...mutationOptions,\n retry: false,\n mutationFn: async (input, { session }): Promise<ResumableOutcome<TResult>> => {\n let progress = await call<TInput, TResult>(input, session);\n for (let calls = 1; !progress.complete && calls < MAX_RESUMABLE_CALLS; calls += 1) {\n session.assertCurrent();\n let later: TResult;\n try {\n later = await call<TInput, TResult>(input, session);\n } catch (error) {\n const interruption = error instanceof Error ? error : new Error(String(error));\n return { ...progress, complete: false, interruption };\n }\n progress = merge(progress, later);\n }\n return { ...progress, interruption: null };\n },\n });\n };\n },\n\n createCallableReader<TInput, TResult>(\n functionName: string,\n declaration: CallableDeclaration = {},\n ) {\n return function useNamedCallableReader(): (input: TInput) => Promise<TResult> {\n const call = useCallableTransport(functionName, declaration, {\n showErrorToast: false,\n captureFaults: false,\n });\n return useSessionBoundCall<TInput, TResult>(call);\n };\n },\n\n createCallableInvoker<TInput, TResult>(\n functionName: string,\n declaration: CallableDeclaration = {},\n ) {\n return function useNamedCallableInvoker(): (input: TInput) => Promise<TResult> {\n const call = useCallableTransport(functionName, declaration, {});\n return useSessionBoundCall<TInput, TResult>(call);\n };\n },\n };\n}\n"]}
1
+ {"version":3,"file":"create-callables.js","sourceRoot":"","sources":["../../../src/react/callables/create-callables.ts"],"names":[],"mappings":"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","sourcesContent":["'use client';\n\nimport { useCallback, useMemo, useRef } from 'react';\nimport type { ExpectedCallableAnswerCode } from '@ttt-productions/firebase-helpers';\nimport {\n callCallable,\n isRecoveredFallbackReport,\n type FunctionsProvider,\n} from '@ttt-productions/firebase-helpers/client';\nimport {\n useMutationSessionCapture,\n useSessionMutation,\n type MutationSession,\n type SessionMutationOptions,\n type SessionMutationResult,\n} from '../session-mutation.js';\n\nexport interface CallableErrorRouting {\n showErrorToast: boolean;\n answeredRefusals: readonly ExpectedCallableAnswerCode[];\n isAnswerSurfacedByCaller?: (error: unknown) => boolean;\n}\n\nexport type CallableCaptureContext = Record<string, unknown>;\n\nexport interface SlowCallNotice {\n afterMs: number;\n show: (context: CallableCaptureContext) => () => void;\n}\n\nexport interface CallablePolicy {\n getFunctions: FunctionsProvider;\n timeoutMs: number;\n resolveLimitedUseAppCheck: (requested: boolean) => boolean;\n captureFault: (error: unknown, context: CallableCaptureContext) => void;\n captureRecoveredFallback: (error: unknown, context: CallableCaptureContext) => void;\n onActionError: (error: unknown, routing: CallableErrorRouting) => void;\n onSlowCall: SlowCallNotice;\n}\n\nexport interface CallableDeclaration {\n limitedUseAppCheck?: true;\n}\n\ninterface CallableTransportOptions extends Partial<CallableErrorRouting> {\n captureFaults?: boolean;\n}\n\nexport type CallableMutationOptions<TInput, TResult, TOnMutateResult = unknown> = Omit<\n SessionMutationOptions<TResult, Error, TInput, TOnMutateResult>,\n 'mutationFn' | 'retry'\n> &\n Pick<\n CallableTransportOptions,\n 'showErrorToast' | 'answeredRefusals' | 'isAnswerSurfacedByCaller' | 'captureFaults'\n >;\n\nexport const MAX_RESUMABLE_CALLS = 12;\n\nexport type ResumableOutcome<TResult> = TResult & { interruption: Error | null };\n\nexport interface Callables {\n createCallableHook<TInput, TResult>(\n functionName: string,\n declaration?: CallableDeclaration,\n ): <TOnMutateResult = unknown>(\n options?: CallableMutationOptions<TInput, TResult, TOnMutateResult>,\n ) => SessionMutationResult<TResult, Error, TInput, TOnMutateResult>;\n createResumableCallableHook<TInput, TResult extends { complete: boolean }>(\n functionName: string,\n merge: (earlier: TResult, later: TResult) => TResult,\n declaration?: CallableDeclaration,\n ): <TOnMutateResult = unknown>(\n options?: CallableMutationOptions<TInput, ResumableOutcome<TResult>, TOnMutateResult>,\n ) => SessionMutationResult<ResumableOutcome<TResult>, Error, TInput, TOnMutateResult>;\n createCallableReader<TInput, TResult>(\n functionName: string,\n declaration?: CallableDeclaration,\n ): () => (input: TInput) => Promise<TResult>;\n createCallableInvoker<TInput, TResult>(\n functionName: string,\n declaration?: CallableDeclaration,\n ): () => (input: TInput) => Promise<TResult>;\n}\n\ntype CallableTransport = <TInput, TResult>(\n input: TInput,\n session: MutationSession,\n) => Promise<TResult>;\n\nexport function createCallables(policy: CallablePolicy): Callables {\n function withSlowCallNotice<TResult>(\n pending: Promise<TResult>,\n functionName: string,\n session: MutationSession,\n ): Promise<TResult> {\n let dismiss: (() => void) | undefined;\n const timer = setTimeout(() => {\n if (session.isCurrent()) dismiss = policy.onSlowCall.show({ functionName });\n }, policy.onSlowCall.afterMs);\n const settle = () => {\n clearTimeout(timer);\n dismiss?.();\n };\n pending.then(settle, settle);\n return pending;\n }\n\n function useCallableTransport(\n functionName: string,\n declaration: CallableDeclaration,\n options: CallableTransportOptions,\n ): CallableTransport {\n const optionsRef = useRef(options);\n optionsRef.current = options;\n const limitedUseAppCheck = policy.resolveLimitedUseAppCheck(\n declaration.limitedUseAppCheck === true,\n );\n\n return useCallback(\n <TInput, TResult>(input: TInput, session: MutationSession) =>\n withSlowCallNotice(\n callCallable<TInput, TResult>(\n policy.getFunctions,\n functionName,\n input,\n {\n captureException: (error, context) => {\n if (optionsRef.current.captureFaults !== false) policy.captureFault(error, context);\n else if (isRecoveredFallbackReport(context))\n policy.captureRecoveredFallback(error, context);\n },\n onError: (error) => {\n if (!session.isCurrent()) return;\n const {\n showErrorToast = true,\n answeredRefusals = [],\n isAnswerSurfacedByCaller,\n } = optionsRef.current;\n policy.onActionError(error, {\n showErrorToast,\n answeredRefusals,\n isAnswerSurfacedByCaller,\n });\n },\n },\n { timeoutMs: policy.timeoutMs, limitedUseAppCheck },\n ),\n functionName,\n session,\n ),\n [functionName, limitedUseAppCheck],\n );\n }\n\n function useSessionBoundCall<TInput, TResult>(\n call: CallableTransport,\n ): (input: TInput) => Promise<TResult> {\n const captureSession = useMutationSessionCapture();\n return useMemo(\n () => (input: TInput) => call<TInput, TResult>(input, captureSession()),\n [call, captureSession],\n );\n }\n\n return {\n createCallableHook<TInput, TResult>(\n functionName: string,\n declaration: CallableDeclaration = {},\n ) {\n return function useNamedCallable<TOnMutateResult = unknown>(\n options: CallableMutationOptions<TInput, TResult, TOnMutateResult> = {},\n ): SessionMutationResult<TResult, Error, TInput, TOnMutateResult> {\n const {\n showErrorToast,\n answeredRefusals,\n isAnswerSurfacedByCaller,\n captureFaults,\n ...mutationOptions\n } = options;\n const call = useCallableTransport(functionName, declaration, {\n showErrorToast,\n answeredRefusals,\n isAnswerSurfacedByCaller,\n captureFaults,\n });\n // `retry: false` comes last so nothing overrides it: a deadline expiry is an unknown outcome,\n // and a retry after a committed first attempt writes twice.\n return useSessionMutation<TResult, Error, TInput, TOnMutateResult>({\n ...mutationOptions,\n retry: false,\n mutationFn: (input, { session }) => call<TInput, TResult>(input, session),\n });\n };\n },\n\n createResumableCallableHook<TInput, TResult extends { complete: boolean }>(\n functionName: string,\n merge: (earlier: TResult, later: TResult) => TResult,\n declaration: CallableDeclaration = {},\n ) {\n return function useNamedResumableCallable<TOnMutateResult = unknown>(\n options: CallableMutationOptions<TInput, ResumableOutcome<TResult>, TOnMutateResult> = {},\n ): SessionMutationResult<ResumableOutcome<TResult>, Error, TInput, TOnMutateResult> {\n const {\n showErrorToast,\n answeredRefusals,\n isAnswerSurfacedByCaller,\n captureFaults,\n ...mutationOptions\n } = options;\n const call = useCallableTransport(functionName, declaration, {\n showErrorToast,\n answeredRefusals,\n isAnswerSurfacedByCaller,\n captureFaults,\n });\n return useSessionMutation<ResumableOutcome<TResult>, Error, TInput, TOnMutateResult>({\n ...mutationOptions,\n retry: false,\n mutationFn: async (input, { session }): Promise<ResumableOutcome<TResult>> => {\n let progress = await call<TInput, TResult>(input, session);\n for (let calls = 1; !progress.complete && calls < MAX_RESUMABLE_CALLS; calls += 1) {\n session.assertCurrent();\n let later: TResult;\n try {\n later = await call<TInput, TResult>(input, session);\n } catch (error) {\n const interruption = error instanceof Error ? error : new Error(String(error));\n return { ...progress, complete: false, interruption };\n }\n progress = merge(progress, later);\n }\n return { ...progress, interruption: null };\n },\n });\n };\n },\n\n createCallableReader<TInput, TResult>(\n functionName: string,\n declaration: CallableDeclaration = {},\n ) {\n return function useNamedCallableReader(): (input: TInput) => Promise<TResult> {\n const call = useCallableTransport(functionName, declaration, {\n showErrorToast: false,\n captureFaults: false,\n });\n return useSessionBoundCall<TInput, TResult>(call);\n };\n },\n\n createCallableInvoker<TInput, TResult>(\n functionName: string,\n declaration: CallableDeclaration = {},\n ) {\n return function useNamedCallableInvoker(): (input: TInput) => Promise<TResult> {\n const call = useCallableTransport(functionName, declaration, {});\n return useSessionBoundCall<TInput, TResult>(call);\n };\n },\n };\n}\n"]}
@@ -33,7 +33,7 @@ export type { ReadRetrySource, ReadRetryState } from './read-retry-derivation.js
33
33
  export { MutationSessionProvider, MutationSessionEndedError, useSessionMutation, } from './session-mutation.js';
34
34
  export type { LiveSessionSource, MutationSession, MutationSessionProviderProps, SessionMutateOptions, SessionMutationFunctionContext, SessionMutationOptions, SessionMutationResult, UnknownOutcomePolicy, } from './session-mutation.js';
35
35
  export { createCallables, MAX_RESUMABLE_CALLS } from './callables/create-callables.js';
36
- export type { CallableCaptureContext, CallableDeclaration, CallableErrorRouting, CallableMutationOptions, CallablePolicy, Callables, ResumableOutcome, } from './callables/create-callables.js';
36
+ export type { CallableCaptureContext, CallableDeclaration, CallableErrorRouting, CallableMutationOptions, CallablePolicy, Callables, ResumableOutcome, SlowCallNotice, } from './callables/create-callables.js';
37
37
  export { usePendingMutationVariables, pendingMutationVariables, usePendingMutationTargets, hasPendingMutation, duplicateSubmissionError, useDuplicateGuardedMutation, } from './pending-mutations.js';
38
38
  export { APP_CONFIG_BACKGROUND_RETRY_MS, APP_CONFIG_MAX_QUICK_ATTEMPTS, createAppConfig, } from './app-config/create-app-config.js';
39
39
  export type { AppConfig, AppConfigDefinition, AppConfigLeverOf, AppConfigSnapshotState, AppConfigState, AppConfigStatus, StoredAppConfig, } from './app-config/create-app-config.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,YAAY,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAElE,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,YAAY,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExD,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC3E,YAAY,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAErE,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AACjF,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAC/E,YAAY,EAAE,2BAA2B,EAAE,MAAM,wCAAwC,CAAC;AAC1F,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4CAA4C,CAAC;AACtF,YAAY,EAAE,2BAA2B,EAAE,MAAM,4CAA4C,CAAC;AAE9F,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,wCAAwC,CAAC;AAEhD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,YAAY,EACV,yBAAyB,EACzB,wBAAwB,EACxB,2BAA2B,GAC5B,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAE1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAEtE,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,2BAA2B,EAC3B,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,EAAE,4BAA4B,EAAE,MAAM,oDAAoD,CAAC;AAClG,OAAO,EACL,KAAK,EACL,MAAM,EACN,SAAS,EACT,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,uCAAuC,CAAC;AAC/C,YAAY,EACV,sBAAsB,EACtB,+BAA+B,GAChC,MAAM,oDAAoD,CAAC;AAC5D,YAAY,EACV,WAAW,EACX,iBAAiB,EACjB,WAAW,GACZ,MAAM,uCAAuC,CAAC;AAE/C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,YAAY,EACV,mBAAmB,EACnB,0BAA0B,EAC1B,wBAAwB,EACxB,yBAAyB,EACzB,qBAAqB,EACrB,4BAA4B,EAC5B,YAAY,EACZ,aAAa,EACb,iBAAiB,GAClB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAC5F,YAAY,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAEhE,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAClF,YAAY,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAElF,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EACzB,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACV,iBAAiB,EACjB,eAAe,EACf,4BAA4B,EAC5B,oBAAoB,EACpB,8BAA8B,EAC9B,sBAAsB,EACtB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACvF,YAAY,EACV,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,EACpB,uBAAuB,EACvB,cAAc,EACd,SAAS,EACT,gBAAgB,EAChB,cAAc,GACf,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EACL,2BAA2B,EAC3B,wBAAwB,EACxB,yBAAyB,EACzB,kBAAkB,EAClB,wBAAwB,EACxB,2BAA2B,GAC5B,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,8BAA8B,EAC9B,6BAA6B,EAC7B,eAAe,GAChB,MAAM,mCAAmC,CAAC;AAC3C,YAAY,EACV,SAAS,EACT,mBAAmB,EACnB,gBAAgB,EAChB,sBAAsB,EACtB,cAAc,EACd,eAAe,EACf,eAAe,GAChB,MAAM,mCAAmC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAGtD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAG9C,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAG3E,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AACjF,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAE/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4CAA4C,CAAC;AAGtF,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,wCAAwC,CAAC;AAEhD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAM7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAE1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAEtE,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,2BAA2B,EAC3B,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,4BAA4B,EAAE,MAAM,oDAAoD,CAAC;AAClG,OAAO,EACL,KAAK,EACL,MAAM,EACN,SAAS,EACT,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,uCAAuC,CAAC;AAW/C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAYjD,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAG5F,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAIlF,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EACzB,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAY/B,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAWvF,OAAO,EACL,2BAA2B,EAC3B,wBAAwB,EACxB,yBAAyB,EACzB,kBAAkB,EAClB,wBAAwB,EACxB,2BAA2B,GAC5B,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,8BAA8B,EAC9B,6BAA6B,EAC7B,eAAe,GAChB,MAAM,mCAAmC,CAAC","sourcesContent":["'use client';\n\nexport { createQueryClient } from './query-client.js';\nexport type { CreateQueryClientOptions } from './query-client.js';\n\nexport { QueryProvider } from './provider.js';\nexport type { QueryProviderProps } from './provider.js';\n\nexport { FirestoreProvider, useFirestoreDb } from './firestore/context.js';\nexport type { FirestoreProviderProps } from './firestore/context.js';\n\nexport { useFirestoreDoc } from './firestore/use-firestore-doc.js';\nexport { useFirestoreCollection } from './firestore/use-firestore-collection.js';\nexport { useFirestoreInfinite } from './firestore/use-firestore-infinite.js';\nexport { useFirestorePaginated } from './firestore/use-firestore-paginated.js';\nexport type { UseFirestorePaginatedResult } from './firestore/use-firestore-paginated.js';\nexport { useFirestoreCount } from './firestore/use-firestore-count.js';\nexport { useFirestoreLiveInfinite } from './firestore/use-firestore-live-infinite.js';\nexport type { FirestoreLiveInfiniteResult } from './firestore/use-firestore-live-infinite.js';\n\nexport {\n useFirestoreSet,\n useFirestoreUpdate,\n useFirestoreDelete,\n useFirestoreBatch,\n} from './firestore/use-firestore-mutations.js';\n\nexport { useBatchFirestoreDocs } from './firestore/useBatchFirestoreDocs.js';\nexport type {\n BatchFirestoreDocsOptions,\n BatchFirestoreDocsResult,\n BatchFirestoreDocsTransport,\n} from './firestore/useBatchFirestoreDocs.js';\nexport { ABSENT_RETRY_DELAYS_MS } from './firestore/absence-scheduler.js';\n\nexport { useFirestoreSearch } from './search/use-firestore-search.js';\n\nexport {\n invalidateByPrefix,\n removeByPrefix,\n updateQueryData,\n paginatedPageKey,\n mapPaginatedItems,\n prependToFirstPaginatedPage,\n placeRowInPages,\n} from './cache-helpers.js';\nexport type { PagedRows } from './cache-helpers.js';\n\nexport { createDomainEventInvalidator } from './domain-events/create-domain-event-invalidator.js';\nexport {\n exact,\n prefix,\n predicate,\n serializeInvalidation,\n applyInvalidations,\n} from './domain-events/cache-invalidation.js';\nexport type {\n DomainEventInvalidator,\n DomainEventInvalidationRegistry,\n} from './domain-events/create-domain-event-invalidator.js';\nexport type {\n CacheAction,\n CacheInvalidation,\n RefetchType,\n} from './domain-events/cache-invalidation.js';\n\nexport { docWithId } from './firestore/types.js';\nexport type {\n FirestoreDocOptions,\n FirestoreCollectionOptions,\n FirestoreInfiniteOptions,\n FirestorePaginatedOptions,\n FirestoreCountOptions,\n FirestoreLiveInfiniteOptions,\n InfinitePage,\n PaginatedPage,\n MutationOperation,\n} from './firestore/types.js';\nexport { flattenInfiniteData, getInfiniteDataCount } from './firestore/infinite-helpers.js';\nexport type { FirestoreSearchOptions } from './search/types.js';\n\nexport { useReadRetryState, useReadRetryStates } from './use-read-retry-state.js';\nexport type { ReadRetryEntry } from './use-read-retry-state.js';\nexport type { ReadRetrySource, ReadRetryState } from './read-retry-derivation.js';\n\nexport {\n MutationSessionProvider,\n MutationSessionEndedError,\n useSessionMutation,\n} from './session-mutation.js';\nexport type {\n LiveSessionSource,\n MutationSession,\n MutationSessionProviderProps,\n SessionMutateOptions,\n SessionMutationFunctionContext,\n SessionMutationOptions,\n SessionMutationResult,\n UnknownOutcomePolicy,\n} from './session-mutation.js';\n\nexport { createCallables, MAX_RESUMABLE_CALLS } from './callables/create-callables.js';\nexport type {\n CallableCaptureContext,\n CallableDeclaration,\n CallableErrorRouting,\n CallableMutationOptions,\n CallablePolicy,\n Callables,\n ResumableOutcome,\n} from './callables/create-callables.js';\n\nexport {\n usePendingMutationVariables,\n pendingMutationVariables,\n usePendingMutationTargets,\n hasPendingMutation,\n duplicateSubmissionError,\n useDuplicateGuardedMutation,\n} from './pending-mutations.js';\n\nexport {\n APP_CONFIG_BACKGROUND_RETRY_MS,\n APP_CONFIG_MAX_QUICK_ATTEMPTS,\n createAppConfig,\n} from './app-config/create-app-config.js';\nexport type {\n AppConfig,\n AppConfigDefinition,\n AppConfigLeverOf,\n AppConfigSnapshotState,\n AppConfigState,\n AppConfigStatus,\n StoredAppConfig,\n} from './app-config/create-app-config.js';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAGtD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAG9C,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAG3E,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AACjF,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAE/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4CAA4C,CAAC;AAGtF,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,wCAAwC,CAAC;AAEhD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAM7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAE1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAEtE,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,2BAA2B,EAC3B,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,4BAA4B,EAAE,MAAM,oDAAoD,CAAC;AAClG,OAAO,EACL,KAAK,EACL,MAAM,EACN,SAAS,EACT,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,uCAAuC,CAAC;AAW/C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAYjD,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAG5F,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAIlF,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EACzB,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAY/B,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAYvF,OAAO,EACL,2BAA2B,EAC3B,wBAAwB,EACxB,yBAAyB,EACzB,kBAAkB,EAClB,wBAAwB,EACxB,2BAA2B,GAC5B,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,8BAA8B,EAC9B,6BAA6B,EAC7B,eAAe,GAChB,MAAM,mCAAmC,CAAC","sourcesContent":["'use client';\n\nexport { createQueryClient } from './query-client.js';\nexport type { CreateQueryClientOptions } from './query-client.js';\n\nexport { QueryProvider } from './provider.js';\nexport type { QueryProviderProps } from './provider.js';\n\nexport { FirestoreProvider, useFirestoreDb } from './firestore/context.js';\nexport type { FirestoreProviderProps } from './firestore/context.js';\n\nexport { useFirestoreDoc } from './firestore/use-firestore-doc.js';\nexport { useFirestoreCollection } from './firestore/use-firestore-collection.js';\nexport { useFirestoreInfinite } from './firestore/use-firestore-infinite.js';\nexport { useFirestorePaginated } from './firestore/use-firestore-paginated.js';\nexport type { UseFirestorePaginatedResult } from './firestore/use-firestore-paginated.js';\nexport { useFirestoreCount } from './firestore/use-firestore-count.js';\nexport { useFirestoreLiveInfinite } from './firestore/use-firestore-live-infinite.js';\nexport type { FirestoreLiveInfiniteResult } from './firestore/use-firestore-live-infinite.js';\n\nexport {\n useFirestoreSet,\n useFirestoreUpdate,\n useFirestoreDelete,\n useFirestoreBatch,\n} from './firestore/use-firestore-mutations.js';\n\nexport { useBatchFirestoreDocs } from './firestore/useBatchFirestoreDocs.js';\nexport type {\n BatchFirestoreDocsOptions,\n BatchFirestoreDocsResult,\n BatchFirestoreDocsTransport,\n} from './firestore/useBatchFirestoreDocs.js';\nexport { ABSENT_RETRY_DELAYS_MS } from './firestore/absence-scheduler.js';\n\nexport { useFirestoreSearch } from './search/use-firestore-search.js';\n\nexport {\n invalidateByPrefix,\n removeByPrefix,\n updateQueryData,\n paginatedPageKey,\n mapPaginatedItems,\n prependToFirstPaginatedPage,\n placeRowInPages,\n} from './cache-helpers.js';\nexport type { PagedRows } from './cache-helpers.js';\n\nexport { createDomainEventInvalidator } from './domain-events/create-domain-event-invalidator.js';\nexport {\n exact,\n prefix,\n predicate,\n serializeInvalidation,\n applyInvalidations,\n} from './domain-events/cache-invalidation.js';\nexport type {\n DomainEventInvalidator,\n DomainEventInvalidationRegistry,\n} from './domain-events/create-domain-event-invalidator.js';\nexport type {\n CacheAction,\n CacheInvalidation,\n RefetchType,\n} from './domain-events/cache-invalidation.js';\n\nexport { docWithId } from './firestore/types.js';\nexport type {\n FirestoreDocOptions,\n FirestoreCollectionOptions,\n FirestoreInfiniteOptions,\n FirestorePaginatedOptions,\n FirestoreCountOptions,\n FirestoreLiveInfiniteOptions,\n InfinitePage,\n PaginatedPage,\n MutationOperation,\n} from './firestore/types.js';\nexport { flattenInfiniteData, getInfiniteDataCount } from './firestore/infinite-helpers.js';\nexport type { FirestoreSearchOptions } from './search/types.js';\n\nexport { useReadRetryState, useReadRetryStates } from './use-read-retry-state.js';\nexport type { ReadRetryEntry } from './use-read-retry-state.js';\nexport type { ReadRetrySource, ReadRetryState } from './read-retry-derivation.js';\n\nexport {\n MutationSessionProvider,\n MutationSessionEndedError,\n useSessionMutation,\n} from './session-mutation.js';\nexport type {\n LiveSessionSource,\n MutationSession,\n MutationSessionProviderProps,\n SessionMutateOptions,\n SessionMutationFunctionContext,\n SessionMutationOptions,\n SessionMutationResult,\n UnknownOutcomePolicy,\n} from './session-mutation.js';\n\nexport { createCallables, MAX_RESUMABLE_CALLS } from './callables/create-callables.js';\nexport type {\n CallableCaptureContext,\n CallableDeclaration,\n CallableErrorRouting,\n CallableMutationOptions,\n CallablePolicy,\n Callables,\n ResumableOutcome,\n SlowCallNotice,\n} from './callables/create-callables.js';\n\nexport {\n usePendingMutationVariables,\n pendingMutationVariables,\n usePendingMutationTargets,\n hasPendingMutation,\n duplicateSubmissionError,\n useDuplicateGuardedMutation,\n} from './pending-mutations.js';\n\nexport {\n APP_CONFIG_BACKGROUND_RETRY_MS,\n APP_CONFIG_MAX_QUICK_ATTEMPTS,\n createAppConfig,\n} from './app-config/create-app-config.js';\nexport type {\n AppConfig,\n AppConfigDefinition,\n AppConfigLeverOf,\n AppConfigSnapshotState,\n AppConfigState,\n AppConfigStatus,\n StoredAppConfig,\n} from './app-config/create-app-config.js';\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ttt-productions/query-core",
3
- "version": "0.14.32",
3
+ "version": "0.14.33",
4
4
  "description": "Shared TanStack Query (React Query) client defaults, query key helpers, and Firestore integration hooks for TTT Productions apps",
5
5
  "repository": {
6
6
  "type": "git",
@@ -64,7 +64,7 @@
64
64
  }
65
65
  },
66
66
  "dependencies": {
67
- "@ttt-productions/firebase-helpers": "^0.12.23"
67
+ "@ttt-productions/firebase-helpers": "^0.12.24"
68
68
  },
69
69
  "devDependencies": {
70
70
  "@tanstack/react-query": "^5.90.0",