parse-server 9.3.0-alpha.2 → 9.3.0-alpha.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -22,6 +22,12 @@ function parseObject(obj, config) {
22
22
  } else if (obj && obj.__type == 'Date') {
23
23
  return Object.assign(new Date(obj.iso), obj);
24
24
  } else if (obj && obj.__type == 'File') {
25
+ if (obj.url) {
26
+ const {
27
+ validateFileUrl
28
+ } = require('../FileUrlValidator');
29
+ validateFileUrl(obj.url, config);
30
+ }
25
31
  return Parse.File.fromJSON(obj);
26
32
  } else if (obj && obj.__type == 'Pointer') {
27
33
  return Parse.Object.fromJSON({
@@ -222,4 +228,4 @@ class FunctionsRouter extends _PromiseRouter.default {
222
228
  }
223
229
  }
224
230
  exports.FunctionsRouter = FunctionsRouter;
225
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfUHJvbWlzZVJvdXRlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX21pZGRsZXdhcmVzIiwiX1N0YXR1c0hhbmRsZXIiLCJfbG9kYXNoIiwiX2xvZ2dlciIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIlBhcnNlIiwidHJpZ2dlcnMiLCJwYXJzZU9iamVjdCIsIm9iaiIsImNvbmZpZyIsIkFycmF5IiwiaXNBcnJheSIsIm1hcCIsIml0ZW0iLCJfX3R5cGUiLCJPYmplY3QiLCJhc3NpZ24iLCJEYXRlIiwiaXNvIiwiRmlsZSIsImZyb21KU09OIiwiY2xhc3NOYW1lIiwib2JqZWN0SWQiLCJwYXJzZVBhcmFtcyIsInBhcmFtcyIsIl8iLCJtYXBWYWx1ZXMiLCJGdW5jdGlvbnNSb3V0ZXIiLCJQcm9taXNlUm91dGVyIiwibW91bnRSb3V0ZXMiLCJyb3V0ZSIsInByb21pc2VFbnN1cmVJZGVtcG90ZW5jeSIsImhhbmRsZUNsb3VkRnVuY3Rpb24iLCJwcm9taXNlRW5mb3JjZU1hc3RlcktleUFjY2VzcyIsInJlcSIsImhhbmRsZUNsb3VkSm9iIiwiam9iTmFtZSIsImJvZHkiLCJhcHBsaWNhdGlvbklkIiwiam9iSGFuZGxlciIsImpvYlN0YXR1c0hhbmRsZXIiLCJqb2JGdW5jdGlvbiIsImdldEpvYiIsIkVycm9yIiwiU0NSSVBUX0ZBSUxFRCIsInF1ZXJ5IiwicmVxdWVzdCIsImxvZyIsImxvZ2dlckNvbnRyb2xsZXIiLCJoZWFkZXJzIiwiaXAiLCJtZXNzYWdlIiwic2V0TWVzc2FnZSIsImJpbmQiLCJzZXRSdW5uaW5nIiwidGhlbiIsImpvYlN0YXR1cyIsImpvYklkIiwicHJvY2VzcyIsIm5leHRUaWNrIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZXN1bHQiLCJzZXRTdWNjZWVkZWQiLCJlcnJvciIsInNldEZhaWxlZCIsInJlc3BvbnNlIiwiY3JlYXRlUmVzcG9uc2VPYmplY3QiLCJyZWplY3QiLCJzdGF0dXNDb2RlIiwiaHR0cFN0YXR1c0NvZGUiLCJjdXN0b21IZWFkZXJzIiwicmVzcG9uc2VTZW50IiwicmVzcG9uc2VPYmplY3QiLCJzdWNjZXNzIiwiX2VuY29kZSIsInN0YXR1cyIsImtleXMiLCJsZW5ndGgiLCJyZXNvbHZlRXJyb3IiLCJjb2RlIiwiaGVhZGVyIiwia2V5IiwidmFsdWUiLCJfaXNSZXNwb25zZVNlbnQiLCJmdW5jdGlvbk5hbWUiLCJ0aGVGdW5jdGlvbiIsImdldEZ1bmN0aW9uIiwibWFzdGVyIiwiYXV0aCIsImlzTWFzdGVyIiwidXNlciIsImluc3RhbGxhdGlvbklkIiwiaW5mbyIsImNvbnRleHQiLCJ1c2VyU3RyaW5nIiwiaWQiLCJ1bmRlZmluZWQiLCJsb2dMZXZlbHMiLCJjbG91ZEZ1bmN0aW9uU3VjY2VzcyIsImNsZWFuSW5wdXQiLCJsb2dnZXIiLCJ0cnVuY2F0ZUxvZ01lc3NhZ2UiLCJKU09OIiwic3RyaW5naWZ5IiwiY2xlYW5SZXN1bHQiLCJjbG91ZEZ1bmN0aW9uRXJyb3IiLCJtYXliZVJ1blZhbGlkYXRvciIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvUm91dGVycy9GdW5jdGlvbnNSb3V0ZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gRnVuY3Rpb25zUm91dGVyLmpzXG5cbnZhciBQYXJzZSA9IHJlcXVpcmUoJ3BhcnNlL25vZGUnKS5QYXJzZSxcbiAgdHJpZ2dlcnMgPSByZXF1aXJlKCcuLi90cmlnZ2VycycpO1xuXG5pbXBvcnQgUHJvbWlzZVJvdXRlciBmcm9tICcuLi9Qcm9taXNlUm91dGVyJztcbmltcG9ydCB7IHByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzLCBwcm9taXNlRW5zdXJlSWRlbXBvdGVuY3kgfSBmcm9tICcuLi9taWRkbGV3YXJlcyc7XG5pbXBvcnQgeyBqb2JTdGF0dXNIYW5kbGVyIH0gZnJvbSAnLi4vU3RhdHVzSGFuZGxlcic7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vbG9nZ2VyJztcblxuZnVuY3Rpb24gcGFyc2VPYmplY3Qob2JqLCBjb25maWcpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkob2JqKSkge1xuICAgIHJldHVybiBvYmoubWFwKGl0ZW0gPT4ge1xuICAgICAgcmV0dXJuIHBhcnNlT2JqZWN0KGl0ZW0sIGNvbmZpZyk7XG4gICAgfSk7XG4gIH0gZWxzZSBpZiAob2JqICYmIG9iai5fX3R5cGUgPT0gJ0RhdGUnKSB7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24obmV3IERhdGUob2JqLmlzbyksIG9iaik7XG4gIH0gZWxzZSBpZiAob2JqICYmIG9iai5fX3R5cGUgPT0gJ0ZpbGUnKSB7XG4gICAgcmV0dXJuIFBhcnNlLkZpbGUuZnJvbUpTT04ob2JqKTtcbiAgfSBlbHNlIGlmIChvYmogJiYgb2JqLl9fdHlwZSA9PSAnUG9pbnRlcicpIHtcbiAgICByZXR1cm4gUGFyc2UuT2JqZWN0LmZyb21KU09OKHtcbiAgICAgIF9fdHlwZTogJ1BvaW50ZXInLFxuICAgICAgY2xhc3NOYW1lOiBvYmouY2xhc3NOYW1lLFxuICAgICAgb2JqZWN0SWQ6IG9iai5vYmplY3RJZCxcbiAgICB9KTtcbiAgfSBlbHNlIGlmIChvYmogJiYgdHlwZW9mIG9iaiA9PT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gcGFyc2VQYXJhbXMob2JqLCBjb25maWcpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBvYmo7XG4gIH1cbn1cblxuZnVuY3Rpb24gcGFyc2VQYXJhbXMocGFyYW1zLCBjb25maWcpIHtcbiAgcmV0dXJuIF8ubWFwVmFsdWVzKHBhcmFtcywgaXRlbSA9PiBwYXJzZU9iamVjdChpdGVtLCBjb25maWcpKTtcbn1cblxuZXhwb3J0IGNsYXNzIEZ1bmN0aW9uc1JvdXRlciBleHRlbmRzIFByb21pc2VSb3V0ZXIge1xuICBtb3VudFJvdXRlcygpIHtcbiAgICB0aGlzLnJvdXRlKFxuICAgICAgJ1BPU1QnLFxuICAgICAgJy9mdW5jdGlvbnMvOmZ1bmN0aW9uTmFtZScsXG4gICAgICBwcm9taXNlRW5zdXJlSWRlbXBvdGVuY3ksXG4gICAgICBGdW5jdGlvbnNSb3V0ZXIuaGFuZGxlQ2xvdWRGdW5jdGlvblxuICAgICk7XG4gICAgdGhpcy5yb3V0ZShcbiAgICAgICdQT1NUJyxcbiAgICAgICcvam9icy86am9iTmFtZScsXG4gICAgICBwcm9taXNlRW5zdXJlSWRlbXBvdGVuY3ksXG4gICAgICBwcm9taXNlRW5mb3JjZU1hc3RlcktleUFjY2VzcyxcbiAgICAgIGZ1bmN0aW9uIChyZXEpIHtcbiAgICAgICAgcmV0dXJuIEZ1bmN0aW9uc1JvdXRlci5oYW5kbGVDbG91ZEpvYihyZXEpO1xuICAgICAgfVxuICAgICk7XG4gICAgdGhpcy5yb3V0ZSgnUE9TVCcsICcvam9icycsIHByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzLCBmdW5jdGlvbiAocmVxKSB7XG4gICAgICByZXR1cm4gRnVuY3Rpb25zUm91dGVyLmhhbmRsZUNsb3VkSm9iKHJlcSk7XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgaGFuZGxlQ2xvdWRKb2IocmVxKSB7XG4gICAgY29uc3Qgam9iTmFtZSA9IHJlcS5wYXJhbXMuam9iTmFtZSB8fCByZXEuYm9keT8uam9iTmFtZTtcbiAgICBjb25zdCBhcHBsaWNhdGlvbklkID0gcmVxLmNvbmZpZy5hcHBsaWNhdGlvbklkO1xuICAgIGNvbnN0IGpvYkhhbmRsZXIgPSBqb2JTdGF0dXNIYW5kbGVyKHJlcS5jb25maWcpO1xuICAgIGNvbnN0IGpvYkZ1bmN0aW9uID0gdHJpZ2dlcnMuZ2V0Sm9iKGpvYk5hbWUsIGFwcGxpY2F0aW9uSWQpO1xuICAgIGlmICgham9iRnVuY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5TQ1JJUFRfRkFJTEVELCAnSW52YWxpZCBqb2IuJyk7XG4gICAgfVxuICAgIGxldCBwYXJhbXMgPSBPYmplY3QuYXNzaWduKHt9LCByZXEuYm9keSwgcmVxLnF1ZXJ5KTtcbiAgICBwYXJhbXMgPSBwYXJzZVBhcmFtcyhwYXJhbXMsIHJlcS5jb25maWcpO1xuICAgIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgICBwYXJhbXM6IHBhcmFtcyxcbiAgICAgIGxvZzogcmVxLmNvbmZpZy5sb2dnZXJDb250cm9sbGVyLFxuICAgICAgaGVhZGVyczogcmVxLmNvbmZpZy5oZWFkZXJzLFxuICAgICAgaXA6IHJlcS5jb25maWcuaXAsXG4gICAgICBqb2JOYW1lLFxuICAgICAgY29uZmlnOiByZXEuY29uZmlnLFxuICAgICAgbWVzc2FnZTogam9iSGFuZGxlci5zZXRNZXNzYWdlLmJpbmQoam9iSGFuZGxlciksXG4gICAgfTtcblxuICAgIHJldHVybiBqb2JIYW5kbGVyLnNldFJ1bm5pbmcoam9iTmFtZSkudGhlbihqb2JTdGF0dXMgPT4ge1xuICAgICAgcmVxdWVzdC5qb2JJZCA9IGpvYlN0YXR1cy5vYmplY3RJZDtcbiAgICAgIC8vIHJ1biB0aGUgZnVuY3Rpb24gYXN5bmNcbiAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4ge1xuICAgICAgICBQcm9taXNlLnJlc29sdmUoKVxuICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBqb2JGdW5jdGlvbihyZXF1ZXN0KTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC50aGVuKFxuICAgICAgICAgICAgcmVzdWx0ID0+IHtcbiAgICAgICAgICAgICAgam9iSGFuZGxlci5zZXRTdWNjZWVkZWQocmVzdWx0KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnJvciA9PiB7XG4gICAgICAgICAgICAgIGpvYkhhbmRsZXIuc2V0RmFpbGVkKGVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgJ1gtUGFyc2UtSm9iLVN0YXR1cy1JZCc6IGpvYlN0YXR1cy5vYmplY3RJZCxcbiAgICAgICAgfSxcbiAgICAgICAgcmVzcG9uc2U6IHt9LFxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVSZXNwb25zZU9iamVjdChyZXNvbHZlLCByZWplY3QsIHN0YXR1c0NvZGUgPSBudWxsKSB7XG4gICAgbGV0IGh0dHBTdGF0dXNDb2RlID0gc3RhdHVzQ29kZTtcbiAgICBjb25zdCBjdXN0b21IZWFkZXJzID0ge307XG4gICAgbGV0IHJlc3BvbnNlU2VudCA9IGZhbHNlO1xuICAgIGNvbnN0IHJlc3BvbnNlT2JqZWN0ID0ge1xuICAgICAgc3VjY2VzczogZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgICBpZiAocmVzcG9uc2VTZW50KSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgY2FsbCBzdWNjZXNzKCkgYWZ0ZXIgcmVzcG9uc2UgaGFzIGFscmVhZHkgYmVlbiBzZW50LiBNYWtlIHN1cmUgdG8gY2FsbCBzdWNjZXNzKCkgb3IgZXJyb3IoKSBvbmx5IG9uY2UgcGVyIGNsb3VkIGZ1bmN0aW9uIGV4ZWN1dGlvbi4nKTtcbiAgICAgICAgfVxuICAgICAgICByZXNwb25zZVNlbnQgPSB0cnVlO1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IHtcbiAgICAgICAgICByZXNwb25zZToge1xuICAgICAgICAgICAgcmVzdWx0OiBQYXJzZS5fZW5jb2RlKHJlc3VsdCksXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKGh0dHBTdGF0dXNDb2RlICE9PSBudWxsKSB7XG4gICAgICAgICAgcmVzcG9uc2Uuc3RhdHVzID0gaHR0cFN0YXR1c0NvZGU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKGN1c3RvbUhlYWRlcnMpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICByZXNwb25zZS5oZWFkZXJzID0gY3VzdG9tSGVhZGVycztcbiAgICAgICAgfVxuICAgICAgICByZXNvbHZlKHJlc3BvbnNlKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogZnVuY3Rpb24gKG1lc3NhZ2UpIHtcbiAgICAgICAgaWYgKHJlc3BvbnNlU2VudCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGNhbGwgZXJyb3IoKSBhZnRlciByZXNwb25zZSBoYXMgYWxyZWFkeSBiZWVuIHNlbnQuIE1ha2Ugc3VyZSB0byBjYWxsIHN1Y2Nlc3MoKSBvciBlcnJvcigpIG9ubHkgb25jZSBwZXIgY2xvdWQgZnVuY3Rpb24gZXhlY3V0aW9uLicpO1xuICAgICAgICB9XG4gICAgICAgIHJlc3BvbnNlU2VudCA9IHRydWU7XG4gICAgICAgIGNvbnN0IGVycm9yID0gdHJpZ2dlcnMucmVzb2x2ZUVycm9yKG1lc3NhZ2UpO1xuICAgICAgICAvLyBJZiBhIGN1c3RvbSBzdGF0dXMgY29kZSB3YXMgc2V0LCBhdHRhY2ggaXQgdG8gdGhlIGVycm9yXG4gICAgICAgIGlmIChodHRwU3RhdHVzQ29kZSAhPT0gbnVsbCkge1xuICAgICAgICAgIGVycm9yLnN0YXR1cyA9IGh0dHBTdGF0dXNDb2RlO1xuICAgICAgICB9XG4gICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICB9LFxuICAgICAgc3RhdHVzOiBmdW5jdGlvbiAoY29kZSkge1xuICAgICAgICBodHRwU3RhdHVzQ29kZSA9IGNvZGU7XG4gICAgICAgIHJldHVybiByZXNwb25zZU9iamVjdDtcbiAgICAgIH0sXG4gICAgICBoZWFkZXI6IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gICAgICAgIGN1c3RvbUhlYWRlcnNba2V5XSA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gcmVzcG9uc2VPYmplY3Q7XG4gICAgICB9LFxuICAgICAgX2lzUmVzcG9uc2VTZW50OiAoKSA9PiByZXNwb25zZVNlbnQsXG4gICAgfTtcbiAgICByZXR1cm4gcmVzcG9uc2VPYmplY3Q7XG4gIH1cbiAgc3RhdGljIGhhbmRsZUNsb3VkRnVuY3Rpb24ocmVxKSB7XG4gICAgY29uc3QgZnVuY3Rpb25OYW1lID0gcmVxLnBhcmFtcy5mdW5jdGlvbk5hbWU7XG4gICAgY29uc3QgYXBwbGljYXRpb25JZCA9IHJlcS5jb25maWcuYXBwbGljYXRpb25JZDtcbiAgICBjb25zdCB0aGVGdW5jdGlvbiA9IHRyaWdnZXJzLmdldEZ1bmN0aW9uKGZ1bmN0aW9uTmFtZSwgYXBwbGljYXRpb25JZCk7XG5cbiAgICBpZiAoIXRoZUZ1bmN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuU0NSSVBUX0ZBSUxFRCwgYEludmFsaWQgZnVuY3Rpb246IFwiJHtmdW5jdGlvbk5hbWV9XCJgKTtcbiAgICB9XG4gICAgbGV0IHBhcmFtcyA9IE9iamVjdC5hc3NpZ24oe30sIHJlcS5ib2R5LCByZXEucXVlcnkpO1xuICAgIHBhcmFtcyA9IHBhcnNlUGFyYW1zKHBhcmFtcywgcmVxLmNvbmZpZyk7XG4gICAgY29uc3QgcmVxdWVzdCA9IHtcbiAgICAgIHBhcmFtczogcGFyYW1zLFxuICAgICAgY29uZmlnOiByZXEuY29uZmlnLFxuICAgICAgbWFzdGVyOiByZXEuYXV0aCAmJiByZXEuYXV0aC5pc01hc3RlcixcbiAgICAgIHVzZXI6IHJlcS5hdXRoICYmIHJlcS5hdXRoLnVzZXIsXG4gICAgICBpbnN0YWxsYXRpb25JZDogcmVxLmluZm8uaW5zdGFsbGF0aW9uSWQsXG4gICAgICBsb2c6IHJlcS5jb25maWcubG9nZ2VyQ29udHJvbGxlcixcbiAgICAgIGhlYWRlcnM6IHJlcS5jb25maWcuaGVhZGVycyxcbiAgICAgIGlwOiByZXEuY29uZmlnLmlwLFxuICAgICAgZnVuY3Rpb25OYW1lLFxuICAgICAgY29udGV4dDogcmVxLmluZm8uY29udGV4dCxcbiAgICB9O1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIGNvbnN0IHVzZXJTdHJpbmcgPSByZXEuYXV0aCAmJiByZXEuYXV0aC51c2VyID8gcmVxLmF1dGgudXNlci5pZCA6IHVuZGVmaW5lZDtcbiAgICAgIGNvbnN0IHJlc3BvbnNlT2JqZWN0ID0gRnVuY3Rpb25zUm91dGVyLmNyZWF0ZVJlc3BvbnNlT2JqZWN0KFxuICAgICAgICByZXN1bHQgPT4ge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAocmVxLmNvbmZpZy5sb2dMZXZlbHMuY2xvdWRGdW5jdGlvblN1Y2Nlc3MgIT09ICdzaWxlbnQnKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGNsZWFuSW5wdXQgPSBsb2dnZXIudHJ1bmNhdGVMb2dNZXNzYWdlKEpTT04uc3RyaW5naWZ5KHBhcmFtcykpO1xuICAgICAgICAgICAgICBjb25zdCBjbGVhblJlc3VsdCA9IGxvZ2dlci50cnVuY2F0ZUxvZ01lc3NhZ2UoSlNPTi5zdHJpbmdpZnkocmVzdWx0LnJlc3BvbnNlLnJlc3VsdCkpO1xuICAgICAgICAgICAgICBsb2dnZXJbcmVxLmNvbmZpZy5sb2dMZXZlbHMuY2xvdWRGdW5jdGlvblN1Y2Nlc3NdKFxuICAgICAgICAgICAgICAgIGBSYW4gY2xvdWQgZnVuY3Rpb24gJHtmdW5jdGlvbk5hbWV9IGZvciB1c2VyICR7dXNlclN0cmluZ30gd2l0aDpcXG4gIElucHV0OiAke2NsZWFuSW5wdXR9XFxuICBSZXN1bHQ6ICR7Y2xlYW5SZXN1bHR9YCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBmdW5jdGlvbk5hbWUsXG4gICAgICAgICAgICAgICAgICBwYXJhbXMsXG4gICAgICAgICAgICAgICAgICB1c2VyOiB1c2VyU3RyaW5nLFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICByZWplY3QoZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBlcnJvciA9PiB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmIChyZXEuY29uZmlnLmxvZ0xldmVscy5jbG91ZEZ1bmN0aW9uRXJyb3IgIT09ICdzaWxlbnQnKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGNsZWFuSW5wdXQgPSBsb2dnZXIudHJ1bmNhdGVMb2dNZXNzYWdlKEpTT04uc3RyaW5naWZ5KHBhcmFtcykpO1xuICAgICAgICAgICAgICBsb2dnZXJbcmVxLmNvbmZpZy5sb2dMZXZlbHMuY2xvdWRGdW5jdGlvbkVycm9yXShcbiAgICAgICAgICAgICAgICBgRmFpbGVkIHJ1bm5pbmcgY2xvdWQgZnVuY3Rpb24gJHtmdW5jdGlvbk5hbWV9IGZvciB1c2VyICR7dXNlclN0cmluZ30gd2l0aDpcXG4gIElucHV0OiAke2NsZWFuSW5wdXR9XFxuICBFcnJvcjogYCArXG4gICAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShlcnJvciksXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZnVuY3Rpb25OYW1lLFxuICAgICAgICAgICAgICAgICAgZXJyb3IsXG4gICAgICAgICAgICAgICAgICBwYXJhbXMsXG4gICAgICAgICAgICAgICAgICB1c2VyOiB1c2VyU3RyaW5nLFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgKTtcbiAgICAgIGNvbnN0IHsgc3VjY2VzcywgZXJyb3IgfSA9IHJlc3BvbnNlT2JqZWN0O1xuXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKClcbiAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIHJldHVybiB0cmlnZ2Vycy5tYXliZVJ1blZhbGlkYXRvcihyZXF1ZXN0LCBmdW5jdGlvbk5hbWUsIHJlcS5hdXRoKTtcbiAgICAgICAgfSlcbiAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIC8vIENoZWNrIGlmIGZ1bmN0aW9uIGV4cGVjdHMgMiBwYXJhbWV0ZXJzIChyZXEsIHJlcykgLSBFeHByZXNzIHN0eWxlXG4gICAgICAgICAgaWYgKHRoZUZ1bmN0aW9uLmxlbmd0aCA+PSAyKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhlRnVuY3Rpb24ocmVxdWVzdCwgcmVzcG9uc2VPYmplY3QpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBUcmFkaXRpb25hbCBzdHlsZSAtIHNpbmdsZSBwYXJhbWV0ZXJcbiAgICAgICAgICAgIHJldHVybiB0aGVGdW5jdGlvbihyZXF1ZXN0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC50aGVuKHJlc3VsdCA9PiB7XG4gICAgICAgICAgLy8gRm9yIEV4cHJlc3Mtc3R5bGUgZnVuY3Rpb25zLCBvbmx5IHNlbmQgcmVzcG9uc2UgaWYgbm90IGFscmVhZHkgc2VudFxuICAgICAgICAgIGlmICh0aGVGdW5jdGlvbi5sZW5ndGggPj0gMikge1xuICAgICAgICAgICAgaWYgKCFyZXNwb25zZU9iamVjdC5faXNSZXNwb25zZVNlbnQoKSkge1xuICAgICAgICAgICAgICAvLyBJZiBFeHByZXNzLXN0eWxlIGZ1bmN0aW9uIHJldHVybnMgYSB2YWx1ZSB3aXRob3V0IGNhbGxpbmcgcmVzLnN1Y2Nlc3MvZXJyb3JcbiAgICAgICAgICAgICAgaWYgKHJlc3VsdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgc3VjY2VzcyhyZXN1bHQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIC8vIElmIG5vIHJlc3BvbnNlIHNlbnQgYW5kIG5vIHZhbHVlIHJldHVybmVkLCB0aGlzIGlzIGFuIGVycm9yIGluIHVzZXIgY29kZVxuICAgICAgICAgICAgICAvLyBidXQgd2UgZG9uJ3QgaGFuZGxlIGl0IGhlcmUgdG8gbWFpbnRhaW4gYmFja3dhcmQgY29tcGF0aWJpbGl0eVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBGb3IgdHJhZGl0aW9uYWwgZnVuY3Rpb25zLCBhbHdheXMgY2FsbCBzdWNjZXNzIHdpdGggdGhlIHJlc3VsdCAoZXZlbiBpZiB1bmRlZmluZWQpXG4gICAgICAgICAgICBzdWNjZXNzKHJlc3VsdCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LCBlcnJvcik7XG4gICAgfSk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBS0EsSUFBQUEsY0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsWUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsY0FBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsT0FBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUksT0FBQSxHQUFBSixPQUFBO0FBQW1DLFNBQUFELHVCQUFBTSxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsS0FBQUUsT0FBQSxFQUFBRixDQUFBO0FBVG5DOztBQUVBLElBQUlHLEtBQUssR0FBR1IsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDUSxLQUFLO0VBQ3JDQyxRQUFRLEdBQUdULE9BQU8sQ0FBQyxhQUFhLENBQUM7QUFRbkMsU0FBU1UsV0FBV0EsQ0FBQ0MsR0FBRyxFQUFFQyxNQUFNLEVBQUU7RUFDaEMsSUFBSUMsS0FBSyxDQUFDQyxPQUFPLENBQUNILEdBQUcsQ0FBQyxFQUFFO0lBQ3RCLE9BQU9BLEdBQUcsQ0FBQ0ksR0FBRyxDQUFDQyxJQUFJLElBQUk7TUFDckIsT0FBT04sV0FBVyxDQUFDTSxJQUFJLEVBQUVKLE1BQU0sQ0FBQztJQUNsQyxDQUFDLENBQUM7RUFDSixDQUFDLE1BQU0sSUFBSUQsR0FBRyxJQUFJQSxHQUFHLENBQUNNLE1BQU0sSUFBSSxNQUFNLEVBQUU7SUFDdEMsT0FBT0MsTUFBTSxDQUFDQyxNQUFNLENBQUMsSUFBSUMsSUFBSSxDQUFDVCxHQUFHLENBQUNVLEdBQUcsQ0FBQyxFQUFFVixHQUFHLENBQUM7RUFDOUMsQ0FBQyxNQUFNLElBQUlB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
231
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfUHJvbWlzZVJvdXRlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX21pZGRsZXdhcmVzIiwiX1N0YXR1c0hhbmRsZXIiLCJfbG9kYXNoIiwiX2xvZ2dlciIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIlBhcnNlIiwidHJpZ2dlcnMiLCJwYXJzZU9iamVjdCIsIm9iaiIsImNvbmZpZyIsIkFycmF5IiwiaXNBcnJheSIsIm1hcCIsIml0ZW0iLCJfX3R5cGUiLCJPYmplY3QiLCJhc3NpZ24iLCJEYXRlIiwiaXNvIiwidXJsIiwidmFsaWRhdGVGaWxlVXJsIiwiRmlsZSIsImZyb21KU09OIiwiY2xhc3NOYW1lIiwib2JqZWN0SWQiLCJwYXJzZVBhcmFtcyIsInBhcmFtcyIsIl8iLCJtYXBWYWx1ZXMiLCJGdW5jdGlvbnNSb3V0ZXIiLCJQcm9taXNlUm91dGVyIiwibW91bnRSb3V0ZXMiLCJyb3V0ZSIsInByb21pc2VFbnN1cmVJZGVtcG90ZW5jeSIsImhhbmRsZUNsb3VkRnVuY3Rpb24iLCJwcm9taXNlRW5mb3JjZU1hc3RlcktleUFjY2VzcyIsInJlcSIsImhhbmRsZUNsb3VkSm9iIiwiam9iTmFtZSIsImJvZHkiLCJhcHBsaWNhdGlvbklkIiwiam9iSGFuZGxlciIsImpvYlN0YXR1c0hhbmRsZXIiLCJqb2JGdW5jdGlvbiIsImdldEpvYiIsIkVycm9yIiwiU0NSSVBUX0ZBSUxFRCIsInF1ZXJ5IiwicmVxdWVzdCIsImxvZyIsImxvZ2dlckNvbnRyb2xsZXIiLCJoZWFkZXJzIiwiaXAiLCJtZXNzYWdlIiwic2V0TWVzc2FnZSIsImJpbmQiLCJzZXRSdW5uaW5nIiwidGhlbiIsImpvYlN0YXR1cyIsImpvYklkIiwicHJvY2VzcyIsIm5leHRUaWNrIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZXN1bHQiLCJzZXRTdWNjZWVkZWQiLCJlcnJvciIsInNldEZhaWxlZCIsInJlc3BvbnNlIiwiY3JlYXRlUmVzcG9uc2VPYmplY3QiLCJyZWplY3QiLCJzdGF0dXNDb2RlIiwiaHR0cFN0YXR1c0NvZGUiLCJjdXN0b21IZWFkZXJzIiwicmVzcG9uc2VTZW50IiwicmVzcG9uc2VPYmplY3QiLCJzdWNjZXNzIiwiX2VuY29kZSIsInN0YXR1cyIsImtleXMiLCJsZW5ndGgiLCJyZXNvbHZlRXJyb3IiLCJjb2RlIiwiaGVhZGVyIiwia2V5IiwidmFsdWUiLCJfaXNSZXNwb25zZVNlbnQiLCJmdW5jdGlvbk5hbWUiLCJ0aGVGdW5jdGlvbiIsImdldEZ1bmN0aW9uIiwibWFzdGVyIiwiYXV0aCIsImlzTWFzdGVyIiwidXNlciIsImluc3RhbGxhdGlvbklkIiwiaW5mbyIsImNvbnRleHQiLCJ1c2VyU3RyaW5nIiwiaWQiLCJ1bmRlZmluZWQiLCJsb2dMZXZlbHMiLCJjbG91ZEZ1bmN0aW9uU3VjY2VzcyIsImNsZWFuSW5wdXQiLCJsb2dnZXIiLCJ0cnVuY2F0ZUxvZ01lc3NhZ2UiLCJKU09OIiwic3RyaW5naWZ5IiwiY2xlYW5SZXN1bHQiLCJjbG91ZEZ1bmN0aW9uRXJyb3IiLCJtYXliZVJ1blZhbGlkYXRvciIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvUm91dGVycy9GdW5jdGlvbnNSb3V0ZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gRnVuY3Rpb25zUm91dGVyLmpzXG5cbnZhciBQYXJzZSA9IHJlcXVpcmUoJ3BhcnNlL25vZGUnKS5QYXJzZSxcbiAgdHJpZ2dlcnMgPSByZXF1aXJlKCcuLi90cmlnZ2VycycpO1xuXG5pbXBvcnQgUHJvbWlzZVJvdXRlciBmcm9tICcuLi9Qcm9taXNlUm91dGVyJztcbmltcG9ydCB7IHByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzLCBwcm9taXNlRW5zdXJlSWRlbXBvdGVuY3kgfSBmcm9tICcuLi9taWRkbGV3YXJlcyc7XG5pbXBvcnQgeyBqb2JTdGF0dXNIYW5kbGVyIH0gZnJvbSAnLi4vU3RhdHVzSGFuZGxlcic7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vbG9nZ2VyJztcblxuZnVuY3Rpb24gcGFyc2VPYmplY3Qob2JqLCBjb25maWcpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkob2JqKSkge1xuICAgIHJldHVybiBvYmoubWFwKGl0ZW0gPT4ge1xuICAgICAgcmV0dXJuIHBhcnNlT2JqZWN0KGl0ZW0sIGNvbmZpZyk7XG4gICAgfSk7XG4gIH0gZWxzZSBpZiAob2JqICYmIG9iai5fX3R5cGUgPT0gJ0RhdGUnKSB7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24obmV3IERhdGUob2JqLmlzbyksIG9iaik7XG4gIH0gZWxzZSBpZiAob2JqICYmIG9iai5fX3R5cGUgPT0gJ0ZpbGUnKSB7XG4gICAgaWYgKG9iai51cmwpIHtcbiAgICAgIGNvbnN0IHsgdmFsaWRhdGVGaWxlVXJsIH0gPSByZXF1aXJlKCcuLi9GaWxlVXJsVmFsaWRhdG9yJyk7XG4gICAgICB2YWxpZGF0ZUZpbGVVcmwob2JqLnVybCwgY29uZmlnKTtcbiAgICB9XG4gICAgcmV0dXJuIFBhcnNlLkZpbGUuZnJvbUpTT04ob2JqKTtcbiAgfSBlbHNlIGlmIChvYmogJiYgb2JqLl9fdHlwZSA9PSAnUG9pbnRlcicpIHtcbiAgICByZXR1cm4gUGFyc2UuT2JqZWN0LmZyb21KU09OKHtcbiAgICAgIF9fdHlwZTogJ1BvaW50ZXInLFxuICAgICAgY2xhc3NOYW1lOiBvYmouY2xhc3NOYW1lLFxuICAgICAgb2JqZWN0SWQ6IG9iai5vYmplY3RJZCxcbiAgICB9KTtcbiAgfSBlbHNlIGlmIChvYmogJiYgdHlwZW9mIG9iaiA9PT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gcGFyc2VQYXJhbXMob2JqLCBjb25maWcpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBvYmo7XG4gIH1cbn1cblxuZnVuY3Rpb24gcGFyc2VQYXJhbXMocGFyYW1zLCBjb25maWcpIHtcbiAgcmV0dXJuIF8ubWFwVmFsdWVzKHBhcmFtcywgaXRlbSA9PiBwYXJzZU9iamVjdChpdGVtLCBjb25maWcpKTtcbn1cblxuZXhwb3J0IGNsYXNzIEZ1bmN0aW9uc1JvdXRlciBleHRlbmRzIFByb21pc2VSb3V0ZXIge1xuICBtb3VudFJvdXRlcygpIHtcbiAgICB0aGlzLnJvdXRlKFxuICAgICAgJ1BPU1QnLFxuICAgICAgJy9mdW5jdGlvbnMvOmZ1bmN0aW9uTmFtZScsXG4gICAgICBwcm9taXNlRW5zdXJlSWRlbXBvdGVuY3ksXG4gICAgICBGdW5jdGlvbnNSb3V0ZXIuaGFuZGxlQ2xvdWRGdW5jdGlvblxuICAgICk7XG4gICAgdGhpcy5yb3V0ZShcbiAgICAgICdQT1NUJyxcbiAgICAgICcvam9icy86am9iTmFtZScsXG4gICAgICBwcm9taXNlRW5zdXJlSWRlbXBvdGVuY3ksXG4gICAgICBwcm9taXNlRW5mb3JjZU1hc3RlcktleUFjY2VzcyxcbiAgICAgIGZ1bmN0aW9uIChyZXEpIHtcbiAgICAgICAgcmV0dXJuIEZ1bmN0aW9uc1JvdXRlci5oYW5kbGVDbG91ZEpvYihyZXEpO1xuICAgICAgfVxuICAgICk7XG4gICAgdGhpcy5yb3V0ZSgnUE9TVCcsICcvam9icycsIHByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzLCBmdW5jdGlvbiAocmVxKSB7XG4gICAgICByZXR1cm4gRnVuY3Rpb25zUm91dGVyLmhhbmRsZUNsb3VkSm9iKHJlcSk7XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgaGFuZGxlQ2xvdWRKb2IocmVxKSB7XG4gICAgY29uc3Qgam9iTmFtZSA9IHJlcS5wYXJhbXMuam9iTmFtZSB8fCByZXEuYm9keT8uam9iTmFtZTtcbiAgICBjb25zdCBhcHBsaWNhdGlvbklkID0gcmVxLmNvbmZpZy5hcHBsaWNhdGlvbklkO1xuICAgIGNvbnN0IGpvYkhhbmRsZXIgPSBqb2JTdGF0dXNIYW5kbGVyKHJlcS5jb25maWcpO1xuICAgIGNvbnN0IGpvYkZ1bmN0aW9uID0gdHJpZ2dlcnMuZ2V0Sm9iKGpvYk5hbWUsIGFwcGxpY2F0aW9uSWQpO1xuICAgIGlmICgham9iRnVuY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5TQ1JJUFRfRkFJTEVELCAnSW52YWxpZCBqb2IuJyk7XG4gICAgfVxuICAgIGxldCBwYXJhbXMgPSBPYmplY3QuYXNzaWduKHt9LCByZXEuYm9keSwgcmVxLnF1ZXJ5KTtcbiAgICBwYXJhbXMgPSBwYXJzZVBhcmFtcyhwYXJhbXMsIHJlcS5jb25maWcpO1xuICAgIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgICBwYXJhbXM6IHBhcmFtcyxcbiAgICAgIGxvZzogcmVxLmNvbmZpZy5sb2dnZXJDb250cm9sbGVyLFxuICAgICAgaGVhZGVyczogcmVxLmNvbmZpZy5oZWFkZXJzLFxuICAgICAgaXA6IHJlcS5jb25maWcuaXAsXG4gICAgICBqb2JOYW1lLFxuICAgICAgY29uZmlnOiByZXEuY29uZmlnLFxuICAgICAgbWVzc2FnZTogam9iSGFuZGxlci5zZXRNZXNzYWdlLmJpbmQoam9iSGFuZGxlciksXG4gICAgfTtcblxuICAgIHJldHVybiBqb2JIYW5kbGVyLnNldFJ1bm5pbmcoam9iTmFtZSkudGhlbihqb2JTdGF0dXMgPT4ge1xuICAgICAgcmVxdWVzdC5qb2JJZCA9IGpvYlN0YXR1cy5vYmplY3RJZDtcbiAgICAgIC8vIHJ1biB0aGUgZnVuY3Rpb24gYXN5bmNcbiAgICAgIHByb2Nlc3MubmV4dFRpY2soKCkgPT4ge1xuICAgICAgICBQcm9taXNlLnJlc29sdmUoKVxuICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBqb2JGdW5jdGlvbihyZXF1ZXN0KTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC50aGVuKFxuICAgICAgICAgICAgcmVzdWx0ID0+IHtcbiAgICAgICAgICAgICAgam9iSGFuZGxlci5zZXRTdWNjZWVkZWQocmVzdWx0KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnJvciA9PiB7XG4gICAgICAgICAgICAgIGpvYkhhbmRsZXIuc2V0RmFpbGVkKGVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgJ1gtUGFyc2UtSm9iLVN0YXR1cy1JZCc6IGpvYlN0YXR1cy5vYmplY3RJZCxcbiAgICAgICAgfSxcbiAgICAgICAgcmVzcG9uc2U6IHt9LFxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVSZXNwb25zZU9iamVjdChyZXNvbHZlLCByZWplY3QsIHN0YXR1c0NvZGUgPSBudWxsKSB7XG4gICAgbGV0IGh0dHBTdGF0dXNDb2RlID0gc3RhdHVzQ29kZTtcbiAgICBjb25zdCBjdXN0b21IZWFkZXJzID0ge307XG4gICAgbGV0IHJlc3BvbnNlU2VudCA9IGZhbHNlO1xuICAgIGNvbnN0IHJlc3BvbnNlT2JqZWN0ID0ge1xuICAgICAgc3VjY2VzczogZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgICBpZiAocmVzcG9uc2VTZW50KSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgY2FsbCBzdWNjZXNzKCkgYWZ0ZXIgcmVzcG9uc2UgaGFzIGFscmVhZHkgYmVlbiBzZW50LiBNYWtlIHN1cmUgdG8gY2FsbCBzdWNjZXNzKCkgb3IgZXJyb3IoKSBvbmx5IG9uY2UgcGVyIGNsb3VkIGZ1bmN0aW9uIGV4ZWN1dGlvbi4nKTtcbiAgICAgICAgfVxuICAgICAgICByZXNwb25zZVNlbnQgPSB0cnVlO1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IHtcbiAgICAgICAgICByZXNwb25zZToge1xuICAgICAgICAgICAgcmVzdWx0OiBQYXJzZS5fZW5jb2RlKHJlc3VsdCksXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKGh0dHBTdGF0dXNDb2RlICE9PSBudWxsKSB7XG4gICAgICAgICAgcmVzcG9uc2Uuc3RhdHVzID0gaHR0cFN0YXR1c0NvZGU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKGN1c3RvbUhlYWRlcnMpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICByZXNwb25zZS5oZWFkZXJzID0gY3VzdG9tSGVhZGVycztcbiAgICAgICAgfVxuICAgICAgICByZXNvbHZlKHJlc3BvbnNlKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogZnVuY3Rpb24gKG1lc3NhZ2UpIHtcbiAgICAgICAgaWYgKHJlc3BvbnNlU2VudCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGNhbGwgZXJyb3IoKSBhZnRlciByZXNwb25zZSBoYXMgYWxyZWFkeSBiZWVuIHNlbnQuIE1ha2Ugc3VyZSB0byBjYWxsIHN1Y2Nlc3MoKSBvciBlcnJvcigpIG9ubHkgb25jZSBwZXIgY2xvdWQgZnVuY3Rpb24gZXhlY3V0aW9uLicpO1xuICAgICAgICB9XG4gICAgICAgIHJlc3BvbnNlU2VudCA9IHRydWU7XG4gICAgICAgIGNvbnN0IGVycm9yID0gdHJpZ2dlcnMucmVzb2x2ZUVycm9yKG1lc3NhZ2UpO1xuICAgICAgICAvLyBJZiBhIGN1c3RvbSBzdGF0dXMgY29kZSB3YXMgc2V0LCBhdHRhY2ggaXQgdG8gdGhlIGVycm9yXG4gICAgICAgIGlmIChodHRwU3RhdHVzQ29kZSAhPT0gbnVsbCkge1xuICAgICAgICAgIGVycm9yLnN0YXR1cyA9IGh0dHBTdGF0dXNDb2RlO1xuICAgICAgICB9XG4gICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICB9LFxuICAgICAgc3RhdHVzOiBmdW5jdGlvbiAoY29kZSkge1xuICAgICAgICBodHRwU3RhdHVzQ29kZSA9IGNvZGU7XG4gICAgICAgIHJldHVybiByZXNwb25zZU9iamVjdDtcbiAgICAgIH0sXG4gICAgICBoZWFkZXI6IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gICAgICAgIGN1c3RvbUhlYWRlcnNba2V5XSA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gcmVzcG9uc2VPYmplY3Q7XG4gICAgICB9LFxuICAgICAgX2lzUmVzcG9uc2VTZW50OiAoKSA9PiByZXNwb25zZVNlbnQsXG4gICAgfTtcbiAgICByZXR1cm4gcmVzcG9uc2VPYmplY3Q7XG4gIH1cbiAgc3RhdGljIGhhbmRsZUNsb3VkRnVuY3Rpb24ocmVxKSB7XG4gICAgY29uc3QgZnVuY3Rpb25OYW1lID0gcmVxLnBhcmFtcy5mdW5jdGlvbk5hbWU7XG4gICAgY29uc3QgYXBwbGljYXRpb25JZCA9IHJlcS5jb25maWcuYXBwbGljYXRpb25JZDtcbiAgICBjb25zdCB0aGVGdW5jdGlvbiA9IHRyaWdnZXJzLmdldEZ1bmN0aW9uKGZ1bmN0aW9uTmFtZSwgYXBwbGljYXRpb25JZCk7XG5cbiAgICBpZiAoIXRoZUZ1bmN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuU0NSSVBUX0ZBSUxFRCwgYEludmFsaWQgZnVuY3Rpb246IFwiJHtmdW5jdGlvbk5hbWV9XCJgKTtcbiAgICB9XG4gICAgbGV0IHBhcmFtcyA9IE9iamVjdC5hc3NpZ24oe30sIHJlcS5ib2R5LCByZXEucXVlcnkpO1xuICAgIHBhcmFtcyA9IHBhcnNlUGFyYW1zKHBhcmFtcywgcmVxLmNvbmZpZyk7XG4gICAgY29uc3QgcmVxdWVzdCA9IHtcbiAgICAgIHBhcmFtczogcGFyYW1zLFxuICAgICAgY29uZmlnOiByZXEuY29uZmlnLFxuICAgICAgbWFzdGVyOiByZXEuYXV0aCAmJiByZXEuYXV0aC5pc01hc3RlcixcbiAgICAgIHVzZXI6IHJlcS5hdXRoICYmIHJlcS5hdXRoLnVzZXIsXG4gICAgICBpbnN0YWxsYXRpb25JZDogcmVxLmluZm8uaW5zdGFsbGF0aW9uSWQsXG4gICAgICBsb2c6IHJlcS5jb25maWcubG9nZ2VyQ29udHJvbGxlcixcbiAgICAgIGhlYWRlcnM6IHJlcS5jb25maWcuaGVhZGVycyxcbiAgICAgIGlwOiByZXEuY29uZmlnLmlwLFxuICAgICAgZnVuY3Rpb25OYW1lLFxuICAgICAgY29udGV4dDogcmVxLmluZm8uY29udGV4dCxcbiAgICB9O1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIGNvbnN0IHVzZXJTdHJpbmcgPSByZXEuYXV0aCAmJiByZXEuYXV0aC51c2VyID8gcmVxLmF1dGgudXNlci5pZCA6IHVuZGVmaW5lZDtcbiAgICAgIGNvbnN0IHJlc3BvbnNlT2JqZWN0ID0gRnVuY3Rpb25zUm91dGVyLmNyZWF0ZVJlc3BvbnNlT2JqZWN0KFxuICAgICAgICByZXN1bHQgPT4ge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAocmVxLmNvbmZpZy5sb2dMZXZlbHMuY2xvdWRGdW5jdGlvblN1Y2Nlc3MgIT09ICdzaWxlbnQnKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGNsZWFuSW5wdXQgPSBsb2dnZXIudHJ1bmNhdGVMb2dNZXNzYWdlKEpTT04uc3RyaW5naWZ5KHBhcmFtcykpO1xuICAgICAgICAgICAgICBjb25zdCBjbGVhblJlc3VsdCA9IGxvZ2dlci50cnVuY2F0ZUxvZ01lc3NhZ2UoSlNPTi5zdHJpbmdpZnkocmVzdWx0LnJlc3BvbnNlLnJlc3VsdCkpO1xuICAgICAgICAgICAgICBsb2dnZXJbcmVxLmNvbmZpZy5sb2dMZXZlbHMuY2xvdWRGdW5jdGlvblN1Y2Nlc3NdKFxuICAgICAgICAgICAgICAgIGBSYW4gY2xvdWQgZnVuY3Rpb24gJHtmdW5jdGlvbk5hbWV9IGZvciB1c2VyICR7dXNlclN0cmluZ30gd2l0aDpcXG4gIElucHV0OiAke2NsZWFuSW5wdXR9XFxuICBSZXN1bHQ6ICR7Y2xlYW5SZXN1bHR9YCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBmdW5jdGlvbk5hbWUsXG4gICAgICAgICAgICAgICAgICBwYXJhbXMsXG4gICAgICAgICAgICAgICAgICB1c2VyOiB1c2VyU3RyaW5nLFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICByZWplY3QoZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBlcnJvciA9PiB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmIChyZXEuY29uZmlnLmxvZ0xldmVscy5jbG91ZEZ1bmN0aW9uRXJyb3IgIT09ICdzaWxlbnQnKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGNsZWFuSW5wdXQgPSBsb2dnZXIudHJ1bmNhdGVMb2dNZXNzYWdlKEpTT04uc3RyaW5naWZ5KHBhcmFtcykpO1xuICAgICAgICAgICAgICBsb2dnZXJbcmVxLmNvbmZpZy5sb2dMZXZlbHMuY2xvdWRGdW5jdGlvbkVycm9yXShcbiAgICAgICAgICAgICAgICBgRmFpbGVkIHJ1bm5pbmcgY2xvdWQgZnVuY3Rpb24gJHtmdW5jdGlvbk5hbWV9IGZvciB1c2VyICR7dXNlclN0cmluZ30gd2l0aDpcXG4gIElucHV0OiAke2NsZWFuSW5wdXR9XFxuICBFcnJvcjogYCArXG4gICAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShlcnJvciksXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZnVuY3Rpb25OYW1lLFxuICAgICAgICAgICAgICAgICAgZXJyb3IsXG4gICAgICAgICAgICAgICAgICBwYXJhbXMsXG4gICAgICAgICAgICAgICAgICB1c2VyOiB1c2VyU3RyaW5nLFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgKTtcbiAgICAgIGNvbnN0IHsgc3VjY2VzcywgZXJyb3IgfSA9IHJlc3BvbnNlT2JqZWN0O1xuXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKClcbiAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIHJldHVybiB0cmlnZ2Vycy5tYXliZVJ1blZhbGlkYXRvcihyZXF1ZXN0LCBmdW5jdGlvbk5hbWUsIHJlcS5hdXRoKTtcbiAgICAgICAgfSlcbiAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIC8vIENoZWNrIGlmIGZ1bmN0aW9uIGV4cGVjdHMgMiBwYXJhbWV0ZXJzIChyZXEsIHJlcykgLSBFeHByZXNzIHN0eWxlXG4gICAgICAgICAgaWYgKHRoZUZ1bmN0aW9uLmxlbmd0aCA+PSAyKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhlRnVuY3Rpb24ocmVxdWVzdCwgcmVzcG9uc2VPYmplY3QpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBUcmFkaXRpb25hbCBzdHlsZSAtIHNpbmdsZSBwYXJhbWV0ZXJcbiAgICAgICAgICAgIHJldHVybiB0aGVGdW5jdGlvbihyZXF1ZXN0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC50aGVuKHJlc3VsdCA9PiB7XG4gICAgICAgICAgLy8gRm9yIEV4cHJlc3Mtc3R5bGUgZnVuY3Rpb25zLCBvbmx5IHNlbmQgcmVzcG9uc2UgaWYgbm90IGFscmVhZHkgc2VudFxuICAgICAgICAgIGlmICh0aGVGdW5jdGlvbi5sZW5ndGggPj0gMikge1xuICAgICAgICAgICAgaWYgKCFyZXNwb25zZU9iamVjdC5faXNSZXNwb25zZVNlbnQoKSkge1xuICAgICAgICAgICAgICAvLyBJZiBFeHByZXNzLXN0eWxlIGZ1bmN0aW9uIHJldHVybnMgYSB2YWx1ZSB3aXRob3V0IGNhbGxpbmcgcmVzLnN1Y2Nlc3MvZXJyb3JcbiAgICAgICAgICAgICAgaWYgKHJlc3VsdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgc3VjY2VzcyhyZXN1bHQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIC8vIElmIG5vIHJlc3BvbnNlIHNlbnQgYW5kIG5vIHZhbHVlIHJldHVybmVkLCB0aGlzIGlzIGFuIGVycm9yIGluIHVzZXIgY29kZVxuICAgICAgICAgICAgICAvLyBidXQgd2UgZG9uJ3QgaGFuZGxlIGl0IGhlcmUgdG8gbWFpbnRhaW4gYmFja3dhcmQgY29tcGF0aWJpbGl0eVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBGb3IgdHJhZGl0aW9uYWwgZnVuY3Rpb25zLCBhbHdheXMgY2FsbCBzdWNjZXNzIHdpdGggdGhlIHJlc3VsdCAoZXZlbiBpZiB1bmRlZmluZWQpXG4gICAgICAgICAgICBzdWNjZXNzKHJlc3VsdCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LCBlcnJvcik7XG4gICAgfSk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBS0EsSUFBQUEsY0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsWUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsY0FBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsT0FBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUksT0FBQSxHQUFBSixPQUFBO0FBQW1DLFNBQUFELHVCQUFBTSxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsS0FBQUUsT0FBQSxFQUFBRixDQUFBO0FBVG5DOztBQUVBLElBQUlHLEtBQUssR0FBR1IsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDUSxLQUFLO0VBQ3JDQyxRQUFRLEdBQUdULE9BQU8sQ0FBQyxhQUFhLENBQUM7QUFRbkMsU0FBU1UsV0FBV0EsQ0FBQ0MsR0FBRyxFQUFFQyxNQUFNLEVBQUU7RUFDaEMsSUFBSUMsS0FBSyxDQUFDQyxPQUFPLENBQUNILEdBQUcsQ0FBQyxFQUFFO0lBQ3RCLE9BQU9BLEdBQUcsQ0FBQ0ksR0FBRyxDQUFDQyxJQUFJLElBQUk7TUFDckIsT0FBT04sV0FBVyxDQUFDTSxJQUFJLEVBQUVKLE1BQU0sQ0FBQztJQUNsQyxDQUFDLENBQUM7RUFDSixDQUFDLE1B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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "parse-server",
3
- "version": "9.3.0-alpha.2",
3
+ "version": "9.3.0-alpha.4",
4
4
  "description": "An express module providing a Parse-compatible API server",
5
5
  "main": "lib/index.js",
6
6
  "repository": {
@@ -32,7 +32,7 @@
32
32
  "cors": "2.8.6",
33
33
  "deepcopy": "2.1.0",
34
34
  "express": "5.2.1",
35
- "express-rate-limit": "7.5.1",
35
+ "express-rate-limit": "8.2.1",
36
36
  "follow-redirects": "1.15.9",
37
37
  "graphql": "16.11.0",
38
38
  "graphql-list-fields": "2.0.4",
@@ -65,7 +65,7 @@
65
65
  "ws": "8.18.2"
66
66
  },
67
67
  "devDependencies": {
68
- "@actions/core": "1.11.1",
68
+ "@actions/core": "3.0.0",
69
69
  "@apollo/client": "3.13.8",
70
70
  "@babel/cli": "7.27.0",
71
71
  "@babel/core": "7.29.0",
@@ -80,7 +80,7 @@
80
80
  "@semantic-release/git": "10.0.1",
81
81
  "@semantic-release/github": "11.0.3",
82
82
  "@semantic-release/npm": "12.0.1",
83
- "@semantic-release/release-notes-generator": "14.0.3",
83
+ "@semantic-release/release-notes-generator": "14.1.0",
84
84
  "all-node-versions": "13.0.1",
85
85
  "apollo-upload-client": "18.0.1",
86
86
  "clean-jsdoc-theme": "4.3.0",
@@ -88,9 +88,9 @@
88
88
  "deep-diff": "1.0.2",
89
89
  "eslint": "9.27.0",
90
90
  "eslint-plugin-expect-type": "0.6.2",
91
- "eslint-plugin-unused-imports": "4.3.0",
91
+ "eslint-plugin-unused-imports": "4.4.1",
92
92
  "form-data": "4.0.5",
93
- "globals": "16.2.0",
93
+ "globals": "17.3.0",
94
94
  "graphql-tag": "2.12.6",
95
95
  "jasmine": "5.7.1",
96
96
  "jasmine-spec-reporter": "7.0.0",
@@ -105,7 +105,7 @@
105
105
  "node-abort-controller": "3.1.1",
106
106
  "node-fetch": "3.2.10",
107
107
  "nyc": "17.1.0",
108
- "prettier": "2.0.5",
108
+ "prettier": "3.8.1",
109
109
  "semantic-release": "24.2.5",
110
110
  "typescript": "5.8.3",
111
111
  "typescript-eslint": "8.53.1",
@@ -236,6 +236,7 @@ export interface PasswordPolicyOptions {
236
236
  resetPasswordSuccessOnInvalidEmail?: boolean;
237
237
  }
238
238
  export interface FileUploadOptions {
239
+ allowedFileUrlDomains?: string[];
239
240
  fileExtensions?: (string[]);
240
241
  enableForAnonymousUser?: boolean;
241
242
  enableForAuthenticatedUser?: boolean;