From 27993a217cd0951e4ba9b479e43638a2e76ef9eb Mon Sep 17 00:00:00 2001 From: Antonio Davi Macedo Coelho de Castro Date: Wed, 15 Jan 2020 23:59:22 -0800 Subject: [PATCH] Fix import function --- lib/Routers/ImportRouter.js | 10 ++++++---- src/Routers/ImportRouter.js | 19 ++++++++++--------- 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/lib/Routers/ImportRouter.js b/lib/Routers/ImportRouter.js index 7ab6785574..c163cec994 100644 --- a/lib/Routers/ImportRouter.js +++ b/lib/Routers/ImportRouter.js @@ -123,7 +123,7 @@ class ImportRouter { if (req.params.relationName) { promise = this.getOneSchema(req).then(response => { - if (!response.fields.hasOwnProperty(req.params.relationName)) { + if (!Object.prototype.hasOwnProperty.call(response.fields, req.params.relationName)) { throw new Error(`Relation ${req.params.relationName} does not exist in ${req.params.className}.`); } else if (response.fields[req.params.relationName].type !== 'Relation') { throw new Error(`Class ${response.fields[req.params.relationName].targetClass} does not have Relation type.`); @@ -200,8 +200,10 @@ class ImportRouter { const router = _express.default.Router(); const upload = (0, _multer.default)(); - router.post('/import_data/:className', upload.single('importFile'), middlewares.allowCrossDomain, middlewares.handleParseHeaders, middlewares.enforceMasterKeyAccess, (req, res) => this.wrapPromiseRequest(req, res, this.handleImport.bind(this))); - router.post('/import_relation_data/:className/:relationName', upload.single('importFile'), middlewares.allowCrossDomain, middlewares.handleParseHeaders, middlewares.enforceMasterKeyAccess, (req, res) => this.wrapPromiseRequest(req, res, this.handleImport.bind(this))); + router.post('/import_data/:className', upload.single('importFile'), // middlewares.allowCrossDomain, + middlewares.handleParseHeaders, middlewares.enforceMasterKeyAccess, (req, res) => this.wrapPromiseRequest(req, res, this.handleImport.bind(this))); + router.post('/import_relation_data/:className/:relationName', upload.single('importFile'), // middlewares.allowCrossDomain, + middlewares.handleParseHeaders, middlewares.enforceMasterKeyAccess, (req, res) => this.wrapPromiseRequest(req, res, this.handleImport.bind(this))); return router; } @@ -210,4 +212,4 @@ class ImportRouter { exports.ImportRouter = ImportRouter; var _default = ImportRouter; exports.default = _default; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9Sb3V0ZXJzL0ltcG9ydFJvdXRlci5qcyJdLCJuYW1lcyI6WyJJbXBvcnRSb3V0ZXIiLCJnZXRPbmVTY2hlbWEiLCJyZXEiLCJjbGFzc05hbWUiLCJwYXJhbXMiLCJjb25maWciLCJkYXRhYmFzZSIsImxvYWRTY2hlbWEiLCJjbGVhckNhY2hlIiwidGhlbiIsInNjaGVtYUNvbnRyb2xsZXIiLCJjYXRjaCIsImVycm9yIiwidW5kZWZpbmVkIiwiUHJvbWlzZSIsInJlamVjdCIsIlBhcnNlIiwiRXJyb3IiLCJJTlZBTElEX0NMQVNTX05BTUUiLCJJTlRFUk5BTF9TRVJWRVJfRVJST1IiLCJpbXBvcnRSZXN0T2JqZWN0IiwicmVzdE9iamVjdCIsInRhcmdldENsYXNzIiwicmVzdCIsInVwZGF0ZSIsImF1dGgiLCJvYmplY3RJZCIsIm93bmluZ0lkIiwicmVsYXRpb25OYW1lIiwiX19vcCIsIm9iamVjdHMiLCJfX3R5cGUiLCJyZWxhdGVkSWQiLCJpbmZvIiwiY2xpZW50U0RLIiwiY29kZSIsIk9CSkVDVF9OT1RfRk9VTkQiLCJjcmVhdGVkQXQiLCJ1cGRhdGVkQXQiLCJjcmVhdGUiLCJhbGxvd09iamVjdElkIiwiZ2V0UmVzdE9iamVjdHMiLCJyZXNvbHZlIiwicmVzdE9iamVjdHMiLCJpbXBvcnRGaWxlIiwiSlNPTiIsInBhcnNlIiwiZmlsZSIsImJ1ZmZlciIsInRvU3RyaW5nIiwiZSIsIkFycmF5IiwiaXNBcnJheSIsInJlc3VsdHMiLCJyb3dzIiwiYm9keSIsImZlZWRiYWNrRW1haWwiLCJlbWFpbEFkYXB0ZXIiLCJoYW5kbGVJbXBvcnQiLCJlbWFpbENvbnRyb2xsZXJBZGFwdGVyIiwicHJvbWlzZSIsInJlc3BvbnNlIiwiZmllbGRzIiwiaGFzT3duUHJvcGVydHkiLCJ0eXBlIiwiYWxsIiwicmVkdWNlIiwiaXRlbSIsIm9iamVjdCIsImluZGV4IiwicGFnZUFycmF5IiwicHVzaCIsImJpbmQiLCJsZW5ndGgiLCJzbGljZSIsIm1haW5Qcm9taXNlIiwiY29uY2F0IiwibWFwIiwiZnVuYyIsInNlbmRNYWlsIiwidGV4dCIsInRvIiwic3ViamVjdCIsIndyYXBQcm9taXNlUmVxdWVzdCIsInJlcyIsImhhbmRsZXIiLCJkYXRhIiwianNvbiIsImVyciIsInN0YXR1cyIsInNlbmQiLCJtZXNzYWdlIiwiZXhwcmVzc1JvdXRlciIsInJvdXRlciIsImV4cHJlc3MiLCJSb3V0ZXIiLCJ1cGxvYWQiLCJwb3N0Iiwic2luZ2xlIiwibWlkZGxld2FyZXMiLCJhbGxvd0Nyb3NzRG9tYWluIiwiaGFuZGxlUGFyc2VIZWFkZXJzIiwiZW5mb3JjZU1hc3RlcktleUFjY2VzcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7OztBQUVPLE1BQU1BLFlBQU4sQ0FBbUI7QUFDeEJDLEVBQUFBLFlBQVksQ0FBQ0MsR0FBRCxFQUFNO0FBQ2hCLFVBQU1DLFNBQVMsR0FBR0QsR0FBRyxDQUFDRSxNQUFKLENBQVdELFNBQTdCO0FBRUEsV0FBT0QsR0FBRyxDQUFDRyxNQUFKLENBQVdDLFFBQVgsQ0FDSkMsVUFESSxDQUNPO0FBQUVDLE1BQUFBLFVBQVUsRUFBRTtBQUFkLEtBRFAsRUFFSkMsSUFGSSxDQUVDQyxnQkFBZ0IsSUFBSUEsZ0JBQWdCLENBQUNULFlBQWpCLENBQThCRSxTQUE5QixDQUZyQixFQUdKUSxLQUhJLENBR0VDLEtBQUssSUFBSTtBQUNkLFVBQUlBLEtBQUssS0FBS0MsU0FBZCxFQUF5QjtBQUN2QixlQUFPQyxPQUFPLENBQUNDLE1BQVIsQ0FDTCxJQUFJQyxZQUFNQyxLQUFWLENBQ0VELFlBQU1DLEtBQU4sQ0FBWUMsa0JBRGQsRUFFRyxTQUFRZixTQUFVLGtCQUZyQixDQURLLENBQVA7QUFNRCxPQVBELE1BT087QUFDTCxlQUFPVyxPQUFPLENBQUNDLE1BQVIsQ0FDTCxJQUFJQyxZQUFNQyxLQUFWLENBQ0VELFlBQU1DLEtBQU4sQ0FBWUUscUJBRGQsRUFFRSx5QkFGRixDQURLLENB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RSxnREFERixFQUVFRCxNQUFNLENBQUNFLE1BQVAsQ0FBYyxZQUFkLENBRkYsRUFHRUMsV0FBVyxDQUFDQyxnQkFIZCxFQUlFRCxXQUFXLENBQUNFLGtCQUpkLEVBS0VGLFdBQVcsQ0FBQ0csc0JBTGQsRUFNRSxDQUFDcEcsR0FBRCxFQUFNa0YsR0FBTixLQUNFLEtBQUtELGtCQUFMLENBQXdCakYsR0FBeEIsRUFBNkJrRixHQUE3QixFQUFrQyxLQUFLMUIsWUFBTCxDQUFrQmMsSUFBbEIsQ0FBdUIsSUFBdkIsQ0FBbEMsQ0FQSjtBQVVBLFdBQU9xQixNQUFQO0FBQ0Q7O0FBNVF1Qjs7O2VBK1FYN0YsWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBleHByZXNzIGZyb20gJ2V4cHJlc3MnO1xuaW1wb3J0IHsgbG9hZEFkYXB0ZXIgfSBmcm9tICcuLi9BZGFwdGVycy9BZGFwdGVyTG9hZGVyJztcbmltcG9ydCAqIGFzIG1pZGRsZXdhcmVzIGZyb20gJy4uL21pZGRsZXdhcmVzJztcbmltcG9ydCBtdWx0ZXIgZnJvbSAnbXVsdGVyJztcbmltcG9ydCByZXN0IGZyb20gJy4uL3Jlc3QnO1xuaW1wb3J0IHsgUGFyc2UgfSBmcm9tICdwYXJzZS9ub2RlJztcblxuZXhwb3J0IGNsYXNzIEltcG9ydFJvdXRlciB7XG4gIGdldE9uZVNjaGVtYShyZXEpIHtcbiAgICBjb25zdCBjbGFzc05hbWUgPSByZXEucGFyYW1zLmNsYXNzTmFtZTtcblxuICAgIHJldHVybiByZXEuY29uZmlnLmRhdGFiYXNlXG4gICAgICAubG9hZFNjaGVtYSh7IGNsZWFyQ2FjaGU6IHRydWUgfSlcbiAgICAgIC50aGVuKHNjaGVtYUNvbnRyb2xsZXIgPT4gc2NoZW1hQ29udHJvbGxlci5nZXRPbmVTY2hlbWEoY2xhc3NOYW1lKSlcbiAgICAgIC5jYXRjaChlcnJvciA9PiB7XG4gICAgICAgIGlmIChlcnJvciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KFxuICAgICAgICAgICAgbmV3IFBhcnNlLkVycm9yKFxuICAgICAgICAgICAgICBQYXJzZS5FcnJvci5JTlZBTElEX0NMQVNTX05BTUUsXG4gICAgICAgICAgICAgIGBDbGFzcyAke2NsYXNzTmFtZX0gZG9lcyBub3QgZXhpc3QuYFxuICAgICAgICAgICAgKVxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KFxuICAgICAgICAgICAgbmV3IFBhcnNlLkVycm9yKFxuICAgICAgICAgICAgICBQYXJzZS5FcnJvci5JTlRFUk5BTF9TRVJWRVJfRVJST1IsXG4gICAgICAgICAgICAgICdEYXRhYmFzZSBhZGFwdGVyIGVycm9yLidcbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIGltcG9ydFJlc3RPYmplY3QocmVxLCByZXN0T2JqZWN0LCB0YXJnZXRDbGFzcykge1xuICAgIGlmICh0YXJnZXRDbGFzcykge1xuICAgICAgcmV0dXJuIHJlc3RcbiAgICAgICAgLnVwZGF0ZShcbiAgICAgICAgICByZXEuY29uZmlnLFxuICAgICAgICAgIHJlcS5hdXRoLFxuICAgICAgICAgIHJlcS5wYXJhbXMuY2xhc3NOYW1lLFxuICAgICAgICAgIHsgb2JqZWN0SWQ6IHJlc3RPYmplY3Qub3duaW5nSWQgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBbcmVxLnBhcmFtcy5yZWxhdGlvbk5hbWVdOiB7XG4gICAgICAgICAgICAgIF9fb3A6ICdBZGRSZWxhdGlvbicsXG4gICAgICAgICAgICAgIG9iamVjdHM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBfX3R5cGU6ICdQb2ludGVyJyxcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogdGFyZ2V0Q2xhc3MsXG4gICAgICAgICAgICAgICAgICBvYmplY3RJZDogcmVzdE9iamVjdC5yZWxhdGVkSWQsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXEuaW5mby5jbGllbnRTREtcbiAgICAgICAgKVxuICAgICAgICAuY2F0Y2goZnVuY3Rpb24oZXJyb3IpIHtcbiAgICAgICAgICBpZiAoZXJyb3IuY29kZSA9PT0gUGFyc2UuRXJyb3IuT0JKRUNUX05PVF9GT1VORCkge1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KFxuICAgICAgICAgICAgICBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuT0JKRUNUX05PVF9GT1VORCwgJ09iamVjdCBub3QgZm91bmQnKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChyZXN0T2JqZWN0LmNyZWF0ZWRBdCkge1xuICAgICAgZGVsZXRlIHJlc3RPYmplY3QuY3JlYXRlZEF0O1xuICAgIH1cblxuICAgIGlmIChyZXN0T2JqZWN0LnVwZGF0ZWRBdCkge1xuICAgICAgZGVsZXRlIHJlc3RPYmplY3QudXBkYXRlZEF0O1xuICAgIH1cblxuICAgIGlmIChyZXN0T2JqZWN0Lm9iamVjdElkKSB7XG4gICAgICByZXR1cm4gcmVzdFxuICAgICAgICAudXBkYXRlKFxuICAgICAgICAgIHJlcS5jb25maWcsXG4gICAgICAgICAgcmVxLmF1dGgsXG4gICAgICAgICAgcmVxLnBhcmFtcy5jbGFzc05hbWUsXG4gICAgICAgICAgeyBvYmplY3RJZDogcmVzdE9iamVjdC5vYmplY3RJZCB9LFxuICAgICAgICAgIHJlc3RPYmplY3QsXG4gICAgICAgICAgcmVxLmluZm8uY2xpZW50U0RLXG4gICAgICAgIClcbiAgICAgICAgLmNhdGNoKGZ1bmN0aW9uKGVycm9yKSB7XG4gICAgICAgICAgaWYgKGVycm9yLmNvZGUgPT09IFBhcnNlLkVycm9yLk9CSkVDVF9OT1RfRk9VTkQpIHtcbiAgICAgICAgICAgIHJldHVybiByZXN0LmNyZWF0ZShcbiAgICAgICAgICAgICAgcmVxLmNvbmZpZyxcbiAgICAgICAgICAgICAgcmVxLmF1dGgsXG4gICAgICAgICAgICAgIHJlcS5wYXJhbXMuY2xhc3NOYW1lLFxuICAgICAgICAgICAgICByZXN0T2JqZWN0LFxuICAgICAgICAgICAgICByZXEuaW5mby5jbGllbnRTREssXG4gICAgICAgICAgICAgIHsgYWxsb3dPYmplY3RJZDogdHJ1ZSB9XG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3QuY3JlYXRlKHJlcS5jb25maWcsIHJlcS5hdXRoLCByZXEucGFyYW1zLmNsYXNzTmFtZSwgcmVzdE9iamVjdCk7XG4gIH1cblxuICBnZXRSZXN0T2JqZWN0cyhyZXEpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgICBsZXQgcmVzdE9iamVjdHMgPSBbXTtcbiAgICAgIGxldCBpbXBvcnRGaWxlO1xuXG4gICAgICB0cnkge1xuICAgICAgICBpbXBvcnRGaWxlID0gSlNPTi5wYXJzZShyZXEuZmlsZS5idWZmZXIudG9TdHJpbmcoKSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIHBhcnNlIEpTT04gYmFzZWQgb24gdGhlIGZpbGUgc2VudCcpO1xuICAgICAgfVxuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShpbXBvcnRGaWxlKSkge1xuICAgICAgICByZXN0T2JqZWN0cyA9IGltcG9ydEZpbGU7XG4gICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoaW1wb3J0RmlsZS5yZXN1bHRzKSkge1xuICAgICAgICByZXN0T2JqZWN0cyA9IGltcG9ydEZpbGUucmVzdWx0cztcbiAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShpbXBvcnRGaWxlLnJvd3MpKSB7XG4gICAgICAgIHJlc3RPYmplY3RzID0gaW1wb3J0RmlsZS5yb3dzO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXJlc3RPYmplY3RzKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm8gZGF0YSB0byBpbXBvcnQnKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHJlcS5ib2R5LmZlZWRiYWNrRW1haWwpIHtcbiAgICAgICAgaWYgKCFyZXEuY29uZmlnLmVtYWlsQWRhcHRlcikge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignWW91IGhhdmUgdG8gc2V0dXAgYSBNYWlsIEFkYXB0ZXIuJyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmVzb2x2ZShyZXN0T2JqZWN0cyk7XG4gICAgfSk7XG4gIH1cblxuICBoYW5kbGVJbXBvcnQocmVxKSB7XG4gICAgY29uc3QgZW1haWxDb250cm9sbGVyQWRhcHRlciA9IGxvYWRBZGFwdGVyKHJlcS5jb25maWcuZW1haWxBZGFwdGVyKTtcblxuICAgIGxldCBwcm9taXNlID0gbnVsbDtcblxuICAgIGlmIChyZXEucGFyYW1zLnJlbGF0aW9uTmFtZSkge1xuICAgICAgcHJvbWlzZSA9IHRoaXMuZ2V0T25lU2NoZW1hKHJlcSkudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgIGlmICghcmVzcG9uc2UuZmllbGRzLmhhc093blByb3BlcnR5KHJlcS5wYXJhbXMucmVsYXRpb25OYW1lKSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBSZWxhdGlvbiAke3JlcS5wYXJhbXMucmVsYXRpb25OYW1lfSBkb2VzIG5vdCBleGlzdCBpbiAke1xuICAgICAgICAgICAgICByZXEucGFyYW1zLmNsYXNzTmFtZVxuICAgICAgICAgICAgfS5gXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICByZXNwb25zZS5maWVsZHNbcmVxLnBhcmFtcy5yZWxhdGlvbk5hbWVdLnR5cGUgIT09ICdSZWxhdGlvbidcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgYENsYXNzICR7XG4gICAgICAgICAgICAgIHJlc3BvbnNlLmZpZWxkc1tyZXEucGFyYW1zLnJlbGF0aW9uTmFtZV0udGFyZ2V0Q2xhc3NcbiAgICAgICAgICAgIH0gZG9lcyBub3QgaGF2ZSBSZWxhdGlvbiB0eXBlLmBcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdGFyZ2V0Q2xhc3MgPVxuICAgICAgICAgIHJlc3BvbnNlLmZpZWxkc1tyZXEucGFyYW1zLnJlbGF0aW9uTmFtZV0udGFyZ2V0Q2xhc3M7XG5cbiAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFt0aGlzLmdldFJlc3RPYmplY3RzKHJlcSksIHRhcmdldENsYXNzXSk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcHJvbWlzZSA9IFByb21pc2UuYWxsKFt0aGlzLmdldFJlc3RPYmplY3RzKHJlcSldKTtcbiAgICB9XG5cbiAgICBwcm9taXNlID0gcHJvbWlzZVxuICAgICAgLnRoZW4oKFtyZXN0T2JqZWN0cywgdGFyZ2V0Q2xhc3NdKSA9PiB7XG4gICAgICAgIHJldHVybiByZXN0T2JqZWN0cy5yZWR1Y2UoXG4gICAgICAgICAgKGl0ZW0sIG9iamVjdCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGl0ZW0ucGFnZUFycmF5LnB1c2goXG4gICAgICAgICAgICAgIHRoaXMuaW1wb3J0UmVzdE9iamVjdC5iaW5kKHRoaXMsIHJlcSwgb2JqZWN0LCB0YXJnZXRDbGFzcylcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgKGluZGV4ICYmIGluZGV4ICUgMTAwID09PSAwKSB8fFxuICAgICAgICAgICAgICBpbmRleCA9PT0gcmVzdE9iamVjdHMubGVuZ3RoIC0gMVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHBhZ2VBcnJheSA9IGl0ZW0ucGFnZUFycmF5LnNsaWNlKDApO1xuICAgICAgICAgICAgICBpdGVtLnBhZ2VBcnJheSA9IFtdO1xuXG4gICAgICAgICAgICAgIGl0ZW0ubWFpblByb21pc2UgPSBpdGVtLm1haW5Qcm9taXNlLnRoZW4ocmVzdWx0cyA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFxuICAgICAgICAgICAgICAgICAgcmVzdWx0cy5jb25jYXQocGFnZUFycmF5Lm1hcChmdW5jID0+IGZ1bmMoKSkpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgeyBwYWdlQXJyYXk6IFtdLCBtYWluUHJvbWlzZTogUHJvbWlzZS5yZXNvbHZlKFtdKSB9XG4gICAgICAgICkubWFpblByb21pc2U7XG4gICAgICB9KVxuICAgICAgLnRoZW4ocmVzdWx0cyA9PiB7XG4gICAgICAgIGlmIChyZXEuYm9keS5mZWVkYmFja0VtYWlsKSB7XG4gICAgICAgICAgZW1haWxDb250cm9sbGVyQWRhcHRlci5zZW5kTWFpbCh7XG4gICAgICAgICAgICB0ZXh0OiBgV2UgaGF2ZSBzdWNjZXNzZnVsbHkgaW1wb3J0ZWQgeW91ciBkYXRhIHRvIHRoZSBjbGFzcyAke1xuICAgICAgICAgICAgICByZXEucGFyYW1zLmNsYXNzTmFtZVxuICAgICAgICAgICAgfSR7XG4gICAgICAgICAgICAgIHJlcS5wYXJhbXMucmVsYXRpb25OYW1lXG4gICAgICAgICAgICAgICAgPyAnLCByZWxhdGlvbiAnICsgcmVxLnBhcmFtcy5yZWxhdGlvbk5hbWVcbiAgICAgICAgICAgICAgICA6ICcnXG4gICAgICAgICAgICB9LmAsXG4gICAgICAgICAgICB0bzogcmVxLmJvZHkuZmVlZGJhY2tFbWFpbCxcbiAgICAgICAgICAgIHN1YmplY3Q6ICdJbXBvcnQgY29tcGxldGVkJyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHsgcmVzcG9uc2U6IHJlc3VsdHMgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgICBpZiAocmVxLmJvZHkuZmVlZGJhY2tFbWFpbCkge1xuICAgICAgICAgIGVtYWlsQ29udHJvbGxlckFkYXB0ZXIuc2VuZE1haWwoe1xuICAgICAgICAgICAgdGV4dDogYFdlIGNvdWxkIG5vdCBpbXBvcnQgeW91ciBkYXRhIHRvIHRoZSBjbGFzcyAke1xuICAgICAgICAgICAgICByZXEucGFyYW1zLmNsYXNzTmFtZVxuICAgICAgICAgICAgfSR7XG4gICAgICAgICAgICAgIHJlcS5wYXJhbXMucmVsYXRpb25OYW1lXG4gICAgICAgICAgICAgICAgPyAnLCByZWxhdGlvbiAnICsgcmVxLnBhcmFtcy5yZWxhdGlvbk5hbWVcbiAgICAgICAgICAgICAgICA6ICcnXG4gICAgICAgICAgICB9LiBFcnJvcjogJHtlcnJvcn1gLFxuICAgICAgICAgICAgdG86IHJlcS5ib2R5LmZlZWRiYWNrRW1haWwsXG4gICAgICAgICAgICBzdWJqZWN0OiAnSW1wb3J0IGZhaWxlZCcsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnRlcm5hbCBzZXJ2ZXIgZXJyb3I6ICcgKyBlcnJvcik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgaWYgKHJlcS5ib2R5LmZlZWRiYWNrRW1haWwgJiYgZW1haWxDb250cm9sbGVyQWRhcHRlcikge1xuICAgICAgcHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSh7XG4gICAgICAgIHJlc3BvbnNlOlxuICAgICAgICAgICdXZSBhcmUgaW1wb3J0aW5nIHlvdXIgZGF0YS4gWW91IHdpbGwgYmUgbm90aWZpZWQgYnkgZS1tYWlsIG9uY2UgaXQgaXMgY29tcGxldGVkLicsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcHJvbWlzZTtcbiAgfVxuXG4gIHdyYXBQcm9taXNlUmVxdWVzdChyZXEsIHJlcywgaGFuZGxlcikge1xuICAgIHJldHVybiBoYW5kbGVyKHJlcSlcbiAgICAgIC50aGVuKGRhdGEgPT4ge1xuICAgICAgICByZXMuanNvbihkYXRhKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgcmVzLnN0YXR1cyg0MDApLnNlbmQoeyBtZXNzYWdlOiBlcnIubWVzc2FnZSB9KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgZXhwcmVzc1JvdXRlcigpIHtcbiAgICBjb25zdCByb3V0ZXIgPSBleHByZXNzLlJvdXRlcigpO1xuICAgIGNvbnN0IHVwbG9hZCA9IG11bHRlcigpO1xuXG4gICAgcm91dGVyLnBvc3QoXG4gICAgICAnL2ltcG9ydF9kYXRhLzpjbGFzc05hbWUnLFxuICAgICAgdXBsb2FkLnNpbmdsZSgnaW1wb3J0RmlsZScpLFxuICAgICAgbWlkZGxld2FyZXMuYWxsb3dDcm9zc0RvbWFpbixcbiAgICAgIG1pZGRsZXdhcmVzLmhhbmRsZVBhcnNlSGVhZGVycyxcbiAgICAgIG1pZGRsZXdhcmVzLmVuZm9yY2VNYXN0ZXJLZXlBY2Nlc3MsXG4gICAgICAocmVxLCByZXMpID0+XG4gICAgICAgIHRoaXMud3JhcFByb21pc2VSZXF1ZXN0KHJlcSwgcmVzLCB0aGlzLmhhbmRsZUltcG9ydC5iaW5kKHRoaXMpKVxuICAgICk7XG5cbiAgICByb3V0ZXIucG9zdChcbiAgICAgICcvaW1wb3J0X3JlbGF0aW9uX2RhdGEvOmNsYXNzTmFtZS86cmVsYXRpb25OYW1lJyxcbiAgICAgIHVwbG9hZC5zaW5nbGUoJ2ltcG9ydEZpbGUnKSxcbiAgICAgIG1pZGRsZXdhcmVzLmFsbG93Q3Jvc3NEb21haW4sXG4gICAgICBtaWRkbGV3YXJlcy5oYW5kbGVQYXJzZUhlYWRlcnMsXG4gICAgICBtaWRkbGV3YXJlcy5lbmZvcmNlTWFzdGVyS2V5QWNjZXNzLFxuICAgICAgKHJlcSwgcmVzKSA9PlxuICAgICAgICB0aGlzLndyYXBQcm9taXNlUmVxdWVzdChyZXEsIHJlcywgdGhpcy5oYW5kbGVJbXBvcnQuYmluZCh0aGlzKSlcbiAgICApO1xuXG4gICAgcmV0dXJuIHJvdXRlcjtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBJbXBvcnRSb3V0ZXI7XG4iXX0= \ No newline at end of file +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9Sb3V0ZXJzL0ltcG9ydFJvdXRlci5qcyJdLCJuYW1lcyI6WyJJbXBvcnRSb3V0ZXIiLCJnZXRPbmVTY2hlbWEiLCJyZXEiLCJjbGFzc05hbWUiLCJwYXJhbXMiLCJjb25maWciLCJkYXRhYmFzZSIsImxvYWRTY2hlbWEiLCJjbGVhckNhY2hlIiwidGhlbiIsInNjaGVtYUNvbnRyb2xsZXIiLCJjYXRjaCIsImVycm9yIiwidW5kZWZpbmVkIiwiUHJvbWlzZSIsInJlamVjdCIsIlBhcnNlIiwiRXJyb3IiLCJJTlZBTElEX0NMQVNTX05BTUUiLCJJTlRFUk5BTF9TRVJWRVJfRVJST1IiLCJpbXBvcnRSZXN0T2JqZWN0IiwicmVzdE9iamVjdCIsInRhcmdldENsYXNzIiwicmVzdCIsInVwZGF0ZSIsImF1dGgiLCJvYmplY3RJZCIsIm93bmluZ0lkIiwicmVsYXRpb25OYW1lIiwiX19vcCIsIm9iamVjdHMiLCJfX3R5cGUiLCJyZWxhdGVkSWQiLCJpbmZvIiwiY2xpZW50U0RLIiwiY29kZSIsIk9CSkVDVF9OT1RfRk9VTkQiLCJjcmVhdGVkQXQiLCJ1cGRhdGVkQXQiLCJjcmVhdGUiLCJhbGxvd09iamVjdElkIiwiZ2V0UmVzdE9iamVjdHMiLCJyZXNvbHZlIiwicmVzdE9iamVjdHMiLCJpbXBvcnRGaWxlIiwiSlNPTiIsInBhcnNlIiwiZmlsZSIsImJ1ZmZlciIsInRvU3RyaW5nIiwiZSIsIkFycmF5IiwiaXNBcnJheSIsInJlc3VsdHMiLCJyb3dzIiwiYm9keSIsImZlZWRiYWNrRW1haWwiLCJlbWFpbEFkYXB0ZXIiLCJoYW5kbGVJbXBvcnQiLCJlbWFpbENvbnRyb2xsZXJBZGFwdGVyIiwicHJvbWlzZSIsInJlc3BvbnNlIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiZmllbGRzIiwidHlwZSIsImFsbCIsInJlZHVjZSIsIml0ZW0iLCJvYmplY3QiLCJpbmRleCIsInBhZ2VBcnJheSIsInB1c2giLCJiaW5kIiwibGVuZ3RoIiwic2xpY2UiLCJtYWluUHJvbWlzZSIsImNvbmNhdCIsIm1hcCIsImZ1bmMiLCJzZW5kTWFpbCIsInRleHQiLCJ0byIsInN1YmplY3QiLCJ3cmFwUHJvbWlzZVJlcXVlc3QiLCJyZXMiLCJoYW5kbGVyIiwiZGF0YSIsImpzb24iLCJlcnIiLCJzdGF0dXMiLCJzZW5kIiwibWVzc2FnZSIsImV4cHJlc3NSb3V0ZXIiLCJyb3V0ZXIiLCJleHByZXNzIiwiUm91dGVyIiwidXBsb2FkIiwicG9zdCIsInNpbmdsZSIsIm1pZGRsZXdhcmVzIiwiaGFuZGxlUGFyc2VIZWFkZXJzIiwiZW5mb3JjZU1hc3RlcktleUFjY2VzcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7OztBQUVPLE1BQU1BLFlBQU4sQ0FBbUI7QUFDeEJDLEVBQUFBLFlBQVksQ0FBQ0MsR0FBRCxFQUFNO0FBQ2hCLFVBQU1DLFNBQVMsR0FBR0QsR0FBRyxDQUFDRSxNQUFKLENBQVdELFNBQTdCO0FBRUEsV0FBT0QsR0FBRyxDQUFDRyxNQUFKLENBQVdDLFFBQVgsQ0FDSkMsVUFESSxDQUNPO0FBQUVDLE1BQUFBLFVBQVUsRUFBRTtBQUFkLEtBRFAsRUFFSkMsSUFGSSxDQUVDQyxnQkFBZ0IsSUFBSUEsZ0JBQWdCLENBQUNULFlBQWpCLENBQThCRSxTQUE5QixDQUZyQixFQUdKUSxLQUhJLENBR0VDLEtBQUssSUFBSTtBQUNkLFVBQUlBLEtBQUssS0FBS0MsU0FBZCxFQUF5QjtBQUN2QixlQUFPQyxPQUFPLENBQUNDLE1BQVIsQ0FDTCxJQUFJQyxZQUFNQyxLQUFWLENBQ0VELFlBQU1DLEtBQU4sQ0FBWUMsa0JBRGQsRUFFRyxTQUFRZixTQUFVLGtCQUZyQixDQURLLENBQVA7QUFNRCxPQVBELE1BT087QUFDTCxlQUFPVyxPQUFPLENBQUNDLE1BQVIsQ0FDTCxJQUFJQyxZQUFNQyxLQUFWLENBQ0VELFlBQU1DLEtBQU4sQ0FBWUUscUJBRGQsRUFFRSx5QkFG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QVBKO0FBVUFxQixJQUFBQSxNQUFNLENBQUNJLElBQVAsQ0FDRSxnREFERixFQUVFRCxNQUFNLENBQUNFLE1BQVAsQ0FBYyxZQUFkLENBRkYsRUFHRTtBQUNBQyxJQUFBQSxXQUFXLENBQUNDLGtCQUpkLEVBS0VELFdBQVcsQ0FBQ0Usc0JBTGQsRUFNRSxDQUFDdEcsR0FBRCxFQUFNcUYsR0FBTixLQUNFLEtBQUtELGtCQUFMLENBQXdCcEYsR0FBeEIsRUFBNkJxRixHQUE3QixFQUFrQyxLQUFLN0IsWUFBTCxDQUFrQmlCLElBQWxCLENBQXVCLElBQXZCLENBQWxDLENBUEo7QUFVQSxXQUFPcUIsTUFBUDtBQUNEOztBQXhRdUI7OztlQTJRWGhHLFkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZXhwcmVzcyBmcm9tICdleHByZXNzJztcbmltcG9ydCB7IGxvYWRBZGFwdGVyIH0gZnJvbSAnLi4vQWRhcHRlcnMvQWRhcHRlckxvYWRlcic7XG5pbXBvcnQgKiBhcyBtaWRkbGV3YXJlcyBmcm9tICcuLi9taWRkbGV3YXJlcyc7XG5pbXBvcnQgbXVsdGVyIGZyb20gJ211bHRlcic7XG5pbXBvcnQgcmVzdCBmcm9tICcuLi9yZXN0JztcbmltcG9ydCB7IFBhcnNlIH0gZnJvbSAncGFyc2Uvbm9kZSc7XG5cbmV4cG9ydCBjbGFzcyBJbXBvcnRSb3V0ZXIge1xuICBnZXRPbmVTY2hlbWEocmVxKSB7XG4gICAgY29uc3QgY2xhc3NOYW1lID0gcmVxLnBhcmFtcy5jbGFzc05hbWU7XG5cbiAgICByZXR1cm4gcmVxLmNvbmZpZy5kYXRhYmFzZVxuICAgICAgLmxvYWRTY2hlbWEoeyBjbGVhckNhY2hlOiB0cnVlIH0pXG4gICAgICAudGhlbihzY2hlbWFDb250cm9sbGVyID0+IHNjaGVtYUNvbnRyb2xsZXIuZ2V0T25lU2NoZW1hKGNsYXNzTmFtZSkpXG4gICAgICAuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgICBpZiAoZXJyb3IgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChcbiAgICAgICAgICAgIG5ldyBQYXJzZS5FcnJvcihcbiAgICAgICAgICAgICAgUGFyc2UuRXJyb3IuSU5WQUxJRF9DTEFTU19OQU1FLFxuICAgICAgICAgICAgICBgQ2xhc3MgJHtjbGFzc05hbWV9IGRvZXMgbm90IGV4aXN0LmBcbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChcbiAgICAgICAgICAgIG5ldyBQYXJzZS5FcnJvcihcbiAgICAgICAgICAgICAgUGFyc2UuRXJyb3IuSU5URVJOQUxfU0VSVkVSX0VSUk9SLFxuICAgICAgICAgICAgICAnRGF0YWJhc2UgYWRhcHRlciBlcnJvci4nXG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBpbXBvcnRSZXN0T2JqZWN0KHJlcSwgcmVzdE9iamVjdCwgdGFyZ2V0Q2xhc3MpIHtcbiAgICBpZiAodGFyZ2V0Q2xhc3MpIHtcbiAgICAgIHJldHVybiByZXN0XG4gICAgICAgIC51cGRhdGUoXG4gICAgICAgICAgcmVxLmNvbmZpZyxcbiAgICAgICAgICByZXEuYXV0aCxcbiAgICAgICAgICByZXEucGFyYW1zLmNsYXNzTmFtZSxcbiAgICAgICAgICB7IG9iamVjdElkOiByZXN0T2JqZWN0Lm93bmluZ0lkIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgW3JlcS5wYXJhbXMucmVsYXRpb25OYW1lXToge1xuICAgICAgICAgICAgICBfX29wOiAnQWRkUmVsYXRpb24nLFxuICAgICAgICAgICAgICBvYmplY3RzOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgX190eXBlOiAnUG9pbnRlcicsXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU6IHRhcmdldENsYXNzLFxuICAgICAgICAgICAgICAgICAgb2JqZWN0SWQ6IHJlc3RPYmplY3QucmVsYXRlZElkLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVxLmluZm8uY2xpZW50U0RLXG4gICAgICAgIClcbiAgICAgICAgLmNhdGNoKGZ1bmN0aW9uKGVycm9yKSB7XG4gICAgICAgICAgaWYgKGVycm9yLmNvZGUgPT09IFBhcnNlLkVycm9yLk9CSkVDVF9OT1RfRk9VTkQpIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChcbiAgICAgICAgICAgICAgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLk9CSkVDVF9OT1RfRk9VTkQsICdPYmplY3Qgbm90IGZvdW5kJylcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAocmVzdE9iamVjdC5jcmVhdGVkQXQpIHtcbiAgICAgIGRlbGV0ZSByZXN0T2JqZWN0LmNyZWF0ZWRBdDtcbiAgICB9XG5cbiAgICBpZiAocmVzdE9iamVjdC51cGRhdGVkQXQpIHtcbiAgICAgIGRlbGV0ZSByZXN0T2JqZWN0LnVwZGF0ZWRBdDtcbiAgICB9XG5cbiAgICBpZiAocmVzdE9iamVjdC5vYmplY3RJZCkge1xuICAgICAgcmV0dXJuIHJlc3RcbiAgICAgICAgLnVwZGF0ZShcbiAgICAgICAgICByZXEuY29uZmlnLFxuICAgICAgICAgIHJlcS5hdXRoLFxuICAgICAgICAgIHJlcS5wYXJhbXMuY2xhc3NOYW1lLFxuICAgICAgICAgIHsgb2JqZWN0SWQ6IHJlc3RPYmplY3Qub2JqZWN0SWQgfSxcbiAgICAgICAgICByZXN0T2JqZWN0LFxuICAgICAgICAgIHJlcS5pbmZvLmNsaWVudFNES1xuICAgICAgICApXG4gICAgICAgIC5jYXRjaChmdW5jdGlvbihlcnJvcikge1xuICAgICAgICAgIGlmIChlcnJvci5jb2RlID09PSBQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5EKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzdC5jcmVhdGUoXG4gICAgICAgICAgICAgIHJlcS5jb25maWcsXG4gICAgICAgICAgICAgIHJlcS5hdXRoLFxuICAgICAgICAgICAgICByZXEucGFyYW1zLmNsYXNzTmFtZSxcbiAgICAgICAgICAgICAgcmVzdE9iamVjdCxcbiAgICAgICAgICAgICAgcmVxLmluZm8uY2xpZW50U0RLLFxuICAgICAgICAgICAgICB7IGFsbG93T2JqZWN0SWQ6IHRydWUgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiByZXN0LmNyZWF0ZShyZXEuY29uZmlnLCByZXEuYXV0aCwgcmVxLnBhcmFtcy5jbGFzc05hbWUsIHJlc3RPYmplY3QpO1xuICB9XG5cbiAgZ2V0UmVzdE9iamVjdHMocmVxKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgbGV0IHJlc3RPYmplY3RzID0gW107XG4gICAgICBsZXQgaW1wb3J0RmlsZTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgaW1wb3J0RmlsZSA9IEpTT04ucGFyc2UocmVxLmZpbGUuYnVmZmVyLnRvU3RyaW5nKCkpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byBwYXJzZSBKU09OIGJhc2VkIG9uIHRoZSBmaWxlIHNlbnQnKTtcbiAgICAgIH1cblxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaW1wb3J0RmlsZSkpIHtcbiAgICAgICAgcmVzdE9iamVjdHMgPSBpbXBvcnRGaWxlO1xuICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGltcG9ydEZpbGUucmVzdWx0cykpIHtcbiAgICAgICAgcmVzdE9iamVjdHMgPSBpbXBvcnRGaWxlLnJlc3VsdHM7XG4gICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoaW1wb3J0RmlsZS5yb3dzKSkge1xuICAgICAgICByZXN0T2JqZWN0cyA9IGltcG9ydEZpbGUucm93cztcbiAgICAgIH1cblxuICAgICAgaWYgKCFyZXN0T2JqZWN0cykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIGRhdGEgdG8gaW1wb3J0Jyk7XG4gICAgICB9XG5cbiAgICAgIGlmIChyZXEuYm9keS5mZWVkYmFja0VtYWlsKSB7XG4gICAgICAgIGlmICghcmVxLmNvbmZpZy5lbWFpbEFkYXB0ZXIpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1lvdSBoYXZlIHRvIHNldHVwIGEgTWFpbCBBZGFwdGVyLicpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJlc29sdmUocmVzdE9iamVjdHMpO1xuICAgIH0pO1xuICB9XG5cbiAgaGFuZGxlSW1wb3J0KHJlcSkge1xuICAgIGNvbnN0IGVtYWlsQ29udHJvbGxlckFkYXB0ZXIgPSBsb2FkQWRhcHRlcihyZXEuY29uZmlnLmVtYWlsQWRhcHRlcik7XG5cbiAgICBsZXQgcHJvbWlzZSA9IG51bGw7XG5cbiAgICBpZiAocmVxLnBhcmFtcy5yZWxhdGlvbk5hbWUpIHtcbiAgICAgIHByb21pc2UgPSB0aGlzLmdldE9uZVNjaGVtYShyZXEpLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChyZXNwb25zZS5maWVsZHMsIHJlcS5wYXJhbXMucmVsYXRpb25OYW1lKSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBSZWxhdGlvbiAke3JlcS5wYXJhbXMucmVsYXRpb25OYW1lfSBkb2VzIG5vdCBleGlzdCBpbiAke3JlcS5wYXJhbXMuY2xhc3NOYW1lfS5gXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICByZXNwb25zZS5maWVsZHNbcmVxLnBhcmFtcy5yZWxhdGlvbk5hbWVdLnR5cGUgIT09ICdSZWxhdGlvbidcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgYENsYXNzICR7cmVzcG9uc2UuZmllbGRzW3JlcS5wYXJhbXMucmVsYXRpb25OYW1lXS50YXJnZXRDbGFzc30gZG9lcyBub3QgaGF2ZSBSZWxhdGlvbiB0eXBlLmBcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdGFyZ2V0Q2xhc3MgPVxuICAgICAgICAgIHJlc3BvbnNlLmZpZWxkc1tyZXEucGFyYW1zLnJlbGF0aW9uTmFtZV0udGFyZ2V0Q2xhc3M7XG5cbiAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFt0aGlzLmdldFJlc3RPYmplY3RzKHJlcSksIHRhcmdldENsYXNzXSk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcHJvbWlzZSA9IFByb21pc2UuYWxsKFt0aGlzLmdldFJlc3RPYmplY3RzKHJlcSldKTtcbiAgICB9XG5cbiAgICBwcm9taXNlID0gcHJvbWlzZVxuICAgICAgLnRoZW4oKFtyZXN0T2JqZWN0cywgdGFyZ2V0Q2xhc3NdKSA9PiB7XG4gICAgICAgIHJldHVybiByZXN0T2JqZWN0cy5yZWR1Y2UoXG4gICAgICAgICAgKGl0ZW0sIG9iamVjdCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGl0ZW0ucGFnZUFycmF5LnB1c2goXG4gICAgICAgICAgICAgIHRoaXMuaW1wb3J0UmVzdE9iamVjdC5iaW5kKHRoaXMsIHJlcSwgb2JqZWN0LCB0YXJnZXRDbGFzcylcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgKGluZGV4ICYmIGluZGV4ICUgMTAwID09PSAwKSB8fFxuICAgICAgICAgICAgICBpbmRleCA9PT0gcmVzdE9iamVjdHMubGVuZ3RoIC0gMVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHBhZ2VBcnJheSA9IGl0ZW0ucGFnZUFycmF5LnNsaWNlKDApO1xuICAgICAgICAgICAgICBpdGVtLnBhZ2VBcnJheSA9IFtdO1xuXG4gICAgICAgICAgICAgIGl0ZW0ubWFpblByb21pc2UgPSBpdGVtLm1haW5Qcm9taXNlLnRoZW4ocmVzdWx0cyA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFxuICAgICAgICAgICAgICAgICAgcmVzdWx0cy5jb25jYXQocGFnZUFycmF5Lm1hcChmdW5jID0+IGZ1bmMoKSkpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgeyBwYWdlQXJyYXk6IFtdLCBtYWluUHJvbWlzZTogUHJvbWlzZS5yZXNvbHZlKFtdKSB9XG4gICAgICAgICkubWFpblByb21pc2U7XG4gICAgICB9KVxuICAgICAgLnRoZW4ocmVzdWx0cyA9PiB7XG4gICAgICAgIGlmIChyZXEuYm9keS5mZWVkYmFja0VtYWlsKSB7XG4gICAgICAgICAgZW1haWxDb250cm9sbGVyQWRhcHRlci5zZW5kTWFpbCh7XG4gICAgICAgICAgICB0ZXh0OiBgV2UgaGF2ZSBzdWNjZXNzZnVsbHkgaW1wb3J0ZWQgeW91ciBkYXRhIHRvIHRoZSBjbGFzcyAke1xuICAgICAgICAgICAgICByZXEucGFyYW1zLmNsYXNzTmFtZVxuICAgICAgICAgICAgfSR7XG4gICAgICAgICAgICAgIHJlcS5wYXJhbXMucmVsYXRpb25OYW1lXG4gICAgICAgICAgICAgICAgPyAnLCByZWxhdGlvbiAnICsgcmVxLnBhcmFtcy5yZWxhdGlvbk5hbWVcbiAgICAgICAgICAgICAgICA6ICcnXG4gICAgICAgICAgICB9LmAsXG4gICAgICAgICAgICB0bzogcmVxLmJvZHkuZmVlZGJhY2tFbWFpbCxcbiAgICAgICAgICAgIHN1YmplY3Q6ICdJbXBvcnQgY29tcGxldGVkJyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHsgcmVzcG9uc2U6IHJlc3VsdHMgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgICBpZiAocmVxLmJvZHkuZmVlZGJhY2tFbWFpbCkge1xuICAgICAgICAgIGVtYWlsQ29udHJvbGxlckFkYXB0ZXIuc2VuZE1haWwoe1xuICAgICAgICAgICAgdGV4dDogYFdlIGNvdWxkIG5vdCBpbXBvcnQgeW91ciBkYXRhIHRvIHRoZSBjbGFzcyAke1xuICAgICAgICAgICAgICByZXEucGFyYW1zLmNsYXNzTmFtZVxuICAgICAgICAgICAgfSR7XG4gICAgICAgICAgICAgIHJlcS5wYXJhbXMucmVsYXRpb25OYW1lXG4gICAgICAgICAgICAgICAgPyAnLCByZWxhdGlvbiAnICsgcmVxLnBhcmFtcy5yZWxhdGlvbk5hbWVcbiAgICAgICAgICAgICAgICA6ICcnXG4gICAgICAgICAgICB9LiBFcnJvcjogJHtlcnJvcn1gLFxuICAgICAgICAgICAgdG86IHJlcS5ib2R5LmZlZWRiYWNrRW1haWwsXG4gICAgICAgICAgICBzdWJqZWN0OiAnSW1wb3J0IGZhaWxlZCcsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnRlcm5hbCBzZXJ2ZXIgZXJyb3I6ICcgKyBlcnJvcik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgaWYgKHJlcS5ib2R5LmZlZWRiYWNrRW1haWwgJiYgZW1haWxDb250cm9sbGVyQWRhcHRlcikge1xuICAgICAgcHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSh7XG4gICAgICAgIHJlc3BvbnNlOlxuICAgICAgICAgICdXZSBhcmUgaW1wb3J0aW5nIHlvdXIgZGF0YS4gWW91IHdpbGwgYmUgbm90aWZpZWQgYnkgZS1tYWlsIG9uY2UgaXQgaXMgY29tcGxldGVkLicsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcHJvbWlzZTtcbiAgfVxuXG4gIHdyYXBQcm9taXNlUmVxdWVzdChyZXEsIHJlcywgaGFuZGxlcikge1xuICAgIHJldHVybiBoYW5kbGVyKHJlcSlcbiAgICAgIC50aGVuKGRhdGEgPT4ge1xuICAgICAgICByZXMuanNvbihkYXRhKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgcmVzLnN0YXR1cyg0MDApLnNlbmQoeyBtZXNzYWdlOiBlcnIubWVzc2FnZSB9KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgZXhwcmVzc1JvdXRlcigpIHtcbiAgICBjb25zdCByb3V0ZXIgPSBleHByZXNzLlJvdXRlcigpO1xuICAgIGNvbnN0IHVwbG9hZCA9IG11bHRlcigpO1xuXG4gICAgcm91dGVyLnBvc3QoXG4gICAgICAnL2ltcG9ydF9kYXRhLzpjbGFzc05hbWUnLFxuICAgICAgdXBsb2FkLnNpbmdsZSgnaW1wb3J0RmlsZScpLFxuICAgICAgLy8gbWlkZGxld2FyZXMuYWxsb3dDcm9zc0RvbWFpbixcbiAgICAgIG1pZGRsZXdhcmVzLmhhbmRsZVBhcnNlSGVhZGVycyxcbiAgICAgIG1pZGRsZXdhcmVzLmVuZm9yY2VNYXN0ZXJLZXlBY2Nlc3MsXG4gICAgICAocmVxLCByZXMpID0+XG4gICAgICAgIHRoaXMud3JhcFByb21pc2VSZXF1ZXN0KHJlcSwgcmVzLCB0aGlzLmhhbmRsZUltcG9ydC5iaW5kKHRoaXMpKVxuICAgICk7XG5cbiAgICByb3V0ZXIucG9zdChcbiAgICAgICcvaW1wb3J0X3JlbGF0aW9uX2RhdGEvOmNsYXNzTmFtZS86cmVsYXRpb25OYW1lJyxcbiAgICAgIHVwbG9hZC5zaW5nbGUoJ2ltcG9ydEZpbGUnKSxcbiAgICAgIC8vIG1pZGRsZXdhcmVzLmFsbG93Q3Jvc3NEb21haW4sXG4gICAgICBtaWRkbGV3YXJlcy5oYW5kbGVQYXJzZUhlYWRlcnMsXG4gICAgICBtaWRkbGV3YXJlcy5lbmZvcmNlTWFzdGVyS2V5QWNjZXNzLFxuICAgICAgKHJlcSwgcmVzKSA9PlxuICAgICAgICB0aGlzLndyYXBQcm9taXNlUmVxdWVzdChyZXEsIHJlcywgdGhpcy5oYW5kbGVJbXBvcnQuYmluZCh0aGlzKSlcbiAgICApO1xuXG4gICAgcmV0dXJuIHJvdXRlcjtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBJbXBvcnRSb3V0ZXI7XG4iXX0= \ No newline at end of file diff --git a/src/Routers/ImportRouter.js b/src/Routers/ImportRouter.js index c9e69abedd..52a67d3a4e 100644 --- a/src/Routers/ImportRouter.js +++ b/src/Routers/ImportRouter.js @@ -141,19 +141,20 @@ export class ImportRouter { if (req.params.relationName) { promise = this.getOneSchema(req).then(response => { - if (!response.fields.hasOwnProperty(req.params.relationName)) { + if ( + !Object.prototype.hasOwnProperty.call( + response.fields, + req.params.relationName + ) + ) { throw new Error( - `Relation ${req.params.relationName} does not exist in ${ - req.params.className - }.` + `Relation ${req.params.relationName} does not exist in ${req.params.className}.` ); } else if ( response.fields[req.params.relationName].type !== 'Relation' ) { throw new Error( - `Class ${ - response.fields[req.params.relationName].targetClass - } does not have Relation type.` + `Class ${response.fields[req.params.relationName].targetClass} does not have Relation type.` ); } @@ -255,7 +256,7 @@ export class ImportRouter { router.post( '/import_data/:className', upload.single('importFile'), - middlewares.allowCrossDomain, + // middlewares.allowCrossDomain, middlewares.handleParseHeaders, middlewares.enforceMasterKeyAccess, (req, res) => @@ -265,7 +266,7 @@ export class ImportRouter { router.post( '/import_relation_data/:className/:relationName', upload.single('importFile'), - middlewares.allowCrossDomain, + // middlewares.allowCrossDomain, middlewares.handleParseHeaders, middlewares.enforceMasterKeyAccess, (req, res) =>