Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 2 additions & 3 deletions packages/kit/src/runtime/app/server/remote/query.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/** @import { RemoteLiveQuery, RemoteLiveQueryFunction, RemoteQuery, RemoteQueryFunction } from '@sveltejs/kit' */
/** @import { RemoteInternals, MaybePromise, RequestState, RemoteQueryLiveInternals, RemoteQueryBatchInternals, RemoteQueryInternals, RemoteLiveQueryUserFunctionReturnType, SharedServerLiveIterator } from 'types' */
/** @import { RemoteInternals, MaybePromise, RequestState, RemoteQueryLiveInternals, RemoteQueryBatchInternals, RemoteQueryInternals, RemoteLiveQueryUserFunctionReturnType } from 'types' */
/** @import { StandardSchemaV1 } from '@standard-schema/spec' */
import { get_request_store } from '@sveltejs/kit/internal/server';
import { create_remote_key, stringify, stringify_remote_arg } from '../../../shared.js';
Expand Down Expand Up @@ -553,7 +553,7 @@ function create_live_query_resource(__, payload, state, signal, get_generator) {
* @param {RequestState} state
* @param {AbortSignal} signal
* @param {() => AsyncGenerator<any, void, void>} get_generator
* @returns {SharedServerLiveIterator}
* @returns {SharedIterator<any>}
*/
function get_or_create_shared_live_iterator(__, payload, state, signal, get_generator) {
const map = (state.remote.live_iterators ??= new Map());
Expand Down Expand Up @@ -586,7 +586,6 @@ function get_or_create_shared_live_iterator(__, payload, state, signal, get_gene
*
* @param {AbortSignal} signal
* @param {() => AsyncGenerator<any, void, void>} get_generator
* @returns {SharedServerLiveIterator}
*/
function create_shared_live_iterator(signal, get_generator) {
return new SharedIterator((instance) => {
Expand Down
14 changes: 2 additions & 12 deletions packages/kit/src/types/internal.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ import {
} from './private.js';
import { Span } from '@opentelemetry/api';
import type { PageOptions } from '../exports/vite/static_analysis/index.js';
import { SharedIterator } from '../utils/shared-iterator.js';

export interface ServerModule {
Server: typeof InternalServer;
Expand Down Expand Up @@ -646,17 +647,6 @@ export interface RemoteQueryLiveInternals extends BaseRemoteInternals {
bind(payload: string, arg: any): RemoteLiveQuery<any>;
}

/**
* A reference-counted, per-request live-query iterator shared between multiple
* `for await` consumers within the same request. Lazily drives the underlying
* user generator on first subscription, fans every yielded value out to all
* subscribers, and tears the generator down once all subscribers have
* unsubscribed.
*/
export interface SharedServerLiveIterator {
subscribe(): AsyncGenerator<any, void, void>;
}

export interface RemoteQueryBatchInternals extends BaseRemoteInternals {
type: 'query_batch';
validate: (arg?: any) => MaybePromise<any>;
Expand Down Expand Up @@ -750,7 +740,7 @@ export interface RequestState {
* consumers of the same `query.live` call within one request multiplex a
* single underlying user generator.
*/
live_iterators: null | Map<string, Map<string, SharedServerLiveIterator>>;
live_iterators: null | Map<string, Map<string, SharedIterator<any>>>;
};
readonly is_in_remote_function: boolean;
readonly is_in_render: boolean;
Expand Down
Loading