UNPKG

@graphql-yoga/plugin-persisted-operations

Version:

Persisted Operations plugin for GraphQL Yoga.

45 lines (44 loc) 2.09 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.usePersistedOperations = exports.defaultExtractPersistedOperationId = void 0; const graphql_yoga_1 = require("graphql-yoga"); const defaultExtractPersistedOperationId = (params) => { if (params.extensions != null && typeof params.extensions === 'object' && params.extensions?.persistedQuery != null && typeof params.extensions?.persistedQuery === 'object' && params.extensions?.persistedQuery.version === 1 && typeof params.extensions?.persistedQuery.sha256Hash === 'string') { return params.extensions?.persistedQuery.sha256Hash; } return null; }; exports.defaultExtractPersistedOperationId = defaultExtractPersistedOperationId; function usePersistedOperations({ getPersistedOperation, allowArbitraryOperations = false, extractPersistedOperationId = exports.defaultExtractPersistedOperationId, }) { return { async onParams({ request, params, setParams }) { if (params.query) { if ((typeof allowArbitraryOperations === 'boolean' ? allowArbitraryOperations : await allowArbitraryOperations(request)) === false) { throw (0, graphql_yoga_1.createGraphQLError)('PersistedQueryOnly'); } return; } const persistedOperationKey = extractPersistedOperationId(params); if (persistedOperationKey == null) { throw (0, graphql_yoga_1.createGraphQLError)('PersistedQueryNotFound'); } const persistedQuery = await getPersistedOperation(persistedOperationKey); if (persistedQuery == null) { throw (0, graphql_yoga_1.createGraphQLError)('PersistedQueryNotFound'); } setParams({ query: persistedQuery, variables: params.variables, extensions: params.extensions, }); }, }; } exports.usePersistedOperations = usePersistedOperations;