UNPKG

apollo-mantra

Version:

Tools for integration of apollo with Mantra

126 lines (125 loc) 4.08 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var QUERY_INIT = 'APOLLO_QUERY_INIT'; var QUERY_RESULT = 'APOLLO_QUERY_RESULT'; //const QUERY_RESULT_CLIENT = 'APOLLO_QUERY_RESULT_CLIENT'; var MUTATION_INIT = 'APOLLO_MUTATION_INIT'; var MUTATION_RESULT = 'APOLLO_MUTATION_RESULT'; var queryMappings = {}; var regExQuery = /query ([\w_]*)/; var regExBare = /\{\W*([\w_]*)/; var mutationMappings = {}; var regExMutation = /mutation ([\w_]*)/; // queries function matchQueryName(qs) { var result = regExQuery.exec(qs); if (result) { return result[1]; } return regExBare.exec(qs)[1]; } function isQuery(action, name) { return getQuery(action) === name; } exports.isQuery = isQuery; function stripTypeNames(inputObj) { var obj = Object.assign({}, inputObj); if (obj.__typename) { delete (obj.__typename); } for (var t in obj) { // strip typename from the object // if (obj[t] && obj[t].__typename) { // const n = obj[t]; // delete (n.__typename); // } // if the variable is object continue there if (!Array.isArray(obj[t]) && obj[t] && typeof obj[t] === 'object') { obj[t] = stripTypeNames(obj[t]); } // if variable is array, process all children if (Array.isArray(obj[t])) { var na = []; for (var _i = 0, _a = obj[t]; _i < _a.length; _i++) { var el = _a[_i]; if (typeof el === 'object') { na.push(stripTypeNames(el)); } else { na.push(el); } } obj[t] = na; } } return obj; } exports.stripTypeNames = stripTypeNames; function getQuery(action) { if (action.type === QUERY_INIT) { if (!queryMappings[action.queryId]) { // add query with that name into the query index queryMappings[action.queryId] = matchQueryName(action.queryString); } } else if (action.type === QUERY_RESULT) { return queryMappings[action.queryId]; } return null; } exports.getQuery = getQuery; function copyQuery(state, stateKey, queryResult, queryKey, overwrite) { if (queryKey === void 0) { queryKey = '_id'; } if (overwrite === void 0) { overwrite = true; } if (queryResult) { var newKeys_1 = queryResult; if (queryKey) { // query maps newKeys_1 = Object.assign({}, state[stateKey]); // copy all results to the new state if (Array.isArray(queryResult)) { if (queryResult.length === 0) { return state; } queryResult.forEach(function (e) { if (overwrite || !newKeys_1[e[queryKey]]) { newKeys_1[e[queryKey]] = stripTypeNames(e); } }); } else { if (overwrite || !newKeys_1[queryResult[queryKey]]) { newKeys_1[queryResult[queryKey]] = stripTypeNames(queryResult); } } } return Object.assign({}, state, (_a = {}, _a[stateKey] = newKeys_1, _a)); } else { // console.warn('When copying query, there was no result for: ' + stateKey); return state; } var _a; } exports.copyQuery = copyQuery; // mutations function matchMutationName(qs) { return regExMutation.exec(qs)[1]; } function isMutation(action, name) { return getMutation(action) === name; } exports.isMutation = isMutation; function getMutation(action) { if (action.type === MUTATION_INIT) { if (!mutationMappings[action.mutationId]) { // add query with that name into the query index mutationMappings[action.mutationId] = matchMutationName(action.queryString); } } else if (action.type === MUTATION_RESULT) { return mutationMappings[action.mutationId]; } return null; } exports.getMutation = getMutation;