@resolveio/server-lib 1.0.0-rc4 → 1.0.0-rc5
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.
- package/collections/active-subscription.collection.d.ts +8 -0
- package/collections/active-subscription.collection.js +68 -2
- package/collections/app-status.collection.d.ts +8 -0
- package/collections/app-status.collection.js +43 -2
- package/collections/app-version.collection.d.ts +8 -0
- package/collections/app-version.collection.js +56 -2
- package/collections/counter.collection.d.ts +10 -0
- package/collections/counter.collection.js +73 -2
- package/collections/cron-job-history.collection.d.ts +8 -0
- package/collections/cron-job-history.collection.js +86 -2
- package/collections/cron-job.collection.d.ts +8 -0
- package/collections/cron-job.collection.js +89 -2
- package/collections/file.collection.d.ts +10 -0
- package/collections/file.collection.js +73 -2
- package/collections/flag.collection.d.ts +8 -0
- package/collections/flag.collection.js +47 -2
- package/collections/log.collection.d.ts +8 -0
- package/collections/log.collection.js +64 -2
- package/collections/logged-in-users.collection.d.ts +8 -0
- package/collections/logged-in-users.collection.js +70 -2
- package/collections/method-call.collection.d.ts +7 -0
- package/collections/method-call.collection.js +44 -2
- package/collections/method-response.collection.d.ts +7 -0
- package/collections/method-response.collection.js +48 -2
- package/collections/queue-flag.collection.d.ts +8 -0
- package/collections/queue-flag.collection.js +41 -2
- package/collections/queue-method.collection.d.ts +8 -0
- package/collections/queue-method.collection.js +116 -2
- package/collections/queue-response.collection.d.ts +8 -0
- package/collections/queue-response.collection.js +78 -2
- package/collections/support-ticket.collection.d.ts +8 -0
- package/collections/support-ticket.collection.js +146 -2
- package/collections/user.collection.d.ts +9 -0
- package/collections/user.collection.js +108 -2
- package/cron/cron.d.ts +6 -0
- package/cron/cron.js +160 -2
- package/fixtures/cron-jobs.d.ts +2 -0
- package/fixtures/cron-jobs.js +72 -2
- package/fixtures/init.d.ts +2 -0
- package/fixtures/init.js +73 -2
- package/http/auth.d.ts +3 -0
- package/http/auth.js +472 -2
- package/http/health.d.ts +2 -0
- package/http/health.js +8 -2
- package/index.d.ts +53 -0
- package/index.js +123 -2
- package/managers/cron.manager.d.ts +17 -0
- package/managers/cron.manager.js +193 -2
- package/managers/method.manager.d.ts +27 -0
- package/managers/method.manager.js +513 -2
- package/managers/queue-method.manager.d.ts +14 -0
- package/managers/queue-method.manager.js +239 -2
- package/managers/subscription.manager.d.ts +27 -0
- package/managers/subscription.manager.js +700 -2
- package/managers/support.manager.d.ts +18 -0
- package/managers/support.manager.js +208 -2
- package/methods/accounts.d.ts +3 -0
- package/methods/accounts.js +253 -2
- package/methods/aws.d.ts +3 -0
- package/methods/aws.js +323 -2
- package/methods/cloudconvert.d.ts +3 -0
- package/methods/cloudconvert.js +37 -2
- package/methods/collections.d.ts +3 -0
- package/methods/collections.js +738 -2
- package/methods/counters.d.ts +3 -0
- package/methods/counters.js +404 -2
- package/methods/cron-jobs.d.ts +3 -0
- package/methods/cron-jobs.js +63 -2
- package/methods/flags.d.ts +3 -0
- package/methods/flags.js +6 -2
- package/methods/logs.d.ts +3 -0
- package/methods/logs.js +29 -2
- package/methods/pdf.d.ts +3 -0
- package/methods/pdf.js +303 -2
- package/models/active-subscription.model.d.ts +14 -0
- package/models/active-subscription.model.js +2 -2
- package/models/app-status.model.d.ts +5 -0
- package/models/app-status.model.js +2 -2
- package/models/app-version.model.d.ts +5 -0
- package/models/app-version.model.js +2 -2
- package/models/collection-document.model.d.ts +7 -0
- package/models/collection-document.model.js +2 -2
- package/models/counter.model.d.ts +6 -0
- package/models/counter.model.js +2 -2
- package/models/cron-job-history.model.d.ts +13 -0
- package/models/cron-job-history.model.js +2 -2
- package/models/cron-job.model.d.ts +14 -0
- package/models/cron-job.model.js +2 -2
- package/models/dialog.model.d.ts +24 -0
- package/models/dialog.model.js +2 -2
- package/models/file.model.d.ts +10 -0
- package/models/file.model.js +2 -2
- package/models/flag.model.d.ts +6 -0
- package/models/flag.model.js +2 -2
- package/models/log.model.d.ts +12 -0
- package/models/log.model.js +2 -2
- package/models/logged-in-users.model.d.ts +10 -0
- package/models/logged-in-users.model.js +2 -2
- package/models/method-call.model.d.ts +8 -0
- package/models/method-call.model.js +2 -2
- package/models/method-response.model.d.ts +9 -0
- package/models/method-response.model.js +2 -2
- package/models/method.model.d.ts +11 -0
- package/models/method.model.js +2 -2
- package/models/pagination.model.d.ts +12 -0
- package/models/pagination.model.js +20 -2
- package/models/permission.model.d.ts +13 -0
- package/models/permission.model.js +2 -2
- package/models/queue-method.model.d.ts +10 -0
- package/models/queue-method.model.js +2 -2
- package/models/queue-response.model.d.ts +11 -0
- package/models/queue-response.model.js +2 -2
- package/models/select-data-label.model.d.ts +10 -0
- package/models/select-data-label.model.js +2 -2
- package/models/server-response.model.d.ts +6 -0
- package/models/server-response.model.js +2 -2
- package/models/subscription.model.d.ts +31 -0
- package/models/subscription.model.js +2 -2
- package/models/support-method.model.d.ts +10 -0
- package/models/support-method.model.js +2 -2
- package/models/support-ticket.model.d.ts +40 -0
- package/models/support-ticket.model.js +2 -2
- package/models/user.model.d.ts +15 -0
- package/models/user.model.js +2 -2
- package/package.json +3 -1
- package/publications/app-status.d.ts +3 -0
- package/publications/app-status.js +14 -2
- package/publications/app-version.d.ts +3 -0
- package/publications/app-version.js +14 -2
- package/publications/cron-jobs.d.ts +3 -0
- package/publications/cron-jobs.js +14 -2
- package/publications/files.d.ts +3 -0
- package/publications/files.js +71 -2
- package/publications/flags.d.ts +3 -0
- package/publications/flags.js +23 -2
- package/publications/logs.d.ts +3 -0
- package/publications/logs.js +26 -2
- package/publications/method-calls.d.ts +3 -0
- package/publications/method-calls.js +14 -2
- package/publications/method-responses.d.ts +3 -0
- package/publications/method-responses.js +14 -2
- package/publications/super-admin.d.ts +3 -0
- package/publications/super-admin.js +21 -2
- package/publications/support-tickets.d.ts +2 -0
- package/publications/support-tickets.js +118 -2
- package/server-app.d.ts +33 -0
- package/server-app.js +598 -2
- package/support-methods/aws.d.ts +3 -0
- package/support-methods/aws.js +276 -2
- package/support-methods/collections.d.ts +3 -0
- package/support-methods/collections.js +471 -2
- package/support-methods/counters.d.ts +3 -0
- package/support-methods/counters.js +189 -2
- package/support-methods/support.d.ts +3 -0
- package/support-methods/support.js +19 -2
- package/util/common.d.ts +15 -0
- package/util/common.js +334 -2
|
@@ -1,2 +1,471 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdXBwb3J0LW1ldGhvZHMvY29sbGVjdGlvbnMudHMiXSwibmFtZXMiOlsibW9uZ29vc2VfMSIsInJlcXVpcmUiLCJjb21tb25fMSIsInNpbXBsX3NjaGVtYV8xIiwibG9nX2NvbGxlY3Rpb25fMSIsInBhZ2luYXRpb25fbW9kZWxfMSIsIl9fMSIsImxvYWRTdXBwb3J0Q29sbGVjdGlvbk1ldGhvZHMiLCJzdXBwb3J0TWFuYWdlciIsInN1cHBvcnRNZXRob2RzIiwiZmluZE9uZSIsImNoZWNrIiwiZGVmYXVsdCIsImNvbGxlY3Rpb24iLCJ0eXBlIiwiU3RyaW5nIiwicXVlcnkiLCJPYmplY3QiLCJibGFja2JveCIsImZ1bmN0aW9uIiwiZ2V0U3VwcG9ydERCIiwibW9kZWwiLCJleGVjIiwiZmluZCIsInNvcnQiLCJvcHRpb25hbCIsInNvcnRRdWVyeSIsImZpbmRXaXRoT3B0aW9ucyIsIm9wdGlvbnMiLCJQYWdpbmF0aW9uT3B0aW9uc1NjaGVtYSIsImxpbWl0Iiwic2tpcCIsInNlbGVjdCIsImZpZWxkcyIsImluc2VydERvY3VtZW50IiwiZG9jdW1lbnQiLCJfdGhpcyIsInRoaXMiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsInNjaGVtYUVycm9ycyIsInZhbGlkYXRlIiwiZXJyb3JzIiwiZ2V0TWFpblNlcnZlciIsImdldE1ldGhvZE1hbmFnZXIiLCJjYWxsTWV0aG9kSW50ZXJuYWwiLCJjb25zb2xlIiwibG9nIiwiZ2V0QmluYXJ5U2l6ZSIsIkpTT04iLCJzdHJpbmdpZnkiLCJMb2dzIiwiY3JlYXRlIiwiX2lkIiwiVHlwZXMiLCJPYmplY3RJZCIsInRvSGV4U3RyaW5nIiwiZGF0ZSIsIkRhdGUiLCJ0aXRsZSIsIm1lc3NhZ2UiLCJ1c2VyIiwicGF5bG9hZCIsIm1ldGhvZCIsIm1lc3NhZ2VJZCIsImlkXzEiLCJfX3YiLCJ0aGVuIiwiZXJyIiwidXBkYXRlRG9jdW1lbnQiLCJmX2RvY3VtZW50IiwibGVhbiIsImVyckRvYyIsImN1cnJEb2MiLCJ2ZXJzaW9uRG9jIiwiZGVlcENvcHkiLCJkb2MiLCJkZWxldGVNYW55IiwiJGFuZCIsIl9pZC5faWQiLCJfaWQuX192IiwiJGx0ZSIsInVwZGF0ZXMiLCJnZXRNb25nb1VwZGF0ZXMiLCJ1cGRhdGVPbmUiLCJzdHJpY3QiLCJyZXMiLCJuTW9kaWZpZWQiLCJlcnJPbGREb2MiLCJvbGREb2MiLCJuZXdDdXJyRG9jSWQiLCJ2ZXJzaW9uRG9jXzEiLCJ1cGRhdGVkRG9jIiwiZ2V0TW9uZ29NZXJnZVVwZGF0ZWREb2MiLCJyZXBsYWNlT25lIiwidXBkYXRlRG9jdW1lbnRQcm9wcyIsImRvY19pZCIsInVwZGF0ZVBhcmFtcyIsIkFycmF5IiwidXBkYXRlUGFyYW1zLiQiLCJkb2NfX3YiLCJOdW1iZXIiLCJtb2RpZmllZERvY18xIiwiZm9yRWFjaCIsImRhdGEiLCJwcm9wIiwib2siLCJ2ZXJzaW9uRG9jXzIiLCJyZW1vdmVEb2N1bWVudCIsImRlbGV0ZU9uZSIsInJlbW92ZURvY3VtZW50V2l0aFF1ZXJ5IiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6Im9FQUFBLElBQUFBLFdBQUFDLFFBQUEsWUFDQUMsU0FBQUQsUUFBQSxrQkFDQUUsZUFBQUYsUUFBQSxnQkFDQUcsaUJBQUFILFFBQUEsaUNBQ0FJLG1CQUFBSixRQUFBLDhCQUVBSyxJQUFBTCxRQUFBLE1BRUEsU0FBZ0JNLDZCQUE2QkMsR0FDNUNBLEVBQWVDLGVBQWUsQ0FDN0JDLFFBQVMsQ0FDUkMsTUFBTyxJQUFJUixlQUFBUyxRQUFhLENBQ3ZCQyxXQUFZLENBQ1hDLEtBQU1DLFFBRVBDLE1BQU8sQ0FDTkYsS0FBTUcsT0FDTkMsVUFBVSxLQUdaQyxTQUFVLFNBQVNOLEVBQW9CRyxHQUN0QyxPQUFPVixJQUFBTSxRQUFnQlEsZUFBZUMsTUFBTVIsR0FBWUgsUUFBUU0sR0FBT00sU0FHekVDLEtBQU0sQ0FDTFosTUFBTyxJQUFJUixlQUFBUyxRQUFhLENBQ3ZCQyxXQUFZLENBQ1hDLEtBQU1DLFFBRVBDLE1BQU8sQ0FDTkYsS0FBTUcs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R0FDaEZsQixFQUNIN0IsRUFBTzZCLEdBR1A5QixFQUFRZ0QsRUFBSW9CLFVBTWpCSSx3QkFBeUIsQ0FDeEJwRyxNQUFPLElBQUlSLGVBQUFTLFFBQWEsQ0FDdkJDLFdBQVksQ0FDWEMsS0FBTUMsUUFFUEMsTUFBTyxDQUNORixLQUFNRyxPQUNOQyxVQUFVLEtBR1pDLFNBQVUsU0FBU04sRUFBb0JHLEdBQTdCLElBQUFvQixFQUFBQyxLQUNULE9BQU8sSUFBSUMsUUFBUSxTQUFDQyxFQUFTQyxHQUU1QnBDLGlCQUFBZ0QsS0FBS0MsT0FBTyxDQUNYQyxJQUFLdEQsV0FBQXVELE1BQU1DLFdBQVdDLGNBQ3RCQyxLQUFNLElBQUlDLEtBQ1Y3QyxLQUFNLE9BQ044QyxNQUFPLDBCQUNQQyxRQUFTLFNBQVd6QixFQUFLMEIsS0FBTyxzQkFBd0JqRCxFQUN4RGtELFFBQVMsQ0FBQ1QsSUFBS3RDLEdBQ2ZnRCxPQUFRLDBCQUNSRixLQUFNMUIsRUFBSzBCLEtBQ1hHLFVBQVcsS0FHWjNELElBQUFNLFFBQWdCUSxlQUFlQyxNQUFNUixHQUFZaUcsVUFBVTlGLEdBQU9NLEtBQUssU0FBQytDLEVBQUtrQixHQUN4RWxCLEVBQ0g3QixFQUFPNkIsR0FHUDlCLEVBQVFnRCxFQUFJb0IsWUFyZW5CSyxRQUFBekcsNkJBQUFBIiwiZmlsZSI6InN1cHBvcnQtbWV0aG9kcy9jb2xsZWN0aW9ucy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERvY3VtZW50LCBUeXBlc30gZnJvbSAnbW9uZ29vc2UnO1xuaW1wb3J0IHsgZ2V0TW9uZ29VcGRhdGVzLCBkZWVwQ29weSwgZ2V0TW9uZ29NZXJnZVVwZGF0ZWREb2MsIGdldEJpbmFyeVNpemUgfSBmcm9tICcuLi91dGlsL2NvbW1vbic7XG5pbXBvcnQgU2ltcGxlU2NoZW1hIGZyb20gJ3NpbXBsLXNjaGVtYSc7XG5pbXBvcnQgeyBMb2dzIH0gZnJvbSAnLi4vY29sbGVjdGlvbnMvbG9nLmNvbGxlY3Rpb24nO1xuaW1wb3J0IHsgUGFnaW5hdGlvbk9wdGlvbnNTY2hlbWEsIFBhZ2luYXRpb25PcHRpb25zIH0gZnJvbSAnLi4vbW9kZWxzL3BhZ2luYXRpb24ubW9kZWwnO1xuaW1wb3J0IHsgU3VwcG9ydE1hbmFnZXIgfSBmcm9tICcuLi9tYW5hZ2Vycy9zdXBwb3J0Lm1hbmFnZXInO1xuaW1wb3J0IFJlc29sdmVJT1NlcnZlciBmcm9tICcuLic7XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2FkU3VwcG9ydENvbGxlY3Rpb25NZXRob2RzKHN1cHBvcnRNYW5hZ2VyOiBTdXBwb3J0TWFuYWdlcikge1xuXHRzdXBwb3J0TWFuYWdlci5zdXBwb3J0TWV0aG9kcyh7XG5cdFx0ZmluZE9uZToge1xuXHRcdFx0Y2hlY2s6IG5ldyBTaW1wbGVTY2hlbWEoe1xuXHRcdFx0XHRjb2xsZWN0aW9uOiB7XG5cdFx0XHRcdFx0dHlwZTogU3RyaW5nXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHF1ZXJ5OiB7XG5cdFx0XHRcdFx0dHlwZTogT2JqZWN0LFxuXHRcdFx0XHRcdGJsYWNrYm94OiB0cnVlXG5cdFx0XHRcdH1cblx0XHRcdH0pLFxuXHRcdFx0ZnVuY3Rpb246IGZ1bmN0aW9uKGNvbGxlY3Rpb246IHN0cmluZywgcXVlcnk6IE9iamVjdCkge1xuXHRcdFx0XHRyZXR1cm4gUmVzb2x2ZUlPU2VydmVyLmdldFN1cHBvcnREQigpLm1vZGVsKGNvbGxlY3Rpb24pLmZpbmRPbmUocXVlcnkpLmV4ZWMoKTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdGZpbmQ6IHtcblx0XHRcdGNoZWNrOiBuZXcgU2ltcGxlU2NoZW1hKHtcblx0XHRcdFx0Y29sbGVjdGlvbjoge1xuXHRcdFx0XHRcdHR5cGU6IFN0cmluZ1xuXHRcdFx0XHR9LFxuXHRcdFx0XHRxdWVyeToge1xuXHRcdFx0XHRcdHR5cGU6IE9iamVjdCxcblx0XHRcdFx0XHRibGFja2JveDogdHJ1ZVxuXHRcdFx0XHR9LFxuXHRcdFx0XHRzb3J0OiB7XG5cdFx0XHRcdFx0dHlwZTogT2JqZWN0LFxuXHRcdFx0XHRcdGJsYWNrYm94OiB0cnVlLFxuXHRcdFx0XHRcdG9wdGlvbmFsOiB0cnVlXG5cdFx0XHRcdH1cblx0XHRcdH0pLFxuXHRcdFx0ZnVuY3Rpb246IGZ1bmN0aW9uKGNvbGxlY3Rpb246IHN0cmluZywgcXVlcnk6IE9iamVjdCwgc29ydFF1ZXJ5OiBPYmplY3QgPSB7fSkge1xuXHRcdFx0XHRyZXR1cm4gUmVzb2x2ZUlPU2VydmVyLmdldFN1cHBvcnREQigpLm1vZGVsKGNvbGxlY3Rpb24pLmZpbmQocXVlcnkpLnNvcnQoc29ydFF1ZXJ5KS5leGVjKCk7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRmaW5kV2l0aE9wdGlvbnM6IHtcblx0XHRcdGNoZWNrOiBuZXcgU2ltcGxlU2NoZW1hKHtcblx0XHRcdFx0Y29sbGVjdGlvbjoge1xuXHRcdFx0XHRcdHR5cGU6IFN0cmluZ1xuXHRcdFx0XHR9LFxuXHRcdFx0XHRxdWVyeToge1xuXHRcdFx0XHRcdHR5cGU6IE9iamVjdCxcblx0XHRcdFx0XHRibGFja2JveDogdHJ1ZVxuXHRcdFx0XHR9LFxuXHRcdFx0XHRvcHRpb25zOiB7XG5cdFx0XHRcdFx0dHlwZTogUGFnaW5hdGlvbk9wdGlvbnNTY2hlbWFcblx0XHRcdFx0fVxuXHRcdFx0fSksXG5cdFx0XHRmdW5jdGlvbjogZnVuY3Rpb24oY29sbGVjdGlvbjogc3RyaW5nLCBxdWVyeTogT2JqZWN0LCBvcHRpb25zOiBQYWdpbmF0aW9uT3B0aW9ucykge1xuXHRcdFx0XHRyZXR1cm4gUmVzb2x2ZUlPU2VydmVyLmdldFN1cHBvcnREQigpLm1vZGVsKGNvbGxlY3Rpb24pLmZpbmQocXVlcnkpLnNvcnQob3B0aW9ucy5zb3J0KS5saW1pdChvcHRpb25zLmxpbWl0KS5za2lwKG9wdGlvbnMuc2tpcCkuc2VsZWN0KG9wdGlvbnMuZmllbGRzKS5leGVjKCk7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHQvLyBJbnNlcnQgMSBkb2N1bWVudFxuXHRcdC8vIEBJbnB1dHM6IGNvbGxlY3Rpb24sIGRvY3VtZW50XG5cdFx0Ly8gQE91dHB1dHM6IHJlcyA9IF9pZCBvZiBuZXcgZG9jdW1lbnQsIGVyciA9IG5vdCBpbnNlcnRlZFxuXHRcdGluc2VydERvY3VtZW50OiB7XG5cdFx0XHRjaGVjazogbmV3IFNpbXBsZVNjaGVtYSh7XG5cdFx0XHRcdGNvbGxlY3Rpb246IHtcblx0XHRcdFx0XHR0eXBlOiBTdHJpbmdcblx0XHRcdFx0fSxcblx0XHRcdFx0ZG9jdW1lbnQ6IHtcblx0XHRcdFx0XHR0eXBlOiBPYmplY3QsXG5cdFx0XHRcdFx0YmxhY2tib3g6IHRydWVcblx0XHRcdFx0fVxuXHRcdFx0fSksXG5cdFx0XHRmdW5jdGlvbjogZnVuY3Rpb24oY29sbGVjdGlvbjogc3RyaW5nLCBkb2N1bWVudDogRG9jdW1lbnQpIHtcblx0XHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcblxuXHRcdFx0XHRcdGxldCBzY2hlbWFFcnJvcnMgPSBudWxsO1xuXG5cdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdFJlc29sdmVJT1NlcnZlci5nZXRTdXBwb3J0REIoKS5tb2RlbChjb2xsZWN0aW9uKVsnc2ltcGxzY2hlbWEnXS52YWxpZGF0ZShkb2N1bWVudCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNhdGNoIChlcnJvcnMpIHtcblx0XHRcdFx0XHRcdHNjaGVtYUVycm9ycyA9IGVycm9ycztcblx0XHRcdFx0XHRcdHN1cHBvcnRNYW5hZ2VyLmdldE1haW5TZXJ2ZXIoKS5nZXRNZXRob2RNYW5hZ2VyKCkuY2FsbE1ldGhvZEludGVybmFsKCdpbnNlcnRFcnJvckxvZycsICdTY2hlbWEgRmFpbGVkIG9uIGluc2VydCAtICcgKyBjb2xsZWN0aW9uLCBbc2NoZW1hRXJyb3JzLCBkb2N1bWVudF0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcblx0XHRcdFx0XHRpZiAoc2NoZW1hRXJyb3JzKSB7XG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhzY2hlbWFFcnJvcnMpO1xuXHRcdFx0XHRcdFx0cmVqZWN0KCdTY2hlbWEgRXJyb3JzJyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0aWYgKGdldEJpbmFyeVNpemUoSlNPTi5zdHJpbmdpZnkoZG9jdW1lbnQpKSA8IDIwMDAwMCkge1xuXHRcdFx0XHRcdFx0XHRMb2dzLmNyZWF0ZSh7XG5cdFx0XHRcdFx0XHRcdFx0X2lkOiBUeXBlcy5PYmplY3RJZCgpLnRvSGV4U3RyaW5nKCksXG5cdFx0XHRcdFx0XHRcdFx0ZGF0ZTogbmV3IERhdGUoKSxcblx0XHRcdFx0XHRcdFx0XHR0eXBlOiAnaW5mbycsXG5cdFx0XHRcdFx0XHRcdFx0dGl0bGU6ICdJbnNlcnQgRG9jdW1lbnQnLFxuXHRcdFx0XHRcdFx0XHRcdG1lc3NhZ2U6ICdVc2VyOiAnICsgdGhpcy51c2VyICsgJywgQ29sbGVjdGlvbiBUeXBlOiAnICsgY29sbGVjdGlvbixcblx0XHRcdFx0XHRcdFx0XHRwYXlsb2FkOiBkb2N1bWVudCxcblx0XHRcdFx0XHRcdFx0XHRtZXRob2Q6ICdpbnNlcnREb2N1bWVudCcsXG5cdFx0XHRcdFx0XHRcdFx0dXNlcjogdGhpcy51c2VyLFxuXHRcdFx0XHRcdFx0XHRcdG1lc3NhZ2VJZDogJydcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdFx0TG9ncy5jcmVhdGUoe1xuXHRcdFx0XHRcdFx0XHRcdF9pZDogVHlwZXMuT2JqZWN0SWQoKS50b0hleFN0cmluZygpLFxuXHRcdFx0XHRcdFx0XHRcdGRhdGU6IG5ldyBEYXRlKCksXG5cdFx0XHRcdFx0XHRcdFx0dHlwZTogJ2luZm8nLFxuXHRcdFx0XHRcdFx0XHRcdHRpdGxlOiAnSW5zZXJ0IERvY3VtZW50Jyxcblx0XHRcdFx0XHRcdFx0XHRtZXNzYWdlOiAnVXNlcjogJyArIHRoaXMudXNlciArICcsIENvbGxlY3Rpb24gVHlwZTogJyArIGNvbGxlY3Rpb24sXG5cdFx0XHRcdFx0XHRcdFx0cGF5bG9hZDogJ1RvbyBCaWcnLFxuXHRcdFx0XHRcdFx0XHRcdG1ldGhvZDogJ2luc2VydERvY3VtZW50Jyxcblx0XHRcdFx0XHRcdFx0XHR1c2VyOiB0aGlzLnVzZXIsXG5cdFx0XHRcdFx0XHRcdFx0bWVzc2FnZUlkOiAnJ1xuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0bGV0IGlkID0gVHlwZXMuT2JqZWN0SWQoKS50b0hleFN0cmluZygpO1xuXHRcdFx0XHRcdFx0ZG9jdW1lbnQuX2lkID0gaWQ7XG5cdFx0XHRcdFx0XHRkb2N1bWVudC5fX3YgPSAwO1xuXHRcdFx0XHRcdFx0UmVzb2x2ZUlPU2VydmVyLmdldFN1cHBvcnREQigpLm1vZGVsKGNvbGxlY3Rpb24pLmNyZWF0ZShkb2N1bWVudCkudGhlbigoKSA9PiByZXNvbHZlKGlkKSwgZXJyID0+IHJlamVjdChlcnIpKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH0sXG5cdFx0Ly8gUmVwbGFjZXMgMSBkb2N1bWVudCB3aXRoIG5ldyBkb2N1bWVudCAoZnJvbSBfaWQpXG5cdFx0Ly8gQElucHV0czogY29sbGVjdGlvbiwgZG9jdW1lbnQgaWRcblx0XHQvLyBAT3V0cHV0czogcmVzID0gMSAodXBkYXRlZCAxKSwgcmVzID0gMCAobm90IHVwZGF0ZWQpLCBlcnIgPSBub3QgdXBkYXRlZC93cm9uZyB2ZXJzaW9uXG5cdFx0Ly8gU2VhcmNoIGZvciBkb2MsIGNoZWNrIHZlcnNpb24sIGlmIGZvdW5kIHRoZW4gdHJ5IGFuZCB1cGRhdGVcblx0XHR1cGRhdGVEb2N1bWVudDoge1xuXHRcdFx0Y2hlY2s6IG5ldyBTaW1wbGVTY2hlbWEoe1xuXHRcdFx0XHRjb2xsZWN0aW9uOiB7XG5cdFx0XHRcdFx0dHlwZTogU3RyaW5nXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGZfZG9jdW1lbnQ6IHtcblx0XHRcdFx0XHR0eXBlOiBPYmplY3QsXG5cdFx0XHRcdFx0YmxhY2tib3g6IHRydWVcblx0XHRcdFx0fVxuXHRcdFx0fSksXG5cdFx0XHRmdW5jdGlvbjogZnVuY3Rpb24oY29sbGVjdGlvbjogc3RyaW5nLCBmX2RvY3VtZW50OiBEb2N1bWVudCkge1xuXHRcdFx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXHRcdFx0XHRcdFJlc29sdmVJT1NlcnZlci5nZXRTdXBwb3J0REIoKS5tb2RlbChjb2xsZWN0aW9uKS5maW5kT25lKHtfaWQ6IGZfZG9jdW1lbnQuX2lkfSkubGVhbigpLmV4ZWMoKGVyckRvYywgY3VyckRvYykgPT4ge1xuXHRcdFx0XHRcdFx0aWYgKGN1cnJEb2MpIHtcblx0XHRcdFx0XHRcdFx0aWYgKGN1cnJEb2MuX192ID09PSBmX2RvY3VtZW50Ll9fdikge1xuXHRcdFx0XHRcdFx0XHRcdGxldCB2ZXJzaW9uRG9jID0gZGVlcENvcHkoY3VyckRvYyk7XG5cblx0XHRcdFx0XHRcdFx0XHR2ZXJzaW9uRG9jLl9pZCA9IHtcblx0XHRcdFx0XHRcdFx0XHRcdF9pZDogY3VyckRvYy5faWQsXG5cdFx0XHRcdFx0XHRcdFx0XHRfX3Y6IGN1cnJEb2MuX192XG5cdFx0XHRcdFx0XHRcdFx0fTtcblxuXHRcdFx0XHRcdFx0XHRcdGxldCBzY2hlbWFFcnJvcnMgPSBudWxsO1xuXG5cdFx0XHRcdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdFx0XHRcdFJlc29sdmVJT1NlcnZlci5nZXRTdXBwb3J0REIoKS5tb2RlbChjb2xsZWN0aW9uKVsnc2ltcGxzY2hlbWEnXS52YWxpZGF0ZShmX2RvY3VtZW50KTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0Y2F0Y2ggKGVycm9ycykge1xuXHRcdFx0XHRcdFx0XHRcdFx0c2NoZW1hRXJyb3JzID0gZXJyb3JzO1xuXHRcdFx0XHRcdFx0XHRcdFx0c3VwcG9ydE1hbmFnZXIuZ2V0TWFpblNlcnZlcigpLmdldE1ldGhvZE1hbmFnZXIoKS5jYWxsTWV0aG9kSW50ZXJuYWwoJ2luc2VydEVycm9yTG9nJywgJ1NjaGVtYSBGYWlsZWQgb24gdXBkYXRlRG9jdW1lbnQgLSAnICsgY29sbGVjdGlvbiwgW3NjaGVtYUVycm9ycywgZl9kb2N1bWVudF0pO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdFx0XHRpZiAoc2NoZW1hRXJyb3JzKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhzY2hlbWFFcnJvcnMpO1xuXHRcdFx0XHRcdFx0XHRcdFx0cmVqZWN0KCdTY2hlbWEgRXJyb3JzJyk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdFx0UmVzb2x2ZUlPU2VydmVyLmdldFN1cHBvcnREQigpLm1vZGVsKFJlc29sdmVJT1NlcnZlci5nZXRTdXBwb3J0REIoKS5tb2RlbChjb2xsZWN0aW9uKVsndmVyc2lvbkNvbGxlY3Rpb24nXSkuY3JlYXRlKHZlcnNpb25Eb2MpLnRoZW4oZG9jID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0UmVzb2x2ZUlPU2VydmVyLmdldFN1cHBvcnREQigpLm1vZGVsKFJlc29sdmVJT1NlcnZlci5nZXRTdXBwb3J0REIoKS5tb2RlbChjb2xsZWN0aW9uKVsndmVyc2lvbkNvbGxlY3Rpb24nXSkuZGVsZXRlTWFueSh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0JGFuZDogW1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0eydfaWQuX2lkJzogY3VyckRvYy5faWR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0eydfaWQuX192JzogeyRsdGU6IGN1cnJEb2MuX192IC0gNH19XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9KS5leGVjKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9LCBlcnIgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhlcnIpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cblx0XHRcdFx0XHRcdFx0XHRcdGxldCB1cGRhdGVzID0gZ2V0TW9uZ29VcGRhdGVzKGN1cnJEb2MsIGZfZG9jdW1lbnQsIHRydWUpO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAodXBkYXRlcykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRSZXNvbHZlSU9TZXJ2ZXIuZ2V0U3VwcG9ydERCKCkubW9kZWwoY29sbGVjdGlvbikudXBkYXRlT25lKHtfaWQ6IGZfZG9jdW1lbnQuX2lkfSwgdXBkYXRlcywge3N0cmljdDogZmFsc2V9KS5leGVjKCkudGhlbihyZXMgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJlc29sdmUocmVzLm5Nb2RpZmllZCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0sIGVyciA9PiByZWplY3QoZXJyKSk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmVzb2x2ZSgxKTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKGdldEJpbmFyeVNpemUoSlNPTi5zdHJpbmdpZnkoZl9kb2N1bWVudCkpIDwgMjAwMDAwKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdExvZ3MuY3JlYXRlKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRfaWQ6IFR5cGVzLk9iamVjdElkKCkudG9IZXhTdHJpbmcoKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRkYXRlOiBuZXcgRGF0ZSgpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHR5cGU6ICdpbmZvJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aXRsZTogJ1VwZGF0ZSBEb2N1bWVudCcsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bWVzc2FnZTogJ1VzZXI6ICcgKyB0aGlzLnVzZXIgKyAnLCBDb2xsZWN0aW9uIFR5cGU6ICcgKyBjb2xsZWN0aW9uLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHBheWxvYWQ6IGZfZG9jdW1lbnQsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bWV0aG9kOiAndXBkYXRlRG9jdW1lbnQnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHVzZXI6IHRoaXMudXNlcixcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRtZXNzYWdlSWQ6ICcnXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdExvZ3MuY3JlYXRlKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRfaWQ6IFR5cGVzLk9iamVjdElkKCkudG9IZXhTdHJpbmcoKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRkYXRlOiBuZXcgRGF0ZSgpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHR5cGU6ICdpbmZvJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aXRsZTogJ1VwZGF0ZSBEb2N1bWVudCcsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bWVzc2FnZTogJ1VzZXI6ICcgKyB0aGlzLnVzZXIgKyAnLCBDb2xsZWN0aW9uIFR5cGU6ICcgKyBjb2xsZWN0aW9uLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHBheWxvYWQ6ICdUb28gQmlnJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRtZXRob2Q6ICd1cGRhdGVEb2N1bWVudCcsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dXNlcjogdGhpcy51c2VyLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdG1lc3NhZ2VJZDogJydcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCdpbnZhbGlkIHZlcnNpb24gLSAnICsgY29sbGVjdGlvbiwgY3VyckRvYy5fX3YsIGZfZG9jdW1lbnQuX192KTtcblxuXHRcdFx0XHRcdFx0XHRcdFJlc29sdmVJT1NlcnZlci5nZXRTdXBwb3J0REIoKS5tb2RlbChSZXNvbHZlSU9TZXJ2ZXIuZ2V0U3VwcG9ydERCKCkubW9kZWwoY29sbGVjdGlvbilbJ3ZlcnNpb25Db2xsZWN0aW9uJ10pLmZpbmRPbmUoe1xuXHRcdFx0XHRcdFx0XHRcdFx0JGFuZDogW1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR7J19pZC5faWQnOiBjdXJyRG9jLl9pZH0sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHsnX2lkLl9fdic6IGZfZG9jdW1lbnQuX192fVxuXHRcdFx0XHRcdFx0XHRcdFx0XVxuXHRcdFx0XHRcdFx0XHRcdH0pLmxlYW4oKS5leGVjKChlcnJPbGREb2MsIG9sZERvYykgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0bGV0IG5ld0N1cnJEb2NJZCA9IGN1cnJEb2MuX2lkO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAob2xkRG9jKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGxldCB2ZXJzaW9uRG9jID0gZGVlcENvcHkoY3VyckRvYyk7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0dmVyc2lvbkRvYy5faWQgPSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0X2lkOiBjdXJyRG9jLl9pZCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRfX3Y6IGN1cnJEb2MuX192XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH07XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0bGV0IHVwZGF0ZWREb2MgPSBnZXRNb25nb01lcmdlVXBkYXRlZERvYyhmX2RvY3VtZW50LCBjdXJyRG9jLCBvbGREb2MpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR1cGRhdGVkRG9jLl9pZCA9IG5ld0N1cnJEb2NJZDtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dXBkYXRlZERvYy5fX3YrKztcblx0XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0UmVzb2x2ZUlPU2VydmVyLmdldFN1cHBvcnREQigpLm1vZGVsKGNvbGxlY3Rpb24pLnJlcGxhY2VPbmUoe19pZDogbmV3Q3VyckRvY0lkfSwgdXBkYXRlZERvYykuZXhlYygpLnRoZW4ocmVzID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRSZXNvbHZlSU9TZXJ2ZXIuZ2V0U3VwcG9ydERCKCkubW9kZWwoUmVzb2x2ZUlPU2VydmVyLmdldFN1cHBvcnREQigpLm1vZGVsKGNvbGxlY3Rpb24pWyd2ZXJzaW9uQ29sbGVjdGlvbiddKS5jcmVhdGUodmVyc2lvbkRvYykudGhlbihkb2MgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0UmVzb2x2ZUlPU2VydmVyLmdldFN1cHBvcnREQigpLm1vZGVsKFJlc29sdmVJT1NlcnZlci5nZXRTdXBwb3J0REIoKS5tb2RlbChjb2xsZWN0aW9uKVsndmVyc2lvbkNvbGxlY3Rpb24nXSkuZGVsZXRlTWFueSh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCRhbmQ6IFtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR7J19pZC5faWQnOiB2ZXJzaW9uRG9jLl9pZC5faWR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHsnX2lkLl9fdic6IHskbHRlOiB2ZXJzaW9uRG9jLl9pZC5fX3YgLSA0fX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSkuZXhlYygpO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXNvbHZlKHJlcy5uTW9kaWZpZWQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9LCBlcnIgPT4gcmVqZWN0KGVycikpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJlamVjdCgnSW52YWxpZCBWZXJzaW9uIEFuZCBDb3VsZCBOb3QgRmluZCBIaXN0b3J5IC0gREI6ICcgKyBjdXJyRG9jLl9fdiArICcsIFRyeWluZyB0byB1cGRhdGUgd2l0aCA6JyArIGZfZG9jdW1lbnQuX192KTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRcdHJlamVjdChlcnJEb2MpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdC8vIFVwZGF0ZXMgMSBkb2N1bWVudCdzIHByb3BzIChmcm9tIF9pZClcblx0XHQvLyBASW5wdXRzOiBjb2xsZWN0aW9uLCBkb2N1bWVudCBpZCwgZG9jdW1lbnQgdmVyc2lvbiwgdXBkYXRlIHBhcmFtdGVycyAoe3Byb3A6ICd4eHgnLCBkYXRhOiAneXl5fSlcblx0XHQvLyBAT3V0cHV0czogcmVzID0gMSAodXBkYXRlZCAxKSwgcmVzID0gMCAobm90IHVwZGF0ZWQpLCBlcnIgPSBub3QgdXBkYXRlZC93cm9uZyB2ZXJzaW9uXG5cdFx0Ly8gU2VhcmNoIGZvciBkb2MsIGNoZWNrIHZlcnNpb24sIGlmIGZvdW5kIHRoZW4gdHJ5IGFuZCB1cGRhdGUgcHJvcHNcblx0XHR1cGRhdGVEb2N1bWVudFByb3BzOiB7XG5cdFx0XHRjaGVjazogbmV3IFNpbXBsZVNjaGVtYSh7XG5cdFx0XHRcdGNvbGxlY3Rpb246IHtcblx0XHRcdFx0XHR0eXBlOiBTdHJpbmdcblx0XHRcdFx0fSxcblx0XHRcdFx0ZG9jX2lkOiB7XG5cdFx0XHRcdFx0dHlwZTogU3RyaW5nXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHVwZGF0ZVBhcmFtczoge1xuXHRcdFx0XHRcdHR5cGU6IEFycmF5XG5cdFx0XHRcdH0sXG5cdFx0XHRcdCd1cGRhdGVQYXJhbXMuJCc6IHtcblx0XHRcdFx0XHR0eXBlOiBPYmplY3QsXG5cdFx0XHRcdFx0YmxhY2tib3g6IHRydWVcblx0XHRcdFx0fSxcblx0XHRcdFx0ZG9jX192OiB7XG5cdFx0XHRcdFx0dHlwZTogTnVtYmVyXG5cdFx0XHRcdH1cblx0XHRcdH0pLFxuXHRcdFx0ZnVuY3Rpb246IGZ1bmN0aW9uKGNvbGxlY3Rpb246IHN0cmluZywgZG9jX2lkOiBzdHJpbmcsIHVwZGF0ZVBhcmFtczogYW55W10sIGRvY19fdjogbnVtYmVyKSB7XG5cdFx0XHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cdFx0XHRcdFx0UmVzb2x2ZUlPU2VydmVyLmdldFN1cHBvcnREQigpLm1vZGVsKGNvbGxlY3Rpb24pLmZpbmRPbmUoe19pZDogZG9jX2lkfSkubGVhbigpLmV4ZWMoKGVyckRvYywgY3VyckRvYzogRG9jdW1lbnQpID0+IHtcblx0XHRcdFx0XHRcdGlmIChjdXJyRG9jKSB7XG5cdFx0XHRcdFx0XHRcdGxldCBtb2RpZmllZERvYyA9IGRlZXBDb3B5KGN1cnJEb2MpO1xuXG5cdFx0XHRcdFx0XHRcdHVwZGF0ZVBhcmFtcy5mb3JFYWNoKGRhdGEgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdG1vZGlmaWVkRG9jW2RhdGEucHJvcF0gPSBkYXRhLmRhdGE7XG5cdFx0XHRcdFx0XHRcdH0pO1xuXG5cdFx0XHRcdFx0XHRcdGlmIChtb2RpZmllZERvYy5fX3YgPT09IGRvY19fdikge1xuXHRcdFx0XHRcdFx0XHRcdGxldCB2ZXJzaW9uRG9jID0gZGVlcENvcHkoY3VyckRvYyk7XG5cdFxuXHRcdFx0XHRcdFx0XHRcdHZlcnNpb25Eb2MuX2lkID0ge1xuXHRcdFx0XHRcdFx0XHRcdFx0X2lkOiBjdXJyRG9jLl9pZCxcblx0XHRcdFx0XHRcdFx0XHRcdF9fdjogY3VyckRvYy5fX3Zcblx0XHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcblx0XHRcdFx0XHRcdFx0XHRsZXQgc2NoZW1hRXJyb3JzID0gbnVsbDtcblx0XHRcdFx0XG5cdFx0XHRcdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdFx0XHRcdFJlc29sdmVJT1NlcnZlci5nZXRTdXBwb3J0REIoKS5tb2RlbChjb2xsZWN0aW9uKVsnc2ltcGxzY2hlbWEnXS52YWxpZGF0ZShtb2RpZmllZERvYyk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdGNhdGNoIChlcnJvcnMpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHNjaGVtYUVycm9ycyA9IGVycm9ycztcblx0XHRcdFx0XHRcdFx0XHRcdHN1cHBvcnRNYW5hZ2VyLmdldE1haW5TZXJ2ZXIoKS5nZXRNZXRob2RNYW5hZ2VyKCkuY2FsbE1ldGhvZEludGVybmFsKCdpbnNlcnRFcnJvckxvZycsICdTY2hlbWEgRmFpbGVkIG9uIHVwZGF0ZURvY3VtZW50UHJvcHMgLSAnICsgY29sbGVjdGlvbiwgW3NjaGVtYUVycm9ycywgbW9kaWZpZWREb2NdKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHRcdFx0aWYgKHNjaGVtYUVycm9ycykge1xuXHRcdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coc2NoZW1hRXJyb3JzKTtcblx0XHRcdFx0XHRcdFx0XHRcdHJlamVjdCgnU2NoZW1hIEVycm9ycycpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdFJlc29sdmVJT1NlcnZlci5nZXRTdXBwb3J0REIoKS5tb2RlbChSZXNvbHZlSU9TZXJ2ZXIuZ2V0U3VwcG9ydERCKCkubW9kZWwoY29sbGVjdGlvbilbJ3ZlcnNpb25Db2xsZWN0aW9uJ10pLmNyZWF0ZSh2ZXJzaW9uRG9jKS50aGVuKGRvYyA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFJlc29sdmVJT1NlcnZlci5nZXRTdXBwb3J0REIoKS5tb2RlbChSZXNvbHZlSU9TZXJ2ZXIuZ2V0U3VwcG9ydERCKCkubW9kZWwoY29sbGVjdGlvbilbJ3ZlcnNpb25Db2xsZWN0aW9uJ10pLmRlbGV0ZU1hbnkoe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCRhbmQ6IFtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHsnX2lkLl9pZCc6IGN1cnJEb2MuX2lkfSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHsnX2lkLl9fdic6IHskbHRlOiBjdXJyRG9jLl9fdiAtIDR9fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdF1cblx0XHRcdFx0XHRcdFx0XHRcdFx0fSkuZXhlYygpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSwgZXJyID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coZXJyKTtcblx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRsZXQgdXBkYXRlcyA9IGdldE1vbmdvVXBkYXRlcyhjdXJyRG9jLCBtb2RpZmllZERvYywgdHJ1ZSk7XG5cblx0XHRcdFx0XHRcdFx0XHRcdGlmICh1cGRhdGVzKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFJlc29sdmVJT1NlcnZlci5nZXRTdXBwb3J0REIoKS5tb2RlbChjb2xsZWN0aW9uKS51cGRhdGVPbmUoe19pZDogbW9kaWZpZWREb2MuX2lkfSwgdXBkYXRlcywge3N0cmljdDogZmFsc2V9KS5leGVjKCkudGhlbihyZXMgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJlc29sdmUocmVzLm9rKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSwgZXJyID0+IHJlamVjdChlcnIpKTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXNvbHZlKDEpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoZ2V0QmluYXJ5U2l6ZShKU09OLnN0cmluZ2lmeSh1cGRhdGVQYXJhbXMpKSA8IDIwMDAwMCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRMb2dzLmNyZWF0ZSh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0X2lkOiBUeXBlcy5PYmplY3RJZCgpLnRvSGV4U3RyaW5nKCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGF0ZTogbmV3IERhdGUoKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0eXBlOiAnaW5mbycsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGl0bGU6ICdVcGRhdGUgRG9jdW1lbnQgUHJvcHMnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdG1lc3NhZ2U6ICdVc2VyOiAnICsgdGhpcy51c2VyICsgJywgQ29sbGVjdGlvbiBUeXBlOiAnICsgY29sbGVjdGlvbiArICcsIElkOiAnICsgZG9jX2lkICsgJywgJyArICdWZXJzaW9uOiAnICsgZG9jX192LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHBheWxvYWQ6IHVwZGF0ZVBhcmFtcyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRtZXRob2Q6ICd1cGRhdGVEb2N1bWVudFByb3BzJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR1c2VyOiB0aGlzLnVzZXIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bWVzc2FnZUlkOiAnJ1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRMb2dzLmNyZWF0ZSh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0X2lkOiBUeXBlcy5PYmplY3RJZCgpLnRvSGV4U3RyaW5nKCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGF0ZTogbmV3IERhdGUoKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0eXBlOiAnaW5mbycsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGl0bGU6ICdVcGRhdGUgRG9jdW1lbnQgUHJvcHMnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdG1lc3NhZ2U6ICdVc2VyOiAnICsgdGhpcy51c2VyICsgJywgQ29sbGVjdGlvbiBUeXBlOiAnICsgY29sbGVjdGlvbiArICcsIElkOiAnICsgZG9jX2lkICsgJywgJyArICdWZXJzaW9uOiAnICsgZG9jX192LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHBheWxvYWQ6ICdUb28gQmlnJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRtZXRob2Q6ICd1cGRhdGVEb2N1bWVudFByb3BzJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR1c2VyOiB0aGlzLnVzZXIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bWVzc2FnZUlkOiAnJ1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coJ2ludmFsaWQgdmVyc2lvbiAtICcgKyBjb2xsZWN0aW9uLCBjdXJyRG9jLl9fdiwgZG9jX192KTtcblxuXHRcdFx0XHRcdFx0XHRcdFJlc29sdmVJT1NlcnZlci5nZXRTdXBwb3J0REIoKS5tb2RlbChSZXNvbHZlSU9TZXJ2ZXIuZ2V0U3VwcG9ydERCKCkubW9kZWwoY29sbGVjdGlvbilbJ3ZlcnNpb25Db2xsZWN0aW9uJ10pLmZpbmRPbmUoe1xuXHRcdFx0XHRcdFx0XHRcdFx0JGFuZDogW1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR7J19pZC5faWQnOiBjdXJyRG9jLl9pZH0sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHsnX2lkLl9fdic6IGRvY19fdn1cblx0XHRcdFx0XHRcdFx0XHRcdF1cblx0XHRcdFx0XHRcdFx0XHR9KS5sZWFuKCkuZXhlYygoZXJyT2xkRG9jLCBvbGREb2MpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdGxldCBuZXdDdXJyRG9jSWQgPSBjdXJyRG9jLl9pZDtcblxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKG9sZERvYykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRsZXQgdmVyc2lvbkRvYyA9IGRlZXBDb3B5KGN1cnJEb2MpO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZlcnNpb25Eb2MuX2lkID0ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdF9pZDogY3VyckRvYy5faWQsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0X192OiBjdXJyRG9jLl9fdlxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9O1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGxldCB1cGRhdGVkRG9jID0gZ2V0TW9uZ29NZXJnZVVwZGF0ZWREb2MobW9kaWZpZWREb2MsIGN1cnJEb2MsIG9sZERvYyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHVwZGF0ZWREb2MuX2lkID0gbmV3Q3VyckRvY0lkO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR1cGRhdGVkRG9jLl9fdisrO1xuXHRcblx0XHRcdFx0XHRcdFx0XHRcdFx0UmVzb2x2ZUlPU2VydmVyLmdldFN1cHBvcnREQigpLm1vZGVsKGNvbGxlY3Rpb24pLnJlcGxhY2VPbmUoe19pZDogbmV3Q3VyckRvY0lkfSwgdXBkYXRlZERvYykuZXhlYygpLnRoZW4ocmVzID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRSZXNvbHZlSU9TZXJ2ZXIuZ2V0U3VwcG9ydERCKCkubW9kZWwoUmVzb2x2ZUlPU2VydmVyLmdldFN1cHBvcnREQigpLm1vZGVsKGNvbGxlY3Rpb24pWyd2ZXJzaW9uQ29sbGVjdGlvbiddKS5jcmVhdGUodmVyc2lvbkRvYykudGhlbihkb2MgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0UmVzb2x2ZUlPU2VydmVyLmdldFN1cHBvcnREQigpLm1vZGVsKFJlc29sdmVJT1NlcnZlci5nZXRTdXBwb3J0REIoKS5tb2RlbChjb2xsZWN0aW9uKVsndmVyc2lvbkNvbGxlY3Rpb24nXSkuZGVsZXRlTWFueSh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCRhbmQ6IFtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR7J19pZC5faWQnOiB2ZXJzaW9uRG9jLl9pZC5faWR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHsnX2lkLl9fdic6IHskbHRlOiB2ZXJzaW9uRG9jLl9pZC5fX3YgLSA0fX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSkuZXhlYygpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0sIGVyciA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhlcnIpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJlc29sdmUocmVzLm5Nb2RpZmllZCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0sIGVyciA9PiByZWplY3QoZXJyKSk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmVqZWN0KCdJbnZhbGlkIFZlcnNpb24gQW5kIENvdWxkIE5vdCBGaW5kIEhpc3RvcnkgUHJvcHMgLSBEQjogJyArIGN1cnJEb2MuX192ICsgJywgVHJ5aW5nIHRvIHVwZGF0ZSB3aXRoIDonICsgbW9kaWZpZWREb2MuX192KTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRcdHJlamVjdChlcnJEb2MpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdC8vIFJlbW92ZXMgMSBkb2N1bWVudCAoZnJvbSBfaWQpXG5cdFx0Ly8gQElucHV0czogY29sbGVjdGlvbiwgZG9jdW1lbnQgaWRcblx0XHQvLyBAT3V0cHV0czogcmVzID0gMSAoZGVsZXRlZCksIHJlcyA9IDAgKG5vdCBkZWxldGVkKSwgZXJyID0gbm90IGRlbGV0ZWRcblx0XHQvLyBTZWFyY2ggZm9yIGRvYywgaWYgZm91bmQgdGhlbiB0cnkgYW5kIHJlbW92ZVxuXHRcdHJlbW92ZURvY3VtZW50OiB7XG5cdFx0XHRjaGVjazogbmV3IFNpbXBsZVNjaGVtYSh7XG5cdFx0XHRcdGNvbGxlY3Rpb246IHtcblx0XHRcdFx0XHR0eXBlOiBTdHJpbmdcblx0XHRcdFx0fSxcblx0XHRcdFx0ZG9jX2lkOiB7XG5cdFx0XHRcdFx0dHlwZTogU3RyaW5nXG5cdFx0XHRcdH1cblx0XHRcdH0pLFxuXHRcdFx0ZnVuY3Rpb246IGZ1bmN0aW9uKGNvbGxlY3Rpb246IHN0cmluZywgZG9jX2lkOiBzdHJpbmcpIHtcblx0XHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcblxuXHRcdFx0XHRcdExvZ3MuY3JlYXRlKHtcblx0XHRcdFx0XHRcdF9pZDogVHlwZXMuT2JqZWN0SWQoKS50b0hleFN0cmluZygpLFxuXHRcdFx0XHRcdFx0ZGF0ZTogbmV3IERhdGUoKSxcblx0XHRcdFx0XHRcdHR5cGU6ICdpbmZvJyxcblx0XHRcdFx0XHRcdHRpdGxlOiAnUmVtb3ZlIERvY3VtZW50Jyxcblx0XHRcdFx0XHRcdG1lc3NhZ2U6ICdVc2VyOiAnICsgdGhpcy51c2VyICsgJywgQ29sbGVjdGlvbiBUeXBlOiAnICsgY29sbGVjdGlvbixcblx0XHRcdFx0XHRcdHBheWxvYWQ6IHtfaWQ6IGRvY19pZH0sXG5cdFx0XHRcdFx0XHRtZXRob2Q6ICdyZW1vdmVEb2N1bWVudCcsXG5cdFx0XHRcdFx0XHR1c2VyOiB0aGlzLnVzZXIsXG5cdFx0XHRcdFx0XHRtZXNzYWdlSWQ6ICcnXG5cdFx0XHRcdFx0fSk7XG5cblx0XHRcdFx0XHRSZXNvbHZlSU9TZXJ2ZXIuZ2V0U3VwcG9ydERCKCkubW9kZWwoY29sbGVjdGlvbikuZGVsZXRlT25lKHtfaWQ6IGRvY19pZH0pLmV4ZWMoKGVyciwgcmVzKSA9PiB7XG5cdFx0XHRcdFx0XHRpZiAoZXJyKSB7XG5cdFx0XHRcdFx0XHRcdHJlamVjdChlcnIpO1x0XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdFx0cmVzb2x2ZShyZXMub2spO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdHJlbW92ZURvY3VtZW50V2l0aFF1ZXJ5OiB7XG5cdFx0XHRjaGVjazogbmV3IFNpbXBsZVNjaGVtYSh7XG5cdFx0XHRcdGNvbGxlY3Rpb246IHtcblx0XHRcdFx0XHR0eXBlOiBTdHJpbmdcblx0XHRcdFx0fSxcblx0XHRcdFx0cXVlcnk6IHtcblx0XHRcdFx0XHR0eXBlOiBPYmplY3QsXG5cdFx0XHRcdFx0YmxhY2tib3g6IHRydWVcblx0XHRcdFx0fVxuXHRcdFx0fSksXG5cdFx0XHRmdW5jdGlvbjogZnVuY3Rpb24oY29sbGVjdGlvbjogc3RyaW5nLCBxdWVyeTogT2JqZWN0KSB7XG5cdFx0XHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cblx0XHRcdFx0XHRMb2dzLmNyZWF0ZSh7XG5cdFx0XHRcdFx0XHRfaWQ6IFR5cGVzLk9iamVjdElkKCkudG9IZXhTdHJpbmcoKSxcblx0XHRcdFx0XHRcdGRhdGU6IG5ldyBEYXRlKCksXG5cdFx0XHRcdFx0XHR0eXBlOiAnaW5mbycsXG5cdFx0XHRcdFx0XHR0aXRsZTogJ1JlbW92ZSBEb2N1bWVudCAoUXVlcnkpJyxcblx0XHRcdFx0XHRcdG1lc3NhZ2U6ICdVc2VyOiAnICsgdGhpcy51c2VyICsgJywgQ29sbGVjdGlvbiBUeXBlOiAnICsgY29sbGVjdGlvbixcblx0XHRcdFx0XHRcdHBheWxvYWQ6IHtfaWQ6IHF1ZXJ5fSxcblx0XHRcdFx0XHRcdG1ldGhvZDogJ3JlbW92ZURvY3VtZW50V2l0aFF1ZXJ5Jyxcblx0XHRcdFx0XHRcdHVzZXI6IHRoaXMudXNlcixcblx0XHRcdFx0XHRcdG1lc3NhZ2VJZDogJydcblx0XHRcdFx0XHR9KTtcblxuXHRcdFx0XHRcdFJlc29sdmVJT1NlcnZlci5nZXRTdXBwb3J0REIoKS5tb2RlbChjb2xsZWN0aW9uKS5kZWxldGVPbmUocXVlcnkpLmV4ZWMoKGVyciwgcmVzKSA9PiB7XG5cdFx0XHRcdFx0XHRpZiAoZXJyKSB7XG5cdFx0XHRcdFx0XHRcdHJlamVjdChlcnIpO1x0XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdFx0cmVzb2x2ZShyZXMub2spO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9XG5cdH0pO1xufSJdfQ==
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
var mongoose_1 = require("mongoose");
|
|
4
|
+
var common_1 = require("../util/common");
|
|
5
|
+
var simpl_schema_1 = require("simpl-schema");
|
|
6
|
+
var log_collection_1 = require("../collections/log.collection");
|
|
7
|
+
var pagination_model_1 = require("../models/pagination.model");
|
|
8
|
+
var __1 = require("..");
|
|
9
|
+
function loadSupportCollectionMethods(supportManager) {
|
|
10
|
+
supportManager.supportMethods({
|
|
11
|
+
findOne: {
|
|
12
|
+
check: new simpl_schema_1.default({
|
|
13
|
+
collection: {
|
|
14
|
+
type: String
|
|
15
|
+
},
|
|
16
|
+
query: {
|
|
17
|
+
type: Object,
|
|
18
|
+
blackbox: true
|
|
19
|
+
}
|
|
20
|
+
}),
|
|
21
|
+
function: function (collection, query) {
|
|
22
|
+
return __1.default.getSupportDB().model(collection).findOne(query).exec();
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
find: {
|
|
26
|
+
check: new simpl_schema_1.default({
|
|
27
|
+
collection: {
|
|
28
|
+
type: String
|
|
29
|
+
},
|
|
30
|
+
query: {
|
|
31
|
+
type: Object,
|
|
32
|
+
blackbox: true
|
|
33
|
+
},
|
|
34
|
+
sort: {
|
|
35
|
+
type: Object,
|
|
36
|
+
blackbox: true,
|
|
37
|
+
optional: true
|
|
38
|
+
}
|
|
39
|
+
}),
|
|
40
|
+
function: function (collection, query, sortQuery) {
|
|
41
|
+
if (sortQuery === void 0) { sortQuery = {}; }
|
|
42
|
+
return __1.default.getSupportDB().model(collection).find(query).sort(sortQuery).exec();
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
findWithOptions: {
|
|
46
|
+
check: new simpl_schema_1.default({
|
|
47
|
+
collection: {
|
|
48
|
+
type: String
|
|
49
|
+
},
|
|
50
|
+
query: {
|
|
51
|
+
type: Object,
|
|
52
|
+
blackbox: true
|
|
53
|
+
},
|
|
54
|
+
options: {
|
|
55
|
+
type: pagination_model_1.PaginationOptionsSchema
|
|
56
|
+
}
|
|
57
|
+
}),
|
|
58
|
+
function: function (collection, query, options) {
|
|
59
|
+
return __1.default.getSupportDB().model(collection).find(query).sort(options.sort).limit(options.limit).skip(options.skip).select(options.fields).exec();
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
// Insert 1 document
|
|
63
|
+
// @Inputs: collection, document
|
|
64
|
+
// @Outputs: res = _id of new document, err = not inserted
|
|
65
|
+
insertDocument: {
|
|
66
|
+
check: new simpl_schema_1.default({
|
|
67
|
+
collection: {
|
|
68
|
+
type: String
|
|
69
|
+
},
|
|
70
|
+
document: {
|
|
71
|
+
type: Object,
|
|
72
|
+
blackbox: true
|
|
73
|
+
}
|
|
74
|
+
}),
|
|
75
|
+
function: function (collection, document) {
|
|
76
|
+
var _this = this;
|
|
77
|
+
return new Promise(function (resolve, reject) {
|
|
78
|
+
var schemaErrors = null;
|
|
79
|
+
try {
|
|
80
|
+
__1.default.getSupportDB().model(collection)['simplschema'].validate(document);
|
|
81
|
+
}
|
|
82
|
+
catch (errors) {
|
|
83
|
+
schemaErrors = errors;
|
|
84
|
+
supportManager.getMainServer().getMethodManager().callMethodInternal('insertErrorLog', 'Schema Failed on insert - ' + collection, [schemaErrors, document]);
|
|
85
|
+
}
|
|
86
|
+
if (schemaErrors) {
|
|
87
|
+
console.log(schemaErrors);
|
|
88
|
+
reject('Schema Errors');
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
if (common_1.getBinarySize(JSON.stringify(document)) < 200000) {
|
|
92
|
+
log_collection_1.Logs.create({
|
|
93
|
+
_id: mongoose_1.Types.ObjectId().toHexString(),
|
|
94
|
+
date: new Date(),
|
|
95
|
+
type: 'info',
|
|
96
|
+
title: 'Insert Document',
|
|
97
|
+
message: 'User: ' + _this.user + ', Collection Type: ' + collection,
|
|
98
|
+
payload: document,
|
|
99
|
+
method: 'insertDocument',
|
|
100
|
+
user: _this.user,
|
|
101
|
+
messageId: ''
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
log_collection_1.Logs.create({
|
|
106
|
+
_id: mongoose_1.Types.ObjectId().toHexString(),
|
|
107
|
+
date: new Date(),
|
|
108
|
+
type: 'info',
|
|
109
|
+
title: 'Insert Document',
|
|
110
|
+
message: 'User: ' + _this.user + ', Collection Type: ' + collection,
|
|
111
|
+
payload: 'Too Big',
|
|
112
|
+
method: 'insertDocument',
|
|
113
|
+
user: _this.user,
|
|
114
|
+
messageId: ''
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
var id_1 = mongoose_1.Types.ObjectId().toHexString();
|
|
118
|
+
document._id = id_1;
|
|
119
|
+
document.__v = 0;
|
|
120
|
+
__1.default.getSupportDB().model(collection).create(document).then(function () { return resolve(id_1); }, function (err) { return reject(err); });
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
},
|
|
125
|
+
// Replaces 1 document with new document (from _id)
|
|
126
|
+
// @Inputs: collection, document id
|
|
127
|
+
// @Outputs: res = 1 (updated 1), res = 0 (not updated), err = not updated/wrong version
|
|
128
|
+
// Search for doc, check version, if found then try and update
|
|
129
|
+
updateDocument: {
|
|
130
|
+
check: new simpl_schema_1.default({
|
|
131
|
+
collection: {
|
|
132
|
+
type: String
|
|
133
|
+
},
|
|
134
|
+
f_document: {
|
|
135
|
+
type: Object,
|
|
136
|
+
blackbox: true
|
|
137
|
+
}
|
|
138
|
+
}),
|
|
139
|
+
function: function (collection, f_document) {
|
|
140
|
+
var _this = this;
|
|
141
|
+
return new Promise(function (resolve, reject) {
|
|
142
|
+
__1.default.getSupportDB().model(collection).findOne({ _id: f_document._id }).lean().exec(function (errDoc, currDoc) {
|
|
143
|
+
if (currDoc) {
|
|
144
|
+
if (currDoc.__v === f_document.__v) {
|
|
145
|
+
var versionDoc = common_1.deepCopy(currDoc);
|
|
146
|
+
versionDoc._id = {
|
|
147
|
+
_id: currDoc._id,
|
|
148
|
+
__v: currDoc.__v
|
|
149
|
+
};
|
|
150
|
+
var schemaErrors = null;
|
|
151
|
+
try {
|
|
152
|
+
__1.default.getSupportDB().model(collection)['simplschema'].validate(f_document);
|
|
153
|
+
}
|
|
154
|
+
catch (errors) {
|
|
155
|
+
schemaErrors = errors;
|
|
156
|
+
supportManager.getMainServer().getMethodManager().callMethodInternal('insertErrorLog', 'Schema Failed on updateDocument - ' + collection, [schemaErrors, f_document]);
|
|
157
|
+
}
|
|
158
|
+
if (schemaErrors) {
|
|
159
|
+
console.log(schemaErrors);
|
|
160
|
+
reject('Schema Errors');
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
__1.default.getSupportDB().model(__1.default.getSupportDB().model(collection)['versionCollection']).create(versionDoc).then(function (doc) {
|
|
164
|
+
__1.default.getSupportDB().model(__1.default.getSupportDB().model(collection)['versionCollection']).deleteMany({
|
|
165
|
+
$and: [
|
|
166
|
+
{ '_id._id': currDoc._id },
|
|
167
|
+
{ '_id.__v': { $lte: currDoc.__v - 4 } }
|
|
168
|
+
]
|
|
169
|
+
}).exec();
|
|
170
|
+
}, function (err) {
|
|
171
|
+
console.log(err);
|
|
172
|
+
});
|
|
173
|
+
var updates = common_1.getMongoUpdates(currDoc, f_document, true);
|
|
174
|
+
if (updates) {
|
|
175
|
+
__1.default.getSupportDB().model(collection).updateOne({ _id: f_document._id }, updates, { strict: false }).exec().then(function (res) {
|
|
176
|
+
resolve(res.nModified);
|
|
177
|
+
}, function (err) { return reject(err); });
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
resolve(1);
|
|
181
|
+
}
|
|
182
|
+
if (common_1.getBinarySize(JSON.stringify(f_document)) < 200000) {
|
|
183
|
+
log_collection_1.Logs.create({
|
|
184
|
+
_id: mongoose_1.Types.ObjectId().toHexString(),
|
|
185
|
+
date: new Date(),
|
|
186
|
+
type: 'info',
|
|
187
|
+
title: 'Update Document',
|
|
188
|
+
message: 'User: ' + _this.user + ', Collection Type: ' + collection,
|
|
189
|
+
payload: f_document,
|
|
190
|
+
method: 'updateDocument',
|
|
191
|
+
user: _this.user,
|
|
192
|
+
messageId: ''
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
else {
|
|
196
|
+
log_collection_1.Logs.create({
|
|
197
|
+
_id: mongoose_1.Types.ObjectId().toHexString(),
|
|
198
|
+
date: new Date(),
|
|
199
|
+
type: 'info',
|
|
200
|
+
title: 'Update Document',
|
|
201
|
+
message: 'User: ' + _this.user + ', Collection Type: ' + collection,
|
|
202
|
+
payload: 'Too Big',
|
|
203
|
+
method: 'updateDocument',
|
|
204
|
+
user: _this.user,
|
|
205
|
+
messageId: ''
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
else {
|
|
211
|
+
console.log('invalid version - ' + collection, currDoc.__v, f_document.__v);
|
|
212
|
+
__1.default.getSupportDB().model(__1.default.getSupportDB().model(collection)['versionCollection']).findOne({
|
|
213
|
+
$and: [
|
|
214
|
+
{ '_id._id': currDoc._id },
|
|
215
|
+
{ '_id.__v': f_document.__v }
|
|
216
|
+
]
|
|
217
|
+
}).lean().exec(function (errOldDoc, oldDoc) {
|
|
218
|
+
var newCurrDocId = currDoc._id;
|
|
219
|
+
if (oldDoc) {
|
|
220
|
+
var versionDoc_1 = common_1.deepCopy(currDoc);
|
|
221
|
+
versionDoc_1._id = {
|
|
222
|
+
_id: currDoc._id,
|
|
223
|
+
__v: currDoc.__v
|
|
224
|
+
};
|
|
225
|
+
var updatedDoc = common_1.getMongoMergeUpdatedDoc(f_document, currDoc, oldDoc);
|
|
226
|
+
updatedDoc._id = newCurrDocId;
|
|
227
|
+
updatedDoc.__v++;
|
|
228
|
+
__1.default.getSupportDB().model(collection).replaceOne({ _id: newCurrDocId }, updatedDoc).exec().then(function (res) {
|
|
229
|
+
__1.default.getSupportDB().model(__1.default.getSupportDB().model(collection)['versionCollection']).create(versionDoc_1).then(function (doc) {
|
|
230
|
+
__1.default.getSupportDB().model(__1.default.getSupportDB().model(collection)['versionCollection']).deleteMany({
|
|
231
|
+
$and: [
|
|
232
|
+
{ '_id._id': versionDoc_1._id._id },
|
|
233
|
+
{ '_id.__v': { $lte: versionDoc_1._id.__v - 4 } }
|
|
234
|
+
]
|
|
235
|
+
}).exec();
|
|
236
|
+
resolve(res.nModified);
|
|
237
|
+
});
|
|
238
|
+
}, function (err) { return reject(err); });
|
|
239
|
+
}
|
|
240
|
+
else {
|
|
241
|
+
reject('Invalid Version And Could Not Find History - DB: ' + currDoc.__v + ', Trying to update with :' + f_document.__v);
|
|
242
|
+
}
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
else {
|
|
247
|
+
reject(errDoc);
|
|
248
|
+
}
|
|
249
|
+
});
|
|
250
|
+
});
|
|
251
|
+
}
|
|
252
|
+
},
|
|
253
|
+
// Updates 1 document's props (from _id)
|
|
254
|
+
// @Inputs: collection, document id, document version, update paramters ({prop: 'xxx', data: 'yyy})
|
|
255
|
+
// @Outputs: res = 1 (updated 1), res = 0 (not updated), err = not updated/wrong version
|
|
256
|
+
// Search for doc, check version, if found then try and update props
|
|
257
|
+
updateDocumentProps: {
|
|
258
|
+
check: new simpl_schema_1.default({
|
|
259
|
+
collection: {
|
|
260
|
+
type: String
|
|
261
|
+
},
|
|
262
|
+
doc_id: {
|
|
263
|
+
type: String
|
|
264
|
+
},
|
|
265
|
+
updateParams: {
|
|
266
|
+
type: Array
|
|
267
|
+
},
|
|
268
|
+
'updateParams.$': {
|
|
269
|
+
type: Object,
|
|
270
|
+
blackbox: true
|
|
271
|
+
},
|
|
272
|
+
doc__v: {
|
|
273
|
+
type: Number
|
|
274
|
+
}
|
|
275
|
+
}),
|
|
276
|
+
function: function (collection, doc_id, updateParams, doc__v) {
|
|
277
|
+
var _this = this;
|
|
278
|
+
return new Promise(function (resolve, reject) {
|
|
279
|
+
__1.default.getSupportDB().model(collection).findOne({ _id: doc_id }).lean().exec(function (errDoc, currDoc) {
|
|
280
|
+
if (currDoc) {
|
|
281
|
+
var modifiedDoc_1 = common_1.deepCopy(currDoc);
|
|
282
|
+
updateParams.forEach(function (data) {
|
|
283
|
+
modifiedDoc_1[data.prop] = data.data;
|
|
284
|
+
});
|
|
285
|
+
if (modifiedDoc_1.__v === doc__v) {
|
|
286
|
+
var versionDoc = common_1.deepCopy(currDoc);
|
|
287
|
+
versionDoc._id = {
|
|
288
|
+
_id: currDoc._id,
|
|
289
|
+
__v: currDoc.__v
|
|
290
|
+
};
|
|
291
|
+
var schemaErrors = null;
|
|
292
|
+
try {
|
|
293
|
+
__1.default.getSupportDB().model(collection)['simplschema'].validate(modifiedDoc_1);
|
|
294
|
+
}
|
|
295
|
+
catch (errors) {
|
|
296
|
+
schemaErrors = errors;
|
|
297
|
+
supportManager.getMainServer().getMethodManager().callMethodInternal('insertErrorLog', 'Schema Failed on updateDocumentProps - ' + collection, [schemaErrors, modifiedDoc_1]);
|
|
298
|
+
}
|
|
299
|
+
if (schemaErrors) {
|
|
300
|
+
console.log(schemaErrors);
|
|
301
|
+
reject('Schema Errors');
|
|
302
|
+
}
|
|
303
|
+
else {
|
|
304
|
+
__1.default.getSupportDB().model(__1.default.getSupportDB().model(collection)['versionCollection']).create(versionDoc).then(function (doc) {
|
|
305
|
+
__1.default.getSupportDB().model(__1.default.getSupportDB().model(collection)['versionCollection']).deleteMany({
|
|
306
|
+
$and: [
|
|
307
|
+
{ '_id._id': currDoc._id },
|
|
308
|
+
{ '_id.__v': { $lte: currDoc.__v - 4 } }
|
|
309
|
+
]
|
|
310
|
+
}).exec();
|
|
311
|
+
}, function (err) {
|
|
312
|
+
console.log(err);
|
|
313
|
+
});
|
|
314
|
+
var updates = common_1.getMongoUpdates(currDoc, modifiedDoc_1, true);
|
|
315
|
+
if (updates) {
|
|
316
|
+
__1.default.getSupportDB().model(collection).updateOne({ _id: modifiedDoc_1._id }, updates, { strict: false }).exec().then(function (res) {
|
|
317
|
+
resolve(res.ok);
|
|
318
|
+
}, function (err) { return reject(err); });
|
|
319
|
+
}
|
|
320
|
+
else {
|
|
321
|
+
resolve(1);
|
|
322
|
+
}
|
|
323
|
+
if (common_1.getBinarySize(JSON.stringify(updateParams)) < 200000) {
|
|
324
|
+
log_collection_1.Logs.create({
|
|
325
|
+
_id: mongoose_1.Types.ObjectId().toHexString(),
|
|
326
|
+
date: new Date(),
|
|
327
|
+
type: 'info',
|
|
328
|
+
title: 'Update Document Props',
|
|
329
|
+
message: 'User: ' + _this.user + ', Collection Type: ' + collection + ', Id: ' + doc_id + ', ' + 'Version: ' + doc__v,
|
|
330
|
+
payload: updateParams,
|
|
331
|
+
method: 'updateDocumentProps',
|
|
332
|
+
user: _this.user,
|
|
333
|
+
messageId: ''
|
|
334
|
+
});
|
|
335
|
+
}
|
|
336
|
+
else {
|
|
337
|
+
log_collection_1.Logs.create({
|
|
338
|
+
_id: mongoose_1.Types.ObjectId().toHexString(),
|
|
339
|
+
date: new Date(),
|
|
340
|
+
type: 'info',
|
|
341
|
+
title: 'Update Document Props',
|
|
342
|
+
message: 'User: ' + _this.user + ', Collection Type: ' + collection + ', Id: ' + doc_id + ', ' + 'Version: ' + doc__v,
|
|
343
|
+
payload: 'Too Big',
|
|
344
|
+
method: 'updateDocumentProps',
|
|
345
|
+
user: _this.user,
|
|
346
|
+
messageId: ''
|
|
347
|
+
});
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
else {
|
|
352
|
+
console.log('invalid version - ' + collection, currDoc.__v, doc__v);
|
|
353
|
+
__1.default.getSupportDB().model(__1.default.getSupportDB().model(collection)['versionCollection']).findOne({
|
|
354
|
+
$and: [
|
|
355
|
+
{ '_id._id': currDoc._id },
|
|
356
|
+
{ '_id.__v': doc__v }
|
|
357
|
+
]
|
|
358
|
+
}).lean().exec(function (errOldDoc, oldDoc) {
|
|
359
|
+
var newCurrDocId = currDoc._id;
|
|
360
|
+
if (oldDoc) {
|
|
361
|
+
var versionDoc_2 = common_1.deepCopy(currDoc);
|
|
362
|
+
versionDoc_2._id = {
|
|
363
|
+
_id: currDoc._id,
|
|
364
|
+
__v: currDoc.__v
|
|
365
|
+
};
|
|
366
|
+
var updatedDoc = common_1.getMongoMergeUpdatedDoc(modifiedDoc_1, currDoc, oldDoc);
|
|
367
|
+
updatedDoc._id = newCurrDocId;
|
|
368
|
+
updatedDoc.__v++;
|
|
369
|
+
__1.default.getSupportDB().model(collection).replaceOne({ _id: newCurrDocId }, updatedDoc).exec().then(function (res) {
|
|
370
|
+
__1.default.getSupportDB().model(__1.default.getSupportDB().model(collection)['versionCollection']).create(versionDoc_2).then(function (doc) {
|
|
371
|
+
__1.default.getSupportDB().model(__1.default.getSupportDB().model(collection)['versionCollection']).deleteMany({
|
|
372
|
+
$and: [
|
|
373
|
+
{ '_id._id': versionDoc_2._id._id },
|
|
374
|
+
{ '_id.__v': { $lte: versionDoc_2._id.__v - 4 } }
|
|
375
|
+
]
|
|
376
|
+
}).exec();
|
|
377
|
+
}, function (err) {
|
|
378
|
+
console.log(err);
|
|
379
|
+
});
|
|
380
|
+
resolve(res.nModified);
|
|
381
|
+
}, function (err) { return reject(err); });
|
|
382
|
+
}
|
|
383
|
+
else {
|
|
384
|
+
reject('Invalid Version And Could Not Find History Props - DB: ' + currDoc.__v + ', Trying to update with :' + modifiedDoc_1.__v);
|
|
385
|
+
}
|
|
386
|
+
});
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
else {
|
|
390
|
+
reject(errDoc);
|
|
391
|
+
}
|
|
392
|
+
});
|
|
393
|
+
});
|
|
394
|
+
}
|
|
395
|
+
},
|
|
396
|
+
// Removes 1 document (from _id)
|
|
397
|
+
// @Inputs: collection, document id
|
|
398
|
+
// @Outputs: res = 1 (deleted), res = 0 (not deleted), err = not deleted
|
|
399
|
+
// Search for doc, if found then try and remove
|
|
400
|
+
removeDocument: {
|
|
401
|
+
check: new simpl_schema_1.default({
|
|
402
|
+
collection: {
|
|
403
|
+
type: String
|
|
404
|
+
},
|
|
405
|
+
doc_id: {
|
|
406
|
+
type: String
|
|
407
|
+
}
|
|
408
|
+
}),
|
|
409
|
+
function: function (collection, doc_id) {
|
|
410
|
+
var _this = this;
|
|
411
|
+
return new Promise(function (resolve, reject) {
|
|
412
|
+
log_collection_1.Logs.create({
|
|
413
|
+
_id: mongoose_1.Types.ObjectId().toHexString(),
|
|
414
|
+
date: new Date(),
|
|
415
|
+
type: 'info',
|
|
416
|
+
title: 'Remove Document',
|
|
417
|
+
message: 'User: ' + _this.user + ', Collection Type: ' + collection,
|
|
418
|
+
payload: { _id: doc_id },
|
|
419
|
+
method: 'removeDocument',
|
|
420
|
+
user: _this.user,
|
|
421
|
+
messageId: ''
|
|
422
|
+
});
|
|
423
|
+
__1.default.getSupportDB().model(collection).deleteOne({ _id: doc_id }).exec(function (err, res) {
|
|
424
|
+
if (err) {
|
|
425
|
+
reject(err);
|
|
426
|
+
}
|
|
427
|
+
else {
|
|
428
|
+
resolve(res.ok);
|
|
429
|
+
}
|
|
430
|
+
});
|
|
431
|
+
});
|
|
432
|
+
}
|
|
433
|
+
},
|
|
434
|
+
removeDocumentWithQuery: {
|
|
435
|
+
check: new simpl_schema_1.default({
|
|
436
|
+
collection: {
|
|
437
|
+
type: String
|
|
438
|
+
},
|
|
439
|
+
query: {
|
|
440
|
+
type: Object,
|
|
441
|
+
blackbox: true
|
|
442
|
+
}
|
|
443
|
+
}),
|
|
444
|
+
function: function (collection, query) {
|
|
445
|
+
var _this = this;
|
|
446
|
+
return new Promise(function (resolve, reject) {
|
|
447
|
+
log_collection_1.Logs.create({
|
|
448
|
+
_id: mongoose_1.Types.ObjectId().toHexString(),
|
|
449
|
+
date: new Date(),
|
|
450
|
+
type: 'info',
|
|
451
|
+
title: 'Remove Document (Query)',
|
|
452
|
+
message: 'User: ' + _this.user + ', Collection Type: ' + collection,
|
|
453
|
+
payload: { _id: query },
|
|
454
|
+
method: 'removeDocumentWithQuery',
|
|
455
|
+
user: _this.user,
|
|
456
|
+
messageId: ''
|
|
457
|
+
});
|
|
458
|
+
__1.default.getSupportDB().model(collection).deleteOne(query).exec(function (err, res) {
|
|
459
|
+
if (err) {
|
|
460
|
+
reject(err);
|
|
461
|
+
}
|
|
462
|
+
else {
|
|
463
|
+
resolve(res.ok);
|
|
464
|
+
}
|
|
465
|
+
});
|
|
466
|
+
});
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
});
|
|
470
|
+
}
|
|
471
|
+
exports.loadSupportCollectionMethods = loadSupportCollectionMethods;
|