import { OperationVariables } from '@apollo/client'; import type { ExtraSubscriptionOptions } from 'apollo-angular'; import type { Observable } from 'rxjs'; import type { Action, GQLRequestVariables, Message, ValuesOrBoolean } from '../models'; import { ApolloService } from './apollo.service'; import * as i0 from "@angular/core"; /** * Объект настройки генерации части строки запроса с описанием типов параметров операции. */ export interface QueryGenerationParam { /** * Необязательный массив названий ключей параметров запроса, для которых в схеме был установлен обязательный тип * (например у параметра указан тип String!, а не String). * ВАЖНО! КРОМЕ ключей, для которых названия типов передаются в `fieldsTypeMap`. */ requiredFields?: Array; /** * Необязательный объект Map, в качестве ключей содержащий названия параметров запроса, * а в качестве значения - строки-названия соответствующих им типов, определенных в схеме сервера GraphQL. * ВАЖНО! Строка также должна включать символ "!", если в схеме параметр определен как обязательный. */ fieldsTypeMap?: Map; } export declare class RequestService { private _apollo; private _defaultActionFragments; private _defaultMessageFragments; private _eventMessage; private _eventAction; /** * Поток Observable, в который будут поступать события по текущему заказу в процессе оформления, подразумевающие совершение каких-либо действий на стороне фронта и выполняемых пользователем * (переход на страницу оплаты или, к примеру, открытие диалогового окна с предложением блюда по акции, акции и т.п. ) * Для получения потока используется метод @method this.getActionEmitter() * Для отправки в поток кастомных сообщений испльзуется @method this.emitActionEvent() */ private readonly _actions$; /** * Поток Observable, в который будут поступать информационные сообщения по текущему заказу (блюдо добавлено/удалено/заказ оформлен). * Для получения потока используется метод @method this.getMessageEmitter() * Для отправки в поток кастомных сообщений испльзуется @method this.emitMessageEvent() */ private readonly _messages$; constructor(_apollo: ApolloService, _defaultActionFragments: ValuesOrBoolean, _defaultMessageFragments: ValuesOrBoolean); emitMessageEvent(message: Partial): void; emitActionEvent(action: Partial): void; getMessageEmitter(): Observable>; getActionEmitter(): Observable>; /** * @method customQuery$() для выполнения запросов типа "query" к серверу API GraphQL * @typeParam T Тип запрашиваемых данных, по которому построен объект @param queryObject. * @typeParam N Строка-название операции из схемы сервера GraphQL. * @typeParam V = GQLRequestVariables Описание типа объекта с переменными для выполнения операции, описанными в схеме сервера GraphQL. * @param name - название операции, объвленное в схеме сервера GraphQL. * @param queryObject - объект-источник информации о структуре запрашиваемых данных в виде обьекта, реализующего интерфейс ValuesOrBoolean. * @see @alias ValuesOrBoolean * * @param variables - необязательный - объект с переменными, которые будут использованы в качестве параметров запроса. * Названия ключей в объекте должны соответствовать названиям параметров, объявленным в GrapQL-схеме сервера. * В качестве типа значений у параметров допустимо использовать типы - number, string, object или boolean. * Если в GrapQL-схеме на сервере какие-то из параметров отмечены как необязательные, то названия этих ключей требуется дополнительно передать в requiredFields, * чтобы генератор строки запроса сделал соответствующие отметки о типе в результирующей строке запроса. * @param paramOptions - необязательный - Обект настройки генерации части строки запроса с описанием типов параметров операции. * @param options.requiredFields - необязательный массив названий ключей параметров запроса, для которых в схеме был установлен обязательный тип * КРОМЕ ключей, для которых названия типов передаются в `options.fieldsTypeMap`. * (например у параметра указан тип String!, а не String). * @param options.fieldsTypeMap - необязательный объект Map, в качестве ключей содержащий названия параметров запроса, * а в качестве значения - строку с названием его типа, определенного в схеме сервера GraphQL. * ВАЖНО! - строка также должна включать символ "!", если в схеме параметр определен как обязательный. * * @returns - Observable поток с результатом получения данных от сервера в формате объекта с одним ключом N (название операции), значение которого - непосредственно запрошенные данные * в виде одиночного объекта либо массива. **/ customQuery$(name: N, queryObject: ValuesOrBoolean, variables?: V, paramOptions?: QueryGenerationParam & { fetchPolicy?: import('@apollo/client/core').WatchQueryFetchPolicy; errorPolicy?: import('@apollo/client/core').ErrorPolicy; context?: any; }): Observable>; /** * @method customMutation$() для выполнения запросов типа "mutation" к серверу API GraphQL * @typeParam T Тип мутируемых данных, по которому построен объект @param queryObject * @typeParam N Строка-название операции из схемы сервера GraphQL. * @typeParam V = GQLRequestVariables Описание типа объекта с переменными для выполнения операции, описанными в схеме сервера GraphQL. * @param name - название операции, объвленное в схеме сервера GraphQL. * @param queryObject - объект-источник информации о структуре запрашиваемых данных в виде обьекта, реализующего интерфейс ValuesOrBoolean. * @see @alias ValuesOrBoolean * @param variables - обязательный - объект с переменными, которые будут использованы в качестве параметров запроса. * Названия ключей в объекте должны соответствовать названиям параметров, объявленным в GrapQL-схеме сервера. * В качестве типа значений у параметров допустимо использовать типы - number, string, object или boolean. * Если в GrapQL-схеме на сервере какие-то из параметров отмечены как обязательные, то названия этих ключей требуется дополнительно передать в requiredFields, * чтобы генератор строки запроса сделал соответствующие отметки о типе в результирующей строке запроса. * @param paramOptions - необязательный - Обект настройки генерации части строки запроса с описанием типов параметров операции. * @param options.requiredFields - необязательный массив названий ключей параметров запроса, для которых в схеме был установлен обязательный тип * КРОМЕ ключей, для которых названия типов передаются в `options.fieldsTypeMap`. * (например у параметра указан тип String!, а не String). * @param options.fieldsTypeMap - необязательный объект Map, в качестве ключей содержащий названия параметров запроса, * а в качестве значения - строку с названием его типа, определенного в схеме сервера GraphQL. * ВАЖНО! - строка также должна включать символ "!", если в схеме параметр определен как обязательный. * * @returns - Observable поток с результатом выполнения операции в формате объекта с одним ключом N (название операции), значение которого - непосредственно результат операции. **/ customMutation$(name: N, queryObject: ValuesOrBoolean, variables: V, paramOptions?: QueryGenerationParam): Observable>; /** * @method customSubscribe$() для выполнения запросов типа "subscription" к серверу API GraphQL * @typeParam T Тип данных, на обновление которых производится подписка и по которому построен объект @param queryObject * @typeParam N Строка-название операции из схемы сервера GraphQL. * @typeParam V = GQLRequestVariables Описание типа объекта с переменными для выполнения операции, описанными в схеме сервера GraphQL. * @param name - название операции, объвленное в схеме сервера GraphQL. * @param queryObject - объект-источник информации о структуре данных, на которые происходит подписка, реализующий интерфейс ValuesOrBoolean. * @see @alias ValuesOrBoolean * @param variables - необязательный - объект с переменными, которые будут использованы в качестве параметров запроса. * Названия ключей в объекте должны соответствовать названиям параметров, объявленным в GrapQL-схеме сервера. * В качестве типа значений у параметров допустимо использовать типы - number, string, object или boolean. * Если в GrapQL-схеме на сервере какие-то из параметров отмечены как обязательные, то названия этих ключей требуется дополнительно передать в requiredFields, * чтобы генератор строки запроса сделал соответствующие отметки о типе в результирующей строке запроса. * @param paramOptions - необязательный - Обект настройки генерации части строки запроса с описанием типов параметров операции. * @param options.requiredFields - необязательный массив названий ключей параметров запроса, для которых в схеме был установлен обязательный тип * КРОМЕ ключей, для которых названия типов передаются в `options.fieldsTypeMap`. * (например у параметра указан тип String!, а не String). * @param options.fieldsTypeMap - необязательный объект Map, в качестве ключей содержащий названия параметров запроса, * а в качестве значения - строку с названием его типа, определенного в схеме сервера GraphQL. * ВАЖНО! - строка также должна включать символ "!", если в схеме параметр определен как обязательный. * * @returns - Observable поток с данными типа T, которые будут поступать в рамках сделанной подписки. * ВАЖНО! В потоке будут поступать только обновления для данных, на которые сделана подписка. * Начальные данные в этом потоке не поступают - их требуется получать отдельно (например, используя метод customQuery$). * В ситуациях, где требуется получить некие данные и подписаться на обновления для них, также можно для удобства использовать метод queryAndSubscribe. * @see this.queryAndSubscribe **/ customSubscribe$(name: N, queryObject: ValuesOrBoolean, variables?: V, paramOptions?: QueryGenerationParam, extra?: ExtraSubscriptionOptions): Observable[N]>; /** * @method queryAndSubscribe() * Метод, объединяющий получение неких первоначальных данных и подписку на их обновление. * @param nameQuery - название операции типа "query" - запроса данных, объвленное в схеме сервера GraphQL. * @param nameSubscribe - название операции типа "subscription", объвленное в схеме сервера GraphQL для запрашиваемых данных. * @param queryObject - объект-источник информации о структуре запрашиваемых данных, на которые происходит подписка, реализующий интерфейс ValuesOrBoolean. * @see @alias ValuesOrBoolean * @param uniqueKeyForCompareItem - наименование ключа, значение которого является уникальным для запрашиваемых данных (например,'id'). * Необходим для работы внутренней вспомогательной функции обновления изначального набора данных актуальными данными, поступившими в рамках подписки. * @param variables - необязательный - объект с переменными, которые будут использованы в качестве параметров запроса. * Названия ключей в объекте должны соответствовать названиям параметров, объявленным в GrapQL-схеме сервера. * В качестве типа значений у параметров допустимо использовать типы - number, string, object или boolean. * Если в GrapQL-схеме на сервере какие-то из параметров отмечены как обязательные, то названия этих ключей требуется дополнительно передать в requiredFields, * чтобы генератор строки запроса сделал соответствующие отметки о типе в результирующей строке запроса. * @param paramOptions - необязательный - Обект настройки генерации части строки запроса с описанием типов параметров операции. * @param paramOptions.requiredFields - необязательный массив названий ключей параметров запроса, для которых в схеме был установлен обязательный тип * КРОМЕ ключей, для которых названия типов передаются в `options.fieldsTypeMap`. * (например у параметра указан тип String!, а не String). * @param paramOptions.fieldsTypeMap - необязательный объект Map, в качестве ключей содержащий названия параметров запроса, * а в качестве значения - строку с названием его типа, определенного в схеме сервера GraphQL. * ВАЖНО! - строка также должна включать символ "!", если в схеме параметр определен как обязательный. * @returns - Observable поток с данными, которые будут поступать в рамках сделанной подписки. * Важно! В потоке будут поступать только обновления для данных, на которые сделана подписка. * Начальные данные в этом потоке не поступают - их требуется получать отдельно (например, используя метод customQuery$). **/ queryAndSubscribe, VS = Exclude>(nameQuery: NQuery, nameSubscribe: NSubscribe, queryObject: ValuesOrBoolean, uniqueKeyForCompareItem: keyof T, variables?: { query?: VQ; subscribe?: VS; }, paramOptions?: { query?: QueryGenerationParam; subscribe?: QueryGenerationParam; }): Observable; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵprov: i0.ɵɵInjectableDeclaration; }