parse-server 6.0.0-alpha.2 → 6.0.0-alpha.21
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/README.md +45 -17
- package/lib/AccountLockout.js +11 -26
- package/lib/Adapters/AdapterLoader.js +8 -14
- package/lib/Adapters/Analytics/AnalyticsAdapter.js +2 -8
- package/lib/Adapters/Auth/AuthAdapter.js +7 -16
- package/lib/Adapters/Auth/OAuth1Client.js +32 -57
- package/lib/Adapters/Auth/apple.js +6 -22
- package/lib/Adapters/Auth/facebook.js +7 -37
- package/lib/Adapters/Auth/gcenter.js +8 -37
- package/lib/Adapters/Auth/github.js +7 -10
- package/lib/Adapters/Auth/google.js +11 -34
- package/lib/Adapters/Auth/gpgames.js +5 -8
- package/lib/Adapters/Auth/httpsRequest.js +1 -7
- package/lib/Adapters/Auth/index.js +20 -65
- package/lib/Adapters/Auth/instagram.js +5 -9
- package/lib/Adapters/Auth/janraincapture.js +8 -12
- package/lib/Adapters/Auth/janrainengage.js +7 -11
- package/lib/Adapters/Auth/keycloak.js +5 -19
- package/lib/Adapters/Auth/ldap.js +1 -15
- package/lib/Adapters/Auth/line.js +7 -10
- package/lib/Adapters/Auth/linkedin.js +7 -12
- package/lib/Adapters/Auth/meetup.js +7 -10
- package/lib/Adapters/Auth/microsoft.js +7 -10
- package/lib/Adapters/Auth/oauth2.js +6 -18
- package/lib/Adapters/Auth/phantauth.js +8 -10
- package/lib/Adapters/Auth/qq.js +7 -13
- package/lib/Adapters/Auth/spotify.js +7 -14
- package/lib/Adapters/Auth/twitter.js +5 -15
- package/lib/Adapters/Auth/vkontakte.js +9 -15
- package/lib/Adapters/Auth/wechat.js +7 -10
- package/lib/Adapters/Auth/weibo.js +7 -11
- package/lib/Adapters/Cache/CacheAdapter.js +4 -12
- package/lib/Adapters/Cache/InMemoryCache.js +5 -19
- package/lib/Adapters/Cache/InMemoryCacheAdapter.js +1 -11
- package/lib/Adapters/Cache/LRUCache.js +1 -11
- package/lib/Adapters/Cache/NullCacheAdapter.js +1 -8
- package/lib/Adapters/Cache/RedisCacheAdapter.js +46 -87
- package/lib/Adapters/Cache/SchemaCache.js +1 -6
- package/lib/Adapters/Email/MailAdapter.js +2 -7
- package/lib/Adapters/Files/FilesAdapter.js +7 -21
- package/lib/Adapters/Files/GridFSBucketAdapter.js +6 -44
- package/lib/Adapters/Files/GridStoreAdapter.js +1 -1
- package/lib/Adapters/Logger/LoggerAdapter.js +2 -11
- package/lib/Adapters/Logger/WinstonLogger.js +3 -30
- package/lib/Adapters/Logger/WinstonLoggerAdapter.js +5 -16
- package/lib/Adapters/MessageQueue/EventEmitterMQ.js +3 -20
- package/lib/Adapters/PubSub/EventEmitterPubSub.js +1 -16
- package/lib/Adapters/PubSub/PubSubAdapter.js +2 -9
- package/lib/Adapters/PubSub/RedisPubSub.js +13 -10
- package/lib/Adapters/Push/PushAdapter.js +2 -8
- package/lib/Adapters/Storage/Mongo/MongoCollection.js +12 -37
- package/lib/Adapters/Storage/Mongo/MongoSchemaCollection.js +26 -79
- package/lib/Adapters/Storage/Mongo/MongoStorageAdapter.js +78 -209
- package/lib/Adapters/Storage/Mongo/MongoTransform.js +82 -371
- package/lib/Adapters/Storage/Postgres/PostgresClient.js +1 -13
- package/lib/Adapters/Storage/Postgres/PostgresConfigParser.js +1 -20
- package/lib/Adapters/Storage/Postgres/PostgresStorageAdapter.js +119 -446
- package/lib/Adapters/Storage/Postgres/sql/index.js +4 -7
- package/lib/Adapters/Storage/StorageAdapter.js +1 -1
- package/lib/Adapters/WebSocketServer/WSAdapter.js +3 -12
- package/lib/Adapters/WebSocketServer/WSSAdapter.js +7 -12
- package/lib/Auth.js +54 -121
- package/lib/ClientSDK.js +3 -11
- package/lib/Config.js +69 -113
- package/lib/Controllers/AdaptableController.js +6 -18
- package/lib/Controllers/AnalyticsController.js +1 -9
- package/lib/Controllers/CacheController.js +3 -23
- package/lib/Controllers/DatabaseController.js +147 -345
- package/lib/Controllers/FilesController.js +5 -34
- package/lib/Controllers/HooksController.js +1 -51
- package/lib/Controllers/LiveQueryController.js +4 -23
- package/lib/Controllers/LoggerController.js +15 -54
- package/lib/Controllers/ParseGraphQLController.js +49 -104
- package/lib/Controllers/PushController.js +20 -59
- package/lib/Controllers/SchemaController.js +154 -344
- package/lib/Controllers/UserController.js +11 -72
- package/lib/Controllers/index.js +19 -68
- package/lib/Controllers/types.js +1 -1
- package/lib/Deprecator/Deprecations.js +1 -8
- package/lib/Deprecator/Deprecator.js +9 -18
- package/lib/GraphQL/ParseGraphQLSchema.js +16 -100
- package/lib/GraphQL/ParseGraphQLServer.js +2 -29
- package/lib/GraphQL/helpers/objectsMutations.js +2 -12
- package/lib/GraphQL/helpers/objectsQueries.js +18 -76
- package/lib/GraphQL/loaders/defaultGraphQLMutations.js +1 -9
- package/lib/GraphQL/loaders/defaultGraphQLQueries.js +1 -8
- package/lib/GraphQL/loaders/defaultGraphQLTypes.js +9 -115
- package/lib/GraphQL/loaders/defaultRelaySchema.js +6 -18
- package/lib/GraphQL/loaders/filesMutations.js +2 -19
- package/lib/GraphQL/loaders/functionsMutations.js +6 -17
- package/lib/GraphQL/loaders/parseClassMutations.js +6 -44
- package/lib/GraphQL/loaders/parseClassQueries.js +1 -26
- package/lib/GraphQL/loaders/parseClassTypes.js +10 -64
- package/lib/GraphQL/loaders/schemaDirectives.js +1 -17
- package/lib/GraphQL/loaders/schemaMutations.js +1 -20
- package/lib/GraphQL/loaders/schemaQueries.js +1 -14
- package/lib/GraphQL/loaders/schemaTypes.js +2 -6
- package/lib/GraphQL/loaders/usersMutations.js +6 -28
- package/lib/GraphQL/loaders/usersQueries.js +4 -26
- package/lib/GraphQL/parseGraphQLUtils.js +6 -19
- package/lib/GraphQL/transformers/className.js +1 -4
- package/lib/GraphQL/transformers/constraintType.js +1 -20
- package/lib/GraphQL/transformers/inputType.js +1 -20
- package/lib/GraphQL/transformers/mutation.js +6 -51
- package/lib/GraphQL/transformers/outputType.js +1 -20
- package/lib/GraphQL/transformers/query.js +6 -42
- package/lib/GraphQL/transformers/schemaFields.js +7 -34
- package/lib/KeyPromiseQueue.js +1 -12
- package/lib/LiveQuery/Client.js +1 -25
- package/lib/LiveQuery/Id.js +1 -7
- package/lib/LiveQuery/ParseCloudCodePublisher.js +13 -19
- package/lib/LiveQuery/ParseLiveQueryServer.js +92 -306
- package/lib/LiveQuery/ParsePubSub.js +1 -12
- package/lib/LiveQuery/ParseWebSocketServer.js +4 -26
- package/lib/LiveQuery/QueryTools.js +14 -116
- package/lib/LiveQuery/RequestSchema.js +1 -1
- package/lib/LiveQuery/SessionTokenCache.js +1 -17
- package/lib/LiveQuery/Subscription.js +4 -18
- package/lib/LiveQuery/equalObjects.js +2 -14
- package/lib/Options/Definitions.js +79 -10
- package/lib/Options/docs.js +23 -3
- package/lib/Options/index.js +4 -12
- package/lib/Options/parsers.js +1 -18
- package/lib/Page.js +1 -9
- package/lib/ParseMessageQueue.js +1 -10
- package/lib/ParseServer.js +144 -182
- package/lib/ParseServerRESTController.js +6 -33
- package/lib/PromiseRouter.js +16 -50
- package/lib/Push/PushQueue.js +3 -15
- package/lib/Push/PushWorker.js +7 -32
- package/lib/Push/utils.js +9 -38
- package/lib/RestQuery.js +105 -242
- package/lib/RestWrite.js +212 -377
- package/lib/Routers/AggregateRouter.js +14 -51
- package/lib/Routers/AnalyticsRouter.js +2 -8
- package/lib/Routers/AudiencesRouter.js +1 -15
- package/lib/Routers/ClassesRouter.js +3 -53
- package/lib/Routers/CloudCodeRouter.js +1 -19
- package/lib/Routers/FeaturesRouter.js +1 -10
- package/lib/Routers/FilesRouter.js +29 -76
- package/lib/Routers/FunctionsRouter.js +5 -28
- package/lib/Routers/GlobalConfigRouter.js +4 -18
- package/lib/Routers/GraphQLRouter.js +1 -14
- package/lib/Routers/HooksRouter.js +1 -29
- package/lib/Routers/IAPValidationRouter.js +6 -29
- package/lib/Routers/InstallationsRouter.js +2 -12
- package/lib/Routers/LogsRouter.js +4 -16
- package/lib/Routers/PagesRouter.js +69 -129
- package/lib/Routers/PublicAPIRouter.js +3 -62
- package/lib/Routers/PurgeRouter.js +1 -15
- package/lib/Routers/PushRouter.js +2 -18
- package/lib/Routers/RolesRouter.js +1 -7
- package/lib/Routers/SchemasRouter.js +4 -34
- package/lib/Routers/SecurityRouter.js +1 -12
- package/lib/Routers/SessionsRouter.js +3 -19
- package/lib/Routers/UsersRouter.js +58 -155
- package/lib/SchemaMigrations/DefinedSchemas.js +56 -115
- package/lib/SchemaMigrations/Migrations.js +2 -8
- package/lib/Security/Check.js +8 -16
- package/lib/Security/CheckGroup.js +4 -11
- package/lib/Security/CheckGroups/CheckGroupDatabase.js +8 -18
- package/lib/Security/CheckGroups/CheckGroupServerConfig.js +5 -15
- package/lib/Security/CheckGroups/CheckGroups.js +1 -4
- package/lib/Security/CheckRunner.js +22 -41
- package/lib/StatusHandler.js +12 -69
- package/lib/TestUtils.js +1 -6
- package/lib/Utils.js +27 -66
- package/lib/batch.js +17 -28
- package/lib/cache.js +1 -3
- package/lib/cli/definitions/parse-live-query-server.js +1 -3
- package/lib/cli/definitions/parse-server.js +1 -3
- package/lib/cli/parse-live-query-server.js +1 -6
- package/lib/cli/parse-server.js +11 -21
- package/lib/cli/utils/commander.js +13 -51
- package/lib/cli/utils/runner.js +1 -14
- package/lib/cloud-code/Parse.Cloud.js +71 -92
- package/lib/cryptoUtils.js +11 -19
- package/lib/defaults.js +2 -14
- package/lib/deprecated.js +1 -2
- package/lib/index.js +16 -34
- package/lib/logger.js +6 -13
- package/lib/middlewares.js +147 -151
- package/lib/password.js +6 -10
- package/lib/request.js +173 -2
- package/lib/requiredParameter.js +1 -3
- package/lib/rest.js +19 -41
- package/lib/triggers.js +54 -252
- package/lib/vendor/mongodbUrl.js +125 -305
- package/package.json +22 -19
- package/lib/cloud-code/HTTPResponse.js +0 -73
- package/lib/cloud-code/httpRequest.js +0 -192
|
@@ -4,44 +4,31 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = exports.FilesController = void 0;
|
|
7
|
-
|
|
8
7
|
var _cryptoUtils = require("../cryptoUtils");
|
|
9
|
-
|
|
10
8
|
var _AdaptableController = _interopRequireDefault(require("./AdaptableController"));
|
|
11
|
-
|
|
12
9
|
var _FilesAdapter = require("../Adapters/Files/FilesAdapter");
|
|
13
|
-
|
|
14
10
|
var _path = _interopRequireDefault(require("path"));
|
|
15
|
-
|
|
16
11
|
var _mime = _interopRequireDefault(require("mime"));
|
|
17
|
-
|
|
18
12
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
19
|
-
|
|
20
13
|
// FilesController.js
|
|
21
|
-
const Parse = require('parse').Parse;
|
|
22
14
|
|
|
15
|
+
const Parse = require('parse').Parse;
|
|
23
16
|
const legacyFilesRegex = new RegExp('^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}-.*');
|
|
24
|
-
|
|
25
17
|
class FilesController extends _AdaptableController.default {
|
|
26
18
|
getFileData(config, filename) {
|
|
27
19
|
return this.adapter.getFileData(filename);
|
|
28
20
|
}
|
|
29
|
-
|
|
30
21
|
createFile(config, filename, data, contentType, options) {
|
|
31
22
|
const extname = _path.default.extname(filename);
|
|
32
|
-
|
|
33
23
|
const hasExtension = extname.length > 0;
|
|
34
|
-
|
|
35
24
|
if (!hasExtension && contentType && _mime.default.getExtension(contentType)) {
|
|
36
25
|
filename = filename + '.' + _mime.default.getExtension(contentType);
|
|
37
26
|
} else if (hasExtension && !contentType) {
|
|
38
27
|
contentType = _mime.default.getType(filename);
|
|
39
28
|
}
|
|
40
|
-
|
|
41
29
|
if (!this.options.preserveFileName) {
|
|
42
30
|
filename = (0, _cryptoUtils.randomHexString)(32) + '_' + filename;
|
|
43
31
|
}
|
|
44
|
-
|
|
45
32
|
const location = this.adapter.getFileLocation(config, filename);
|
|
46
33
|
return this.adapter.createFile(filename, data, contentType, options).then(() => {
|
|
47
34
|
return Promise.resolve({
|
|
@@ -50,47 +37,39 @@ class FilesController extends _AdaptableController.default {
|
|
|
50
37
|
});
|
|
51
38
|
});
|
|
52
39
|
}
|
|
53
|
-
|
|
54
40
|
deleteFile(config, filename) {
|
|
55
41
|
return this.adapter.deleteFile(filename);
|
|
56
42
|
}
|
|
57
|
-
|
|
58
43
|
getMetadata(filename) {
|
|
59
44
|
if (typeof this.adapter.getMetadata === 'function') {
|
|
60
45
|
return this.adapter.getMetadata(filename);
|
|
61
46
|
}
|
|
62
|
-
|
|
63
47
|
return Promise.resolve({});
|
|
64
48
|
}
|
|
49
|
+
|
|
65
50
|
/**
|
|
66
51
|
* Find file references in REST-format object and adds the url key
|
|
67
52
|
* with the current mount point and app id.
|
|
68
53
|
* Object may be a single object or list of REST-format objects.
|
|
69
54
|
*/
|
|
70
|
-
|
|
71
|
-
|
|
72
55
|
expandFilesInObject(config, object) {
|
|
73
56
|
if (object instanceof Array) {
|
|
74
57
|
object.map(obj => this.expandFilesInObject(config, obj));
|
|
75
58
|
return;
|
|
76
59
|
}
|
|
77
|
-
|
|
78
60
|
if (typeof object !== 'object') {
|
|
79
61
|
return;
|
|
80
62
|
}
|
|
81
|
-
|
|
82
63
|
for (const key in object) {
|
|
83
64
|
const fileObject = object[key];
|
|
84
|
-
|
|
85
65
|
if (fileObject && fileObject['__type'] === 'File') {
|
|
86
66
|
if (fileObject['url']) {
|
|
87
67
|
continue;
|
|
88
68
|
}
|
|
89
|
-
|
|
90
|
-
|
|
69
|
+
const filename = fileObject['name'];
|
|
70
|
+
// all filenames starting with "tfss-" should be from files.parsetfss.com
|
|
91
71
|
// all filenames starting with a "-" seperated UUID should be from files.parse.com
|
|
92
72
|
// all other filenames have been migrated or created from Parse Server
|
|
93
|
-
|
|
94
73
|
if (config.fileKey === undefined) {
|
|
95
74
|
fileObject['url'] = this.adapter.getFileLocation(config, filename);
|
|
96
75
|
} else {
|
|
@@ -105,32 +84,24 @@ class FilesController extends _AdaptableController.default {
|
|
|
105
84
|
}
|
|
106
85
|
}
|
|
107
86
|
}
|
|
108
|
-
|
|
109
87
|
expectedAdapterType() {
|
|
110
88
|
return _FilesAdapter.FilesAdapter;
|
|
111
89
|
}
|
|
112
|
-
|
|
113
90
|
handleFileStream(config, filename, req, res, contentType) {
|
|
114
91
|
return this.adapter.handleFileStream(filename, req, res, contentType);
|
|
115
92
|
}
|
|
116
|
-
|
|
117
93
|
validateFilename(filename) {
|
|
118
94
|
if (typeof this.adapter.validateFilename === 'function') {
|
|
119
95
|
const error = this.adapter.validateFilename(filename);
|
|
120
|
-
|
|
121
96
|
if (typeof error !== 'string') {
|
|
122
97
|
return error;
|
|
123
98
|
}
|
|
124
|
-
|
|
125
99
|
return new Parse.Error(Parse.Error.INVALID_FILE_NAME, error);
|
|
126
100
|
}
|
|
127
|
-
|
|
128
101
|
return (0, _FilesAdapter.validateFilename)(filename);
|
|
129
102
|
}
|
|
130
|
-
|
|
131
103
|
}
|
|
132
|
-
|
|
133
104
|
exports.FilesController = FilesController;
|
|
134
105
|
var _default = FilesController;
|
|
135
106
|
exports.default = _default;
|
|
136
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9Db250cm9sbGVycy9GaWxlc0NvbnRyb2xsZXIuanMiXSwibmFtZXMiOlsiUGFyc2UiLCJyZXF1aXJlIiwibGVnYWN5RmlsZXNSZWdleCIsIlJlZ0V4cCIsIkZpbGVzQ29udHJvbGxlciIsIkFkYXB0YWJsZUNvbnRyb2xsZXIiLCJnZXRGaWxlRGF0YSIsImNvbmZpZyIsImZpbGVuYW1lIiwiYWRhcHRlciIsImNyZWF0ZUZpbGUiLCJkYXRhIiwiY29udGVudFR5cGUiLCJvcHRpb25zIiwiZXh0bmFtZSIsInBhdGgiLCJoYXNFeHRlbnNpb24iLCJsZW5ndGgiLCJtaW1lIiwiZ2V0RXh0ZW5zaW9uIiwiZ2V0VHlwZSIsInByZXNlcnZlRmlsZU5hbWUiLCJsb2NhdGlvbiIsImdldEZpbGVMb2NhdGlvbiIsInRoZW4iLCJQcm9taXNlIiwicmVzb2x2ZSIsInVybCIsIm5hbWUiLCJkZWxldGVGaWxlIiwiZ2V0TWV0YWRhdGEiLCJleHBhbmRGaWxlc0luT2JqZWN0Iiwib2JqZWN0IiwiQXJyYXkiLCJtYXAiLCJvYmoiLCJrZXkiLCJmaWxlT2JqZWN0IiwiZmlsZUtleSIsInVuZGVmaW5lZCIsImluZGV4T2YiLCJlbmNvZGVVUklDb21wb25lbnQiLCJ0ZXN0IiwiZXhwZWN0ZWRBZGFwdGVyVHlwZSIsIkZpbGVzQWRhcHRlciIsImhhbmRsZUZpbGVTdHJlYW0iLCJyZXEiLCJyZXMiLCJ2YWxpZGF0ZUZpbGVuYW1lIiwiZXJyb3IiLCJFcnJvciIsIklOVkFMSURfRklMRV9OQU1FIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7QUFMQTtBQU1BLE1BQU1BLEtBQUssR0FBR0MsT0FBTyxDQUFDLE9BQUQsQ0FBUCxDQUFpQkQsS0FBL0I7O0FBRUEsTUFBTUUsZ0JBQWdCLEdBQUcsSUFBSUMsTUFBSixDQUN2QixpRkFEdUIsQ0FBekI7O0FBSU8sTUFBTUMsZUFBTixTQUE4QkMsNEJBQTlCLENBQWtEO0FBQ3ZE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QUFDeEMsUUFBRCxFQUFXO0FBQ3pCLFFBQUksT0FBTyxLQUFLQyxPQUFMLENBQWF1QyxnQkFBcEIsS0FBeUMsVUFBN0MsRUFBeUQ7QUFDdkQsWUFBTUMsS0FBSyxHQUFHLEtBQUt4QyxPQUFMLENBQWF1QyxnQkFBYixDQUE4QnhDLFFBQTlCLENBQWQ7O0FBQ0EsVUFBSSxPQUFPeUMsS0FBUCxLQUFpQixRQUFyQixFQUErQjtBQUM3QixlQUFPQSxLQUFQO0FBQ0Q7O0FBQ0QsYUFBTyxJQUFJakQsS0FBSyxDQUFDa0QsS0FBVixDQUFnQmxELEtBQUssQ0FBQ2tELEtBQU4sQ0FBWUMsaUJBQTVCLEVBQStDRixLQUEvQyxDQUFQO0FBQ0Q7O0FBQ0QsV0FBTyxvQ0FBaUJ6QyxRQUFqQixDQUFQO0FBQ0Q7O0FBakdzRDs7O2VBb0cxQ0osZSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEZpbGVzQ29udHJvbGxlci5qc1xuaW1wb3J0IHsgcmFuZG9tSGV4U3RyaW5nIH0gZnJvbSAnLi4vY3J5cHRvVXRpbHMnO1xuaW1wb3J0IEFkYXB0YWJsZUNvbnRyb2xsZXIgZnJvbSAnLi9BZGFwdGFibGVDb250cm9sbGVyJztcbmltcG9ydCB7IHZhbGlkYXRlRmlsZW5hbWUsIEZpbGVzQWRhcHRlciB9IGZyb20gJy4uL0FkYXB0ZXJzL0ZpbGVzL0ZpbGVzQWRhcHRlcic7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBtaW1lIGZyb20gJ21pbWUnO1xuY29uc3QgUGFyc2UgPSByZXF1aXJlKCdwYXJzZScpLlBhcnNlO1xuXG5jb25zdCBsZWdhY3lGaWxlc1JlZ2V4ID0gbmV3IFJlZ0V4cChcbiAgJ15bMC05YS1mQS1GXXs4fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXsxMn0tLionXG4pO1xuXG5leHBvcnQgY2xhc3MgRmlsZXNDb250cm9sbGVyIGV4dGVuZHMgQWRhcHRhYmxlQ29udHJvbGxlciB7XG4gIGdldEZpbGVEYXRhKGNvbmZpZywgZmlsZW5hbWUpIHtcbiAgICByZXR1cm4gdGhpcy5hZGFwdGVyLmdldEZpbGVEYXRhKGZpbGVuYW1lKTtcbiAgfVxuXG4gIGNyZWF0ZUZpbGUoY29uZmlnLCBmaWxlbmFtZSwgZGF0YSwgY29udGVudFR5cGUsIG9wdGlvbnMpIHtcbiAgICBjb25zdCBleHRuYW1lID0gcGF0aC5leHRuYW1lKGZpbGVuYW1lKTtcblxuICAgIGNvbnN0IGhhc0V4dGVuc2lvbiA9IGV4dG5hbWUubGVuZ3RoID4gMDtcblxuICAgIGlmICghaGFzRXh0ZW5zaW9uICYmIGNvbnRlbnRUeXBlICYmIG1pbWUuZ2V0RXh0ZW5zaW9uKGNvbnRlbnRUeXBlKSkge1xuICAgICAgZmlsZW5hbWUgPSBmaWxlbmFtZSArICcuJyArIG1pbWUuZ2V0RXh0ZW5zaW9uKGNvbnRlbnRUeXBlKTtcbiAgICB9IGVsc2UgaWYgKGhhc0V4dGVuc2lvbiAmJiAhY29udGVudFR5cGUpIHtcbiAgICAgIGNvbnRlbnRUeXBlID0gbWltZS5nZXRUeXBlKGZpbGVuYW1lKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMub3B0aW9ucy5wcmVzZXJ2ZUZpbGVOYW1lKSB7XG4gICAgICBmaWxlbmFtZSA9IHJhbmRvbUhleFN0cmluZygzMikgKyAnXycgKyBmaWxlbmFtZTtcbiAgICB9XG5cbiAgICBjb25zdCBsb2NhdGlvbiA9IHRoaXMuYWRhcHRlci5nZXRGaWxlTG9jYXRpb24oY29uZmlnLCBmaWxlbmFtZSk7XG4gICAgcmV0dXJuIHRoaXMuYWRhcHRlci5jcmVhdGVGaWxlKGZpbGVuYW1lLCBkYXRhLCBjb250ZW50VHlwZSwgb3B0aW9ucykudGhlbigoKSA9PiB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHtcbiAgICAgICAgdXJsOiBsb2NhdGlvbixcbiAgICAgICAgbmFtZTogZmlsZW5hbWUsXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGRlbGV0ZUZpbGUoY29uZmlnLCBmaWxlbmFtZSkge1xuICAgIHJldHVybiB0aGlzLmFkYXB0ZXIuZGVsZXRlRmlsZShmaWxlbmFtZSk7XG4gIH1cblxuICBnZXRNZXRhZGF0YShmaWxlbmFtZSkge1xuICAgIGlmICh0eXBlb2YgdGhpcy5hZGFwdGVyLmdldE1ldGFkYXRhID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gdGhpcy5hZGFwdGVyLmdldE1ldGFkYXRhKGZpbGVuYW1lKTtcbiAgICB9XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7fSk7XG4gIH1cblxuICAvKipcbiAgICogRmluZCBmaWxlIHJlZmVyZW5jZXMgaW4gUkVTVC1mb3JtYXQgb2JqZWN0IGFuZCBhZGRzIHRoZSB1cmwga2V5XG4gICAqIHdpdGggdGhlIGN1cnJlbnQgbW91bnQgcG9pbnQgYW5kIGFwcCBpZC5cbiAgICogT2JqZWN0IG1heSBiZSBhIHNpbmdsZSBvYmplY3Qgb3IgbGlzdCBvZiBSRVNULWZvcm1hdCBvYmplY3RzLlxuICAgKi9cbiAgZXhwYW5kRmlsZXNJbk9iamVjdChjb25maWcsIG9iamVjdCkge1xuICAgIGlmIChvYmplY3QgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgb2JqZWN0Lm1hcChvYmogPT4gdGhpcy5leHBhbmRGaWxlc0luT2JqZWN0KGNvbmZpZywgb2JqKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0eXBlb2Ygb2JqZWN0ICE9PSAnb2JqZWN0Jykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IGtleSBpbiBvYmplY3QpIHtcbiAgICAgIGNvbnN0IGZpbGVPYmplY3QgPSBvYmplY3Rba2V5XTtcbiAgICAgIGlmIChmaWxlT2JqZWN0ICYmIGZpbGVPYmplY3RbJ19fdHlwZSddID09PSAnRmlsZScpIHtcbiAgICAgICAgaWYgKGZpbGVPYmplY3RbJ3VybCddKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZmlsZW5hbWUgPSBmaWxlT2JqZWN0WyduYW1lJ107XG4gICAgICAgIC8vIGFsbCBmaWxlbmFtZXMgc3RhcnRpbmcgd2l0aCBcInRmc3MtXCIgc2hvdWxkIGJlIGZyb20gZmlsZXMucGFyc2V0ZnNzLmNvbVxuICAgICAgICAvLyBhbGwgZmlsZW5hbWVzIHN0YXJ0aW5nIHdpdGggYSBcIi1cIiBzZXBlcmF0ZWQgVVVJRCBzaG91bGQgYmUgZnJvbSBmaWxlcy5wYXJzZS5jb21cbiAgICAgICAgLy8gYWxsIG90aGVyIGZpbGVuYW1lcyBoYXZlIGJlZW4gbWlncmF0ZWQgb3IgY3JlYXRlZCBmcm9tIFBhcnNlIFNlcnZlclxuICAgICAgICBpZiAoY29uZmlnLmZpbGVLZXkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGZpbGVPYmplY3RbJ3VybCddID0gdGhpcy5hZGFwdGVyLmdldEZpbGVMb2NhdGlvbihjb25maWcsIGZpbGVuYW1lKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoZmlsZW5hbWUuaW5kZXhPZigndGZzcy0nKSA9PT0gMCkge1xuICAgICAgICAgICAgZmlsZU9iamVjdFsndXJsJ10gPVxuICAgICAgICAgICAgICAnaHR0cDovL2ZpbGVzLnBhcnNldGZzcy5jb20vJyArIGNvbmZpZy5maWxlS2V5ICsgJy8nICsgZW5jb2RlVVJJQ29tcG9uZW50KGZpbGVuYW1lKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGxlZ2FjeUZpbGVzUmVnZXgudGVzdChmaWxlbmFtZSkpIHtcbiAgICAgICAgICAgIGZpbGVPYmplY3RbJ3VybCddID1cbiAgICAgICAgICAgICAgJ2h0dHA6Ly9maWxlcy5wYXJzZS5jb20vJyArIGNvbmZpZy5maWxlS2V5ICsgJy8nICsgZW5jb2RlVVJJQ29tcG9uZW50KGZpbGVuYW1lKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZmlsZU9iamVjdFsndXJsJ10gPSB0aGlzLmFkYXB0ZXIuZ2V0RmlsZUxvY2F0aW9uKGNvbmZpZywgZmlsZW5hbWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGV4cGVjdGVkQWRhcHRlclR5cGUoKSB7XG4gICAgcmV0dXJuIEZpbGVzQWRhcHRlcjtcbiAgfVxuXG4gIGhhbmRsZUZpbGVTdHJlYW0oY29uZmlnLCBmaWxlbmFtZSwgcmVxLCByZXMsIGNvbnRlbnRUeXBlKSB7XG4gICAgcmV0dXJuIHRoaXMuYWRhcHRlci5oYW5kbGVGaWxlU3RyZWFtKGZpbGVuYW1lLCByZXEsIHJlcywgY29udGVudFR5cGUpO1xuICB9XG5cbiAgdmFsaWRhdGVGaWxlbmFtZShmaWxlbmFtZSkge1xuICAgIGlmICh0eXBlb2YgdGhpcy5hZGFwdGVyLnZhbGlkYXRlRmlsZW5hbWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNvbnN0IGVycm9yID0gdGhpcy5hZGFwdGVyLnZhbGlkYXRlRmlsZW5hbWUoZmlsZW5hbWUpO1xuICAgICAgaWYgKHR5cGVvZiBlcnJvciAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIGVycm9yO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5JTlZBTElEX0ZJTEVfTkFNRSwgZXJyb3IpO1xuICAgIH1cbiAgICByZXR1cm4gdmFsaWRhdGVGaWxlbmFtZShmaWxlbmFtZSk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgRmlsZXNDb250cm9sbGVyO1xuIl19
|
|
107
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQYXJzZSIsInJlcXVpcmUiLCJsZWdhY3lGaWxlc1JlZ2V4IiwiUmVnRXhwIiwiRmlsZXNDb250cm9sbGVyIiwiQWRhcHRhYmxlQ29udHJvbGxlciIsImdldEZpbGVEYXRhIiwiY29uZmlnIiwiZmlsZW5hbWUiLCJhZGFwdGVyIiwiY3JlYXRlRmlsZSIsImRhdGEiLCJjb250ZW50VHlwZSIsIm9wdGlvbnMiLCJleHRuYW1lIiwicGF0aCIsImhhc0V4dGVuc2lvbiIsImxlbmd0aCIsIm1pbWUiLCJnZXRFeHRlbnNpb24iLCJnZXRUeXBlIiwicHJlc2VydmVGaWxlTmFtZSIsInJhbmRvbUhleFN0cmluZyIsImxvY2F0aW9uIiwiZ2V0RmlsZUxvY2F0aW9uIiwidGhlbiIsIlByb21pc2UiLCJyZXNvbHZlIiwidXJsIiwibmFtZSIsImRlbGV0ZUZpbGUiLCJnZXRNZXRhZGF0YSIsImV4cGFuZEZpbGVzSW5PYmplY3QiLCJvYmplY3QiLCJBcnJheSIsIm1hcCIsIm9iaiIsImtleSIsImZpbGVPYmplY3QiLCJmaWxlS2V5IiwidW5kZWZpbmVkIiwiaW5kZXhPZiIsImVuY29kZVVSSUNvbXBvbmVudCIsInRlc3QiLCJleHBlY3RlZEFkYXB0ZXJUeXBlIiwiRmlsZXNBZGFwdGVyIiwiaGFuZGxlRmlsZVN0cmVhbSIsInJlcSIsInJlcyIsInZhbGlkYXRlRmlsZW5hbWUiLCJlcnJvciIsIkVycm9yIiwiSU5WQUxJRF9GSUxFX05BTUUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvQ29udHJvbGxlcnMvRmlsZXNDb250cm9sbGVyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIEZpbGVzQ29udHJvbGxlci5qc1xuaW1wb3J0IHsgcmFuZG9tSGV4U3RyaW5nIH0gZnJvbSAnLi4vY3J5cHRvVXRpbHMnO1xuaW1wb3J0IEFkYXB0YWJsZUNvbnRyb2xsZXIgZnJvbSAnLi9BZGFwdGFibGVDb250cm9sbGVyJztcbmltcG9ydCB7IHZhbGlkYXRlRmlsZW5hbWUsIEZpbGVzQWRhcHRlciB9IGZyb20gJy4uL0FkYXB0ZXJzL0ZpbGVzL0ZpbGVzQWRhcHRlcic7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBtaW1lIGZyb20gJ21pbWUnO1xuY29uc3QgUGFyc2UgPSByZXF1aXJlKCdwYXJzZScpLlBhcnNlO1xuXG5jb25zdCBsZWdhY3lGaWxlc1JlZ2V4ID0gbmV3IFJlZ0V4cChcbiAgJ15bMC05YS1mQS1GXXs4fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXsxMn0tLionXG4pO1xuXG5leHBvcnQgY2xhc3MgRmlsZXNDb250cm9sbGVyIGV4dGVuZHMgQWRhcHRhYmxlQ29udHJvbGxlciB7XG4gIGdldEZpbGVEYXRhKGNvbmZpZywgZmlsZW5hbWUpIHtcbiAgICByZXR1cm4gdGhpcy5hZGFwdGVyLmdldEZpbGVEYXRhKGZpbGVuYW1lKTtcbiAgfVxuXG4gIGNyZWF0ZUZpbGUoY29uZmlnLCBmaWxlbmFtZSwgZGF0YSwgY29udGVudFR5cGUsIG9wdGlvbnMpIHtcbiAgICBjb25zdCBleHRuYW1lID0gcGF0aC5leHRuYW1lKGZpbGVuYW1lKTtcblxuICAgIGNvbnN0IGhhc0V4dGVuc2lvbiA9IGV4dG5hbWUubGVuZ3RoID4gMDtcblxuICAgIGlmICghaGFzRXh0ZW5zaW9uICYmIGNvbnRlbnRUeXBlICYmIG1pbWUuZ2V0RXh0ZW5zaW9uKGNvbnRlbnRUeXBlKSkge1xuICAgICAgZmlsZW5hbWUgPSBmaWxlbmFtZSArICcuJyArIG1pbWUuZ2V0RXh0ZW5zaW9uKGNvbnRlbnRUeXBlKTtcbiAgICB9IGVsc2UgaWYgKGhhc0V4dGVuc2lvbiAmJiAhY29udGVudFR5cGUpIHtcbiAgICAgIGNvbnRlbnRUeXBlID0gbWltZS5nZXRUeXBlKGZpbGVuYW1lKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMub3B0aW9ucy5wcmVzZXJ2ZUZpbGVOYW1lKSB7XG4gICAgICBmaWxlbmFtZSA9IHJhbmRvbUhleFN0cmluZygzMikgKyAnXycgKyBmaWxlbmFtZTtcbiAgICB9XG5cbiAgICBjb25zdCBsb2NhdGlvbiA9IHRoaXMuYWRhcHRlci5nZXRGaWxlTG9jYXRpb24oY29uZmlnLCBmaWxlbmFtZSk7XG4gICAgcmV0dXJuIHRoaXMuYWRhcHRlci5jcmVhdGVGaWxlKGZpbGVuYW1lLCBkYXRhLCBjb250ZW50VHlwZSwgb3B0aW9ucykudGhlbigoKSA9PiB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHtcbiAgICAgICAgdXJsOiBsb2NhdGlvbixcbiAgICAgICAgbmFtZTogZmlsZW5hbWUsXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGRlbGV0ZUZpbGUoY29uZmlnLCBmaWxlbmFtZSkge1xuICAgIHJldHVybiB0aGlzLmFkYXB0ZXIuZGVsZXRlRmlsZShmaWxlbmFtZSk7XG4gIH1cblxuICBnZXRNZXRhZGF0YShmaWxlbmFtZSkge1xuICAgIGlmICh0eXBlb2YgdGhpcy5hZGFwdGVyLmdldE1ldGFkYXRhID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gdGhpcy5hZGFwdGVyLmdldE1ldGFkYXRhKGZpbGVuYW1lKTtcbiAgICB9XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7fSk7XG4gIH1cblxuICAvKipcbiAgICogRmluZCBmaWxlIHJlZmVyZW5jZXMgaW4gUkVTVC1mb3JtYXQgb2JqZWN0IGFuZCBhZGRzIHRoZSB1cmwga2V5XG4gICAqIHdpdGggdGhlIGN1cnJlbnQgbW91bnQgcG9pbnQgYW5kIGFwcCBpZC5cbiAgICogT2JqZWN0IG1heSBiZSBhIHNpbmdsZSBvYmplY3Qgb3IgbGlzdCBvZiBSRVNULWZvcm1hdCBvYmplY3RzLlxuICAgKi9cbiAgZXhwYW5kRmlsZXNJbk9iamVjdChjb25maWcsIG9iamVjdCkge1xuICAgIGlmIChvYmplY3QgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgb2JqZWN0Lm1hcChvYmogPT4gdGhpcy5leHBhbmRGaWxlc0luT2JqZWN0KGNvbmZpZywgb2JqKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0eXBlb2Ygb2JqZWN0ICE9PSAnb2JqZWN0Jykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IGtleSBpbiBvYmplY3QpIHtcbiAgICAgIGNvbnN0IGZpbGVPYmplY3QgPSBvYmplY3Rba2V5XTtcbiAgICAgIGlmIChmaWxlT2JqZWN0ICYmIGZpbGVPYmplY3RbJ19fdHlwZSddID09PSAnRmlsZScpIHtcbiAgICAgICAgaWYgKGZpbGVPYmplY3RbJ3VybCddKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZmlsZW5hbWUgPSBmaWxlT2JqZWN0WyduYW1lJ107XG4gICAgICAgIC8vIGFsbCBmaWxlbmFtZXMgc3RhcnRpbmcgd2l0aCBcInRmc3MtXCIgc2hvdWxkIGJlIGZyb20gZmlsZXMucGFyc2V0ZnNzLmNvbVxuICAgICAgICAvLyBhbGwgZmlsZW5hbWVzIHN0YXJ0aW5nIHdpdGggYSBcIi1cIiBzZXBlcmF0ZWQgVVVJRCBzaG91bGQgYmUgZnJvbSBmaWxlcy5wYXJzZS5jb21cbiAgICAgICAgLy8gYWxsIG90aGVyIGZpbGVuYW1lcyBoYXZlIGJlZW4gbWlncmF0ZWQgb3IgY3JlYXRlZCBmcm9tIFBhcnNlIFNlcnZlclxuICAgICAgICBpZiAoY29uZmlnLmZpbGVLZXkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGZpbGVPYmplY3RbJ3VybCddID0gdGhpcy5hZGFwdGVyLmdldEZpbGVMb2NhdGlvbihjb25maWcsIGZpbGVuYW1lKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoZmlsZW5hbWUuaW5kZXhPZigndGZzcy0nKSA9PT0gMCkge1xuICAgICAgICAgICAgZmlsZU9iamVjdFsndXJsJ10gPVxuICAgICAgICAgICAgICAnaHR0cDovL2ZpbGVzLnBhcnNldGZzcy5jb20vJyArIGNvbmZpZy5maWxlS2V5ICsgJy8nICsgZW5jb2RlVVJJQ29tcG9uZW50KGZpbGVuYW1lKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGxlZ2FjeUZpbGVzUmVnZXgudGVzdChmaWxlbmFtZSkpIHtcbiAgICAgICAgICAgIGZpbGVPYmplY3RbJ3VybCddID1cbiAgICAgICAgICAgICAgJ2h0dHA6Ly9maWxlcy5wYXJzZS5jb20vJyArIGNvbmZpZy5maWxlS2V5ICsgJy8nICsgZW5jb2RlVVJJQ29tcG9uZW50KGZpbGVuYW1lKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZmlsZU9iamVjdFsndXJsJ10gPSB0aGlzLmFkYXB0ZXIuZ2V0RmlsZUxvY2F0aW9uKGNvbmZpZywgZmlsZW5hbWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGV4cGVjdGVkQWRhcHRlclR5cGUoKSB7XG4gICAgcmV0dXJuIEZpbGVzQWRhcHRlcjtcbiAgfVxuXG4gIGhhbmRsZUZpbGVTdHJlYW0oY29uZmlnLCBmaWxlbmFtZSwgcmVxLCByZXMsIGNvbnRlbnRUeXBlKSB7XG4gICAgcmV0dXJuIHRoaXMuYWRhcHRlci5oYW5kbGVGaWxlU3RyZWFtKGZpbGVuYW1lLCByZXEsIHJlcywgY29udGVudFR5cGUpO1xuICB9XG5cbiAgdmFsaWRhdGVGaWxlbmFtZShmaWxlbmFtZSkge1xuICAgIGlmICh0eXBlb2YgdGhpcy5hZGFwdGVyLnZhbGlkYXRlRmlsZW5hbWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNvbnN0IGVycm9yID0gdGhpcy5hZGFwdGVyLnZhbGlkYXRlRmlsZW5hbWUoZmlsZW5hbWUpO1xuICAgICAgaWYgKHR5cGVvZiBlcnJvciAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIGVycm9yO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5JTlZBTElEX0ZJTEVfTkFNRSwgZXJyb3IpO1xuICAgIH1cbiAgICByZXR1cm4gdmFsaWRhdGVGaWxlbmFtZShmaWxlbmFtZSk7XG4g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
|
|
@@ -4,25 +4,15 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = exports.HooksController = void 0;
|
|
7
|
-
|
|
8
7
|
var triggers = _interopRequireWildcard(require("../triggers"));
|
|
9
|
-
|
|
10
8
|
var Parse = _interopRequireWildcard(require("parse/node"));
|
|
11
|
-
|
|
12
9
|
var _request = _interopRequireDefault(require("../request"));
|
|
13
|
-
|
|
14
10
|
var _logger = require("../logger");
|
|
15
|
-
|
|
16
11
|
var _http = _interopRequireDefault(require("http"));
|
|
17
|
-
|
|
18
12
|
var _https = _interopRequireDefault(require("https"));
|
|
19
|
-
|
|
20
13
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
21
|
-
|
|
22
14
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
23
|
-
|
|
24
15
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
25
|
-
|
|
26
16
|
// -disable-next
|
|
27
17
|
// -disable-next
|
|
28
18
|
const DefaultHooksCollectionName = '_Hooks';
|
|
@@ -34,14 +24,12 @@ const HTTPAgents = {
|
|
|
34
24
|
keepAlive: true
|
|
35
25
|
})
|
|
36
26
|
};
|
|
37
|
-
|
|
38
27
|
class HooksController {
|
|
39
28
|
constructor(applicationId, databaseController, webhookKey) {
|
|
40
29
|
this._applicationId = applicationId;
|
|
41
30
|
this._webhookKey = webhookKey;
|
|
42
31
|
this.database = databaseController;
|
|
43
32
|
}
|
|
44
|
-
|
|
45
33
|
load() {
|
|
46
34
|
return this._getHooks().then(hooks => {
|
|
47
35
|
hooks = hooks || [];
|
|
@@ -50,13 +38,11 @@ class HooksController {
|
|
|
50
38
|
});
|
|
51
39
|
});
|
|
52
40
|
}
|
|
53
|
-
|
|
54
41
|
getFunction(functionName) {
|
|
55
42
|
return this._getHooks({
|
|
56
43
|
functionName: functionName
|
|
57
44
|
}).then(results => results[0]);
|
|
58
45
|
}
|
|
59
|
-
|
|
60
46
|
getFunctions() {
|
|
61
47
|
return this._getHooks({
|
|
62
48
|
functionName: {
|
|
@@ -64,14 +50,12 @@ class HooksController {
|
|
|
64
50
|
}
|
|
65
51
|
});
|
|
66
52
|
}
|
|
67
|
-
|
|
68
53
|
getTrigger(className, triggerName) {
|
|
69
54
|
return this._getHooks({
|
|
70
55
|
className: className,
|
|
71
56
|
triggerName: triggerName
|
|
72
57
|
}).then(results => results[0]);
|
|
73
58
|
}
|
|
74
|
-
|
|
75
59
|
getTriggers() {
|
|
76
60
|
return this._getHooks({
|
|
77
61
|
className: {
|
|
@@ -82,14 +66,12 @@ class HooksController {
|
|
|
82
66
|
}
|
|
83
67
|
});
|
|
84
68
|
}
|
|
85
|
-
|
|
86
69
|
deleteFunction(functionName) {
|
|
87
70
|
triggers.removeFunction(functionName, this._applicationId);
|
|
88
71
|
return this._removeHooks({
|
|
89
72
|
functionName: functionName
|
|
90
73
|
});
|
|
91
74
|
}
|
|
92
|
-
|
|
93
75
|
deleteTrigger(className, triggerName) {
|
|
94
76
|
triggers.removeTrigger(triggerName, className, this._applicationId);
|
|
95
77
|
return this._removeHooks({
|
|
@@ -97,7 +79,6 @@ class HooksController {
|
|
|
97
79
|
triggerName: triggerName
|
|
98
80
|
});
|
|
99
81
|
}
|
|
100
|
-
|
|
101
82
|
_getHooks(query = {}) {
|
|
102
83
|
return this.database.find(DefaultHooksCollectionName, query).then(results => {
|
|
103
84
|
return results.map(result => {
|
|
@@ -106,16 +87,13 @@ class HooksController {
|
|
|
106
87
|
});
|
|
107
88
|
});
|
|
108
89
|
}
|
|
109
|
-
|
|
110
90
|
_removeHooks(query) {
|
|
111
91
|
return this.database.destroy(DefaultHooksCollectionName, query).then(() => {
|
|
112
92
|
return Promise.resolve({});
|
|
113
93
|
});
|
|
114
94
|
}
|
|
115
|
-
|
|
116
95
|
saveHook(hook) {
|
|
117
96
|
var query;
|
|
118
|
-
|
|
119
97
|
if (hook.functionName && hook.url) {
|
|
120
98
|
query = {
|
|
121
99
|
functionName: hook.functionName
|
|
@@ -128,33 +106,27 @@ class HooksController {
|
|
|
128
106
|
} else {
|
|
129
107
|
throw new Parse.Error(143, 'invalid hook declaration');
|
|
130
108
|
}
|
|
131
|
-
|
|
132
109
|
return this.database.update(DefaultHooksCollectionName, query, hook, {
|
|
133
110
|
upsert: true
|
|
134
111
|
}).then(() => {
|
|
135
112
|
return Promise.resolve(hook);
|
|
136
113
|
});
|
|
137
114
|
}
|
|
138
|
-
|
|
139
115
|
addHookToTriggers(hook) {
|
|
140
116
|
var wrappedFunction = wrapToHTTPRequest(hook, this._webhookKey);
|
|
141
117
|
wrappedFunction.url = hook.url;
|
|
142
|
-
|
|
143
118
|
if (hook.className) {
|
|
144
119
|
triggers.addTrigger(hook.triggerName, hook.className, wrappedFunction, this._applicationId);
|
|
145
120
|
} else {
|
|
146
121
|
triggers.addFunction(hook.functionName, wrappedFunction, null, this._applicationId);
|
|
147
122
|
}
|
|
148
123
|
}
|
|
149
|
-
|
|
150
124
|
addHook(hook) {
|
|
151
125
|
this.addHookToTriggers(hook);
|
|
152
126
|
return this.saveHook(hook);
|
|
153
127
|
}
|
|
154
|
-
|
|
155
128
|
createOrUpdateHook(aHook) {
|
|
156
129
|
var hook;
|
|
157
|
-
|
|
158
130
|
if (aHook && aHook.functionName && aHook.url) {
|
|
159
131
|
hook = {};
|
|
160
132
|
hook.functionName = aHook.functionName;
|
|
@@ -167,10 +139,8 @@ class HooksController {
|
|
|
167
139
|
} else {
|
|
168
140
|
throw new Parse.Error(143, 'invalid hook declaration');
|
|
169
141
|
}
|
|
170
|
-
|
|
171
142
|
return this.addHook(hook);
|
|
172
143
|
}
|
|
173
|
-
|
|
174
144
|
createHook(aHook) {
|
|
175
145
|
if (aHook.functionName) {
|
|
176
146
|
return this.getFunction(aHook.functionName).then(result => {
|
|
@@ -185,21 +155,17 @@ class HooksController {
|
|
|
185
155
|
if (result) {
|
|
186
156
|
throw new Parse.Error(143, `class ${aHook.className} already has trigger ${aHook.triggerName}`);
|
|
187
157
|
}
|
|
188
|
-
|
|
189
158
|
return this.createOrUpdateHook(aHook);
|
|
190
159
|
});
|
|
191
160
|
}
|
|
192
|
-
|
|
193
161
|
throw new Parse.Error(143, 'invalid hook declaration');
|
|
194
162
|
}
|
|
195
|
-
|
|
196
163
|
updateHook(aHook) {
|
|
197
164
|
if (aHook.functionName) {
|
|
198
165
|
return this.getFunction(aHook.functionName).then(result => {
|
|
199
166
|
if (result) {
|
|
200
167
|
return this.createOrUpdateHook(aHook);
|
|
201
168
|
}
|
|
202
|
-
|
|
203
169
|
throw new Parse.Error(143, `no function named: ${aHook.functionName} is defined`);
|
|
204
170
|
});
|
|
205
171
|
} else if (aHook.className && aHook.triggerName) {
|
|
@@ -207,36 +173,27 @@ class HooksController {
|
|
|
207
173
|
if (result) {
|
|
208
174
|
return this.createOrUpdateHook(aHook);
|
|
209
175
|
}
|
|
210
|
-
|
|
211
176
|
throw new Parse.Error(143, `class ${aHook.className} does not exist`);
|
|
212
177
|
});
|
|
213
178
|
}
|
|
214
|
-
|
|
215
179
|
throw new Parse.Error(143, 'invalid hook declaration');
|
|
216
180
|
}
|
|
217
|
-
|
|
218
181
|
}
|
|
219
|
-
|
|
220
182
|
exports.HooksController = HooksController;
|
|
221
|
-
|
|
222
183
|
function wrapToHTTPRequest(hook, key) {
|
|
223
184
|
return req => {
|
|
224
185
|
const jsonBody = {};
|
|
225
|
-
|
|
226
186
|
for (var i in req) {
|
|
227
187
|
jsonBody[i] = req[i];
|
|
228
188
|
}
|
|
229
|
-
|
|
230
189
|
if (req.object) {
|
|
231
190
|
jsonBody.object = req.object.toJSON();
|
|
232
191
|
jsonBody.object.className = req.object.className;
|
|
233
192
|
}
|
|
234
|
-
|
|
235
193
|
if (req.original) {
|
|
236
194
|
jsonBody.original = req.original.toJSON();
|
|
237
195
|
jsonBody.original.className = req.original.className;
|
|
238
196
|
}
|
|
239
|
-
|
|
240
197
|
const jsonRequest = {
|
|
241
198
|
url: hook.url,
|
|
242
199
|
headers: {
|
|
@@ -247,18 +204,15 @@ function wrapToHTTPRequest(hook, key) {
|
|
|
247
204
|
};
|
|
248
205
|
const agent = hook.url.startsWith('https') ? HTTPAgents['https'] : HTTPAgents['http'];
|
|
249
206
|
jsonRequest.agent = agent;
|
|
250
|
-
|
|
251
207
|
if (key) {
|
|
252
208
|
jsonRequest.headers['X-Parse-Webhook-Key'] = key;
|
|
253
209
|
} else {
|
|
254
210
|
_logger.logger.warn('Making outgoing webhook request without webhookKey being set!');
|
|
255
211
|
}
|
|
256
|
-
|
|
257
212
|
return (0, _request.default)(jsonRequest).then(response => {
|
|
258
213
|
let err;
|
|
259
214
|
let result;
|
|
260
215
|
let body = response.data;
|
|
261
|
-
|
|
262
216
|
if (body) {
|
|
263
217
|
if (typeof body === 'string') {
|
|
264
218
|
try {
|
|
@@ -271,13 +225,11 @@ function wrapToHTTPRequest(hook, key) {
|
|
|
271
225
|
};
|
|
272
226
|
}
|
|
273
227
|
}
|
|
274
|
-
|
|
275
228
|
if (!err) {
|
|
276
229
|
result = body.success;
|
|
277
230
|
err = body.error;
|
|
278
231
|
}
|
|
279
232
|
}
|
|
280
|
-
|
|
281
233
|
if (err) {
|
|
282
234
|
throw err;
|
|
283
235
|
} else if (hook.triggerName === 'beforeSave') {
|
|
@@ -286,7 +238,6 @@ function wrapToHTTPRequest(hook, key) {
|
|
|
286
238
|
delete result.updatedAt;
|
|
287
239
|
delete result.className;
|
|
288
240
|
}
|
|
289
|
-
|
|
290
241
|
return {
|
|
291
242
|
object: result
|
|
292
243
|
};
|
|
@@ -296,7 +247,6 @@ function wrapToHTTPRequest(hook, key) {
|
|
|
296
247
|
});
|
|
297
248
|
};
|
|
298
249
|
}
|
|
299
|
-
|
|
300
250
|
var _default = HooksController;
|
|
301
251
|
exports.default = _default;
|
|
302
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9Db250cm9sbGVycy9Ib29rc0NvbnRyb2xsZXIuanMiXSwibmFtZXMiOlsiRGVmYXVsdEhvb2tzQ29sbGVjdGlvbk5hbWUiLCJIVFRQQWdlbnRzIiwiaHR0cCIsIkFnZW50Iiwia2VlcEFsaXZlIiwiaHR0cHMiLCJIb29rc0NvbnRyb2xsZXIiLCJjb25zdHJ1Y3RvciIsImFwcGxpY2F0aW9uSWQiLCJkYXRhYmFzZUNvbnRyb2xsZXIiLCJ3ZWJob29rS2V5IiwiX2FwcGxpY2F0aW9uSWQiLCJfd2ViaG9va0tleSIsImRhdGFiYXNlIiwibG9hZCIsIl9nZXRIb29rcyIsInRoZW4iLCJob29rcyIsImZvckVhY2giLCJob29rIiwiYWRkSG9va1RvVHJpZ2dlcnMiLCJnZXRGdW5jdGlvbiIsImZ1bmN0aW9uTmFtZSIsInJlc3VsdHMiLCJnZXRGdW5jdGlvbnMiLCIkZXhpc3RzIiwiZ2V0VHJpZ2dlciIsImNsYXNzTmFtZSIsInRyaWdnZXJOYW1lIiwiZ2V0VHJpZ2dlcnMiLCJkZWxldGVGdW5jdGlvbiIsInRyaWdnZXJzIiwicmVtb3ZlRnVuY3Rpb24iLCJfcmVtb3ZlSG9va3MiLCJkZWxldGVUcmlnZ2VyIiwicmVtb3ZlVHJpZ2dlciIsInF1ZXJ5IiwiZmluZCIsIm1hcCIsInJlc3VsdCIsIm9iamVjdElkIiwiZGVzdHJveSIsIlByb21pc2UiLCJyZXNvbHZlIiwic2F2ZUhvb2siLCJ1cmwiLCJQYXJzZSIsIkVycm9yIiwidXBkYXRlIiwidXBzZXJ0Iiwid3JhcHBlZEZ1bmN0aW9uIiwid3JhcFRvSFRUUFJlcXVlc3QiLCJhZGRUcmlnZ2VyIiwiYWRkRnVuY3Rpb24iLCJhZGRIb29rIiwiY3JlYXRlT3JVcGRhdGVIb29rIiwiYUhvb2siLCJUeXBlcyIsImNyZWF0ZUhvb2siLCJ1cGRhdGVIb29rIiwia2V5IiwicmVxIiwianNvbkJvZHkiLCJpIiwib2JqZWN0IiwidG9KU09OIiwib3JpZ2luYWwiLCJqc29uUmVxdWVzdCIsImhlYWRlcnMiLCJib2R5IiwibWV0aG9kIiwiYWdlbnQiLCJzdGFydHNXaXRoIiwibG9nZ2VyIiwid2FybiIsInJlc3BvbnNlIiwiZXJyIiwiZGF0YSIsIkpTT04iLCJwYXJzZSIsImUiLCJlcnJvciIsImNvZGUiLCJwYXJ0aWFsUmVzcG9uc2UiLCJzdWJzdHJpbmciLCJzdWNjZXNzIiwiY3JlYXRlZEF0IiwidXBkYXRlZEF0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBRUE7O0FBRUE7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7Ozs7O0FBTkE7QUFFQTtBQU1BLE1BQU1BLDBCQUEwQixHQUFHLFFBQW5DO0FBQ0EsTUFBTUMsVUFBVSxHQUFHO0FBQ2pCQyxFQUFBQSxJQUFJLEVBQUUsSUFBSUEsY0FBS0MsS0FBVCxDQUFlO0FBQUVDLElBQUFBLFNBQVMsRUFBRTtBQUFiLEdBQWYsQ0FEVztBQUVqQkMsRUFBQUEsS0FBSyxFQUFFLElBQUlBLGVBQU1GLEtBQVYsQ0FBZ0I7QUFBRUMsSUFBQUEsU0FBUyxFQUFFO0FBQWIsR0FBaEI7QUFGVSxDQUFuQjs7QUFLTyxNQUFNRSxlQUFOLENBQXNCO0FBSzNCQyxFQUFBQSxXQUFXLENBQUNDLGFBQUQsRUFBd0JDLGtCQUF4QixFQUE0Q0MsVUFBNUMsRUFBd0Q7QUFDakUsU0FBS0MsY0FBTCxHQUFzQkgsYUFBdEI7QUFDQSxTQUFLSSxXQUFMLEdBQW1CRixVQUFuQjtBQUNBLFNBQUtHLFFBQUwsR0FBZ0JKLGtCQUFoQjtBQUNEOztBQUVESyxFQUFBQSxJQUFJLEdBQUc7QUFDTCxXQUFPLEtBQUtDLFNBQUwsR0FBaUJDLElBQWpCLENBQXNCQyxLQUFLLElBQUk7QUFDcENBLE1BQUFBLEtBQUssR0FBR0EsS0FBSyxJQUFJLEVBQWpCO0FBQ0FBLE1BQUFBLEtBQUssQ0FBQ0MsT0FBTixDQUFjQyxJQUFJLElBQUk7QUFDcEIsYUFBS0MsaUJBQUwsQ0FBdUJELElBQXZCO0FBQ0QsT0FGRDtBQUdELEtBTE0sQ0FBUDtBQU1EOztBQUVERSxFQUFBQSxXQUFXLENBQUNDLFlBQUQsRUFBZTtB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RUpDLGNBQUFBLElBQUksRUFBRSxDQUFDLENBRkg7QUFHSkMsY0FBQUEsZUFBZSxFQUFFZCxJQUFJLENBQUNlLFNBQUwsQ0FBZSxDQUFmLEVBQWtCLEdBQWxCO0FBSGIsYUFBTjtBQUtEO0FBQ0Y7O0FBQ0QsWUFBSSxDQUFDUixHQUFMLEVBQVU7QUFDUnJDLFVBQUFBLE1BQU0sR0FBRzhCLElBQUksQ0FBQ2dCLE9BQWQ7QUFDQVQsVUFBQUEsR0FBRyxHQUFHUCxJQUFJLENBQUNZLEtBQVg7QUFDRDtBQUNGOztBQUNELFVBQUlMLEdBQUosRUFBUztBQUNQLGNBQU1BLEdBQU47QUFDRCxPQUZELE1BRU8sSUFBSXpELElBQUksQ0FBQ1MsV0FBTCxLQUFxQixZQUF6QixFQUF1QztBQUM1QyxZQUFJLE9BQU9XLE1BQVAsS0FBa0IsUUFBdEIsRUFBZ0M7QUFDOUIsaUJBQU9BLE1BQU0sQ0FBQytDLFNBQWQ7QUFDQSxpQkFBTy9DLE1BQU0sQ0FBQ2dELFNBQWQ7QUFDQSxpQkFBT2hELE1BQU0sQ0FBQ1osU0FBZDtBQUNEOztBQUNELGVBQU87QUFBRXFDLFVBQUFBLE1BQU0sRUFBRXpCO0FBQVYsU0FBUDtBQUNELE9BUE0sTUFPQTtBQUNMLGVBQU9BLE1BQVA7QUFDRDtBQUNGLEtBakNNLENBQVA7QUFrQ0QsR0FoRUQ7QUFpRUQ7O2VBRWNqQyxlIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIEBmbG93IHdlYWsgKi9cblxuaW1wb3J0ICogYXMgdHJpZ2dlcnMgZnJvbSAnLi4vdHJpZ2dlcnMnO1xuLy8gQGZsb3ctZGlzYWJsZS1uZXh0XG5pbXBvcnQgKiBhcyBQYXJzZSBmcm9tICdwYXJzZS9ub2RlJztcbi8vIEBmbG93LWRpc2FibGUtbmV4dFxuaW1wb3J0IHJlcXVlc3QgZnJvbSAnLi4vcmVxdWVzdCc7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLi9sb2dnZXInO1xuaW1wb3J0IGh0dHAgZnJvbSAnaHR0cCc7XG5pbXBvcnQgaHR0cHMgZnJvbSAnaHR0cHMnO1xuXG5jb25zdCBEZWZhdWx0SG9va3NDb2xsZWN0aW9uTmFtZSA9ICdfSG9va3MnO1xuY29uc3QgSFRUUEFnZW50cyA9IHtcbiAgaHR0cDogbmV3IGh0dHAuQWdlbnQoeyBrZWVwQWxpdmU6IHRydWUgfSksXG4gIGh0dHBzOiBuZXcgaHR0cHMuQWdlbnQoeyBrZWVwQWxpdmU6IHRydWUgfSksXG59O1xuXG5leHBvcnQgY2xhc3MgSG9va3NDb250cm9sbGVyIHtcbiAgX2FwcGxpY2F0aW9uSWQ6IHN0cmluZztcbiAgX3dlYmhvb2tLZXk6IHN0cmluZztcbiAgZGF0YWJhc2U6IGFueTtcblxuICBjb25zdHJ1Y3RvcihhcHBsaWNhdGlvbklkOiBzdHJpbmcsIGRhdGFiYXNlQ29udHJvbGxlciwgd2ViaG9va0tleSkge1xuICAgIHRoaXMuX2FwcGxpY2F0aW9uSWQgPSBhcHBsaWNhdGlvbklkO1xuICAgIHRoaXMuX3dlYmhvb2tLZXkgPSB3ZWJob29rS2V5O1xuICAgIHRoaXMuZGF0YWJhc2UgPSBkYXRhYmFzZUNvbnRyb2xsZXI7XG4gIH1cblxuICBsb2FkKCkge1xuICAgIHJldHVybiB0aGlzLl9nZXRIb29rcygpLnRoZW4oaG9va3MgPT4ge1xuICAgICAgaG9va3MgPSBob29rcyB8fCBbXTtcbiAgICAgIGhvb2tzLmZvckVhY2goaG9vayA9PiB7XG4gICAgICAgIHRoaXMuYWRkSG9va1RvVHJpZ2dlcnMoaG9vayk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldEZ1bmN0aW9uKGZ1bmN0aW9uTmFtZSkge1xuICAgIHJldHVybiB0aGlzLl9nZXRIb29rcyh7IGZ1bmN0aW9uTmFtZTogZnVuY3Rpb25OYW1lIH0pLnRoZW4ocmVzdWx0cyA9PiByZXN1bHRzWzBdKTtcbiAgfVxuXG4gIGdldEZ1bmN0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5fZ2V0SG9va3MoeyBmdW5jdGlvbk5hbWU6IHsgJGV4aXN0czogdHJ1ZSB9IH0pO1xuICB9XG5cbiAgZ2V0VHJpZ2dlcihjbGFzc05hbWUsIHRyaWdnZXJOYW1lKSB7XG4gICAgcmV0dXJuIHRoaXMuX2dldEhvb2tzKHtcbiAgICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lLFxuICAgICAgdHJpZ2dlck5hbWU6IHRyaWdnZXJOYW1lLFxuICAgIH0pLnRoZW4ocmVzdWx0cyA9PiByZXN1bHRzWzBdKTtcbiAgfVxuXG4gIGdldFRyaWdnZXJzKCkge1xuICAgIHJldHVybiB0aGlzLl9nZXRIb29rcyh7XG4gICAgICBjbGFzc05hbWU6IHsgJGV4aXN0czogdHJ1ZSB9LFxuICAgICAgdHJpZ2dlck5hbWU6IHsgJGV4aXN0czogdHJ1ZSB9LFxuICAgIH0pO1xuICB9XG5cbiAgZGVsZXRlRnVuY3Rpb24oZnVuY3Rpb25OYW1lKSB7XG4gICAgdHJpZ2dlcnMucmVtb3ZlRnVuY3Rpb24oZnVuY3Rpb25OYW1lLCB0aGlzLl9hcHBsaWNhdGlvbklkKTtcbiAgICByZXR1cm4gdGhpcy5fcmVtb3ZlSG9va3MoeyBmdW5jdGlvbk5hbWU6IGZ1bmN0aW9uTmFtZSB9KTtcbiAgfVxuXG4gIGRlbGV0ZVRyaWdnZXIoY2xhc3NOYW1lLCB0cmlnZ2VyTmFtZSkge1xuICAgIHRyaWdnZXJzLnJlbW92ZVRyaWdnZXIodHJpZ2dlck5hbWUsIGNsYXNzTmFtZSwgdGhpcy5fYXBwbGljYXRpb25JZCk7XG4gICAgcmV0dXJuIHRoaXMuX3JlbW92ZUhvb2tzKHtcbiAgICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lLFxuICAgICAgdHJpZ2dlck5hbWU6IHRyaWdnZXJOYW1lLFxuICAgIH0pO1xuICB9XG5cbiAgX2dldEhvb2tzKHF1ZXJ5ID0ge30pIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhYmFzZS5maW5kKERlZmF1bHRIb29rc0NvbGxlY3Rpb25OYW1lLCBxdWVyeSkudGhlbihyZXN1bHRzID0+IHtcbiAgICAgIHJldHVybiByZXN1bHRzLm1hcChyZXN1bHQgPT4ge1xuICAgICAgICBkZWxldGUgcmVzdWx0Lm9iamVjdElkO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBfcmVtb3ZlSG9va3MocXVlcnkpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhYmFzZS5kZXN0cm95KERlZmF1bHRIb29rc0NvbGxlY3Rpb25OYW1lLCBxdWVyeSkudGhlbigoKSA9PiB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHt9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHNhdmVIb29rKGhvb2spIHtcbiAgICB2YXIgcXVlcnk7XG4gICAgaWYgKGhvb2suZnVuY3Rpb25OYW1lICYmIGhvb2sudXJsKSB7XG4gICAgICBxdWVyeSA9IHsgZnVuY3Rpb25OYW1lOiBob29rLmZ1bmN0aW9uTmFtZSB9O1xuICAgIH0gZWxzZSBpZiAoaG9vay50cmlnZ2VyTmFtZSAmJiBob29rLmNsYXNzTmFtZSAmJiBob29rLnVybCkge1xuICAgICAgcXVlcnkgPSB7IGNsYXNzTmFtZTogaG9vay5jbGFzc05hbWUsIHRyaWdnZXJOYW1lOiBob29rLnRyaWdnZXJOYW1lIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcigxNDMsICdpbnZhbGlkIGhvb2sgZGVjbGFyYXRpb24nKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZGF0YWJhc2VcbiAgICAgIC51cGRhdGUoRGVmYXVsdEhvb2tzQ29sbGVjdGlvbk5hbWUsIHF1ZXJ5LCBob29rLCB7IHVwc2VydDogdHJ1ZSB9KVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGhvb2spO1xuICAgICAgfSk7XG4gIH1cblxuICBhZGRIb29rVG9UcmlnZ2Vycyhob29rKSB7XG4gICAgdmFyIHdyYXBwZWRGdW5jdGlvbiA9IHdyYXBUb0hUVFBSZXF1ZXN0KGhvb2ssIHRoaXMuX3dlYmhvb2tLZXkpO1xuICAgIHdyYXBwZWRGdW5jdGlvbi51cmwgPSBob29rLnVybDtcbiAgICBpZiAoaG9vay5jbGFzc05hbWUpIHtcbiAgICAgIHRyaWdnZXJzLmFkZFRyaWdnZXIoaG9vay50cmlnZ2VyTmFtZSwgaG9vay5jbGFzc05hbWUsIHdyYXBwZWRGdW5jdGlvbiwgdGhpcy5fYXBwbGljYXRpb25JZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRyaWdnZXJzLmFkZEZ1bmN0aW9uKGhvb2suZnVuY3Rpb25OYW1lLCB3cmFwcGVkRnVuY3Rpb24sIG51bGwsIHRoaXMuX2FwcGxpY2F0aW9uSWQpO1xuICAgIH1cbiAgfVxuXG4gIGFkZEhvb2soaG9vaykge1xuICAgIHRoaXMuYWRkSG9va1RvVHJpZ2dlcnMoaG9vayk7XG4gICAgcmV0dXJuIHRoaXMuc2F2ZUhvb2soaG9vayk7XG4gIH1cblxuICBjcmVhdGVPclVwZGF0ZUhvb2soYUhvb2spIHtcbiAgICB2YXIgaG9vaztcbiAgICBpZiAoYUhvb2sgJiYgYUhvb2suZnVuY3Rpb25OYW1lICYmIGFIb29rLnVybCkge1xuICAgICAgaG9vayA9IHt9O1xuICAgICAgaG9vay5mdW5jdGlvbk5hbWUgPSBhSG9vay5mdW5jdGlvbk5hbWU7XG4gICAgICBob29rLnVybCA9IGFIb29rLnVybDtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgYUhvb2sgJiZcbiAgICAgIGFIb29rLmNsYXNzTmFtZSAmJlxuICAgICAgYUhvb2sudXJsICYmXG4gICAgICBhSG9vay50cmlnZ2VyTmFtZSAmJlxuICAgICAgdHJpZ2dlcnMuVHlwZXNbYUhvb2sudHJpZ2dlck5hbWVdXG4gICAgKSB7XG4gICAgICBob29rID0ge307XG4gICAgICBob29rLmNsYXNzTmFtZSA9IGFIb29rLmNsYXNzTmFtZTtcbiAgICAgIGhvb2sudXJsID0gYUhvb2sudXJsO1xuICAgICAgaG9vay50cmlnZ2VyTmFtZSA9IGFIb29rLnRyaWdnZXJOYW1lO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoMTQzLCAnaW52YWxpZCBob29rIGRlY2xhcmF0aW9uJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYWRkSG9vayhob29rKTtcbiAgfVxuXG4gIGNyZWF0ZUhvb2soYUhvb2spIHtcbiAgICBpZiAoYUhvb2suZnVuY3Rpb25OYW1lKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRGdW5jdGlvbihhSG9vay5mdW5jdGlvbk5hbWUpLnRoZW4ocmVzdWx0ID0+IHtcbiAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcigxNDMsIGBmdW5jdGlvbiBuYW1lOiAke2FIb29rLmZ1bmN0aW9uTmFtZX0gYWxyZWFkeSBleGl0c2ApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZU9yVXBkYXRlSG9vayhhSG9vayk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoYUhvb2suY2xhc3NOYW1lICYmIGFIb29rLnRyaWdnZXJOYW1lKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRUcmlnZ2VyKGFIb29rLmNsYXNzTmFtZSwgYUhvb2sudHJpZ2dlck5hbWUpLnRoZW4ocmVzdWx0ID0+IHtcbiAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihcbiAgICAgICAgICAgIDE0MyxcbiAgICAgICAgICAgIGBjbGFzcyAke2FIb29rLmNsYXNzTmFtZX0gYWxyZWFkeSBoYXMgdHJpZ2dlciAke2FIb29rLnRyaWdnZXJOYW1lfWBcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZU9yVXBkYXRlSG9vayhhSG9vayk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoMTQzLCAnaW52YWxpZCBob29rIGRlY2xhcmF0aW9uJyk7XG4gIH1cblxuICB1cGRhdGVIb29rKGFIb29rKSB7XG4gICAgaWYgKGFIb29rLmZ1bmN0aW9uTmFtZSkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0RnVuY3Rpb24oYUhvb2suZnVuY3Rpb25OYW1lKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVPclVwZGF0ZUhvb2soYUhvb2spO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcigxNDMsIGBubyBmdW5jdGlvbiBuYW1lZDogJHthSG9vay5mdW5jdGlvbk5hbWV9IGlzIGRlZmluZWRgKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoYUhvb2suY2xhc3NOYW1lICYmIGFIb29rLnRyaWdnZXJOYW1lKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRUcmlnZ2VyKGFIb29rLmNsYXNzTmFtZSwgYUhvb2sudHJpZ2dlck5hbWUpLnRoZW4ocmVzdWx0ID0+IHtcbiAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZU9yVXBkYXRlSG9vayhhSG9vayk7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKDE0MywgYGNsYXNzICR7YUhvb2suY2xhc3NOYW1lfSBkb2VzIG5vdCBleGlzdGApO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcigxNDMsICdpbnZhbGlkIGhvb2sgZGVjbGFyYXRpb24nKTtcbiAgfVxufVxuXG5mdW5jdGlvbiB3cmFwVG9IVFRQUmVxdWVzdChob29rLCBrZXkpIHtcbiAgcmV0dXJuIHJlcSA9PiB7XG4gICAgY29uc3QganNvbkJvZHkgPSB7fTtcbiAgICBmb3IgKHZhciBpIGluIHJlcSkge1xuICAgICAganNvbkJvZHlbaV0gPSByZXFbaV07XG4gICAgfVxuICAgIGlmIChyZXEub2JqZWN0KSB7XG4gICAgICBqc29uQm9keS5vYmplY3QgPSByZXEub2JqZWN0LnRvSlNPTigpO1xuICAgICAganNvbkJvZHkub2JqZWN0LmNsYXNzTmFtZSA9IHJlcS5vYmplY3QuY2xhc3NOYW1lO1xuICAgIH1cbiAgICBpZiAocmVxLm9yaWdpbmFsKSB7XG4gICAgICBqc29uQm9keS5vcmlnaW5hbCA9IHJlcS5vcmlnaW5hbC50b0pTT04oKTtcbiAgICAgIGpzb25Cb2R5Lm9yaWdpbmFsLmNsYXNzTmFtZSA9IHJlcS5vcmlnaW5hbC5jbGFzc05hbWU7XG4gICAgfVxuICAgIGNvbnN0IGpzb25SZXF1ZXN0OiBhbnkgPSB7XG4gICAgICB1cmw6IGhvb2sudXJsLFxuICAgICAgaGVhZGVyczoge1xuICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgfSxcbiAgICAgIGJvZHk6IGpzb25Cb2R5LFxuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgfTtcblxuICAgIGNvbnN0IGFnZW50ID0gaG9vay51cmwuc3RhcnRzV2l0aCgnaHR0cHMnKSA/IEhUVFBBZ2VudHNbJ2h0dHBzJ10gOiBIVFRQQWdlbnRzWydodHRwJ107XG4gICAganNvblJlcXVlc3QuYWdlbnQgPSBhZ2VudDtcblxuICAgIGlmIChrZXkpIHtcbiAgICAgIGpzb25SZXF1ZXN0LmhlYWRlcnNbJ1gtUGFyc2UtV2ViaG9vay1LZXknXSA9IGtleTtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9nZ2VyLndhcm4oJ01ha2luZyBvdXRnb2luZyB3ZWJob29rIHJlcXVlc3Qgd2l0aG91dCB3ZWJob29rS2V5IGJlaW5nIHNldCEnKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcXVlc3QoanNvblJlcXVlc3QpLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgbGV0IGVycjtcbiAgICAgIGxldCByZXN1bHQ7XG4gICAgICBsZXQgYm9keSA9IHJlc3BvbnNlLmRhdGE7XG4gICAgICBpZiAoYm9keSkge1xuICAgICAgICBpZiAodHlwZW9mIGJvZHkgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGJvZHkgPSBKU09OLnBhcnNlKGJvZHkpO1xuICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGVyciA9IHtcbiAgICAgICAgICAgICAgZXJyb3I6ICdNYWxmb3JtZWQgcmVzcG9uc2UnLFxuICAgICAgICAgICAgICBjb2RlOiAtMSxcbiAgICAgICAgICAgICAgcGFydGlhbFJlc3BvbnNlOiBib2R5LnN1YnN0cmluZygwLCAxMDApLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFlcnIpIHtcbiAgICAgICAgICByZXN1bHQgPSBib2R5LnN1Y2Nlc3M7XG4gICAgICAgICAgZXJyID0gYm9keS5lcnJvcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGVycikge1xuICAgICAgICB0aHJvdyBlcnI7XG4gICAgICB9IGVsc2UgaWYgKGhvb2sudHJpZ2dlck5hbWUgPT09ICdiZWZvcmVTYXZlJykge1xuICAgICAgICBpZiAodHlwZW9mIHJlc3VsdCA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICBkZWxldGUgcmVzdWx0LmNyZWF0ZWRBdDtcbiAgICAgICAgICBkZWxldGUgcmVzdWx0LnVwZGF0ZWRBdDtcbiAgICAgICAgICBkZWxldGUgcmVzdWx0LmNsYXNzTmFtZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBvYmplY3Q6IHJlc3VsdCB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgSG9va3NDb250cm9sbGVyO1xuIl19
|
|
252
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEZWZhdWx0SG9va3NDb2xsZWN0aW9uTmFtZSIsIkhUVFBBZ2VudHMiLCJodHRwIiwiQWdlbnQiLCJrZWVwQWxpdmUiLCJodHRwcyIsIkhvb2tzQ29udHJvbGxlciIsImNvbnN0cnVjdG9yIiwiYXBwbGljYXRpb25JZCIsImRhdGFiYXNlQ29udHJvbGxlciIsIndlYmhvb2tLZXkiLCJfYXBwbGljYXRpb25JZCIsIl93ZWJob29rS2V5IiwiZGF0YWJhc2UiLCJsb2FkIiwiX2dldEhvb2tzIiwidGhlbiIsImhvb2tzIiwiZm9yRWFjaCIsImhvb2siLCJhZGRIb29rVG9UcmlnZ2VycyIsImdldEZ1bmN0aW9uIiwiZnVuY3Rpb25OYW1lIiwicmVzdWx0cyIsImdldEZ1bmN0aW9ucyIsIiRleGlzdHMiLCJnZXRUcmlnZ2VyIiwiY2xhc3NOYW1lIiwidHJpZ2dlck5hbWUiLCJnZXRUcmlnZ2VycyIsImRlbGV0ZUZ1bmN0aW9uIiwidHJpZ2dlcnMiLCJyZW1vdmVGdW5jdGlvbiIsIl9yZW1vdmVIb29rcyIsImRlbGV0ZVRyaWdnZXIiLCJyZW1vdmVUcmlnZ2VyIiwicXVlcnkiLCJmaW5kIiwibWFwIiwicmVzdWx0Iiwib2JqZWN0SWQiLCJkZXN0cm95IiwiUHJvbWlzZSIsInJlc29sdmUiLCJzYXZlSG9vayIsInVybCIsIlBhcnNlIiwiRXJyb3IiLCJ1cGRhdGUiLCJ1cHNlcnQiLCJ3cmFwcGVkRnVuY3Rpb24iLCJ3cmFwVG9IVFRQUmVxdWVzdCIsImFkZFRyaWdnZXIiLCJhZGRGdW5jdGlvbiIsImFkZEhvb2siLCJjcmVhdGVPclVwZGF0ZUhvb2siLCJhSG9vayIsIlR5cGVzIiwiY3JlYXRlSG9vayIsInVwZGF0ZUhvb2siLCJrZXkiLCJyZXEiLCJqc29uQm9keSIsImkiLCJvYmplY3QiLCJ0b0pTT04iLCJvcmlnaW5hbCIsImpzb25SZXF1ZXN0IiwiaGVhZGVycyIsImJvZHkiLCJtZXRob2QiLCJhZ2VudCIsInN0YXJ0c1dpdGgiLCJsb2dnZXIiLCJ3YXJuIiwicmVxdWVzdCIsInJlc3BvbnNlIiwiZXJyIiwiZGF0YSIsIkpTT04iLCJwYXJzZSIsImUiLCJlcnJvciIsImNvZGUiLCJwYXJ0aWFsUmVzcG9uc2UiLCJzdWJzdHJpbmciLCJzdWNjZXNzIiwiY3JlYXRlZEF0IiwidXBkYXRlZEF0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL0NvbnRyb2xsZXJzL0hvb2tzQ29udHJvbGxlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQGZsb3cgd2VhayAqL1xuXG5pbXBvcnQgKiBhcyB0cmlnZ2VycyBmcm9tICcuLi90cmlnZ2Vycyc7XG4vLyBAZmxvdy1kaXNhYmxlLW5leHRcbmltcG9ydCAqIGFzIFBhcnNlIGZyb20gJ3BhcnNlL25vZGUnO1xuLy8gQGZsb3ctZGlzYWJsZS1uZXh0XG5pbXBvcnQgcmVxdWVzdCBmcm9tICcuLi9yZXF1ZXN0JztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4uL2xvZ2dlcic7XG5pbXBvcnQgaHR0cCBmcm9tICdodHRwJztcbmltcG9ydCBodHRwcyBmcm9tICdodHRwcyc7XG5cbmNvbnN0IERlZmF1bHRIb29rc0NvbGxlY3Rpb25OYW1lID0gJ19Ib29rcyc7XG5jb25zdCBIVFRQQWdlbnRzID0ge1xuICBodHRwOiBuZXcgaHR0cC5BZ2VudCh7IGtlZXBBbGl2ZTogdHJ1ZSB9KSxcbiAgaHR0cHM6IG5ldyBodHRwcy5BZ2VudCh7IGtlZXBBbGl2ZTogdHJ1ZSB9KSxcbn07XG5cbmV4cG9ydCBjbGFzcyBIb29rc0NvbnRyb2xsZXIge1xuICBfYXBwbGljYXRpb25JZDogc3RyaW5nO1xuICBfd2ViaG9va0tleTogc3RyaW5nO1xuICBkYXRhYmFzZTogYW55O1xuXG4gIGNvbnN0cnVjdG9yKGFwcGxpY2F0aW9uSWQ6IHN0cmluZywgZGF0YWJhc2VDb250cm9sbGVyLCB3ZWJob29rS2V5KSB7XG4gICAgdGhpcy5fYXBwbGljYXRpb25JZCA9IGFwcGxpY2F0aW9uSWQ7XG4gICAgdGhpcy5fd2ViaG9va0tleSA9IHdlYmhvb2tLZXk7XG4gICAgdGhpcy5kYXRhYmFzZSA9IGRhdGFiYXNlQ29udHJvbGxlcjtcbiAgfVxuXG4gIGxvYWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2dldEhvb2tzKCkudGhlbihob29rcyA9PiB7XG4gICAgICBob29rcyA9IGhvb2tzIHx8IFtdO1xuICAgICAgaG9va3MuZm9yRWFjaChob29rID0+IHtcbiAgICAgICAgdGhpcy5hZGRIb29rVG9UcmlnZ2Vycyhob29rKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0RnVuY3Rpb24oZnVuY3Rpb25OYW1lKSB7XG4gICAgcmV0dXJuIHRoaXMuX2dldEhvb2tzKHsgZnVuY3Rpb25OYW1lOiBmdW5jdGlvbk5hbWUgfSkudGhlbihyZXN1bHRzID0+IHJlc3VsdHNbMF0pO1xuICB9XG5cbiAgZ2V0RnVuY3Rpb25zKCkge1xuICAgIHJldHVybiB0aGlzLl9nZXRIb29rcyh7IGZ1bmN0aW9uTmFtZTogeyAkZXhpc3RzOiB0cnVlIH0gfSk7XG4gIH1cblxuICBnZXRUcmlnZ2VyKGNsYXNzTmFtZSwgdHJpZ2dlck5hbWUpIHtcbiAgICByZXR1cm4gdGhpcy5fZ2V0SG9va3Moe1xuICAgICAgY2xhc3NOYW1lOiBjbGFzc05hbWUsXG4gICAgICB0cmlnZ2VyTmFtZTogdHJpZ2dlck5hbWUsXG4gICAgfSkudGhlbihyZXN1bHRzID0+IHJlc3VsdHNbMF0pO1xuICB9XG5cbiAgZ2V0VHJpZ2dlcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2dldEhvb2tzKHtcbiAgICAgIGNsYXNzTmFtZTogeyAkZXhpc3RzOiB0cnVlIH0sXG4gICAgICB0cmlnZ2VyTmFtZTogeyAkZXhpc3RzOiB0cnVlIH0sXG4gICAgfSk7XG4gIH1cblxuICBkZWxldGVGdW5jdGlvbihmdW5jdGlvbk5hbWUpIHtcbiAgICB0cmlnZ2Vycy5yZW1vdmVGdW5jdGlvbihmdW5jdGlvbk5hbWUsIHRoaXMuX2FwcGxpY2F0aW9uSWQpO1xuICAgIHJldHVybiB0aGlzLl9yZW1vdmVIb29rcyh7IGZ1bmN0aW9uTmFtZTogZnVuY3Rpb25OYW1lIH0pO1xuICB9XG5cbiAgZGVsZXRlVHJpZ2dlcihjbGFzc05hbWUsIHRyaWdnZXJOYW1lKSB7XG4gICAgdHJpZ2dlcnMucmVtb3ZlVHJpZ2dlcih0cmlnZ2VyTmFtZSwgY2xhc3NOYW1lLCB0aGlzLl9hcHBsaWNhdGlvbklkKTtcbiAgICByZXR1cm4gdGhpcy5fcmVtb3ZlSG9va3Moe1xuICAgICAgY2xhc3NOYW1lOiBjbGFzc05hbWUsXG4gICAgICB0cmlnZ2VyTmFtZTogdHJpZ2dlck5hbWUsXG4gICAgfSk7XG4gIH1cblxuICBfZ2V0SG9va3MocXVlcnkgPSB7fSkge1xuICAgIHJldHVybiB0aGlzLmRhdGFiYXNlLmZpbmQoRGVmYXVsdEhvb2tzQ29sbGVjdGlvbk5hbWUsIHF1ZXJ5KS50aGVuKHJlc3VsdHMgPT4ge1xuICAgICAgcmV0dXJuIHJlc3VsdHMubWFwKHJlc3VsdCA9PiB7XG4gICAgICAgIGRlbGV0ZSByZXN1bHQub2JqZWN0SWQ7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIF9yZW1vdmVIb29rcyhxdWVyeSkge1xuICAgIHJldHVybiB0aGlzLmRhdGFiYXNlLmRlc3Ryb3koRGVmYXVsdEhvb2tzQ29sbGVjdGlvbk5hbWUsIHF1ZXJ5KS50aGVuKCgpID0+IHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoe30pO1xuICAgIH0pO1xuICB9XG5cbiAgc2F2ZUhvb2soaG9vaykge1xuICAgIHZhciBxdWVyeTtcbiAgICBpZiAoaG9vay5mdW5jdGlvbk5hbWUgJiYgaG9vay51cmwpIHtcbiAgICAgIHF1ZXJ5ID0geyBmdW5jdGlvbk5hbWU6IGhvb2suZnVuY3Rpb25OYW1lIH07XG4gICAgfSBlbHNlIGlmIChob29rLnRyaWdnZXJOYW1lICYmIGhvb2suY2xhc3NOYW1lICYmIGhvb2sudXJsKSB7XG4gICAgICBxdWVyeSA9IHsgY2xhc3NOYW1lOiBob29rLmNsYXNzTmFtZSwgdHJpZ2dlck5hbWU6IGhvb2sudHJpZ2dlck5hbWUgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKDE0MywgJ2ludmFsaWQgaG9vayBkZWNsYXJhdGlvbicpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5kYXRhYmFzZVxuICAgICAgLnVwZGF0ZShEZWZhdWx0SG9va3NDb2xsZWN0aW9uTmFtZSwgcXVlcnksIGhvb2ssIHsgdXBzZXJ0OiB0cnVlIH0pXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoaG9vayk7XG4gICAgICB9KTtcbiAgfVxuXG4gIGFkZEhvb2tUb1RyaWdnZXJzKGhvb2spIHtcbiAgICB2YXIgd3JhcHBlZEZ1bmN0aW9uID0gd3JhcFRvSFRUUFJlcXVlc3QoaG9vaywgdGhpcy5fd2ViaG9va0tleSk7XG4gICAgd3JhcHBlZEZ1bmN0aW9uLnVybCA9IGhvb2sudXJsO1xuICAgIGlmIChob29rLmNsYXNzTmFtZSkge1xuICAgICAgdHJpZ2dlcnMuYWRkVHJpZ2dlcihob29rLnRyaWdnZXJOYW1lLCBob29rLmNsYXNzTmFtZSwgd3JhcHBlZEZ1bmN0aW9uLCB0aGlzLl9hcHBsaWNhdGlvbklkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdHJpZ2dlcnMuYWRkRnVuY3Rpb24oaG9vay5mdW5jdGlvbk5hbWUsIHdyYXBwZWRGdW5jdGlvbiwgbnVsbCwgdGhpcy5fYXBwbGljYXRpb25JZCk7XG4gICAgfVxuICB9XG5cbiAgYWRkSG9vayhob29rKSB7XG4gICAgdGhpcy5hZGRIb29rVG9UcmlnZ2Vycyhob29rKTtcbiAgICByZXR1cm4gdGhpcy5zYXZlSG9vayhob29rKTtcbiAgfVxuXG4gIGNyZWF0ZU9yVXBkYXRlSG9vayhhSG9vaykge1xuICAgIHZhciBob29rO1xuICAgIGlmIChhSG9vayAmJiBhSG9vay5mdW5jdGlvbk5hbWUgJiYgYUhvb2sudXJsKSB7XG4gICAgICBob29rID0ge307XG4gICAgICBob29rLmZ1bmN0aW9uTmFtZSA9IGFIb29rLmZ1bmN0aW9uTmFtZTtcbiAgICAgIGhvb2sudXJsID0gYUhvb2sudXJsO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICBhSG9vayAmJlxuICAgICAgYUhvb2suY2xhc3NOYW1lICYmXG4gICAgICBhSG9vay51cmwgJiZcbiAgICAgIGFIb29rLnRyaWdnZXJOYW1lICYmXG4gICAgICB0cmlnZ2Vycy5UeXBlc1thSG9vay50cmlnZ2VyTmFtZV1cbiAgICApIHtcbiAgICAgIGhvb2sgPSB7fTtcbiAgICAgIGhvb2suY2xhc3NOYW1lID0gYUhvb2suY2xhc3NOYW1lO1xuICAgICAgaG9vay51cmwgPSBhSG9vay51cmw7XG4gICAgICBob29rLnRyaWdnZXJOYW1lID0gYUhvb2sudHJpZ2dlck5hbWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcigxNDMsICdpbnZhbGlkIGhvb2sgZGVjbGFyYXRpb24nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5hZGRIb29rKGhvb2spO1xuICB9XG5cbiAgY3JlYXRlSG9vayhhSG9vaykge1xuICAgIGlmIChhSG9vay5mdW5jdGlvbk5hbWUpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldEZ1bmN0aW9uKGFIb29rLmZ1bmN0aW9uTmFtZSkudGhlbihyZXN1bHQgPT4ge1xuICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKDE0MywgYGZ1bmN0aW9uIG5hbWU6ICR7YUhvb2suZnVuY3Rpb25OYW1lfSBhbHJlYWR5IGV4aXRzYCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlT3JVcGRhdGVIb29rKGFIb29rKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChhSG9vay5jbGFzc05hbWUgJiYgYUhvb2sudHJpZ2dlck5hbWUpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFRyaWdnZXIoYUhvb2suY2xhc3NOYW1lLCBhSG9vay50cmlnZ2VyTmFtZSkudGhlbihyZXN1bHQgPT4ge1xuICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFxuICAgICAgICAgICAgMTQzLFxuICAgICAgICAgICAgYGNsYXNzICR7YUhvb2suY2xhc3NOYW1lfSBhbHJlYWR5IGhhcyB0cmlnZ2VyICR7YUhvb2sudHJpZ2dlck5hbWV9YFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlT3JVcGRhdGVIb29rKGFIb29rKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcigxNDMsICdpbnZhbGlkIGhvb2sgZGVjbGFyYXRpb24nKTtcbiAgfVxuXG4gIHVwZGF0ZUhvb2soYUhvb2spIHtcbiAgICBpZiAoYUhvb2suZnVuY3Rpb25OYW1lKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRGdW5jdGlvbihhSG9vay5mdW5jdGlvbk5hbWUpLnRoZW4ocmVzdWx0ID0+IHtcbiAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZU9yVXBkYXRlSG9vayhhSG9vayk7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKDE0MywgYG5vIGZ1bmN0aW9uIG5hbWVkOiAke2FIb29rLmZ1bmN0aW9uTmFtZX0gaXMgZGVmaW5lZGApO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChhSG9vay5jbGFzc05hbWUgJiYgYUhvb2sudHJpZ2dlck5hbWUpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFRyaWdnZXIoYUhvb2suY2xhc3NOYW1lLCBhSG9vay50cmlnZ2VyTmFtZSkudGhlbihyZXN1bHQgPT4ge1xuICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlT3JVcGRhdGVIb29rKGFIb29rKTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoMTQzLCBgY2xhc3MgJHthSG9vay5jbGFzc05hbWV9IGRvZXMgbm90IGV4aXN0YCk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKDE0MywgJ2ludmFsaWQgaG9vayBkZWNsYXJhdGlvbicpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHdyYXBUb0hUVFBSZXF1ZXN0KGhvb2ssIGtleSkge1xuICByZXR1cm4gcmVxID0+IHtcbiAgICBjb25zdCBqc29uQm9keSA9IHt9O1xuICAgIGZvciAodmFyIGkgaW4gcmVxKSB7XG4gICAgICBqc29uQm9keVtpXSA9IHJlcVtpXTtcbiAgICB9XG4gICAgaWYgKHJlcS5vYmplY3QpIHtcbiAgICAgIGpzb25Cb2R5Lm9iamVjdCA9IHJlcS5vYmplY3QudG9KU09OKCk7XG4gICAgICBqc29uQm9keS5vYmplY3QuY2xhc3NOYW1lID0gcmVxLm9iamVjdC5jbGFzc05hbWU7XG4gICAgfVxuICAgIGlmIChyZXEub3JpZ2luYWwpIHtcbiAgICAgIGpzb25Cb2R5Lm9yaWdpbmFsID0gcmVxLm9yaWdpbmFsLnRvSlNPTigpO1xuICAgICAganNvbkJvZHkub3JpZ2luYWwuY2xhc3NOYW1lID0gcmVxLm9yaWdpbmFsLmNsYXNzTmFtZTtcbiAgICB9XG4gICAgY29uc3QganNvblJlcXVlc3Q6IGFueSA9IHtcbiAgICAgIHVybDogaG9vay51cmwsXG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICB9LFxuICAgICAgYm9keToganNvbkJvZHksXG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICB9O1xuXG4gICAgY29uc3QgYWdlbnQgPSBob29rLnVybC5zdGFydHNXaXRoKCdodHRwcycpID8gSFRUUEFnZW50c1snaHR0cHMnXSA6IEhUVFBBZ2VudHNbJ2h0dHAnXTtcbiAgICBqc29uUmVxdWVzdC5hZ2VudCA9IGFnZW50O1xuXG4gICAgaWYgKGtleSkge1xuICAgICAganNvblJlcXVlc3QuaGVhZGVyc1snWC1QYXJzZS1XZWJob29rLUtleSddID0ga2V5O1xuICAgIH0gZWxzZSB7XG4gICAgICBsb2dnZXIud2FybignTWFraW5nIG91dGdvaW5nIHdlYmhvb2sgcmVxdWVzdCB3aXRob3V0IHdlYmhvb2tLZXkgYmVpbmcgc2V0IScpO1xuICAgIH1cbiAgICByZXR1cm4gcmVxdWVzdChqc29uUmVxdWVzdCkudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICBsZXQgZXJyO1xuICAgICAgbGV0IHJlc3VsdDtcbiAgICAgIGxldCBib2R5ID0gcmVzcG9uc2UuZGF0YTtcbiAgICAgIGlmIChib2R5KSB7XG4gICAgICAgIGlmICh0eXBlb2YgYm9keSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgYm9keSA9IEpTT04ucGFyc2UoYm9keSk7XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgZXJyID0ge1xuICAgICAgICAgICAgICBlcnJvcjogJ01hbGZvcm1lZCByZXNwb25zZScsXG4gICAgICAgICAgICAgIGNvZGU6IC0xLFxuICAgICAgICAgICAgICBwYXJ0aWFsUmVzcG9uc2U6IGJvZHkuc3Vic3RyaW5nKDAsIDEwMCksXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIWVycikge1xuICAgICAgICAgIHJlc3VsdCA9IGJvZHkuc3VjY2VzcztcbiAgICAgICAgICBlcnIgPSBib2R5LmVycm9yO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIHRocm93IGVycjtcbiAgICAgIH0gZWxzZSBpZiAoaG9vay50cmlnZ2VyTmFtZSA9PT0gJ2JlZm9yZVNhdmUnKSB7XG4gICAgICAgIGlmICh0eXBlb2YgcmVzdWx0ID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgIGRlbGV0ZSByZXN1bHQuY3JlYXRlZEF0O1xuICAgICAgICAgIGRlbGV0ZSByZXN1bHQudXBkYXRlZEF0O1xuICAgICAgICAgIGRlbGV0ZSByZXN1bHQuY2xhc3NOYW1lO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IG9iamVjdDogcmVzdWx0IH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgIH0pO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBIb29rc0NvbnRyb2xsZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUVBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUEwQjtBQUFBO0FBQUE7QUFOMUI7QUFFQTtBQU1BLE1BQU1BLDBCQUEwQixHQUFHLFFBQVE7QUFDM0MsTUFBTUMsVUFBVSxHQUFHO0VBQ2pCQyxJQUFJLEVBQUUsSUFBSUEsYUFBSSxDQUFDQyxLQUFLLENBQUM7SUFBRUMsU0FBUyxFQUFFO0VBQUssQ0FBQyxDQUFDO0VBQ3pDQyxLQUFLLEVBQUUsSUFBSUEsY0FBSyxDQUFDRixLQUFLLENBQUM7SUFBRUMsU0FBUyxFQUFFO0VBQUssQ0FBQztBQUM1QyxDQUFDO0FBRU0sTUFBTUUsZUFBZSxDQUFDO0VBSzNCQyxXQUFXLENBQUNDLGFBQXFCLEVBQUVDLGtCQUFrQixFQUFFQyxVQUFVLEVBQUU7SUFDakUsSUFBSSxDQUFDQyxjQUFjLEdBQUdILGFBQWE7SUFDbkMsSUFBSSxDQUFDSSxXQUFXLEdBQUdGLFVBQVU7SUFDN0IsSUFBSSxDQUFDRyxRQUFRLEdBQUdKLGtCQUFrQjtFQUNwQztFQUVBSyxJQUFJLEdBQUc7SUFDTCxPQUFPLElBQUksQ0FBQ0MsU0FBUyxFQUFFLENBQUNDLElBQUksQ0FBQ0MsS0FBSyxJQUFJO01BQ3BDQSxLQUFLLEdBQUdBLEtBQUssSUFBSSxFQUFFO01BQ25CQSxLQUFLLENBQUNDLE9BQU8sQ0FBQ0MsSUFBSSxJQUFJO1FBQ3BCLElBQUksQ0FBQ0MsaUJBQWlCLENBQUNELElBQUksQ0FBQztNQUM5QixDQUFDLENBQUM7SUFDSixDQUFDLENBQUM7RUFDSjtFQUVB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
|
|
@@ -4,13 +4,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = exports.LiveQueryController = void 0;
|
|
7
|
-
|
|
8
7
|
var _ParseCloudCodePublisher = require("../LiveQuery/ParseCloudCodePublisher");
|
|
9
|
-
|
|
10
8
|
var _Options = require("../Options");
|
|
11
|
-
|
|
12
9
|
var _triggers = require("./../triggers");
|
|
13
|
-
|
|
14
10
|
class LiveQueryController {
|
|
15
11
|
constructor(config) {
|
|
16
12
|
// If config is empty, we just assume no classs needs to be registered as LiveQuery
|
|
@@ -19,74 +15,59 @@ class LiveQueryController {
|
|
|
19
15
|
} else if (config.classNames instanceof Array) {
|
|
20
16
|
const classNames = config.classNames.map(name => {
|
|
21
17
|
const _name = (0, _triggers.getClassName)(name);
|
|
22
|
-
|
|
23
18
|
return new RegExp(`^${_name}$`);
|
|
24
19
|
});
|
|
25
20
|
this.classNames = new Set(classNames);
|
|
26
21
|
} else {
|
|
27
22
|
throw 'liveQuery.classes should be an array of string';
|
|
28
23
|
}
|
|
29
|
-
|
|
30
24
|
this.liveQueryPublisher = new _ParseCloudCodePublisher.ParseCloudCodePublisher(config);
|
|
31
25
|
}
|
|
32
|
-
|
|
26
|
+
connect() {
|
|
27
|
+
return this.liveQueryPublisher.connect();
|
|
28
|
+
}
|
|
33
29
|
onAfterSave(className, currentObject, originalObject, classLevelPermissions) {
|
|
34
30
|
if (!this.hasLiveQuery(className)) {
|
|
35
31
|
return;
|
|
36
32
|
}
|
|
37
|
-
|
|
38
33
|
const req = this._makePublisherRequest(currentObject, originalObject, classLevelPermissions);
|
|
39
|
-
|
|
40
34
|
this.liveQueryPublisher.onCloudCodeAfterSave(req);
|
|
41
35
|
}
|
|
42
|
-
|
|
43
36
|
onAfterDelete(className, currentObject, originalObject, classLevelPermissions) {
|
|
44
37
|
if (!this.hasLiveQuery(className)) {
|
|
45
38
|
return;
|
|
46
39
|
}
|
|
47
|
-
|
|
48
40
|
const req = this._makePublisherRequest(currentObject, originalObject, classLevelPermissions);
|
|
49
|
-
|
|
50
41
|
this.liveQueryPublisher.onCloudCodeAfterDelete(req);
|
|
51
42
|
}
|
|
52
|
-
|
|
53
43
|
hasLiveQuery(className) {
|
|
54
44
|
for (const name of this.classNames) {
|
|
55
45
|
if (name.test(className)) {
|
|
56
46
|
return true;
|
|
57
47
|
}
|
|
58
48
|
}
|
|
59
|
-
|
|
60
49
|
return false;
|
|
61
50
|
}
|
|
62
|
-
|
|
63
51
|
clearCachedRoles(user) {
|
|
64
52
|
if (!user) {
|
|
65
53
|
return;
|
|
66
54
|
}
|
|
67
|
-
|
|
68
55
|
return this.liveQueryPublisher.onClearCachedRoles(user);
|
|
69
56
|
}
|
|
70
|
-
|
|
71
57
|
_makePublisherRequest(currentObject, originalObject, classLevelPermissions) {
|
|
72
58
|
const req = {
|
|
73
59
|
object: currentObject
|
|
74
60
|
};
|
|
75
|
-
|
|
76
61
|
if (currentObject) {
|
|
77
62
|
req.original = originalObject;
|
|
78
63
|
}
|
|
79
|
-
|
|
80
64
|
if (classLevelPermissions) {
|
|
81
65
|
req.classLevelPermissions = classLevelPermissions;
|
|
82
66
|
}
|
|
83
|
-
|
|
84
67
|
return req;
|
|
85
68
|
}
|
|
86
|
-
|
|
87
69
|
}
|
|
88
|
-
|
|
89
70
|
exports.LiveQueryController = LiveQueryController;
|
|
90
71
|
var _default = LiveQueryController;
|
|
91
72
|
exports.default = _default;
|
|
92
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
73
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJMaXZlUXVlcnlDb250cm9sbGVyIiwiY29uc3RydWN0b3IiLCJjb25maWciLCJjbGFzc05hbWVzIiwiU2V0IiwiQXJyYXkiLCJtYXAiLCJuYW1lIiwiX25hbWUiLCJnZXRDbGFzc05hbWUiLCJSZWdFeHAiLCJsaXZlUXVlcnlQdWJsaXNoZXIiLCJQYXJzZUNsb3VkQ29kZVB1Ymxpc2hlciIsImNvbm5lY3QiLCJvbkFmdGVyU2F2ZSIsImNsYXNzTmFtZSIsImN1cnJlbnRPYmplY3QiLCJvcmlnaW5hbE9iamVjdCIsImNsYXNzTGV2ZWxQZXJtaXNzaW9ucyIsImhhc0xpdmVRdWVyeSIsInJlcSIsIl9tYWtlUHVibGlzaGVyUmVxdWVzdCIsIm9uQ2xvdWRDb2RlQWZ0ZXJTYXZlIiwib25BZnRlckRlbGV0ZSIsIm9uQ2xvdWRDb2RlQWZ0ZXJEZWxldGUiLCJ0ZXN0IiwiY2xlYXJDYWNoZWRSb2xlcyIsInVzZXIiLCJvbkNsZWFyQ2FjaGVkUm9sZXMiLCJvYmplY3QiLCJvcmlnaW5hbCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9Db250cm9sbGVycy9MaXZlUXVlcnlDb250cm9sbGVyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBhcnNlQ2xvdWRDb2RlUHVibGlzaGVyIH0gZnJvbSAnLi4vTGl2ZVF1ZXJ5L1BhcnNlQ2xvdWRDb2RlUHVibGlzaGVyJztcbmltcG9ydCB7IExpdmVRdWVyeU9wdGlvbnMgfSBmcm9tICcuLi9PcHRpb25zJztcbmltcG9ydCB7IGdldENsYXNzTmFtZSB9IGZyb20gJy4vLi4vdHJpZ2dlcnMnO1xuZXhwb3J0IGNsYXNzIExpdmVRdWVyeUNvbnRyb2xsZXIge1xuICBjbGFzc05hbWVzOiBhbnk7XG4gIGxpdmVRdWVyeVB1Ymxpc2hlcjogYW55O1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogP0xpdmVRdWVyeU9wdGlvbnMpIHtcbiAgICAvLyBJZiBjb25maWcgaXMgZW1wdHksIHdlIGp1c3QgYXNzdW1lIG5vIGNsYXNzcyBuZWVkcyB0byBiZSByZWdpc3RlcmVkIGFzIExpdmVRdWVyeVxuICAgIGlmICghY29uZmlnIHx8ICFjb25maWcuY2xhc3NOYW1lcykge1xuICAgICAgdGhpcy5jbGFzc05hbWVzID0gbmV3IFNldCgpO1xuICAgIH0gZWxzZSBpZiAoY29uZmlnLmNsYXNzTmFtZXMgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgY29uc3QgY2xhc3NOYW1lcyA9IGNvbmZpZy5jbGFzc05hbWVzLm1hcChuYW1lID0+IHtcbiAgICAgICAgY29uc3QgX25hbWUgPSBnZXRDbGFzc05hbWUobmFtZSk7XG4gICAgICAgIHJldHVybiBuZXcgUmVnRXhwKGBeJHtfbmFtZX0kYCk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuY2xhc3NOYW1lcyA9IG5ldyBTZXQoY2xhc3NOYW1lcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93ICdsaXZlUXVlcnkuY2xhc3NlcyBzaG91bGQgYmUgYW4gYXJyYXkgb2Ygc3RyaW5nJztcbiAgICB9XG4gICAgdGhpcy5saXZlUXVlcnlQdWJsaXNoZXIgPSBuZXcgUGFyc2VDbG91ZENvZGVQdWJsaXNoZXIoY29uZmlnKTtcbiAgfVxuXG4gIGNvbm5lY3QoKSB7XG4gICAgcmV0dXJuIHRoaXMubGl2ZVF1ZXJ5UHVibGlzaGVyLmNvbm5lY3QoKTtcbiAgfVxuXG4gIG9uQWZ0ZXJTYXZlKFxuICAgIGNsYXNzTmFtZTogc3RyaW5nLFxuICAgIGN1cnJlbnRPYmplY3Q6IGFueSxcbiAgICBvcmlnaW5hbE9iamVjdDogYW55LFxuICAgIGNsYXNzTGV2ZWxQZXJtaXNzaW9uczogP2FueVxuICApIHtcbiAgICBpZiAoIXRoaXMuaGFzTGl2ZVF1ZXJ5KGNsYXNzTmFtZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgcmVxID0gdGhpcy5fbWFrZVB1Ymxpc2hlclJlcXVlc3QoY3VycmVudE9iamVjdCwgb3JpZ2luYWxPYmplY3QsIGNsYXNzTGV2ZWxQZXJtaXNzaW9ucyk7XG4gICAgdGhpcy5saXZlUXVlcnlQdWJsaXNoZXIub25DbG91ZENvZGVBZnRlclNhdmUocmVxKTtcbiAgfVxuXG4gIG9uQWZ0ZXJEZWxldGUoXG4gICAgY2xhc3NOYW1lOiBzdHJpbmcsXG4gICAgY3VycmVudE9iamVjdDogYW55LFxuICAgIG9yaWdpbmFsT2JqZWN0OiBhbnksXG4gICAgY2xhc3NMZXZlbFBlcm1pc3Npb25zOiBhbnlcbiAgKSB7XG4gICAgaWYgKCF0aGlzLmhhc0xpdmVRdWVyeShjbGFzc05hbWUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHJlcSA9IHRoaXMuX21ha2VQdWJsaXNoZXJSZXF1ZXN0KGN1cnJlbnRPYmplY3QsIG9yaWdpbmFsT2JqZWN0LCBjbGFzc0xldmVsUGVybWlzc2lvbnMpO1xuICAgIHRoaXMubGl2ZVF1ZXJ5UHVibGlzaGVyLm9uQ2xvdWRDb2RlQWZ0ZXJEZWxldGUocmVxKTtcbiAgfVxuXG4gIGhhc0xpdmVRdWVyeShjbGFzc05hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGZvciAoY29uc3QgbmFtZSBvZiB0aGlzLmNsYXNzTmFtZXMpIHtcbiAgICAgIGlmIChuYW1lLnRlc3QoY2xhc3NOYW1lKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY2xlYXJDYWNoZWRSb2xlcyh1c2VyOiBhbnkpIHtcbiAgICBpZiAoIXVzZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMubGl2ZVF1ZXJ5UHVibGlzaGVyLm9uQ2xlYXJDYWNoZWRSb2xlcyh1c2VyKTtcbiAgfVxuXG4gIF9tYWtlUHVibGlzaGVyUmVxdWVzdChjdXJyZW50T2JqZWN0OiBhbnksIG9yaWdpbmFsT2JqZWN0OiBhbnksIGNsYXNzTGV2ZWxQZXJtaXNzaW9uczogP2FueSk6IGFueSB7XG4gICAgY29uc3QgcmVxID0ge1xuICAgICAgb2JqZWN0OiBjdXJyZW50T2JqZWN0LFxuICAgIH07XG4gICAgaWYgKGN1cnJlbnRPYmplY3QpIHtcbiAgICAgIHJlcS5vcmlnaW5hbCA9IG9yaWdpbmFsT2JqZWN0O1xuICAgIH1cbiAgICBpZiAoY2xhc3NMZXZlbFBlcm1pc3Npb25zKSB7XG4gICAgICByZXEuY2xhc3NMZXZlbFBlcm1pc3Npb25zID0gY2xhc3NMZXZlbFBlcm1pc3Npb25zO1xuICAgIH1cbiAgICByZXR1cm4gcmVxO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IExpdmVRdWVyeUNvbnRyb2xsZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNPLE1BQU1BLG1CQUFtQixDQUFDO0VBSS9CQyxXQUFXLENBQUNDLE1BQXlCLEVBQUU7SUFDckM7SUFDQSxJQUFJLENBQUNBLE1BQU0sSUFBSSxDQUFDQSxNQUFNLENBQUNDLFVBQVUsRUFBRTtNQUNqQyxJQUFJLENBQUNBLFVBQVUsR0FBRyxJQUFJQyxHQUFHLEVBQUU7SUFDN0IsQ0FBQyxNQUFNLElBQUlGLE1BQU0sQ0FBQ0MsVUFBVSxZQUFZRSxLQUFLLEVBQUU7TUFDN0MsTUFBTUYsVUFBVSxHQUFHRCxNQUFNLENBQUNDLFVBQVUsQ0FBQ0csR0FBRyxDQUFDQyxJQUFJLElBQUk7UUFDL0MsTUFBTUMsS0FBSyxHQUFHLElBQUFDLHNCQUFZLEVBQUNGLElBQUksQ0FBQztRQUNoQyxPQUFPLElBQUlHLE1BQU0sQ0FBRSxJQUFHRixLQUFNLEdBQUUsQ0FBQztNQUNqQyxDQUFDLENBQUM7TUFDRixJQUFJLENBQUNMLFVBQVUsR0FBRyxJQUFJQyxHQUFHLENBQUNELFVBQVUsQ0FBQztJQUN2QyxDQUFDLE1BQU07TUFDTCxNQUFNLGdEQUFnRDtJQUN4RDtJQUNBLElBQUksQ0FBQ1Esa0JBQWtCLEdBQUcsSUFBSUMsZ0RBQXVCLENBQUNWLE1BQU0sQ0FBQztFQUMvRDtFQUVBVyxPQUFPLEdBQUc7SUFDUixPQUFPLElBQUksQ0FBQ0Ysa0JBQWtCLENBQUNFLE9BQU8sRUFBRTtFQUMxQztFQUVBQyxXQUFXLENBQ1RDLFNBQWlCLEVBQ2pCQyxhQUFrQixFQUNsQkMsY0FBbUIsRUFDbkJDLHFCQUEyQixFQUMzQjtJQUNBLElBQUksQ0FBQyxJQUFJLENBQUNDLFlBQVksQ0FBQ0osU0FBUyxDQUFDLEVBQUU7TUFDakM7SUFDRjtJQUNBLE1BQU1LLEdBQUcsR0FBRyxJQUFJLENBQUNDLHFCQUFxQixDQUFDTCxhQUFhLEVBQUVDLGNBQWMsRUFBRUMscUJBQXFCLENBQUM7SUFDNUYsSUFBSSxDQUFDUCxrQkFBa0IsQ0FBQ1csb0JBQW9CLENBQUNGLEdBQUcsQ0FBQztFQUNuRDtFQUVBRyxhQUFhLENBQ1hSLFNBQWlCLEVBQ2pCQyxhQUFrQixFQUNsQkMsY0FBbUIsRUFDbkJDLHFCQUEwQixFQUMxQjtJQUNBLElBQUksQ0FBQyxJQUFJLENBQUNDLFlBQVksQ0FBQ0osU0FBUyxDQUFDLEVBQUU7TUFDakM7SUFDRjtJQUNBLE1BQU1LLEdBQUcsR0FBRyxJQUFJLENBQUNDLHFCQUFxQixDQUFDTCxhQUFhLEVBQUVDLGNBQWMsRUFBRUMscUJBQXFCLENBQUM7SUFDNUYsSUFBSSxDQUFDUCxrQkFBa0IsQ0FBQ2Esc0JBQXNCLENBQUNKLEdBQUcsQ0FBQztFQUNyRDtFQUVBRCxZQUFZLENBQUNKLFNBQWlCLEVBQVc7SUFDdkMsS0FBSyxNQUFNUixJQUFJLElBQUksSUFBSSxDQUFDSixVQUFVLEVBQUU7TUFDbEMsSUFBSUksSUFBSSxDQUFDa0IsSUFBSSxDQUFDVixTQUFTLENBQUMsRUFBRTtRQUN4QixPQUFPLElBQUk7TUFDYjtJQUNGO0lBQ0EsT0FBTyxLQUFLO0VBQ2Q7RUFFQVcsZ0JBQWdCLENBQUNDLElBQVMsRUFBRTtJQUMxQixJQUFJLENBQUNBLElBQUksRUFBRTtNQUNUO0lBQ0Y7SUFDQSxPQUFPLElBQUksQ0FBQ2hCLGtCQUFrQixDQUFDaUIsa0JBQWtCLENBQUNELElBQUksQ0FBQztFQUN6RDtFQUVBTixxQkFBcUIsQ0FBQ0wsYUFBa0IsRUFBRUMsY0FBbUIsRUFBRUMscUJBQTJCLEVBQU87SUFDL0YsTUFBTUUsR0FBRyxHQUFHO01BQ1ZTLE1BQU0sRUFBRWI7SUFDVixDQUFDO0lBQ0QsSUFBSUEsYUFBYSxFQUFFO01BQ2pCSSxHQUFHLENBQUNVLFFBQVEsR0FBR2IsY0FBYztJQUMvQjtJQUNBLElBQUlDLHFCQUFxQixFQUFFO01BQ3pCRSxHQUFHLENBQUNGLHFCQUFxQixHQUFHQSxxQkFBcUI7SUFDbkQ7SUFDQSxPQUFPRSxHQUFHO0VBQ1o7QUFDRjtBQUFDO0FBQUEsZUFFY3BCLG1CQUFtQjtBQUFBIn0=
|