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/Push/PushWorker.js
CHANGED
|
@@ -4,35 +4,20 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = exports.PushWorker = void 0;
|
|
7
|
-
|
|
8
7
|
var _deepcopy = _interopRequireDefault(require("deepcopy"));
|
|
9
|
-
|
|
10
8
|
var _AdaptableController = _interopRequireDefault(require("../Controllers/AdaptableController"));
|
|
11
|
-
|
|
12
9
|
var _Auth = require("../Auth");
|
|
13
|
-
|
|
14
10
|
var _Config = _interopRequireDefault(require("../Config"));
|
|
15
|
-
|
|
16
11
|
var _PushAdapter = require("../Adapters/Push/PushAdapter");
|
|
17
|
-
|
|
18
12
|
var _rest = _interopRequireDefault(require("../rest"));
|
|
19
|
-
|
|
20
13
|
var _StatusHandler = require("../StatusHandler");
|
|
21
|
-
|
|
22
14
|
var utils = _interopRequireWildcard(require("./utils"));
|
|
23
|
-
|
|
24
15
|
var _ParseMessageQueue = require("../ParseMessageQueue");
|
|
25
|
-
|
|
26
16
|
var _PushQueue = require("./PushQueue");
|
|
27
|
-
|
|
28
17
|
var _logger = _interopRequireDefault(require("../logger"));
|
|
29
|
-
|
|
30
18
|
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); }
|
|
31
|
-
|
|
32
19
|
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; }
|
|
33
|
-
|
|
34
20
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
35
|
-
|
|
36
21
|
// -disable-next
|
|
37
22
|
function groupByBadge(installations) {
|
|
38
23
|
return installations.reduce((map, installation) => {
|
|
@@ -42,15 +27,12 @@ function groupByBadge(installations) {
|
|
|
42
27
|
return map;
|
|
43
28
|
}, {});
|
|
44
29
|
}
|
|
45
|
-
|
|
46
30
|
class PushWorker {
|
|
47
31
|
constructor(pushAdapter, subscriberConfig = {}) {
|
|
48
32
|
_AdaptableController.default.validateAdapter(pushAdapter, this, _PushAdapter.PushAdapter);
|
|
49
|
-
|
|
50
33
|
this.adapter = pushAdapter;
|
|
51
34
|
this.channel = subscriberConfig.channel || _PushQueue.PushQueue.defaultPushChannel();
|
|
52
35
|
this.subscriber = _ParseMessageQueue.ParseMessageQueue.createSubscriber(subscriberConfig);
|
|
53
|
-
|
|
54
36
|
if (this.subscriber) {
|
|
55
37
|
const subscriber = this.subscriber;
|
|
56
38
|
subscriber.subscribe(this.channel);
|
|
@@ -60,7 +42,6 @@ class PushWorker {
|
|
|
60
42
|
});
|
|
61
43
|
}
|
|
62
44
|
}
|
|
63
|
-
|
|
64
45
|
run({
|
|
65
46
|
body,
|
|
66
47
|
query,
|
|
@@ -69,7 +50,6 @@ class PushWorker {
|
|
|
69
50
|
UTCOffset
|
|
70
51
|
}) {
|
|
71
52
|
const config = _Config.default.get(applicationId);
|
|
72
|
-
|
|
73
53
|
const auth = (0, _Auth.master)(config);
|
|
74
54
|
const where = utils.applyDeviceTokenExists(query.where);
|
|
75
55
|
delete query.where;
|
|
@@ -80,19 +60,17 @@ class PushWorker {
|
|
|
80
60
|
if (results.length == 0) {
|
|
81
61
|
return;
|
|
82
62
|
}
|
|
83
|
-
|
|
84
63
|
return this.sendToAdapter(body, results, pushStatus, config, UTCOffset);
|
|
85
64
|
});
|
|
86
65
|
}
|
|
87
|
-
|
|
88
66
|
sendToAdapter(body, installations, pushStatus, config, UTCOffset) {
|
|
89
67
|
// Check if we have locales in the push body
|
|
90
68
|
const locales = utils.getLocalesFromPush(body);
|
|
91
|
-
|
|
92
69
|
if (locales.length > 0) {
|
|
93
70
|
// Get all tranformed bodies for each locale
|
|
94
|
-
const bodiesPerLocales = utils.bodiesPerLocales(body, locales);
|
|
71
|
+
const bodiesPerLocales = utils.bodiesPerLocales(body, locales);
|
|
95
72
|
|
|
73
|
+
// Group installations on the specified locales (en, fr, default etc...)
|
|
96
74
|
const grouppedInstallations = utils.groupByLocaleIdentifier(installations, locales);
|
|
97
75
|
const promises = Object.keys(grouppedInstallations).map(locale => {
|
|
98
76
|
const installations = grouppedInstallations[locale];
|
|
@@ -101,18 +79,17 @@ class PushWorker {
|
|
|
101
79
|
});
|
|
102
80
|
return Promise.all(promises);
|
|
103
81
|
}
|
|
104
|
-
|
|
105
82
|
if (!utils.isPushIncrementing(body)) {
|
|
106
83
|
_logger.default.verbose(`Sending push to ${installations.length}`);
|
|
107
|
-
|
|
108
84
|
return this.adapter.send(body, installations, pushStatus.objectId).then(results => {
|
|
109
85
|
return pushStatus.trackSent(results, UTCOffset).then(() => results);
|
|
110
86
|
});
|
|
111
|
-
}
|
|
112
|
-
|
|
87
|
+
}
|
|
113
88
|
|
|
114
|
-
|
|
89
|
+
// Collect the badges to reduce the # of calls
|
|
90
|
+
const badgeInstallationsMap = groupByBadge(installations);
|
|
115
91
|
|
|
92
|
+
// Map the on the badges count and return the send result
|
|
116
93
|
const promises = Object.keys(badgeInstallationsMap).map(badge => {
|
|
117
94
|
const payload = (0, _deepcopy.default)(body);
|
|
118
95
|
payload.data.badge = parseInt(badge);
|
|
@@ -121,10 +98,8 @@ class PushWorker {
|
|
|
121
98
|
});
|
|
122
99
|
return Promise.all(promises);
|
|
123
100
|
}
|
|
124
|
-
|
|
125
101
|
}
|
|
126
|
-
|
|
127
102
|
exports.PushWorker = PushWorker;
|
|
128
103
|
var _default = PushWorker;
|
|
129
104
|
exports.default = _default;
|
|
130
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9QdXNoL1B1c2hXb3JrZXIuanMiXSwibmFtZXMiOlsiZ3JvdXBCeUJhZGdlIiwiaW5zdGFsbGF0aW9ucyIsInJlZHVjZSIsIm1hcCIsImluc3RhbGxhdGlvbiIsImJhZGdlIiwicHVzaCIsIlB1c2hXb3JrZXIiLCJjb25zdHJ1Y3RvciIsInB1c2hBZGFwdGVyIiwic3Vic2NyaWJlckNvbmZpZyIsIkFkYXB0YWJsZUNvbnRyb2xsZXIiLCJ2YWxpZGF0ZUFkYXB0ZXIiLCJQdXNoQWRhcHRlciIsImFkYXB0ZXIiLCJjaGFubmVsIiwiUHVzaFF1ZXVlIiwiZGVmYXVsdFB1c2hDaGFubmVsIiwic3Vic2NyaWJlciIsIlBhcnNlTWVzc2FnZVF1ZXVlIiwiY3JlYXRlU3Vic2NyaWJlciIsInN1YnNjcmliZSIsIm9uIiwibWVzc2FnZVN0ciIsIndvcmtJdGVtIiwiSlNPTiIsInBhcnNlIiwicnVuIiwiYm9keSIsInF1ZXJ5IiwicHVzaFN0YXR1cyIsImFwcGxpY2F0aW9uSWQiLCJVVENPZmZzZXQiLCJjb25maWciLCJDb25maWciLCJnZXQiLCJhdXRoIiwid2hlcmUiLCJ1dGlscyIsImFwcGx5RGV2aWNlVG9rZW5FeGlzdHMiLCJvYmplY3RJZCIsInJlc3QiLCJmaW5kIiwidGhlbiIsInJlc3VsdHMiLCJsZW5ndGgiLCJzZW5kVG9BZGFwdGVyIiwibG9jYWxlcyIsImdldExvY2FsZXNGcm9tUHVzaCIsImJvZGllc1BlckxvY2FsZXMiLCJncm91cHBlZEluc3RhbGxhdGlvbnMiLCJncm91cEJ5TG9jYWxlSWRlbnRpZmllciIsInByb21pc2VzIiwiT2JqZWN0Iiwia2V5cyIsImxvY2FsZSIsIlByb21pc2UiLCJhbGwiLCJpc1B1c2hJbmNyZW1lbnRpbmciLCJsb2dnZXIiLCJ2ZXJib3NlIiwic2VuZCIsInRyYWNrU2VudCIsImJhZGdlSW5zdGFsbGF0aW9uc01hcCIsInBheWxvYWQiLCJkYXRhIiwicGFyc2VJbnQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7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O0FBR0QsS0F0QlcsQ0F3Qlo7OztBQUNBLFVBQU1tQixxQkFBcUIsR0FBRy9ELFlBQVksQ0FBQ0MsYUFBRCxDQUExQyxDQXpCWSxDQTJCWjs7QUFDQSxVQUFNbUQsUUFBUSxHQUFHQyxNQUFNLENBQUNDLElBQVAsQ0FBWVMscUJBQVosRUFBbUM1RCxHQUFuQyxDQUF1Q0UsS0FBSyxJQUFJO0FBQy9ELFlBQU0yRCxPQUFPLEdBQUcsdUJBQVNwQyxJQUFULENBQWhCO0FBQ0FvQyxNQUFBQSxPQUFPLENBQUNDLElBQVIsQ0FBYTVELEtBQWIsR0FBcUI2RCxRQUFRLENBQUM3RCxLQUFELENBQTdCO0FBQ0EsWUFBTUosYUFBYSxHQUFHOEQscUJBQXFCLENBQUMxRCxLQUFELENBQTNDO0FBQ0EsYUFBTyxLQUFLeUMsYUFBTCxDQUFtQmtCLE9BQW5CLEVBQTRCL0QsYUFBNUIsRUFBMkM2QixVQUEzQyxFQUF1REcsTUFBdkQsRUFBK0RELFNBQS9ELENBQVA7QUFDRCxLQUxnQixDQUFqQjtBQU1BLFdBQU93QixPQUFPLENBQUNDLEdBQVIsQ0FBWUwsUUFBWixDQUFQO0FBQ0Q7O0FBNUVxQjs7O2VBK0VUN0MsVSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEBmbG93XG4vLyBAZmxvdy1kaXNhYmxlLW5leHRcbmltcG9ydCBkZWVwY29weSBmcm9tICdkZWVwY29weSc7XG5pbXBvcnQgQWRhcHRhYmxlQ29udHJvbGxlciBmcm9tICcuLi9Db250cm9sbGVycy9BZGFwdGFibGVDb250cm9sbGVyJztcbmltcG9ydCB7IG1hc3RlciB9IGZyb20gJy4uL0F1dGgnO1xuaW1wb3J0IENvbmZpZyBmcm9tICcuLi9Db25maWcnO1xuaW1wb3J0IHsgUHVzaEFkYXB0ZXIgfSBmcm9tICcuLi9BZGFwdGVycy9QdXNoL1B1c2hBZGFwdGVyJztcbmltcG9ydCByZXN0IGZyb20gJy4uL3Jlc3QnO1xuaW1wb3J0IHsgcHVzaFN0YXR1c0hhbmRsZXIgfSBmcm9tICcuLi9TdGF0dXNIYW5kbGVyJztcbmltcG9ydCAqIGFzIHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgUGFyc2VNZXNzYWdlUXVldWUgfSBmcm9tICcuLi9QYXJzZU1lc3NhZ2VRdWV1ZSc7XG5pbXBvcnQgeyBQdXNoUXVldWUgfSBmcm9tICcuL1B1c2hRdWV1ZSc7XG5pbXBvcnQgbG9nZ2VyIGZyb20gJy4uL2xvZ2dlcic7XG5cbmZ1bmN0aW9uIGdyb3VwQnlCYWRnZShpbnN0YWxsYXRpb25zKSB7XG4gIHJldHVybiBpbnN0YWxsYXRpb25zLnJlZHVjZSgobWFwLCBpbnN0YWxsYXRpb24pID0+IHtcbiAgICBjb25zdCBiYWRnZSA9IGluc3RhbGxhdGlvbi5iYWRnZSArICcnO1xuICAgIG1hcFtiYWRnZV0gPSBtYXBbYmFkZ2VdIHx8IFtdO1xuICAgIG1hcFtiYWRnZV0ucHVzaChpbnN0YWxsYXRpb24pO1xuICAgIHJldHVybiBtYXA7XG4gIH0sIHt9KTtcbn1cblxuZXhwb3J0IGNsYXNzIFB1c2hXb3JrZXIge1xuICBzdWJzY3JpYmVyOiA/YW55O1xuICBhZGFwdGVyOiBhbnk7XG4gIGNoYW5uZWw6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihwdXNoQWRhcHRlcjogUHVzaEFkYXB0ZXIsIHN1YnNjcmliZXJDb25maWc6IGFueSA9IHt9KSB7XG4gICAgQWRhcHRhYmxlQ29udHJvbGxlci52YWxpZGF0ZUFkYXB0ZXIocHVzaEFkYXB0ZXIsIHRoaXMsIFB1c2hBZGFwdGVyKTtcbiAgICB0aGlzLmFkYXB0ZXIgPSBwdXNoQWRhcHRlcjtcblxuICAgIHRoaXMuY2hhbm5lbCA9IHN1YnNjcmliZXJDb25maWcuY2hhbm5lbCB8fCBQdXNoUXVldWUuZGVmYXVsdFB1c2hDaGFubmVsKCk7XG4gICAgdGhpcy5zdWJzY3JpYmVyID0gUGFyc2VNZXNzYWdlUXVldWUuY3JlYXRlU3Vic2NyaWJlcihzdWJzY3JpYmVyQ29uZmlnKTtcbiAgICBpZiAodGhpcy5zdWJzY3JpYmVyKSB7XG4gICAgICBjb25zdCBzdWJzY3JpYmVyID0gdGhpcy5zdWJzY3JpYmVyO1xuICAgICAgc3Vic2NyaWJlci5zdWJzY3JpYmUodGhpcy5jaGFubmVsKTtcbiAgICAgIHN1YnNjcmliZXIub24oJ21lc3NhZ2UnLCAoY2hhbm5lbCwgbWVzc2FnZVN0cikgPT4ge1xuICAgICAgICBjb25zdCB3b3JrSXRlbSA9IEpTT04ucGFyc2UobWVzc2FnZVN0cik7XG4gICAgICAgIHRoaXMucnVuKHdvcmtJdGVtKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJ1bih7IGJvZHksIHF1ZXJ5LCBwdXNoU3RhdHVzLCBhcHBsaWNhdGlvbklkLCBVVENPZmZzZXQgfTogYW55KTogUHJvbWlzZTwqPiB7XG4gICAgY29uc3QgY29uZmlnID0gQ29uZmlnLmdldChhcHBsaWNhdGlvbklkKTtcbiAgICBjb25zdCBhdXRoID0gbWFzdGVyKGNvbmZpZyk7XG4gICAgY29uc3Qgd2hlcmUgPSB1dGlscy5hcHBseURldmljZVRva2VuRXhpc3RzKHF1ZXJ5LndoZXJlKTtcbiAgICBkZWxldGUgcXVlcnkud2hlcmU7XG4gICAgcHVzaFN0YXR1cyA9IHB1c2hTdGF0dXNIYW5kbGVyKGNvbmZpZywgcHVzaFN0YXR1cy5vYmplY3RJZCk7XG4gICAgcmV0dXJuIHJlc3QuZmluZChjb25maWcsIGF1dGgsICdfSW5zdGFsbGF0aW9uJywgd2hlcmUsIHF1ZXJ5KS50aGVuKCh7IHJlc3VsdHMgfSkgPT4ge1xuICAgICAgaWYgKHJlc3VsdHMubGVuZ3RoID09IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvQWRhcHRlcihib2R5LCByZXN1bHRzLCBwdXNoU3RhdHVzLCBjb25maWcsIFVUQ09mZnNldCk7XG4gICAgfSk7XG4gIH1cblxuICBzZW5kVG9BZGFwdGVyKFxuICAgIGJvZHk6IGFueSxcbiAgICBpbnN0YWxsYXRpb25zOiBhbnlbXSxcbiAgICBwdXNoU3RhdHVzOiBhbnksXG4gICAgY29uZmlnOiBDb25maWcsXG4gICAgVVRDT2Zmc2V0OiA/YW55XG4gICk6IFByb21pc2U8Kj4ge1xuICAgIC8vIENoZWNrIGlmIHdlIGhhdmUgbG9jYWxlcyBpbiB0aGUgcHVzaCBib2R5XG4gICAgY29uc3QgbG9jYWxlcyA9IHV0aWxzLmdldExvY2FsZXNGcm9tUHVzaChib2R5KTtcbiAgICBpZiAobG9jYWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICAvLyBHZXQgYWxsIHRyYW5mb3JtZWQgYm9kaWVzIGZvciBlYWNoIGxvY2FsZVxuICAgICAgY29uc3QgYm9kaWVzUGVyTG9jYWxlcyA9IHV0aWxzLmJvZGllc1BlckxvY2FsZXMoYm9keSwgbG9jYWxlcyk7XG5cbiAgICAgIC8vIEdyb3VwIGluc3RhbGxhdGlvbnMgb24gdGhlIHNwZWNpZmllZCBsb2NhbGVzIChlbiwgZnIsIGRlZmF1bHQgZXRjLi4uKVxuICAgICAgY29uc3QgZ3JvdXBwZWRJbnN0YWxsYXRpb25zID0gdXRpbHMuZ3JvdXBCeUxvY2FsZUlkZW50aWZpZXIoaW5zdGFsbGF0aW9ucywgbG9jYWxlcyk7XG4gICAgICBjb25zdCBwcm9taXNlcyA9IE9iamVjdC5rZXlzKGdyb3VwcGVkSW5zdGFsbGF0aW9ucykubWFwKGxvY2FsZSA9PiB7XG4gICAgICAgIGNvbnN0IGluc3RhbGxhdGlvbnMgPSBncm91cHBlZEluc3RhbGxhdGlvbnNbbG9jYWxlXTtcbiAgICAgICAgY29uc3QgYm9keSA9IGJvZGllc1BlckxvY2FsZXNbbG9jYWxlXTtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvQWRhcHRlcihib2R5LCBpbnN0YWxsYXRpb25zLCBwdXNoU3RhdHVzLCBjb25maWcsIFVUQ09mZnNldCk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBQcm9taXNlLmFsbChwcm9taXNlcyk7XG4gICAgfVxuXG4gICAgaWYgKCF1dGlscy5pc1B1c2hJbmNyZW1lbnRpbmcoYm9keSkpIHtcbiAgICAgIGxvZ2dlci52ZXJib3NlKGBTZW5kaW5nIHB1c2ggdG8gJHtpbnN0YWxsYXRpb25zLmxlbmd0aH1gKTtcbiAgICAgIHJldHVybiB0aGlzLmFkYXB0ZXIuc2VuZChib2R5LCBpbnN0YWxsYXRpb25zLCBwdXNoU3RhdHVzLm9iamVjdElkKS50aGVuKHJlc3VsdHMgPT4ge1xuICAgICAgICByZXR1cm4gcHVzaFN0YXR1cy50cmFja1NlbnQocmVzdWx0cywgVVRDT2Zmc2V0KS50aGVuKCgpID0+IHJlc3VsdHMpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gQ29sbGVjdCB0aGUgYmFkZ2VzIHRvIHJlZHVjZSB0aGUgIyBvZiBjYWxsc1xuICAgIGNvbnN0IGJhZGdlSW5zdGFsbGF0aW9uc01hcCA9IGdyb3VwQnlCYWRnZShpbnN0YWxsYXRpb25zKTtcblxuICAgIC8vIE1hcCB0aGUgb24gdGhlIGJhZGdlcyBjb3VudCBhbmQgcmV0dXJuIHRoZSBzZW5kIHJlc3VsdFxuICAgIGNvbnN0IHByb21pc2VzID0gT2JqZWN0LmtleXMoYmFkZ2VJbnN0YWxsYXRpb25zTWFwKS5tYXAoYmFkZ2UgPT4ge1xuICAgICAgY29uc3QgcGF5bG9hZCA9IGRlZXBjb3B5KGJvZHkpO1xuICAgICAgcGF5bG9hZC5kYXRhLmJhZGdlID0gcGFyc2VJbnQoYmFkZ2UpO1xuICAgICAgY29uc3QgaW5zdGFsbGF0aW9ucyA9IGJhZGdlSW5zdGFsbGF0aW9uc01hcFtiYWRnZV07XG4gICAgICByZXR1cm4gdGhpcy5zZW5kVG9BZGFwdGVyKHBheWxvYWQsIGluc3RhbGxhdGlvbnMsIHB1c2hTdGF0dXMsIGNvbmZpZywgVVRDT2Zmc2V0KTtcbiAgICB9KTtcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFB1c2hXb3JrZXI7XG4iXX0=
|
|
105
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJncm91cEJ5QmFkZ2UiLCJpbnN0YWxsYXRpb25zIiwicmVkdWNlIiwibWFwIiwiaW5zdGFsbGF0aW9uIiwiYmFkZ2UiLCJwdXNoIiwiUHVzaFdvcmtlciIsImNvbnN0cnVjdG9yIiwicHVzaEFkYXB0ZXIiLCJzdWJzY3JpYmVyQ29uZmlnIiwiQWRhcHRhYmxlQ29udHJvbGxlciIsInZhbGlkYXRlQWRhcHRlciIsIlB1c2hBZGFwdGVyIiwiYWRhcHRlciIsImNoYW5uZWwiLCJQdXNoUXVldWUiLCJkZWZhdWx0UHVzaENoYW5uZWwiLCJzdWJzY3JpYmVyIiwiUGFyc2VNZXNzYWdlUXVldWUiLCJjcmVhdGVTdWJzY3JpYmVyIiwic3Vic2NyaWJlIiwib24iLCJtZXNzYWdlU3RyIiwid29ya0l0ZW0iLCJKU09OIiwicGFyc2UiLCJydW4iLCJib2R5IiwicXVlcnkiLCJwdXNoU3RhdHVzIiwiYXBwbGljYXRpb25JZCIsIlVUQ09mZnNldCIsImNvbmZpZyIsIkNvbmZpZyIsImdldCIsImF1dGgiLCJtYXN0ZXIiLCJ3aGVyZSIsInV0aWxzIiwiYXBwbHlEZXZpY2VUb2tlbkV4aXN0cyIsInB1c2hTdGF0dXNIYW5kbGVyIiwib2JqZWN0SWQiLCJyZXN0IiwiZmluZCIsInRoZW4iLCJyZXN1bHRzIiwibGVuZ3RoIiwic2VuZFRvQWRhcHRlciIsImxvY2FsZXMiLCJnZXRMb2NhbGVzRnJvbVB1c2giLCJib2RpZXNQZXJMb2NhbGVzIiwiZ3JvdXBwZWRJbnN0YWxsYXRpb25zIiwiZ3JvdXBCeUxvY2FsZUlkZW50aWZpZXIiLCJwcm9taXNlcyIsIk9iamVjdCIsImtleXMiLCJsb2NhbGUiLCJQcm9taXNlIiwiYWxsIiwiaXNQdXNoSW5jcmVtZW50aW5nIiwibG9nZ2VyIiwidmVyYm9zZSIsInNlbmQiLCJ0cmFja1NlbnQiLCJiYWRnZUluc3RhbGxhdGlvbnNNYXAiLCJwYXlsb2FkIiwiZGVlcGNvcHkiLCJkYXRhIiwicGFyc2VJbnQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvUHVzaC9QdXNoV29ya2VyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIEBmbG93XG4vLyBAZmxvdy1kaXNhYmxlLW5leHRcbmltcG9ydCBkZWVwY29weSBmcm9tICdkZWVwY29weSc7XG5pbXBvcnQgQWRhcHRhYmxlQ29udHJvbGxlciBmcm9tICcuLi9Db250cm9sbGVycy9BZGFwdGFibGVDb250cm9sbGVyJztcbmltcG9ydCB7IG1hc3RlciB9IGZyb20gJy4uL0F1dGgnO1xuaW1wb3J0IENvbmZpZyBmcm9tICcuLi9Db25maWcnO1xuaW1wb3J0IHsgUHVzaEFkYXB0ZXIgfSBmcm9tICcuLi9BZGFwdGVycy9QdXNoL1B1c2hBZGFwdGVyJztcbmltcG9ydCByZXN0IGZyb20gJy4uL3Jlc3QnO1xuaW1wb3J0IHsgcHVzaFN0YXR1c0hhbmRsZXIgfSBmcm9tICcuLi9TdGF0dXNIYW5kbGVyJztcbmltcG9ydCAqIGFzIHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgUGFyc2VNZXNzYWdlUXVldWUgfSBmcm9tICcuLi9QYXJzZU1lc3NhZ2VRdWV1ZSc7XG5pbXBvcnQgeyBQdXNoUXVldWUgfSBmcm9tICcuL1B1c2hRdWV1ZSc7XG5pbXBvcnQgbG9nZ2VyIGZyb20gJy4uL2xvZ2dlcic7XG5cbmZ1bmN0aW9uIGdyb3VwQnlCYWRnZShpbnN0YWxsYXRpb25zKSB7XG4gIHJldHVybiBpbnN0YWxsYXRpb25zLnJlZHVjZSgobWFwLCBpbnN0YWxsYXRpb24pID0+IHtcbiAgICBjb25zdCBiYWRnZSA9IGluc3RhbGxhdGlvbi5iYWRnZSArICcnO1xuICAgIG1hcFtiYWRnZV0gPSBtYXBbYmFkZ2VdIHx8IFtdO1xuICAgIG1hcFtiYWRnZV0ucHVzaChpbnN0YWxsYXRpb24pO1xuICAgIHJldHVybiBtYXA7XG4gIH0sIHt9KTtcbn1cblxuZXhwb3J0IGNsYXNzIFB1c2hXb3JrZXIge1xuICBzdWJzY3JpYmVyOiA/YW55O1xuICBhZGFwdGVyOiBhbnk7XG4gIGNoYW5uZWw6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihwdXNoQWRhcHRlcjogUHVzaEFkYXB0ZXIsIHN1YnNjcmliZXJDb25maWc6IGFueSA9IHt9KSB7XG4gICAgQWRhcHRhYmxlQ29udHJvbGxlci52YWxpZGF0ZUFkYXB0ZXIocHVzaEFkYXB0ZXIsIHRoaXMsIFB1c2hBZGFwdGVyKTtcbiAgICB0aGlzLmFkYXB0ZXIgPSBwdXNoQWRhcHRlcjtcblxuICAgIHRoaXMuY2hhbm5lbCA9IHN1YnNjcmliZXJDb25maWcuY2hhbm5lbCB8fCBQdXNoUXVldWUuZGVmYXVsdFB1c2hDaGFubmVsKCk7XG4gICAgdGhpcy5zdWJzY3JpYmVyID0gUGFyc2VNZXNzYWdlUXVldWUuY3JlYXRlU3Vic2NyaWJlcihzdWJzY3JpYmVyQ29uZmlnKTtcbiAgICBpZiAodGhpcy5zdWJzY3JpYmVyKSB7XG4gICAgICBjb25zdCBzdWJzY3JpYmVyID0gdGhpcy5zdWJzY3JpYmVyO1xuICAgICAgc3Vic2NyaWJlci5zdWJzY3JpYmUodGhpcy5jaGFubmVsKTtcbiAgICAgIHN1YnNjcmliZXIub24oJ21lc3NhZ2UnLCAoY2hhbm5lbCwgbWVzc2FnZVN0cikgPT4ge1xuICAgICAgICBjb25zdCB3b3JrSXRlbSA9IEpTT04ucGFyc2UobWVzc2FnZVN0cik7XG4gICAgICAgIHRoaXMucnVuKHdvcmtJdGVtKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJ1bih7IGJvZHksIHF1ZXJ5LCBwdXNoU3RhdHVzLCBhcHBsaWNhdGlvbklkLCBVVENPZmZzZXQgfTogYW55KTogUHJvbWlzZTwqPiB7XG4gICAgY29uc3QgY29uZmlnID0gQ29uZmlnLmdldChhcHBsaWNhdGlvbklkKTtcbiAgICBjb25zdCBhdXRoID0gbWFzdGVyKGNvbmZpZyk7XG4gICAgY29uc3Qgd2hlcmUgPSB1dGlscy5hcHBseURldmljZVRva2VuRXhpc3RzKHF1ZXJ5LndoZXJlKTtcbiAgICBkZWxldGUgcXVlcnkud2hlcmU7XG4gICAgcHVzaFN0YXR1cyA9IHB1c2hTdGF0dXNIYW5kbGVyKGNvbmZpZywgcHVzaFN0YXR1cy5vYmplY3RJZCk7XG4gICAgcmV0dXJuIHJlc3QuZmluZChjb25maWcsIGF1dGgsICdfSW5zdGFsbGF0aW9uJywgd2hlcmUsIHF1ZXJ5KS50aGVuKCh7IHJlc3VsdHMgfSkgPT4ge1xuICAgICAgaWYgKHJlc3VsdHMubGVuZ3RoID09IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvQWRhcHRlcihib2R5LCByZXN1bHRzLCBwdXNoU3RhdHVzLCBjb25maWcsIFVUQ09mZnNldCk7XG4gICAgfSk7XG4gIH1cblxuICBzZW5kVG9BZGFwdGVyKFxuICAgIGJvZHk6IGFueSxcbiAgICBpbnN0YWxsYXRpb25zOiBhbnlbXSxcbiAgICBwdXNoU3RhdHVzOiBhbnksXG4gICAgY29uZmlnOiBDb25maWcsXG4gICAgVVRDT2Zmc2V0OiA/YW55XG4gICk6IFByb21pc2U8Kj4ge1xuICAgIC8vIENoZWNrIGlmIHdlIGhhdmUgbG9jYWxlcyBpbiB0aGUgcHVzaCBib2R5XG4gICAgY29uc3QgbG9jYWxlcyA9IHV0aWxzLmdldExvY2FsZXNGcm9tUHVzaChib2R5KTtcbiAgICBpZiAobG9jYWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICAvLyBHZXQgYWxsIHRyYW5mb3JtZWQgYm9kaWVzIGZvciBlYWNoIGxvY2FsZVxuICAgICAgY29uc3QgYm9kaWVzUGVyTG9jYWxlcyA9IHV0aWxzLmJvZGllc1BlckxvY2FsZXMoYm9keSwgbG9jYWxlcyk7XG5cbiAgICAgIC8vIEdyb3VwIGluc3RhbGxhdGlvbnMgb24gdGhlIHNwZWNpZmllZCBsb2NhbGVzIChlbiwgZnIsIGRlZmF1bHQgZXRjLi4uKVxuICAgICAgY29uc3QgZ3JvdXBwZWRJbnN0YWxsYXRpb25zID0gdXRpbHMuZ3JvdXBCeUxvY2FsZUlkZW50aWZpZXIoaW5zdGFsbGF0aW9ucywgbG9jYWxlcyk7XG4gICAgICBjb25zdCBwcm9taXNlcyA9IE9iamVjdC5rZXlzKGdyb3VwcGVkSW5zdGFsbGF0aW9ucykubWFwKGxvY2FsZSA9PiB7XG4gICAgICAgIGNvbnN0IGluc3RhbGxhdGlvbnMgPSBncm91cHBlZEluc3RhbGxhdGlvbnNbbG9jYWxlXTtcbiAgICAgICAgY29uc3QgYm9keSA9IGJvZGllc1BlckxvY2FsZXNbbG9jYWxlXTtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvQWRhcHRlcihib2R5LCBpbnN0YWxsYXRpb25zLCBwdXNoU3RhdHVzLCBjb25maWcsIFVUQ09mZnNldCk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBQcm9taXNlLmFsbChwcm9taXNlcyk7XG4gICAgfVxuXG4gICAgaWYgKCF1dGlscy5pc1B1c2hJbmNyZW1lbnRpbmcoYm9keSkpIHtcbiAgICAgIGxvZ2dlci52ZXJib3NlKGBTZW5kaW5nIHB1c2ggdG8gJHtpbnN0YWxsYXRpb25zLmxlbmd0aH1gKTtcbiAgICAgIHJldHVybiB0aGlzLmFkYXB0ZXIuc2VuZChib2R5LCBpbnN0YWxsYXRpb25zLCBwdXNoU3RhdHVzLm9iamVjdElkKS50aGVuKHJlc3VsdHMgPT4ge1xuICAgICAgICByZXR1cm4gcHVzaFN0YXR1cy50cmFja1NlbnQocmVzdWx0cywgVVRDT2Zmc2V0KS50aGVuKCgpID0+IHJlc3VsdHMpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gQ29sbGVjdCB0aGUgYmFkZ2VzIHRvIHJlZHVjZSB0aGUgIyBvZiBjYWxsc1xuICAgIGNvbnN0IGJhZGdlSW5zdGFsbGF0aW9uc01hcCA9IGdyb3VwQnlCYWRnZShpbnN0YWxsYXRpb25zKTtcblxuICAgIC8vIE1hcCB0aGUgb24gdGhlIGJhZGdlcyBjb3VudCBhbmQgcmV0dXJuIHRoZSBzZW5kIHJlc3VsdFxuICAgIGNvbnN0IHByb21pc2VzID0gT2JqZWN0LmtleXMoYmFkZ2VJbnN0YWxsYXRpb25zTWFwKS5tYXAoYmFkZ2UgPT4ge1xuICAgICAgY29uc3QgcGF5bG9hZCA9IGRlZXBjb3B5KGJvZHkpO1xuICAgICAgcGF5bG9hZC5kYXRhLmJhZGdlID0gcGFyc2VJbnQoYmFkZ2UpO1xuICAgICAgY29uc3QgaW5zdGFsbGF0aW9ucyA9IGJhZGdlSW5zdGFsbGF0aW9uc01hcFtiYWRnZV07XG4gICAgICByZXR1cm4gdGhpcy5zZW5kVG9BZGFwdGVyKHBheWxvYWQsIGluc3RhbGxhdGlvbnMsIHB1c2hTdGF0dXMsIGNvbmZpZywgVVRDT2Zmc2V0KTtcbiAgICB9KTtcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFB1c2hXb3JrZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBK0I7QUFBQTtBQUFBO0FBWC9CO0FBYUEsU0FBU0EsWUFBWSxDQUFDQyxhQUFhLEVBQUU7RUFDbkMsT0FBT0EsYUFBYSxDQUFDQyxNQUFNLENBQUMsQ0FBQ0MsR0FBRyxFQUFFQyxZQUFZLEtBQUs7SUFDakQsTUFBTUMsS0FBSyxHQUFHRCxZQUFZLENBQUNDLEtBQUssR0FBRyxFQUFFO0lBQ3JDRixHQUFHLENBQUNFLEtBQUssQ0FBQyxHQUFHRixHQUFHLENBQUNFLEtBQUssQ0FBQyxJQUFJLEVBQUU7SUFDN0JGLEdBQUcsQ0FBQ0UsS0FBSyxDQUFDLENBQUNDLElBQUksQ0FBQ0YsWUFBWSxDQUFDO0lBQzdCLE9BQU9ELEdBQUc7RUFDWixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDUjtBQUVPLE1BQU1JLFVBQVUsQ0FBQztFQUt0QkMsV0FBVyxDQUFDQyxXQUF3QixFQUFFQyxnQkFBcUIsR0FBRyxDQUFDLENBQUMsRUFBRTtJQUNoRUMsNEJBQW1CLENBQUNDLGVBQWUsQ0FBQ0gsV0FBVyxFQUFFLElBQUksRUFBRUksd0JBQVcsQ0FBQztJQUNuRSxJQUFJLENBQUNDLE9BQU8sR0FBR0wsV0FBVztJQUUxQixJQUFJLENBQUNNLE9BQU8sR0FBR0wsZ0JBQWdCLENBQUNLLE9BQU8sSUFBSUMsb0JBQVMsQ0FBQ0Msa0JBQWtCLEVBQUU7SUFDekUsSUFBSSxDQUFDQyxVQUFVLEdBQUdDLG9DQUFpQixDQUFDQyxnQkFBZ0IsQ0FBQ1YsZ0JBQWdCLENBQUM7SUFDdEUsSUFBSSxJQUFJLENBQUNRLFVBQVUsRUFBRTtNQUNuQixNQUFNQSxVQUFVLEdBQUcsSUFBSSxDQUFDQSxVQUFVO01BQ2xDQSxVQUFVLENBQUNHLFNBQVMsQ0FBQyxJQUFJLENBQUNOLE9BQU8sQ0FBQztNQUNsQ0csVUFBVSxDQUFDSSxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUNQLE9BQU8sRUFBRVEsVUFBVSxLQUFLO1FBQ2hELE1BQU1DLFFBQVEsR0FBR0MsSUFBSSxDQUFDQyxLQUFLLENBQUNILFVBQVUsQ0FBQztRQUN2QyxJQUFJLENBQUNJLEdBQUcsQ0FBQ0gsUUFBUSxDQUFDO01BQ3BCLENBQUMsQ0FBQztJQUNKO0VBQ0Y7RUFFQUcsR0FBRyxDQUFDO0lBQUVDLElBQUk7SUFBRUMsS0FBSztJQUFFQyxVQUFVO0lBQUVDLGFBQWE7SUFBRUM7RUFBZSxDQUFDLEVBQWM7SUFDMUUsTUFBTUMsTUFBTSxHQUFHQyxlQUFNLENBQUNDLEdBQUcsQ0FBQ0osYUFBYSxDQUFDO0lBQ3hDLE1BQU1LLElBQUksR0FBRyxJQUFBQyxZQUFNLEVBQUNKLE1BQU0sQ0FBQztJQUMzQixNQUFNSyxLQUFLLEdBQUdDLEtBQUssQ0FBQ0Msc0JBQXNCLENBQUNYLEtBQUssQ0FBQ1MsS0FBSyxDQUFDO0lBQ3ZELE9BQU9ULEtBQUssQ0FBQ1MsS0FBSztJQUNsQlIsVUFBVSxHQUFHLElBQUFXLGdDQUFpQixFQUFDUixNQUFNLEVBQUVILFVBQVUsQ0FBQ1ksUUFBUSxDQUFDO0lBQzNELE9BQU9DLGFBQUksQ0FBQ0MsSUFBSSxDQUFDWCxNQUFNLEVBQUVHLElBQUksRUFBRSxlQUFlLEVBQUVFLEtBQUssRUFBRVQsS0FBSyxDQUFDLENBQUNnQixJQUFJLENBQUMsQ0FBQztNQUFFQztJQUFRLENBQUMsS0FBSztNQUNsRixJQUFJQSxPQUFPLENBQUNDLE1BQU0sSUFBSSxDQUFDLEVBQUU7UUFDdkI7TUFDRjtNQUNBLE9BQU8sSUFBSSxDQUFDQyxhQUFhLENBQUNwQixJQUFJLEVBQUVrQixPQUFPLEVBQUVoQixVQUFVLEVBQUVHLE1BQU0sRUFBRUQsU0FBUyxDQUFDO0lBQ3pFLENBQUMsQ0FBQztFQUNKO0VBRUFnQixhQUFhLENBQ1hwQixJQUFTLEVBQ1QzQixhQUFvQixFQUNwQjZCLFVBQWUsRUFDZkcsTUFBYyxFQUNkRCxTQUFlLEVBQ0g7SUFDWjtJQUNBLE1BQU1pQixPQUFPLEdBQUdWLEtBQUssQ0FBQ1csa0JBQWtCLENBQUN0QixJQUFJLENBQUM7SUFDOUMsSUFBSXFCLE9BQU8sQ0FBQ0YsTUFBTSxHQUFHLENBQUMsRUFBRTtNQUN0QjtNQUNBLE1BQU1JLGdCQUFnQixHQUFHWixLQUFLLENBQUNZLGdCQUFnQixDQUFDdkIsSUFBSSxFQUFFcUIsT0FBTyxDQUFDOztNQUU5RDtNQUNBLE1BQU1HLHFCQUFxQixHQUFHYixLQUFLLENBQUNjLHVCQUF1QixDQUFDcEQsYUFBYSxFQUFFZ0QsT0FBTyxDQUFDO01BQ25GLE1BQU1LLFFBQVEsR0FBR0MsTUFBTSxDQUFDQyxJQUFJLENBQUNKLHFCQUFxQixDQUFDLENBQUNqRCxHQUFHLENBQUNzRCxNQUFNLElBQUk7UUFDaEUsTUFBTXhELGFBQWEsR0FBR21ELHFCQUFxQixDQUFDSyxNQUFNLENBQUM7UUFDbkQsTUFBTTdCLElBQUksR0FBR3VCLGdCQUFnQixDQUFDTSxNQUFNLENBQUM7UUFDckMsT0FBTyxJQUFJLENBQUNULGFBQWEsQ0FBQ3BCLElBQUksRUFBRTNCLGFBQWEsRUFBRTZCLFVBQVUsRUFBRUcsTUFBTSxFQUFFRCxTQUFTLENBQUM7TUFDL0UsQ0FBQyxDQUFDO01BQ0YsT0FBTzBCLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDTCxRQUFRLENBQUM7SUFDOUI7SUFFQSxJQUFJLENBQUNmLEtBQUssQ0FBQ3FCLGtCQUFrQixDQUFDaEMsSUFBSSxDQUFDLEVBQUU7TUFDbkNpQyxlQUFNLENBQUNDLE9BQU8sQ0FBRSxtQkFBa0I3RCxhQUFhLENBQUM4QyxNQUFPLEVBQUMsQ0FBQztNQUN6RCxPQUFPLElBQUksQ0FBQ2pDLE9BQU8sQ0FBQ2lELElBQUksQ0FBQ25DLElBQUksRUFBRTNCLGFBQWEsRUFBRTZCLFVBQVUsQ0FBQ1ksUUFBUSxDQUFDLENBQUNHLElBQUksQ0FBQ0MsT0FBTyxJQUFJO1FBQ2pGLE9BQU9oQixVQUFVLENBQUNrQyxTQUFTLENBQUNsQixPQUFPLEVBQUVkLFNBQVMsQ0FBQyxDQUFDYSxJQUFJLENBQUMsTUFBTUMsT0FBTyxDQUFDO01BQ3JFLENBQUMsQ0FBQztJQUNKOztJQUVBO0lBQ0EsTUFBTW1CLHFCQUFxQixHQUFHakUsWUFBWSxDQUFDQyxhQUFhLENBQUM7O0lBRXpEO0lBQ0EsTUFBTXFELFFBQVEsR0FBR0MsTUFBTSxDQUFDQyxJQUFJLENBQUNTLHFCQUFxQixDQUFDLENBQUM5RCxHQUFHLENBQUNFLEtBQUssSUFBSTtNQUMvRCxNQUFNNkQsT0FBTyxHQUFHLElBQUFDLGlCQUFRLEVBQUN2QyxJQUFJLENBQUM7TUFDOUJzQyxPQUFPLENBQUNFLElBQUksQ0FBQy9ELEtBQUssR0FBR2dFLFFBQVEsQ0FBQ2hFLEtBQUssQ0FBQztNQUNwQyxNQUFNSixhQUFhLEdBQUdnRSxxQkFBcUIsQ0FBQzVELEtBQUssQ0FBQztNQUNsRCxPQUFPLElBQUksQ0FBQzJDLGFBQWEsQ0FBQ2tCLE9BQU8sRUFBRWpFLGFBQWEsRUFBRTZCLFVBQVUsRUFBRUcsTUFBTSxFQUFFRCxTQUFTLENBQUM7SUFDbEYsQ0FBQyxDQUFDO0lBQ0YsT0FBTzBCLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDTCxRQUFRLENBQUM7RUFDOUI7QUFDRjtBQUFDO0FBQUEsZUFFYy9DLFVBQVU7QUFBQSJ9
|
package/lib/Push/utils.js
CHANGED
|
@@ -3,44 +3,33 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
7
|
-
exports.getLocalesFromPush = getLocalesFromPush;
|
|
8
|
-
exports.transformPushBodyForLocale = transformPushBodyForLocale;
|
|
9
|
-
exports.stripLocalesFromBody = stripLocalesFromBody;
|
|
6
|
+
exports.applyDeviceTokenExists = applyDeviceTokenExists;
|
|
10
7
|
exports.bodiesPerLocales = bodiesPerLocales;
|
|
8
|
+
exports.getLocalesFromPush = getLocalesFromPush;
|
|
11
9
|
exports.groupByLocaleIdentifier = groupByLocaleIdentifier;
|
|
10
|
+
exports.isPushIncrementing = isPushIncrementing;
|
|
11
|
+
exports.stripLocalesFromBody = stripLocalesFromBody;
|
|
12
|
+
exports.transformPushBodyForLocale = transformPushBodyForLocale;
|
|
12
13
|
exports.validatePushType = validatePushType;
|
|
13
|
-
exports.applyDeviceTokenExists = applyDeviceTokenExists;
|
|
14
|
-
|
|
15
14
|
var _node = _interopRequireDefault(require("parse/node"));
|
|
16
|
-
|
|
17
15
|
var _deepcopy = _interopRequireDefault(require("deepcopy"));
|
|
18
|
-
|
|
19
16
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
20
|
-
|
|
21
17
|
function isPushIncrementing(body) {
|
|
22
18
|
if (!body.data || !body.data.badge) {
|
|
23
19
|
return false;
|
|
24
20
|
}
|
|
25
|
-
|
|
26
21
|
const badge = body.data.badge;
|
|
27
|
-
|
|
28
22
|
if (typeof badge == 'string' && badge.toLowerCase() == 'increment') {
|
|
29
23
|
return true;
|
|
30
24
|
}
|
|
31
|
-
|
|
32
25
|
return typeof badge == 'object' && typeof badge.__op == 'string' && badge.__op.toLowerCase() == 'increment' && Number(badge.amount);
|
|
33
26
|
}
|
|
34
|
-
|
|
35
27
|
const localizableKeys = ['alert', 'title'];
|
|
36
|
-
|
|
37
28
|
function getLocalesFromPush(body) {
|
|
38
29
|
const data = body.data;
|
|
39
|
-
|
|
40
30
|
if (!data) {
|
|
41
31
|
return [];
|
|
42
32
|
}
|
|
43
|
-
|
|
44
33
|
return [...new Set(Object.keys(data).reduce((memo, key) => {
|
|
45
34
|
localizableKeys.forEach(localizableKey => {
|
|
46
35
|
if (key.indexOf(`${localizableKey}-`) == 0) {
|
|
@@ -50,30 +39,24 @@ function getLocalesFromPush(body) {
|
|
|
50
39
|
return memo;
|
|
51
40
|
}, []))];
|
|
52
41
|
}
|
|
53
|
-
|
|
54
42
|
function transformPushBodyForLocale(body, locale) {
|
|
55
43
|
const data = body.data;
|
|
56
|
-
|
|
57
44
|
if (!data) {
|
|
58
45
|
return body;
|
|
59
46
|
}
|
|
60
|
-
|
|
61
47
|
body = (0, _deepcopy.default)(body);
|
|
62
48
|
localizableKeys.forEach(key => {
|
|
63
49
|
const localeValue = body.data[`${key}-${locale}`];
|
|
64
|
-
|
|
65
50
|
if (localeValue) {
|
|
66
51
|
body.data[key] = localeValue;
|
|
67
52
|
}
|
|
68
53
|
});
|
|
69
54
|
return stripLocalesFromBody(body);
|
|
70
55
|
}
|
|
71
|
-
|
|
72
56
|
function stripLocalesFromBody(body) {
|
|
73
57
|
if (!body.data) {
|
|
74
58
|
return body;
|
|
75
59
|
}
|
|
76
|
-
|
|
77
60
|
Object.keys(body.data).forEach(key => {
|
|
78
61
|
localizableKeys.forEach(localizableKey => {
|
|
79
62
|
if (key.indexOf(`${localizableKey}-`) == 0) {
|
|
@@ -83,18 +66,16 @@ function stripLocalesFromBody(body) {
|
|
|
83
66
|
});
|
|
84
67
|
return body;
|
|
85
68
|
}
|
|
86
|
-
|
|
87
69
|
function bodiesPerLocales(body, locales = []) {
|
|
88
70
|
// Get all tranformed bodies for each locale
|
|
89
71
|
const result = locales.reduce((memo, locale) => {
|
|
90
72
|
memo[locale] = transformPushBodyForLocale(body, locale);
|
|
91
73
|
return memo;
|
|
92
|
-
}, {});
|
|
93
|
-
|
|
74
|
+
}, {});
|
|
75
|
+
// Set the default locale, with the stripped body
|
|
94
76
|
result.default = stripLocalesFromBody(body);
|
|
95
77
|
return result;
|
|
96
78
|
}
|
|
97
|
-
|
|
98
79
|
function groupByLocaleIdentifier(installations, locales = []) {
|
|
99
80
|
return installations.reduce((map, installation) => {
|
|
100
81
|
let added = false;
|
|
@@ -102,58 +83,48 @@ function groupByLocaleIdentifier(installations, locales = []) {
|
|
|
102
83
|
if (added) {
|
|
103
84
|
return;
|
|
104
85
|
}
|
|
105
|
-
|
|
106
86
|
if (installation.localeIdentifier && installation.localeIdentifier.indexOf(locale) === 0) {
|
|
107
87
|
added = true;
|
|
108
88
|
map[locale] = map[locale] || [];
|
|
109
89
|
map[locale].push(installation);
|
|
110
90
|
}
|
|
111
91
|
});
|
|
112
|
-
|
|
113
92
|
if (!added) {
|
|
114
93
|
map.default.push(installation);
|
|
115
94
|
}
|
|
116
|
-
|
|
117
95
|
return map;
|
|
118
96
|
}, {
|
|
119
97
|
default: []
|
|
120
98
|
});
|
|
121
99
|
}
|
|
100
|
+
|
|
122
101
|
/**
|
|
123
102
|
* Check whether the deviceType parameter in qury condition is valid or not.
|
|
124
103
|
* @param {Object} where A query condition
|
|
125
104
|
* @param {Array} validPushTypes An array of valid push types(string)
|
|
126
105
|
*/
|
|
127
|
-
|
|
128
|
-
|
|
129
106
|
function validatePushType(where = {}, validPushTypes = []) {
|
|
130
107
|
var deviceTypeField = where.deviceType || {};
|
|
131
108
|
var deviceTypes = [];
|
|
132
|
-
|
|
133
109
|
if (typeof deviceTypeField === 'string') {
|
|
134
110
|
deviceTypes.push(deviceTypeField);
|
|
135
111
|
} else if (Array.isArray(deviceTypeField['$in'])) {
|
|
136
112
|
deviceTypes.concat(deviceTypeField['$in']);
|
|
137
113
|
}
|
|
138
|
-
|
|
139
114
|
for (var i = 0; i < deviceTypes.length; i++) {
|
|
140
115
|
var deviceType = deviceTypes[i];
|
|
141
|
-
|
|
142
116
|
if (validPushTypes.indexOf(deviceType) < 0) {
|
|
143
117
|
throw new _node.default.Error(_node.default.Error.PUSH_MISCONFIGURED, deviceType + ' is not supported push type.');
|
|
144
118
|
}
|
|
145
119
|
}
|
|
146
120
|
}
|
|
147
|
-
|
|
148
121
|
function applyDeviceTokenExists(where) {
|
|
149
122
|
where = (0, _deepcopy.default)(where);
|
|
150
|
-
|
|
151
123
|
if (!Object.prototype.hasOwnProperty.call(where, 'deviceToken')) {
|
|
152
124
|
where['deviceToken'] = {
|
|
153
125
|
$exists: true
|
|
154
126
|
};
|
|
155
127
|
}
|
|
156
|
-
|
|
157
128
|
return where;
|
|
158
129
|
}
|
|
159
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9QdXNoL3V0aWxzLmpzIl0sIm5hbWVzIjpbImlzUHVzaEluY3JlbWVudGluZyIsImJvZHkiLCJkYXRhIiwiYmFkZ2UiLCJ0b0xvd2VyQ2FzZSIsIl9fb3AiLCJOdW1iZXIiLCJhbW91bnQiLCJsb2NhbGl6YWJsZUtleXMiLCJnZXRMb2NhbGVzRnJvbVB1c2giLCJTZXQiLCJPYmplY3QiLCJrZXlzIiwicmVkdWNlIiwibWVtbyIsImtleSIsImZvckVhY2giLCJsb2NhbGl6YWJsZUtleSIsImluZGV4T2YiLCJwdXNoIiwic2xpY2UiLCJsZW5ndGgiLCJ0cmFuc2Zvcm1QdXNoQm9keUZvckxvY2FsZSIsImxvY2FsZSIsImxvY2FsZVZhbHVlIiwic3RyaXBMb2NhbGVzRnJvbUJvZHkiLCJib2RpZXNQZXJMb2NhbGVzIiwibG9jYWxlcyIsInJlc3VsdCIsImRlZmF1bHQiLCJncm91cEJ5TG9jYWxlSWRlbnRpZmllciIsImluc3RhbGxhdGlvbnMiLCJtYXAiLCJpbnN0YWxsYXRpb24iLCJhZGRlZCIsImxvY2FsZUlkZW50aWZpZXIiLCJ2YWxpZGF0ZVB1c2hUeXBlIiwid2hlcmUiLCJ2YWxpZFB1c2hUeXBlcyIsImRldmljZVR5cGVGaWVsZCIsImRldmljZVR5cGUiLCJkZXZpY2VUeXBlcyIsIkFycmF5IiwiaXNBcnJheSIsImNvbmNhdCIsImkiLCJQYXJzZSIsIkVycm9yIiwiUFVTSF9NSVNDT05GSUdVUkVEIiwiYXBwbHlEZXZpY2VUb2tlbkV4aXN0cyIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIiRleGlzdHMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7Ozs7QUFFTyxTQUFTQSxrQkFBVCxDQUE0QkMsSUFBNUIsRUFBa0M7QUFDdkMsTUFBSSxDQUFDQSxJQUFJLENBQUNDLElBQU4sSUFBYyxDQUFDRCxJQUFJLENBQUNDLElBQUwsQ0FBVUMsS0FBN0IsRUFBb0M7QUFDbEMsV0FBTyxLQUFQO0FB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LENBQUwsR0FBdUI7QUFBRWdCLE1BQUFBLE9BQU8sRUFBRTtBQUFYLEtBQXZCO0FBQ0Q7O0FBQ0QsU0FBT2hCLEtBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBQYXJzZSBmcm9tICdwYXJzZS9ub2RlJztcbmltcG9ydCBkZWVwY29weSBmcm9tICdkZWVwY29weSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1B1c2hJbmNyZW1lbnRpbmcoYm9keSkge1xuICBpZiAoIWJvZHkuZGF0YSB8fCAhYm9keS5kYXRhLmJhZGdlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgYmFkZ2UgPSBib2R5LmRhdGEuYmFkZ2U7XG4gIGlmICh0eXBlb2YgYmFkZ2UgPT0gJ3N0cmluZycgJiYgYmFkZ2UudG9Mb3dlckNhc2UoKSA9PSAnaW5jcmVtZW50Jykge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICB0eXBlb2YgYmFkZ2UgPT0gJ29iamVjdCcgJiZcbiAgICB0eXBlb2YgYmFkZ2UuX19vcCA9PSAnc3RyaW5nJyAmJlxuICAgIGJhZGdlLl9fb3AudG9Mb3dlckNhc2UoKSA9PSAnaW5jcmVtZW50JyAmJlxuICAgIE51bWJlcihiYWRnZS5hbW91bnQpXG4gICk7XG59XG5cbmNvbnN0IGxvY2FsaXphYmxlS2V5cyA9IFsnYWxlcnQnLCAndGl0bGUnXTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldExvY2FsZXNGcm9tUHVzaChib2R5KSB7XG4gIGNvbnN0IGRhdGEgPSBib2R5LmRhdGE7XG4gIGlmICghZGF0YSkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuICByZXR1cm4gW1xuICAgIC4uLm5ldyBTZXQoXG4gICAgICBPYmplY3Qua2V5cyhkYXRhKS5yZWR1Y2UoKG1lbW8sIGtleSkgPT4ge1xuICAgICAgICBsb2NhbGl6YWJsZUtleXMuZm9yRWFjaChsb2NhbGl6YWJsZUtleSA9PiB7XG4gICAgICAgICAgaWYgKGtleS5pbmRleE9mKGAke2xvY2FsaXphYmxlS2V5fS1gKSA9PSAwKSB7XG4gICAgICAgICAgICBtZW1vLnB1c2goa2V5LnNsaWNlKGxvY2FsaXphYmxlS2V5Lmxlbmd0aCArIDEpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gbWVtbztcbiAgICAgIH0sIFtdKVxuICAgICksXG4gIF07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1QdXNoQm9keUZvckxvY2FsZShib2R5LCBsb2NhbGUpIHtcbiAgY29uc3QgZGF0YSA9IGJvZHkuZGF0YTtcbiAgaWYgKCFkYXRhKSB7XG4gICAgcmV0dXJuIGJvZHk7XG4gIH1cbiAgYm9keSA9IGRlZXBjb3B5KGJvZHkpO1xuICBsb2NhbGl6YWJsZUtleXMuZm9yRWFjaChrZXkgPT4ge1xuICAgIGNvbnN0IGxvY2FsZVZhbHVlID0gYm9keS5kYXRhW2Ake2tleX0tJHtsb2NhbGV9YF07XG4gICAgaWYgKGxvY2FsZVZhbHVlKSB7XG4gICAgICBib2R5LmRhdGFba2V5XSA9IGxvY2FsZVZhbHVlO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBzdHJpcExvY2FsZXNGcm9tQm9keShib2R5KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0cmlwTG9jYWxlc0Zyb21Cb2R5KGJvZHkpIHtcbiAgaWYgKCFib2R5LmRhdGEpIHtcbiAgICByZXR1cm4gYm9keTtcbiAgfVxuICBPYmplY3Qua2V5cyhib2R5LmRhdGEpLmZvckVhY2goa2V5ID0+IHtcbiAgICBsb2NhbGl6YWJsZUtleXMuZm9yRWFjaChsb2NhbGl6YWJsZUtleSA9PiB7XG4gICAgICBpZiAoa2V5LmluZGV4T2YoYCR7bG9jYWxpemFibGVLZXl9LWApID09IDApIHtcbiAgICAgICAgZGVsZXRlIGJvZHkuZGF0YVtrZXldO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbiAgcmV0dXJuIGJvZHk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBib2RpZXNQZXJMb2NhbGVzKGJvZHksIGxvY2FsZXMgPSBbXSkge1xuICAvLyBHZXQgYWxsIHRyYW5mb3JtZWQgYm9kaWVzIGZvciBlYWNoIGxvY2FsZVxuICBjb25zdCByZXN1bHQgPSBsb2NhbGVzLnJlZHVjZSgobWVtbywgbG9jYWxlKSA9PiB7XG4gICAgbWVtb1tsb2NhbGVdID0gdHJhbnNmb3JtUHVzaEJvZHlGb3JMb2NhbGUoYm9keSwgbG9jYWxlKTtcbiAgICByZXR1cm4gbWVtbztcbiAgfSwge30pO1xuICAvLyBTZXQgdGhlIGRlZmF1bHQgbG9jYWxlLCB3aXRoIHRoZSBzdHJpcHBlZCBib2R5XG4gIHJlc3VsdC5kZWZhdWx0ID0gc3RyaXBMb2NhbGVzRnJvbUJvZHkoYm9keSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBncm91cEJ5TG9jYWxlSWRlbnRpZmllcihpbnN0YWxsYXRpb25zLCBsb2NhbGVzID0gW10pIHtcbiAgcmV0dXJuIGluc3RhbGxhdGlvbnMucmVkdWNlKFxuICAgIChtYXAsIGluc3RhbGxhdGlvbikgPT4ge1xuICAgICAgbGV0IGFkZGVkID0gZmFsc2U7XG4gICAgICBsb2NhbGVzLmZvckVhY2gobG9jYWxlID0+IHtcbiAgICAgICAgaWYgKGFkZGVkKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpbnN0YWxsYXRpb24ubG9jYWxlSWRlbnRpZmllciAmJiBpbnN0YWxsYXRpb24ubG9jYWxlSWRlbnRpZmllci5pbmRleE9mKGxvY2FsZSkgPT09IDApIHtcbiAgICAgICAgICBhZGRlZCA9IHRydWU7XG4gICAgICAgICAgbWFwW2xvY2FsZV0gPSBtYXBbbG9jYWxlXSB8fCBbXTtcbiAgICAgICAgICBtYXBbbG9jYWxlXS5wdXNoKGluc3RhbGxhdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgaWYgKCFhZGRlZCkge1xuICAgICAgICBtYXAuZGVmYXVsdC5wdXNoKGluc3RhbGxhdGlvbik7XG4gICAgICB9XG4gICAgICByZXR1cm4gbWFwO1xuICAgIH0sXG4gICAgeyBkZWZhdWx0OiBbXSB9XG4gICk7XG59XG5cbi8qKlxuICogQ2hlY2sgd2hldGhlciB0aGUgZGV2aWNlVHlwZSBwYXJhbWV0ZXIgaW4gcXVyeSBjb25kaXRpb24gaXMgdmFsaWQgb3Igbm90LlxuICogQHBhcmFtIHtPYmplY3R9IHdoZXJlIEEgcXVlcnkgY29uZGl0aW9uXG4gKiBAcGFyYW0ge0FycmF5fSB2YWxpZFB1c2hUeXBlcyBBbiBhcnJheSBvZiB2YWxpZCBwdXNoIHR5cGVzKHN0cmluZylcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlUHVzaFR5cGUod2hlcmUgPSB7fSwgdmFsaWRQdXNoVHlwZXMgPSBbXSkge1xuICB2YXIgZGV2aWNlVHlwZUZpZWxkID0gd2hlcmUuZGV2aWNlVHlwZSB8fCB7fTtcbiAgdmFyIGRldmljZVR5cGVzID0gW107XG4gIGlmICh0eXBlb2YgZGV2aWNlVHlwZUZpZWxkID09PSAnc3RyaW5nJykge1xuICAgIGRldmljZVR5cGVzLnB1c2goZGV2aWNlVHlwZUZpZWxkKTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGRldmljZVR5cGVGaWVsZFsnJGluJ10pKSB7XG4gICAgZGV2aWNlVHlwZXMuY29uY2F0KGRldmljZVR5cGVGaWVsZFsnJGluJ10pO1xuICB9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZGV2aWNlVHlwZXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgZGV2aWNlVHlwZSA9IGRldmljZVR5cGVzW2ldO1xuICAgIGlmICh2YWxpZFB1c2hUeXBlcy5pbmRleE9mKGRldmljZVR5cGUpIDwgMCkge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFxuICAgICAgICBQYXJzZS5FcnJvci5QVVNIX01JU0NPTkZJR1VSRUQsXG4gICAgICAgIGRldmljZVR5cGUgKyAnIGlzIG5vdCBzdXBwb3J0ZWQgcHVzaCB0eXBlLidcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBseURldmljZVRva2VuRXhpc3RzKHdoZXJlKSB7XG4gIHdoZXJlID0gZGVlcGNvcHkod2hlcmUpO1xuICBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh3aGVyZSwgJ2RldmljZVRva2VuJykpIHtcbiAgICB3aGVyZVsnZGV2aWNlVG9rZW4nXSA9IHsgJGV4aXN0czogdHJ1ZSB9O1xuICB9XG4gIHJldHVybiB3aGVyZTtcbn1cbiJdfQ==
|
|
130
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpc1B1c2hJbmNyZW1lbnRpbmciLCJib2R5IiwiZGF0YSIsImJhZGdlIiwidG9Mb3dlckNhc2UiLCJfX29wIiwiTnVtYmVyIiwiYW1vdW50IiwibG9jYWxpemFibGVLZXlzIiwiZ2V0TG9jYWxlc0Zyb21QdXNoIiwiU2V0IiwiT2JqZWN0Iiwia2V5cyIsInJlZHVjZSIsIm1lbW8iLCJrZXkiLCJmb3JFYWNoIiwibG9jYWxpemFibGVLZXkiLCJpbmRleE9mIiwicHVzaCIsInNsaWNlIiwibGVuZ3RoIiwidHJhbnNmb3JtUHVzaEJvZHlGb3JMb2NhbGUiLCJsb2NhbGUiLCJkZWVwY29weSIsImxvY2FsZVZhbHVlIiwic3RyaXBMb2NhbGVzRnJvbUJvZHkiLCJib2RpZXNQZXJMb2NhbGVzIiwibG9jYWxlcyIsInJlc3VsdCIsImRlZmF1bHQiLCJncm91cEJ5TG9jYWxlSWRlbnRpZmllciIsImluc3RhbGxhdGlvbnMiLCJtYXAiLCJpbnN0YWxsYXRpb24iLCJhZGRlZCIsImxvY2FsZUlkZW50aWZpZXIiLCJ2YWxpZGF0ZVB1c2hUeXBlIiwid2hlcmUiLCJ2YWxpZFB1c2hUeXBlcyIsImRldmljZVR5cGVGaWVsZCIsImRldmljZVR5cGUiLCJkZXZpY2VUeXBlcyIsIkFycmF5IiwiaXNBcnJheSIsImNvbmNhdCIsImkiLCJQYXJzZSIsIkVycm9yIiwiUFVTSF9NSVNDT05GSUdVUkVEIiwiYXBwbHlEZXZpY2VUb2tlbkV4aXN0cyIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIiRleGlzdHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvUHVzaC91dGlscy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUGFyc2UgZnJvbSAncGFyc2Uvbm9kZSc7XG5pbXBvcnQgZGVlcGNvcHkgZnJvbSAnZGVlcGNvcHknO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNQdXNoSW5jcmVtZW50aW5nKGJvZHkpIHtcbiAgaWYgKCFib2R5LmRhdGEgfHwgIWJvZHkuZGF0YS5iYWRnZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IGJhZGdlID0gYm9keS5kYXRhLmJhZGdlO1xuICBpZiAodHlwZW9mIGJhZGdlID09ICdzdHJpbmcnICYmIGJhZGdlLnRvTG93ZXJDYXNlKCkgPT0gJ2luY3JlbWVudCcpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgdHlwZW9mIGJhZGdlID09ICdvYmplY3QnICYmXG4gICAgdHlwZW9mIGJhZGdlLl9fb3AgPT0gJ3N0cmluZycgJiZcbiAgICBiYWRnZS5fX29wLnRvTG93ZXJDYXNlKCkgPT0gJ2luY3JlbWVudCcgJiZcbiAgICBOdW1iZXIoYmFkZ2UuYW1vdW50KVxuICApO1xufVxuXG5jb25zdCBsb2NhbGl6YWJsZUtleXMgPSBbJ2FsZXJ0JywgJ3RpdGxlJ107XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRMb2NhbGVzRnJvbVB1c2goYm9keSkge1xuICBjb25zdCBkYXRhID0gYm9keS5kYXRhO1xuICBpZiAoIWRhdGEpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgcmV0dXJuIFtcbiAgICAuLi5uZXcgU2V0KFxuICAgICAgT2JqZWN0LmtleXMoZGF0YSkucmVkdWNlKChtZW1vLCBrZXkpID0+IHtcbiAgICAgICAgbG9jYWxpemFibGVLZXlzLmZvckVhY2gobG9jYWxpemFibGVLZXkgPT4ge1xuICAgICAgICAgIGlmIChrZXkuaW5kZXhPZihgJHtsb2NhbGl6YWJsZUtleX0tYCkgPT0gMCkge1xuICAgICAgICAgICAgbWVtby5wdXNoKGtleS5zbGljZShsb2NhbGl6YWJsZUtleS5sZW5ndGggKyAxKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIG1lbW87XG4gICAgICB9LCBbXSlcbiAgICApLFxuICBdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtUHVzaEJvZHlGb3JMb2NhbGUoYm9keSwgbG9jYWxlKSB7XG4gIGNvbnN0IGRhdGEgPSBib2R5LmRhdGE7XG4gIGlmICghZGF0YSkge1xuICAgIHJldHVybiBib2R5O1xuICB9XG4gIGJvZHkgPSBkZWVwY29weShib2R5KTtcbiAgbG9jYWxpemFibGVLZXlzLmZvckVhY2goa2V5ID0+IHtcbiAgICBjb25zdCBsb2NhbGVWYWx1ZSA9IGJvZHkuZGF0YVtgJHtrZXl9LSR7bG9jYWxlfWBdO1xuICAgIGlmIChsb2NhbGVWYWx1ZSkge1xuICAgICAgYm9keS5kYXRhW2tleV0gPSBsb2NhbGVWYWx1ZTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gc3RyaXBMb2NhbGVzRnJvbUJvZHkoYm9keSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJpcExvY2FsZXNGcm9tQm9keShib2R5KSB7XG4gIGlmICghYm9keS5kYXRhKSB7XG4gICAgcmV0dXJuIGJvZHk7XG4gIH1cbiAgT2JqZWN0LmtleXMoYm9keS5kYXRhKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgbG9jYWxpemFibGVLZXlzLmZvckVhY2gobG9jYWxpemFibGVLZXkgPT4ge1xuICAgICAgaWYgKGtleS5pbmRleE9mKGAke2xvY2FsaXphYmxlS2V5fS1gKSA9PSAwKSB7XG4gICAgICAgIGRlbGV0ZSBib2R5LmRhdGFba2V5XTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG4gIHJldHVybiBib2R5O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYm9kaWVzUGVyTG9jYWxlcyhib2R5LCBsb2NhbGVzID0gW10pIHtcbiAgLy8gR2V0IGFsbCB0cmFuZm9ybWVkIGJvZGllcyBmb3IgZWFjaCBsb2NhbGVcbiAgY29uc3QgcmVzdWx0ID0gbG9jYWxlcy5yZWR1Y2UoKG1lbW8sIGxvY2FsZSkgPT4ge1xuICAgIG1lbW9bbG9jYWxlXSA9IHRyYW5zZm9ybVB1c2hCb2R5Rm9yTG9jYWxlKGJvZHksIGxvY2FsZSk7XG4gICAgcmV0dXJuIG1lbW87XG4gIH0sIHt9KTtcbiAgLy8gU2V0IHRoZSBkZWZhdWx0IGxvY2FsZSwgd2l0aCB0aGUgc3RyaXBwZWQgYm9keVxuICByZXN1bHQuZGVmYXVsdCA9IHN0cmlwTG9jYWxlc0Zyb21Cb2R5KGJvZHkpO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ3JvdXBCeUxvY2FsZUlkZW50aWZpZXIoaW5zdGFsbGF0aW9ucywgbG9jYWxlcyA9IFtdKSB7XG4gIHJldHVybiBpbnN0YWxsYXRpb25zLnJlZHVjZShcbiAgICAobWFwLCBpbnN0YWxsYXRpb24pID0+IHtcbiAgICAgIGxldCBhZGRlZCA9IGZhbHNlO1xuICAgICAgbG9jYWxlcy5mb3JFYWNoKGxvY2FsZSA9PiB7XG4gICAgICAgIGlmIChhZGRlZCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaW5zdGFsbGF0aW9uLmxvY2FsZUlkZW50aWZpZXIgJiYgaW5zdGFsbGF0aW9uLmxvY2FsZUlkZW50aWZpZXIuaW5kZXhPZihsb2NhbGUpID09PSAwKSB7XG4gICAgICAgICAgYWRkZWQgPSB0cnVlO1xuICAgICAgICAgIG1hcFtsb2NhbGVdID0gbWFwW2xvY2FsZV0gfHwgW107XG4gICAgICAgICAgbWFwW2xvY2FsZV0ucHVzaChpbnN0YWxsYXRpb24pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGlmICghYWRkZWQpIHtcbiAgICAgICAgbWFwLmRlZmF1bHQucHVzaChpbnN0YWxsYXRpb24pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG1hcDtcbiAgICB9LFxuICAgIHsgZGVmYXVsdDogW10gfVxuICApO1xufVxuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgdGhlIGRldmljZVR5cGUgcGFyYW1ldGVyIGluIHF1cnkgY29uZGl0aW9uIGlzIHZhbGlkIG9yIG5vdC5cbiAqIEBwYXJhbSB7T2JqZWN0fSB3aGVyZSBBIHF1ZXJ5IGNvbmRpdGlvblxuICogQHBhcmFtIHtBcnJheX0gdmFsaWRQdXNoVHlwZXMgQW4gYXJyYXkgb2YgdmFsaWQgcHVzaCB0eXBlcyhzdHJpbmcpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVB1c2hUeXBlKHdoZXJlID0ge30sIHZhbGlkUHVzaFR5cGVzID0gW10pIHtcbiAgdmFyIGRldmljZVR5cGVGaWVsZCA9IHdoZXJlLmRldmljZVR5cGUgfHwge307XG4gIHZhciBkZXZpY2VUeXBlcyA9IFtdO1xuICBpZiAodHlwZW9mIGRldmljZVR5cGVGaWVsZCA9PT0gJ3N0cmluZycpIHtcbiAgICBkZXZpY2VUeXBlcy5wdXNoKGRldmljZVR5cGVGaWVsZCk7XG4gIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShkZXZpY2VUeXBlRmllbGRbJyRpbiddKSkge1xuICAgIGRldmljZVR5cGVzLmNvbmNhdChkZXZpY2VUeXBlRmllbGRbJyRpbiddKTtcbiAgfVxuICBmb3IgKHZhciBpID0gMDsgaSA8IGRldmljZVR5cGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGRldmljZVR5cGUgPSBkZXZpY2VUeXBlc1tpXTtcbiAgICBpZiAodmFsaWRQdXNoVHlwZXMuaW5kZXhPZihkZXZpY2VUeXBlKSA8IDApIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihcbiAgICAgICAgUGFyc2UuRXJyb3IuUFVTSF9NSVNDT05GSUdVUkVELFxuICAgICAgICBkZXZpY2VUeXBlICsgJyBpcyBub3Qgc3VwcG9ydGVkIHB1c2ggdHlwZS4nXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlEZXZpY2VUb2tlbkV4aXN0cyh3aGVyZSkge1xuICB3aGVyZSA9IGRlZXBjb3B5KHdoZXJlKTtcbiAgaWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwod2hlcmUsICdkZXZpY2VUb2tlbicpKSB7XG4gICAgd2hlcmVbJ2RldmljZVRva2VuJ10gPSB7ICRleGlzdHM6IHRydWUgfTtcbiAgfVxuICByZXR1cm4gd2hlcmU7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQWdDO0FBRXpCLFNBQVNBLGtCQUFrQixDQUFD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
|