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
package/lib/LiveQuery/Client.js
CHANGED
|
@@ -4,13 +4,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.Client = void 0;
|
|
7
|
-
|
|
8
7
|
var _logger = _interopRequireDefault(require("../logger"));
|
|
9
|
-
|
|
10
8
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
-
|
|
12
9
|
const dafaultFields = ['className', 'objectId', 'updatedAt', 'createdAt', 'ACL'];
|
|
13
|
-
|
|
14
10
|
class Client {
|
|
15
11
|
constructor(id, parseWebSocket, hasMasterKey = false, sessionToken, installationId) {
|
|
16
12
|
this.id = id;
|
|
@@ -29,13 +25,10 @@ class Client {
|
|
|
29
25
|
this.pushDelete = this._pushEvent('delete');
|
|
30
26
|
this.pushLeave = this._pushEvent('leave');
|
|
31
27
|
}
|
|
32
|
-
|
|
33
28
|
static pushResponse(parseWebSocket, message) {
|
|
34
29
|
_logger.default.verbose('Push Response : %j', message);
|
|
35
|
-
|
|
36
30
|
parseWebSocket.send(message);
|
|
37
31
|
}
|
|
38
|
-
|
|
39
32
|
static pushError(parseWebSocket, code, error, reconnect = true, requestId = null) {
|
|
40
33
|
Client.pushResponse(parseWebSocket, JSON.stringify({
|
|
41
34
|
op: 'error',
|
|
@@ -45,19 +38,15 @@ class Client {
|
|
|
45
38
|
requestId
|
|
46
39
|
}));
|
|
47
40
|
}
|
|
48
|
-
|
|
49
41
|
addSubscriptionInfo(requestId, subscriptionInfo) {
|
|
50
42
|
this.subscriptionInfos.set(requestId, subscriptionInfo);
|
|
51
43
|
}
|
|
52
|
-
|
|
53
44
|
getSubscriptionInfo(requestId) {
|
|
54
45
|
return this.subscriptionInfos.get(requestId);
|
|
55
46
|
}
|
|
56
|
-
|
|
57
47
|
deleteSubscriptionInfo(requestId) {
|
|
58
48
|
return this.subscriptionInfos.delete(requestId);
|
|
59
49
|
}
|
|
60
|
-
|
|
61
50
|
_pushEvent(type) {
|
|
62
51
|
return function (subscriptionId, parseObjectJSON, parseOriginalObjectJSON) {
|
|
63
52
|
const response = {
|
|
@@ -65,50 +54,37 @@ class Client {
|
|
|
65
54
|
clientId: this.id,
|
|
66
55
|
installationId: this.installationId
|
|
67
56
|
};
|
|
68
|
-
|
|
69
57
|
if (typeof subscriptionId !== 'undefined') {
|
|
70
58
|
response['requestId'] = subscriptionId;
|
|
71
59
|
}
|
|
72
|
-
|
|
73
60
|
if (typeof parseObjectJSON !== 'undefined') {
|
|
74
61
|
let fields;
|
|
75
|
-
|
|
76
62
|
if (this.subscriptionInfos.has(subscriptionId)) {
|
|
77
63
|
fields = this.subscriptionInfos.get(subscriptionId).fields;
|
|
78
64
|
}
|
|
79
|
-
|
|
80
65
|
response['object'] = this._toJSONWithFields(parseObjectJSON, fields);
|
|
81
|
-
|
|
82
66
|
if (parseOriginalObjectJSON) {
|
|
83
67
|
response['original'] = this._toJSONWithFields(parseOriginalObjectJSON, fields);
|
|
84
68
|
}
|
|
85
69
|
}
|
|
86
|
-
|
|
87
70
|
Client.pushResponse(this.parseWebSocket, JSON.stringify(response));
|
|
88
71
|
};
|
|
89
72
|
}
|
|
90
|
-
|
|
91
73
|
_toJSONWithFields(parseObjectJSON, fields) {
|
|
92
74
|
if (!fields) {
|
|
93
75
|
return parseObjectJSON;
|
|
94
76
|
}
|
|
95
|
-
|
|
96
77
|
const limitedParseObject = {};
|
|
97
|
-
|
|
98
78
|
for (const field of dafaultFields) {
|
|
99
79
|
limitedParseObject[field] = parseObjectJSON[field];
|
|
100
80
|
}
|
|
101
|
-
|
|
102
81
|
for (const field of fields) {
|
|
103
82
|
if (field in parseObjectJSON) {
|
|
104
83
|
limitedParseObject[field] = parseObjectJSON[field];
|
|
105
84
|
}
|
|
106
85
|
}
|
|
107
|
-
|
|
108
86
|
return limitedParseObject;
|
|
109
87
|
}
|
|
110
|
-
|
|
111
88
|
}
|
|
112
|
-
|
|
113
89
|
exports.Client = Client;
|
|
114
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
90
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkYWZhdWx0RmllbGRzIiwiQ2xpZW50IiwiY29uc3RydWN0b3IiLCJpZCIsInBhcnNlV2ViU29ja2V0IiwiaGFzTWFzdGVyS2V5Iiwic2Vzc2lvblRva2VuIiwiaW5zdGFsbGF0aW9uSWQiLCJyb2xlcyIsInN1YnNjcmlwdGlvbkluZm9zIiwiTWFwIiwicHVzaENvbm5lY3QiLCJfcHVzaEV2ZW50IiwicHVzaFN1YnNjcmliZSIsInB1c2hVbnN1YnNjcmliZSIsInB1c2hDcmVhdGUiLCJwdXNoRW50ZXIiLCJwdXNoVXBkYXRlIiwicHVzaERlbGV0ZSIsInB1c2hMZWF2ZSIsInB1c2hSZXNwb25zZSIsIm1lc3NhZ2UiLCJsb2dnZXIiLCJ2ZXJib3NlIiwic2VuZCIsInB1c2hFcnJvciIsImNvZGUiLCJlcnJvciIsInJlY29ubmVjdCIsInJlcXVlc3RJZCIsIkpTT04iLCJzdHJpbmdpZnkiLCJvcCIsImFkZFN1YnNjcmlwdGlvbkluZm8iLCJzdWJzY3JpcHRpb25JbmZvIiwic2V0IiwiZ2V0U3Vic2NyaXB0aW9uSW5mbyIsImdldCIsImRlbGV0ZVN1YnNjcmlwdGlvbkluZm8iLCJkZWxldGUiLCJ0eXBlIiwic3Vic2NyaXB0aW9uSWQiLCJwYXJzZU9iamVjdEpTT04iLCJwYXJzZU9yaWdpbmFsT2JqZWN0SlNPTiIsInJlc3BvbnNlIiwiY2xpZW50SWQiLCJmaWVsZHMiLCJoYXMiLCJfdG9KU09OV2l0aEZpZWxkcyIsImxpbWl0ZWRQYXJzZU9iamVjdCIsImZpZWxkIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL0xpdmVRdWVyeS9DbGllbnQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGxvZ2dlciBmcm9tICcuLi9sb2dnZXInO1xuXG5pbXBvcnQgdHlwZSB7IEZsYXR0ZW5lZE9iamVjdERhdGEgfSBmcm9tICcuL1N1YnNjcmlwdGlvbic7XG5leHBvcnQgdHlwZSBNZXNzYWdlID0geyBbYXR0cjogc3RyaW5nXTogYW55IH07XG5cbmNvbnN0IGRhZmF1bHRGaWVsZHMgPSBbJ2NsYXNzTmFtZScsICdvYmplY3RJZCcsICd1cGRhdGVkQXQnLCAnY3JlYXRlZEF0JywgJ0FDTCddO1xuXG5jbGFzcyBDbGllbnQge1xuICBpZDogbnVtYmVyO1xuICBwYXJzZVdlYlNvY2tldDogYW55O1xuICBoYXNNYXN0ZXJLZXk6IGJvb2xlYW47XG4gIHNlc3Npb25Ub2tlbjogc3RyaW5nO1xuICBpbnN0YWxsYXRpb25JZDogc3RyaW5nO1xuICB1c2VySWQ6IHN0cmluZztcbiAgcm9sZXM6IEFycmF5PHN0cmluZz47XG4gIHN1YnNjcmlwdGlvbkluZm9zOiBPYmplY3Q7XG4gIHB1c2hDb25uZWN0OiBGdW5jdGlvbjtcbiAgcHVzaFN1YnNjcmliZTogRnVuY3Rpb247XG4gIHB1c2hVbnN1YnNjcmliZTogRnVuY3Rpb247XG4gIHB1c2hDcmVhdGU6IEZ1bmN0aW9uO1xuICBwdXNoRW50ZXI6IEZ1bmN0aW9uO1xuICBwdXNoVXBkYXRlOiBGdW5jdGlvbjtcbiAgcHVzaERlbGV0ZTogRnVuY3Rpb247XG4gIHB1c2hMZWF2ZTogRnVuY3Rpb247XG5cbiAgY29uc3RydWN0b3IoXG4gICAgaWQ6IG51bWJlcixcbiAgICBwYXJzZVdlYlNvY2tldDogYW55LFxuICAgIGhhc01hc3RlcktleTogYm9vbGVhbiA9IGZhbHNlLFxuICAgIHNlc3Npb25Ub2tlbjogc3RyaW5nLFxuICAgIGluc3RhbGxhdGlvbklkOiBzdHJpbmdcbiAgKSB7XG4gICAgdGhpcy5pZCA9IGlkO1xuICAgIHRoaXMucGFyc2VXZWJTb2NrZXQgPSBwYXJzZVdlYlNvY2tldDtcbiAgICB0aGlzLmhhc01hc3RlcktleSA9IGhhc01hc3RlcktleTtcbiAgICB0aGlzLnNlc3Npb25Ub2tlbiA9IHNlc3Npb25Ub2tlbjtcbiAgICB0aGlzLmluc3RhbGxhdGlvbklkID0gaW5zdGFsbGF0aW9uSWQ7XG4gICAgdGhpcy5yb2xlcyA9IFtdO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uSW5mb3MgPSBuZXcgTWFwKCk7XG4gICAgdGhpcy5wdXNoQ29ubmVjdCA9IHRoaXMuX3B1c2hFdmVudCgnY29ubmVjdGVkJyk7XG4gICAgdGhpcy5wdXNoU3Vic2NyaWJlID0gdGhpcy5fcHVzaEV2ZW50KCdzdWJzY3JpYmVkJyk7XG4gICAgdGhpcy5wdXNoVW5zdWJzY3JpYmUgPSB0aGlzLl9wdXNoRXZlbnQoJ3Vuc3Vic2NyaWJlZCcpO1xuICAgIHRoaXMucHVzaENyZWF0ZSA9IHRoaXMuX3B1c2hFdmVudCgnY3JlYXRlJyk7XG4gICAgdGhpcy5wdXNoRW50ZXIgPSB0aGlzLl9wdXNoRXZlbnQoJ2VudGVyJyk7XG4gICAgdGhpcy5wdXNoVXBkYXRlID0gdGhpcy5fcHVzaEV2ZW50KCd1cGRhdGUnKTtcbiAgICB0aGlzLnB1c2hEZWxldGUgPSB0aGlzLl9wdXNoRXZlbnQoJ2RlbGV0ZScpO1xuICAgIHRoaXMucHVzaExlYXZlID0gdGhpcy5fcHVzaEV2ZW50KCdsZWF2ZScpO1xuICB9XG5cbiAgc3RhdGljIHB1c2hSZXNwb25zZShwYXJzZVdlYlNvY2tldDogYW55LCBtZXNzYWdlOiBNZXNzYWdlKTogdm9pZCB7XG4gICAgbG9nZ2VyLnZlcmJvc2UoJ1B1c2ggUmVzcG9uc2UgOiAlaicsIG1lc3NhZ2UpO1xuICAgIHBhcnNlV2ViU29ja2V0LnNlbmQobWVzc2FnZSk7XG4gIH1cblxuICBzdGF0aWMgcHVzaEVycm9yKFxuICAgIHBhcnNlV2ViU29ja2V0OiBhbnksXG4gICAgY29kZTogbnVtYmVyLFxuICAgIGVycm9yOiBzdHJpbmcsXG4gICAgcmVjb25uZWN0OiBib29sZWFuID0gdHJ1ZSxcbiAgICByZXF1ZXN0SWQ6IG51bWJlciB8IHZvaWQgPSBudWxsXG4gICk6IHZvaWQge1xuICAgIENsaWVudC5wdXNoUmVzcG9uc2UoXG4gICAgICBwYXJzZVdlYlNvY2tldCxcbiAgICAgIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgb3A6ICdlcnJvcicsXG4gICAgICAgIGVycm9yLFxuICAgICAgICBjb2RlLFxuICAgICAgICByZWNvbm5lY3QsXG4gICAgICAgIHJlcXVlc3RJZCxcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIGFkZFN1YnNjcmlwdGlvbkluZm8ocmVxdWVzdElkOiBudW1iZXIsIHN1YnNjcmlwdGlvbkluZm86IGFueSk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uSW5mb3Muc2V0KHJlcXVlc3RJZCwgc3Vic2NyaXB0aW9uSW5mbyk7XG4gIH1cblxuICBnZXRTdWJzY3JpcHRpb25JbmZvKHJlcXVlc3RJZDogbnVtYmVyKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5zdWJzY3JpcHRpb25JbmZvcy5nZXQocmVxdWVzdElkKTtcbiAgfVxuXG4gIGRlbGV0ZVN1YnNjcmlwdGlvbkluZm8ocmVxdWVzdElkOiBudW1iZXIpOiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5zdWJzY3JpcHRpb25JbmZvcy5kZWxldGUocmVxdWVzdElkKTtcbiAgfVxuXG4gIF9wdXNoRXZlbnQodHlwZTogc3RyaW5nKTogRnVuY3Rpb24ge1xuICAgIHJldHVybiBmdW5jdGlvbiAoXG4gICAgICBzdWJzY3JpcHRpb25JZDogbnVtYmVyLFxuICAgICAgcGFyc2VPYmplY3RKU09OOiBhbnksXG4gICAgICBwYXJzZU9yaWdpbmFsT2JqZWN0SlNPTjogYW55XG4gICAgKTogdm9pZCB7XG4gICAgICBjb25zdCByZXNwb25zZTogTWVzc2FnZSA9IHtcbiAgICAgICAgb3A6IHR5cGUsXG4gICAgICAgIGNsaWVudElkOiB0aGlzLmlkLFxuICAgICAgICBpbnN0YWxsYXRpb25JZDogdGhpcy5pbnN0YWxsYXRpb25JZCxcbiAgICAgIH07XG4gICAgICBpZiAodHlwZW9mIHN1YnNjcmlwdGlvbklkICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICByZXNwb25zZVsncmVxdWVzdElkJ10gPSBzdWJzY3JpcHRpb25JZDtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlb2YgcGFyc2VPYmplY3RKU09OICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBsZXQgZmllbGRzO1xuICAgICAgICBpZiAodGhpcy5zdWJzY3JpcHRpb25JbmZvcy5oYXMoc3Vic2NyaXB0aW9uSWQpKSB7XG4gICAgICAgICAgZmllbGRzID0gdGhpcy5zdWJzY3JpcHRpb25JbmZvcy5nZXQoc3Vic2NyaXB0aW9uSWQpLmZpZWxkcztcbiAgICAgICAgfVxuICAgICAgICByZXNwb25zZVsnb2JqZWN0J10gPSB0aGlzLl90b0pTT05XaXRoRmllbGRzKHBhcnNlT2JqZWN0SlNPTiwgZmllbGRzKTtcbiAgICAgICAgaWYgKHBhcnNlT3JpZ2luYWxPYmplY3RKU09OKSB7XG4gICAgICAgICAgcmVzcG9uc2VbJ29yaWdpbmFsJ10gPSB0aGlzLl90b0pTT05XaXRoRmllbGRzKHBhcnNlT3JpZ2luYWxPYmplY3RKU09OLCBmaWVsZHMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBDbGllbnQucHVzaFJlc3BvbnNlKHRoaXMucGFyc2VXZWJTb2NrZXQsIEpTT04uc3RyaW5naWZ5KHJlc3BvbnNlKSk7XG4gICAgfTtcbiAgfVxuXG4gIF90b0pTT05XaXRoRmllbGRzKHBhcnNlT2JqZWN0SlNPTjogYW55LCBmaWVsZHM6IGFueSk6IEZsYXR0ZW5lZE9iamVjdERhdGEge1xuICAgIGlmICghZmllbGRzKSB7XG4gICAgICByZXR1cm4gcGFyc2VPYmplY3RKU09OO1xuICAgIH1cbiAgICBjb25zdCBsaW1pdGVkUGFyc2VPYmplY3QgPSB7fTtcbiAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIGRhZmF1bHRGaWVsZHMpIHtcbiAgICAgIGxpbWl0ZWRQYXJzZU9iamVjdFtmaWVsZF0gPSBwYXJzZU9iamVjdEpTT05bZmllbGRdO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIGZpZWxkcykge1xuICAgICAgaWYgKGZpZWxkIGluIHBhcnNlT2JqZWN0SlNPTikge1xuICAgICAgICBsaW1pdGVkUGFyc2VPYmplY3RbZmllbGRdID0gcGFyc2VPYmplY3RKU09OW2ZpZWxkXTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJu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
|
package/lib/LiveQuery/Id.js
CHANGED
|
@@ -5,22 +5,16 @@ class Id {
|
|
|
5
5
|
this.className = className;
|
|
6
6
|
this.objectId = objectId;
|
|
7
7
|
}
|
|
8
|
-
|
|
9
8
|
toString() {
|
|
10
9
|
return this.className + ':' + this.objectId;
|
|
11
10
|
}
|
|
12
|
-
|
|
13
11
|
static fromString(str) {
|
|
14
12
|
var split = str.split(':');
|
|
15
|
-
|
|
16
13
|
if (split.length !== 2) {
|
|
17
14
|
throw new TypeError('Cannot create Id object from this string');
|
|
18
15
|
}
|
|
19
|
-
|
|
20
16
|
return new Id(split[0], split[1]);
|
|
21
17
|
}
|
|
22
|
-
|
|
23
18
|
}
|
|
24
|
-
|
|
25
19
|
module.exports = Id;
|
|
26
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
20
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJJZCIsImNvbnN0cnVjdG9yIiwiY2xhc3NOYW1lIiwib2JqZWN0SWQiLCJ0b1N0cmluZyIsImZyb21TdHJpbmciLCJzdHIiLCJzcGxpdCIsImxlbmd0aCIsIlR5cGVFcnJvciIsIm1vZHVsZSIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvTGl2ZVF1ZXJ5L0lkLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNsYXNzIElkIHtcbiAgY2xhc3NOYW1lOiBzdHJpbmc7XG4gIG9iamVjdElkOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoY2xhc3NOYW1lOiBzdHJpbmcsIG9iamVjdElkOiBzdHJpbmcpIHtcbiAgICB0aGlzLmNsYXNzTmFtZSA9IGNsYXNzTmFtZTtcbiAgICB0aGlzLm9iamVjdElkID0gb2JqZWN0SWQ7XG4gIH1cbiAgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jbGFzc05hbWUgKyAnOicgKyB0aGlzLm9iamVjdElkO1xuICB9XG5cbiAgc3RhdGljIGZyb21TdHJpbmcoc3RyOiBzdHJpbmcpIHtcbiAgICB2YXIgc3BsaXQgPSBzdHIuc3BsaXQoJzonKTtcbiAgICBpZiAoc3BsaXQubGVuZ3RoICE9PSAyKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdDYW5ub3QgY3JlYXRlIElkIG9iamVjdCBmcm9tIHRoaXMgc3RyaW5nJyk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgSWQoc3BsaXRbMF0sIHNwbGl0WzFdKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IElkO1xuIl0sIm1hcHBpbmdzIjoiOztBQUFBLE1BQU1BLEVBQUUsQ0FBQztFQUlQQyxXQUFXLENBQUNDLFNBQWlCLEVBQUVDLFFBQWdCLEVBQUU7SUFDL0MsSUFBSSxDQUFDRCxTQUFTLEdBQUdBLFNBQVM7SUFDMUIsSUFBSSxDQUFDQyxRQUFRLEdBQUdBLFFBQVE7RUFDMUI7RUFDQUMsUUFBUSxHQUFXO0lBQ2pCLE9BQU8sSUFBSSxDQUFDRixTQUFTLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQ0MsUUFBUTtFQUM3QztFQUVBLE9BQU9FLFVBQVUsQ0FBQ0MsR0FBVyxFQUFFO0lBQzdCLElBQUlDLEtBQUssR0FBR0QsR0FBRyxDQUFDQyxLQUFLLENBQUMsR0FBRyxDQUFDO0lBQzFCLElBQUlBLEtBQUssQ0FBQ0MsTUFBTSxLQUFLLENBQUMsRUFBRTtNQUN0QixNQUFNLElBQUlDLFNBQVMsQ0FBQywwQ0FBMEMsQ0FBQztJQUNqRTtJQUNBLE9BQU8sSUFBSVQsRUFBRSxDQUFDTyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUVBLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztFQUNuQztBQUNGO0FBRUFHLE1BQU0sQ0FBQ0MsT0FBTyxHQUFHWCxFQUFFIn0=
|
|
@@ -4,57 +4,51 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.ParseCloudCodePublisher = void 0;
|
|
7
|
-
|
|
8
7
|
var _ParsePubSub = require("./ParsePubSub");
|
|
9
|
-
|
|
10
8
|
var _node = _interopRequireDefault(require("parse/node"));
|
|
11
|
-
|
|
12
9
|
var _logger = _interopRequireDefault(require("../logger"));
|
|
13
|
-
|
|
14
10
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
|
-
|
|
16
11
|
class ParseCloudCodePublisher {
|
|
17
12
|
// config object of the publisher, right now it only contains the redisURL,
|
|
18
13
|
// but we may extend it later.
|
|
19
14
|
constructor(config = {}) {
|
|
20
15
|
this.parsePublisher = _ParsePubSub.ParsePubSub.createPublisher(config);
|
|
21
16
|
}
|
|
22
|
-
|
|
17
|
+
async connect() {
|
|
18
|
+
if (typeof this.parsePublisher.connect === 'function') {
|
|
19
|
+
if (this.parsePublisher.isOpen) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
return Promise.resolve(this.parsePublisher.connect());
|
|
23
|
+
}
|
|
24
|
+
}
|
|
23
25
|
onCloudCodeAfterSave(request) {
|
|
24
26
|
this._onCloudCodeMessage(_node.default.applicationId + 'afterSave', request);
|
|
25
27
|
}
|
|
26
|
-
|
|
27
28
|
onCloudCodeAfterDelete(request) {
|
|
28
29
|
this._onCloudCodeMessage(_node.default.applicationId + 'afterDelete', request);
|
|
29
30
|
}
|
|
30
|
-
|
|
31
31
|
onClearCachedRoles(user) {
|
|
32
32
|
this.parsePublisher.publish(_node.default.applicationId + 'clearCache', JSON.stringify({
|
|
33
33
|
userId: user.id
|
|
34
34
|
}));
|
|
35
|
-
}
|
|
36
|
-
|
|
35
|
+
}
|
|
37
36
|
|
|
37
|
+
// Request is the request object from cloud code functions. request.object is a ParseObject.
|
|
38
38
|
_onCloudCodeMessage(type, request) {
|
|
39
|
-
_logger.default.verbose('Raw request from cloud code current : %j | original : %j', request.object, request.original);
|
|
40
|
-
|
|
41
|
-
|
|
39
|
+
_logger.default.verbose('Raw request from cloud code current : %j | original : %j', request.object, request.original);
|
|
40
|
+
// We need the full JSON which includes className
|
|
42
41
|
const message = {
|
|
43
42
|
currentParseObject: request.object._toFullJSON()
|
|
44
43
|
};
|
|
45
|
-
|
|
46
44
|
if (request.original) {
|
|
47
45
|
message.originalParseObject = request.original._toFullJSON();
|
|
48
46
|
}
|
|
49
|
-
|
|
50
47
|
if (request.classLevelPermissions) {
|
|
51
48
|
message.classLevelPermissions = request.classLevelPermissions;
|
|
52
49
|
}
|
|
53
|
-
|
|
54
50
|
this.parsePublisher.publish(type, JSON.stringify(message));
|
|
55
51
|
}
|
|
56
|
-
|
|
57
52
|
}
|
|
58
|
-
|
|
59
53
|
exports.ParseCloudCodePublisher = ParseCloudCodePublisher;
|
|
60
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
54
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQYXJzZUNsb3VkQ29kZVB1Ymxpc2hlciIsImNvbnN0cnVjdG9yIiwiY29uZmlnIiwicGFyc2VQdWJsaXNoZXIiLCJQYXJzZVB1YlN1YiIsImNyZWF0ZVB1Ymxpc2hlciIsImNvbm5lY3QiLCJpc09wZW4iLCJQcm9taXNlIiwicmVzb2x2ZSIsIm9uQ2xvdWRDb2RlQWZ0ZXJTYXZlIiwicmVxdWVzdCIsIl9vbkNsb3VkQ29kZU1lc3NhZ2UiLCJQYXJzZSIsImFwcGxpY2F0aW9uSWQiLCJvbkNsb3VkQ29kZUFmdGVyRGVsZXRlIiwib25DbGVhckNhY2hlZFJvbGVzIiwidXNlciIsInB1Ymxpc2giLCJKU09OIiwic3RyaW5naWZ5IiwidXNlcklkIiwiaWQiLCJ0eXBlIiwibG9nZ2VyIiwidmVyYm9zZSIsIm9iamVjdCIsIm9yaWdpbmFsIiwibWVzc2FnZSIsImN1cnJlbnRQYXJzZU9iamVjdCIsIl90b0Z1bGxKU09OIiwib3JpZ2luYWxQYXJzZU9iamVjdCIsImNsYXNzTGV2ZWxQZXJtaXNzaW9ucyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9MaXZlUXVlcnkvUGFyc2VDbG91ZENvZGVQdWJsaXNoZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGFyc2VQdWJTdWIgfSBmcm9tICcuL1BhcnNlUHViU3ViJztcbmltcG9ydCBQYXJzZSBmcm9tICdwYXJzZS9ub2RlJztcbmltcG9ydCBsb2dnZXIgZnJvbSAnLi4vbG9nZ2VyJztcblxuY2xhc3MgUGFyc2VDbG91ZENvZGVQdWJsaXNoZXIge1xuICBwYXJzZVB1Ymxpc2hlcjogT2JqZWN0O1xuXG4gIC8vIGNvbmZpZyBvYmplY3Qgb2YgdGhlIHB1Ymxpc2hlciwgcmlnaHQgbm93IGl0IG9ubHkgY29udGFpbnMgdGhlIHJlZGlzVVJMLFxuICAvLyBidXQgd2UgbWF5IGV4dGVuZCBpdCBsYXRlci5cbiAgY29uc3RydWN0b3IoY29uZmlnOiBhbnkgPSB7fSkge1xuICAgIHRoaXMucGFyc2VQdWJsaXNoZXIgPSBQYXJzZVB1YlN1Yi5jcmVhdGVQdWJsaXNoZXIoY29uZmlnKTtcbiAgfVxuXG4gIGFzeW5jIGNvbm5lY3QoKSB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLnBhcnNlUHVibGlzaGVyLmNvbm5lY3QgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGlmICh0aGlzLnBhcnNlUHVibGlzaGVyLmlzT3Blbikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMucGFyc2VQdWJsaXNoZXIuY29ubmVjdCgpKTtcbiAgICB9XG4gIH1cblxuICBvbkNsb3VkQ29kZUFmdGVyU2F2ZShyZXF1ZXN0OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9vbkNsb3VkQ29kZU1lc3NhZ2UoUGFyc2UuYXBwbGljYXRpb25JZCArICdhZnRlclNhdmUnLCByZXF1ZXN0KTtcbiAgfVxuXG4gIG9uQ2xvdWRDb2RlQWZ0ZXJEZWxldGUocmVxdWVzdDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5fb25DbG91ZENvZGVNZXNzYWdlKFBhcnNlLmFwcGxpY2F0aW9uSWQgKyAnYWZ0ZXJEZWxldGUnLCByZXF1ZXN0KTtcbiAgfVxuXG4gIG9uQ2xlYXJDYWNoZWRSb2xlcyh1c2VyOiBQYXJzZS5PYmplY3QpIHtcbiAgICB0aGlzLnBhcnNlUHVibGlzaGVyLnB1Ymxpc2goXG4gICAgICBQYXJzZS5hcHBsaWNhdGlvbklkICsgJ2NsZWFyQ2FjaGUnLFxuICAgICAgSlNPTi5zdHJpbmdpZnkoeyB1c2VySWQ6IHVzZXIuaWQgfSlcbiAgICApO1xuICB9XG5cbiAgLy8gUmVxdWVzdCBpcyB0aGUgcmVxdWVzdCBvYmplY3QgZnJvbSBjbG91ZCBjb2RlIGZ1bmN0aW9ucy4gcmVxdWVzdC5vYmplY3QgaXMgYSBQYXJzZU9iamVjdC5cbiAgX29uQ2xvdWRDb2RlTWVzc2FnZSh0eXBlOiBzdHJpbmcsIHJlcXVlc3Q6IGFueSk6IHZvaWQge1xuICAgIGxvZ2dlci52ZXJib3NlKFxuICAgICAgJ1JhdyByZXF1ZXN0IGZyb20gY2xvdWQgY29kZSBjdXJyZW50IDogJWogfCBvcmlnaW5hbCA6ICVqJyxcbiAgICAgIHJlcXVlc3Qub2JqZWN0LFxuICAgICAgcmVxdWVzdC5vcmlnaW5hbFxuICAgICk7XG4gICAgLy8gV2UgbmVlZCB0aGUgZnVsbCBKU09OIHdoaWNoIGluY2x1ZGVzIGNsYXNzTmFtZVxuICAgIGNvbnN0IG1lc3NhZ2UgPSB7XG4gICAgICBjdXJyZW50UGFyc2VPYmplY3Q6IHJlcXVlc3Qub2JqZWN0Ll90b0Z1bGxKU09OKCksXG4gICAgfTtcbiAgICBpZiAocmVxdWVzdC5vcmlnaW5hbCkge1xuICAgICAgbWVzc2FnZS5vcmlnaW5hbFBhcnNlT2JqZWN0ID0gcmVxdWVzdC5vcmlnaW5hbC5fdG9GdWxsSlNPTigpO1xuICAgIH1cbiAgICBpZiAocmVxdWVzdC5jbGFzc0xldmVsUGVybWlzc2lvbnMpIHtcbiAgICAgIG1lc3NhZ2UuY2xhc3NMZXZlbFBlcm1pc3Npb25zID0gcmVxdWVzdC5jbGFzc0xldmVsUGVybWlzc2lvbnM7XG4gICAgfVxuICAgIHRoaXMucGFyc2VQdWJsaXNoZXIucHVibGlzaCh0eXBlLCBKU09OLnN0cmluZ2lmeShtZXNzYWdlKSk7XG4gIH1cbn1cblxuZXhwb3J0IHsgUGFyc2VDbG91ZENvZGVQdWJsaXNoZXIgfTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQStCO0FBRS9CLE1BQU1BLHVCQUF1QixDQUFDO0VBRzVCO0VBQ0E7RUFDQUMsV0FBVyxDQUFDQyxNQUFXLEdBQUcsQ0FBQyxDQUFDLEVBQUU7SUFDNUIsSUFBSSxDQUFDQyxjQUFjLEdBQUdDLHdCQUFXLENBQUNDLGVBQWUsQ0FBQ0gsTUFBTSxDQUFDO0VBQzNEO0VBRUEsTUFBTUksT0FBTyxHQUFHO0lBQ2QsSUFBSSxPQUFPLElBQUksQ0FBQ0gsY0FBYyxDQUFDRyxPQUFPLEtBQUssVUFBVSxFQUFFO01BQ3JELElBQUksSUFBSSxDQUFDSCxjQUFjLENBQUNJLE1BQU0sRUFBRTtRQUM5QjtNQUNGO01BQ0EsT0FBT0MsT0FBTyxDQUFDQyxPQUFPLENBQUMsSUFBSSxDQUFDTixjQUFjLENBQUNHLE9BQU8sRUFBRSxDQUFDO0lBQ3ZEO0VBQ0Y7RUFFQUksb0JBQW9CLENBQUNDLE9BQVksRUFBUTtJQUN2QyxJQUFJLENBQUNDLG1CQUFtQixDQUFDQyxhQUFLLENBQUNDLGFBQWEsR0FBRyxXQUFXLEVBQUVILE9BQU8sQ0FBQztFQUN0RTtFQUVBSSxzQkFBc0IsQ0FBQ0osT0FBWSxFQUFRO0lBQ3pDLElBQUksQ0FBQ0MsbUJBQW1CLENBQUNDLGFBQUssQ0FBQ0MsYUFBYSxHQUFHLGFBQWEsRUFBRUgsT0FBTyxDQUFDO0VBQ3hFO0VBRUFLLGtCQUFrQixDQUFDQyxJQUFrQixFQUFFO0lBQ3JDLElBQUksQ0FBQ2QsY0FBYyxDQUFDZSxPQUFPLENBQ3pCTCxhQUFLLENBQUNDLGFBQWEsR0FBRyxZQUFZLEVBQ2xDSyxJQUFJLENBQUNDLFNBQVMsQ0FBQztNQUFFQyxNQUFNLEVBQUVKLElBQUksQ0FBQ0s7SUFBRyxDQUFDLENBQUMsQ0FDcEM7RUFDSDs7RUFFQTtFQUNBVixtQkFBbUIsQ0FBQ1csSUFBWSxFQUFFWixPQUFZLEVBQVE7SUFDcERhLGVBQU0sQ0FBQ0MsT0FBTyxDQUNaLDBEQUEwRCxFQUMxRGQsT0FBTyxDQUFDZSxNQUFNLEVBQ2RmLE9BQU8sQ0FBQ2dCLFFBQVEsQ0FDakI7SUFDRDtJQUNBLE1BQU1DLE9BQU8sR0FBRztNQUNkQyxrQkFBa0IsRUFBRWxCLE9BQU8sQ0FBQ2UsTUFBTSxDQUFDSSxXQUFXO0lBQ2hELENBQUM7SUFDRCxJQUFJbkIsT0FBTyxDQUFDZ0IsUUFBUSxFQUFFO01BQ3BCQyxPQUFPLENBQUNHLG1CQUFtQixHQUFHcEIsT0FBTyxDQUFDZ0IsUUFBUSxDQUFDRyxXQUFXLEVBQUU7SUFDOUQ7SUFDQSxJQUFJbkIsT0FBTyxDQUFDcUIscUJBQXFCLEVBQUU7TUFDakNKLE9BQU8sQ0FBQ0kscUJBQXFCLEdBQUdyQixPQUFPLENBQUNxQixxQkFBcUI7SUFDL0Q7SUFDQSxJQUFJLENBQUM3QixjQUFjLENBQUNlLE9BQU8sQ0FBQ0ssSUFBSSxFQUFFSixJQUFJLENBQUNDLFNBQVMsQ0FBQ1EsT0FBTyxDQUFDLENBQUM7RUFDNUQ7QUFDRjtBQUFDIn0=
|