parse-server 8.0.0-alpha.7 → 8.0.0-alpha.9

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.
Files changed (51) hide show
  1. package/lib/Adapters/AdapterLoader.js +2 -2
  2. package/lib/Adapters/Auth/index.js +2 -2
  3. package/lib/Adapters/Auth/mfa.js +4 -6
  4. package/lib/Adapters/PubSub/RedisPubSub.js +9 -12
  5. package/lib/Adapters/Storage/Mongo/MongoSchemaCollection.js +15 -18
  6. package/lib/Adapters/Storage/Mongo/MongoStorageAdapter.js +19 -21
  7. package/lib/Adapters/Storage/Mongo/MongoTransform.js +8 -8
  8. package/lib/Adapters/Storage/Postgres/PostgresStorageAdapter.js +20 -15
  9. package/lib/Auth.js +8 -12
  10. package/lib/Config.js +2 -3
  11. package/lib/Controllers/DatabaseController.js +35 -31
  12. package/lib/Controllers/ParseGraphQLController.js +44 -57
  13. package/lib/Controllers/SchemaController.js +12 -12
  14. package/lib/Controllers/UserController.js +7 -13
  15. package/lib/Controllers/index.js +8 -9
  16. package/lib/GraphQL/loaders/defaultGraphQLTypes.js +8 -9
  17. package/lib/GraphQL/loaders/defaultRelaySchema.js +5 -9
  18. package/lib/GraphQL/loaders/filesMutations.js +4 -7
  19. package/lib/GraphQL/loaders/functionsMutations.js +3 -7
  20. package/lib/GraphQL/loaders/parseClassMutations.js +18 -17
  21. package/lib/GraphQL/loaders/parseClassTypes.js +62 -52
  22. package/lib/GraphQL/loaders/schemaDirectives.js +3 -5
  23. package/lib/GraphQL/loaders/usersMutations.js +4 -8
  24. package/lib/GraphQL/transformers/mutation.js +6 -9
  25. package/lib/GraphQL/transformers/query.js +18 -18
  26. package/lib/GraphQL/transformers/schemaFields.js +10 -12
  27. package/lib/LiveQuery/ParseLiveQueryServer.js +7 -9
  28. package/lib/LiveQuery/QueryTools.js +2 -3
  29. package/lib/Options/Definitions.js +11 -1
  30. package/lib/Options/docs.js +3 -1
  31. package/lib/Options/index.js +1 -1
  32. package/lib/ParseServer.js +14 -17
  33. package/lib/ParseServerRESTController.js +4 -8
  34. package/lib/RestWrite.js +5 -9
  35. package/lib/Routers/ClassesRouter.js +2 -3
  36. package/lib/Routers/FeaturesRouter.js +2 -3
  37. package/lib/Routers/FilesRouter.js +3 -5
  38. package/lib/Routers/SchemasRouter.js +2 -3
  39. package/lib/Routers/UsersRouter.js +15 -16
  40. package/lib/SchemaMigrations/DefinedSchemas.js +4 -7
  41. package/lib/StatusHandler.js +10 -9
  42. package/lib/Utils.js +5 -8
  43. package/lib/cli/utils/commander.js +5 -2
  44. package/lib/cloud-code/Parse.Cloud.js +22 -22
  45. package/lib/logger.js +1 -1
  46. package/lib/middlewares.js +7 -12
  47. package/lib/triggers.js +12 -12
  48. package/package.json +14 -7
  49. package/types/index.d.ts +0 -0
  50. package/types/logger.d.ts +2 -0
  51. package/types/tsconfig.json +18 -0
@@ -6,11 +6,6 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.transformToParse = exports.transformToGraphQL = void 0;
7
7
  var _node = _interopRequireDefault(require("parse/node"));
8
8
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
10
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
11
- function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
12
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
13
- function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
14
9
  const transformToParse = (graphQLSchemaFields, existingFields) => {
15
10
  if (!graphQLSchemaFields) {
16
11
  return {};
@@ -19,11 +14,12 @@ const transformToParse = (graphQLSchemaFields, existingFields) => {
19
14
  const reducerGenerator = type => (parseSchemaFields, field) => {
20
15
  if (type === 'Remove') {
21
16
  if (existingFields[field.name]) {
22
- return _objectSpread(_objectSpread({}, parseSchemaFields), {}, {
17
+ return {
18
+ ...parseSchemaFields,
23
19
  [field.name]: {
24
20
  __op: 'Delete'
25
21
  }
26
- });
22
+ };
27
23
  } else {
28
24
  return parseSchemaFields;
29
25
  }
@@ -35,18 +31,20 @@ const transformToParse = (graphQLSchemaFields, existingFields) => {
35
31
  throw new _node.default.Error(_node.default.Error.INVALID_KEY_NAME, `Duplicated field name: ${field.name}`);
36
32
  }
37
33
  if (type === 'Relation' || type === 'Pointer') {
38
- return _objectSpread(_objectSpread({}, parseSchemaFields), {}, {
34
+ return {
35
+ ...parseSchemaFields,
39
36
  [field.name]: {
40
37
  type,
41
38
  targetClass: field.targetClassName
42
39
  }
43
- });
40
+ };
44
41
  }
45
- return _objectSpread(_objectSpread({}, parseSchemaFields), {}, {
42
+ return {
43
+ ...parseSchemaFields,
46
44
  [field.name]: {
47
45
  type
48
46
  }
49
- });
47
+ };
50
48
  };
51
49
  if (graphQLSchemaFields.addStrings) {
52
50
  parseSchemaFields = graphQLSchemaFields.addStrings.reduce(reducerGenerator('String'), parseSchemaFields);
@@ -98,4 +96,4 @@ const transformToGraphQL = parseSchemaFields => {
98
96
  }));
99
97
  };
100
98
  exports.transformToGraphQL = transformToGraphQL;
101
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbm9kZSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0Iiwib3duS2V5cyIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiX3RvUHJvcGVydHlLZXkiLCJ2YWx1ZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiaSIsIl90b1ByaW1pdGl2ZSIsIlN5bWJvbCIsInRvUHJpbWl0aXZlIiwiY2FsbCIsIlR5cGVFcnJvciIsIlN0cmluZyIsIk51bWJlciIsInRyYW5zZm9ybVRvUGFyc2UiLCJncmFwaFFMU2NoZW1hRmllbGRzIiwiZXhpc3RpbmdGaWVsZHMiLCJwYXJzZVNjaGVtYUZpZWxkcyIsInJlZHVjZXJHZW5lcmF0b3IiLCJ0eXBlIiwiZmllbGQiLCJuYW1lIiwiX19vcCIsInJlbW92ZSIsImZpbmQiLCJyZW1vdmVGaWVsZCIsIlBhcnNlIiwiRXJyb3IiLCJJTlZBTElEX0tFWV9OQU1FIiwidGFyZ2V0Q2xhc3MiLCJ0YXJnZXRDbGFzc05hbWUiLCJhZGRTdHJpbmdzIiwicmVkdWNlIiwiYWRkTnVtYmVycyIsImFkZEJvb2xlYW5zIiwiYWRkQXJyYXlzIiwiYWRkT2JqZWN0cyIsImFkZERhdGVzIiwiYWRkRmlsZXMiLCJhZGRHZW9Qb2ludCIsImFkZFBvbHlnb25zIiwiYWRkQnl0ZXMiLCJhZGRQb2ludGVycyIsImFkZFJlbGF0aW9ucyIsImV4cG9ydHMiLCJ0cmFuc2Zvcm1Ub0dyYXBoUUwiLCJtYXAiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvR3JhcGhRTC90cmFuc2Zvcm1lcnMvc2NoZW1hRmllbGRzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBQYXJzZSBmcm9tICdwYXJzZS9ub2RlJztcblxuY29uc3QgdHJhbnNmb3JtVG9QYXJzZSA9IChncmFwaFFMU2NoZW1hRmllbGRzLCBleGlzdGluZ0ZpZWxkcykgPT4ge1xuICBpZiAoIWdyYXBoUUxTY2hlbWFGaWVsZHMpIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICBsZXQgcGFyc2VTY2hlbWFGaWVsZHMgPSB7fTtcblxuICBjb25zdCByZWR1Y2VyR2VuZXJhdG9yID0gdHlwZSA9PiAocGFyc2VTY2hlbWFGaWVsZHMsIGZpZWxkKSA9PiB7XG4gICAgaWYgKHR5cGUgPT09ICdSZW1vdmUnKSB7XG4gICAgICBpZiAoZXhpc3RpbmdGaWVsZHNbZmllbGQubmFtZV0pIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5wYXJzZVNjaGVtYUZpZWxkcyxcbiAgICAgICAgICBbZmllbGQubmFtZV06IHtcbiAgICAgICAgICAgIF9fb3A6ICdEZWxldGUnLFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gcGFyc2VTY2hlbWFGaWVsZHM7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChcbiAgICAgIGdyYXBoUUxTY2hlbWFGaWVsZHMucmVtb3ZlICYmXG4gICAgICBncmFwaFFMU2NoZW1hRmllbGRzLnJlbW92ZS5maW5kKHJlbW92ZUZpZWxkID0+IHJlbW92ZUZpZWxkLm5hbWUgPT09IGZpZWxkLm5hbWUpXG4gICAgKSB7XG4gICAgICByZXR1cm4gcGFyc2VTY2hlbWFGaWVsZHM7XG4gICAgfVxuICAgIGlmIChwYXJzZVNjaGVtYUZpZWxkc1tmaWVsZC5uYW1lXSB8fCAoZXhpc3RpbmdGaWVsZHMgJiYgZXhpc3RpbmdGaWVsZHNbZmllbGQubmFtZV0pKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuSU5WQUxJRF9LRVlfTkFNRSwgYER1cGxpY2F0ZWQgZmllbGQgbmFtZTogJHtmaWVsZC5uYW1lfWApO1xuICAgIH1cbiAgICBpZiAodHlwZSA9PT0gJ1JlbGF0aW9uJyB8fCB0eXBlID09PSAnUG9pbnRlcicpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnBhcnNlU2NoZW1hRmllbGRzLFxuICAgICAgICBbZmllbGQubmFtZV06IHtcbiAgICAgICAgICB0eXBlLFxuICAgICAgICAgIHRhcmdldENsYXNzOiBmaWVsZC50YXJnZXRDbGFzc05hbWUsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgLi4ucGFyc2VTY2hlbWFGaWVsZHMsXG4gICAgICBbZmllbGQubmFtZV06IHtcbiAgICAgICAgdHlwZSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfTtcblxuICBpZiAoZ3JhcGhRTFNjaGVtYUZpZWxkcy5hZGRTdHJpbmdzKSB7XG4gICAgcGFyc2VTY2hlbWFGaWVsZHMgPSBncmFwaFFMU2NoZW1hRmllbGRzLmFkZFN0cmluZ3MucmVkdWNlKFxuICAgICAgcmVkdWNlckdlbmVyYXRvcignU3RyaW5nJyksXG4gICAgICBwYXJzZVNjaGVtYUZpZWxkc1xuICAgICk7XG4gIH1cbiAgaWYgKGdyYXBoUUxTY2hlbWFGaWVsZHMuYWRkTnVtYmVycykge1xuICAgIHBhcnNlU2NoZW1hRmllbGRzID0gZ3JhcGhRTFNjaGVtYUZpZWxkcy5hZGROdW1iZXJzLnJlZHVjZShcbiAgICAgIHJlZHVjZXJHZW5lcmF0b3IoJ051bWJlcicpLFxuICAgICAgcGFyc2VTY2hlbWFGaWVsZHNcbiAgICApO1xuICB9XG4gIGlmIChncmFwaFFMU2NoZW1hRmllbGRzLmFkZEJvb2xlYW5zKSB7XG4gICAgcGFyc2VTY2hlbWFGaWVsZHMgPSBncmFwaFFMU2NoZW1hRmllbGRzLmFkZEJvb2xlYW5zLnJlZHVjZShcbiAgICAgIHJlZHVjZXJHZW5lcmF0b3IoJ0Jvb2xlYW4nKSxcbiAgICAgIHBhcnNlU2NoZW1hRmllbGRzXG4gICAgKTtcbiAgfVxuICBpZiAoZ3JhcGhRTFNjaGVtYUZpZWxkcy5hZGRBcnJheXMpIHtcbiAgICBwYXJzZVNjaGVtYUZpZWxkcyA9IGdyYXBoUUxTY2hlbWFGaWVsZHMuYWRkQXJyYXlzLnJlZHVjZShcbiAgICAgIHJlZHVjZXJHZW5lcmF0b3IoJ0FycmF5JyksXG4gICAgICBwYXJzZVNjaGVtYUZpZWxkc1xuICAgICk7XG4gIH1cbiAgaWYgKGdyYXBoUUxTY2hlbWFGaWVsZHMuYWRkT2JqZWN0cykge1xuICAgIHBhcnNlU2NoZW1hRmllbGRzID0gZ3JhcGhRTFNjaGVtYUZpZWxkcy5hZGRPYmplY3RzLnJlZHVjZShcbiAgICAgIHJlZHVjZXJHZW5lcmF0b3IoJ09iamVjdCcpLFxuICAgICAgcGFyc2VTY2hlbWFGaWVsZHNcbiAgICApO1xuICB9XG4gIGlmIChncmFwaFFMU2NoZW1hRmllbGRzLmFkZERhdGVzKSB7XG4gICAgcGFyc2VTY2hlbWFGaWVsZHMgPSBncmFwaFFMU2NoZW1hRmllbGRzLmFkZERhdGVzLnJlZHVjZShcbiAgICAgIHJlZHVjZXJHZW5lcmF0b3IoJ0RhdGUnKSxcbiAgICAgIHBhcnNlU2NoZW1hRmllbGRzXG4gICAgKTtcbiAgfVxuICBpZiAoZ3JhcGhRTFNjaGVtYUZpZWxkcy5hZGRGaWxlcykge1xuICAgIHBhcnNlU2NoZW1hRmllbGRzID0gZ3JhcGhRTFNjaGVtYUZpZWxkcy5hZGRGaWxlcy5yZWR1Y2UoXG4gICAgICByZWR1Y2VyR2VuZXJhdG9yKCdGaWxlJyksXG4gICAgICBwYXJzZVNjaGVtYUZpZWxkc1xuICAgICk7XG4gIH1cbiAgaWYgKGdyYXBoUUxTY2hlbWFGaWVsZHMuYWRkR2VvUG9pbnQpIHtcbiAgICBwYXJzZVNjaGVtYUZpZWxkcyA9IFtncmFwaFFMU2NoZW1hRmllbGRzLmFkZEdlb1BvaW50XS5yZWR1Y2UoXG4gICAgICByZWR1Y2VyR2VuZXJhdG9yKCdHZW9Qb2ludCcpLFxuICAgICAgcGFyc2VTY2hlbWFGaWVsZHNcbiAgICApO1xuICB9XG4gIGlmIChncmFwaFFMU2NoZW1hRmllbGRzLmFkZFBvbHlnb25zKSB7XG4gICAgcGFyc2VTY2hlbWFGaWVsZHMgPSBncmFwaFFMU2NoZW1hRmllbGRzLmFkZFBvbHlnb25zLnJlZHVjZShcbiAgICAgIHJlZHVjZXJHZW5lcmF0b3IoJ1BvbHlnb24nKSxcbiAgICAgIHBhcnNlU2NoZW1hRmllbGRzXG4gICAgKTtcbiAgfVxuICBpZiAoZ3JhcGhRTFNjaGVtYUZpZWxkcy5hZGRCeXRlcykge1xuICAgIHBhcnNlU2NoZW1hRmllbGRzID0gZ3JhcGhRTFNjaGVtYUZpZWxkcy5hZGRCeXRlcy5yZWR1Y2UoXG4gICAgICByZWR1Y2VyR2VuZXJhdG9yKCdCeXRlcycpLFxuICAgICAgcGFyc2VTY2hlbWFGaWVsZHNcbiAgICApO1xuICB9XG4gIGlmIChncmFwaFFMU2NoZW1hRmllbGRzLmFkZFBvaW50ZXJzKSB7XG4gICAgcGFyc2VTY2hlbWFGaWVsZHMgPSBncmFwaFFMU2NoZW1hRmllbGRzLmFkZFBvaW50ZXJzLnJlZHVjZShcbiAgICAgIHJlZHVjZXJHZW5lcmF0b3IoJ1BvaW50ZXInKSxcbiAgICAgIHBhcnNlU2NoZW1hRmllbGRzXG4gICAgKTtcbiAgfVxuICBpZiAoZ3JhcGhRTFNjaGVtYUZpZWxkcy5hZGRSZWxhdGlvbnMpIHtcbiAgICBwYXJzZVNjaGVtYUZpZWxkcyA9IGdyYXBoUUxTY2hlbWFGaWVsZHMuYWRkUmVsYXRpb25zLnJlZHVjZShcbiAgICAgIHJlZHVjZXJHZW5lcmF0b3IoJ1JlbGF0aW9uJyksXG4gICAgICBwYXJzZVNjaGVtYUZpZWxkc1xuICAgICk7XG4gIH1cbiAgaWYgKGV4aXN0aW5nRmllbGRzICYmIGdyYXBoUUxTY2hlbWFGaWVsZHMucmVtb3ZlKSB7XG4gICAgcGFyc2VTY2hlbWFGaWVsZHMgPSBncmFwaFFMU2NoZW1hRmllbGRzLnJlbW92ZS5yZWR1Y2UoXG4gICAgICByZWR1Y2VyR2VuZXJhdG9yKCdSZW1vdmUnKSxcbiAgICAgIHBhcnNlU2NoZW1hRmllbGRzXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBwYXJzZVNjaGVtYUZpZWxkcztcbn07XG5cbmNvbnN0IHRyYW5zZm9ybVRvR3JhcGhRTCA9IHBhcnNlU2NoZW1hRmllbGRzID0+IHtcbiAgcmV0dXJuIE9iamVjdC5rZXlzKHBhcnNlU2NoZW1hRmllbGRzKS5tYXAobmFtZSA9PiAoe1xuICAgIG5hbWUsXG4gICAgdHlwZTogcGFyc2VTY2hlbWFGaWVsZHNbbmFtZV0udHlwZSxcbiAgICB0YXJnZXRDbGFzc05hbWU6IHBhcnNlU2NoZW1hRmllbGRzW25hbWVdLnRhcmdldENsYXNzLFxuICB9KSk7XG59O1xuXG5leHBvcnQgeyB0cmFuc2Zvcm1Ub1BhcnNlLCB0cmFuc2Zvcm1Ub0dyYXBoUUwgfTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsS0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQStCLFNBQUFELHVCQUFBRSxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsS0FBQUUsT0FBQSxFQUFBRixDQUFBO0FBQUEsU0FBQUcsUUFBQUgsQ0FBQSxFQUFBSSxDQUFBLFFBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxJQUFBLENBQUFQLENBQUEsT0FBQU0sTUFBQSxDQUFBRSxxQkFBQSxRQUFBQyxDQUFBLEdBQUFILE1BQUEsQ0FBQUUscUJBQUEsQ0FBQVIsQ0FBQSxHQUFBSSxDQUFBLEtBQUFLLENBQUEsR0FBQUEsQ0FBQSxDQUFBQyxNQUFBLFdBQUFOLENBQUEsV0FBQUUsTUFBQSxDQUFBSyx3QkFBQSxDQUFBWCxDQUFBLEVBQUFJLENBQUEsRUFBQVEsVUFBQSxPQUFBUCxDQUFBLENBQUFRLElBQUEsQ0FBQUMsS0FBQSxDQUFBVCxDQUFBLEVBQUFJLENBQUEsWUFBQUosQ0FBQTtBQUFBLFNBQUFVLGNBQUFmLENBQUEsYUFBQUksQ0FBQSxNQUFBQSxDQUFBLEdBQUFZLFNBQUEsQ0FBQUMs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
99
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbm9kZSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwidHJhbnNmb3JtVG9QYXJzZSIsImdyYXBoUUxTY2hlbWFGaWVsZHMiLCJleGlzdGluZ0ZpZWxkcyIsInBhcnNlU2NoZW1hRmllbGRzIiwicmVkdWNlckdlbmVyYXRvciIsInR5cGUiLCJmaWVsZCIsIm5hbWUiLCJfX29wIiwicmVtb3ZlIiwiZmluZCIsInJlbW92ZUZpZWxkIiwiUGFyc2UiLCJFcnJvciIsIklOVkFMSURfS0VZX05BTUUiLCJ0YXJnZXRDbGFzcyIsInRhcmdldENsYXNzTmFtZSIsImFkZFN0cmluZ3MiLCJyZWR1Y2UiLCJhZGROdW1iZXJzIiwiYWRkQm9vbGVhbnMiLCJhZGRBcnJheXMiLCJhZGRPYmplY3RzIiwiYWRkRGF0ZXMiLCJhZGRGaWxlcyIsImFkZEdlb1BvaW50IiwiYWRkUG9seWdvbnMiLCJhZGRCeXRlcyIsImFkZFBvaW50ZXJzIiwiYWRkUmVsYXRpb25zIiwiZXhwb3J0cyIsInRyYW5zZm9ybVRvR3JhcGhRTCIsIk9iamVjdCIsImtleXMiLCJtYXAiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvR3JhcGhRTC90cmFuc2Zvcm1lcnMvc2NoZW1hRmllbGRzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBQYXJzZSBmcm9tICdwYXJzZS9ub2RlJztcblxuY29uc3QgdHJhbnNmb3JtVG9QYXJzZSA9IChncmFwaFFMU2NoZW1hRmllbGRzLCBleGlzdGluZ0ZpZWxkcykgPT4ge1xuICBpZiAoIWdyYXBoUUxTY2hlbWFGaWVsZHMpIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICBsZXQgcGFyc2VTY2hlbWFGaWVsZHMgPSB7fTtcblxuICBjb25zdCByZWR1Y2VyR2VuZXJhdG9yID0gdHlwZSA9PiAocGFyc2VTY2hlbWFGaWVsZHMsIGZpZWxkKSA9PiB7XG4gICAgaWYgKHR5cGUgPT09ICdSZW1vdmUnKSB7XG4gICAgICBpZiAoZXhpc3RpbmdGaWVsZHNbZmllbGQubmFtZV0pIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5wYXJzZVNjaGVtYUZpZWxkcyxcbiAgICAgICAgICBbZmllbGQubmFtZV06IHtcbiAgICAgICAgICAgIF9fb3A6ICdEZWxldGUnLFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gcGFyc2VTY2hlbWFGaWVsZHM7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChcbiAgICAgIGdyYXBoUUxTY2hlbWFGaWVsZHMucmVtb3ZlICYmXG4gICAgICBncmFwaFFMU2NoZW1hRmllbGRzLnJlbW92ZS5maW5kKHJlbW92ZUZpZWxkID0+IHJlbW92ZUZpZWxkLm5hbWUgPT09IGZpZWxkLm5hbWUpXG4gICAgKSB7XG4gICAgICByZXR1cm4gcGFyc2VTY2hlbWFGaWVsZHM7XG4gICAgfVxuICAgIGlmIChwYXJzZVNjaGVtYUZpZWxkc1tmaWVsZC5uYW1lXSB8fCAoZXhpc3RpbmdGaWVsZHMgJiYgZXhpc3RpbmdGaWVsZHNbZmllbGQubmFtZV0pKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuSU5WQUxJRF9LRVlfTkFNRSwgYER1cGxpY2F0ZWQgZmllbGQgbmFtZTogJHtmaWVsZC5uYW1lfWApO1xuICAgIH1cbiAgICBpZiAodHlwZSA9PT0gJ1JlbGF0aW9uJyB8fCB0eXBlID09PSAnUG9pbnRlcicpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnBhcnNlU2NoZW1hRmllbGRzLFxuICAgICAgICBbZmllbGQubmFtZV06IHtcbiAgICAgICAgICB0eXBlLFxuICAgICAgICAgIHRhcmdldENsYXNzOiBmaWVsZC50YXJnZXRDbGFzc05hbWUsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgLi4ucGFyc2VTY2hlbWFGaWVsZHMsXG4gICAgICBbZmllbGQubmFtZV06IHtcbiAgICAgICAgdHlwZSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfTtcblxuICBpZiAoZ3JhcGhRTFNjaGVtYUZpZWxkcy5hZGRTdHJpbmdzKSB7XG4gICAgcGFyc2VTY2hlbWFGaWVsZHMgPSBncmFwaFFMU2NoZW1hRmllbGRzLmFkZFN0cmluZ3MucmVkdWNlKFxuICAgICAgcmVkdWNlckdlbmVyYXRvcignU3RyaW5nJyksXG4gICAgICBwYXJzZVNjaGVtYUZpZWxkc1xuICAgICk7XG4gIH1cbiAgaWYgKGdyYXBoUUxTY2hlbWFGaWVsZHMuYWRkTnVtYmVycykge1xuICAgIHBhcnNlU2NoZW1hRmllbGRzID0gZ3JhcGhRTFNjaGVtYUZpZWxkcy5hZGROdW1iZXJzLnJlZHVjZShcbiAgICAgIHJlZHVjZXJHZW5lcmF0b3IoJ051bWJlcicpLFxuICAgICAgcGFyc2VTY2hlbWFGaWVsZHNcbiAgICApO1xuICB9XG4gIGlmIChncmFwaFFMU2NoZW1hRmllbGRzLmFkZEJvb2xlYW5zKSB7XG4gICAgcGFyc2VTY2hlbWFGaWVsZHMgPSBncmFwaFFMU2NoZW1hRmllbGRzLmFkZEJvb2xlYW5zLnJlZHVjZShcbiAgICAgIHJlZHVjZXJHZW5lcmF0b3IoJ0Jvb2xlYW4nKSxcbiAgICAgIHBhcnNlU2NoZW1hRmllbGRzXG4gICAgKTtcbiAgfVxuICBpZiAoZ3JhcGhRTFNjaGVtYUZpZWxkcy5hZGRBcnJheXMpIHtcbiAgICBwYXJzZVNjaGVtYUZpZWxkcyA9IGdyYXBoUUxTY2hlbWFGaWVsZHMuYWRkQXJyYXlzLnJlZHVjZShcbiAgICAgIHJlZHVjZXJHZW5lcmF0b3IoJ0FycmF5JyksXG4gICAgICBwYXJzZVNjaGVtYUZpZWxkc1xuICAgICk7XG4gIH1cbiAgaWYgKGdyYXBoUUxTY2hlbWFGaWVsZHMuYWRkT2JqZWN0cykge1xuICAgIHBhcnNlU2NoZW1hRmllbGRzID0gZ3JhcGhRTFNjaGVtYUZpZWxkcy5hZGRPYmplY3RzLnJlZHVjZShcbiAgICAgIHJlZHVjZXJHZW5lcmF0b3IoJ09iamVjdCcpLFxuICAgICAgcGFyc2VTY2hlbWFGaWVsZHNcbiAgICApO1xuICB9XG4gIGlmIChncmFwaFFMU2NoZW1hRmllbGRzLmFkZERhdGVzKSB7XG4gICAgcGFyc2VTY2hlbWFGaWVsZHMgPSBncmFwaFFMU2NoZW1hRmllbGRzLmFkZERhdGVzLnJlZHVjZShcbiAgICAgIHJlZHVjZXJHZW5lcmF0b3IoJ0RhdGUnKSxcbiAgICAgIHBhcnNlU2NoZW1hRmllbGRzXG4gICAgKTtcbiAgfVxuICBpZiAoZ3JhcGhRTFNjaGVtYUZpZWxkcy5hZGRGaWxlcykge1xuICAgIHBhcnNlU2NoZW1hRmllbGRzID0gZ3JhcGhRTFNjaGVtYUZpZWxkcy5hZGRGaWxlcy5yZWR1Y2UoXG4gICAgICByZWR1Y2VyR2VuZXJhdG9yKCdGaWxlJyksXG4gICAgICBwYXJzZVNjaGVtYUZpZWxkc1xuICAgICk7XG4gIH1cbiAgaWYgKGdyYXBoUUxTY2hlbWFGaWVsZHMuYWRkR2VvUG9pbnQpIHtcbiAgICBwYXJzZVNjaGVtYUZpZWxkcyA9IFtncmFwaFFMU2NoZW1hRmllbGRzLmFkZEdlb1BvaW50XS5yZWR1Y2UoXG4gICAgICByZWR1Y2VyR2VuZXJhdG9yKCdHZW9Qb2ludCcpLFxuICAgICAgcGFyc2VTY2hlbWFGaWVsZHNcbiAgICApO1xuICB9XG4gIGlmIChncmFwaFFMU2NoZW1hRmllbGRzLmFkZFBvbHlnb25zKSB7XG4gICAgcGFyc2VTY2hlbWFGaWVsZHMgPSBncmFwaFFMU2NoZW1hRmllbGRzLmFkZFBvbHlnb25zLnJlZHVjZShcbiAgICAgIHJlZHVjZXJHZW5lcmF0b3IoJ1BvbHlnb24nKSxcbiAgICAgIHBhcnNlU2NoZW1hRmllbGRzXG4gICAgKTtcbiAgfVxuICBpZiAoZ3JhcGhRTFNjaGVtYUZpZWxkcy5hZGRCeXRlcykge1xuICAgIHBhcnNlU2NoZW1hRmllbGRzID0gZ3JhcGhRTFNjaGVtYUZpZWxkcy5hZGRCeXRlcy5yZWR1Y2UoXG4gICAgICByZWR1Y2VyR2VuZXJhdG9yKCdCeXRlcycpLFxuICAgICAgcGFyc2VTY2hlbWFGaWVsZHNcbiAgICApO1xuICB9XG4gIGlmIChncmFwaFFMU2NoZW1hRmllbGRzLmFkZFBvaW50ZXJzKSB7XG4gICAgcGFyc2VTY2hlbWFGaWVsZHMgPSBncmFwaFFMU2NoZW1hRmllbGRzLmFkZFBvaW50ZXJzLnJlZHVjZShcbiAgICAgIHJlZHVjZXJHZW5lcmF0b3IoJ1BvaW50ZXInKSxcbiAgICAgIHBhcnNlU2NoZW1hRmllbGRzXG4gICAgKTtcbiAgfVxuICBpZiAoZ3JhcGhRTFNjaGVtYUZpZWxkcy5hZGRSZWxhdGlvbnMpIHtcbiAgICBwYXJzZVNjaGVtYUZpZWxkcyA9IGdyYXBoUUxTY2hlbWFGaWVsZHMuYWRkUmVsYXRpb25zLnJlZHVjZShcbiAgICAgIHJlZHVjZXJHZW5lcmF0b3IoJ1JlbGF0aW9uJyksXG4gICAgICBwYXJzZVNjaGVtYUZpZWxkc1xuICAgICk7XG4gIH1cbiAgaWYgKGV4aXN0aW5nRmllbGRzICYmIGdyYXBoUUxTY2hlbWFGaWVsZHMucmVtb3ZlKSB7XG4gICAgcGFyc2VTY2hlbWFGaWVsZHMgPSBncmFwaFFMU2NoZW1hRmllbGRzLnJlbW92ZS5yZWR1Y2UoXG4gICAgICByZWR1Y2VyR2VuZXJhdG9yKCdSZW1vdmUnKSxcbiAgICAgIHBhcnNlU2NoZW1hRmllbGRzXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBwYXJzZVNjaGVtYUZpZWxkcztcbn07XG5cbmNvbnN0IHRyYW5zZm9ybVRvR3JhcGhRTCA9IHBhcnNlU2NoZW1hRmllbGRzID0+IHtcbiAgcmV0dXJuIE9iamVjdC5rZXlzKHBhcnNlU2NoZW1hRmllbGRzKS5tYXAobmFtZSA9PiAoe1xuICAgIG5hbWUsXG4gICAgdHlwZTogcGFyc2VTY2hlbWFGaWVsZHNbbmFtZV0udHlwZSxcbiAgICB0YXJnZXRDbGFzc05hbWU6IHBhcnNlU2NoZW1hRmllbGRzW25hbWVdLnRhcmdldENsYXNzLFxuICB9KSk7XG59O1xuXG5leHBvcnQgeyB0cmFuc2Zvcm1Ub1BhcnNlLCB0cmFuc2Zvcm1Ub0dyYXBoUUwgfTtcbiJd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