"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.enforceMasterKeyAccess = enforceMasterKeyAccess; exports.getParseClassMutationConfig = exports.extractKeysAndInclude = void 0; exports.toGraphQLError = toGraphQLError; var _node = _interopRequireDefault(require("parse/node")); var _graphql = require("graphql"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } function enforceMasterKeyAccess(auth) { if (!auth.isMaster) { throw new _node.default.Error(_node.default.Error.OPERATION_FORBIDDEN, 'unauthorized: master key is required'); } } function toGraphQLError(error) { let code, message; if (error instanceof _node.default.Error) { code = error.code; message = error.message; } else { code = _node.default.Error.INTERNAL_SERVER_ERROR; message = 'Internal server error'; } return new _graphql.GraphQLError(message, { extensions: { code } }); } const extractKeysAndInclude = selectedFields => { selectedFields = selectedFields.filter(field => !field.includes('__typename')); // Handles "id" field for both current and included objects selectedFields = selectedFields.map(field => { if (field === 'id') return 'objectId'; return field.endsWith('.id') ? `${field.substring(0, field.lastIndexOf('.id'))}.objectId` : field; }); let keys = undefined; let include = undefined; if (selectedFields.length > 0) { keys = [...new Set(selectedFields)].join(','); // We can use this shortcut since optimization is handled // later on RestQuery, avoid overhead here. include = keys; } return { // If authData is detected keys will not work properly // since authData has a special storage behavior // so we need to skip keys currently keys: keys && keys.indexOf('authData') === -1 ? keys : undefined, include }; }; exports.extractKeysAndInclude = extractKeysAndInclude; const getParseClassMutationConfig = function (parseClassConfig) { return parseClassConfig && parseClassConfig.mutation || {}; }; exports.getParseClassMutationConfig = getParseClassMutationConfig; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbm9kZSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2dyYXBocWwiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJlbmZvcmNlTWFzdGVyS2V5QWNjZXNzIiwiYXV0aCIsImlzTWFzdGVyIiwiUGFyc2UiLCJFcnJvciIsIk9QRVJBVElPTl9GT1JCSURERU4iLCJ0b0dyYXBoUUxFcnJvciIsImVycm9yIiwiY29kZSIsIm1lc3NhZ2UiLCJJTlRFUk5BTF9TRVJWRVJfRVJST1IiLCJHcmFwaFFMRXJyb3IiLCJleHRlbnNpb25zIiwiZXh0cmFjdEtleXNBbmRJbmNsdWRlIiwic2VsZWN0ZWRGaWVsZHMiLCJmaWx0ZXIiLCJmaWVsZCIsImluY2x1ZGVzIiwibWFwIiwiZW5kc1dpdGgiLCJzdWJzdHJpbmciLCJsYXN0SW5kZXhPZiIsImtleXMiLCJ1bmRlZmluZWQiLCJpbmNsdWRlIiwibGVuZ3RoIiwiU2V0Iiwiam9pbiIsImluZGV4T2YiLCJleHBvcnRzIiwiZ2V0UGFyc2VDbGFzc011dGF0aW9uQ29uZmlnIiwicGFyc2VDbGFzc0NvbmZpZyIsIm11dGF0aW9uIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL0dyYXBoUUwvcGFyc2VHcmFwaFFMVXRpbHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFBhcnNlIGZyb20gJ3BhcnNlL25vZGUnO1xuaW1wb3J0IHsgR3JhcGhRTEVycm9yIH0gZnJvbSAnZ3JhcGhxbCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBlbmZvcmNlTWFzdGVyS2V5QWNjZXNzKGF1dGgpIHtcbiAgaWYgKCFhdXRoLmlzTWFzdGVyKSB7XG4gICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLk9QRVJBVElPTl9GT1JCSURERU4sICd1bmF1dGhvcml6ZWQ6IG1hc3RlciBrZXkgaXMgcmVxdWlyZWQnKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9HcmFwaFFMRXJyb3IoZXJyb3IpIHtcbiAgbGV0IGNvZGUsIG1lc3NhZ2U7XG4gIGlmIChlcnJvciBpbnN0YW5jZW9mIFBhcnNlLkVycm9yKSB7XG4gICAgY29kZSA9IGVycm9yLmNvZGU7XG4gICAgbWVzc2FnZSA9IGVycm9yLm1lc3NhZ2U7XG4gIH0gZWxzZSB7XG4gICAgY29kZSA9IFBhcnNlLkVycm9yLklOVEVSTkFMX1NFUlZFUl9FUlJPUjtcbiAgICBtZXNzYWdlID0gJ0ludGVybmFsIHNlcnZlciBlcnJvcic7XG4gIH1cbiAgcmV0dXJuIG5ldyBHcmFwaFFMRXJyb3IobWVzc2FnZSwgeyBleHRlbnNpb25zOiB7IGNvZGUgfSB9KTtcbn1cblxuZXhwb3J0IGNvbnN0IGV4dHJhY3RLZXlzQW5kSW5jbHVkZSA9IHNlbGVjdGVkRmllbGRzID0+IHtcbiAgc2VsZWN0ZWRGaWVsZHMgPSBzZWxlY3RlZEZpZWxkcy5maWx0ZXIoZmllbGQgPT4gIWZpZWxkLmluY2x1ZGVzKCdfX3R5cGVuYW1lJykpO1xuICAvLyBIYW5kbGVzIFwiaWRcIiBmaWVsZCBmb3IgYm90aCBjdXJyZW50IGFuZCBpbmNsdWRlZCBvYmplY3RzXG4gIHNlbGVjdGVkRmllbGRzID0gc2VsZWN0ZWRGaWVsZHMubWFwKGZpZWxkID0+IHtcbiAgICBpZiAoZmllbGQgPT09ICdpZCcpIHJldHVybiAnb2JqZWN0SWQnO1xuICAgIHJldHVybiBmaWVsZC5lbmRzV2l0aCgnLmlkJylcbiAgICAgID8gYCR7ZmllbGQuc3Vic3RyaW5nKDAsIGZpZWxkLmxhc3RJbmRleE9mKCcuaWQnKSl9Lm9iamVjdElkYFxuICAgICAgOiBmaWVsZDtcbiAgfSk7XG4gIGxldCBrZXlzID0gdW5kZWZpbmVkO1xuICBsZXQgaW5jbHVkZSA9IHVuZGVmaW5lZDtcblxuICBpZiAoc2VsZWN0ZWRGaWVsZHMubGVuZ3RoID4gMCkge1xuICAgIGtleXMgPSBbLi4ubmV3IFNldChzZWxlY3RlZEZpZWxkcyldLmpvaW4oJywnKTtcbiAgICAvLyBXZSBjYW4gdXNlIHRoaXMgc2hvcnRjdXQgc2luY2Ugb3B0aW1pemF0aW9uIGlzIGhhbmRsZWRcbiAgICAvLyBsYXRlciBvbiBSZXN0UXVlcnksIGF2b2lkIG92ZXJoZWFkIGhlcmUuXG4gICAgaW5jbHVkZSA9IGtleXM7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC8vIElmIGF1dGhEYXRhIGlzIGRldGVjdGVkIGtleXMgd2lsbCBub3Qgd29yayBwcm9wZXJseVxuICAgIC8vIHNpbmNlIGF1dGhEYXRhIGhhcyBhIHNwZWNpYWwgc3RvcmFnZSBiZWhhdmlvclxuICAgIC8vIHNvIHdlIG5lZWQgdG8gc2tpcCBrZXlzIGN1cnJlbnRseVxuICAgIGtleXM6IGtleXMgJiYga2V5cy5pbmRleE9mKCdhdXRoRGF0YScpID09PSAtMSA/IGtleXMgOiB1bmRlZmluZWQsXG4gICAgaW5jbHVkZSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRQYXJzZUNsYXNzTXV0YXRpb25Db25maWcgPSBmdW5jdGlvbiAocGFyc2VDbGFzc0NvbmZpZykge1xuICByZXR1cm4gKHBhcnNlQ2xhc3NDb25maWcgJiYgcGFyc2VDbGFzc0NvbmZpZy5tdXRhdGlvbikgfHwge307XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLElBQUFBLEtBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFFBQUEsR0FBQUQsT0FBQTtBQUF1QyxTQUFBRCx1QkFBQUcsQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQUVoQyxTQUFTRyxzQkFBc0JBLENBQUNDLElBQUksRUFBRTtFQUMzQyxJQUFJLENBQUNBLElBQUksQ0FBQ0MsUUFBUSxFQUFFO0lBQ2xCLE1BQU0sSUFBSUMsYUFBSyxDQUFDQyxLQUFLLENBQUNELGFBQUssQ0FBQ0MsS0FBSyxDQUFDQyxtQkFBbUIsRUFBRSxzQ0FBc0MsQ0FBQztFQUNoRztBQUNGO0FBRU8sU0FBU0MsY0FBY0EsQ0FBQ0MsS0FBSyxFQUFFO0VBQ3BDLElBQUlDLElBQUksRUFBRUMsT0FBTztFQUNqQixJQUFJRixLQUFLLFlBQVlKLGFBQUssQ0FBQ0MsS0FBSyxFQUFFO0lBQ2hDSSxJQUFJLEdBQUdELEtBQUssQ0FBQ0MsSUFBSTtJQUNqQkMsT0FBTyxHQUFHRixLQUFLLENBQUNFLE9BQU87RUFDekIsQ0FBQyxNQUFNO0lBQ0xELElBQUksR0FBR0wsYUFBSyxDQUFDQyxLQUFLLENBQUNNLHFCQUFxQjtJQUN4Q0QsT0FBTyxHQUFHLHVCQUF1QjtFQUNuQztFQUNBLE9BQU8sSUFBSUUscUJBQVksQ0FBQ0YsT0FBTyxFQUFFO0lBQUVHLFVBQVUsRUFBRTtNQUFFSjtJQUFLO0VBQUUsQ0FBQyxDQUFDO0FBQzVEO0FBRU8sTUFBTUsscUJBQXFCLEdBQUdDLGNBQWMsSUFBSTtFQUNyREEsY0FBYyxHQUFHQSxjQUFjLENBQUNDLE1BQU0sQ0FBQ0MsS0FBSyxJQUFJLENBQUNBLEtBQUssQ0FBQ0MsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDO0VBQzlFO0VBQ0FILGNBQWMsR0FBR0EsY0FBYyxDQUFDSSxHQUFHLENBQUNGLEtBQUssSUFBSTtJQUMzQyxJQUFJQSxLQUFLLEtBQUssSUFBSSxFQUFFLE9BQU8sVUFBVTtJQUNyQyxPQUFPQSxLQUFLLENBQUNHLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FDeEIsR0FBR0gsS0FBSyxDQUFDSSxTQUFTLENBQUMsQ0FBQyxFQUFFSixLQUFLLENBQUNLLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLEdBQzFETCxLQUFLO0VBQ1gsQ0FBQyxDQUFDO0VBQ0YsSUFBSU0sSUFBSSxHQUFHQyxTQUFTO0VBQ3BCLElBQUlDLE9BQU8sR0FBR0QsU0FBUztFQUV2QixJQUFJVCxjQUFjLENBQUNXLE1BQU0sR0FBRyxDQUFDLEVBQUU7SUFDN0JILElBQUksR0FBRyxDQUFDLEdBQUcsSUFBSUksR0FBRyxDQUFDWixjQUFjLENBQUMsQ0FBQyxDQUFDYSxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQzdDO0lBQ0E7SUFDQUgsT0FBTyxHQUFHRixJQUFJO0VBQ2hCO0VBRUEsT0FBTztJQUNMO0lBQ0E7SUFDQTtJQUNBQSxJQUFJLEVBQUVBLElBQUksSUFBSUEsSUFBSSxDQUFDTSxPQUFPLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUdOLElBQUksR0FBR0MsU0FBUztJQUNoRUM7RUFDRixDQUFDO0FBQ0gsQ0FBQztBQUFDSyxPQUFBLENBQUFoQixxQkFBQSxHQUFBQSxxQkFBQTtBQUVLLE1BQU1pQiwyQkFBMkIsR0FBRyxTQUFBQSxDQUFVQyxnQkFBZ0IsRUFBRTtFQUNyRSxPQUFRQSxnQkFBZ0IsSUFBSUEsZ0JBQWdCLENBQUNDLFFBQVEsSUFBSyxDQUFDLENBQUM7QUFDOUQsQ0FBQztBQUFDSCxPQUFBLENBQUFDLDJCQUFBLEdBQUFBLDJCQUFBIiwiaWdub3JlTGlzdCI6W119