UNPKG

@graphql-mesh/plugin-live-query

Version:
44 lines (43 loc) 2.09 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = useMeshLiveQuery; const live_query_1 = require("@envelop/live-query"); const cross_helpers_1 = require("@graphql-mesh/cross-helpers"); const string_interpolation_1 = require("@graphql-mesh/string-interpolation"); const utils_1 = require("@graphql-mesh/utils"); const in_memory_live_query_store_1 = require("@n1ru4l/in-memory-live-query-store"); const useInvalidateByResult_js_1 = require("./useInvalidateByResult.js"); function useMeshLiveQuery(options) { options.logger ||= new utils_1.DefaultLogger(); options.pubsub ||= new utils_1.PubSub(); options.logger.debug(`Creating Live Query Store`); const liveQueryStore = new in_memory_live_query_store_1.InMemoryLiveQueryStore({ buildResourceIdentifier: options.resourceIdentifier != null ? function resourceIdentifierFactory({ typename, id }) { return string_interpolation_1.stringInterpolator.parse(options.resourceIdentifier, { typename, id, env: cross_helpers_1.process.env, }); } : in_memory_live_query_store_1.defaultResourceIdentifierNormalizer, includeIdentifierExtension: options.includeIdentifierExtension != null ? options.includeIdentifierExtension : cross_helpers_1.process.env.DEBUG === '1', idFieldName: options.idFieldName, indexBy: options.indexBy, }); options.pubsub.subscribe('live-query:invalidate', (identifiers) => liveQueryStore.invalidate(identifiers)); return { onPluginInit({ addPlugin }) { addPlugin((0, live_query_1.useLiveQuery)({ liveQueryStore })); if (options.invalidations?.length) { addPlugin((0, useInvalidateByResult_js_1.useInvalidateByResult)({ pubsub: options.pubsub, invalidations: options.invalidations, logger: options.logger, })); } }, }; }