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.
Files changed (191) hide show
  1. package/README.md +45 -17
  2. package/lib/AccountLockout.js +11 -26
  3. package/lib/Adapters/AdapterLoader.js +8 -14
  4. package/lib/Adapters/Analytics/AnalyticsAdapter.js +2 -8
  5. package/lib/Adapters/Auth/AuthAdapter.js +7 -16
  6. package/lib/Adapters/Auth/OAuth1Client.js +32 -57
  7. package/lib/Adapters/Auth/apple.js +6 -22
  8. package/lib/Adapters/Auth/facebook.js +7 -37
  9. package/lib/Adapters/Auth/gcenter.js +8 -37
  10. package/lib/Adapters/Auth/github.js +7 -10
  11. package/lib/Adapters/Auth/google.js +11 -34
  12. package/lib/Adapters/Auth/gpgames.js +5 -8
  13. package/lib/Adapters/Auth/httpsRequest.js +1 -7
  14. package/lib/Adapters/Auth/index.js +20 -65
  15. package/lib/Adapters/Auth/instagram.js +5 -9
  16. package/lib/Adapters/Auth/janraincapture.js +8 -12
  17. package/lib/Adapters/Auth/janrainengage.js +7 -11
  18. package/lib/Adapters/Auth/keycloak.js +5 -19
  19. package/lib/Adapters/Auth/ldap.js +1 -15
  20. package/lib/Adapters/Auth/line.js +7 -10
  21. package/lib/Adapters/Auth/linkedin.js +7 -12
  22. package/lib/Adapters/Auth/meetup.js +7 -10
  23. package/lib/Adapters/Auth/microsoft.js +7 -10
  24. package/lib/Adapters/Auth/oauth2.js +6 -18
  25. package/lib/Adapters/Auth/phantauth.js +8 -10
  26. package/lib/Adapters/Auth/qq.js +7 -13
  27. package/lib/Adapters/Auth/spotify.js +7 -14
  28. package/lib/Adapters/Auth/twitter.js +5 -15
  29. package/lib/Adapters/Auth/vkontakte.js +9 -15
  30. package/lib/Adapters/Auth/wechat.js +7 -10
  31. package/lib/Adapters/Auth/weibo.js +7 -11
  32. package/lib/Adapters/Cache/CacheAdapter.js +4 -12
  33. package/lib/Adapters/Cache/InMemoryCache.js +5 -19
  34. package/lib/Adapters/Cache/InMemoryCacheAdapter.js +1 -11
  35. package/lib/Adapters/Cache/LRUCache.js +1 -11
  36. package/lib/Adapters/Cache/NullCacheAdapter.js +1 -8
  37. package/lib/Adapters/Cache/RedisCacheAdapter.js +46 -87
  38. package/lib/Adapters/Cache/SchemaCache.js +1 -6
  39. package/lib/Adapters/Email/MailAdapter.js +2 -7
  40. package/lib/Adapters/Files/FilesAdapter.js +7 -21
  41. package/lib/Adapters/Files/GridFSBucketAdapter.js +6 -44
  42. package/lib/Adapters/Files/GridStoreAdapter.js +1 -1
  43. package/lib/Adapters/Logger/LoggerAdapter.js +2 -11
  44. package/lib/Adapters/Logger/WinstonLogger.js +3 -30
  45. package/lib/Adapters/Logger/WinstonLoggerAdapter.js +5 -16
  46. package/lib/Adapters/MessageQueue/EventEmitterMQ.js +3 -20
  47. package/lib/Adapters/PubSub/EventEmitterPubSub.js +1 -16
  48. package/lib/Adapters/PubSub/PubSubAdapter.js +2 -9
  49. package/lib/Adapters/PubSub/RedisPubSub.js +13 -10
  50. package/lib/Adapters/Push/PushAdapter.js +2 -8
  51. package/lib/Adapters/Storage/Mongo/MongoCollection.js +12 -37
  52. package/lib/Adapters/Storage/Mongo/MongoSchemaCollection.js +26 -79
  53. package/lib/Adapters/Storage/Mongo/MongoStorageAdapter.js +78 -209
  54. package/lib/Adapters/Storage/Mongo/MongoTransform.js +82 -371
  55. package/lib/Adapters/Storage/Postgres/PostgresClient.js +1 -13
  56. package/lib/Adapters/Storage/Postgres/PostgresConfigParser.js +1 -20
  57. package/lib/Adapters/Storage/Postgres/PostgresStorageAdapter.js +119 -446
  58. package/lib/Adapters/Storage/Postgres/sql/index.js +4 -7
  59. package/lib/Adapters/Storage/StorageAdapter.js +1 -1
  60. package/lib/Adapters/WebSocketServer/WSAdapter.js +3 -12
  61. package/lib/Adapters/WebSocketServer/WSSAdapter.js +7 -12
  62. package/lib/Auth.js +54 -121
  63. package/lib/ClientSDK.js +3 -11
  64. package/lib/Config.js +69 -113
  65. package/lib/Controllers/AdaptableController.js +6 -18
  66. package/lib/Controllers/AnalyticsController.js +1 -9
  67. package/lib/Controllers/CacheController.js +3 -23
  68. package/lib/Controllers/DatabaseController.js +147 -345
  69. package/lib/Controllers/FilesController.js +5 -34
  70. package/lib/Controllers/HooksController.js +1 -51
  71. package/lib/Controllers/LiveQueryController.js +4 -23
  72. package/lib/Controllers/LoggerController.js +15 -54
  73. package/lib/Controllers/ParseGraphQLController.js +49 -104
  74. package/lib/Controllers/PushController.js +20 -59
  75. package/lib/Controllers/SchemaController.js +154 -344
  76. package/lib/Controllers/UserController.js +11 -72
  77. package/lib/Controllers/index.js +19 -68
  78. package/lib/Controllers/types.js +1 -1
  79. package/lib/Deprecator/Deprecations.js +1 -8
  80. package/lib/Deprecator/Deprecator.js +9 -18
  81. package/lib/GraphQL/ParseGraphQLSchema.js +16 -100
  82. package/lib/GraphQL/ParseGraphQLServer.js +2 -29
  83. package/lib/GraphQL/helpers/objectsMutations.js +2 -12
  84. package/lib/GraphQL/helpers/objectsQueries.js +18 -76
  85. package/lib/GraphQL/loaders/defaultGraphQLMutations.js +1 -9
  86. package/lib/GraphQL/loaders/defaultGraphQLQueries.js +1 -8
  87. package/lib/GraphQL/loaders/defaultGraphQLTypes.js +9 -115
  88. package/lib/GraphQL/loaders/defaultRelaySchema.js +6 -18
  89. package/lib/GraphQL/loaders/filesMutations.js +2 -19
  90. package/lib/GraphQL/loaders/functionsMutations.js +6 -17
  91. package/lib/GraphQL/loaders/parseClassMutations.js +6 -44
  92. package/lib/GraphQL/loaders/parseClassQueries.js +1 -26
  93. package/lib/GraphQL/loaders/parseClassTypes.js +10 -64
  94. package/lib/GraphQL/loaders/schemaDirectives.js +1 -17
  95. package/lib/GraphQL/loaders/schemaMutations.js +1 -20
  96. package/lib/GraphQL/loaders/schemaQueries.js +1 -14
  97. package/lib/GraphQL/loaders/schemaTypes.js +2 -6
  98. package/lib/GraphQL/loaders/usersMutations.js +6 -28
  99. package/lib/GraphQL/loaders/usersQueries.js +4 -26
  100. package/lib/GraphQL/parseGraphQLUtils.js +6 -19
  101. package/lib/GraphQL/transformers/className.js +1 -4
  102. package/lib/GraphQL/transformers/constraintType.js +1 -20
  103. package/lib/GraphQL/transformers/inputType.js +1 -20
  104. package/lib/GraphQL/transformers/mutation.js +6 -51
  105. package/lib/GraphQL/transformers/outputType.js +1 -20
  106. package/lib/GraphQL/transformers/query.js +6 -42
  107. package/lib/GraphQL/transformers/schemaFields.js +7 -34
  108. package/lib/KeyPromiseQueue.js +1 -12
  109. package/lib/LiveQuery/Client.js +1 -25
  110. package/lib/LiveQuery/Id.js +1 -7
  111. package/lib/LiveQuery/ParseCloudCodePublisher.js +13 -19
  112. package/lib/LiveQuery/ParseLiveQueryServer.js +92 -306
  113. package/lib/LiveQuery/ParsePubSub.js +1 -12
  114. package/lib/LiveQuery/ParseWebSocketServer.js +4 -26
  115. package/lib/LiveQuery/QueryTools.js +14 -116
  116. package/lib/LiveQuery/RequestSchema.js +1 -1
  117. package/lib/LiveQuery/SessionTokenCache.js +1 -17
  118. package/lib/LiveQuery/Subscription.js +4 -18
  119. package/lib/LiveQuery/equalObjects.js +2 -14
  120. package/lib/Options/Definitions.js +79 -10
  121. package/lib/Options/docs.js +23 -3
  122. package/lib/Options/index.js +4 -12
  123. package/lib/Options/parsers.js +1 -18
  124. package/lib/Page.js +1 -9
  125. package/lib/ParseMessageQueue.js +1 -10
  126. package/lib/ParseServer.js +144 -182
  127. package/lib/ParseServerRESTController.js +6 -33
  128. package/lib/PromiseRouter.js +16 -50
  129. package/lib/Push/PushQueue.js +3 -15
  130. package/lib/Push/PushWorker.js +7 -32
  131. package/lib/Push/utils.js +9 -38
  132. package/lib/RestQuery.js +105 -242
  133. package/lib/RestWrite.js +212 -377
  134. package/lib/Routers/AggregateRouter.js +14 -51
  135. package/lib/Routers/AnalyticsRouter.js +2 -8
  136. package/lib/Routers/AudiencesRouter.js +1 -15
  137. package/lib/Routers/ClassesRouter.js +3 -53
  138. package/lib/Routers/CloudCodeRouter.js +1 -19
  139. package/lib/Routers/FeaturesRouter.js +1 -10
  140. package/lib/Routers/FilesRouter.js +29 -76
  141. package/lib/Routers/FunctionsRouter.js +5 -28
  142. package/lib/Routers/GlobalConfigRouter.js +4 -18
  143. package/lib/Routers/GraphQLRouter.js +1 -14
  144. package/lib/Routers/HooksRouter.js +1 -29
  145. package/lib/Routers/IAPValidationRouter.js +6 -29
  146. package/lib/Routers/InstallationsRouter.js +2 -12
  147. package/lib/Routers/LogsRouter.js +4 -16
  148. package/lib/Routers/PagesRouter.js +69 -129
  149. package/lib/Routers/PublicAPIRouter.js +3 -62
  150. package/lib/Routers/PurgeRouter.js +1 -15
  151. package/lib/Routers/PushRouter.js +2 -18
  152. package/lib/Routers/RolesRouter.js +1 -7
  153. package/lib/Routers/SchemasRouter.js +4 -34
  154. package/lib/Routers/SecurityRouter.js +1 -12
  155. package/lib/Routers/SessionsRouter.js +3 -19
  156. package/lib/Routers/UsersRouter.js +58 -155
  157. package/lib/SchemaMigrations/DefinedSchemas.js +56 -115
  158. package/lib/SchemaMigrations/Migrations.js +2 -8
  159. package/lib/Security/Check.js +8 -16
  160. package/lib/Security/CheckGroup.js +4 -11
  161. package/lib/Security/CheckGroups/CheckGroupDatabase.js +8 -18
  162. package/lib/Security/CheckGroups/CheckGroupServerConfig.js +5 -15
  163. package/lib/Security/CheckGroups/CheckGroups.js +1 -4
  164. package/lib/Security/CheckRunner.js +22 -41
  165. package/lib/StatusHandler.js +12 -69
  166. package/lib/TestUtils.js +1 -6
  167. package/lib/Utils.js +27 -66
  168. package/lib/batch.js +17 -28
  169. package/lib/cache.js +1 -3
  170. package/lib/cli/definitions/parse-live-query-server.js +1 -3
  171. package/lib/cli/definitions/parse-server.js +1 -3
  172. package/lib/cli/parse-live-query-server.js +1 -6
  173. package/lib/cli/parse-server.js +11 -21
  174. package/lib/cli/utils/commander.js +13 -51
  175. package/lib/cli/utils/runner.js +1 -14
  176. package/lib/cloud-code/Parse.Cloud.js +71 -92
  177. package/lib/cryptoUtils.js +11 -19
  178. package/lib/defaults.js +2 -14
  179. package/lib/deprecated.js +1 -2
  180. package/lib/index.js +16 -34
  181. package/lib/logger.js +6 -13
  182. package/lib/middlewares.js +147 -151
  183. package/lib/password.js +6 -10
  184. package/lib/request.js +173 -2
  185. package/lib/requiredParameter.js +1 -3
  186. package/lib/rest.js +19 -41
  187. package/lib/triggers.js +54 -252
  188. package/lib/vendor/mongodbUrl.js +125 -305
  189. package/package.json +22 -19
  190. package/lib/cloud-code/HTTPResponse.js +0 -73
  191. package/lib/cloud-code/httpRequest.js +0 -192
@@ -2,26 +2,24 @@
2
2
 
3
3
  // Helper functions for accessing the microsoft graph API.
4
4
  var Parse = require('parse/node').Parse;
5
+ const httpsRequest = require('./httpsRequest');
5
6
 
6
- const httpsRequest = require('./httpsRequest'); // Returns a promise that fulfills if this user mail is valid.
7
-
8
-
7
+ // Returns a promise that fulfills if this user mail is valid.
9
8
  function validateAuthData(authData) {
10
9
  return request('me', authData.access_token).then(response => {
11
10
  if (response && response.id && response.id == authData.id) {
12
11
  return;
13
12
  }
14
-
15
13
  throw new Parse.Error(Parse.Error.OBJECT_NOT_FOUND, 'Microsoft Graph auth is invalid for this user.');
16
14
  });
17
- } // Returns a promise that fulfills if this app id is valid.
18
-
15
+ }
19
16
 
17
+ // Returns a promise that fulfills if this app id is valid.
20
18
  function validateAppId() {
21
19
  return Promise.resolve();
22
- } // A promisey wrapper for api requests
23
-
20
+ }
24
21
 
22
+ // A promisey wrapper for api requests
25
23
  function request(path, access_token) {
26
24
  return httpsRequest.get({
27
25
  host: 'graph.microsoft.com',
@@ -31,9 +29,8 @@ function request(path, access_token) {
31
29
  }
32
30
  });
33
31
  }
34
-
35
32
  module.exports = {
36
33
  validateAppId: validateAppId,
37
34
  validateAuthData: validateAuthData
38
35
  };
39
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9BZGFwdGVycy9BdXRoL21pY3Jvc29mdC5qcyJdLCJuYW1lcyI6WyJQYXJzZSIsInJlcXVpcmUiLCJodHRwc1JlcXVlc3QiLCJ2YWxpZGF0ZUF1dGhEYXRhIiwiYXV0aERhdGEiLCJyZXF1ZXN0IiwiYWNjZXNzX3Rva2VuIiwidGhlbiIsInJlc3BvbnNlIiwiaWQiLCJFcnJvciIsIk9CSkVDVF9OT1RfRk9VTkQiLCJ2YWxpZGF0ZUFwcElkIiwiUHJvbWlzZSIsInJlc29sdmUiLCJwYXRoIiwiZ2V0IiwiaG9zdCIsImhlYWRlcnMiLCJBdXRob3JpemF0aW9uIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6Ijs7QUFBQTtBQUNBLElBQUlBLEtBQUssR0FBR0MsT0FBTyxDQUFDLFlBQUQsQ0FBUCxDQUFzQkQsS0FBbEM7O0FBQ0EsTUFBTUUsWUFBWSxHQUFHRCxPQUFPLENBQUMsZ0JBQUQsQ0FBNUIsQyxDQUVBOzs7QUFDQSxTQUFTRSxnQkFBVCxDQUEwQkMsUUFBMUIsRUFBb0M7QUFDbEMsU0FBT0MsT0FBTyxDQUFDLElBQUQsRUFBT0QsUUFBUSxDQUFDRSxZQUFoQixDQUFQLENBQXFDQyxJQUFyQyxDQUEwQ0MsUUFBUSxJQUFJO0FBQzNELFFBQUlBLFFBQVEsSUFBSUEsUUFBUSxDQUFDQyxFQUFyQixJQUEyQkQsUUFBUSxDQUFDQyxFQUFULElBQWVMLFFBQVEsQ0FBQ0ssRUFBdkQsRUFBMkQ7QUFDekQ7QUFDRDs7QUFDRCxVQUFNLElBQUlULEtBQUssQ0FBQ1UsS0FBVixDQUNKVixLQUFLLENBQUNVLEtBQU4sQ0FBWUMsZ0JBRFIsRUFFSixnREFGSSxDQUFOO0FBSUQsR0FSTSxDQUFQO0FBU0QsQyxDQUVEOzs7QUFDQSxTQUFTQyxhQUFULEdBQXlCO0FBQ3ZCLFNBQU9DLE9BQU8sQ0FBQ0MsT0FBUixFQUFQO0FBQ0QsQyxDQUVEOzs7QUFDQSxTQUFTVCxPQUFULENBQWlCVSxJQUFqQixFQUF1QlQsWUFBdkIsRUFBcUM7QUFDbkMsU0FBT0osWUFBWSxDQUFDYyxHQUFiLENBQWlCO0FBQ3RCQyxJQUFBQSxJQUFJLEVBQUUscUJBRGdCO0FBRXRCRixJQUFBQSxJQUFJLEVBQUUsV0FBV0EsSUFGSztBQUd0QkcsSUFBQUEsT0FBTyxFQUFFO0FBQ1BDLE1BQUFBLGFBQWEsRUFBRSxZQUFZYjtBQURwQjtBQUhhLEdBQWpCLENBQVA7QUFPRDs7QUFFRGMsTUFBTSxDQUFDQyxPQUFQLEdBQWlCO0FBQ2ZULEVBQUFBLGFBQWEsRUFBRUEsYUFEQTtBQUVmVCxFQUFBQSxnQkFBZ0IsRUFBRUE7QUFGSCxDQUFqQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEhlbHBlciBmdW5jdGlvbnMgZm9yIGFjY2Vzc2luZyB0aGUgbWljcm9zb2Z0IGdyYXBoIEFQSS5cbnZhciBQYXJzZSA9IHJlcXVpcmUoJ3BhcnNlL25vZGUnKS5QYXJzZTtcbmNvbnN0IGh0dHBzUmVxdWVzdCA9IHJlcXVpcmUoJy4vaHR0cHNSZXF1ZXN0Jyk7XG5cbi8vIFJldHVybnMgYSBwcm9taXNlIHRoYXQgZnVsZmlsbHMgaWYgdGhpcyB1c2VyIG1haWwgaXMgdmFsaWQuXG5mdW5jdGlvbiB2YWxpZGF0ZUF1dGhEYXRhKGF1dGhEYXRhKSB7XG4gIHJldHVybiByZXF1ZXN0KCdtZScsIGF1dGhEYXRhLmFjY2Vzc190b2tlbikudGhlbihyZXNwb25zZSA9PiB7XG4gICAgaWYgKHJlc3BvbnNlICYmIHJlc3BvbnNlLmlkICYmIHJlc3BvbnNlLmlkID09IGF1dGhEYXRhLmlkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihcbiAgICAgIFBhcnNlLkVycm9yLk9CSkVDVF9OT1RfRk9VTkQsXG4gICAgICAnTWljcm9zb2Z0IEdyYXBoIGF1dGggaXMgaW52YWxpZCBmb3IgdGhpcyB1c2VyLidcbiAgICApO1xuICB9KTtcbn1cblxuLy8gUmV0dXJucyBhIHByb21pc2UgdGhhdCBmdWxmaWxscyBpZiB0aGlzIGFwcCBpZCBpcyB2YWxpZC5cbmZ1bmN0aW9uIHZhbGlkYXRlQXBwSWQoKSB7XG4gIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbn1cblxuLy8gQSBwcm9taXNleSB3cmFwcGVyIGZvciBhcGkgcmVxdWVzdHNcbmZ1bmN0aW9uIHJlcXVlc3QocGF0aCwgYWNjZXNzX3Rva2VuKSB7XG4gIHJldHVybiBodHRwc1JlcXVlc3QuZ2V0KHtcbiAgICBob3N0OiAnZ3JhcGgubWljcm9zb2Z0LmNvbScsXG4gICAgcGF0aDogJy92MS4wLycgKyBwYXRoLFxuICAgIGhlYWRlcnM6IHtcbiAgICAgIEF1dGhvcml6YXRpb246ICdCZWFyZXIgJyArIGFjY2Vzc190b2tlbixcbiAgICB9LFxuICB9KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHZhbGlkYXRlQXBwSWQ6IHZhbGlkYXRlQXBwSWQsXG4gIHZhbGlkYXRlQXV0aERhdGE6IHZhbGlkYXRlQXV0aERhdGEsXG59O1xuIl19
36
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQYXJzZSIsInJlcXVpcmUiLCJodHRwc1JlcXVlc3QiLCJ2YWxpZGF0ZUF1dGhEYXRhIiwiYXV0aERhdGEiLCJyZXF1ZXN0IiwiYWNjZXNzX3Rva2VuIiwidGhlbiIsInJlc3BvbnNlIiwiaWQiLCJFcnJvciIsIk9CSkVDVF9OT1RfRk9VTkQiLCJ2YWxpZGF0ZUFwcElkIiwiUHJvbWlzZSIsInJlc29sdmUiLCJwYXRoIiwiZ2V0IiwiaG9zdCIsImhlYWRlcnMiLCJBdXRob3JpemF0aW9uIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9BZGFwdGVycy9BdXRoL21pY3Jvc29mdC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBIZWxwZXIgZnVuY3Rpb25zIGZvciBhY2Nlc3NpbmcgdGhlIG1pY3Jvc29mdCBncmFwaCBBUEkuXG52YXIgUGFyc2UgPSByZXF1aXJlKCdwYXJzZS9ub2RlJykuUGFyc2U7XG5jb25zdCBodHRwc1JlcXVlc3QgPSByZXF1aXJlKCcuL2h0dHBzUmVxdWVzdCcpO1xuXG4vLyBSZXR1cm5zIGEgcHJvbWlzZSB0aGF0IGZ1bGZpbGxzIGlmIHRoaXMgdXNlciBtYWlsIGlzIHZhbGlkLlxuZnVuY3Rpb24gdmFsaWRhdGVBdXRoRGF0YShhdXRoRGF0YSkge1xuICByZXR1cm4gcmVxdWVzdCgnbWUnLCBhdXRoRGF0YS5hY2Nlc3NfdG9rZW4pLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgIGlmIChyZXNwb25zZSAmJiByZXNwb25zZS5pZCAmJiByZXNwb25zZS5pZCA9PSBhdXRoRGF0YS5pZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoXG4gICAgICBQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5ELFxuICAgICAgJ01pY3Jvc29mdCBHcmFwaCBhdXRoIGlzIGludmFsaWQgZm9yIHRoaXMgdXNlci4nXG4gICAgKTtcbiAgfSk7XG59XG5cbi8vIFJldHVybnMgYSBwcm9taXNlIHRoYXQgZnVsZmlsbHMgaWYgdGhpcyBhcHAgaWQgaXMgdmFsaWQuXG5mdW5jdGlvbiB2YWxpZGF0ZUFwcElkKCkge1xuICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG59XG5cbi8vIEEgcHJvbWlzZXkgd3JhcHBlciBmb3IgYXBpIHJlcXVlc3RzXG5mdW5jdGlvbiByZXF1ZXN0KHBhdGgsIGFjY2Vzc190b2tlbikge1xuICByZXR1cm4gaHR0cHNSZXF1ZXN0LmdldCh7XG4gICAgaG9zdDogJ2dyYXBoLm1pY3Jvc29mdC5jb20nLFxuICAgIHBhdGg6ICcvdjEuMC8nICsgcGF0aCxcbiAgICBoZWFkZXJzOiB7XG4gICAgICBBdXRob3JpemF0aW9uOiAnQmVhcmVyICcgKyBhY2Nlc3NfdG9rZW4sXG4gICAgfSxcbiAgfSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICB2YWxpZGF0ZUFwcElkOiB2YWxpZGF0ZUFwcElkLFxuICB2YWxpZGF0ZUF1dGhEYXRhOiB2YWxpZGF0ZUF1dGhEYXRhLFxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQTtBQUNBLElBQUlBLEtBQUssR0FBR0MsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDRCxLQUFLO0FBQ3ZDLE1BQU1FLFlBQVksR0FBR0QsT0FBTyxDQUFDLGdCQUFnQixDQUFDOztBQUU5QztBQUNBLFNBQVNFLGdCQUFnQixDQUFDQyxRQUFRLEVBQUU7RUFDbEMsT0FBT0MsT0FBTyxDQUFDLElBQUksRUFBRUQsUUFBUSxDQUFDRSxZQUFZLENBQUMsQ0FBQ0MsSUFBSSxDQUFDQyxRQUFRLElBQUk7SUFDM0QsSUFBSUEsUUFBUSxJQUFJQSxRQUFRLENBQUNDLEVBQUUsSUFBSUQsUUFBUSxDQUFDQyxFQUFFLElBQUlMLFFBQVEsQ0FBQ0ssRUFBRSxFQUFFO01BQ3pEO0lBQ0Y7SUFDQSxNQUFNLElBQUlULEtBQUssQ0FBQ1UsS0FBSyxDQUNuQlYsS0FBSyxDQUFDVSxLQUFLLENBQUNDLGdCQUFnQixFQUM1QixnREFBZ0QsQ0FDakQ7RUFDSCxDQUFDLENBQUM7QUFDSjs7QUFFQTtBQUNBLFNBQVNDLGFBQWEsR0FBRztFQUN2QixPQUFPQyxPQUFPLENBQUNDLE9BQU8sRUFBRTtBQUMxQjs7QUFFQTtBQUNBLFNBQVNULE9BQU8sQ0FBQ1UsSUFBSSxFQUFFVCxZQUFZLEVBQUU7RUFDbkMsT0FBT0osWUFBWSxDQUFDYyxHQUFHLENBQUM7SUFDdEJDLElBQUksRUFBRSxxQkFBcUI7SUFDM0JGLElBQUksRUFBRSxRQUFRLEdBQUdBLElBQUk7SUFDckJHLE9BQU8sRUFBRTtNQUNQQyxhQUFhLEVBQUUsU0FBUyxHQUFHYjtJQUM3QjtFQUNGLENBQUMsQ0FBQztBQUNKO0FBRUFjLE1BQU0sQ0FBQ0MsT0FBTyxHQUFHO0VBQ2ZULGFBQWEsRUFBRUEsYUFBYTtFQUM1QlQsZ0JBQWdCLEVBQUVBO0FBQ3BCLENBQUMifQ==
@@ -54,17 +54,16 @@
54
54
  * }
55
55
  * }
56
56
  */
57
- const Parse = require('parse/node').Parse;
58
57
 
58
+ const Parse = require('parse/node').Parse;
59
59
  const querystring = require('querystring');
60
-
61
60
  const httpsRequest = require('./httpsRequest');
62
-
63
61
  const INVALID_ACCESS = 'OAuth2 access token is invalid for this user.';
64
62
  const INVALID_ACCESS_APPID = "OAuth2: the access_token's appID is empty or is not in the list of permitted appIDs in the auth configuration.";
65
63
  const MISSING_APPIDS = 'OAuth2 configuration is missing the client app IDs ("appIds" config parameter).';
66
- const MISSING_URL = 'OAuth2 token introspection endpoint URL is missing from configuration!'; // Returns a promise that fulfills if this user id is valid.
64
+ const MISSING_URL = 'OAuth2 token introspection endpoint URL is missing from configuration!';
67
65
 
66
+ // Returns a promise that fulfills if this user id is valid.
68
67
  function validateAuthData(authData, options) {
69
68
  return requestTokenInfo(options, authData.access_token).then(response => {
70
69
  if (!response || !response.active || options.useridField && authData.id !== response[options.useridField]) {
@@ -72,29 +71,22 @@ function validateAuthData(authData, options) {
72
71
  }
73
72
  });
74
73
  }
75
-
76
74
  function validateAppId(appIds, authData, options) {
77
75
  if (!options || !options.appidField) {
78
76
  return Promise.resolve();
79
77
  }
80
-
81
78
  if (!appIds || appIds.length === 0) {
82
79
  throw new Parse.Error(Parse.Error.OBJECT_NOT_FOUND, MISSING_APPIDS);
83
80
  }
84
-
85
81
  return requestTokenInfo(options, authData.access_token).then(response => {
86
82
  if (!response || !response.active) {
87
83
  throw new Parse.Error(Parse.Error.OBJECT_NOT_FOUND, INVALID_ACCESS);
88
84
  }
89
-
90
85
  const appidField = options.appidField;
91
-
92
86
  if (!response[appidField]) {
93
87
  throw new Parse.Error(Parse.Error.OBJECT_NOT_FOUND, INVALID_ACCESS_APPID);
94
88
  }
95
-
96
89
  const responseValue = response[appidField];
97
-
98
90
  if (!Array.isArray(responseValue) && appIds.includes(responseValue)) {
99
91
  return;
100
92
  } else if (Array.isArray(responseValue) && responseValue.some(appId => appIds.includes(appId))) {
@@ -103,14 +95,13 @@ function validateAppId(appIds, authData, options) {
103
95
  throw new Parse.Error(Parse.Error.OBJECT_NOT_FOUND, INVALID_ACCESS_APPID);
104
96
  }
105
97
  });
106
- } // A promise wrapper for requests to the OAuth2 token introspection endpoint.
107
-
98
+ }
108
99
 
100
+ // A promise wrapper for requests to the OAuth2 token introspection endpoint.
109
101
  function requestTokenInfo(options, access_token) {
110
102
  if (!options || !options.tokenIntrospectionEndpointUrl) {
111
103
  throw new Parse.Error(Parse.Error.OBJECT_NOT_FOUND, MISSING_URL);
112
104
  }
113
-
114
105
  const parsedUrl = new URL(options.tokenIntrospectionEndpointUrl);
115
106
  const postData = querystring.stringify({
116
107
  token: access_token
@@ -119,11 +110,9 @@ function requestTokenInfo(options, access_token) {
119
110
  'Content-Type': 'application/x-www-form-urlencoded',
120
111
  'Content-Length': Buffer.byteLength(postData)
121
112
  };
122
-
123
113
  if (options.authorizationHeader) {
124
114
  headers['Authorization'] = options.authorizationHeader;
125
115
  }
126
-
127
116
  const postOptions = {
128
117
  hostname: parsedUrl.hostname,
129
118
  path: parsedUrl.pathname,
@@ -132,9 +121,8 @@ function requestTokenInfo(options, access_token) {
132
121
  };
133
122
  return httpsRequest.request(postOptions, postData);
134
123
  }
135
-
136
124
  module.exports = {
137
125
  validateAppId: validateAppId,
138
126
  validateAuthData: validateAuthData
139
127
  };
140
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9BZGFwdGVycy9BdXRoL29hdXRoMi5qcyJdLCJuYW1lcyI6WyJQYXJzZSIsInJlcXVpcmUiLCJxdWVyeXN0cmluZyIsImh0dHBzUmVxdWVzdCIsIklOVkFMSURfQUNDRVNTIiwiSU5WQUxJRF9BQ0NFU1NfQVBQSUQiLCJNSVNTSU5HX0FQUElEUyIsIk1JU1NJTkdfVVJMIiwidmFsaWRhdGVBdXRoRGF0YSIsImF1dGhEYXRhIiwib3B0aW9ucyIsInJlcXVlc3RUb2tlbkluZm8iLCJhY2Nlc3NfdG9rZW4iLCJ0aGVuIiwicmVzcG9uc2UiLCJhY3RpdmUiLCJ1c2VyaWRGaWVsZCIsImlkIiwiRXJyb3IiLCJPQkpFQ1RfTk9UX0ZPVU5EIiwidmFsaWRhdGVBcHBJZCIsImFwcElkcyIsImFwcGlkRmllbGQiLCJQcm9taXNlIiwicmVzb2x2ZSIsImxlbmd0aCIsInJlc3BvbnNlVmFsdWUiLCJBcnJheSIsImlzQXJyYXkiLCJpbmNsdWRlcyIsInNvbWUiLCJhcHBJZCIsInRva2VuSW50cm9zcGVjdGlvbkVuZHBvaW50VXJsIiwicGFyc2VkVXJsIiwiVVJMIiwicG9zdERhdGEiLCJzdHJpbmdpZnkiLCJ0b2tlbiIsImhlYWRlcnMiLCJCdWZmZXIiLCJieXRlTGVuZ3RoIiwiYXV0aG9yaXphdGlvbkhlYWRlciIsInBvc3RPcHRpb25zIiwiaG9zdG5hbWUiLCJwYXRoIiwicGF0aG5hbWUiLCJtZXRob2QiLCJyZXF1ZXN0IiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6Ijs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNB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aUI7QUFDZjdCLEVBQUFBLGFBQWEsRUFBRUEsYUFEQTtBQUVmWixFQUFBQSxnQkFBZ0IsRUFBRUE7QUFGSCxDQUFqQiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBUaGlzIGF1dGggYWRhcHRlciBpcyBiYXNlZCBvbiB0aGUgT0F1dGggMi4wIFRva2VuIEludHJvc3BlY3Rpb24gc3BlY2lmaWNhdGlvbi5cbiAqIFNlZSBSRkMgNzY2MiBmb3IgZGV0YWlscyAoaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzc2NjIpLlxuICogSXQncyBwdXJwb3NlIGlzIHRvIHZhbGlkYXRlIE9BdXRoMiBhY2Nlc3MgdG9rZW5zIHVzaW5nIHRoZSBPQXV0aDIgcHJvdmlkZXInc1xuICogdG9rZW4gaW50cm9zcGVjdGlvbiBlbmRwb2ludCAoaWYgaW1wbGVtZW50ZWQgYnkgdGhlIHByb3ZpZGVyKS5cbiAqXG4gKiBUaGUgYWRhcHRlciBhY2NlcHRzIHRoZSBmb2xsb3dpbmcgY29uZmlnIHBhcmFtZXRlcnM6XG4gKlxuICogMS4gXCJ0b2tlbkludHJvc3BlY3Rpb25FbmRwb2ludFVybFwiIChzdHJpbmcsIHJlcXVpcmVkKVxuICogICAgICBUaGUgVVJMIG9mIHRoZSB0b2tlbiBpbnRyb3NwZWN0aW9uIGVuZHBvaW50IG9mIHRoZSBPQXV0aDIgcHJvdmlkZXIgdGhhdFxuICogICAgICBpc3N1ZWQgdGhlIGFjY2VzcyB0b2tlbiB0byB0aGUgY2xpZW50IHRoYXQgaXMgdG8gYmUgdmFsaWRhdGVkLlxuICpcbiAqIDIuIFwidXNlcmlkRmllbGRcIiAoc3RyaW5nLCBvcHRpb25hbClcbiAqICAgICAgVGhlIG5hbWUgb2YgdGhlIGZpZWxkIGluIHRoZSB0b2tlbiBpbnRyb3NwZWN0aW9uIHJlc3BvbnNlIHRoYXQgY29udGFpbnNcbiAqICAgICAgdGhlIHVzZXJpZC4gSWYgc3BlY2lmaWVkLCBpdCB3aWxsIGJlIHVzZWQgdG8gdmVyaWZ5IHRoZSB2YWx1ZSBvZiB0aGUgXCJpZFwiXG4gKiAgICAgIGZpZWxkIGluIHRoZSBcImF1dGhEYXRhXCIgSlNPTiB0aGF0IGlzIGNvbWluZyBmcm9tIHRoZSBjbGllbnQuXG4gKiAgICAgIFRoaXMgY2FuIGJlIHRoZSBcImF1ZFwiIChpLmUuIGF1ZGllbmNlKSwgdGhlIFwic3ViXCIgKGkuZS4gc3ViamVjdCkgb3IgdGhlXG4gKiAgICAgIFwidXNlcm5hbWVcIiBmaWVsZCBpbiB0aGUgaW50cm9zcGVjdGlvbiByZXNwb25zZSwgYnV0IHNpbmNlIG9ubHkgdGhlXG4gKiAgICAgIFwiYWN0aXZlXCIgZmllbGQgaXMgcmVxdWlyZWQgYW5kIGFsbCBvdGhlciByZXBvbnNlIGZpZWxkcyBhcmUgb3B0aW9uYWxcbiAqICAgICAgaW4gdGhlIFJGQywgaXQgaGFzIHRvIGJlIG9wdGlvbmFsIGluIHRoaXMgYWRhcHRlciBhcyB3ZWxsLlxuICogICAgICBEZWZhdWx0OiAtICh1bmRlZmluZWQpXG4gKlxuICogMy4gXCJhcHBpZEZpZWxkXCIgKHN0cmluZywgb3B0aW9uYWwpXG4gKiAgICAgIFRoZSBuYW1lIG9mIHRoZSBmaWVsZCBpbiB0aGUgdG9rZW4gaW50cm9zcGVjdGlvbiByZXNwb25zZSB0aGF0IGNvbnRhaW5zXG4gKiAgICAgIHRoZSBhcHBJZCBvZiB0aGUgY2xpZW50LiBJZiBzcGVjaWZpZWQsIGl0IHdpbGwgYmUgdXNlZCB0byB2ZXJpZnkgaXQnc1xuICogICAgICB2YWx1ZSBhZ2FpbnN0IHRoZSBzZXQgb2YgYXBwSWRzIGluIHRoZSBhZGFwdGVyIGNvbmZpZy4gVGhlIGNvbmNlcHQgb2ZcbiAqICAgICAgYXBwSWRzIGNvbWVzIGZyb20gdGhlIHR3byBtYWpvciBzb2NpYWwgbG9naW4gcHJvdmlkZXJzXG4gKiAgICAgIChHb29nbGUgYW5kIEZhY2Vib29rKS4gVGhleSBoYXZlIG5vdCB5ZXQgaW1wbGVtZW50ZWQgdGhlIHRva2VuXG4gKiAgICAgIGludHJvc3BlY3Rpb24gZW5kcG9pbnQsIGJ1dCB0aGUgY29uY2VwdCBjYW4gYmUgdmFsaWQgZm9yIGFueSBPQXV0aDJcbiAqICAgICAgcHJvdmlkZXIuXG4gKiAgICAgIERlZmF1bHQ6IC0gKHVuZGVmaW5lZClcbiAqXG4gKiA0LiBcImFwcElkc1wiIChhcnJheSBvZiBzdHJpbmdzLCByZXF1aXJlZCBpZiBhcHBpZEZpZWxkIGlzIGRlZmluZWQpXG4gKiAgICAgIEEgc2V0IG9mIGFwcElkcyB0aGF0IGFyZSB1c2VkIHRvIHJlc3RyaWN0IGFjY2VwdGVkIGFjY2VzcyB0b2tlbnMgYmFzZWRcbiAqICAgICAgb24gYSBzcGVjaWZpYyBmaWVsZCdzIHZhbHVlIGluIHRoZSB0b2tlbiBpbnRyb3NwZWN0aW9uIHJlc3BvbnNlLlxuICogICAgICBEZWZhdWx0OiAtICh1bmRlZmluZWQpXG4gKlxuICogNS4gXCJhdXRob3JpemF0aW9uSGVhZGVyXCIgKHN0cmluZywgb3B0aW9uYWwpXG4gKiAgICAgIFRoZSB2YWx1ZSBvZiB0aGUgXCJBdXRob3JpemF0aW9uXCIgSFRUUCBoZWFkZXIgaW4gcmVxdWVzdHMgc2VudCB0byB0aGVcbiAqICAgICAgaW50cm9zcGVjdGlvbiBlbmRwb2ludC4gSXQgbXVzdCBjb250YWluIHRoZSByYXcgdmFsdWUuXG4gKiAgICAgIFRodXMgaWYgSFRUUCBCYXNpYyBhdXRob3JpemF0aW9uIGlzIHRvIGJlIHVzZWQsIGl0IG11c3QgY29udGFpbiB0aGVcbiAqICAgICAgXCJCYXNpY1wiIHN0cmluZywgZm9sbG93ZWQgYnkgd2hpdGVzcGFjZSwgdGhlbiBieSB0aGUgYmFzZTY0IGVuY29kZWRcbiAqICAgICAgdmVyc2lvbiBvZiB0aGUgY29uY2F0ZW5hdGVkIDx1c2VybmFtZT4gKyBcIjpcIiArIDxwYXNzd29yZD4gc3RyaW5nLlxuICogICAgICBFZy4gXCJCYXNpYyBkWE5sY201aGJXVTZjR0Z6YzNkdmNtUT1cIlxuICpcbiAqIFRoZSBhZGFwdGVyIGV4cGVjdHMgcmVxdWVzdHMgd2l0aCB0aGUgZm9sbG93aW5nIGF1dGhEYXRhIEpTT046XG4gKlxuICoge1xuICogICBcInNvbWVhZGFwdGVyXCI6IHtcbiAqICAgICBcImlkXCI6IFwidXNlcidzIE9BdXRoMiBwcm92aWRlci1zcGVjaWZpYyBpZCBhcyBhIHN0cmluZ1wiLFxuICogICAgIFwiYWNjZXNzX3Rva2VuXCI6IFwiYW4gYXV0aG9yaXplZCBPQXV0aDIgYWNjZXNzIHRva2VuIGZvciB0aGUgdXNlclwiLFxuICogICB9XG4gKiB9XG4gKi9cblxuY29uc3QgUGFyc2UgPSByZXF1aXJlKCdwYXJzZS9ub2RlJykuUGFyc2U7XG5jb25zdCBxdWVyeXN0cmluZyA9IHJlcXVpcmUoJ3F1ZXJ5c3RyaW5nJyk7XG5jb25zdCBodHRwc1JlcXVlc3QgPSByZXF1aXJlKCcuL2h0dHBzUmVxdWVzdCcpO1xuXG5jb25zdCBJTlZBTElEX0FDQ0VTUyA9ICdPQXV0aDIgYWNjZXNzIHRva2VuIGlzIGludmFsaWQgZm9yIHRoaXMgdXNlci4nO1xuY29uc3QgSU5WQUxJRF9BQ0NFU1NfQVBQSUQgPVxuICBcIk9BdXRoMjogdGhlIGFjY2Vzc190b2tlbidzIGFwcElEIGlzIGVtcHR5IG9yIGlzIG5vdCBpbiB0aGUgbGlzdCBvZiBwZXJtaXR0ZWQgYXBwSURzIGluIHRoZSBhdXRoIGNvbmZpZ3VyYXRpb24uXCI7XG5jb25zdCBNSVNTSU5HX0FQUElEUyA9XG4gICdPQXV0aDIgY29uZmlndXJhdGlvbiBpcyBtaXNzaW5nIHRoZSBjbGllbnQgYXBwIElEcyAoXCJhcHBJZHNcIiBjb25maWcgcGFyYW1ldGVyKS4nO1xuY29uc3QgTUlTU0lOR19VUkwgPSAnT0F1dGgyIHRva2VuIGludHJvc3BlY3Rpb24gZW5kcG9pbnQgVVJMIGlzIG1pc3NpbmcgZnJvbSBjb25maWd1cmF0aW9uISc7XG5cbi8vIFJldHVybnMgYSBwcm9taXNlIHRoYXQgZnVsZmlsbHMgaWYgdGhpcyB1c2VyIGlkIGlzIHZhbGlkLlxuZnVuY3Rpb24gdmFsaWRhdGVBdXRoRGF0YShhdXRoRGF0YSwgb3B0aW9ucykge1xuICByZXR1cm4gcmVxdWVzdFRva2VuSW5mbyhvcHRpb25zLCBhdXRoRGF0YS5hY2Nlc3NfdG9rZW4pLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgIGlmIChcbiAgICAgICFyZXNwb25zZSB8fFxuICAgICAgIXJlc3BvbnNlLmFjdGl2ZSB8fFxuICAgICAgKG9wdGlvbnMudXNlcmlkRmllbGQgJiYgYXV0aERhdGEuaWQgIT09IHJlc3BvbnNlW29wdGlvbnMudXNlcmlkRmllbGRdKVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLk9CSkVDVF9OT1RfRk9VTkQsIElOVkFMSURfQUNDRVNTKTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZUFwcElkKGFwcElkcywgYXV0aERhdGEsIG9wdGlvbnMpIHtcbiAgaWYgKCFvcHRpb25zIHx8ICFvcHRpb25zLmFwcGlkRmllbGQpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gIH1cbiAgaWYgKCFhcHBJZHMgfHwgYXBwSWRzLmxlbmd0aCA9PT0gMCkge1xuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5ELCBNSVNTSU5HX0FQUElEUyk7XG4gIH1cbiAgcmV0dXJuIHJlcXVlc3RUb2tlbkluZm8ob3B0aW9ucywgYXV0aERhdGEuYWNjZXNzX3Rva2VuKS50aGVuKHJlc3BvbnNlID0+IHtcbiAgICBpZiAoIXJlc3BvbnNlIHx8ICFyZXNwb25zZS5hY3RpdmUpIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5ELCBJTlZBTElEX0FDQ0VTUyk7XG4gICAgfVxuICAgIGNvbnN0IGFwcGlkRmllbGQgPSBvcHRpb25zLmFwcGlkRmllbGQ7XG4gICAgaWYgKCFyZXNwb25zZVthcHBpZEZpZWxkXSkge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLk9CSkVDVF9OT1RfRk9VTkQsIElOVkFMSURfQUNDRVNTX0FQUElEKTtcbiAgICB9XG4gICAgY29uc3QgcmVzcG9uc2VWYWx1ZSA9IHJlc3BvbnNlW2FwcGlkRmllbGRdO1xuICAgIGlmICghQXJyYXkuaXNBcnJheShyZXNwb25zZVZhbHVlKSAmJiBhcHBJZHMuaW5jbHVkZXMocmVzcG9uc2VWYWx1ZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgQXJyYXkuaXNBcnJheShyZXNwb25zZVZhbHVlKSAmJlxuICAgICAgcmVzcG9uc2VWYWx1ZS5zb21lKGFwcElkID0+IGFwcElkcy5pbmNsdWRlcyhhcHBJZCkpXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5ELCBJTlZBTElEX0FDQ0VTU19BUFBJRCk7XG4gICAgfVxuICB9KTtcbn1cblxuLy8gQSBwcm9taXNlIHdyYXBwZXIgZm9yIHJlcXVlc3RzIHRvIHRoZSBPQXV0aDIgdG9rZW4gaW50cm9zcGVjdGlvbiBlbmRwb2ludC5cbmZ1bmN0aW9uIHJlcXVlc3RUb2tlbkluZm8ob3B0aW9ucywgYWNjZXNzX3Rva2VuKSB7XG4gIGlmICghb3B0aW9ucyB8fCAhb3B0aW9ucy50b2tlbkludHJvc3BlY3Rpb25FbmRwb2ludFVybCkge1xuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5ELCBNSVNTSU5HX1VSTCk7XG4gIH1cbiAgY29uc3QgcGFyc2VkVXJsID0gbmV3IFVSTChvcHRpb25zLnRva2VuSW50cm9zcGVjdGlvbkVuZHBvaW50VXJsKTtcbiAgY29uc3QgcG9zdERhdGEgPSBxdWVyeXN0cmluZy5zdHJpbmdpZnkoe1xuICAgIHRva2VuOiBhY2Nlc3NfdG9rZW4sXG4gIH0pO1xuICBjb25zdCBoZWFkZXJzID0ge1xuICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyxcbiAgICAnQ29udGVudC1MZW5ndGgnOiBCdWZmZXIuYnl0ZUxlbmd0aChwb3N0RGF0YSksXG4gIH07XG4gIGlmIChvcHRpb25zLmF1dGhvcml6YXRpb25IZWFkZXIpIHtcbiAgICBoZWFkZXJzWydBdXRob3JpemF0aW9uJ10gPSBvcHRpb25zLmF1dGhvcml6YXRpb25IZWFkZXI7XG4gIH1cbiAgY29uc3QgcG9zdE9wdGlvbnMgPSB7XG4gICAgaG9zdG5hbWU6IHBhcnNlZFVybC5ob3N0bmFtZSxcbiAgICBwYXRoOiBwYXJzZWRVcmwucGF0aG5hbWUsXG4gICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgaGVhZGVyczogaGVhZGVycyxcbiAgfTtcbiAgcmV0dXJuIGh0dHBzUmVxdWVzdC5yZXF1ZXN0KHBvc3RPcHRpb25zLCBwb3N0RGF0YSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICB2YWxpZGF0ZUFwcElkOiB2YWxpZGF0ZUFwcElkLFxuICB2YWxpZGF0ZUF1dGhEYXRhOiB2YWxpZGF0ZUF1dGhEYXRhLFxufTtcbiJdfQ==
128
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQYXJzZSIsInJlcXVpcmUiLCJxdWVyeXN0cmluZyIsImh0dHBzUmVxdWVzdCIsIklOVkFMSURfQUNDRVNTIiwiSU5WQUxJRF9BQ0NFU1NfQVBQSUQiLCJNSVNTSU5HX0FQUElEUyIsIk1JU1NJTkdfVVJMIiwidmFsaWRhdGVBdXRoRGF0YSIsImF1dGhEYXRhIiwib3B0aW9ucyIsInJlcXVlc3RUb2tlbkluZm8iLCJhY2Nlc3NfdG9rZW4iLCJ0aGVuIiwicmVzcG9uc2UiLCJhY3RpdmUiLCJ1c2VyaWRGaWVsZCIsImlkIiwiRXJyb3IiLCJPQkpFQ1RfTk9UX0ZPVU5EIiwidmFsaWRhdGVBcHBJZCIsImFwcElkcyIsImFwcGlkRmllbGQiLCJQcm9taXNlIiwicmVzb2x2ZSIsImxlbmd0aCIsInJlc3BvbnNlVmFsdWUiLCJBcnJheSIsImlzQXJyYXkiLCJpbmNsdWRlcyIsInNvbWUiLCJhcHBJZCIsInRva2VuSW50cm9zcGVjdGlvbkVuZHBvaW50VXJsIiwicGFyc2VkVXJsIiwiVVJMIiwicG9zdERhdGEiLCJzdHJpbmdpZnkiLCJ0b2tlbiIsImhlYWRlcnMiLCJCdWZmZXIiLCJieXRlTGVuZ3RoIiwiYXV0aG9yaXphdGlvbkhlYWRlciIsInBvc3RPcHRpb25zIiwiaG9zdG5hbWUiLCJwYXRoIiwicGF0aG5hbWUiLCJtZXRob2QiLCJyZXF1ZXN0IiwibW9kdWxlIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9BZGFwdGVycy9BdXRoL29hdXRoMi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogVGhpcyBhdXRoIGFkYXB0ZXIgaXMgYmFzZWQgb24gdGhlIE9BdXRoIDIuMCBUb2tlbiBJbnRyb3NwZWN0aW9uIHNwZWNpZmljYXRpb24uXG4gKiBTZWUgUkZDIDc2NjIgZm9yIGRldGFpbHMgKGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3NjYyKS5cbiAqIEl0J3MgcHVycG9zZSBpcyB0byB2YWxpZGF0ZSBPQXV0aDIgYWNjZXNzIHRva2VucyB1c2luZyB0aGUgT0F1dGgyIHByb3ZpZGVyJ3NcbiAqIHRva2VuIGludHJvc3BlY3Rpb24gZW5kcG9pbnQgKGlmIGltcGxlbWVudGVkIGJ5IHRoZSBwcm92aWRlcikuXG4gKlxuICogVGhlIGFkYXB0ZXIgYWNjZXB0cyB0aGUgZm9sbG93aW5nIGNvbmZpZyBwYXJhbWV0ZXJzOlxuICpcbiAqIDEuIFwidG9rZW5JbnRyb3NwZWN0aW9uRW5kcG9pbnRVcmxcIiAoc3RyaW5nLCByZXF1aXJlZClcbiAqICAgICAgVGhlIFVSTCBvZiB0aGUgdG9rZW4gaW50cm9zcGVjdGlvbiBlbmRwb2ludCBvZiB0aGUgT0F1dGgyIHByb3ZpZGVyIHRoYXRcbiAqICAgICAgaXNzdWVkIHRoZSBhY2Nlc3MgdG9rZW4gdG8gdGhlIGNsaWVudCB0aGF0IGlzIHRvIGJlIHZhbGlkYXRlZC5cbiAqXG4gKiAyLiBcInVzZXJpZEZpZWxkXCIgKHN0cmluZywgb3B0aW9uYWwpXG4gKiAgICAgIFRoZSBuYW1lIG9mIHRoZSBmaWVsZCBpbiB0aGUgdG9rZW4gaW50cm9zcGVjdGlvbiByZXNwb25zZSB0aGF0IGNvbnRhaW5zXG4gKiAgICAgIHRoZSB1c2VyaWQuIElmIHNwZWNpZmllZCwgaXQgd2lsbCBiZSB1c2VkIHRvIHZlcmlmeSB0aGUgdmFsdWUgb2YgdGhlIFwiaWRcIlxuICogICAgICBmaWVsZCBpbiB0aGUgXCJhdXRoRGF0YVwiIEpTT04gdGhhdCBpcyBjb21pbmcgZnJvbSB0aGUgY2xpZW50LlxuICogICAgICBUaGlzIGNhbiBiZSB0aGUgXCJhdWRcIiAoaS5lLiBhdWRpZW5jZSksIHRoZSBcInN1YlwiIChpLmUuIHN1YmplY3QpIG9yIHRoZVxuICogICAgICBcInVzZXJuYW1lXCIgZmllbGQgaW4gdGhlIGludHJvc3BlY3Rpb24gcmVzcG9uc2UsIGJ1dCBzaW5jZSBvbmx5IHRoZVxuICogICAgICBcImFjdGl2ZVwiIGZpZWxkIGlzIHJlcXVpcmVkIGFuZCBhbGwgb3RoZXIgcmVwb25zZSBmaWVsZHMgYXJlIG9wdGlvbmFsXG4gKiAgICAgIGluIHRoZSBSRkMsIGl0IGhhcyB0byBiZSBvcHRpb25hbCBpbiB0aGlzIGFkYXB0ZXIgYXMgd2VsbC5cbiAqICAgICAgRGVmYXVsdDogLSAodW5kZWZpbmVkKVxuICpcbiAqIDMuIFwiYXBwaWRGaWVsZFwiIChzdHJpbmcsIG9wdGlvbmFsKVxuICogICAgICBUaGUgbmFtZSBvZiB0aGUgZmllbGQgaW4gdGhlIHRva2VuIGludHJvc3BlY3Rpb24gcmVzcG9uc2UgdGhhdCBjb250YWluc1xuICogICAgICB0aGUgYXBwSWQgb2YgdGhlIGNsaWVudC4gSWYgc3BlY2lmaWVkLCBpdCB3aWxsIGJlIHVzZWQgdG8gdmVyaWZ5IGl0J3NcbiAqICAgICAgdmFsdWUgYWdhaW5zdCB0aGUgc2V0IG9mIGFwcElkcyBpbiB0aGUgYWRhcHRlciBjb25maWcuIFRoZSBjb25jZXB0IG9mXG4gKiAgICAgIGFwcElkcyBjb21lcyBmcm9tIHRoZSB0d28gbWFqb3Igc29jaWFsIGxvZ2luIHByb3ZpZGVyc1xuICogICAgICAoR29vZ2xlIGFuZCBGYWNlYm9vaykuIFRoZXkgaGF2ZSBub3QgeWV0IGltcGxlbWVudGVkIHRoZSB0b2tlblxuICogICAgICBpbnRyb3NwZWN0aW9uIGVuZHBvaW50LCBidXQgdGhlIGNvbmNlcHQgY2FuIGJlIHZhbGlkIGZvciBhbnkgT0F1dGgyXG4gKiAgICAgIHByb3ZpZGVyLlxuICogICAgICBEZWZhdWx0OiAtICh1bmRlZmluZWQpXG4gKlxuICogNC4gXCJhcHBJZHNcIiAoYXJyYXkgb2Ygc3RyaW5ncywgcmVxdWlyZWQgaWYgYXBwaWRGaWVsZCBpcyBkZWZpbmVkKVxuICogICAgICBBIHNldCBvZiBhcHBJZHMgdGhhdCBhcmUgdXNlZCB0byByZXN0cmljdCBhY2NlcHRlZCBhY2Nlc3MgdG9rZW5zIGJhc2VkXG4gKiAgICAgIG9uIGEgc3BlY2lmaWMgZmllbGQncyB2YWx1ZSBpbiB0aGUgdG9rZW4gaW50cm9zcGVjdGlvbiByZXNwb25zZS5cbiAqICAgICAgRGVmYXVsdDogLSAodW5kZWZpbmVkKVxuICpcbiAqIDUuIFwiYXV0aG9yaXphdGlvbkhlYWRlclwiIChzdHJpbmcsIG9wdGlvbmFsKVxuICogICAgICBUaGUgdmFsdWUgb2YgdGhlIFwiQXV0aG9yaXphdGlvblwiIEhUVFAgaGVhZGVyIGluIHJlcXVlc3RzIHNlbnQgdG8gdGhlXG4gKiAgICAgIGludHJvc3BlY3Rpb24gZW5kcG9pbnQuIEl0IG11c3QgY29udGFpbiB0aGUgcmF3IHZhbHVlLlxuICogICAgICBUaHVzIGlmIEhUVFAgQmFzaWMgYXV0aG9yaXphdGlvbiBpcyB0byBiZSB1c2VkLCBpdCBtdXN0IGNvbnRhaW4gdGhlXG4gKiAgICAgIFwiQmFzaWNcIiBzdHJpbmcsIGZvbGxvd2VkIGJ5IHdoaXRlc3BhY2UsIHRoZW4gYnkgdGhlIGJhc2U2NCBlbmNvZGVkXG4gKiAgICAgIHZlcnNpb24gb2YgdGhlIGNvbmNhdGVuYXRlZCA8dXNlcm5hbWU+ICsgXCI6XCIgKyA8cGFzc3dvcmQ+IHN0cmluZy5cbiAqICAgICAgRWcuIFwiQmFzaWMgZFhObGNtNWhiV1U2Y0dGemMzZHZjbVE9XCJcbiAqXG4gKiBUaGUgYWRhcHRlciBleHBlY3RzIHJlcXVlc3RzIHdpdGggdGhlIGZvbGxvd2luZyBhdXRoRGF0YSBKU09OOlxuICpcbiAqIHtcbiAqICAgXCJzb21lYWRhcHRlclwiOiB7XG4gKiAgICAgXCJpZFwiOiBcInVzZXIncyBPQXV0aDIgcHJvdmlkZXItc3BlY2lmaWMgaWQgYXMgYSBzdHJpbmdcIixcbiAqICAgICBcImFjY2Vzc190b2tlblwiOiBcImFuIGF1dGhvcml6ZWQgT0F1dGgyIGFjY2VzcyB0b2tlbiBmb3IgdGhlIHVzZXJcIixcbiAqICAgfVxuICogfVxuICovXG5cbmNvbnN0IFBhcnNlID0gcmVxdWlyZSgncGFyc2Uvbm9kZScpLlBhcnNlO1xuY29uc3QgcXVlcnlzdHJpbmcgPSByZXF1aXJlKCdxdWVyeXN0cmluZycpO1xuY29uc3QgaHR0cHNSZXF1ZXN0ID0gcmVxdWlyZSgnLi9odHRwc1JlcXVlc3QnKTtcblxuY29uc3QgSU5WQUxJRF9BQ0NFU1MgPSAnT0F1dGgyIGFjY2VzcyB0b2tlbiBpcyBpbnZhbGlkIGZvciB0aGlzIHVzZXIuJztcbmNvbnN0IElOVkFMSURfQUNDRVNTX0FQUElEID1cbiAgXCJPQXV0aDI6IHRoZSBhY2Nlc3NfdG9rZW4ncyBhcHBJRCBpcyBlbXB0eSBvciBpcyBub3QgaW4gdGhlIGxpc3Qgb2YgcGVybWl0dGVkIGFwcElEcyBpbiB0aGUgYXV0aCBjb25maWd1cmF0aW9uLlwiO1xuY29uc3QgTUlTU0lOR19BUFBJRFMgPVxuICAnT0F1dGgyIGNvbmZpZ3VyYXRpb24gaXMgbWlzc2luZyB0aGUgY2xpZW50IGFwcCBJRHMgKFwiYXBwSWRzXCIgY29uZmlnIHBhcmFtZXRlcikuJztcbmNvbnN0IE1JU1NJTkdfVVJMID0gJ09BdXRoMiB0b2tlbiBpbnRyb3NwZWN0aW9uIGVuZHBvaW50IFVSTCBpcyBtaXNzaW5nIGZyb20gY29uZmlndXJhdGlvbiEnO1xuXG4vLyBSZXR1cm5zIGEgcHJvbWlzZSB0aGF0IGZ1bGZpbGxzIGlmIHRoaXMgdXNlciBpZCBpcyB2YWxpZC5cbmZ1bmN0aW9uIHZhbGlkYXRlQXV0aERhdGEoYXV0aERhdGEsIG9wdGlvbnMpIHtcbiAgcmV0dXJuIHJlcXVlc3RUb2tlbkluZm8ob3B0aW9ucywgYXV0aERhdGEuYWNjZXNzX3Rva2VuKS50aGVuKHJlc3BvbnNlID0+IHtcbiAgICBpZiAoXG4gICAgICAhcmVzcG9uc2UgfHxcbiAgICAgICFyZXNwb25zZS5hY3RpdmUgfHxcbiAgICAgIChvcHRpb25zLnVzZXJpZEZpZWxkICYmIGF1dGhEYXRhLmlkICE9PSByZXNwb25zZVtvcHRpb25zLnVzZXJpZEZpZWxkXSlcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5ELCBJTlZBTElEX0FDQ0VTUyk7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVBcHBJZChhcHBJZHMsIGF1dGhEYXRhLCBvcHRpb25zKSB7XG4gIGlmICghb3B0aW9ucyB8fCAhb3B0aW9ucy5hcHBpZEZpZWxkKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICB9XG4gIGlmICghYXBwSWRzIHx8IGFwcElkcy5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuT0JKRUNUX05PVF9GT1VORCwgTUlTU0lOR19BUFBJRFMpO1xuICB9XG4gIHJldHVybiByZXF1ZXN0VG9rZW5JbmZvKG9wdGlvbnMsIGF1dGhEYXRhLmFjY2Vzc190b2tlbikudGhlbihyZXNwb25zZSA9PiB7XG4gICAgaWYgKCFyZXNwb25zZSB8fCAhcmVzcG9uc2UuYWN0aXZlKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuT0JKRUNUX05PVF9GT1VORCwgSU5WQUxJRF9BQ0NFU1MpO1xuICAgIH1cbiAgICBjb25zdCBhcHBpZEZpZWxkID0gb3B0aW9ucy5hcHBpZEZpZWxkO1xuICAgIGlmICghcmVzcG9uc2VbYXBwaWRGaWVsZF0pIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5ELCBJTlZBTElEX0FDQ0VTU19BUFBJRCk7XG4gICAgfVxuICAgIGNvbnN0IHJlc3BvbnNlVmFsdWUgPSByZXNwb25zZVthcHBpZEZpZWxkXTtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkocmVzcG9uc2VWYWx1ZSkgJiYgYXBwSWRzLmluY2x1ZGVzKHJlc3BvbnNlVmFsdWUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIEFycmF5LmlzQXJyYXkocmVzcG9uc2VWYWx1ZSkgJiZcbiAgICAgIHJlc3BvbnNlVmFsdWUuc29tZShhcHBJZCA9PiBhcHBJZHMuaW5jbHVkZXMoYXBwSWQpKVxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuT0JKRUNUX05PVF9GT1VORCwgSU5WQUxJRF9BQ0NFU1NfQVBQSUQpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIEEgcHJvbWlzZSB3cmFwcGVyIGZvciByZXF1ZXN0cyB0byB0aGUgT0F1dGgyIHRva2VuIGludHJvc3BlY3Rpb24gZW5kcG9pbnQuXG5mdW5jdGlvbiByZXF1ZXN0VG9rZW5JbmZvKG9wdGlvbnMsIGFjY2Vzc190b2tlbikge1xuICBpZiAoIW9wdGlvbnMgfHwgIW9wdGlvbnMudG9rZW5JbnRyb3NwZWN0aW9uRW5kcG9pbnRVcmwpIHtcbiAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuT0JKRUNUX05PVF9GT1VORCwgTUlTU0lOR19VUkwpO1xuICB9XG4gIGNvbnN0IHBhcnNlZFVybCA9IG5ldyBVUkwob3B0aW9ucy50b2tlbkludHJvc3BlY3Rpb25FbmRwb2ludFVybCk7XG4gIGNvbnN0IHBvc3REYXRhID0gcXVlcnlzdHJpbmcuc3RyaW5naWZ5KHtcbiAgICB0b2tlbjogYWNjZXNzX3Rva2VuLFxuICB9KTtcbiAgY29uc3QgaGVhZGVycyA9IHtcbiAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcsXG4gICAgJ0NvbnRlbnQtTGVuZ3RoJzogQnVmZmVyLmJ5dGVMZW5ndGgocG9zdERhdGEpLFxuICB9O1xuICBpZiAob3B0aW9ucy5hdXRob3JpemF0aW9uSGVhZGVyKSB7XG4gICAgaGVhZGVyc1snQXV0aG9yaXphdGlvbiddID0gb3B0aW9ucy5hdXRob3JpemF0aW9uSGVhZGVyO1xuICB9XG4gIGNvbnN0IHBvc3RPcHRpb25zID0ge1xuICAgIGhvc3RuYW1lOiBwYXJzZWRVcmwuaG9zdG5hbWUsXG4gICAgcGF0aDogcGFyc2VkVXJsLnBhdGhuYW1lLFxuICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgIGhlYWRlcnM6IGhlYWRlcnMsXG4gIH07XG4gIHJldHVybiBodHRwc1JlcXVlc3QucmVxdWVzdChwb3N0T3B0aW9ucywgcG9zdERhdGEpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgdmFsaWRhdGVBcHBJZDogdmFsaWRhdGVBcHBJZCxcbiAgdmFsaWRhdGVBdXRoRGF0YTogdmFsaWRhdGVBdXRoRGF0YSxcbn07XG4iXSwibWFwcGluZ3MiOiI7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLE1BQU1BLEtBQUssR0FBR0MsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDRCxLQUFLO0FBQ3pDLE1BQU1FLFdBQVcsR0FBR0QsT0FBTyxDQUFDLGFBQWEsQ0FBQztBQUMxQyxNQUFNRSxZQUFZLEdBQUdGLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQztBQUU5QyxNQUFNRyxjQUFjLEdBQUcsK0NBQStDO0FBQ3RFLE1BQU1DLG9CQUFvQixHQUN4QixnSEFBZ0g7QUFDbEgsTUFBTUMsY0FBYyxHQUNsQixpRkFBaUY7QUFDbkYsTUFBTUMsV0FBVyxHQUFHLHdFQUF3RTs7QUFFNUY7QUFDQSxTQUFTQyxnQkFBZ0IsQ0FBQ0MsUUFBUSxFQUFFQyxPQUFPLEVBQUU7RUFDM0MsT0FBT0MsZ0JBQWdCLENBQUNELE9BQU8sRUFBRUQsUUFBUSxDQUFDRyxZQUFZLENBQUMsQ0FBQ0MsSUFBSSxDQUFDQyxRQUFRLElBQUk7SUFDdkUsSUFDRSxDQUFDQSxRQUFRLElBQ1QsQ0FBQ0EsUUFBUSxDQUFDQyxNQUFNLElBQ2ZMLE9BQU8sQ0FBQ00sV0FBVyxJQUFJUCxRQUFR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
@@ -6,29 +6,28 @@
6
6
  *
7
7
  * To learn more, please go to: https://www.phantauth.net
8
8
  */
9
+
9
10
  const {
10
11
  Parse
11
12
  } = require('parse/node');
13
+ const httpsRequest = require('./httpsRequest');
12
14
 
13
- const httpsRequest = require('./httpsRequest'); // Returns a promise that fulfills if this user id is valid.
14
-
15
-
15
+ // Returns a promise that fulfills if this user id is valid.
16
16
  function validateAuthData(authData) {
17
17
  return request('auth/userinfo', authData.access_token).then(data => {
18
18
  if (data && data.sub == authData.id) {
19
19
  return;
20
20
  }
21
-
22
21
  throw new Parse.Error(Parse.Error.OBJECT_NOT_FOUND, 'PhantAuth auth is invalid for this user.');
23
22
  });
24
- } // Returns a promise that fulfills if this app id is valid.
25
-
23
+ }
26
24
 
25
+ // Returns a promise that fulfills if this app id is valid.
27
26
  function validateAppId() {
28
27
  return Promise.resolve();
29
- } // A promisey wrapper for api requests
30
-
28
+ }
31
29
 
30
+ // A promisey wrapper for api requests
32
31
  function request(path, access_token) {
33
32
  return httpsRequest.get({
34
33
  host: 'phantauth.net',
@@ -39,9 +38,8 @@ function request(path, access_token) {
39
38
  }
40
39
  });
41
40
  }
42
-
43
41
  module.exports = {
44
42
  validateAppId: validateAppId,
45
43
  validateAuthData: validateAuthData
46
44
  };
47
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9BZGFwdGVycy9BdXRoL3BoYW50YXV0aC5qcyJdLCJuYW1lcyI6WyJQYXJzZSIsInJlcXVpcmUiLCJodHRwc1JlcXVlc3QiLCJ2YWxpZGF0ZUF1dGhEYXRhIiwiYXV0aERhdGEiLCJyZXF1ZXN0IiwiYWNjZXNzX3Rva2VuIiwidGhlbiIsImRhdGEiLCJzdWIiLCJpZCIsIkVycm9yIiwiT0JKRUNUX05PVF9GT1VORCIsInZhbGlkYXRlQXBwSWQiLCJQcm9taXNlIiwicmVzb2x2ZSIsInBhdGgiLCJnZXQiLCJob3N0IiwiaGVhZGVycyIsIkF1dGhvcml6YXRpb24iLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiOztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBLE1BQU07QUFBRUEsRUFBQUE7QUFBRixJQUFZQyxPQUFPLENBQUMsWUFBRCxDQUF6Qjs7QUFDQSxNQUFNQyxZQUFZLEdBQUdELE9BQU8sQ0FBQyxnQkFBRCxDQUE1QixDLENBRUE7OztBQUNBLFNBQVNFLGdCQUFULENBQTBCQyxRQUExQixFQUFvQztBQUNsQyxTQUFPQyxPQUFPLENBQUMsZUFBRCxFQUFrQkQsUUFBUSxDQUFDRSxZQUEzQixDQUFQLENBQWdEQyxJQUFoRCxDQUFxREMsSUFBSSxJQUFJO0FBQ2xFLFFBQUlBLElBQUksSUFBSUEsSUFBSSxDQUFDQyxHQUFMLElBQVlMLFFBQVEsQ0FBQ00sRUFBakMsRUFBcUM7QUFDbkM7QUFDRDs7QUFDRCxVQUFNLElBQUlWLEtBQUssQ0FBQ1csS0FBVixDQUFnQlgsS0FBSyxDQUFDVyxLQUFOLENBQVlDLGdCQUE1QixFQUE4QywwQ0FBOUMsQ0FBTjtBQUNELEdBTE0sQ0FBUDtBQU1ELEMsQ0FFRDs7O0FBQ0EsU0FBU0MsYUFBVCxHQUF5QjtBQUN2QixTQUFPQyxPQUFPLENBQUNDLE9BQVIsRUFBUDtBQUNELEMsQ0FFRDs7O0FBQ0EsU0FBU1YsT0FBVCxDQUFpQlcsSUFBakIsRUFBdUJWLFlBQXZCLEVBQXFDO0FBQ25DLFNBQU9KLFlBQVksQ0FBQ2UsR0FBYixDQUFpQjtBQUN0QkMsSUFBQUEsSUFBSSxFQUFFLGVBRGdCO0FBRXRCRixJQUFBQSxJQUFJLEVBQUUsTUFBTUEsSUFGVTtBQUd0QkcsSUFBQUEsT0FBTyxFQUFFO0FBQ1BDLE1BQUFBLGFBQWEsRUFBRSxZQUFZZCxZQURwQjtBQUVQLG9CQUFjO0FBRlA7QUFIYSxHQUFqQixDQUFQO0FBUUQ7O0FBRURlLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQjtBQUNmVCxFQUFBQSxhQUFhLEVBQUVBLGFBREE7QUFFZlYsRUFBQUEsZ0JBQWdCLEVBQUVBO0FBRkgsQ0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUGhhbnRBdXRoIHdhcyBkZXNpZ25lZCB0byBzaW1wbGlmeSB0ZXN0aW5nIGZvciBhcHBsaWNhdGlvbnMgdXNpbmcgT3BlbklEIENvbm5lY3RcbiAqIGF1dGhlbnRpY2F0aW9uIGJ5IG1ha2luZyB1c2Ugb2YgcmFuZG9tIGdlbmVyYXRlZCB1c2Vycy5cbiAqXG4gKiBUbyBsZWFybiBtb3JlLCBwbGVhc2UgZ28gdG86IGh0dHBzOi8vd3d3LnBoYW50YXV0aC5uZXRcbiAqL1xuXG5jb25zdCB7IFBhcnNlIH0gPSByZXF1aXJlKCdwYXJzZS9ub2RlJyk7XG5jb25zdCBodHRwc1JlcXVlc3QgPSByZXF1aXJlKCcuL2h0dHBzUmVxdWVzdCcpO1xuXG4vLyBSZXR1cm5zIGEgcHJvbWlzZSB0aGF0IGZ1bGZpbGxzIGlmIHRoaXMgdXNlciBpZCBpcyB2YWxpZC5cbmZ1bmN0aW9uIHZhbGlkYXRlQXV0aERhdGEoYXV0aERhdGEpIHtcbiAgcmV0dXJuIHJlcXVlc3QoJ2F1dGgvdXNlcmluZm8nLCBhdXRoRGF0YS5hY2Nlc3NfdG9rZW4pLnRoZW4oZGF0YSA9PiB7XG4gICAgaWYgKGRhdGEgJiYgZGF0YS5zdWIgPT0gYXV0aERhdGEuaWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLk9CSkVDVF9OT1RfRk9VTkQsICdQaGFudEF1dGggYXV0aCBpcyBpbnZhbGlkIGZvciB0aGlzIHVzZXIuJyk7XG4gIH0pO1xufVxuXG4vLyBSZXR1cm5zIGEgcHJvbWlzZSB0aGF0IGZ1bGZpbGxzIGlmIHRoaXMgYXBwIGlkIGlzIHZhbGlkLlxuZnVuY3Rpb24gdmFsaWRhdGVBcHBJZCgpIHtcbiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xufVxuXG4vLyBBIHByb21pc2V5IHdyYXBwZXIgZm9yIGFwaSByZXF1ZXN0c1xuZnVuY3Rpb24gcmVxdWVzdChwYXRoLCBhY2Nlc3NfdG9rZW4pIHtcbiAgcmV0dXJuIGh0dHBzUmVxdWVzdC5nZXQoe1xuICAgIGhvc3Q6ICdwaGFudGF1dGgubmV0JyxcbiAgICBwYXRoOiAnLycgKyBwYXRoLFxuICAgIGhlYWRlcnM6IHtcbiAgICAgIEF1dGhvcml6YXRpb246ICdiZWFyZXIgJyArIGFjY2Vzc190b2tlbixcbiAgICAgICdVc2VyLUFnZW50JzogJ3BhcnNlLXNlcnZlcicsXG4gICAgfSxcbiAgfSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICB2YWxpZGF0ZUFwcElkOiB2YWxpZGF0ZUFwcElkLFxuICB2YWxpZGF0ZUF1dGhEYXRhOiB2YWxpZGF0ZUF1dGhEYXRhLFxufTtcbiJdfQ==
45
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQYXJzZSIsInJlcXVpcmUiLCJodHRwc1JlcXVlc3QiLCJ2YWxpZGF0ZUF1dGhEYXRhIiwiYXV0aERhdGEiLCJyZXF1ZXN0IiwiYWNjZXNzX3Rva2VuIiwidGhlbiIsImRhdGEiLCJzdWIiLCJpZCIsIkVycm9yIiwiT0JKRUNUX05PVF9GT1VORCIsInZhbGlkYXRlQXBwSWQiLCJQcm9taXNlIiwicmVzb2x2ZSIsInBhdGgiLCJnZXQiLCJob3N0IiwiaGVhZGVycyIsIkF1dGhvcml6YXRpb24iLCJtb2R1bGUiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL0FkYXB0ZXJzL0F1dGgvcGhhbnRhdXRoLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQaGFudEF1dGggd2FzIGRlc2lnbmVkIHRvIHNpbXBsaWZ5IHRlc3RpbmcgZm9yIGFwcGxpY2F0aW9ucyB1c2luZyBPcGVuSUQgQ29ubmVjdFxuICogYXV0aGVudGljYXRpb24gYnkgbWFraW5nIHVzZSBvZiByYW5kb20gZ2VuZXJhdGVkIHVzZXJzLlxuICpcbiAqIFRvIGxlYXJuIG1vcmUsIHBsZWFzZSBnbyB0bzogaHR0cHM6Ly93d3cucGhhbnRhdXRoLm5ldFxuICovXG5cbmNvbnN0IHsgUGFyc2UgfSA9IHJlcXVpcmUoJ3BhcnNlL25vZGUnKTtcbmNvbnN0IGh0dHBzUmVxdWVzdCA9IHJlcXVpcmUoJy4vaHR0cHNSZXF1ZXN0Jyk7XG5cbi8vIFJldHVybnMgYSBwcm9taXNlIHRoYXQgZnVsZmlsbHMgaWYgdGhpcyB1c2VyIGlkIGlzIHZhbGlkLlxuZnVuY3Rpb24gdmFsaWRhdGVBdXRoRGF0YShhdXRoRGF0YSkge1xuICByZXR1cm4gcmVxdWVzdCgnYXV0aC91c2VyaW5mbycsIGF1dGhEYXRhLmFjY2Vzc190b2tlbikudGhlbihkYXRhID0+IHtcbiAgICBpZiAoZGF0YSAmJiBkYXRhLnN1YiA9PSBhdXRoRGF0YS5pZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuT0JKRUNUX05PVF9GT1VORCwgJ1BoYW50QXV0aCBhdXRoIGlzIGludmFsaWQgZm9yIHRoaXMgdXNlci4nKTtcbiAgfSk7XG59XG5cbi8vIFJldHVybnMgYSBwcm9taXNlIHRoYXQgZnVsZmlsbHMgaWYgdGhpcyBhcHAgaWQgaXMgdmFsaWQuXG5mdW5jdGlvbiB2YWxpZGF0ZUFwcElkKCkge1xuICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG59XG5cbi8vIEEgcHJvbWlzZXkgd3JhcHBlciBmb3IgYXBpIHJlcXVlc3RzXG5mdW5jdGlvbiByZXF1ZXN0KHBhdGgsIGFjY2Vzc190b2tlbikge1xuICByZXR1cm4gaHR0cHNSZXF1ZXN0LmdldCh7XG4gICAgaG9zdDogJ3BoYW50YXV0aC5uZXQnLFxuICAgIHBhdGg6ICcvJyArIHBhdGgsXG4gICAgaGVhZGVyczoge1xuICAgICAgQXV0aG9yaXphdGlvbjogJ2JlYXJlciAnICsgYWNjZXNzX3Rva2VuLFxuICAgICAgJ1VzZXItQWdlbnQnOiAncGFyc2Utc2VydmVyJyxcbiAgICB9LFxuICB9KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHZhbGlkYXRlQXBwSWQ6IHZhbGlkYXRlQXBwSWQsXG4gIHZhbGlkYXRlQXV0aERhdGE6IHZhbGlkYXRlQXV0aERhdGEsXG59O1xuIl0sIm1hcHBpbmdzIjoiOztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxNQUFNO0VBQUVBO0FBQU0sQ0FBQyxHQUFHQyxPQUFPLENBQUMsWUFBWSxDQUFDO0FBQ3ZDLE1BQU1DLFlBQVksR0FBR0QsT0FBTyxDQUFDLGdCQUFnQixDQUFDOztBQUU5QztBQUNBLFNBQVNFLGdCQUFnQixDQUFDQyxRQUFRLEVBQUU7RUFDbEMsT0FBT0MsT0FBTyxDQUFDLGVBQWUsRUFBRUQsUUFBUSxDQUFDRSxZQUFZLENBQUMsQ0FBQ0MsSUFBSSxDQUFDQyxJQUFJLElBQUk7SUFDbEUsSUFBSUEsSUFBSSxJQUFJQSxJQUFJLENBQUNDLEdBQUcsSUFBSUwsUUFBUSxDQUFDTSxFQUFFLEVBQUU7TUFDbkM7SUFDRjtJQUNBLE1BQU0sSUFBSVYsS0FBSyxDQUFDVyxLQUFLLENBQUNYLEtBQUssQ0FBQ1csS0FBSyxDQUFDQyxnQkFBZ0IsRUFBRSwwQ0FBMEMsQ0FBQztFQUNqRyxDQUFDLENBQUM7QUFDSjs7QUFFQTtBQUNBLFNBQVNDLGFBQWEsR0FBRztFQUN2QixPQUFPQyxPQUFPLENBQUNDLE9BQU8sRUFBRTtBQUMxQjs7QUFFQTtBQUNBLFNBQVNWLE9BQU8sQ0FBQ1csSUFBSSxFQUFFVixZQUFZLEVBQUU7RUFDbkMsT0FBT0osWUFBWSxDQUFDZSxHQUFHLENBQUM7SUFDdEJDLElBQUksRUFBRSxlQUFlO0lBQ3JCRixJQUFJLEVBQUUsR0FBRyxHQUFHQSxJQUFJO0lBQ2hCRyxPQUFPLEVBQUU7TUFDUEMsYUFBYSxFQUFFLFNBQVMsR0FBR2QsWUFBWTtNQUN2QyxZQUFZLEVBQUU7SUFDaEI7RUFDRixDQUFDLENBQUM7QUFDSjtBQUVBZSxNQUFNLENBQUNDLE9BQU8sR0FBRztFQUNmVCxhQUFhLEVBQUVBLGFBQWE7RUFDNUJWLGdCQUFnQixFQUFFQTtBQUNwQixDQUFDIn0=
@@ -2,47 +2,41 @@
2
2
 
3
3
  // Helper functions for accessing the qq Graph API.
4
4
  const httpsRequest = require('./httpsRequest');
5
+ var Parse = require('parse/node').Parse;
5
6
 
6
- var Parse = require('parse/node').Parse; // Returns a promise that fulfills iff this user id is valid.
7
-
8
-
7
+ // Returns a promise that fulfills iff this user id is valid.
9
8
  function validateAuthData(authData) {
10
9
  return graphRequest('me?access_token=' + authData.access_token).then(function (data) {
11
10
  if (data && data.openid == authData.id) {
12
11
  return;
13
12
  }
14
-
15
13
  throw new Parse.Error(Parse.Error.OBJECT_NOT_FOUND, 'qq auth is invalid for this user.');
16
14
  });
17
- } // Returns a promise that fulfills if this app id is valid.
18
-
15
+ }
19
16
 
17
+ // Returns a promise that fulfills if this app id is valid.
20
18
  function validateAppId() {
21
19
  return Promise.resolve();
22
- } // A promisey wrapper for qq graph requests.
23
-
20
+ }
24
21
 
22
+ // A promisey wrapper for qq graph requests.
25
23
  function graphRequest(path) {
26
24
  return httpsRequest.get('https://graph.qq.com/oauth2.0/' + path, true).then(data => {
27
25
  return parseResponseData(data);
28
26
  });
29
27
  }
30
-
31
28
  function parseResponseData(data) {
32
29
  const starPos = data.indexOf('(');
33
30
  const endPos = data.indexOf(')');
34
-
35
31
  if (starPos == -1 || endPos == -1) {
36
32
  throw new Parse.Error(Parse.Error.OBJECT_NOT_FOUND, 'qq auth is invalid for this user.');
37
33
  }
38
-
39
34
  data = data.substring(starPos + 1, endPos - 1);
40
35
  return JSON.parse(data);
41
36
  }
42
-
43
37
  module.exports = {
44
38
  validateAppId,
45
39
  validateAuthData,
46
40
  parseResponseData
47
41
  };
48
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9BZGFwdGVycy9BdXRoL3FxLmpzIl0sIm5hbWVzIjpbImh0dHBzUmVxdWVzdCIsInJlcXVpcmUiLCJQYXJzZSIsInZhbGlkYXRlQXV0aERhdGEiLCJhdXRoRGF0YSIsImdyYXBoUmVxdWVzdCIsImFjY2Vzc190b2tlbiIsInRoZW4iLCJkYXRhIiwib3BlbmlkIiwiaWQiLCJFcnJvciIsIk9CSkVDVF9OT1RfRk9VTkQiLCJ2YWxpZGF0ZUFwcElkIiwiUHJvbWlzZSIsInJlc29sdmUiLCJwYXRoIiwiZ2V0IiwicGFyc2VSZXNwb25zZURhdGEiLCJzdGFyUG9zIiwiaW5kZXhPZiIsImVuZFBvcyIsInN1YnN0cmluZyIsIkpTT04iLCJwYXJzZSIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiI7O0FBQUE7QUFDQSxNQUFNQSxZQUFZLEdBQUdDLE9BQU8sQ0FBQyxnQkFBRCxDQUE1Qjs7QUFDQSxJQUFJQyxLQUFLLEdBQUdELE9BQU8sQ0FBQyxZQUFELENBQVAsQ0FBc0JDLEtBQWxDLEMsQ0FFQTs7O0FBQ0EsU0FBU0MsZ0JBQVQsQ0FBMEJDLFFBQTFCLEVBQW9DO0FBQ2xDLFNBQU9DLFlBQVksQ0FBQyxxQkFBcUJELFFBQVEsQ0FBQ0UsWUFBL0IsQ0FBWixDQUF5REMsSUFBekQsQ0FBOEQsVUFBVUMsSUFBVixFQUFnQjtBQUNuRixRQUFJQSxJQUFJLElBQUlBLElBQUksQ0FBQ0MsTUFBTCxJQUFlTCxRQUFRLENBQUNNLEVBQXBDLEVBQXdDO0FBQ3RDO0FBQ0Q7O0FBQ0QsVUFBTSxJQUFJUixLQUFLLENBQUNTLEtBQVYsQ0FBZ0JULEtBQUssQ0FBQ1MsS0FBTixDQUFZQyxnQkFBNUIsRUFBOEMsbUNBQTlDLENBQU47QUFDRCxHQUxNLENBQVA7QUFNRCxDLENBRUQ7OztBQUNBLFNBQVNDLGFBQVQsR0FBeUI7QUFDdkIsU0FBT0MsT0FBTyxDQUFDQyxPQUFSLEVBQVA7QUFDRCxDLENBRUQ7OztBQUNBLFNBQVNWLFlBQVQsQ0FBc0JXLElBQXRCLEVBQTRCO0FBQzFCLFNBQU9oQixZQUFZLENBQUNpQixHQUFiLENBQWlCLG1DQUFtQ0QsSUFBcEQsRUFBMEQsSUFBMUQsRUFBZ0VULElBQWhFLENBQXFFQyxJQUFJLElBQUk7QUFDbEYsV0FBT1UsaUJBQWlCLENBQUNWLElBQUQsQ0FBeEI7QUFDRCxHQUZNLENBQVA7QUFHRDs7QUFFRCxTQUFTVSxpQkFBVCxDQUEyQlYsSUFBM0IsRUFBaUM7QUFDL0IsUUFBTVcsT0FBTyxHQUFHWCxJQUFJLENBQUNZLE9BQUwsQ0FBYSxHQUFiLENBQWhCO0FBQ0EsUUFBTUMsTUFBTSxHQUFHYixJQUFJLENBQUNZLE9BQUwsQ0FBYSxHQUFiLENBQWY7O0FBQ0EsTUFBSUQsT0FBTyxJQUFJLENBQUMsQ0FBWixJQUFpQkUsTUFBTSxJQUFJLENBQUMsQ0FBaEMsRUFBbUM7QUFDakMsVUFBTSxJQUFJbkIsS0FBSyxDQUFDUyxLQUFWLENBQWdCVCxLQUFLLENBQUNTLEtBQU4sQ0FBWUMsZ0JBQTVCLEVBQThDLG1DQUE5QyxDQUFOO0FBQ0Q7O0FBQ0RKLEVBQUFBLElBQUksR0FBR0EsSUFBSSxDQUFDYyxTQUFMLENBQWVILE9BQU8sR0FBRyxDQUF6QixFQUE0QkUsTUFBTSxHQUFHLENBQXJDLENBQVA7QUFDQSxTQUFPRSxJQUFJLENBQUNDLEtBQUwsQ0FBV2hCLElBQVgsQ0FBUDtBQUNEOztBQUVEaUIsTUFBTSxDQUFDQyxPQUFQLEdBQWlCO0FBQ2ZiLEVBQUFBLGFBRGU7QUFFZlYsRUFBQUEsZ0JBRmU7QUFHZmUsRUFBQUE7QUFIZSxDQUFqQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEhlbHBlciBmdW5jdGlvbnMgZm9yIGFjY2Vzc2luZyB0aGUgcXEgR3JhcGggQVBJLlxuY29uc3QgaHR0cHNSZXF1ZXN0ID0gcmVxdWlyZSgnLi9odHRwc1JlcXVlc3QnKTtcbnZhciBQYXJzZSA9IHJlcXVpcmUoJ3BhcnNlL25vZGUnKS5QYXJzZTtcblxuLy8gUmV0dXJucyBhIHByb21pc2UgdGhhdCBmdWxmaWxscyBpZmYgdGhpcyB1c2VyIGlkIGlzIHZhbGlkLlxuZnVuY3Rpb24gdmFsaWRhdGVBdXRoRGF0YShhdXRoRGF0YSkge1xuICByZXR1cm4gZ3JhcGhSZXF1ZXN0KCdtZT9hY2Nlc3NfdG9rZW49JyArIGF1dGhEYXRhLmFjY2Vzc190b2tlbikudGhlbihmdW5jdGlvbiAoZGF0YSkge1xuICAgIGlmIChkYXRhICYmIGRhdGEub3BlbmlkID09IGF1dGhEYXRhLmlkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5ELCAncXEgYXV0aCBpcyBpbnZhbGlkIGZvciB0aGlzIHVzZXIuJyk7XG4gIH0pO1xufVxuXG4vLyBSZXR1cm5zIGEgcHJvbWlzZSB0aGF0IGZ1bGZpbGxzIGlmIHRoaXMgYXBwIGlkIGlzIHZhbGlkLlxuZnVuY3Rpb24gdmFsaWRhdGVBcHBJZCgpIHtcbiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xufVxuXG4vLyBBIHByb21pc2V5IHdyYXBwZXIgZm9yIHFxIGdyYXBoIHJlcXVlc3RzLlxuZnVuY3Rpb24gZ3JhcGhSZXF1ZXN0KHBhdGgpIHtcbiAgcmV0dXJuIGh0dHBzUmVxdWVzdC5nZXQoJ2h0dHBzOi8vZ3JhcGgucXEuY29tL29hdXRoMi4wLycgKyBwYXRoLCB0cnVlKS50aGVuKGRhdGEgPT4ge1xuICAgIHJldHVybiBwYXJzZVJlc3BvbnNlRGF0YShkYXRhKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHBhcnNlUmVzcG9uc2VEYXRhKGRhdGEpIHtcbiAgY29uc3Qgc3RhclBvcyA9IGRhdGEuaW5kZXhPZignKCcpO1xuICBjb25zdCBlbmRQb3MgPSBkYXRhLmluZGV4T2YoJyknKTtcbiAgaWYgKHN0YXJQb3MgPT0gLTEgfHwgZW5kUG9zID09IC0xKSB7XG4gICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLk9CSkVDVF9OT1RfRk9VTkQsICdxcSBhdXRoIGlzIGludmFsaWQgZm9yIHRoaXMgdXNlci4nKTtcbiAgfVxuICBkYXRhID0gZGF0YS5zdWJzdHJpbmcoc3RhclBvcyArIDEsIGVuZFBvcyAtIDEpO1xuICByZXR1cm4gSlNPTi5wYXJzZShkYXRhKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHZhbGlkYXRlQXBwSWQsXG4gIHZhbGlkYXRlQXV0aERhdGEsXG4gIHBhcnNlUmVzcG9uc2VEYXRhLFxufTtcbiJdfQ==
42
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJodHRwc1JlcXVlc3QiLCJyZXF1aXJlIiwiUGFyc2UiLCJ2YWxpZGF0ZUF1dGhEYXRhIiwiYXV0aERhdGEiLCJncmFwaFJlcXVlc3QiLCJhY2Nlc3NfdG9rZW4iLCJ0aGVuIiwiZGF0YSIsIm9wZW5pZCIsImlkIiwiRXJyb3IiLCJPQkpFQ1RfTk9UX0ZPVU5EIiwidmFsaWRhdGVBcHBJZCIsIlByb21pc2UiLCJyZXNvbHZlIiwicGF0aCIsImdldCIsInBhcnNlUmVzcG9uc2VEYXRhIiwic3RhclBvcyIsImluZGV4T2YiLCJlbmRQb3MiLCJzdWJzdHJpbmciLCJKU09OIiwicGFyc2UiLCJtb2R1bGUiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL0FkYXB0ZXJzL0F1dGgvcXEuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gSGVscGVyIGZ1bmN0aW9ucyBmb3IgYWNjZXNzaW5nIHRoZSBxcSBHcmFwaCBBUEkuXG5jb25zdCBodHRwc1JlcXVlc3QgPSByZXF1aXJlKCcuL2h0dHBzUmVxdWVzdCcpO1xudmFyIFBhcnNlID0gcmVxdWlyZSgncGFyc2Uvbm9kZScpLlBhcnNlO1xuXG4vLyBSZXR1cm5zIGEgcHJvbWlzZSB0aGF0IGZ1bGZpbGxzIGlmZiB0aGlzIHVzZXIgaWQgaXMgdmFsaWQuXG5mdW5jdGlvbiB2YWxpZGF0ZUF1dGhEYXRhKGF1dGhEYXRhKSB7XG4gIHJldHVybiBncmFwaFJlcXVlc3QoJ21lP2FjY2Vzc190b2tlbj0nICsgYXV0aERhdGEuYWNjZXNzX3Rva2VuKS50aGVuKGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgaWYgKGRhdGEgJiYgZGF0YS5vcGVuaWQgPT0gYXV0aERhdGEuaWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLk9CSkVDVF9OT1RfRk9VTkQsICdxcSBhdXRoIGlzIGludmFsaWQgZm9yIHRoaXMgdXNlci4nKTtcbiAgfSk7XG59XG5cbi8vIFJldHVybnMgYSBwcm9taXNlIHRoYXQgZnVsZmlsbHMgaWYgdGhpcyBhcHAgaWQgaXMgdmFsaWQuXG5mdW5jdGlvbiB2YWxpZGF0ZUFwcElkKCkge1xuICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG59XG5cbi8vIEEgcHJvbWlzZXkgd3JhcHBlciBmb3IgcXEgZ3JhcGggcmVxdWVzdHMuXG5mdW5jdGlvbiBncmFwaFJlcXVlc3QocGF0aCkge1xuICByZXR1cm4gaHR0cHNSZXF1ZXN0LmdldCgnaHR0cHM6Ly9ncmFwaC5xcS5jb20vb2F1dGgyLjAvJyArIHBhdGgsIHRydWUpLnRoZW4oZGF0YSA9PiB7XG4gICAgcmV0dXJuIHBhcnNlUmVzcG9uc2VEYXRhKGRhdGEpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gcGFyc2VSZXNwb25zZURhdGEoZGF0YSkge1xuICBjb25zdCBzdGFyUG9zID0gZGF0YS5pbmRleE9mKCcoJyk7XG4gIGNvbnN0IGVuZFBvcyA9IGRhdGEuaW5kZXhPZignKScpO1xuICBpZiAoc3RhclBvcyA9PSAtMSB8fCBlbmRQb3MgPT0gLTEpIHtcbiAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuT0JKRUNUX05PVF9GT1VORCwgJ3FxIGF1dGggaXMgaW52YWxpZCBmb3IgdGhpcyB1c2VyLicpO1xuICB9XG4gIGRhdGEgPSBkYXRhLnN1YnN0cmluZyhzdGFyUG9zICsgMSwgZW5kUG9zIC0gMSk7XG4gIHJldHVybiBKU09OLnBhcnNlKGRhdGEpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgdmFsaWRhdGVBcHBJZCxcbiAgdmFsaWRhdGVBdXRoRGF0YSxcbiAgcGFyc2VSZXNwb25zZURhdGEsXG59O1xuIl0sIm1hcHBpbmdzIjoiOztBQUFBO0FBQ0EsTUFBTUEsWUFBWSxHQUFHQyxPQUFPLENBQUMsZ0JBQWdCLENBQUM7QUFDOUMsSUFBSUMsS0FBSyxHQUFHRCxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUNDLEtBQUs7O0FBRXZDO0FBQ0EsU0FBU0MsZ0JBQWdCLENBQUNDLFFBQVEsRUFBRTtFQUNsQyxPQUFPQyxZQUFZLENBQUMsa0JBQWtCLEdBQUdELFFBQVEsQ0FBQ0UsWUFBWSxDQUFDLENBQUNDLElBQUksQ0FBQyxVQUFVQyxJQUFJLEVBQUU7SUFDbkYsSUFBSUEsSUFBSSxJQUFJQSxJQUFJLENBQUNDLE1BQU0sSUFBSUwsUUFBUSxDQUFDTSxFQUFFLEVBQUU7TUFDdEM7SUFDRjtJQUNBLE1BQU0sSUFBSVIsS0FBSyxDQUFDUyxLQUFLLENBQUNULEtBQUssQ0FBQ1MsS0FBSyxDQUFDQyxnQkFBZ0IsRUFBRSxtQ0FBbUMsQ0FBQztFQUMxRixDQUFDLENBQUM7QUFDSjs7QUFFQTtBQUNBLFNBQVNDLGFBQWEsR0FBRztFQUN2QixPQUFPQyxPQUFPLENBQUNDLE9BQU8sRUFBRTtBQUMxQjs7QUFFQTtBQUNBLFNBQVNWLFlBQVksQ0FBQ1csSUFBSSxFQUFFO0VBQzFCLE9BQU9oQixZQUFZLENBQUNpQixHQUFHLENBQUMsZ0NBQWdDLEdBQUdELElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQ1QsSUFBSSxDQUFDQyxJQUFJLElBQUk7SUFDbEYsT0FBT1UsaUJBQWlCLENBQUNWLElBQUksQ0FBQztFQUNoQyxDQUFDLENBQUM7QUFDSjtBQUVBLFNBQVNVLGlCQUFpQixDQUFDVixJQUFJLEVBQUU7RUFDL0IsTUFBTVcsT0FBTyxHQUFHWCxJQUFJLENBQUNZLE9BQU8sQ0FBQyxHQUFHLENBQUM7RUFDakMsTUFBTUMsTUFBTSxHQUFHYixJQUFJLENBQUNZLE9BQU8sQ0FBQyxHQUFHLENBQUM7RUFDaEMsSUFBSUQsT0FBTyxJQUFJLENBQUMsQ0FBQyxJQUFJRSxNQUFNLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDakMsTUFBTSxJQUFJbkIsS0FBSyxDQUFDUyxLQUFLLENBQUNULEtBQUssQ0FBQ1MsS0FBSyxDQUFDQyxnQkFBZ0IsRUFBRSxtQ0FBbUMsQ0FBQztFQUMxRjtFQUNBSixJQUFJLEdBQUdBLElBQUksQ0FBQ2MsU0FBUyxDQUFDSCxPQUFPLEdBQUcsQ0FBQyxFQUFFRSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0VBQzlDLE9BQU9FLElBQUksQ0FBQ0MsS0FBSyxDQUFDaEIsSUFBSSxDQUFDO0FBQ3pCO0FBRUFpQixNQUFNLENBQUNDLE9BQU8sR0FBRztFQUNmYixhQUFhO0VBQ2JWLGdCQUFnQjtFQUNoQmU7QUFDRixDQUFDIn0=
@@ -2,40 +2,34 @@
2
2
 
3
3
  // Helper functions for accessing the Spotify API.
4
4
  const httpsRequest = require('./httpsRequest');
5
+ var Parse = require('parse/node').Parse;
5
6
 
6
- var Parse = require('parse/node').Parse; // Returns a promise that fulfills iff this user id is valid.
7
-
8
-
7
+ // Returns a promise that fulfills iff this user id is valid.
9
8
  function validateAuthData(authData) {
10
9
  return request('me', authData.access_token).then(data => {
11
10
  if (data && data.id == authData.id) {
12
11
  return;
13
12
  }
14
-
15
13
  throw new Parse.Error(Parse.Error.OBJECT_NOT_FOUND, 'Spotify auth is invalid for this user.');
16
14
  });
17
- } // Returns a promise that fulfills if this app id is valid.
18
-
15
+ }
19
16
 
17
+ // Returns a promise that fulfills if this app id is valid.
20
18
  async function validateAppId(appIds, authData) {
21
19
  const access_token = authData.access_token;
22
-
23
20
  if (!Array.isArray(appIds)) {
24
21
  throw new Parse.Error(Parse.Error.OBJECT_NOT_FOUND, 'appIds must be an array.');
25
22
  }
26
-
27
23
  if (!appIds.length) {
28
24
  throw new Parse.Error(Parse.Error.OBJECT_NOT_FOUND, 'Spotify auth is not configured.');
29
25
  }
30
-
31
26
  const data = await request('me', access_token);
32
-
33
27
  if (!data || !appIds.includes(data.id)) {
34
28
  throw new Parse.Error(Parse.Error.OBJECT_NOT_FOUND, 'Spotify auth is invalid for this user.');
35
29
  }
36
- } // A promisey wrapper for Spotify API requests.
37
-
30
+ }
38
31
 
32
+ // A promisey wrapper for Spotify API requests.
39
33
  function request(path, access_token) {
40
34
  return httpsRequest.get({
41
35
  host: 'api.spotify.com',
@@ -45,9 +39,8 @@ function request(path, access_token) {
45
39
  }
46
40
  });
47
41
  }
48
-
49
42
  module.exports = {
50
43
  validateAppId: validateAppId,
51
44
  validateAuthData: validateAuthData
52
45
  };
53
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9BZGFwdGVycy9BdXRoL3Nwb3RpZnkuanMiXSwibmFtZXMiOlsiaHR0cHNSZXF1ZXN0IiwicmVxdWlyZSIsIlBhcnNlIiwidmFsaWRhdGVBdXRoRGF0YSIsImF1dGhEYXRhIiwicmVxdWVzdCIsImFjY2Vzc190b2tlbiIsInRoZW4iLCJkYXRhIiwiaWQiLCJFcnJvciIsIk9CSkVDVF9OT1RfRk9VTkQiLCJ2YWxpZGF0ZUFwcElkIiwiYXBwSWRzIiwiQXJyYXkiLCJpc0FycmF5IiwibGVuZ3RoIiwiaW5jbHVkZXMiLCJwYXRoIiwiZ2V0IiwiaG9zdCIsImhlYWRlcnMiLCJBdXRob3JpemF0aW9uIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6Ijs7QUFBQTtBQUNBLE1BQU1BLFlBQVksR0FBR0MsT0FBTyxDQUFDLGdCQUFELENBQTVCOztBQUNBLElBQUlDLEtBQUssR0FBR0QsT0FBTyxDQUFDLFlBQUQsQ0FBUCxDQUFzQkMsS0FBbEMsQyxDQUVBOzs7QUFDQSxTQUFTQyxnQkFBVCxDQUEwQkMsUUFBMUIsRUFBb0M7QUFDbEMsU0FBT0MsT0FBTyxDQUFDLElBQUQsRUFBT0QsUUFBUSxDQUFDRSxZQUFoQixDQUFQLENBQXFDQyxJQUFyQyxDQUEwQ0MsSUFBSSxJQUFJO0FBQ3ZELFFBQUlBLElBQUksSUFBSUEsSUFBSSxDQUFDQyxFQUFMLElBQVdMLFFBQVEsQ0FBQ0ssRUFBaEMsRUFBb0M7QUFDbEM7QUFDRDs7QUFDRCxVQUFNLElBQUlQLEtBQUssQ0FBQ1EsS0FBVixDQUFnQlIsS0FBSyxDQUFDUSxLQUFOLENBQVlDLGdCQUE1QixFQUE4Qyx3Q0FBOUMsQ0FBTjtBQUNELEdBTE0sQ0FBUDtBQU1ELEMsQ0FFRDs7O0FBQ0EsZUFBZUMsYUFBZixDQUE2QkMsTUFBN0IsRUFBcUNULFFBQXJDLEVBQStDO0FBQzdDLFFBQU1FLFlBQVksR0FBR0YsUUFBUSxDQUFDRSxZQUE5Qjs7QUFDQSxNQUFJLENBQUNRLEtBQUssQ0FBQ0MsT0FBTixDQUFjRixNQUFkLENBQUwsRUFBNEI7QUFDMUIsVUFBTSxJQUFJWCxLQUFLLENBQUNRLEtBQVYsQ0FBZ0JSLEtBQUssQ0FBQ1EsS0FBTixDQUFZQyxnQkFBNUIsRUFBOEMsMEJBQTlDLENBQU47QUFDRDs7QUFDRCxNQUFJLENBQUNFLE1BQU0sQ0FBQ0csTUFBWixFQUFvQjtBQUNsQixVQUFNLElBQUlkLEtBQUssQ0FBQ1EsS0FBVixDQUFnQlIsS0FBSyxDQUFDUSxLQUFOLENBQVlDLGdCQUE1QixFQUE4QyxpQ0FBOUMsQ0FBTjtBQUNEOztBQUNELFFBQU1ILElBQUksR0FBRyxNQUFNSCxPQUFPLENBQUMsSUFBRCxFQUFPQyxZQUFQLENBQTFCOztBQUNBLE1BQUksQ0FBQ0UsSUFBRCxJQUFTLENBQUNLLE1BQU0sQ0FBQ0ksUUFBUCxDQUFnQlQsSUFBSSxDQUFDQyxFQUFyQixDQUFkLEVBQXdDO0FBQ3RDLFVBQU0sSUFBSVAsS0FBSyxDQUFDUSxLQUFWLENBQWdCUixLQUFLLENBQUNRLEtBQU4sQ0FBWUMsZ0JBQTVCLEVBQThDLHdDQUE5QyxDQUFOO0FBQ0Q7QUFDRixDLENBRUQ7OztBQUNBLFNBQVNOLE9BQVQsQ0FBaUJhLElBQWpCLEVBQXVCWixZQUF2QixFQUFxQztBQUNuQyxTQUFPTixZQUFZLENBQUNtQixHQUFiLENBQWlCO0FBQ3RCQyxJQUFBQSxJQUFJLEVBQUUsaUJBRGdCO0FBRXRCRixJQUFBQSxJQUFJLEVBQUUsU0FBU0EsSUFGTztBQUd0QkcsSUFBQUEsT0FBTyxFQUFFO0FBQ1BDLE1BQUFBLGFBQWEsRUFBRSxZQUFZaEI7QUFEcEI7QUFIYSxHQUFqQixDQUFQO0FBT0Q7O0FBRURpQixNQUFNLENBQUNDLE9BQVAsR0FBaUI7QUFDZlosRUFBQUEsYUFBYSxFQUFFQSxhQURBO0FBRWZULEVBQUFBLGdCQUFnQixFQUFFQTtBQUZILENBQWpCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gSGVscGVyIGZ1bmN0aW9ucyBmb3IgYWNjZXNzaW5nIHRoZSBTcG90aWZ5IEFQSS5cbmNvbnN0IGh0dHBzUmVxdWVzdCA9IHJlcXVpcmUoJy4vaHR0cHNSZXF1ZXN0Jyk7XG52YXIgUGFyc2UgPSByZXF1aXJlKCdwYXJzZS9ub2RlJykuUGFyc2U7XG5cbi8vIFJldHVybnMgYSBwcm9taXNlIHRoYXQgZnVsZmlsbHMgaWZmIHRoaXMgdXNlciBpZCBpcyB2YWxpZC5cbmZ1bmN0aW9uIHZhbGlkYXRlQXV0aERhdGEoYXV0aERhdGEpIHtcbiAgcmV0dXJuIHJlcXVlc3QoJ21lJywgYXV0aERhdGEuYWNjZXNzX3Rva2VuKS50aGVuKGRhdGEgPT4ge1xuICAgIGlmIChkYXRhICYmIGRhdGEuaWQgPT0gYXV0aERhdGEuaWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLk9CSkVDVF9OT1RfRk9VTkQsICdTcG90aWZ5IGF1dGggaXMgaW52YWxpZCBmb3IgdGhpcyB1c2VyLicpO1xuICB9KTtcbn1cblxuLy8gUmV0dXJucyBhIHByb21pc2UgdGhhdCBmdWxmaWxscyBpZiB0aGlzIGFwcCBpZCBpcyB2YWxpZC5cbmFzeW5jIGZ1bmN0aW9uIHZhbGlkYXRlQXBwSWQoYXBwSWRzLCBhdXRoRGF0YSkge1xuICBjb25zdCBhY2Nlc3NfdG9rZW4gPSBhdXRoRGF0YS5hY2Nlc3NfdG9rZW47XG4gIGlmICghQXJyYXkuaXNBcnJheShhcHBJZHMpKSB7XG4gICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLk9CSkVDVF9OT1RfRk9VTkQsICdhcHBJZHMgbXVzdCBiZSBhbiBhcnJheS4nKTtcbiAgfVxuICBpZiAoIWFwcElkcy5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuT0JKRUNUX05PVF9GT1VORCwgJ1Nwb3RpZnkgYXV0aCBpcyBub3QgY29uZmlndXJlZC4nKTtcbiAgfVxuICBjb25zdCBkYXRhID0gYXdhaXQgcmVxdWVzdCgnbWUnLCBhY2Nlc3NfdG9rZW4pO1xuICBpZiAoIWRhdGEgfHwgIWFwcElkcy5pbmNsdWRlcyhkYXRhLmlkKSkge1xuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5ELCAnU3BvdGlmeSBhdXRoIGlzIGludmFsaWQgZm9yIHRoaXMgdXNlci4nKTtcbiAgfVxufVxuXG4vLyBBIHByb21pc2V5IHdyYXBwZXIgZm9yIFNwb3RpZnkgQVBJIHJlcXVlc3RzLlxuZnVuY3Rpb24gcmVxdWVzdChwYXRoLCBhY2Nlc3NfdG9rZW4pIHtcbiAgcmV0dXJuIGh0dHBzUmVxdWVzdC5nZXQoe1xuICAgIGhvc3Q6ICdhcGkuc3BvdGlmeS5jb20nLFxuICAgIHBhdGg6ICcvdjEvJyArIHBhdGgsXG4gICAgaGVhZGVyczoge1xuICAgICAgQXV0aG9yaXphdGlvbjogJ0JlYXJlciAnICsgYWNjZXNzX3Rva2VuLFxuICAgIH0sXG4gIH0pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgdmFsaWRhdGVBcHBJZDogdmFsaWRhdGVBcHBJZCxcbiAgdmFsaWRhdGVBdXRoRGF0YTogdmFsaWRhdGVBdXRoRGF0YSxcbn07XG4iXX0=
46
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJodHRwc1JlcXVlc3QiLCJyZXF1aXJlIiwiUGFyc2UiLCJ2YWxpZGF0ZUF1dGhEYXRhIiwiYXV0aERhdGEiLCJyZXF1ZXN0IiwiYWNjZXNzX3Rva2VuIiwidGhlbiIsImRhdGEiLCJpZCIsIkVycm9yIiwiT0JKRUNUX05PVF9GT1VORCIsInZhbGlkYXRlQXBwSWQiLCJhcHBJZHMiLCJBcnJheSIsImlzQXJyYXkiLCJsZW5ndGgiLCJpbmNsdWRlcyIsInBhdGgiLCJnZXQiLCJob3N0IiwiaGVhZGVycyIsIkF1dGhvcml6YXRpb24iLCJtb2R1bGUiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL0FkYXB0ZXJzL0F1dGgvc3BvdGlmeS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBIZWxwZXIgZnVuY3Rpb25zIGZvciBhY2Nlc3NpbmcgdGhlIFNwb3RpZnkgQVBJLlxuY29uc3QgaHR0cHNSZXF1ZXN0ID0gcmVxdWlyZSgnLi9odHRwc1JlcXVlc3QnKTtcbnZhciBQYXJzZSA9IHJlcXVpcmUoJ3BhcnNlL25vZGUnKS5QYXJzZTtcblxuLy8gUmV0dXJucyBhIHByb21pc2UgdGhhdCBmdWxmaWxscyBpZmYgdGhpcyB1c2VyIGlkIGlzIHZhbGlkLlxuZnVuY3Rpb24gdmFsaWRhdGVBdXRoRGF0YShhdXRoRGF0YSkge1xuICByZXR1cm4gcmVxdWVzdCgnbWUnLCBhdXRoRGF0YS5hY2Nlc3NfdG9rZW4pLnRoZW4oZGF0YSA9PiB7XG4gICAgaWYgKGRhdGEgJiYgZGF0YS5pZCA9PSBhdXRoRGF0YS5pZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuT0JKRUNUX05PVF9GT1VORCwgJ1Nwb3RpZnkgYXV0aCBpcyBpbnZhbGlkIGZvciB0aGlzIHVzZXIuJyk7XG4gIH0pO1xufVxuXG4vLyBSZXR1cm5zIGEgcHJvbWlzZSB0aGF0IGZ1bGZpbGxzIGlmIHRoaXMgYXBwIGlkIGlzIHZhbGlkLlxuYXN5bmMgZnVuY3Rpb24gdmFsaWRhdGVBcHBJZChhcHBJZHMsIGF1dGhEYXRhKSB7XG4gIGNvbnN0IGFjY2Vzc190b2tlbiA9IGF1dGhEYXRhLmFjY2Vzc190b2tlbjtcbiAgaWYgKCFBcnJheS5pc0FycmF5KGFwcElkcykpIHtcbiAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuT0JKRUNUX05PVF9GT1VORCwgJ2FwcElkcyBtdXN0IGJlIGFuIGFycmF5LicpO1xuICB9XG4gIGlmICghYXBwSWRzLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5ELCAnU3BvdGlmeSBhdXRoIGlzIG5vdCBjb25maWd1cmVkLicpO1xuICB9XG4gIGNvbnN0IGRhdGEgPSBhd2FpdCByZXF1ZXN0KCdtZScsIGFjY2Vzc190b2tlbik7XG4gIGlmICghZGF0YSB8fCAhYXBwSWRzLmluY2x1ZGVzKGRhdGEuaWQpKSB7XG4gICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLk9CSkVDVF9OT1RfRk9VTkQsICdTcG90aWZ5IGF1dGggaXMgaW52YWxpZCBmb3IgdGhpcyB1c2VyLicpO1xuICB9XG59XG5cbi8vIEEgcHJvbWlzZXkgd3JhcHBlciBmb3IgU3BvdGlmeSBBUEkgcmVxdWVzdHMuXG5mdW5jdGlvbiByZXF1ZXN0KHBhdGgsIGFjY2Vzc190b2tlbikge1xuICByZXR1cm4gaHR0cHNSZXF1ZXN0LmdldCh7XG4gICAgaG9zdDogJ2FwaS5zcG90aWZ5LmNvbScsXG4gICAgcGF0aDogJy92MS8nICsgcGF0aCxcbiAgICBoZWFkZXJzOiB7XG4gICAgICBBdXRob3JpemF0aW9uOiAnQmVhcmVyICcgKyBhY2Nlc3NfdG9rZW4sXG4gICAgfSxcbiAgfSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICB2YWxpZGF0ZUFwcElkOiB2YWxpZGF0ZUFwcElkLFxuICB2YWxpZGF0ZUF1dGhEYXRhOiB2YWxpZGF0ZUF1dGhEYXRhLFxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQTtBQUNBLE1BQU1BLFlBQVksR0FBR0MsT0FBTyxDQUFDLGdCQUFnQixDQUFDO0FBQzlDLElBQUlDLEtBQUssR0FBR0QsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDQyxLQUFLOztBQUV2QztBQUNBLFNBQVNDLGdCQUFnQixDQUFDQyxRQUFRLEVBQUU7RUFDbEMsT0FBT0MsT0FBTyxDQUFDLElBQUksRUFBRUQsUUFBUSxDQUFDRSxZQUFZLENBQUMsQ0FBQ0MsSUFBSSxDQUFDQyxJQUFJLElBQUk7SUFDdkQsSUFBSUEsSUFBSSxJQUFJQSxJQUFJLENBQUNDLEVBQUUsSUFBSUwsUUFBUSxDQUFDSyxFQUFFLEVBQUU7TUFDbEM7SUFDRjtJQUNBLE1BQU0sSUFBSVAsS0FBSyxDQUFDUSxLQUFLLENBQUNSLEtBQUssQ0FBQ1EsS0FBSyxDQUFDQyxnQkFBZ0IsRUFBRSx3Q0FBd0MsQ0FBQztFQUMvRixDQUFDLENBQUM7QUFDSjs7QUFFQTtBQUNBLGVBQWVDLGFBQWEsQ0FBQ0MsTUFBTSxFQUFFVCxRQUFRLEVBQUU7RUFDN0MsTUFBTUUsWUFBWSxHQUFHRixRQUFRLENBQUNFLFlBQVk7RUFDMUMsSUFBSSxDQUFDUSxLQUFLLENBQUNDLE9BQU8sQ0FBQ0YsTUFBTSxDQUFDLEVBQUU7SUFDMUIsTUFBTSxJQUFJWCxLQUFLLENBQUNRLEtBQUssQ0FBQ1IsS0FBSyxDQUFDUSxLQUFLLENBQUNDLGdCQUFnQixFQUFFLDBCQUEwQixDQUFDO0VBQ2pGO0VBQ0EsSUFBSSxDQUFDRSxNQUFNLENBQUNHLE1BQU0sRUFBRTtJQUNsQixNQUFNLElBQUlkLEtBQUssQ0FBQ1EsS0FBSyxDQUFDUixLQUFLLENBQUNRLEtBQUssQ0FBQ0MsZ0JBQWdCLEVBQUUsaUNBQWlDLENBQUM7RUFDeEY7RUFDQSxNQUFNSCxJQUFJLEdBQUcsTUFBTUgsT0FBTyxDQUFDLElBQUksRUFBRUMsWUFBWSxDQUFDO0VBQzlDLElBQUksQ0FBQ0UsSUFBSSxJQUFJLENBQUNLLE1BQU0sQ0FBQ0ksUUFBUSxDQUFDVCxJQUFJLENBQUNDLEVBQUUsQ0FBQyxFQUFFO0lBQ3RDLE1BQU0sSUFBSVAsS0FBSyxDQUFDUSxLQUFLLENBQUNSLEtBQUssQ0FBQ1EsS0FBSyxDQUFDQyxnQkFBZ0IsRUFBRSx3Q0FBd0MsQ0FBQztFQUMvRjtBQUNGOztBQUVBO0FBQ0EsU0FBU04sT0FBTyxDQUFDYSxJQUFJLEVBQUVaLFlBQVksRUFBRTtFQUNuQyxPQUFPTixZQUFZLENBQUNtQixHQUFHLENBQUM7SUFDdEJDLElBQUksRUFBRSxpQkFBaUI7SUFDdkJGLElBQUksRUFBRSxNQUFNLEdBQUdBLElBQUk7SUFDbkJHLE9BQU8sRUFBRTtNQUNQQyxhQUFhLEVBQUUsU0FBUyxHQUFHaEI7SUFDN0I7RUFDRixDQUFDLENBQUM7QUFDSjtBQUVBaUIsTUFBTSxDQUFDQyxPQUFPLEdBQUc7RUFDZlosYUFBYSxFQUFFQSxhQUFhO0VBQzVCVCxnQkFBZ0IsRUFBRUE7QUFDcEIsQ0FBQyJ9
@@ -2,15 +2,13 @@
2
2
 
3
3
  // Helper functions for accessing the twitter API.
4
4
  var OAuth = require('./OAuth1Client');
5
+ var Parse = require('parse/node').Parse;
5
6
 
6
- var Parse = require('parse/node').Parse; // Returns a promise that fulfills iff this user id is valid.
7
-
8
-
7
+ // Returns a promise that fulfills iff this user id is valid.
9
8
  function validateAuthData(authData, options) {
10
9
  if (!options) {
11
10
  throw new Parse.Error(Parse.Error.INTERNAL_SERVER_ERROR, 'Twitter auth configuration missing');
12
11
  }
13
-
14
12
  options = handleMultipleConfigurations(authData, options);
15
13
  var client = new OAuth(options);
16
14
  client.host = 'api.twitter.com';
@@ -20,41 +18,33 @@ function validateAuthData(authData, options) {
20
18
  if (data && data.id_str == '' + authData.id) {
21
19
  return;
22
20
  }
23
-
24
21
  throw new Parse.Error(Parse.Error.OBJECT_NOT_FOUND, 'Twitter auth is invalid for this user.');
25
22
  });
26
- } // Returns a promise that fulfills iff this app id is valid.
27
-
23
+ }
28
24
 
25
+ // Returns a promise that fulfills iff this app id is valid.
29
26
  function validateAppId() {
30
27
  return Promise.resolve();
31
28
  }
32
-
33
29
  function handleMultipleConfigurations(authData, options) {
34
30
  if (Array.isArray(options)) {
35
31
  const consumer_key = authData.consumer_key;
36
-
37
32
  if (!consumer_key) {
38
33
  throw new Parse.Error(Parse.Error.OBJECT_NOT_FOUND, 'Twitter auth is invalid for this user.');
39
34
  }
40
-
41
35
  options = options.filter(option => {
42
36
  return option.consumer_key == consumer_key;
43
37
  });
44
-
45
38
  if (options.length == 0) {
46
39
  throw new Parse.Error(Parse.Error.OBJECT_NOT_FOUND, 'Twitter auth is invalid for this user.');
47
40
  }
48
-
49
41
  options = options[0];
50
42
  }
51
-
52
43
  return options;
53
44
  }
54
-
55
45
  module.exports = {
56
46
  validateAppId,
57
47
  validateAuthData,
58
48
  handleMultipleConfigurations
59
49
  };
60
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9BZGFwdGVycy9BdXRoL3R3aXR0ZXIuanMiXSwibmFtZXMiOlsiT0F1dGgiLCJyZXF1aXJlIiwiUGFyc2UiLCJ2YWxpZGF0ZUF1dGhEYXRhIiwiYXV0aERhdGEiLCJvcHRpb25zIiwiRXJyb3IiLCJJTlRFUk5BTF9TRVJWRVJfRVJST1IiLCJoYW5kbGVNdWx0aXBsZUNvbmZpZ3VyYXRpb25zIiwiY2xpZW50IiwiaG9zdCIsImF1dGhfdG9rZW4iLCJhdXRoX3Rva2VuX3NlY3JldCIsImdldCIsInRoZW4iLCJkYXRhIiwiaWRfc3RyIiwiaWQiLCJPQkpFQ1RfTk9UX0ZPVU5EIiwidmFsaWRhdGVBcHBJZCIsIlByb21pc2UiLCJyZXNvbHZlIiwiQXJyYXkiLCJpc0FycmF5IiwiY29uc3VtZXJfa2V5IiwiZmlsdGVyIiwib3B0aW9uIiwibGVuZ3RoIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6Ijs7QUFBQTtBQUNBLElBQUlBLEtBQUssR0FBR0MsT0FBTyxDQUFDLGdCQUFELENBQW5COztBQUNBLElBQUlDLEtBQUssR0FBR0QsT0FBTyxDQUFDLFlBQUQsQ0FBUCxDQUFzQkMsS0FBbEMsQyxDQUVBOzs7QUFDQSxTQUFTQyxnQkFBVCxDQUEwQkMsUUFBMUIsRUFBb0NDLE9BQXBDLEVBQTZDO0FBQzNDLE1BQUksQ0FBQ0EsT0FBTCxFQUFjO0FBQ1osVUFBTSxJQUFJSCxLQUFLLENBQUNJLEtBQVYsQ0FBZ0JKLEtBQUssQ0FBQ0ksS0FBTixDQUFZQyxxQkFBNUIsRUFBbUQsb0NBQW5ELENBQU47QUFDRDs7QUFDREYsRUFBQUEsT0FBTyxHQUFHRyw0QkFBNEIsQ0FBQ0osUUFBRCxFQUFXQyxPQUFYLENBQXRDO0FBQ0EsTUFBSUksTUFBTSxHQUFHLElBQUlULEtBQUosQ0FBVUssT0FBVixDQUFiO0FBQ0FJLEVBQUFBLE1BQU0sQ0FBQ0MsSUFBUCxHQUFjLGlCQUFkO0FBQ0FELEVBQUFBLE1BQU0sQ0FBQ0UsVUFBUCxHQUFvQlAsUUFBUSxDQUFDTyxVQUE3QjtBQUNBRixFQUFBQSxNQUFNLENBQUNHLGlCQUFQLEdBQTJCUixRQUFRLENBQUNRLGlCQUFwQztBQUVBLFNBQU9ILE1BQU0sQ0FBQ0ksR0FBUCxDQUFXLHNDQUFYLEVBQW1EQyxJQUFuRCxDQUF3REMsSUFBSSxJQUFJO0FBQ3JFLFFBQUlBLElBQUksSUFBSUEsSUFBSSxDQUFDQyxNQUFMLElBQWUsS0FBS1osUUFBUSxDQUFDYSxFQUF6QyxFQUE2QztBQUMzQztBQUNEOztBQUNELFVBQU0sSUFBSWYsS0FBSyxDQUFDSSxLQUFWLENBQWdCSixLQUFLLENBQUNJLEtBQU4sQ0FBWVksZ0JBQTVCLEVBQThDLHdDQUE5QyxDQUFOO0FBQ0QsR0FMTSxDQUFQO0FBTUQsQyxDQUVEOzs7QUFDQSxTQUFTQyxhQUFULEdBQXlCO0FBQ3ZCLFNBQU9DLE9BQU8sQ0FBQ0MsT0FBUixFQUFQO0FBQ0Q7O0FBRUQsU0FBU2IsNEJBQVQsQ0FBc0NKLFFBQXRDLEVBQWdEQyxPQUFoRCxFQUF5RDtBQUN2RCxNQUFJaUIsS0FBSyxDQUFDQyxPQUFOLENBQWNsQixPQUFkLENBQUosRUFBNEI7QUFDMUIsVUFBTW1CLFlBQVksR0FBR3BCLFFBQVEsQ0FBQ29CLFlBQTlCOztBQUNBLFFBQUksQ0FBQ0EsWUFBTCxFQUFtQjtBQUNqQixZQUFNLElBQUl0QixLQUFLLENBQUNJLEtBQVYsQ0FBZ0JKLEtBQUssQ0FBQ0ksS0FBTixDQUFZWSxnQkFBNUIsRUFBOEMsd0NBQTlDLENBQU47QUFDRDs7QUFDRGIsSUFBQUEsT0FBTyxHQUFHQSxPQUFPLENBQUNvQixNQUFSLENBQWVDLE1BQU0sSUFBSTtBQUNqQyxhQUFPQSxNQUFNLENBQUNGLFlBQVAsSUFBdUJBLFlBQTlCO0FBQ0QsS0FGUyxDQUFWOztBQUlBLFFBQUluQixPQUFPLENBQUNzQixNQUFSLElBQWtCLENBQXRCLEVBQXlCO0FBQ3ZCLFlBQU0sSUFBSXpCLEtBQUssQ0FBQ0ksS0FBVixDQUFnQkosS0FBSyxDQUFDSSxLQUFOLENBQVlZLGdCQUE1QixFQUE4Qyx3Q0FBOUMsQ0FBTjtBQUNEOztBQUNEYixJQUFBQSxPQUFPLEdBQUdBLE9BQU8sQ0FBQyxDQUFELENBQWpCO0FBQ0Q7O0FBQ0QsU0FBT0EsT0FBUDtBQUNEOztBQUVEdUIsTUFBTSxDQUFDQyxPQUFQLEdBQWlCO0FBQ2ZWLEVBQUFBLGFBRGU7QUFFZmhCLEVBQUFBLGdCQUZlO0FBR2ZLLEVBQUFBO0FBSGUsQ0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBIZWxwZXIgZnVuY3Rpb25zIGZvciBhY2Nlc3NpbmcgdGhlIHR3aXR0ZXIgQVBJLlxudmFyIE9BdXRoID0gcmVxdWlyZSgnLi9PQXV0aDFDbGllbnQnKTtcbnZhciBQYXJzZSA9IHJlcXVpcmUoJ3BhcnNlL25vZGUnKS5QYXJzZTtcblxuLy8gUmV0dXJucyBhIHByb21pc2UgdGhhdCBmdWxmaWxscyBpZmYgdGhpcyB1c2VyIGlkIGlzIHZhbGlkLlxuZnVuY3Rpb24gdmFsaWRhdGVBdXRoRGF0YShhdXRoRGF0YSwgb3B0aW9ucykge1xuICBpZiAoIW9wdGlvbnMpIHtcbiAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuSU5URVJOQUxfU0VSVkVSX0VSUk9SLCAnVHdpdHRlciBhdXRoIGNvbmZpZ3VyYXRpb24gbWlzc2luZycpO1xuICB9XG4gIG9wdGlvbnMgPSBoYW5kbGVNdWx0aXBsZUNvbmZpZ3VyYXRpb25zKGF1dGhEYXRhLCBvcHRpb25zKTtcbiAgdmFyIGNsaWVudCA9IG5ldyBPQXV0aChvcHRpb25zKTtcbiAgY2xpZW50Lmhvc3QgPSAnYXBpLnR3aXR0ZXIuY29tJztcbiAgY2xpZW50LmF1dGhfdG9rZW4gPSBhdXRoRGF0YS5hdXRoX3Rva2VuO1xuICBjbGllbnQuYXV0aF90b2tlbl9zZWNyZXQgPSBhdXRoRGF0YS5hdXRoX3Rva2VuX3NlY3JldDtcblxuICByZXR1cm4gY2xpZW50LmdldCgnLzEuMS9hY2NvdW50L3ZlcmlmeV9jcmVkZW50aWFscy5qc29uJykudGhlbihkYXRhID0+IHtcbiAgICBpZiAoZGF0YSAmJiBkYXRhLmlkX3N0ciA9PSAnJyArIGF1dGhEYXRhLmlkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5ELCAnVHdpdHRlciBhdXRoIGlzIGludmFsaWQgZm9yIHRoaXMgdXNlci4nKTtcbiAgfSk7XG59XG5cbi8vIFJldHVybnMgYSBwcm9taXNlIHRoYXQgZnVsZmlsbHMgaWZmIHRoaXMgYXBwIGlkIGlzIHZhbGlkLlxuZnVuY3Rpb24gdmFsaWRhdGVBcHBJZCgpIHtcbiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVNdWx0aXBsZUNvbmZpZ3VyYXRpb25zKGF1dGhEYXRhLCBvcHRpb25zKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KG9wdGlvbnMpKSB7XG4gICAgY29uc3QgY29uc3VtZXJfa2V5ID0gYXV0aERhdGEuY29uc3VtZXJfa2V5O1xuICAgIGlmICghY29uc3VtZXJfa2V5KSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuT0JKRUNUX05PVF9GT1VORCwgJ1R3aXR0ZXIgYXV0aCBpcyBpbnZhbGlkIGZvciB0aGlzIHVzZXIuJyk7XG4gICAgfVxuICAgIG9wdGlvbnMgPSBvcHRpb25zLmZpbHRlcihvcHRpb24gPT4ge1xuICAgICAgcmV0dXJuIG9wdGlvbi5jb25zdW1lcl9rZXkgPT0gY29uc3VtZXJfa2V5O1xuICAgIH0pO1xuXG4gICAgaWYgKG9wdGlvbnMubGVuZ3RoID09IDApIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5ELCAnVHdpdHRlciBhdXRoIGlzIGludmFsaWQgZm9yIHRoaXMgdXNlci4nKTtcbiAgICB9XG4gICAgb3B0aW9ucyA9IG9wdGlvbnNbMF07XG4gIH1cbiAgcmV0dXJuIG9wdGlvbnM7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICB2YWxpZGF0ZUFwcElkLFxuICB2YWxpZGF0ZUF1dGhEYXRhLFxuICBoYW5kbGVNdWx0aXBsZUNvbmZpZ3VyYXRpb25zLFxufTtcbiJdfQ==
50
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJPQXV0aCIsInJlcXVpcmUiLCJQYXJzZSIsInZhbGlkYXRlQXV0aERhdGEiLCJhdXRoRGF0YSIsIm9wdGlvbnMiLCJFcnJvciIsIklOVEVSTkFMX1NFUlZFUl9FUlJPUiIsImhhbmRsZU11bHRpcGxlQ29uZmlndXJhdGlvbnMiLCJjbGllbnQiLCJob3N0IiwiYXV0aF90b2tlbiIsImF1dGhfdG9rZW5fc2VjcmV0IiwiZ2V0IiwidGhlbiIsImRhdGEiLCJpZF9zdHIiLCJpZCIsIk9CSkVDVF9OT1RfRk9VTkQiLCJ2YWxpZGF0ZUFwcElkIiwiUHJvbWlzZSIsInJlc29sdmUiLCJBcnJheSIsImlzQXJyYXkiLCJjb25zdW1lcl9rZXkiLCJmaWx0ZXIiLCJvcHRpb24iLCJsZW5ndGgiLCJtb2R1bGUiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL0FkYXB0ZXJzL0F1dGgvdHdpdHRlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBIZWxwZXIgZnVuY3Rpb25zIGZvciBhY2Nlc3NpbmcgdGhlIHR3aXR0ZXIgQVBJLlxudmFyIE9BdXRoID0gcmVxdWlyZSgnLi9PQXV0aDFDbGllbnQnKTtcbnZhciBQYXJzZSA9IHJlcXVpcmUoJ3BhcnNlL25vZGUnKS5QYXJzZTtcblxuLy8gUmV0dXJucyBhIHByb21pc2UgdGhhdCBmdWxmaWxscyBpZmYgdGhpcyB1c2VyIGlkIGlzIHZhbGlkLlxuZnVuY3Rpb24gdmFsaWRhdGVBdXRoRGF0YShhdXRoRGF0YSwgb3B0aW9ucykge1xuICBpZiAoIW9wdGlvbnMpIHtcbiAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuSU5URVJOQUxfU0VSVkVSX0VSUk9SLCAnVHdpdHRlciBhdXRoIGNvbmZpZ3VyYXRpb24gbWlzc2luZycpO1xuICB9XG4gIG9wdGlvbnMgPSBoYW5kbGVNdWx0aXBsZUNvbmZpZ3VyYXRpb25zKGF1dGhEYXRhLCBvcHRpb25zKTtcbiAgdmFyIGNsaWVudCA9IG5ldyBPQXV0aChvcHRpb25zKTtcbiAgY2xpZW50Lmhvc3QgPSAnYXBpLnR3aXR0ZXIuY29tJztcbiAgY2xpZW50LmF1dGhfdG9rZW4gPSBhdXRoRGF0YS5hdXRoX3Rva2VuO1xuICBjbGllbnQuYXV0aF90b2tlbl9zZWNyZXQgPSBhdXRoRGF0YS5hdXRoX3Rva2VuX3NlY3JldDtcblxuICByZXR1cm4gY2xpZW50LmdldCgnLzEuMS9hY2NvdW50L3ZlcmlmeV9jcmVkZW50aWFscy5qc29uJykudGhlbihkYXRhID0+IHtcbiAgICBpZiAoZGF0YSAmJiBkYXRhLmlkX3N0ciA9PSAnJyArIGF1dGhEYXRhLmlkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5ELCAnVHdpdHRlciBhdXRoIGlzIGludmFsaWQgZm9yIHRoaXMgdXNlci4nKTtcbiAgfSk7XG59XG5cbi8vIFJldHVybnMgYSBwcm9taXNlIHRoYXQgZnVsZmlsbHMgaWZmIHRoaXMgYXBwIGlkIGlzIHZhbGlkLlxuZnVuY3Rpb24gdmFsaWRhdGVBcHBJZCgpIHtcbiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVNdWx0aXBsZUNvbmZpZ3VyYXRpb25zKGF1dGhEYXRhLCBvcHRpb25zKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KG9wdGlvbnMpKSB7XG4gICAgY29uc3QgY29uc3VtZXJfa2V5ID0gYXV0aERhdGEuY29uc3VtZXJfa2V5O1xuICAgIGlmICghY29uc3VtZXJfa2V5KSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuT0JKRUNUX05PVF9GT1VORCwgJ1R3aXR0ZXIgYXV0aCBpcyBpbnZhbGlkIGZvciB0aGlzIHVzZXIuJyk7XG4gICAgfVxuICAgIG9wdGlvbnMgPSBvcHRpb25zLmZpbHRlcihvcHRpb24gPT4ge1xuICAgICAgcmV0dXJuIG9wdGlvbi5jb25zdW1lcl9rZXkgPT0gY29uc3VtZXJfa2V5O1xuICAgIH0pO1xuXG4gICAgaWYgKG9wdGlvbnMubGVuZ3RoID09IDApIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5ELCAnVHdpdHRlciBhdXRoIGlzIGludmFsaWQgZm9yIHRoaXMgdXNlci4nKTtcbiAgICB9XG4gICAgb3B0aW9ucyA9IG9wdGlvbnNbMF07XG4gIH1cbiAgcmV0dXJuIG9wdGlvbnM7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICB2YWxpZGF0ZUFwcElkLFxuICB2YWxpZGF0ZUF1dGhEYXRhLFxuICBoYW5kbGVNdWx0aXBsZUNvbmZpZ3VyYXRpb25zLFxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQTtBQUNBLElBQUlBLEtBQUssR0FBR0MsT0FBTyxDQUFDLGdCQUFnQixDQUFDO0FBQ3JDLElBQUlDLEtBQUssR0FBR0QsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDQyxLQUFLOztBQUV2QztBQUNBLFNBQVNDLGdCQUFnQixDQUFDQyxRQUFRLEVBQUVDLE9BQU8sRUFBRTtFQUMzQyxJQUFJLENBQUNBLE9BQU8sRUFBRTtJQUNaLE1BQU0sSUFBSUgsS0FBSyxDQUFDSSxLQUFLLENBQUNKLEtBQUssQ0FBQ0ksS0FBSyxDQUFDQyxxQkFBcUIsRUFBRSxvQ0FBb0MsQ0FBQztFQUNoRztFQUNBRixPQUFPLEdBQUdHLDRCQUE0QixDQUFDSixRQUFRLEVBQUVDLE9BQU8sQ0FBQztFQUN6RCxJQUFJSSxNQUFNLEdBQUcsSUFBSVQsS0FBSyxDQUFDSyxPQUFPLENBQUM7RUFDL0JJLE1BQU0sQ0FBQ0MsSUFBSSxHQUFHLGlCQUFpQjtFQUMvQkQsTUFBTSxDQUFDRSxVQUFVLEdBQUdQLFFBQVEsQ0FBQ08sVUFBVTtFQUN2Q0YsTUFBTSxDQUFDRyxpQkFBaUIsR0FBR1IsUUFBUSxDQUFDUSxpQkFBaUI7RUFFckQsT0FBT0gsTUFBTSxDQUFDSSxHQUFHLENBQUMsc0NBQXNDLENBQUMsQ0FBQ0MsSUFBSSxDQUFDQyxJQUFJLElBQUk7SUFDckUsSUFBSUEsSUFBSSxJQUFJQSxJQUFJLENBQUNDLE1BQU0sSUFBSSxFQUFFLEdBQUdaLFFBQVEsQ0FBQ2EsRUFBRSxFQUFFO01BQzNDO0lBQ0Y7SUFDQSxNQUFNLElBQUlmLEtBQUssQ0FBQ0ksS0FBSyxDQUFDSixLQUFLLENBQUNJLEtBQUssQ0FBQ1ksZ0JBQWdCLEVBQUUsd0NBQXdDLENBQUM7RUFDL0YsQ0FBQyxDQUFDO0FBQ0o7O0FBRUE7QUFDQSxTQUFTQyxhQUFhLEdBQUc7RUFDdkIsT0FBT0MsT0FBTyxDQUFDQyxPQUFPLEVBQUU7QUFDMUI7QUFFQSxTQUFTYiw0QkFBNEIsQ0FBQ0osUUFBUSxFQUFFQyxPQUFPLEVBQUU7RUFDdkQsSUFBSWlCLEtBQUssQ0FBQ0MsT0FBTyxDQUFDbEIsT0FBTyxDQUFDLEVBQUU7SUFDMUIsTUFBTW1CLFlBQVksR0FBR3BCLFFBQVEsQ0FBQ29CLFlBQVk7SUFDMUMsSUFBSSxDQUFDQSxZQUFZLEVBQUU7TUFDakIsTUFBTSxJQUFJdEIsS0FBSyxDQUFDSSxLQUFLLENBQUNKLEtBQUssQ0FBQ0ksS0FBSyxDQUFDWSxnQkFBZ0IsRUFBRSx3Q0FBd0MsQ0FBQztJQUMvRjtJQUNBYixPQUFPLEdBQUdBLE9BQU8sQ0FBQ29CLE1BQU0sQ0FBQ0MsTUFBTSxJQUFJO01BQ2pDLE9BQU9BLE1BQU0sQ0FBQ0YsWUFBWSxJQUFJQSxZQUFZO0lBQzVDLENBQUMsQ0FBQztJQUVGLElBQUluQixPQUFPLENBQUNzQixNQUFNLElBQUksQ0FBQyxFQUFFO01BQ3ZCLE1BQU0sSUFBSXpCLEtBQUssQ0FBQ0ksS0FBSyxDQUFDSixLQUFLLENBQUNJLEtBQUssQ0FBQ1ksZ0JBQWdCLEVBQUUsd0NBQXdDLENBQUM7SUFDL0Y7SUFDQWIsT0FBTyxHQUFHQSxPQUFPLENBQUMsQ0FBQyxDQUFDO0VBQ3RCO0VBQ0EsT0FBT0EsT0FBTztBQUNoQjtBQUVBdUIsTUFBTSxDQUFDQyxPQUFPLEdBQUc7RUFDZlYsYUFBYTtFQUNiaEIsZ0JBQWdCO0VBQ2hCSztBQUNGLENBQUMifQ==
@@ -1,10 +1,10 @@
1
- 'use strict'; // Helper functions for accessing the vkontakte API.
1
+ 'use strict';
2
2
 
3
+ // Helper functions for accessing the vkontakte API.
3
4
  const httpsRequest = require('./httpsRequest');
5
+ var Parse = require('parse/node').Parse;
4
6
 
5
- var Parse = require('parse/node').Parse; // Returns a promise that fulfills iff this user id is valid.
6
-
7
-
7
+ // Returns a promise that fulfills iff this user id is valid.
8
8
  function validateAuthData(authData, params) {
9
9
  return vkOAuth2Request(params).then(function (response) {
10
10
  if (response && response.access_token) {
@@ -12,43 +12,37 @@ function validateAuthData(authData, params) {
12
12
  if (response && response.response && response.response.length && response.response[0].id == authData.id) {
13
13
  return;
14
14
  }
15
-
16
15
  throw new Parse.Error(Parse.Error.OBJECT_NOT_FOUND, 'Vk auth is invalid for this user.');
17
16
  });
18
17
  }
19
-
20
18
  throw new Parse.Error(Parse.Error.OBJECT_NOT_FOUND, 'Vk appIds or appSecret is incorrect.');
21
19
  });
22
20
  }
23
-
24
21
  function vkOAuth2Request(params) {
25
22
  return new Promise(function (resolve) {
26
23
  if (!params || !params.appIds || !params.appIds.length || !params.appSecret || !params.appSecret.length) {
27
24
  throw new Parse.Error(Parse.Error.OBJECT_NOT_FOUND, 'Vk auth is not configured. Missing appIds or appSecret.');
28
25
  }
29
-
30
26
  if (!params.apiVersion) {
31
27
  params.apiVersion = '5.124';
32
28
  }
33
-
34
29
  resolve();
35
30
  }).then(function () {
36
31
  return request('oauth.vk.com', 'access_token?client_id=' + params.appIds + '&client_secret=' + params.appSecret + '&v=' + params.apiVersion + '&grant_type=client_credentials');
37
32
  });
38
- } // Returns a promise that fulfills iff this app id is valid.
39
-
33
+ }
40
34
 
35
+ // Returns a promise that fulfills iff this app id is valid.
41
36
  function validateAppId() {
42
37
  return Promise.resolve();
43
- } // A promisey wrapper for api requests
44
-
38
+ }
45
39
 
40
+ // A promisey wrapper for api requests
46
41
  function request(host, path) {
47
42
  return httpsRequest.get('https://' + host + '/' + path);
48
43
  }
49
-
50
44
  module.exports = {
51
45
  validateAppId: validateAppId,
52
46
  validateAuthData: validateAuthData
53
47
  };
54
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9BZGFwdGVycy9BdXRoL3Zrb250YWt0ZS5qcyJdLCJuYW1lcyI6WyJodHRwc1JlcXVlc3QiLCJyZXF1aXJlIiwiUGFyc2UiLCJ2YWxpZGF0ZUF1dGhEYXRhIiwiYXV0aERhdGEiLCJwYXJhbXMiLCJ2a09BdXRoMlJlcXVlc3QiLCJ0aGVuIiwicmVzcG9uc2UiLCJhY2Nlc3NfdG9rZW4iLCJyZXF1ZXN0IiwiYXBpVmVyc2lvbiIsImxlbmd0aCIsImlkIiwiRXJyb3IiLCJPQkpFQ1RfTk9UX0ZPVU5EIiwiUHJvbWlzZSIsInJlc29sdmUiLCJhcHBJZHMiLCJhcHBTZWNyZXQiLCJ2YWxpZGF0ZUFwcElkIiwiaG9zdCIsInBhdGgiLCJnZXQiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxhLENBRUE7O0FBRUEsTUFBTUEsWUFBWSxHQUFHQyxPQUFPLENBQUMsZ0JBQUQsQ0FBNUI7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHRCxPQUFPLENBQUMsWUFBRCxDQUFQLENBQXNCQyxLQUFsQyxDLENBRUE7OztBQUNBLFNBQVNDLGdCQUFULENBQTBCQyxRQUExQixFQUFvQ0MsTUFBcEMsRUFBNEM7QUFDMUMsU0FBT0MsZUFBZSxDQUFDRCxNQUFELENBQWYsQ0FBd0JFLElBQXhCLENBQTZCLFVBQVVDLFFBQVYsRUFBb0I7QUFDdEQsUUFBSUEsUUFBUSxJQUFJQSxRQUFRLENBQUNDLFlBQXpCLEVBQXVDO0FBQ3JDLGFBQU9DLE9BQU8sQ0FDWixZQURZLEVBRVosbUNBQW1DTixRQUFRLENBQUNLLFlBQTVDLEdBQTJELEtBQTNELEdBQW1FSixNQUFNLENBQUNNLFVBRjlELENBQVAsQ0FHTEosSUFISyxDQUdBLFVBQVVDLFFBQVYsRUFBb0I7QUFDekIsWUFDRUEsUUFBUSxJQUNSQSxRQUFRLENBQUNBLFFBRFQsSUFFQUEsUUFBUSxDQUFDQSxRQUFULENBQWtCSSxNQUZsQixJQUdBSixRQUFRLENBQUNBLFFBQVQsQ0FBa0IsQ0FBbEIsRUFBcUJLLEVBQXJCLElBQTJCVCxRQUFRLENBQUNTLEVBSnRDLEVBS0U7QUFDQTtBQUNEOztBQUNELGNBQU0sSUFBSVgsS0FBSyxDQUFDWSxLQUFWLENBQWdCWixLQUFLLENBQUNZLEtBQU4sQ0FBWUMsZ0JBQTVCLEVBQThDLG1DQUE5QyxDQUFOO0FBQ0QsT0FiTSxDQUFQO0FBY0Q7O0FBQ0QsVUFBTSxJQUFJYixLQUFLLENBQUNZLEtBQVYsQ0FBZ0JaLEtBQUssQ0FBQ1ksS0FBTixDQUFZQyxnQkFBNUIsRUFBOEMsc0NBQTlDLENBQU47QUFDRCxHQWxCTSxDQUFQO0FBbUJEOztBQUVELFNBQVNULGVBQVQsQ0FBeUJELE1BQXpCLEVBQWlDO0FBQy9CLFNBQU8sSUFBSVcsT0FBSixDQUFZLFVBQVVDLE9BQVYsRUFBbUI7QUFDcEMsUUFDRSxDQUFDWixNQUFELElBQ0EsQ0FBQ0EsTUFBTSxDQUFDYSxNQURSLElBRUEsQ0FBQ2IsTUFBTSxDQUFDYSxNQUFQLENBQWNOLE1BRmYsSUFHQSxDQUFDUCxNQUFNLENBQUNjLFNBSFIsSUFJQSxDQUFDZCxNQUFNLENBQUNjLFNBQVAsQ0FBaUJQLE1BTHBCLEVBTUU7QUFDQSxZQUFNLElBQUlWLEtBQUssQ0FBQ1ksS0FBVixDQUNKWixLQUFLLENBQUNZLEtBQU4sQ0FBWUMsZ0JBRFIsRUFFSix5REFGSSxDQUFOO0FBSUQ7O0FBQ0QsUUFBSSxDQUFDVixNQUFNLENBQUNNLFVBQVosRUFBd0I7QUFDdEJOLE1BQUFBLE1BQU0sQ0FBQ00sVUFBUCxHQUFvQixPQUFwQjtBQUNEOztBQUNETSxJQUFBQSxPQUFPO0FBQ1IsR0FqQk0sRUFpQkpWLElBakJJLENBaUJDLFlBQVk7QUFDbEIsV0FBT0csT0FBTyxDQUNaLGNBRFksRUFFWiw0QkFDRUwsTUFBTSxDQUFDYSxNQURULEdBRUUsaUJBRkYsR0FHRWIsTUFBTSxDQUFDYyxTQUhULEdBSUUsS0FKRixHQUtFZCxNQUFNLENBQUNNLFVBTFQsR0FNRSxnQ0FSVSxDQUFkO0FBVUQsR0E1Qk0sQ0FBUDtBQTZCRCxDLENBRUQ7OztBQUNBLFNBQVNTLGFBQVQsR0FBeUI7QUFDdkIsU0FBT0osT0FBTyxDQUFDQyxPQUFSLEVBQVA7QUFDRCxDLENBRUQ7OztBQUNBLFNBQVNQLE9BQVQsQ0FBaUJXLElBQWpCLEVBQXVCQyxJQUF2QixFQUE2QjtBQUMzQixTQUFPdEIsWUFBWSxDQUFDdUIsR0FBYixDQUFpQixhQUFhRixJQUFiLEdBQW9CLEdBQXBCLEdBQTBCQyxJQUEzQyxDQUFQO0FBQ0Q7O0FBRURFLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQjtBQUNmTCxFQUFBQSxhQUFhLEVBQUVBLGFBREE7QUFFZmpCLEVBQUFBLGdCQUFnQixFQUFFQTtBQUZILENBQWpCIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG4vLyBIZWxwZXIgZnVuY3Rpb25zIGZvciBhY2Nlc3NpbmcgdGhlIHZrb250YWt0ZSBBUEkuXG5cbmNvbnN0IGh0dHBzUmVxdWVzdCA9IHJlcXVpcmUoJy4vaHR0cHNSZXF1ZXN0Jyk7XG52YXIgUGFyc2UgPSByZXF1aXJlKCdwYXJzZS9ub2RlJykuUGFyc2U7XG5cbi8vIFJldHVybnMgYSBwcm9taXNlIHRoYXQgZnVsZmlsbHMgaWZmIHRoaXMgdXNlciBpZCBpcyB2YWxpZC5cbmZ1bmN0aW9uIHZhbGlkYXRlQXV0aERhdGEoYXV0aERhdGEsIHBhcmFtcykge1xuICByZXR1cm4gdmtPQXV0aDJSZXF1ZXN0KHBhcmFtcykudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHtcbiAgICBpZiAocmVzcG9uc2UgJiYgcmVzcG9uc2UuYWNjZXNzX3Rva2VuKSB7XG4gICAgICByZXR1cm4gcmVxdWVzdChcbiAgICAgICAgJ2FwaS52ay5jb20nLFxuICAgICAgICAnbWV0aG9kL3VzZXJzLmdldD9hY2Nlc3NfdG9rZW49JyArIGF1dGhEYXRhLmFjY2Vzc190b2tlbiArICcmdj0nICsgcGFyYW1zLmFwaVZlcnNpb25cbiAgICAgICkudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHJlc3BvbnNlICYmXG4gICAgICAgICAgcmVzcG9uc2UucmVzcG9uc2UgJiZcbiAgICAgICAgICByZXNwb25zZS5yZXNwb25zZS5sZW5ndGggJiZcbiAgICAgICAgICByZXNwb25zZS5yZXNwb25zZVswXS5pZCA9PSBhdXRoRGF0YS5pZFxuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLk9CSkVDVF9OT1RfRk9VTkQsICdWayBhdXRoIGlzIGludmFsaWQgZm9yIHRoaXMgdXNlci4nKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuT0JKRUNUX05PVF9GT1VORCwgJ1ZrIGFwcElkcyBvciBhcHBTZWNyZXQgaXMgaW5jb3JyZWN0LicpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gdmtPQXV0aDJSZXF1ZXN0KHBhcmFtcykge1xuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHtcbiAgICBpZiAoXG4gICAgICAhcGFyYW1zIHx8XG4gICAgICAhcGFyYW1zLmFwcElkcyB8fFxuICAgICAgIXBhcmFtcy5hcHBJZHMubGVuZ3RoIHx8XG4gICAgICAhcGFyYW1zLmFwcFNlY3JldCB8fFxuICAgICAgIXBhcmFtcy5hcHBTZWNyZXQubGVuZ3RoXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoXG4gICAgICAgIFBhcnNlLkVycm9yLk9CSkVDVF9OT1RfRk9VTkQsXG4gICAgICAgICdWayBhdXRoIGlzIG5vdCBjb25maWd1cmVkLiBNaXNzaW5nIGFwcElkcyBvciBhcHBTZWNyZXQuJ1xuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKCFwYXJhbXMuYXBpVmVyc2lvbikge1xuICAgICAgcGFyYW1zLmFwaVZlcnNpb24gPSAnNS4xMjQnO1xuICAgIH1cbiAgICByZXNvbHZlKCk7XG4gIH0pLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiByZXF1ZXN0KFxuICAgICAgJ29hdXRoLnZrLmNvbScsXG4gICAgICAnYWNjZXNzX3Rva2VuP2NsaWVudF9pZD0nICtcbiAgICAgICAgcGFyYW1zLmFwcElkcyArXG4gICAgICAgICcmY2xpZW50X3NlY3JldD0nICtcbiAgICAgICAgcGFyYW1zLmFwcFNlY3JldCArXG4gICAgICAgICcmdj0nICtcbiAgICAgICAgcGFyYW1zLmFwaVZlcnNpb24gK1xuICAgICAgICAnJmdyYW50X3R5cGU9Y2xpZW50X2NyZWRlbnRpYWxzJ1xuICAgICk7XG4gIH0pO1xufVxuXG4vLyBSZXR1cm5zIGEgcHJvbWlzZSB0aGF0IGZ1bGZpbGxzIGlmZiB0aGlzIGFwcCBpZCBpcyB2YWxpZC5cbmZ1bmN0aW9uIHZhbGlkYXRlQXBwSWQoKSB7XG4gIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbn1cblxuLy8gQSBwcm9taXNleSB3cmFwcGVyIGZvciBhcGkgcmVxdWVzdHNcbmZ1bmN0aW9uIHJlcXVlc3QoaG9zdCwgcGF0aCkge1xuICByZXR1cm4gaHR0cHNSZXF1ZXN0LmdldCgnaHR0cHM6Ly8nICsgaG9zdCArICcvJyArIHBhdGgpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgdmFsaWRhdGVBcHBJZDogdmFsaWRhdGVBcHBJZCxcbiAgdmFsaWRhdGVBdXRoRGF0YTogdmFsaWRhdGVBdXRoRGF0YSxcbn07XG4iXX0=
48
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJodHRwc1JlcXVlc3QiLCJyZXF1aXJlIiwiUGFyc2UiLCJ2YWxpZGF0ZUF1dGhEYXRhIiwiYXV0aERhdGEiLCJwYXJhbXMiLCJ2a09BdXRoMlJlcXVlc3QiLCJ0aGVuIiwicmVzcG9uc2UiLCJhY2Nlc3NfdG9rZW4iLCJyZXF1ZXN0IiwiYXBpVmVyc2lvbiIsImxlbmd0aCIsImlkIiwiRXJyb3IiLCJPQkpFQ1RfTk9UX0ZPVU5EIiwiUHJvbWlzZSIsInJlc29sdmUiLCJhcHBJZHMiLCJhcHBTZWNyZXQiLCJ2YWxpZGF0ZUFwcElkIiwiaG9zdCIsInBhdGgiLCJnZXQiLCJtb2R1bGUiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL0FkYXB0ZXJzL0F1dGgvdmtvbnRha3RlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuLy8gSGVscGVyIGZ1bmN0aW9ucyBmb3IgYWNjZXNzaW5nIHRoZSB2a29udGFrdGUgQVBJLlxuXG5jb25zdCBodHRwc1JlcXVlc3QgPSByZXF1aXJlKCcuL2h0dHBzUmVxdWVzdCcpO1xudmFyIFBhcnNlID0gcmVxdWlyZSgncGFyc2Uvbm9kZScpLlBhcnNlO1xuXG4vLyBSZXR1cm5zIGEgcHJvbWlzZSB0aGF0IGZ1bGZpbGxzIGlmZiB0aGlzIHVzZXIgaWQgaXMgdmFsaWQuXG5mdW5jdGlvbiB2YWxpZGF0ZUF1dGhEYXRhKGF1dGhEYXRhLCBwYXJhbXMpIHtcbiAgcmV0dXJuIHZrT0F1dGgyUmVxdWVzdChwYXJhbXMpLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG4gICAgaWYgKHJlc3BvbnNlICYmIHJlc3BvbnNlLmFjY2Vzc190b2tlbikge1xuICAgICAgcmV0dXJuIHJlcXVlc3QoXG4gICAgICAgICdhcGkudmsuY29tJyxcbiAgICAgICAgJ21ldGhvZC91c2Vycy5nZXQ/YWNjZXNzX3Rva2VuPScgKyBhdXRoRGF0YS5hY2Nlc3NfdG9rZW4gKyAnJnY9JyArIHBhcmFtcy5hcGlWZXJzaW9uXG4gICAgICApLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICByZXNwb25zZSAmJlxuICAgICAgICAgIHJlc3BvbnNlLnJlc3BvbnNlICYmXG4gICAgICAgICAgcmVzcG9uc2UucmVzcG9uc2UubGVuZ3RoICYmXG4gICAgICAgICAgcmVzcG9uc2UucmVzcG9uc2VbMF0uaWQgPT0gYXV0aERhdGEuaWRcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5ELCAnVmsgYXV0aCBpcyBpbnZhbGlkIGZvciB0aGlzIHVzZXIuJyk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLk9CSkVDVF9OT1RfRk9VTkQsICdWayBhcHBJZHMgb3IgYXBwU2VjcmV0IGlzIGluY29ycmVjdC4nKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHZrT0F1dGgyUmVxdWVzdChwYXJhbXMpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG4gICAgaWYgKFxuICAgICAgIXBhcmFtcyB8fFxuICAgICAgIXBhcmFtcy5hcHBJZHMgfHxcbiAgICAgICFwYXJhbXMuYXBwSWRzLmxlbmd0aCB8fFxuICAgICAgIXBhcmFtcy5hcHBTZWNyZXQgfHxcbiAgICAgICFwYXJhbXMuYXBwU2VjcmV0Lmxlbmd0aFxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFxuICAgICAgICBQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5ELFxuICAgICAgICAnVmsgYXV0aCBpcyBub3QgY29uZmlndXJlZC4gTWlzc2luZyBhcHBJZHMgb3IgYXBwU2VjcmV0LidcbiAgICAgICk7XG4gICAgfVxuICAgIGlmICghcGFyYW1zLmFwaVZlcnNpb24pIHtcbiAgICAgIHBhcmFtcy5hcGlWZXJzaW9uID0gJzUuMTI0JztcbiAgICB9XG4gICAgcmVzb2x2ZSgpO1xuICB9KS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gcmVxdWVzdChcbiAgICAgICdvYXV0aC52ay5jb20nLFxuICAgICAgJ2FjY2Vzc190b2tlbj9jbGllbnRfaWQ9JyArXG4gICAgICAgIHBhcmFtcy5hcHBJZHMgK1xuICAgICAgICAnJmNsaWVudF9zZWNyZXQ9JyArXG4gICAgICAgIHBhcmFtcy5hcHBTZWNyZXQgK1xuICAgICAgICAnJnY9JyArXG4gICAgICAgIHBhcmFtcy5hcGlWZXJzaW9uICtcbiAgICAgICAgJyZncmFudF90eXBlPWNsaWVudF9jcmVkZW50aWFscydcbiAgICApO1xuICB9KTtcbn1cblxuLy8gUmV0dXJucyBhIHByb21pc2UgdGhhdCBmdWxmaWxscyBpZmYgdGhpcyBhcHAgaWQgaXMgdmFsaWQuXG5mdW5jdGlvbiB2YWxpZGF0ZUFwcElkKCkge1xuICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG59XG5cbi8vIEEgcHJvbWlzZXkgd3JhcHBlciBmb3IgYXBpIHJlcXVlc3RzXG5mdW5jdGlvbiByZXF1ZXN0KGhvc3QsIHBhdGgpIHtcbiAgcmV0dXJuIGh0dHBzUmVxdWVzdC5nZXQoJ2h0dHBzOi8vJyArIGhvc3QgKyAnLycgKyBwYXRoKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHZhbGlkYXRlQXBwSWQ6IHZhbGlkYXRlQXBwSWQsXG4gIHZhbGlkYXRlQXV0aERhdGE6IHZhbGlkYXRlQXV0aERhdGEsXG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQSxZQUFZOztBQUVaO0FBRUEsTUFBTUEsWUFBWSxHQUFHQyxPQUFPLENBQUMsZ0JBQWdCLENBQUM7QUFDOUMsSUFBSUMsS0FBSyxHQUFHRCxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUNDLEtBQUs7O0FBRXZDO0FBQ0EsU0FBU0MsZ0JBQWdCLENBQUNDLFFBQVEsRUFBRUMsTUFBTSxFQUFFO0VBQzFDLE9BQU9DLGVBQWUsQ0FBQ0QsTUFBTSxDQUFDLENBQUNFLElBQUksQ0FBQyxVQUFVQyxRQUFRLEVBQUU7SUFDdEQsSUFBSUEsUUFBUSxJQUFJQSxRQUFRLENBQUNDLFlBQVksRUFBRTtNQUNyQyxPQUFPQyxPQUFPLENBQ1osWUFBWSxFQUNaLGdDQUFnQyxHQUFHTixRQUFRLENBQUNLLFlBQVksR0FBRyxLQUFLLEdBQUdKLE1BQU0sQ0FBQ00sVUFBVSxDQUNyRixDQUFDSixJQUFJLENBQUMsVUFBVUMsUUFBUSxFQUFFO1FBQ3pCLElBQ0VBLFFBQVEsSUFDUkEsUUFBUSxDQUFDQSxRQUFRLElBQ2pCQSxRQUFRLENBQUNBLFFBQVEsQ0FBQ0ksTUFBTSxJQUN4QkosUUFBUSxDQUFDQSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUNLLEVBQUUsSUFBSVQsUUFBUSxDQUFDUyxFQUFFLEVBQ3RDO1VBQ0E7UUFDRjtRQUNBLE1BQU0sSUFBSVgsS0FBSyxDQUFDWSxLQUFLLENBQUNaLEtBQUssQ0FBQ1ksS0FBSyxDQUFDQyxnQkFBZ0IsRUFBRSxtQ0FBbUMsQ0FBQztNQUMxRixDQUFDLENBQUM7SUFDSjtJQUNBLE1BQU0sSUFBSWIsS0FBSyxDQUFDWSxLQUFLLENBQUNaLEtBQUssQ0FBQ1ksS0FBSyxDQUFDQyxnQkFBZ0IsRUFBRSxzQ0FBc0MsQ0FBQztFQUM3RixDQUFDLENBQUM7QUFDSjtBQUVBLFNBQVNULGVBQWUsQ0FBQ0QsTUFBTSxFQUFFO0VBQy9CLE9BQU8sSUFBSVcsT0FBTyxDQUFDLFVBQVVDLE9BQU8sRUFBRTtJQUNwQyxJQUNFLENBQUNaLE1BQU0sSUFDUCxDQUFDQSxNQUFNLENBQUNhLE1BQU0sSUFDZCxDQUFDYixNQUFNLENBQUNhLE1BQU0sQ0FBQ04sTUFBTSxJQUNyQixDQUFDUCxNQUFNLENBQUNjLFNBQVMsSUFDakIsQ0FBQ2QsTUFBTSxDQUFDYyxTQUFTLENBQUNQLE1BQU0sRUFDeEI7TUFDQSxNQUFNLElBQUlWLEtBQUssQ0FBQ1ksS0FBSyxDQUNuQlosS0FBSyxDQUFDWSxLQUFLLENBQUNDLGdCQUFnQixFQUM1Qix5REFBeUQsQ0FDMUQ7SUFDSDtJQUNBLElBQUksQ0FBQ1YsTUFBTSxDQUFDTSxVQUFVLEVBQUU7TUFDdEJOLE1BQU0sQ0FBQ00sVUFBVSxHQUFHLE9BQU87SUFDN0I7SUFDQU0sT0FBTyxFQUFFO0VBQ1gsQ0FBQyxDQUFDLENBQUNWLElBQUksQ0FBQyxZQUFZO0lBQ2xCLE9BQU9HLE9BQU8sQ0FDWixjQUFjLEVBQ2QseUJBQXlCLEdBQ3ZCTCxNQUFNLENBQUNhLE1BQU0sR0FDYixpQkFBaUIsR0FDakJiLE1BQU0sQ0FBQ2MsU0FBUyxHQUNoQixLQUFLLEdBQ0xkLE1BQU0sQ0FBQ00sVUFBVSxHQUNqQixnQ0FBZ0MsQ0FDbkM7RUFDSCxDQUFDLENBQUM7QUFDSjs7QUFFQTtBQUNBLFNBQVNTLGFBQWEsR0FBRztFQUN2QixPQUFPSixPQUFPLENBQUNDLE9BQU8sRUFBRTtBQUMxQjs7QUFFQTtBQUNBLFNBQVNQLE9BQU8sQ0FBQ1csSUFBSSxFQUFFQyxJQUFJLEVBQUU7RUFDM0IsT0FBT3RCLFlBQVksQ0FBQ3VCLEdBQUcsQ0FBQyxVQUFVLEdBQUdGLElBQUksR0FBRyxHQUFHLEdBQUdDLElBQUksQ0FBQztBQUN6RDtBQUVBRSxNQUFNLENBQUNDLE9BQU8sR0FBRztFQUNmTCxhQUFhLEVBQUVBLGFBQWE7RUFDNUJqQixnQkFBZ0IsRUFBRUE7QUFDcEIsQ0FBQyJ9
@@ -2,32 +2,29 @@
2
2
 
3
3
  // Helper functions for accessing the WeChat Graph API.
4
4
  const httpsRequest = require('./httpsRequest');
5
+ var Parse = require('parse/node').Parse;
5
6
 
6
- var Parse = require('parse/node').Parse; // Returns a promise that fulfills iff this user id is valid.
7
-
8
-
7
+ // Returns a promise that fulfills iff this user id is valid.
9
8
  function validateAuthData(authData) {
10
9
  return graphRequest('auth?access_token=' + authData.access_token + '&openid=' + authData.id).then(function (data) {
11
10
  if (data.errcode == 0) {
12
11
  return;
13
12
  }
14
-
15
13
  throw new Parse.Error(Parse.Error.OBJECT_NOT_FOUND, 'wechat auth is invalid for this user.');
16
14
  });
17
- } // Returns a promise that fulfills if this app id is valid.
18
-
15
+ }
19
16
 
17
+ // Returns a promise that fulfills if this app id is valid.
20
18
  function validateAppId() {
21
19
  return Promise.resolve();
22
- } // A promisey wrapper for WeChat graph requests.
23
-
20
+ }
24
21
 
22
+ // A promisey wrapper for WeChat graph requests.
25
23
  function graphRequest(path) {
26
24
  return httpsRequest.get('https://api.weixin.qq.com/sns/' + path);
27
25
  }
28
-
29
26
  module.exports = {
30
27
  validateAppId,
31
28
  validateAuthData
32
29
  };
33
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9BZGFwdGVycy9BdXRoL3dlY2hhdC5qcyJdLCJuYW1lcyI6WyJodHRwc1JlcXVlc3QiLCJyZXF1aXJlIiwiUGFyc2UiLCJ2YWxpZGF0ZUF1dGhEYXRhIiwiYXV0aERhdGEiLCJncmFwaFJlcXVlc3QiLCJhY2Nlc3NfdG9rZW4iLCJpZCIsInRoZW4iLCJkYXRhIiwiZXJyY29kZSIsIkVycm9yIiwiT0JKRUNUX05PVF9GT1VORCIsInZhbGlkYXRlQXBwSWQiLCJQcm9taXNlIiwicmVzb2x2ZSIsInBhdGgiLCJnZXQiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiOztBQUFBO0FBQ0EsTUFBTUEsWUFBWSxHQUFHQyxPQUFPLENBQUMsZ0JBQUQsQ0FBNUI7O0FBQ0EsSUFBSUMsS0FBSyxHQUFHRCxPQUFPLENBQUMsWUFBRCxDQUFQLENBQXNCQyxLQUFsQyxDLENBRUE7OztBQUNBLFNBQVNDLGdCQUFULENBQTBCQyxRQUExQixFQUFvQztBQUNsQyxTQUFPQyxZQUFZLENBQUMsdUJBQXVCRCxRQUFRLENBQUNFLFlBQWhDLEdBQStDLFVBQS9DLEdBQTRERixRQUFRLENBQUNHLEVBQXRFLENBQVosQ0FBc0ZDLElBQXRGLENBQ0wsVUFBVUMsSUFBVixFQUFnQjtBQUNkLFFBQUlBLElBQUksQ0FBQ0MsT0FBTCxJQUFnQixDQUFwQixFQUF1QjtBQUNyQjtBQUNEOztBQUNELFVBQU0sSUFBSVIsS0FBSyxDQUFDUyxLQUFWLENBQWdCVCxLQUFLLENBQUNTLEtBQU4sQ0FBWUMsZ0JBQTVCLEVBQThDLHVDQUE5QyxDQUFOO0FBQ0QsR0FOSSxDQUFQO0FBUUQsQyxDQUVEOzs7QUFDQSxTQUFTQyxhQUFULEdBQXlCO0FBQ3ZCLFNBQU9DLE9BQU8sQ0FBQ0MsT0FBUixFQUFQO0FBQ0QsQyxDQUVEOzs7QUFDQSxTQUFTVixZQUFULENBQXNCVyxJQUF0QixFQUE0QjtBQUMxQixTQUFPaEIsWUFBWSxDQUFDaUIsR0FBYixDQUFpQixtQ0FBbUNELElBQXBELENBQVA7QUFDRDs7QUFFREUsTUFBTSxDQUFDQyxPQUFQLEdBQWlCO0FBQ2ZOLEVBQUFBLGFBRGU7QUFFZlYsRUFBQUE7QUFGZSxDQUFqQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEhlbHBlciBmdW5jdGlvbnMgZm9yIGFjY2Vzc2luZyB0aGUgV2VDaGF0IEdyYXBoIEFQSS5cbmNvbnN0IGh0dHBzUmVxdWVzdCA9IHJlcXVpcmUoJy4vaHR0cHNSZXF1ZXN0Jyk7XG52YXIgUGFyc2UgPSByZXF1aXJlKCdwYXJzZS9ub2RlJykuUGFyc2U7XG5cbi8vIFJldHVybnMgYSBwcm9taXNlIHRoYXQgZnVsZmlsbHMgaWZmIHRoaXMgdXNlciBpZCBpcyB2YWxpZC5cbmZ1bmN0aW9uIHZhbGlkYXRlQXV0aERhdGEoYXV0aERhdGEpIHtcbiAgcmV0dXJuIGdyYXBoUmVxdWVzdCgnYXV0aD9hY2Nlc3NfdG9rZW49JyArIGF1dGhEYXRhLmFjY2Vzc190b2tlbiArICcmb3BlbmlkPScgKyBhdXRoRGF0YS5pZCkudGhlbihcbiAgICBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgaWYgKGRhdGEuZXJyY29kZSA9PSAwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5ELCAnd2VjaGF0IGF1dGggaXMgaW52YWxpZCBmb3IgdGhpcyB1c2VyLicpO1xuICAgIH1cbiAgKTtcbn1cblxuLy8gUmV0dXJucyBhIHByb21pc2UgdGhhdCBmdWxmaWxscyBpZiB0aGlzIGFwcCBpZCBpcyB2YWxpZC5cbmZ1bmN0aW9uIHZhbGlkYXRlQXBwSWQoKSB7XG4gIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbn1cblxuLy8gQSBwcm9taXNleSB3cmFwcGVyIGZvciBXZUNoYXQgZ3JhcGggcmVxdWVzdHMuXG5mdW5jdGlvbiBncmFwaFJlcXVlc3QocGF0aCkge1xuICByZXR1cm4gaHR0cHNSZXF1ZXN0LmdldCgnaHR0cHM6Ly9hcGkud2VpeGluLnFxLmNvbS9zbnMvJyArIHBhdGgpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgdmFsaWRhdGVBcHBJZCxcbiAgdmFsaWRhdGVBdXRoRGF0YSxcbn07XG4iXX0=
30
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJodHRwc1JlcXVlc3QiLCJyZXF1aXJlIiwiUGFyc2UiLCJ2YWxpZGF0ZUF1dGhEYXRhIiwiYXV0aERhdGEiLCJncmFwaFJlcXVlc3QiLCJhY2Nlc3NfdG9rZW4iLCJpZCIsInRoZW4iLCJkYXRhIiwiZXJyY29kZSIsIkVycm9yIiwiT0JKRUNUX05PVF9GT1VORCIsInZhbGlkYXRlQXBwSWQiLCJQcm9taXNlIiwicmVzb2x2ZSIsInBhdGgiLCJnZXQiLCJtb2R1bGUiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL0FkYXB0ZXJzL0F1dGgvd2VjaGF0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIEhlbHBlciBmdW5jdGlvbnMgZm9yIGFjY2Vzc2luZyB0aGUgV2VDaGF0IEdyYXBoIEFQSS5cbmNvbnN0IGh0dHBzUmVxdWVzdCA9IHJlcXVpcmUoJy4vaHR0cHNSZXF1ZXN0Jyk7XG52YXIgUGFyc2UgPSByZXF1aXJlKCdwYXJzZS9ub2RlJykuUGFyc2U7XG5cbi8vIFJldHVybnMgYSBwcm9taXNlIHRoYXQgZnVsZmlsbHMgaWZmIHRoaXMgdXNlciBpZCBpcyB2YWxpZC5cbmZ1bmN0aW9uIHZhbGlkYXRlQXV0aERhdGEoYXV0aERhdGEpIHtcbiAgcmV0dXJuIGdyYXBoUmVxdWVzdCgnYXV0aD9hY2Nlc3NfdG9rZW49JyArIGF1dGhEYXRhLmFjY2Vzc190b2tlbiArICcmb3BlbmlkPScgKyBhdXRoRGF0YS5pZCkudGhlbihcbiAgICBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgaWYgKGRhdGEuZXJyY29kZSA9PSAwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5ELCAnd2VjaGF0IGF1dGggaXMgaW52YWxpZCBmb3IgdGhpcyB1c2VyLicpO1xuICAgIH1cbiAgKTtcbn1cblxuLy8gUmV0dXJucyBhIHByb21pc2UgdGhhdCBmdWxmaWxscyBpZiB0aGlzIGFwcCBpZCBpcyB2YWxpZC5cbmZ1bmN0aW9uIHZhbGlkYXRlQXBwSWQoKSB7XG4gIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbn1cblxuLy8gQSBwcm9taXNleSB3cmFwcGVyIGZvciBXZUNoYXQgZ3JhcGggcmVxdWVzdHMuXG5mdW5jdGlvbiBncmFwaFJlcXVlc3QocGF0aCkge1xuICByZXR1cm4gaHR0cHNSZXF1ZXN0LmdldCgnaHR0cHM6Ly9hcGkud2VpeGluLnFxLmNvbS9zbnMvJyArIHBhdGgpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgdmFsaWRhdGVBcHBJZCxcbiAgdmFsaWRhdGVBdXRoRGF0YSxcbn07XG4iXSwibWFwcGluZ3MiOiI7O0FBQUE7QUFDQSxNQUFNQSxZQUFZLEdBQUdDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQztBQUM5QyxJQUFJQyxLQUFLLEdBQUdELE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQ0MsS0FBSzs7QUFFdkM7QUFDQSxTQUFTQyxnQkFBZ0IsQ0FBQ0MsUUFBUSxFQUFFO0VBQ2xDLE9BQU9DLFlBQVksQ0FBQyxvQkFBb0IsR0FBR0QsUUFBUSxDQUFDRSxZQUFZLEdBQUcsVUFBVSxHQUFHRixRQUFRLENBQUNHLEVBQUUsQ0FBQyxDQUFDQyxJQUFJLENBQy9GLFVBQVVDLElBQUksRUFBRTtJQUNkLElBQUlBLElBQUksQ0FBQ0MsT0FBTyxJQUFJLENBQUMsRUFBRTtNQUNyQjtJQUNGO0lBQ0EsTUFBTSxJQUFJUixLQUFLLENBQUNTLEtBQUssQ0FBQ1QsS0FBSyxDQUFDUyxLQUFLLENBQUNDLGdCQUFnQixFQUFFLHVDQUF1QyxDQUFDO0VBQzlGLENBQUMsQ0FDRjtBQUNIOztBQUVBO0FBQ0EsU0FBU0MsYUFBYSxHQUFHO0VBQ3ZCLE9BQU9DLE9BQU8sQ0FBQ0MsT0FBTyxFQUFFO0FBQzFCOztBQUVBO0FBQ0EsU0FBU1YsWUFBWSxDQUFDVyxJQUFJLEVBQUU7RUFDMUIsT0FBT2hCLFlBQVksQ0FBQ2lCLEdBQUcsQ0FBQyxnQ0FBZ0MsR0FBR0QsSUFBSSxDQUFDO0FBQ2xFO0FBRUFFLE1BQU0sQ0FBQ0MsT0FBTyxHQUFHO0VBQ2ZOLGFBQWE7RUFDYlY7QUFDRixDQUFDIn0=