@graphql-yoga/plugin-persisted-operations
Version:
Persisted Operations plugin for GraphQL Yoga.
45 lines (44 loc) • 2.09 kB
JavaScript
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;
;