parse-server 2.8.4 → 8.6.2

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 (240) hide show
  1. package/LICENSE +167 -25
  2. package/NOTICE +10 -0
  3. package/README.md +929 -278
  4. package/lib/AccountLockout.js +47 -30
  5. package/lib/Adapters/AdapterLoader.js +21 -6
  6. package/lib/Adapters/Analytics/AnalyticsAdapter.js +15 -12
  7. package/lib/Adapters/Auth/AuthAdapter.js +116 -13
  8. package/lib/Adapters/Auth/BaseCodeAuthAdapter.js +99 -0
  9. package/lib/Adapters/Auth/OAuth1Client.js +27 -46
  10. package/lib/Adapters/Auth/apple.js +123 -0
  11. package/lib/Adapters/Auth/facebook.js +162 -35
  12. package/lib/Adapters/Auth/gcenter.js +217 -0
  13. package/lib/Adapters/Auth/github.js +118 -48
  14. package/lib/Adapters/Auth/google.js +160 -51
  15. package/lib/Adapters/Auth/gpgames.js +125 -0
  16. package/lib/Adapters/Auth/httpsRequest.js +6 -7
  17. package/lib/Adapters/Auth/index.js +170 -62
  18. package/lib/Adapters/Auth/instagram.js +114 -40
  19. package/lib/Adapters/Auth/janraincapture.js +52 -23
  20. package/lib/Adapters/Auth/janrainengage.js +19 -36
  21. package/lib/Adapters/Auth/keycloak.js +148 -0
  22. package/lib/Adapters/Auth/ldap.js +167 -0
  23. package/lib/Adapters/Auth/line.js +125 -0
  24. package/lib/Adapters/Auth/linkedin.js +111 -55
  25. package/lib/Adapters/Auth/meetup.js +24 -34
  26. package/lib/Adapters/Auth/mfa.js +324 -0
  27. package/lib/Adapters/Auth/microsoft.js +111 -0
  28. package/lib/Adapters/Auth/oauth2.js +97 -162
  29. package/lib/Adapters/Auth/phantauth.js +53 -0
  30. package/lib/Adapters/Auth/qq.js +108 -49
  31. package/lib/Adapters/Auth/spotify.js +107 -55
  32. package/lib/Adapters/Auth/twitter.js +188 -48
  33. package/lib/Adapters/Auth/utils.js +28 -0
  34. package/lib/Adapters/Auth/vkontakte.js +26 -39
  35. package/lib/Adapters/Auth/wechat.js +106 -44
  36. package/lib/Adapters/Auth/weibo.js +132 -58
  37. package/lib/Adapters/Cache/CacheAdapter.js +13 -8
  38. package/lib/Adapters/Cache/InMemoryCache.js +3 -13
  39. package/lib/Adapters/Cache/InMemoryCacheAdapter.js +5 -13
  40. package/lib/Adapters/Cache/LRUCache.js +13 -27
  41. package/lib/Adapters/Cache/NullCacheAdapter.js +3 -8
  42. package/lib/Adapters/Cache/RedisCacheAdapter.js +85 -76
  43. package/lib/Adapters/Cache/SchemaCache.js +25 -0
  44. package/lib/Adapters/Email/MailAdapter.js +10 -8
  45. package/lib/Adapters/Files/FilesAdapter.js +83 -25
  46. package/lib/Adapters/Files/GridFSBucketAdapter.js +231 -0
  47. package/lib/Adapters/Files/GridStoreAdapter.js +4 -91
  48. package/lib/Adapters/Logger/LoggerAdapter.js +18 -14
  49. package/lib/Adapters/Logger/WinstonLogger.js +69 -88
  50. package/lib/Adapters/Logger/WinstonLoggerAdapter.js +7 -16
  51. package/lib/Adapters/MessageQueue/EventEmitterMQ.js +8 -26
  52. package/lib/Adapters/PubSub/EventEmitterPubSub.js +12 -25
  53. package/lib/Adapters/PubSub/PubSubAdapter.js +34 -0
  54. package/lib/Adapters/PubSub/RedisPubSub.js +42 -19
  55. package/lib/Adapters/Push/PushAdapter.js +14 -7
  56. package/lib/Adapters/Storage/Mongo/MongoCollection.js +137 -45
  57. package/lib/Adapters/Storage/Mongo/MongoSchemaCollection.js +158 -63
  58. package/lib/Adapters/Storage/Mongo/MongoStorageAdapter.js +320 -168
  59. package/lib/Adapters/Storage/Mongo/MongoTransform.js +279 -306
  60. package/lib/Adapters/Storage/Postgres/PostgresClient.js +14 -10
  61. package/lib/Adapters/Storage/Postgres/PostgresConfigParser.js +47 -21
  62. package/lib/Adapters/Storage/Postgres/PostgresStorageAdapter.js +854 -468
  63. package/lib/Adapters/Storage/Postgres/sql/index.js +4 -6
  64. package/lib/Adapters/Storage/StorageAdapter.js +1 -1
  65. package/lib/Adapters/WebSocketServer/WSAdapter.js +35 -0
  66. package/lib/Adapters/WebSocketServer/WSSAdapter.js +66 -0
  67. package/lib/Auth.js +488 -125
  68. package/lib/ClientSDK.js +2 -6
  69. package/lib/Config.js +525 -94
  70. package/lib/Controllers/AdaptableController.js +5 -25
  71. package/lib/Controllers/AnalyticsController.js +22 -23
  72. package/lib/Controllers/CacheController.js +10 -31
  73. package/lib/Controllers/DatabaseController.js +767 -313
  74. package/lib/Controllers/FilesController.js +49 -54
  75. package/lib/Controllers/HooksController.js +80 -84
  76. package/lib/Controllers/LiveQueryController.js +35 -22
  77. package/lib/Controllers/LoggerController.js +22 -58
  78. package/lib/Controllers/ParseGraphQLController.js +293 -0
  79. package/lib/Controllers/PushController.js +58 -49
  80. package/lib/Controllers/SchemaController.js +916 -422
  81. package/lib/Controllers/UserController.js +265 -180
  82. package/lib/Controllers/index.js +90 -125
  83. package/lib/Controllers/types.js +1 -1
  84. package/lib/Deprecator/Deprecations.js +30 -0
  85. package/lib/Deprecator/Deprecator.js +127 -0
  86. package/lib/Error.js +48 -0
  87. package/lib/GraphQL/ParseGraphQLSchema.js +375 -0
  88. package/lib/GraphQL/ParseGraphQLServer.js +214 -0
  89. package/lib/GraphQL/helpers/objectsMutations.js +30 -0
  90. package/lib/GraphQL/helpers/objectsQueries.js +246 -0
  91. package/lib/GraphQL/loaders/configMutations.js +87 -0
  92. package/lib/GraphQL/loaders/configQueries.js +79 -0
  93. package/lib/GraphQL/loaders/defaultGraphQLMutations.js +21 -0
  94. package/lib/GraphQL/loaders/defaultGraphQLQueries.js +23 -0
  95. package/lib/GraphQL/loaders/defaultGraphQLTypes.js +1098 -0
  96. package/lib/GraphQL/loaders/defaultRelaySchema.js +53 -0
  97. package/lib/GraphQL/loaders/filesMutations.js +107 -0
  98. package/lib/GraphQL/loaders/functionsMutations.js +78 -0
  99. package/lib/GraphQL/loaders/parseClassMutations.js +268 -0
  100. package/lib/GraphQL/loaders/parseClassQueries.js +127 -0
  101. package/lib/GraphQL/loaders/parseClassTypes.js +493 -0
  102. package/lib/GraphQL/loaders/schemaDirectives.js +62 -0
  103. package/lib/GraphQL/loaders/schemaMutations.js +162 -0
  104. package/lib/GraphQL/loaders/schemaQueries.js +81 -0
  105. package/lib/GraphQL/loaders/schemaTypes.js +341 -0
  106. package/lib/GraphQL/loaders/usersMutations.js +433 -0
  107. package/lib/GraphQL/loaders/usersQueries.js +90 -0
  108. package/lib/GraphQL/parseGraphQLUtils.js +63 -0
  109. package/lib/GraphQL/transformers/className.js +14 -0
  110. package/lib/GraphQL/transformers/constraintType.js +53 -0
  111. package/lib/GraphQL/transformers/inputType.js +51 -0
  112. package/lib/GraphQL/transformers/mutation.js +274 -0
  113. package/lib/GraphQL/transformers/outputType.js +51 -0
  114. package/lib/GraphQL/transformers/query.js +237 -0
  115. package/lib/GraphQL/transformers/schemaFields.js +99 -0
  116. package/lib/KeyPromiseQueue.js +48 -0
  117. package/lib/LiveQuery/Client.js +25 -33
  118. package/lib/LiveQuery/Id.js +2 -5
  119. package/lib/LiveQuery/ParseCloudCodePublisher.js +26 -23
  120. package/lib/LiveQuery/ParseLiveQueryServer.js +560 -285
  121. package/lib/LiveQuery/ParsePubSub.js +7 -16
  122. package/lib/LiveQuery/ParseWebSocketServer.js +42 -39
  123. package/lib/LiveQuery/QueryTools.js +76 -15
  124. package/lib/LiveQuery/RequestSchema.js +111 -97
  125. package/lib/LiveQuery/SessionTokenCache.js +23 -36
  126. package/lib/LiveQuery/Subscription.js +8 -17
  127. package/lib/LiveQuery/equalObjects.js +2 -3
  128. package/lib/Options/Definitions.js +1355 -382
  129. package/lib/Options/docs.js +301 -62
  130. package/lib/Options/index.js +11 -1
  131. package/lib/Options/parsers.js +14 -10
  132. package/lib/Page.js +44 -0
  133. package/lib/ParseMessageQueue.js +6 -13
  134. package/lib/ParseServer.js +474 -235
  135. package/lib/ParseServerRESTController.js +102 -40
  136. package/lib/PromiseRouter.js +39 -50
  137. package/lib/Push/PushQueue.js +24 -30
  138. package/lib/Push/PushWorker.js +32 -56
  139. package/lib/Push/utils.js +22 -35
  140. package/lib/RestQuery.js +361 -139
  141. package/lib/RestWrite.js +713 -344
  142. package/lib/Routers/AggregateRouter.js +97 -71
  143. package/lib/Routers/AnalyticsRouter.js +8 -14
  144. package/lib/Routers/AudiencesRouter.js +16 -35
  145. package/lib/Routers/ClassesRouter.js +86 -72
  146. package/lib/Routers/CloudCodeRouter.js +28 -37
  147. package/lib/Routers/FeaturesRouter.js +22 -25
  148. package/lib/Routers/FilesRouter.js +266 -171
  149. package/lib/Routers/FunctionsRouter.js +87 -103
  150. package/lib/Routers/GlobalConfigRouter.js +94 -33
  151. package/lib/Routers/GraphQLRouter.js +41 -0
  152. package/lib/Routers/HooksRouter.js +43 -47
  153. package/lib/Routers/IAPValidationRouter.js +57 -70
  154. package/lib/Routers/InstallationsRouter.js +17 -25
  155. package/lib/Routers/LogsRouter.js +10 -25
  156. package/lib/Routers/PagesRouter.js +647 -0
  157. package/lib/Routers/PublicAPIRouter.js +104 -112
  158. package/lib/Routers/PurgeRouter.js +19 -29
  159. package/lib/Routers/PushRouter.js +14 -28
  160. package/lib/Routers/RolesRouter.js +7 -14
  161. package/lib/Routers/SchemasRouter.js +63 -42
  162. package/lib/Routers/SecurityRouter.js +34 -0
  163. package/lib/Routers/SessionsRouter.js +25 -38
  164. package/lib/Routers/UsersRouter.js +463 -190
  165. package/lib/SchemaMigrations/DefinedSchemas.js +379 -0
  166. package/lib/SchemaMigrations/Migrations.js +30 -0
  167. package/lib/Security/Check.js +109 -0
  168. package/lib/Security/CheckGroup.js +44 -0
  169. package/lib/Security/CheckGroups/CheckGroupDatabase.js +44 -0
  170. package/lib/Security/CheckGroups/CheckGroupServerConfig.js +96 -0
  171. package/lib/Security/CheckGroups/CheckGroups.js +21 -0
  172. package/lib/Security/CheckRunner.js +213 -0
  173. package/lib/SharedRest.js +29 -0
  174. package/lib/StatusHandler.js +96 -93
  175. package/lib/TestUtils.js +70 -14
  176. package/lib/Utils.js +468 -0
  177. package/lib/batch.js +74 -40
  178. package/lib/cache.js +8 -8
  179. package/lib/cli/definitions/parse-live-query-server.js +4 -3
  180. package/lib/cli/definitions/parse-server.js +4 -3
  181. package/lib/cli/parse-live-query-server.js +9 -17
  182. package/lib/cli/parse-server.js +49 -47
  183. package/lib/cli/utils/commander.js +20 -29
  184. package/lib/cli/utils/runner.js +31 -32
  185. package/lib/cloud-code/Parse.Cloud.js +711 -36
  186. package/lib/cloud-code/Parse.Server.js +21 -0
  187. package/lib/cryptoUtils.js +6 -11
  188. package/lib/defaults.js +21 -15
  189. package/lib/deprecated.js +1 -1
  190. package/lib/index.js +78 -67
  191. package/lib/logger.js +12 -20
  192. package/lib/middlewares.js +484 -160
  193. package/lib/password.js +10 -6
  194. package/lib/request.js +175 -0
  195. package/lib/requiredParameter.js +4 -3
  196. package/lib/rest.js +157 -82
  197. package/lib/triggers.js +627 -185
  198. package/lib/vendor/README.md +3 -3
  199. package/lib/vendor/mongodbUrl.js +224 -137
  200. package/package.json +135 -57
  201. package/postinstall.js +38 -50
  202. package/public_html/invalid_verification_link.html +3 -3
  203. package/types/@types/@parse/fs-files-adapter/index.d.ts +5 -0
  204. package/types/@types/deepcopy/index.d.ts +5 -0
  205. package/types/LiveQuery/ParseLiveQueryServer.d.ts +40 -0
  206. package/types/Options/index.d.ts +301 -0
  207. package/types/ParseServer.d.ts +65 -0
  208. package/types/eslint.config.mjs +30 -0
  209. package/types/index.d.ts +21 -0
  210. package/types/logger.d.ts +2 -0
  211. package/types/tests.ts +44 -0
  212. package/types/tsconfig.json +24 -0
  213. package/CHANGELOG.md +0 -1246
  214. package/PATENTS +0 -37
  215. package/bin/dev +0 -37
  216. package/lib/.DS_Store +0 -0
  217. package/lib/Adapters/Auth/common.js +0 -2
  218. package/lib/Adapters/Auth/facebookaccountkit.js +0 -69
  219. package/lib/Controllers/SchemaCache.js +0 -97
  220. package/lib/LiveQuery/.DS_Store +0 -0
  221. package/lib/cli/utils/parsers.js +0 -77
  222. package/lib/cloud-code/.DS_Store +0 -0
  223. package/lib/cloud-code/HTTPResponse.js +0 -57
  224. package/lib/cloud-code/Untitled-1 +0 -123
  225. package/lib/cloud-code/httpRequest.js +0 -102
  226. package/lib/cloud-code/team.html +0 -123
  227. package/lib/graphql/ParseClass.js +0 -234
  228. package/lib/graphql/Schema.js +0 -197
  229. package/lib/graphql/index.js +0 -1
  230. package/lib/graphql/types/ACL.js +0 -35
  231. package/lib/graphql/types/Date.js +0 -25
  232. package/lib/graphql/types/File.js +0 -24
  233. package/lib/graphql/types/GeoPoint.js +0 -35
  234. package/lib/graphql/types/JSONObject.js +0 -30
  235. package/lib/graphql/types/NumberInput.js +0 -43
  236. package/lib/graphql/types/NumberQuery.js +0 -42
  237. package/lib/graphql/types/Pointer.js +0 -35
  238. package/lib/graphql/types/QueryConstraint.js +0 -61
  239. package/lib/graphql/types/StringQuery.js +0 -39
  240. package/lib/graphql/types/index.js +0 -110
@@ -1,37 +1,28 @@
1
- 'use strict';
1
+ "use strict";
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.HooksRouter = undefined;
7
-
8
- var _node = require('parse/node');
9
-
10
- var _PromiseRouter = require('../PromiseRouter');
11
-
12
- var _PromiseRouter2 = _interopRequireDefault(_PromiseRouter);
13
-
14
- var _middlewares = require('../middlewares');
15
-
16
- var middleware = _interopRequireWildcard(_middlewares);
17
-
18
- function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
19
-
20
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
-
22
- class HooksRouter extends _PromiseRouter2.default {
6
+ exports.default = exports.HooksRouter = void 0;
7
+ var _node = require("parse/node");
8
+ var _PromiseRouter = _interopRequireDefault(require("../PromiseRouter"));
9
+ var middleware = _interopRequireWildcard(require("../middlewares"));
10
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
11
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
+ class HooksRouter extends _PromiseRouter.default {
23
13
  createHook(aHook, config) {
24
- return config.hooksController.createHook(aHook).then(hook => ({ response: hook }));
14
+ return config.hooksController.createHook(aHook).then(hook => ({
15
+ response: hook
16
+ }));
25
17
  }
26
-
27
18
  updateHook(aHook, config) {
28
- return config.hooksController.updateHook(aHook).then(hook => ({ response: hook }));
19
+ return config.hooksController.updateHook(aHook).then(hook => ({
20
+ response: hook
21
+ }));
29
22
  }
30
-
31
23
  handlePost(req) {
32
- return this.createHook(req.body, req.config);
24
+ return this.createHook(req.body || {}, req.config);
33
25
  }
34
-
35
26
  handleGetFunctions(req) {
36
27
  var hooksController = req.config.hooksController;
37
28
  if (req.params.functionName) {
@@ -39,68 +30,74 @@ class HooksRouter extends _PromiseRouter2.default {
39
30
  if (!foundFunction) {
40
31
  throw new _node.Parse.Error(143, `no function named: ${req.params.functionName} is defined`);
41
32
  }
42
- return Promise.resolve({ response: foundFunction });
33
+ return Promise.resolve({
34
+ response: foundFunction
35
+ });
43
36
  });
44
37
  }
45
-
46
38
  return hooksController.getFunctions().then(functions => {
47
- return { response: functions || [] };
39
+ return {
40
+ response: functions || []
41
+ };
48
42
  }, err => {
49
43
  throw err;
50
44
  });
51
45
  }
52
-
53
46
  handleGetTriggers(req) {
54
47
  var hooksController = req.config.hooksController;
55
48
  if (req.params.className && req.params.triggerName) {
56
-
57
49
  return hooksController.getTrigger(req.params.className, req.params.triggerName).then(foundTrigger => {
58
50
  if (!foundTrigger) {
59
51
  throw new _node.Parse.Error(143, `class ${req.params.className} does not exist`);
60
52
  }
61
- return Promise.resolve({ response: foundTrigger });
53
+ return Promise.resolve({
54
+ response: foundTrigger
55
+ });
62
56
  });
63
57
  }
64
-
65
- return hooksController.getTriggers().then(triggers => ({ response: triggers || [] }));
58
+ return hooksController.getTriggers().then(triggers => ({
59
+ response: triggers || []
60
+ }));
66
61
  }
67
-
68
62
  handleDelete(req) {
69
63
  var hooksController = req.config.hooksController;
70
64
  if (req.params.functionName) {
71
- return hooksController.deleteFunction(req.params.functionName).then(() => ({ response: {} }));
65
+ return hooksController.deleteFunction(req.params.functionName).then(() => ({
66
+ response: {}
67
+ }));
72
68
  } else if (req.params.className && req.params.triggerName) {
73
- return hooksController.deleteTrigger(req.params.className, req.params.triggerName).then(() => ({ response: {} }));
69
+ return hooksController.deleteTrigger(req.params.className, req.params.triggerName).then(() => ({
70
+ response: {}
71
+ }));
74
72
  }
75
- return Promise.resolve({ response: {} });
73
+ return Promise.resolve({
74
+ response: {}
75
+ });
76
76
  }
77
-
78
77
  handleUpdate(req) {
79
78
  var hook;
80
- if (req.params.functionName && req.body.url) {
79
+ if (req.params.functionName && req.body?.url) {
81
80
  hook = {};
82
81
  hook.functionName = req.params.functionName;
83
82
  hook.url = req.body.url;
84
- } else if (req.params.className && req.params.triggerName && req.body.url) {
83
+ } else if (req.params.className && req.params.triggerName && req.body?.url) {
85
84
  hook = {};
86
85
  hook.className = req.params.className;
87
86
  hook.triggerName = req.params.triggerName;
88
87
  hook.url = req.body.url;
89
88
  } else {
90
- throw new _node.Parse.Error(143, "invalid hook declaration");
89
+ throw new _node.Parse.Error(143, 'invalid hook declaration');
91
90
  }
92
91
  return this.updateHook(hook, req.config);
93
92
  }
94
-
95
93
  handlePut(req) {
96
- var body = req.body;
97
- if (body.__op == "Delete") {
94
+ var body = req.body || {};
95
+ if (body.__op == 'Delete') {
98
96
  return this.handleDelete(req);
99
97
  } else {
100
98
  return this.handleUpdate(req);
101
99
  }
102
100
  }
103
-
104
101
  mountRoutes() {
105
102
  this.route('GET', '/hooks/functions', middleware.promiseEnforceMasterKeyAccess, this.handleGetFunctions.bind(this));
106
103
  this.route('GET', '/hooks/triggers', middleware.promiseEnforceMasterKeyAccess, this.handleGetTriggers.bind(this));
@@ -112,7 +109,6 @@ class HooksRouter extends _PromiseRouter2.default {
112
109
  this.route('PUT', '/hooks/triggers/:className/:triggerName', middleware.promiseEnforceMasterKeyAccess, this.handlePut.bind(this));
113
110
  }
114
111
  }
115
-
116
112
  exports.HooksRouter = HooksRouter;
117
- exports.default = HooksRouter;
118
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9Sb3V0ZXJzL0hvb2tzUm91dGVyLmpzIl0sIm5hbWVzIjpbIm1pZGRsZXdhcmUiLCJIb29rc1JvdXRlciIsIlByb21pc2VSb3V0ZXIiLCJjcmVhdGVIb29rIiwiYUhvb2siLCJjb25maWciLCJob29rc0NvbnRyb2xsZXIiLCJ0aGVuIiwiaG9vayIsInJlc3BvbnNlIiwidXBkYXRlSG9vayIsImhhbmRsZVBvc3QiLCJyZXEiLCJib2R5IiwiaGFuZGxlR2V0RnVuY3Rpb25zIiwicGFyYW1zIiwiZnVuY3Rpb25OYW1lIiwiZ2V0RnVuY3Rpb24iLCJmb3VuZEZ1bmN0aW9uIiwiUGFyc2UiLCJFcnJvciIsIlByb21pc2UiLCJyZXNvbHZlIiwiZ2V0RnVuY3Rpb25zIiwiZnVuY3Rpb25zIiwiZXJyIiwiaGFuZGxlR2V0VHJpZ2dlcnMiLCJjbGFzc05hbWUiLCJ0cmlnZ2VyTmFtZSIsImdldFRyaWdnZXIiLCJmb3VuZFRyaWdnZXIiLCJnZXRUcmlnZ2VycyIsInRyaWdnZXJzIiwiaGFuZGxlRGVsZXRlIiwiZGVsZXRlRnVuY3Rpb24iLCJkZWxldGVUcmlnZ2VyIiwiaGFuZGxlVXBkYXRlIiwidXJsIiwiaGFuZGxlUHV0IiwiX19vcCIsIm1vdW50Um91dGVzIiwicm91dGUiLCJwcm9taXNlRW5mb3JjZU1hc3RlcktleUFjY2VzcyIsImJpbmQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFDQTs7OztBQUNBOztJQUFZQSxVOzs7Ozs7QUFFTCxNQUFNQyxXQUFOLFNBQTBCQyx1QkFBMUIsQ0FBd0M7QUFDN0NDLGFBQVdDLEtBQVgsRUFBa0JDLE1BQWxCLEVBQTBCO0FBQ3hCLFdBQU9BLE9BQU9DLGVBQVAsQ0FBdUJILFVBQXZCLENBQWtDQyxLQUFsQyxFQUF5Q0csSUFBekMsQ0FBK0NDLElBQUQsS0FBVyxFQUFDQyxVQUFVRCxJQUFYLEVBQVgsQ0FBOUMsQ0FBUDtBQUNEOztBQUVERSxhQUFXTixLQUFYLEVBQWtCQyxNQUFsQixFQUEwQjtBQUN4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VyxHQUFBQSxXO2tCQStGRUEsVyIsImZpbGUiOiJIb29rc1JvdXRlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBhcnNlIH0gICAgICAgZnJvbSAncGFyc2Uvbm9kZSc7XG5pbXBvcnQgUHJvbWlzZVJvdXRlciAgIGZyb20gJy4uL1Byb21pc2VSb3V0ZXInO1xuaW1wb3J0ICogYXMgbWlkZGxld2FyZSBmcm9tIFwiLi4vbWlkZGxld2FyZXNcIjtcblxuZXhwb3J0IGNsYXNzIEhvb2tzUm91dGVyIGV4dGVuZHMgUHJvbWlzZVJvdXRlciB7XG4gIGNyZWF0ZUhvb2soYUhvb2ssIGNvbmZpZykge1xuICAgIHJldHVybiBjb25maWcuaG9va3NDb250cm9sbGVyLmNyZWF0ZUhvb2soYUhvb2spLnRoZW4oKGhvb2spID0+ICh7cmVzcG9uc2U6IGhvb2t9KSk7XG4gIH1cblxuICB1cGRhdGVIb29rKGFIb29rLCBjb25maWcpIHtcbiAgICByZXR1cm4gIGNvbmZpZy5ob29rc0NvbnRyb2xsZXIudXBkYXRlSG9vayhhSG9vaykudGhlbigoaG9vaykgPT4gKHtyZXNwb25zZTogaG9va30pKTtcbiAgfVxuXG4gIGhhbmRsZVBvc3QocmVxKSB7XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlSG9vayhyZXEuYm9keSwgcmVxLmNvbmZpZyk7XG4gIH1cblxuICBoYW5kbGVHZXRGdW5jdGlvbnMocmVxKSB7XG4gICAgdmFyIGhvb2tzQ29udHJvbGxlciA9IHJlcS5jb25maWcuaG9va3NDb250cm9sbGVyO1xuICAgIGlmIChyZXEucGFyYW1zLmZ1bmN0aW9uTmFtZSkge1xuICAgICAgcmV0dXJuIGhvb2tzQ29udHJvbGxlci5nZXRGdW5jdGlvbihyZXEucGFyYW1zLmZ1bmN0aW9uTmFtZSkudGhlbigoZm91bmRGdW5jdGlvbikgPT4ge1xuICAgICAgICBpZiAoIWZvdW5kRnVuY3Rpb24pIHtcbiAgICAgICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoMTQzLCBgbm8gZnVuY3Rpb24gbmFtZWQ6ICR7cmVxLnBhcmFtcy5mdW5jdGlvbk5hbWV9IGlzIGRlZmluZWRgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHtyZXNwb25zZTogZm91bmRGdW5jdGlvbn0pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGhvb2tzQ29udHJvbGxlci5nZXRGdW5jdGlvbnMoKS50aGVuKChmdW5jdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiB7IHJlc3BvbnNlOiBmdW5jdGlvbnMgfHwgW10gfTtcbiAgICB9LCAoZXJyKSA9PiB7XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfSk7XG4gIH1cblxuICBoYW5kbGVHZXRUcmlnZ2VycyhyZXEpIHtcbiAgICB2YXIgaG9va3NDb250cm9sbGVyID0gcmVxLmNvbmZpZy5ob29rc0NvbnRyb2xsZXI7XG4gICAgaWYgKHJlcS5wYXJhbXMuY2xhc3NOYW1lICYmIHJlcS5wYXJhbXMudHJpZ2dlck5hbWUpIHtcblxuICAgICAgcmV0dXJuIGhvb2tzQ29udHJvbGxlci5nZXRUcmlnZ2VyKHJlcS5wYXJhbXMuY2xhc3NOYW1lLCByZXEucGFyYW1zLnRyaWdnZXJOYW1lKS50aGVuKChmb3VuZFRyaWdnZXIpID0+IHtcbiAgICAgICAgaWYgKCFmb3VuZFRyaWdnZXIpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoMTQzLGBjbGFzcyAke3JlcS5wYXJhbXMuY2xhc3NOYW1lfSBkb2VzIG5vdCBleGlzdGApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoe3Jlc3BvbnNlOiBmb3VuZFRyaWdnZXJ9KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBob29rc0NvbnRyb2xsZXIuZ2V0VHJpZ2dlcnMoKS50aGVuKCh0cmlnZ2VycykgPT4gKHsgcmVzcG9uc2U6IHRyaWdnZXJzIHx8IFtdIH0pKTtcbiAgfVxuXG4gIGhhbmRsZURlbGV0ZShyZXEpIHtcbiAgICB2YXIgaG9va3NDb250cm9sbGVyID0gcmVxLmNvbmZpZy5ob29rc0NvbnRyb2xsZXI7XG4gICAgaWYgKHJlcS5wYXJhbXMuZnVuY3Rpb25OYW1lKSB7XG4gICAgICByZXR1cm4gaG9va3NDb250cm9sbGVyLmRlbGV0ZUZ1bmN0aW9uKHJlcS5wYXJhbXMuZnVuY3Rpb25OYW1lKS50aGVuKCgpID0+ICh7cmVzcG9uc2U6IHt9fSkpXG5cbiAgICB9IGVsc2UgaWYgKHJlcS5wYXJhbXMuY2xhc3NOYW1lICYmIHJlcS5wYXJhbXMudHJpZ2dlck5hbWUpIHtcbiAgICAgIHJldHVybiBob29rc0NvbnRyb2xsZXIuZGVsZXRlVHJpZ2dlcihyZXEucGFyYW1zLmNsYXNzTmFtZSwgcmVxLnBhcmFtcy50cmlnZ2VyTmFtZSkudGhlbigoKSA9PiAoe3Jlc3BvbnNlOiB7fX0pKVxuICAgIH1cbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHtyZXNwb25zZToge319KTtcbiAgfVxuXG4gIGhhbmRsZVVwZGF0ZShyZXEpIHtcbiAgICB2YXIgaG9vaztcbiAgICBpZiAocmVxLnBhcmFtcy5mdW5jdGlvbk5hbWUgJiYgcmVxLmJvZHkudXJsKSB7XG4gICAgICBob29rID0ge31cbiAgICAgIGhvb2suZnVuY3Rpb25OYW1lID0gcmVxLnBhcmFtcy5mdW5jdGlvbk5hbWU7XG4gICAgICBob29rLnVybCA9IHJlcS5ib2R5LnVybDtcbiAgICB9IGVsc2UgaWYgKHJlcS5wYXJhbXMuY2xhc3NOYW1lICYmIHJlcS5wYXJhbXMudHJpZ2dlck5hbWUgJiYgcmVxLmJvZHkudXJsKSB7XG4gICAgICBob29rID0ge31cbiAgICAgIGhvb2suY2xhc3NOYW1lID0gcmVxLnBhcmFtcy5jbGFzc05hbWU7XG4gICAgICBob29rLnRyaWdnZXJOYW1lID0gcmVxLnBhcmFtcy50cmlnZ2VyTmFtZTtcbiAgICAgIGhvb2sudXJsID0gcmVxLmJvZHkudXJsXG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcigxNDMsIFwiaW52YWxpZCBob29rIGRlY2xhcmF0aW9uXCIpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy51cGRhdGVIb29rKGhvb2ssIHJlcS5jb25maWcpO1xuICB9XG5cbiAgaGFuZGxlUHV0KHJlcSkge1xuICAgIHZhciBib2R5ID0gcmVxLmJvZHk7XG4gICAgaWYgKGJvZHkuX19vcCA9PSBcIkRlbGV0ZVwiKSB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVEZWxldGUocmVxKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlVXBkYXRlKHJlcSk7XG4gICAgfVxuICB9XG5cbiAgbW91bnRSb3V0ZXMoKSB7XG4gICAgdGhpcy5yb3V0ZSgnR0VUJywgICcvaG9va3MvZnVuY3Rpb25zJywgbWlkZGxld2FyZS5wcm9taXNlRW5mb3JjZU1hc3RlcktleUFjY2VzcywgdGhpcy5oYW5kbGVHZXRGdW5jdGlvbnMuYmluZCh0aGlzKSk7XG4gICAgdGhpcy5yb3V0ZSgnR0VUJywgICcvaG9va3MvdHJpZ2dlcnMnLCBtaWRkbGV3YXJlLnByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzLCB0aGlzLmhhbmRsZUdldFRyaWdnZXJzLmJpbmQodGhpcykpO1xuICAgIHRoaXMucm91dGUoJ0dFVCcsICAnL2hvb2tzL2Z1bmN0aW9ucy86ZnVuY3Rpb25OYW1lJywgbWlkZGxld2FyZS5wcm9taXNlRW5mb3JjZU1hc3RlcktleUFjY2VzcywgdGhpcy5oYW5kbGVHZXRGdW5jdGlvbnMuYmluZCh0aGlzKSk7XG4gICAgdGhpcy5yb3V0ZSgnR0VUJywgICcvaG9va3MvdHJpZ2dlcnMvOmNsYXNzTmFtZS86dHJpZ2dlck5hbWUnLCBtaWRkbGV3YXJlLnByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzLCB0aGlzLmhhbmRsZUdldFRyaWdnZXJzLmJpbmQodGhpcykpO1xuICAgIHRoaXMucm91dGUoJ1BPU1QnLCAnL2hvb2tzL2Z1bmN0aW9ucycsIG1pZGRsZXdhcmUucHJvbWlzZUVuZm9yY2VNYXN0ZXJLZXlBY2Nlc3MsIHRoaXMuaGFuZGxlUG9zdC5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLnJvdXRlKCdQT1NUJywgJy9ob29rcy90cmlnZ2VycycsIG1pZGRsZXdhcmUucHJvbWlzZUVuZm9yY2VNYXN0ZXJLZXlBY2Nlc3MsIHRoaXMuaGFuZGxlUG9zdC5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLnJvdXRlKCdQVVQnLCAgJy9ob29rcy9mdW5jdGlvbnMvOmZ1bmN0aW9uTmFtZScsIG1pZGRsZXdhcmUucHJvbWlzZUVuZm9yY2VNYXN0ZXJLZXlBY2Nlc3MsIHRoaXMuaGFuZGxlUHV0LmJpbmQodGhpcykpO1xuICAgIHRoaXMucm91dGUoJ1BVVCcsICAnL2hvb2tzL3RyaWdnZXJzLzpjbGFzc05hbWUvOnRyaWdnZXJOYW1lJywgbWlkZGxld2FyZS5wcm9taXNlRW5mb3JjZU1hc3RlcktleUFjY2VzcywgdGhpcy5oYW5kbGVQdXQuYmluZCh0aGlzKSk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgSG9va3NSb3V0ZXI7XG4iXX0=
113
+ var _default = exports.default = HooksRouter;
114
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbm9kZSIsInJlcXVpcmUiLCJfUHJvbWlzZVJvdXRlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJtaWRkbGV3YXJlIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJlIiwidCIsIldlYWtNYXAiLCJyIiwibiIsIl9fZXNNb2R1bGUiLCJvIiwiaSIsImYiLCJfX3Byb3RvX18iLCJkZWZhdWx0IiwiaGFzIiwiZ2V0Iiwic2V0IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJIb29rc1JvdXRlciIsIlByb21pc2VSb3V0ZXIiLCJjcmVhdGVIb29rIiwiYUhvb2siLCJjb25maWciLCJob29rc0NvbnRyb2xsZXIiLCJ0aGVuIiwiaG9vayIsInJlc3BvbnNlIiwidXBkYXRlSG9vayIsImhhbmRsZVBvc3QiLCJyZXEiLCJib2R5IiwiaGFuZGxlR2V0RnVuY3Rpb25zIiwicGFyYW1zIiwiZnVuY3Rpb25OYW1lIiwiZ2V0RnVuY3Rpb24iLCJmb3VuZEZ1bmN0aW9uIiwiUGFyc2UiLCJFcnJvciIsIlByb21pc2UiLCJyZXNvbHZlIiwiZ2V0RnVuY3Rpb25zIiwiZnVuY3Rpb25zIiwiZXJyIiwiaGFuZGxlR2V0VHJpZ2dlcnMiLCJjbGFzc05hbWUiLCJ0cmlnZ2VyTmFtZSIsImdldFRyaWdnZXIiLCJmb3VuZFRyaWdnZXIiLCJnZXRUcmlnZ2VycyIsInRyaWdnZXJzIiwiaGFuZGxlRGVsZXRlIiwiZGVsZXRlRnVuY3Rpb24iLCJkZWxldGVUcmlnZ2VyIiwiaGFuZGxlVXBkYXRlIiwidXJsIiwiaGFuZGxlUHV0IiwiX19vcCIsIm1vdW50Um91dGVzIiwicm91dGUiLCJwcm9taXNlRW5mb3JjZU1hc3RlcktleUFjY2VzcyIsImJpbmQiLCJleHBvcnRzIiwiX2RlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvUm91dGVycy9Ib29rc1JvdXRlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQYXJzZSB9IGZyb20gJ3BhcnNlL25vZGUnO1xuaW1wb3J0IFByb21pc2VSb3V0ZXIgZnJvbSAnLi4vUHJvbWlzZVJvdXRlcic7XG5pbXBvcnQgKiBhcyBtaWRkbGV3YXJlIGZyb20gJy4uL21pZGRsZXdhcmVzJztcblxuZXhwb3J0IGNsYXNzIEhvb2tzUm91dGVyIGV4dGVuZHMgUHJvbWlzZVJvdXRlciB7XG4gIGNyZWF0ZUhvb2soYUhvb2ssIGNvbmZpZykge1xuICAgIHJldHVybiBjb25maWcuaG9va3NDb250cm9sbGVyLmNyZWF0ZUhvb2soYUhvb2spLnRoZW4oaG9vayA9PiAoeyByZXNwb25zZTogaG9vayB9KSk7XG4gIH1cblxuICB1cGRhdGVIb29rKGFIb29rLCBjb25maWcpIHtcbiAgICByZXR1cm4gY29uZmlnLmhvb2tzQ29udHJvbGxlci51cGRhdGVIb29rKGFIb29rKS50aGVuKGhvb2sgPT4gKHsgcmVzcG9uc2U6IGhvb2sgfSkpO1xuICB9XG5cbiAgaGFuZGxlUG9zdChyZXEpIHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVIb29rKHJlcS5ib2R5IHx8IHt9LCByZXEuY29uZmlnKTtcbiAgfVxuXG4gIGhhbmRsZUdldEZ1bmN0aW9ucyhyZXEpIHtcbiAgICB2YXIgaG9va3NDb250cm9sbGVyID0gcmVxLmNvbmZpZy5ob29rc0NvbnRyb2xsZXI7XG4gICAgaWYgKHJlcS5wYXJhbXMuZnVuY3Rpb25OYW1lKSB7XG4gICAgICByZXR1cm4gaG9va3NDb250cm9sbGVyLmdldEZ1bmN0aW9uKHJlcS5wYXJhbXMuZnVuY3Rpb25OYW1lKS50aGVuKGZvdW5kRnVuY3Rpb24gPT4ge1xuICAgICAgICBpZiAoIWZvdW5kRnVuY3Rpb24pIHtcbiAgICAgICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoMTQzLCBgbm8gZnVuY3Rpb24gbmFtZWQ6ICR7cmVxLnBhcmFtcy5mdW5jdGlvbk5hbWV9IGlzIGRlZmluZWRgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHsgcmVzcG9uc2U6IGZvdW5kRnVuY3Rpb24gfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gaG9va3NDb250cm9sbGVyLmdldEZ1bmN0aW9ucygpLnRoZW4oXG4gICAgICBmdW5jdGlvbnMgPT4ge1xuICAgICAgICByZXR1cm4geyByZXNwb25zZTogZnVuY3Rpb25zIHx8IFtdIH07XG4gICAgICB9LFxuICAgICAgZXJyID0+IHtcbiAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBoYW5kbGVHZXRUcmlnZ2VycyhyZXEpIHtcbiAgICB2YXIgaG9va3NDb250cm9sbGVyID0gcmVxLmNvbmZpZy5ob29rc0NvbnRyb2xsZXI7XG4gICAgaWYgKHJlcS5wYXJhbXMuY2xhc3NOYW1lICYmIHJlcS5wYXJhbXMudHJpZ2dlck5hbWUpIHtcbiAgICAgIHJldHVybiBob29rc0NvbnRyb2xsZXJcbiAgICAgICAgLmdldFRyaWdnZXIocmVxLnBhcmFtcy5jbGFzc05hbWUsIHJlcS5wYXJhbXMudHJpZ2dlck5hbWUpXG4gICAgICAgIC50aGVuKGZvdW5kVHJpZ2dlciA9PiB7XG4gICAgICAgICAgaWYgKCFmb3VuZFRyaWdnZXIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcigxNDMsIGBjbGFzcyAke3JlcS5wYXJhbXMuY2xhc3NOYW1lfSBkb2VzIG5vdCBleGlzdGApO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHsgcmVzcG9uc2U6IGZvdW5kVHJpZ2dlciB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGhvb2tzQ29udHJvbGxlci5nZXRUcmlnZ2VycygpLnRoZW4odHJpZ2dlcnMgPT4gKHsgcmVzcG9uc2U6IHRyaWdnZXJzIHx8IFtdIH0pKTtcbiAgfVxuXG4gIGhhbmRsZURlbGV0ZShyZXEpIHtcbiAgICB2YXIgaG9va3NDb250cm9sbGVyID0gcmVxLmNvbmZpZy5ob29rc0NvbnRyb2xsZXI7XG4gICAgaWYgKHJlcS5wYXJhbXMuZnVuY3Rpb25OYW1lKSB7XG4gICAgICByZXR1cm4gaG9va3NDb250cm9sbGVyLmRlbGV0ZUZ1bmN0aW9uKHJlcS5wYXJhbXMuZnVuY3Rpb25OYW1lKS50aGVuKCgpID0+ICh7IHJlc3BvbnNlOiB7fSB9KSk7XG4gICAgfSBlbHNlIGlmIChyZXEucGFyYW1zLmNsYXNzTmFtZSAmJiByZXEucGFyYW1zLnRyaWdnZXJOYW1lKSB7XG4gICAgICByZXR1cm4gaG9va3NDb250cm9sbGVyXG4gICAgICAgIC5kZWxldGVUcmlnZ2VyKHJlcS5wYXJhbXMuY2xhc3NOYW1lLCByZXEucGFyYW1zLnRyaWdnZXJOYW1lKVxuICAgICAgICAudGhlbigoKSA9PiAoeyByZXNwb25zZToge30gfSkpO1xuICAgIH1cbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHsgcmVzcG9uc2U6IHt9IH0pO1xuICB9XG5cbiAgaGFuZGxlVXBkYXRlKHJlcSkge1xuICAgIHZhciBob29rO1xuICAgIGlmIChyZXEucGFyYW1zLmZ1bmN0aW9uTmFtZSAmJiByZXEuYm9keT8udXJsKSB7XG4gICAgICBob29rID0ge307XG4gICAgICBob29rLmZ1bmN0aW9uTmFtZSA9IHJlcS5wYXJhbXMuZnVuY3Rpb25OYW1lO1xuICAgICAgaG9vay51cmwgPSByZXEuYm9keS51cmw7XG4gICAgfSBlbHNlIGlmIChyZXEucGFyYW1zLmNsYXNzTmFtZSAmJiByZXEucGFyYW1zLnRyaWdnZXJOYW1lICYmIHJlcS5ib2R5Py51cmwpIHtcbiAgICAgIGhvb2sgPSB7fTtcbiAgICAgIGhvb2suY2xhc3NOYW1lID0gcmVxLnBhcmFtcy5jbGFzc05hbWU7XG4gICAgICBob29rLnRyaWdnZXJOYW1lID0gcmVxLnBhcmFtcy50cmlnZ2VyTmFtZTtcbiAgICAgIGhvb2sudXJsID0gcmVxLmJvZHkudXJsO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoMTQzLCAnaW52YWxpZCBob29rIGRlY2xhcmF0aW9uJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnVwZGF0ZUhvb2soaG9vaywgcmVxLmNvbmZpZyk7XG4gIH1cblxuICBoYW5kbGVQdXQocmVxKSB7XG4gICAgdmFyIGJvZHkgPSByZXEuYm9keSB8fCB7fTtcbiAgICBpZiAoYm9keS5fX29wID09ICdEZWxldGUnKSB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVEZWxldGUocmVxKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlVXBkYXRlKHJlcSk7XG4gICAgfVxuICB9XG5cbiAgbW91bnRSb3V0ZXMoKSB7XG4gICAgdGhpcy5yb3V0ZShcbiAgICAgICdHRVQnLFxuICAgICAgJy9ob29rcy9mdW5jdGlvbnMnLFxuICAgICAgbWlkZGxld2FyZS5wcm9taXNlRW5mb3JjZU1hc3RlcktleUFjY2VzcyxcbiAgICAgIHRoaXMuaGFuZGxlR2V0RnVuY3Rpb25zLmJpbmQodGhpcylcbiAgICApO1xuICAgIHRoaXMucm91dGUoXG4gICAgICAnR0VUJyxcbiAgICAgICcvaG9va3MvdHJpZ2dlcnMnLFxuICAgICAgbWlkZGxld2FyZS5wcm9taXNlRW5mb3JjZU1hc3RlcktleUFjY2VzcyxcbiAgICAgIHRoaXMuaGFuZGxlR2V0VHJpZ2dlcnMuYmluZCh0aGlzKVxuICAgICk7XG4gICAgdGhpcy5yb3V0ZShcbiAgICAgICdHRVQnLFxuICAgICAgJy9ob29rcy9mdW5jdGlvbnMvOmZ1bmN0aW9uTmFtZScsXG4gICAgICBtaWRkbGV3YXJlLnByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzLFxuICAgICAgdGhpcy5oYW5kbGVHZXRGdW5jdGlvbnMuYmluZCh0aGlzKVxuICAgICk7XG4gICAgdGhpcy5yb3V0ZShcbiAgICAgICdHRVQnLFxuICAgICAgJy9ob29rcy90cmlnZ2Vycy86Y2xhc3NOYW1lLzp0cmlnZ2VyTmFtZScsXG4gICAgICBtaWRkbGV3YXJlLnByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzLFxuICAgICAgdGhpcy5oYW5kbGVHZXRUcmlnZ2Vycy5iaW5kKHRoaXMpXG4gICAgKTtcbiAgICB0aGlzLnJvdXRlKFxuICAgICAgJ1BPU1QnLFxuICAgICAgJy9ob29rcy9mdW5jdGlvbnMnLFxuICAgICAgbWlkZGxld2FyZS5wcm9taXNlRW5mb3JjZU1hc3RlcktleUFjY2VzcyxcbiAgICAgIHRoaXMuaGFuZGxlUG9zdC5iaW5kKHRoaXMpXG4gICAgKTtcbiAgICB0aGlzLnJvdXRlKFxuICAgICAgJ1BPU1QnLFxuICAgICAgJy9ob29rcy90cmlnZ2VycycsXG4gICAgICBtaWRkbGV3YXJlLnByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzLFxuICAgICAgdGhpcy5oYW5kbGVQb3N0LmJpbmQodGhpcylcbiAgICApO1xuICAgIHRoaXMucm91dGUoXG4gICAgICAnUFVUJyxcbiAgICAgICcvaG9va3MvZnVuY3Rpb25zLzpmdW5jdGlvbk5hbWUnLFxuICAgICAgbWlkZGxld2FyZS5wcm9taXNlRW5mb3JjZU1hc3RlcktleUFjY2VzcyxcbiAgICAgIHRoaXMuaGFuZGxlUHV0LmJpbmQodGhpcylcbiAgICApO1xuICAgIHRoaXMucm91dGUoXG4gICAgICAnUFVUJyxcbiAgICAgICcvaG9va3MvdHJpZ2dlcnMvOmNsYXNzTmFtZS86dHJpZ2dlck5hbWUnLFxuICAgICAgbWlkZGxld2FyZS5wcm9taXNlRW5mb3JjZU1hc3RlcktleUFjY2VzcyxcbiAgICAgIHRoaXMuaGFuZGxlUHV0LmJpbmQodGhpcylcbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEhvb2tzUm91dGVyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxLQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxjQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxVQUFBLEdBQUFDLHVCQUFBLENBQUFKLE9BQUE7QUFBNkMsU0FBQUksd0JBQUFDLENBQUEsRUFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxNQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFILHVCQUFBLFlBQUFBLENBQUFDLENBQUEsRUFBQUMsQ0FBQSxTQUFBQSxDQUFBLElBQUFELENBQUEsSUFBQUEsQ0FBQSxDQUFBSyxVQUFBLFNBQUFMLENBQUEsTUFBQU0sQ0FBQSxFQUFBQyxDQUFBLEVBQUFDLENBQUEsS0FBQUMsU0FBQSxRQUFBQyxPQUFBLEVBQUFWLENBQUEsaUJBQUFBLENBQUEsdUJBQUFBLENBQUEseUJBQUFBLENBQUEsU0FBQVEsQ0FBQSxNQUFBRixDQUFBLEdBQUFMLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLFFBQUFHLENBQUEsQ0FBQUssR0FBQSxDQUFBWCxDQUFBLFVBQUFNLENBQUEsQ0FBQU0sR0FBQSxDQUFBWixDQUFBLEdBQUFNLENBQUEsQ0FBQU8sR0FBQSxDQUFBYixDQUFBLEVBQUFRLENBQUEsZ0JBQUFQLENBQUEsSUFBQUQsQ0FBQSxnQkFBQUMsQ0FBQSxPQUFBYSxjQUFBLENBQUFDLElBQUEsQ0FBQWYsQ0FBQSxFQUFBQyxDQUFBLE9BQUFNLENBQUEsSUFBQUQsQ0FBQSxHQUFBVSxNQUFBLENBQUFDLGNBQUEsS0FBQUQsTUFBQSxDQUFBRSx3QkFBQSxDQUFBbEIsQ0FBQSxFQUFBQyxDQUFBLE9BQUFNLENBQUEsQ0FBQUssR0FBQSxJQUFBTCxDQUFBLENBQUFNLEdBQUEsSUFBQVAsQ0FBQSxDQUFBRSxDQUFBLEVBQUFQLENBQUEsRUFBQU0sQ0FBQSxJQUFBQyxDQUFBLENBQUFQLENBQUEsSUFBQUQsQ0FBQSxDQUFBQyxDQUFBLFdBQUFPLENBQUEsS0FBQVIsQ0FBQSxFQUFBQyxDQUFBO0FBQUEsU0FBQUosdUJBQUFHLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFLLFVBQUEsR0FBQUwsQ0FBQSxLQUFBVSxPQUFBLEVBQUFWLENBQUE7QUFFdEMsTUFBTW1CLFdBQVcsU0FBU0Msc0JBQWEsQ0FBQztFQUM3Q0MsVUFBVUEsQ0FBQ0MsS0FBSyxFQUFFQyxNQUFNLEVBQUU7SUFDeEIsT0FBT0EsTUFBTSxDQUFDQyxlQUFlLENBQUNILFVBQVUsQ0FBQ0MsS0FBSyxDQUFDLENBQUNHLElBQUksQ0FBQ0MsSUFBSSxLQUFLO01BQUVDLFFBQVEsRUFBRUQ7SUFBSyxDQUFDLENBQUMsQ0FBQztFQUNwRjtFQUVBRSxVQUFVQSxDQUFDTixLQUFLLEVBQUVDLE1BQU0sRUFBRTtJQUN4QixPQUFPQSxNQUFNLENBQUNDLGVBQWUsQ0FBQ0ksVUFBVSxDQUFDTixLQUFLLENBQUMsQ0FBQ0csSUFBSSxDQUFDQyxJQUFJLEtBQUs7TUFBRUMsUUFBUSxFQUFFRDtJQUFLLENBQUMsQ0FBQyxDQUFDO0VBQ3BGO0VBRUFHLFVBQVVBLENBQUNDLEdBQUcsRUFBRTtJQUNkLE9BQU8sSUFBSSxDQUFDVCxVQUFVLENBQUNTLEdBQUcsQ0FBQ0MsSUFBSSxJQUFJLENBQUMsQ0FBQyxFQUFFRCxHQUFHLENBQUNQLE1BQU0sQ0FBQztFQUNwRDtFQUVBUyxrQkFBa0JBLENBQUNGLEdBQUcsRUFBRTtJQUN0QixJQUFJTixlQUFlLEdBQUdNLEdBQUcsQ0FBQ1AsTUFBTSxDQUFDQyxlQUFlO0lBQ2hELElBQUlNLEdBQUcsQ0FBQ0csTUFBTSxDQUFDQyxZQUFZLEVBQUU7TUFDM0IsT0FBT1YsZUFBZSxDQUFDVyxXQUFXLENBQUNMLEdBQUcsQ0FBQ0csTUFBTSxDQUFDQyxZQUFZLENBQUMsQ0FBQ1QsSUFBSSxDQUFDVyxhQUFhLElBQUk7UUFDaEYsSUFBSSxDQUFDQSxhQUFhLEVBQUU7VUFDbEIsTUFBTSxJQUFJQyxXQUFLLENBQUNDLEtBQUssQ0FBQyxHQUFHLEVBQUUsc0JBQXNCUixHQUFHLENBQUNHLE1BQU0sQ0FBQ0MsWUFBWSxhQUFhLENBQUM7UUFDeEY7UUFDQSxPQUFPSyxPQUFPLENBQUNDLE9BQU8sQ0FBQztVQUFFYixRQUFRLEVBQUVTO1FBQWMsQ0FBQyxDQUFDO01BQ3JELENBQUMsQ0FBQztJQUNKO0lBRUEsT0FBT1osZUFBZSxDQUFDaUIsWUFBWSxDQUFDLENBQUMsQ0FBQ2hCLElBQUksQ0FDeENpQixTQUFTLElBQUk7TUFDWCxPQUFPO1FBQUVmLFFBQVEsRUFBRWUsU0FBUyxJQUFJO01BQUcsQ0FBQztJQUN0QyxDQUFDLEVBQ0RDLEdBQUcsSUFBSTtNQUNMLE1BQU1BLEdBQUc7SUFDWCxDQUNGLENBQUM7RUFDSDtFQUVBQyxpQkFBaUJBLENBQUNkLEdBQUcsRUFBRTtJQUNyQixJQUFJTixlQUFlLEdBQUdNLEdBQUcsQ0FBQ1AsTUFBTSxDQUFDQyxlQUFlO0lBQ2hELElBQUlNLEdBQUcsQ0FBQ0csTUFBTSxDQUFDWSxTQUFTLElBQUlmLEdBQUcsQ0FBQ0csTUFBTSxDQUFDYSxXQUFXLEVBQUU7TUFDbEQsT0FBT3RCLGVBQWUsQ0FDbkJ1QixVQUFVLENBQUNqQixHQUFHLENBQUNHLE1BQU0sQ0FBQ1ksU0FBUyxFQUFFZixHQUFHLENBQUNHLE1BQU0sQ0FBQ2EsV0FBVyxDQUFDLENBQ3hEckIsSUFBSSxDQUFDdUIsWUFBWSxJQUFJO1FBQ3BCLElBQUksQ0FBQ0EsWUFBWSxFQUFFO1VBQ2pCLE1BQU0sSUFBSVgsV0FBSyxDQUFDQyxLQUFLLENBQUMsR0FBRyxFQUFFLFNBQVNSLEdBQUcsQ0FBQ0csTUFBTSxDQUFDWSxTQUFTLGlCQUFpQixDQUFDO1FBQzVFO1FBQ0EsT0FBT04sT0FBTyxDQUFDQyxPQUFPLENBQUM7VUFBRWIsUUFBUSxFQUFFcUI7UUFBYSxDQUFDLENBQUM7TUFDcEQsQ0FBQyxDQUFDO0lBQ047SUFFQSxPQUFPeEIsZUFBZSxDQUFDeUIsV0FBVyxDQUFDLENBQUMsQ0FBQ3hCLElBQUksQ0FBQ3lCLFFBQVEsS0FBSztNQUFFdkIsUUFBUSxFQUFFdUIsUUFBUSxJQUFJO0lBQUcsQ0FBQyxDQUFDLENBQUM7RUFDdkY7RUFFQUMsWUFBWUEsQ0FBQ3JCLEdBQUcsRUFBRTtJQUNoQixJQUFJTixlQUFlLEdBQUdNLEdBQUcsQ0FBQ1AsTUFBTSxDQUFDQyxlQUFlO0lBQ2hELElBQUlNLEdBQUcsQ0FBQ0csTUFBTSxDQUFDQyxZQUFZLEVBQUU7TUFDM0IsT0FBT1YsZUFBZSxDQUFDNEIsY0FBYyxDQUFDdEIsR0FBRyxDQUFDRyxNQUFNLENBQUNDLFlBQVksQ0FBQyxDQUFDVCxJQUFJLENBQUMsT0FBTztRQUFFRSxRQUFRLEVBQUUsQ0FBQztNQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9GLENBQUMsTUFBTSxJQUFJRyxHQUFHLENBQUNHLE1BQU0sQ0FBQ1ksU0FBUyxJQUFJZixHQUFHLENBQUNHLE1BQU0sQ0FBQ2EsV0FBVyxFQUFFO01BQ3pELE9BQU90QixlQUFlLENBQ25CNkIsYUFBYSxDQUFDdkIsR0FBRyxDQUFDRyxNQUFNLENBQUNZLFNBQVMsRUFBRWYsR0FBRyxDQUFDRyxNQUFNLENBQUNhLFdBQVcsQ0FBQyxDQUMzRHJCLElBQUksQ0FBQyxPQUFPO1FBQUVFLFFBQVEsRUFBRSxDQUFDO01BQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkM7SUFDQSxPQUFPWSxPQUFPLENBQUNDLE9BQU8sQ0FBQztNQUFFYixRQUFRLEVBQUUsQ0FBQztJQUFFLENBQUMsQ0FBQztFQUMxQztFQUVBMkIsWUFBWUEsQ0FBQ3hCLEdBQUcsRUFBRTtJQUNoQixJQUFJSixJQUFJO0lBQ1IsSUFBSUksR0FBRyxDQUFDRyxNQUFNLENBQUNDLFlBQVksSUFBSUosR0FBRyxDQUFDQyxJQUFJLEVBQUV3QixHQUFHLEVBQUU7TUFDNUM3QixJQUFJLEdBQUcsQ0FBQyxDQUFDO01BQ1RBLElBQUksQ0FBQ1EsWUFBWSxHQUFHSixHQUFHLENBQUNHLE1BQU0sQ0FBQ0MsWUFBWTtNQUMzQ1IsSUFBSSxDQUFDNkIsR0FBRyxHQUFHekIsR0FBRyxDQUFDQyxJQUFJLENBQUN3QixHQUFHO0lBQ3pCLENBQUMsTUFBTSxJQUFJekIsR0FBRyxDQUFDRyxNQUFNLENBQUNZLFNBQVMsSUFBSWYsR0FBRyxDQUFDRyxNQUFNLENBQUNhLFdBQVcsSUFBSWhCLEdBQUcsQ0FBQ0MsSUFBSSxFQUFFd0IsR0FBRyxFQUFFO01BQzFFN0IsSUFBSSxHQUFHLENBQUMsQ0FBQztNQUNUQSxJQUFJLENBQUNtQixTQUFTLEdBQUdmLEdBQUcsQ0FBQ0csTUFBTSxDQUFDWSxTQUFTO01BQ3JDbkIsSUFBSSxDQUFDb0IsV0FBVyxHQUFHaEIsR0FBRyxDQUFDRyxNQUFNLENBQUNhLFdBQVc7TUFDekNwQixJQUFJLENBQUM2QixHQUFHLEdBQUd6QixHQUFHLENBQUNDLElBQUksQ0FBQ3dCLEdBQUc7SUFDekIsQ0FBQyxNQUFNO01BQ0wsTUFBTSxJQUFJbEIsV0FBSyxDQUFDQyxLQUFLLENBQUMsR0FBRyxFQUFFLDBCQUEwQixDQUFDO0lBQ3hEO0lBQ0EsT0FBTyxJQUFJLENBQUNWLFVBQVUsQ0FBQ0YsSUFBSSxFQUFFSSxHQUFHLENBQUNQLE1BQU0sQ0FBQztFQUMxQztFQUVBaUMsU0FBU0EsQ0FBQzFCLEdBQUcsRUFBRTtJQUNiLElBQUlDLElBQUksR0FBR0QsR0FBRyxDQUFDQyxJQUFJLElBQUksQ0FBQyxDQUFDO0lBQ3pCLElBQUlBLElBQUksQ0FBQzBCLElBQUksSUFBSSxRQUFRLEVBQUU7TUFDekIsT0FBTyxJQUFJLENBQUNOLFlBQVksQ0FBQ3JCLEdBQUcsQ0FBQztJQUMvQixDQUFDLE1BQU07TUFDTCxPQUFPLElBQUksQ0FBQ3dCLFlBQVksQ0FBQ3hCLEdBQUcsQ0FBQztJQUMvQjtFQUNGO0VBRUE0QixXQUFXQSxDQUFBLEVBQUc7SUFDWixJQUFJLENBQUNDLEtBQUssQ0FDUixLQUFLLEVBQ0wsa0JBQWtCLEVBQ2xCN0QsVUFBVSxDQUFDOEQsNkJBQTZCLEVBQ3hDLElBQUksQ0FBQzVCLGtCQUFrQixDQUFDNkIsSUFBSSxDQUFDLElBQUksQ0FDbkMsQ0FBQztJQUNELElBQUksQ0FBQ0YsS0FBSyxDQUNSLEtBQUssRUFDTCxpQkFBaUIsRUFDakI3RCxVQUFVLENBQUM4RCw2QkFBNkIsRUFDeEMsSUFBSSxDQUFDaEIsaUJBQWlCLENBQUNpQixJQUFJLENBQUMsSUFBSSxDQUNsQyxDQUFDO0lBQ0QsSUFBSSxDQUFDRixLQUFLLENBQ1IsS0FBSyxFQUNMLGdDQUFnQyxFQUNoQzdELFVBQVUsQ0FBQzhELDZCQUE2QixFQUN4QyxJQUFJLENBQUM1QixrQkFBa0IsQ0FBQzZCLElBQUksQ0FBQyxJQUFJLENBQ25DLENBQUM7SUFDRCxJQUFJLENBQUNGLEtBQUssQ0FDUixLQUFLLEVBQ0wseUNBQXlDLEVBQ3pDN0QsVUFBVSxDQUFDOEQsNkJBQTZCLEVBQ3hDLElBQUksQ0FBQ2hCLGlCQUFpQixDQUFDaUIsSUFBSSxDQUFDLElBQUksQ0FDbEMsQ0FBQztJQUNELElBQUksQ0FBQ0YsS0FBSyxDQUNSLE1BQU0sRUFDTixrQkFBa0IsRUFDbEI3RCxVQUFVLENBQUM4RCw2QkFBNkIsRUFDeEMsSUFBSSxDQUFDL0IsVUFBVSxDQUFDZ0MsSUFBSSxDQUFDLElBQUksQ0FDM0IsQ0FBQztJQUNELElBQUksQ0FBQ0YsS0FBSyxDQUNSLE1BQU0sRUFDTixpQkFBaUIsRUFDakI3RCxVQUFVLENBQUM4RCw2QkFBNkIsRUFDeEMsSUFBSSxDQUFDL0IsVUFBVSxDQUFDZ0MsSUFBSSxDQUFDLElBQUksQ0FDM0IsQ0FBQztJQUNELElBQUksQ0FBQ0YsS0FBSyxDQUNSLEtBQUssRUFDTCxnQ0FBZ0MsRUFDaEM3RCxVQUFVLENBQUM4RCw2QkFBNkIsRUFDeEMsSUFBSSxDQUFDSixTQUFTLENBQUNLLElBQUksQ0FBQyxJQUFJLENBQzFCLENBQUM7SUFDRCxJQUFJLENBQUNGLEtBQUssQ0FDUixLQUFLLEVBQ0wseUNBQXlDLEVBQ3pDN0QsVUFBVSxDQUFDOEQsNkJBQTZCLEVBQ3hDLElBQUksQ0FBQ0osU0FBUyxDQUFDSyxJQUFJLENBQUMsSUFBSSxDQUMxQixDQUFDO0VBQ0g7QUFDRjtBQUFDQyxPQUFBLENBQUEzQyxXQUFBLEdBQUFBLFdBQUE7QUFBQSxJQUFBNEMsUUFBQSxHQUFBRCxPQUFBLENBQUFwRCxPQUFBLEdBRWNTLFdBQVciLCJpZ25vcmVMaXN0IjpbXX0=
@@ -3,107 +3,96 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.IAPValidationRouter = undefined;
7
-
8
- var _PromiseRouter = require("../PromiseRouter");
9
-
10
- var _PromiseRouter2 = _interopRequireDefault(_PromiseRouter);
11
-
12
- var _node = require("parse/node");
13
-
14
- var _node2 = _interopRequireDefault(_node);
15
-
16
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
-
18
- var request = require("request");
19
- var rest = require("../rest");
20
-
21
-
6
+ exports.IAPValidationRouter = void 0;
7
+ var _PromiseRouter = _interopRequireDefault(require("../PromiseRouter"));
8
+ var _node = _interopRequireDefault(require("parse/node"));
9
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
+ const request = require('../request');
11
+ const rest = require('../rest');
22
12
  // TODO move validation logic in IAPValidationController
23
- const IAP_SANDBOX_URL = "https://sandbox.itunes.apple.com/verifyReceipt";
24
- const IAP_PRODUCTION_URL = "https://buy.itunes.apple.com/verifyReceipt";
25
-
13
+ const IAP_SANDBOX_URL = 'https://sandbox.itunes.apple.com/verifyReceipt';
14
+ const IAP_PRODUCTION_URL = 'https://buy.itunes.apple.com/verifyReceipt';
26
15
  const APP_STORE_ERRORS = {
27
- 21000: "The App Store could not read the JSON object you provided.",
28
- 21002: "The data in the receipt-data property was malformed or missing.",
29
- 21003: "The receipt could not be authenticated.",
30
- 21004: "The shared secret you provided does not match the shared secret on file for your account.",
31
- 21005: "The receipt server is not currently available.",
32
- 21006: "This receipt is valid but the subscription has expired.",
33
- 21007: "This receipt is from the test environment, but it was sent to the production environment for verification. Send it to the test environment instead.",
34
- 21008: "This receipt is from the production environment, but it was sent to the test environment for verification. Send it to the production environment instead."
16
+ 21000: 'The App Store could not read the JSON object you provided.',
17
+ 21002: 'The data in the receipt-data property was malformed or missing.',
18
+ 21003: 'The receipt could not be authenticated.',
19
+ 21004: 'The shared secret you provided does not match the shared secret on file for your account.',
20
+ 21005: 'The receipt server is not currently available.',
21
+ 21006: 'This receipt is valid but the subscription has expired.',
22
+ 21007: 'This receipt is from the test environment, but it was sent to the production environment for verification. Send it to the test environment instead.',
23
+ 21008: 'This receipt is from the production environment, but it was sent to the test environment for verification. Send it to the production environment instead.'
35
24
  };
36
-
37
25
  function appStoreError(status) {
38
26
  status = parseInt(status);
39
- var errorString = APP_STORE_ERRORS[status] || "unknown error.";
40
- return { status: status, error: errorString };
27
+ var errorString = APP_STORE_ERRORS[status] || 'unknown error.';
28
+ return {
29
+ status: status,
30
+ error: errorString
31
+ };
41
32
  }
42
-
43
33
  function validateWithAppStore(url, receipt) {
44
- return new Promise(function (fulfill, reject) {
45
- request.post({
46
- url: url,
47
- body: { "receipt-data": receipt },
48
- json: true
49
- }, function (err, res, body) {
50
- var status = body.status;
51
- if (status == 0) {
52
- // No need to pass anything, status is OK
53
- return fulfill();
54
- }
55
- // receipt is from test and should go to test
56
- return reject(body);
57
- });
34
+ return request({
35
+ url: url,
36
+ method: 'POST',
37
+ body: {
38
+ 'receipt-data': receipt
39
+ },
40
+ headers: {
41
+ 'Content-Type': 'application/json'
42
+ }
43
+ }).then(httpResponse => {
44
+ const body = httpResponse.data;
45
+ if (body && body.status === 0) {
46
+ // No need to pass anything, status is OK
47
+ return;
48
+ }
49
+ // receipt is from test and should go to test
50
+ throw body;
58
51
  });
59
52
  }
60
-
61
53
  function getFileForProductIdentifier(productIdentifier, req) {
62
- return rest.find(req.config, req.auth, '_Product', { productIdentifier: productIdentifier }, undefined, req.info.clientSDK).then(function (result) {
54
+ return rest.find(req.config, req.auth, '_Product', {
55
+ productIdentifier: productIdentifier
56
+ }, undefined, req.info.clientSDK, req.info.context).then(function (result) {
63
57
  const products = result.results;
64
58
  if (!products || products.length != 1) {
65
59
  // Error not found or too many
66
- throw new _node2.default.Error(_node2.default.Error.OBJECT_NOT_FOUND, 'Object not found.');
60
+ throw new _node.default.Error(_node.default.Error.OBJECT_NOT_FOUND, 'Object not found.');
67
61
  }
68
-
69
62
  var download = products[0].download;
70
- return Promise.resolve({ response: download });
63
+ return Promise.resolve({
64
+ response: download
65
+ });
71
66
  });
72
67
  }
73
-
74
- class IAPValidationRouter extends _PromiseRouter2.default {
75
-
68
+ class IAPValidationRouter extends _PromiseRouter.default {
76
69
  handleRequest(req) {
77
- let receipt = req.body.receipt;
78
- const productIdentifier = req.body.productIdentifier;
79
-
70
+ let receipt = req.body?.receipt;
71
+ const productIdentifier = req.body?.productIdentifier;
80
72
  if (!receipt || !productIdentifier) {
81
73
  // TODO: Error, malformed request
82
- throw new _node2.default.Error(_node2.default.Error.INVALID_JSON, "missing receipt or productIdentifier");
74
+ throw new _node.default.Error(_node.default.Error.INVALID_JSON, 'missing receipt or productIdentifier');
83
75
  }
84
76
 
85
77
  // Transform the object if there
86
78
  // otherwise assume it's in Base64 already
87
- if (typeof receipt == "object") {
88
- if (receipt["__type"] == "Bytes") {
79
+ if (typeof receipt == 'object') {
80
+ if (receipt['__type'] == 'Bytes') {
89
81
  receipt = receipt.base64;
90
82
  }
91
83
  }
92
-
93
- if (process.env.TESTING == "1" && req.body.bypassAppStoreValidation) {
84
+ if (process.env.TESTING == '1' && req.body?.bypassAppStoreValidation) {
94
85
  return getFileForProductIdentifier(productIdentifier, req);
95
86
  }
96
-
97
87
  function successCallback() {
98
88
  return getFileForProductIdentifier(productIdentifier, req);
99
89
  }
100
-
101
90
  function errorCallback(error) {
102
- return Promise.resolve({ response: appStoreError(error.status) });
91
+ return Promise.resolve({
92
+ response: appStoreError(error.status)
93
+ });
103
94
  }
104
-
105
95
  return validateWithAppStore(IAP_PRODUCTION_URL, receipt).then(() => {
106
-
107
96
  return successCallback();
108
97
  }, error => {
109
98
  if (error.status == 21007) {
@@ -113,14 +102,12 @@ class IAPValidationRouter extends _PromiseRouter2.default {
113
102
  return errorCallback(error);
114
103
  });
115
104
  }
116
-
117
105
  return errorCallback(error);
118
106
  });
119
107
  }
120
-
121
108
  mountRoutes() {
122
- this.route("POST", "/validate_purchase", this.handleRequest);
109
+ this.route('POST', '/validate_purchase', this.handleRequest);
123
110
  }
124
111
  }
125
112
  exports.IAPValidationRouter = IAPValidationRouter;
126
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9Sb3V0ZXJzL0lBUFZhbGlkYXRpb25Sb3V0ZXIuanMiXSwibmFtZXMiOlsicmVxdWVzdCIsInJlcXVpcmUiLCJyZXN0IiwiSUFQX1NBTkRCT1hfVVJMIiwiSUFQX1BST0RVQ1RJT05fVVJMIiwiQVBQX1NUT1JFX0VSUk9SUyIsImFwcFN0b3JlRXJyb3IiLCJzdGF0dXMiLCJwYXJzZUludCIsImVycm9yU3RyaW5nIiwiZXJyb3IiLCJ2YWxpZGF0ZVdpdGhBcHBTdG9yZSIsInVybCIsInJlY2VpcHQiLCJQcm9taXNlIiwiZnVsZmlsbCIsInJlamVjdCIsInBvc3QiLCJib2R5IiwianNvbiIsImVyciIsInJlcyIsImdldEZpbGVGb3JQcm9kdWN0SWRlbnRpZmllciIsInByb2R1Y3RJZGVudGlmaWVyIiwicmVxIiwiZmluZCIsImNvbmZpZyIsImF1dGgiLCJ1bmRlZmluZWQiLCJpbmZvIiwiY2xpZW50U0RLIiwidGhlbiIsInJlc3VsdCIsInByb2R1Y3RzIiwicmVzdWx0cyIsImxlbmd0aCIsIlBhcnNlIiwiRXJyb3IiLCJPQkpFQ1RfTk9UX0ZPVU5EIiwiZG93bmxvYWQiLCJyZXNvbHZlIiwicmVzcG9uc2UiLCJJQVBWYWxpZGF0aW9uUm91dGVyIiwiUHJvbWlzZVJvdXRlciIsImhhbmRsZVJlcXVlc3QiLCJJTlZBTElEX0pTT04iLCJiYXNlNjQiLCJwcm9jZXNzIiwiZW52IiwiVEVTVElORyIsImJ5cGFzc0FwcFN0b3JlVmFsaWRhdGlvbiIsInN1Y2Nlc3NDYWxsYmFjayIsImVycm9yQ2FsbGJhY2siLCJtb3VudFJvdXRlcyIsInJvdXRlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7Ozs7QUFHQTs7Ozs7O0FBRkEsSUFBSUEsVUFBVUMsUUFBUSxTQUFSLENBQWQ7QUFDQSxJQUFJQyxPQUFPRCxRQUFRLFNBQVIsQ0FBWDs7O0FBR0E7QUFDQSxNQUFNRSxrQkFBa0IsZ0RBQXhCO0FBQ0EsTUFBTUMscUJBQXFCLDRDQUEzQjs7QUFFQSxNQUFN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UzJCLGVBQVQsR0FBMkI7QUFDekIsYUFBTzdCLDRCQUE0QkMsaUJBQTVCLEVBQStDQyxHQUEvQyxDQUFQO0FBQ0Q7O0FBRUQsYUFBUzRCLGFBQVQsQ0FBdUIxQyxLQUF2QixFQUE4QjtBQUM1QixhQUFPSSxRQUFRMEIsT0FBUixDQUFnQixFQUFDQyxVQUFVbkMsY0FBY0ksTUFBTUgsTUFBcEIsQ0FBWCxFQUFoQixDQUFQO0FBQ0Q7O0FBRUQsV0FBT0kscUJBQXFCUCxrQkFBckIsRUFBeUNTLE9BQXpDLEVBQWtEa0IsSUFBbEQsQ0FBdUQsTUFBTTs7QUFFbEUsYUFBT29CLGlCQUFQO0FBRUQsS0FKTSxFQUlIekMsS0FBRCxJQUFXO0FBQ1osVUFBSUEsTUFBTUgsTUFBTixJQUFnQixLQUFwQixFQUEyQjtBQUN6QixlQUFPSSxxQkFBcUJSLGVBQXJCLEVBQXNDVSxPQUF0QyxFQUErQ2tCLElBQS9DLENBQW9ELE1BQU07QUFDL0QsaUJBQU9vQixpQkFBUDtBQUNELFNBRk0sRUFFSHpDLEtBQUQsSUFBVztBQUNaLGlCQUFPMEMsY0FBYzFDLEtBQWQsQ0FBUDtBQUNELFNBSk0sQ0FBUDtBQU1EOztBQUVELGFBQU8wQyxjQUFjMUMsS0FBZCxDQUFQO0FBQ0QsS0FmTSxDQUFQO0FBZ0JEOztBQUVEMkMsZ0JBQWM7QUFDWixTQUFLQyxLQUFMLENBQVcsTUFBWCxFQUFrQixvQkFBbEIsRUFBd0MsS0FBS1YsYUFBN0M7QUFDRDtBQW5Eb0Q7UUFBMUNGLG1CLEdBQUFBLG1CIiwiZmlsZSI6IklBUFZhbGlkYXRpb25Sb3V0ZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUHJvbWlzZVJvdXRlciBmcm9tICcuLi9Qcm9taXNlUm91dGVyJztcbnZhciByZXF1ZXN0ID0gcmVxdWlyZShcInJlcXVlc3RcIik7XG52YXIgcmVzdCA9IHJlcXVpcmUoXCIuLi9yZXN0XCIpO1xuaW1wb3J0IFBhcnNlIGZyb20gJ3BhcnNlL25vZGUnO1xuXG4vLyBUT0RPIG1vdmUgdmFsaWRhdGlvbiBsb2dpYyBpbiBJQVBWYWxpZGF0aW9uQ29udHJvbGxlclxuY29uc3QgSUFQX1NBTkRCT1hfVVJMID0gXCJodHRwczovL3NhbmRib3guaXR1bmVzLmFwcGxlLmNvbS92ZXJpZnlSZWNlaXB0XCI7XG5jb25zdCBJQVBfUFJPRFVDVElPTl9VUkwgPSBcImh0dHBzOi8vYnV5Lml0dW5lcy5hcHBsZS5jb20vdmVyaWZ5UmVjZWlwdFwiO1xuXG5jb25zdCBBUFBfU1RPUkVfRVJST1JTID0ge1xuICAyMTAwMDogXCJUaGUgQXBwIFN0b3JlIGNvdWxkIG5vdCByZWFkIHRoZSBKU09OIG9iamVjdCB5b3UgcHJvdmlkZWQuXCIsXG4gIDIxMDAyOiBcIlRoZSBkYXRhIGluIHRoZSByZWNlaXB0LWRhdGEgcHJvcGVydHkgd2FzIG1hbGZvcm1lZCBvciBtaXNzaW5nLlwiLFxuICAyMTAwMzogXCJUaGUgcmVjZWlwdCBjb3VsZCBub3QgYmUgYXV0aGVudGljYXRlZC5cIixcbiAgMjEwMDQ6IFwiVGhlIHNoYXJlZCBzZWNyZXQgeW91IHByb3ZpZGVkIGRvZXMgbm90IG1hdGNoIHRoZSBzaGFyZWQgc2VjcmV0IG9uIGZpbGUgZm9yIHlvdXIgYWNjb3VudC5cIixcbiAgMjEwMDU6IFwiVGhlIHJlY2VpcHQgc2VydmVyIGlzIG5vdCBjdXJyZW50bHkgYXZhaWxhYmxlLlwiLFxuICAyMTAwNjogXCJUaGlzIHJlY2VpcHQgaXMgdmFsaWQgYnV0IHRoZSBzdWJzY3JpcHRpb24gaGFzIGV4cGlyZWQuXCIsXG4gIDIxMDA3OiBcIlRoaXMgcmVjZWlwdCBpcyBmcm9tIHRoZSB0ZXN0IGVudmlyb25tZW50LCBidXQgaXQgd2FzIHNlbnQgdG8gdGhlIHByb2R1Y3Rpb24gZW52aXJvbm1lbnQgZm9yIHZlcmlmaWNhdGlvbi4gU2VuZCBpdCB0byB0aGUgdGVzdCBlbnZpcm9ubWVudCBpbnN0ZWFkLlwiLFxuICAyMTAwODogXCJUaGlzIHJlY2VpcHQgaXMgZnJvbSB0aGUgcHJvZHVjdGlvbiBlbnZpcm9ubWVudCwgYnV0IGl0IHdhcyBzZW50IHRvIHRoZSB0ZXN0IGVudmlyb25tZW50IGZvciB2ZXJpZmljYXRpb24uIFNlbmQgaXQgdG8gdGhlIHByb2R1Y3Rpb24gZW52aXJvbm1lbnQgaW5zdGVhZC5cIlxufVxuXG5mdW5jdGlvbiBhcHBTdG9yZUVycm9yKHN0YXR1cykge1xuICBzdGF0dXMgPSBwYXJzZUludChzdGF0dXMpO1xuICB2YXIgZXJyb3JTdHJpbmcgPSBBUFBfU1RPUkVfRVJST1JTW3N0YXR1c10gfHwgXCJ1bmtub3duIGVycm9yLlwiO1xuICByZXR1cm4geyBzdGF0dXM6IHN0YXR1cywgZXJyb3I6IGVycm9yU3RyaW5nIH1cbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVXaXRoQXBwU3RvcmUodXJsLCByZWNlaXB0KSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihmdWxmaWxsLCByZWplY3QpIHtcbiAgICByZXF1ZXN0LnBvc3Qoe1xuICAgICAgdXJsOiB1cmwsXG4gICAgICBib2R5OiB7IFwicmVjZWlwdC1kYXRhXCI6IHJlY2VpcHQgfSxcbiAgICAgIGpzb246IHRydWUsXG4gICAgfSwgZnVuY3Rpb24oZXJyLCByZXMsIGJvZHkpIHtcbiAgICAgIHZhciBzdGF0dXMgPSBib2R5LnN0YXR1cztcbiAgICAgIGlmIChzdGF0dXMgPT0gMCkge1xuICAgICAgICAvLyBObyBuZWVkIHRvIHBhc3MgYW55dGhpbmcsIHN0YXR1cyBpcyBPS1xuICAgICAgICByZXR1cm4gZnVsZmlsbCgpO1xuICAgICAgfVxuICAgICAgLy8gcmVjZWlwdCBpcyBmcm9tIHRlc3QgYW5kIHNob3VsZCBnbyB0byB0ZXN0XG4gICAgICByZXR1cm4gcmVqZWN0KGJvZHkpO1xuICAgIH0pO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gZ2V0RmlsZUZvclByb2R1Y3RJZGVudGlmaWVyKHByb2R1Y3RJZGVudGlmaWVyLCByZXEpIHtcbiAgcmV0dXJuIHJlc3QuZmluZChyZXEuY29uZmlnLCByZXEuYXV0aCwgJ19Qcm9kdWN0JywgeyBwcm9kdWN0SWRlbnRpZmllcjogcHJvZHVjdElkZW50aWZpZXIgfSwgdW5kZWZpbmVkLCByZXEuaW5mby5jbGllbnRTREspLnRoZW4oZnVuY3Rpb24ocmVzdWx0KXtcbiAgICBjb25zdCBwcm9kdWN0cyA9IHJlc3VsdC5yZXN1bHRzO1xuICAgIGlmICghcHJvZHVjdHMgfHwgcHJvZHVjdHMubGVuZ3RoICE9IDEpIHtcbiAgICAgIC8vIEVycm9yIG5vdCBmb3VuZCBvciB0b28gbWFueVxuICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLk9CSkVDVF9OT1RfRk9VTkQsICdPYmplY3Qgbm90IGZvdW5kLicpXG4gICAgfVxuXG4gICAgdmFyIGRvd25sb2FkID0gcHJvZHVjdHNbMF0uZG93bmxvYWQ7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7cmVzcG9uc2U6IGRvd25sb2FkfSk7XG4gIH0pO1xufVxuXG5cbmV4cG9ydCBjbGFzcyBJQVBWYWxpZGF0aW9uUm91dGVyIGV4dGVuZHMgUHJvbWlzZVJvdXRlciB7XG5cbiAgaGFuZGxlUmVxdWVzdChyZXEpIHtcbiAgICBsZXQgcmVjZWlwdCA9IHJlcS5ib2R5LnJlY2VpcHQ7XG4gICAgY29uc3QgcHJvZHVjdElkZW50aWZpZXIgPSByZXEuYm9keS5wcm9kdWN0SWRlbnRpZmllcjtcblxuICAgIGlmICghcmVjZWlwdCB8fCAhIHByb2R1Y3RJZGVudGlmaWVyKSB7XG4gICAgICAvLyBUT0RPOiBFcnJvciwgbWFsZm9ybWVkIHJlcXVlc3RcbiAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5JTlZBTElEX0pTT04sIFwibWlzc2luZyByZWNlaXB0IG9yIHByb2R1Y3RJZGVudGlmaWVyXCIpO1xuICAgIH1cblxuICAgIC8vIFRyYW5zZm9ybSB0aGUgb2JqZWN0IGlmIHRoZXJlXG4gICAgLy8gb3RoZXJ3aXNlIGFzc3VtZSBpdCdzIGluIEJhc2U2NCBhbHJlYWR5XG4gICAgaWYgKHR5cGVvZiByZWNlaXB0ID09IFwib2JqZWN0XCIpIHtcbiAgICAgIGlmIChyZWNlaXB0W1wiX190eXBlXCJdID09IFwiQnl0ZXNcIikge1xuICAgICAgICByZWNlaXB0ID0gcmVjZWlwdC5iYXNlNjQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHByb2Nlc3MuZW52LlRFU1RJTkcgPT0gXCIxXCIgJiYgcmVxLmJvZHkuYnlwYXNzQXBwU3RvcmVWYWxpZGF0aW9uKSB7XG4gICAgICByZXR1cm4gZ2V0RmlsZUZvclByb2R1Y3RJZGVudGlmaWVyKHByb2R1Y3RJZGVudGlmaWVyLCByZXEpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHN1Y2Nlc3NDYWxsYmFjaygpIHtcbiAgICAgIHJldHVybiBnZXRGaWxlRm9yUHJvZHVjdElkZW50aWZpZXIocHJvZHVjdElkZW50aWZpZXIsIHJlcSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZXJyb3JDYWxsYmFjayhlcnJvcikge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7cmVzcG9uc2U6IGFwcFN0b3JlRXJyb3IoZXJyb3Iuc3RhdHVzKSB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWRhdGVXaXRoQXBwU3RvcmUoSUFQX1BST0RVQ1RJT05fVVJMLCByZWNlaXB0KS50aGVuKCgpID0+IHtcblxuICAgICAgcmV0dXJuIHN1Y2Nlc3NDYWxsYmFjaygpO1xuXG4gICAgfSwgKGVycm9yKSA9PiB7XG4gICAgICBpZiAoZXJyb3Iuc3RhdHVzID09IDIxMDA3KSB7XG4gICAgICAgIHJldHVybiB2YWxpZGF0ZVdpdGhBcHBTdG9yZShJQVBfU0FOREJPWF9VUkwsIHJlY2VpcHQpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIHJldHVybiBzdWNjZXNzQ2FsbGJhY2soKTtcbiAgICAgICAgfSwgKGVycm9yKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGVycm9yQ2FsbGJhY2soZXJyb3IpO1xuICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBlcnJvckNhbGxiYWNrKGVycm9yKTtcbiAgICB9KTtcbiAgfVxuXG4gIG1vdW50Um91dGVzKCkge1xuICAgIHRoaXMucm91dGUoXCJQT1NUXCIsXCIvdmFsaWRhdGVfcHVyY2hhc2VcIiwgdGhpcy5oYW5kbGVSZXF1ZXN0KTtcbiAgfVxufVxuIl19
113
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfUHJvbWlzZVJvdXRlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX25vZGUiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJyZXF1ZXN0IiwicmVzdCIsIklBUF9TQU5EQk9YX1VSTCIsIklBUF9QUk9EVUNUSU9OX1VSTCIsIkFQUF9TVE9SRV9FUlJPUlMiLCJhcHBTdG9yZUVycm9yIiwic3RhdHVzIiwicGFyc2VJbnQiLCJlcnJvclN0cmluZyIsImVycm9yIiwidmFsaWRhdGVXaXRoQXBwU3RvcmUiLCJ1cmwiLCJyZWNlaXB0IiwibWV0aG9kIiwiYm9keSIsImhlYWRlcnMiLCJ0aGVuIiwiaHR0cFJlc3BvbnNlIiwiZGF0YSIsImdldEZpbGVGb3JQcm9kdWN0SWRlbnRpZmllciIsInByb2R1Y3RJZGVudGlmaWVyIiwicmVxIiwiZmluZCIsImNvbmZpZyIsImF1dGgiLCJ1bmRlZmluZWQiLCJpbmZvIiwiY2xpZW50U0RLIiwiY29udGV4dCIsInJlc3VsdCIsInByb2R1Y3RzIiwicmVzdWx0cyIsImxlbmd0aCIsIlBhcnNlIiwiRXJyb3IiLCJPQkpFQ1RfTk9UX0ZPVU5EIiwiZG93bmxvYWQiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlc3BvbnNlIiwiSUFQVmFsaWRhdGlvblJvdXRlciIsIlByb21pc2VSb3V0ZXIiLCJoYW5kbGVSZXF1ZXN0IiwiSU5WQUxJRF9KU09OIiwiYmFzZTY0IiwicHJvY2VzcyIsImVudiIsIlRFU1RJTkciLCJieXBhc3NBcHBTdG9yZVZhbGlkYXRpb24iLCJzdWNjZXNzQ2FsbGJhY2siLCJlcnJvckNhbGxiYWNrIiwibW91bnRSb3V0ZXMiLCJyb3V0ZSIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvUm91dGVycy9JQVBWYWxpZGF0aW9uUm91dGVyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBQcm9taXNlUm91dGVyIGZyb20gJy4uL1Byb21pc2VSb3V0ZXInO1xuY29uc3QgcmVxdWVzdCA9IHJlcXVpcmUoJy4uL3JlcXVlc3QnKTtcbmNvbnN0IHJlc3QgPSByZXF1aXJlKCcuLi9yZXN0Jyk7XG5pbXBvcnQgUGFyc2UgZnJvbSAncGFyc2Uvbm9kZSc7XG5cbi8vIFRPRE8gbW92ZSB2YWxpZGF0aW9uIGxvZ2ljIGluIElBUFZhbGlkYXRpb25Db250cm9sbGVyXG5jb25zdCBJQVBfU0FOREJPWF9VUkwgPSAnaHR0cHM6Ly9zYW5kYm94Lml0dW5lcy5hcHBsZS5jb20vdmVyaWZ5UmVjZWlwdCc7XG5jb25zdCBJQVBfUFJPRFVDVElPTl9VUkwgPSAnaHR0cHM6Ly9idXkuaXR1bmVzLmFwcGxlLmNvbS92ZXJpZnlSZWNlaXB0JztcblxuY29uc3QgQVBQX1NUT1JFX0VSUk9SUyA9IHtcbiAgMjEwMDA6ICdUaGUgQXBwIFN0b3JlIGNvdWxkIG5vdCByZWFkIHRoZSBKU09OIG9iamVjdCB5b3UgcHJvdmlkZWQuJyxcbiAgMjEwMDI6ICdUaGUgZGF0YSBpbiB0aGUgcmVjZWlwdC1kYXRhIHByb3BlcnR5IHdhcyBtYWxmb3JtZWQgb3IgbWlzc2luZy4nLFxuICAyMTAwMzogJ1RoZSByZWNlaXB0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkLicsXG4gIDIxMDA0OiAnVGhlIHNoYXJlZCBzZWNyZXQgeW91IHByb3ZpZGVkIGRvZXMgbm90IG1hdGNoIHRoZSBzaGFyZWQgc2VjcmV0IG9uIGZpbGUgZm9yIHlvdXIgYWNjb3VudC4nLFxuICAyMTAwNTogJ1RoZSByZWNlaXB0IHNlcnZlciBpcyBub3QgY3VycmVudGx5IGF2YWlsYWJsZS4nLFxuICAyMTAwNjogJ1RoaXMgcmVjZWlwdCBpcyB2YWxpZCBidXQgdGhlIHN1YnNjcmlwdGlvbiBoYXMgZXhwaXJlZC4nLFxuICAyMTAwNzogJ1RoaXMgcmVjZWlwdCBpcyBmcm9tIHRoZSB0ZXN0IGVudmlyb25tZW50LCBidXQgaXQgd2FzIHNlbnQgdG8gdGhlIHByb2R1Y3Rpb24gZW52aXJvbm1lbnQgZm9yIHZlcmlmaWNhdGlvbi4gU2VuZCBpdCB0byB0aGUgdGVzdCBlbnZpcm9ubWVudCBpbnN0ZWFkLicsXG4gIDIxMDA4OiAnVGhpcyByZWNlaXB0IGlzIGZyb20gdGhlIHByb2R1Y3Rpb24gZW52aXJvbm1lbnQsIGJ1dCBpdCB3YXMgc2VudCB0byB0aGUgdGVzdCBlbnZpcm9ubWVudCBmb3IgdmVyaWZpY2F0aW9uLiBTZW5kIGl0IHRvIHRoZSBwcm9kdWN0aW9uIGVudmlyb25tZW50IGluc3RlYWQuJyxcbn07XG5cbmZ1bmN0aW9uIGFwcFN0b3JlRXJyb3Ioc3RhdHVzKSB7XG4gIHN0YXR1cyA9IHBhcnNlSW50KHN0YXR1cyk7XG4gIHZhciBlcnJvclN0cmluZyA9IEFQUF9TVE9SRV9FUlJPUlNbc3RhdHVzXSB8fCAndW5rbm93biBlcnJvci4nO1xuICByZXR1cm4geyBzdGF0dXM6IHN0YXR1cywgZXJyb3I6IGVycm9yU3RyaW5nIH07XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlV2l0aEFwcFN0b3JlKHVybCwgcmVjZWlwdCkge1xuICByZXR1cm4gcmVxdWVzdCh7XG4gICAgdXJsOiB1cmwsXG4gICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgYm9keTogeyAncmVjZWlwdC1kYXRhJzogcmVjZWlwdCB9LFxuICAgIGhlYWRlcnM6IHtcbiAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgfSxcbiAgfSkudGhlbihodHRwUmVzcG9uc2UgPT4ge1xuICAgIGNvbnN0IGJvZHkgPSBodHRwUmVzcG9uc2UuZGF0YTtcbiAgICBpZiAoYm9keSAmJiBib2R5LnN0YXR1cyA9PT0gMCkge1xuICAgICAgLy8gTm8gbmVlZCB0byBwYXNzIGFueXRoaW5nLCBzdGF0dXMgaXMgT0tcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gcmVjZWlwdCBpcyBmcm9tIHRlc3QgYW5kIHNob3VsZCBnbyB0byB0ZXN0XG4gICAgdGhyb3cgYm9keTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGdldEZpbGVGb3JQcm9kdWN0SWRlbnRpZmllcihwcm9kdWN0SWRlbnRpZmllciwgcmVxKSB7XG4gIHJldHVybiByZXN0XG4gICAgLmZpbmQoXG4gICAgICByZXEuY29uZmlnLFxuICAgICAgcmVxLmF1dGgsXG4gICAgICAnX1Byb2R1Y3QnLFxuICAgICAgeyBwcm9kdWN0SWRlbnRpZmllcjogcHJvZHVjdElkZW50aWZpZXIgfSxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIHJlcS5pbmZvLmNsaWVudFNESyxcbiAgICAgIHJlcS5pbmZvLmNvbnRleHRcbiAgICApXG4gICAgLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgY29uc3QgcHJvZHVjdHMgPSByZXN1bHQucmVzdWx0cztcbiAgICAgIGlmICghcHJvZHVjdHMgfHwgcHJvZHVjdHMubGVuZ3RoICE9IDEpIHtcbiAgICAgICAgLy8gRXJyb3Igbm90IGZvdW5kIG9yIHRvbyBtYW55XG4gICAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5ELCAnT2JqZWN0IG5vdCBmb3VuZC4nKTtcbiAgICAgIH1cblxuICAgICAgdmFyIGRvd25sb2FkID0gcHJvZHVjdHNbMF0uZG93bmxvYWQ7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHsgcmVzcG9uc2U6IGRvd25sb2FkIH0pO1xuICAgIH0pO1xufVxuXG5leHBvcnQgY2xhc3MgSUFQVmFsaWRhdGlvblJvdXRlciBleHRlbmRzIFByb21pc2VSb3V0ZXIge1xuICBoYW5kbGVSZXF1ZXN0KHJlcSkge1xuICAgIGxldCByZWNlaXB0ID0gcmVxLmJvZHk/LnJlY2VpcHQ7XG4gICAgY29uc3QgcHJvZHVjdElkZW50aWZpZXIgPSByZXEuYm9keT8ucHJvZHVjdElkZW50aWZpZXI7XG5cbiAgICBpZiAoIXJlY2VpcHQgfHwgIXByb2R1Y3RJZGVudGlmaWVyKSB7XG4gICAgICAvLyBUT0RPOiBFcnJvciwgbWFsZm9ybWVkIHJlcXVlc3RcbiAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5JTlZBTElEX0pTT04sICdtaXNzaW5nIHJlY2VpcHQgb3IgcHJvZHVjdElkZW50aWZpZXInKTtcbiAgICB9XG5cbiAgICAvLyBUcmFuc2Zvcm0gdGhlIG9iamVjdCBpZiB0aGVyZVxuICAgIC8vIG90aGVyd2lzZSBhc3N1bWUgaXQncyBpbiBCYXNlNjQgYWxyZWFkeVxuICAgIGlmICh0eXBlb2YgcmVjZWlwdCA9PSAnb2JqZWN0Jykge1xuICAgICAgaWYgKHJlY2VpcHRbJ19fdHlwZSddID09ICdCeXRlcycpIHtcbiAgICAgICAgcmVjZWlwdCA9IHJlY2VpcHQuYmFzZTY0O1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChwcm9jZXNzLmVudi5URVNUSU5HID09ICcxJyAmJiByZXEuYm9keT8uYnlwYXNzQXBwU3RvcmVWYWxpZGF0aW9uKSB7XG4gICAgICByZXR1cm4gZ2V0RmlsZUZvclByb2R1Y3RJZGVudGlmaWVyKHByb2R1Y3RJZGVudGlmaWVyLCByZXEpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHN1Y2Nlc3NDYWxsYmFjaygpIHtcbiAgICAgIHJldHVybiBnZXRGaWxlRm9yUHJvZHVjdElkZW50aWZpZXIocHJvZHVjdElkZW50aWZpZXIsIHJlcSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZXJyb3JDYWxsYmFjayhlcnJvcikge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7IHJlc3BvbnNlOiBhcHBTdG9yZUVycm9yKGVycm9yLnN0YXR1cykgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkYXRlV2l0aEFwcFN0b3JlKElBUF9QUk9EVUNUSU9OX1VSTCwgcmVjZWlwdCkudGhlbihcbiAgICAgICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHN1Y2Nlc3NDYWxsYmFjaygpO1xuICAgICAgfSxcbiAgICAgIGVycm9yID0+IHtcbiAgICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PSAyMTAwNykge1xuICAgICAgICAgIHJldHVybiB2YWxpZGF0ZVdpdGhBcHBTdG9yZShJQVBfU0FOREJPWF9VUkwsIHJlY2VpcHQpLnRoZW4oXG4gICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiBzdWNjZXNzQ2FsbGJhY2soKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnJvciA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiBlcnJvckNhbGxiYWNrKGVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGVycm9yQ2FsbGJhY2soZXJyb3IpO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBtb3VudFJvdXRlcygpIHtcbiAgICB0aGlzLnJvdXRlKCdQT1NUJywgJy92YWxpZGF0ZV9wdXJjaGFzZScsIHRoaXMuaGFuZGxlUmVxdWVzdCk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsY0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBR0EsSUFBQUMsS0FBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQStCLFNBQUFELHVCQUFBRyxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsS0FBQUUsT0FBQSxFQUFBRixDQUFBO0FBRi9CLE1BQU1HLE9BQU8sR0FBR0wsT0FBTyxDQUFDLFlBQVksQ0FBQztBQUNyQyxNQUFNTSxJQUFJLEdBQUdOLE9BQU8sQ0FBQyxTQUFTLENBQUM7QUFHL0I7QUFDQSxNQUFNTyxlQUFlLEdBQUcsZ0RBQWdEO0FBQ3hFLE1BQU1DLGtCQUFrQixHQUFHLDRDQUE0QztBQUV2RSxNQUFNQyxnQkFBZ0IsR0FBRztFQUN2QixLQUFLLEVBQUUsNERBQTREO0VBQ25FLEtBQUssRUFBRSxpRUFBaUU7RUFDeEUsS0FBSyxFQUFFLHlDQUF5QztFQUNoRCxLQUFLLEVBQUUsMkZBQTJGO0VBQ2xHLEtBQUssRUFBRSxnREFBZ0Q7RUFDdkQsS0FBSyxFQUFFLHlEQUF5RDtFQUNoRSxLQUFLLEVBQUUscUpBQXFKO0VBQzVKLEtB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
@@ -1,35 +1,28 @@
1
- 'use strict';
1
+ "use strict";
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.InstallationsRouter = undefined;
7
-
8
- var _ClassesRouter = require('./ClassesRouter');
9
-
10
- var _ClassesRouter2 = _interopRequireDefault(_ClassesRouter);
11
-
12
- var _rest = require('../rest');
13
-
14
- var _rest2 = _interopRequireDefault(_rest);
15
-
16
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
-
6
+ exports.default = exports.InstallationsRouter = void 0;
7
+ var _ClassesRouter = _interopRequireDefault(require("./ClassesRouter"));
8
+ var _rest = _interopRequireDefault(require("../rest"));
9
+ var _middlewares = require("../middlewares");
10
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
18
11
  // InstallationsRouter.js
19
12
 
20
- class InstallationsRouter extends _ClassesRouter2.default {
13
+ class InstallationsRouter extends _ClassesRouter.default {
21
14
  className() {
22
15
  return '_Installation';
23
16
  }
24
-
25
17
  handleFind(req) {
26
- const body = Object.assign(req.body, _ClassesRouter2.default.JSONFromQuery(req.query));
27
- const options = _ClassesRouter2.default.optionsFromBody(body);
28
- return _rest2.default.find(req.config, req.auth, '_Installation', body.where, options, req.info.clientSDK).then(response => {
29
- return { response: response };
18
+ const body = Object.assign(req.body || {}, _ClassesRouter.default.JSONFromQuery(req.query));
19
+ const options = _ClassesRouter.default.optionsFromBody(body, req.config.defaultLimit);
20
+ return _rest.default.find(req.config, req.auth, '_Installation', body.where, options, req.info.clientSDK, req.info.context).then(response => {
21
+ return {
22
+ response: response
23
+ };
30
24
  });
31
25
  }
32
-
33
26
  mountRoutes() {
34
27
  this.route('GET', '/installations', req => {
35
28
  return this.handleFind(req);
@@ -37,10 +30,10 @@ class InstallationsRouter extends _ClassesRouter2.default {
37
30
  this.route('GET', '/installations/:objectId', req => {
38
31
  return this.handleGet(req);
39
32
  });
40
- this.route('POST', '/installations', req => {
33
+ this.route('POST', '/installations', _middlewares.promiseEnsureIdempotency, req => {
41
34
  return this.handleCreate(req);
42
35
  });
43
- this.route('PUT', '/installations/:objectId', req => {
36
+ this.route('PUT', '/installations/:objectId', _middlewares.promiseEnsureIdempotency, req => {
44
37
  return this.handleUpdate(req);
45
38
  });
46
39
  this.route('DELETE', '/installations/:objectId', req => {
@@ -48,7 +41,6 @@ class InstallationsRouter extends _ClassesRouter2.default {
48
41
  });
49
42
  }
50
43
  }
51
-
52
44
  exports.InstallationsRouter = InstallationsRouter;
53
- exports.default = InstallationsRouter;
54
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9Sb3V0ZXJzL0luc3RhbGxhdGlvbnNSb3V0ZXIuanMiXSwibmFtZXMiOlsiSW5zdGFsbGF0aW9uc1JvdXRlciIsIkNsYXNzZXNSb3V0ZXIiLCJjbGFzc05hbWUiLCJoYW5kbGVGaW5kIiwicmVxIiwiYm9keSIsIk9iamVjdCIsImFzc2lnbiIsIkpTT05Gcm9tUXVlcnkiLCJxdWVyeSIsIm9wdGlvbnMiLCJvcHRpb25zRnJvbUJvZHkiLCJyZXN0IiwiZmluZCIsImNvbmZpZyIsImF1dGgiLCJ3aGVyZSIsImluZm8iLCJjbGllbnRTREsiLCJ0aGVuIiwicmVzcG9uc2UiLCJtb3VudFJvdXRlcyIsInJvdXRlIiwiaGFuZGxlR2V0IiwiaGFuZGxlQ3JlYXRlIiwiaGFuZGxlVXBkYXRlIiwiaGFuZGxlRGVsZXRlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBRUE7Ozs7QUFDQTs7Ozs7O0FBSEE7O0FBS08sTUFBTUEsbUJBQU4sU0FBa0NDLHVCQUFsQyxDQUFnRDtBQUNyREMsY0FBWTtBQUNWLFdBQU8sZUFBUDtBQUNEOztBQUVEQyxhQUFXQyxHQUFYLEVBQWdCO0FBQ2QsVUFBTUMsT0FBT0MsT0FBT0MsTUFBUCxDQUFjSCxJQUFJQyxJQUFsQixFQUF3Qkosd0JBQWNPLGFBQWQsQ0FBNEJKLElBQUlLLEtBQWhDLENBQXhCLENBQWI7QUFDQSxVQUFNQyxVQUFVVCx3QkFBY1UsZUFBZCxDQUE4Qk4sSUFBOUIsQ0FBaEI7QUFDQSxXQUFPTyxlQUFLQyxJQUFMLENBQVVULElBQUlVLE1BQWQsRUFBc0JWLElBQUlXLElBQTFCLEVBQ0wsZUFESyxFQUNZVixLQUFLVyxLQURqQixFQUN3Qk4sT0FEeEIsRUFDaUNOLElBQUlhLElBQUosQ0FBU0MsU0FEMUMsRUFFSkMsSUFGSSxDQUVFQyxRQUFELElBQWM7QUFDbEIsYUFBTyxFQUFDQSxVQUFVQSxRQUFYLEVBQVA7QUFDRCxLQUpJLENBQVA7QUFLRDs7QUFFREMsZ0JBQWM7QUFDWixTQUFLQyxLQUFMLENBQVcsS0FBWCxFQUFpQixnQkFBakIsRUFBbUNsQixPQUFPO0FBQUUsYUFBTyxLQUFLRCxVQUFMLENBQWdCQyxHQUFoQixDQUFQO0FBQThCLEtBQTFFO0FBQ0EsU0FBS2tCLEtBQUwsQ0FBVyxLQUFYLEVBQWlCLDBCQUFqQixFQUE2Q2xCLE9BQU87QUFBRSxhQUFPLEtBQUttQixTQUFMLENBQWVuQixHQUFmLENBQVA7QUFBNkIsS0FBbkY7QUFDQSxTQUFLa0IsS0FBTCxDQUFXLE1BQVgsRUFBa0IsZ0JBQWxCLEVBQW9DbEIsT0FBTztBQUFFLGFBQU8sS0FBS29CLFlBQUwsQ0FBa0JwQixHQUFsQixDQUFQO0FBQWdDLEtBQTdFO0FBQ0EsU0FBS2tCLEtBQUwsQ0FBVyxLQUFYLEVBQWlCLDBCQUFqQixFQUE2Q2xCLE9BQU87QUFBRSxhQUFPLEtBQUtxQixZQUFMLENBQWtCckIsR0FBbEIsQ0FBUDtBQUFnQyxLQUF0RjtBQUNBLFNBQUtrQixLQUFMLENBQVcsUUFBWCxFQUFvQiwwQkFBcEIsRUFBZ0RsQixPQUFPO0FBQUUsYUFBTyxLQUFLc0IsWUFBTCxDQUFrQnRCLEdBQWxCLENBQVA7QUFBZ0MsS0FBekY7QUFDRDtBQXJCb0Q7O1FBQTFDSixtQixHQUFBQSxtQjtrQkF3QkVBLG1CIiwiZmlsZSI6Ikluc3RhbGxhdGlvbnNSb3V0ZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJbnN0YWxsYXRpb25zUm91dGVyLmpzXG5cbmltcG9ydCBDbGFzc2VzUm91dGVyIGZyb20gJy4vQ2xhc3Nlc1JvdXRlcic7XG5pbXBvcnQgcmVzdCBmcm9tICcuLi9yZXN0JztcblxuZXhwb3J0IGNsYXNzIEluc3RhbGxhdGlvbnNSb3V0ZXIgZXh0ZW5kcyBDbGFzc2VzUm91dGVyIHtcbiAgY2xhc3NOYW1lKCkge1xuICAgIHJldHVybiAnX0luc3RhbGxhdGlvbic7XG4gIH1cblxuICBoYW5kbGVGaW5kKHJlcSkge1xuICAgIGNvbnN0IGJvZHkgPSBPYmplY3QuYXNzaWduKHJlcS5ib2R5LCBDbGFzc2VzUm91dGVyLkpTT05Gcm9tUXVlcnkocmVxLnF1ZXJ5KSk7XG4gICAgY29uc3Qgb3B0aW9ucyA9IENsYXNzZXNSb3V0ZXIub3B0aW9uc0Zyb21Cb2R5KGJvZHkpO1xuICAgIHJldHVybiByZXN0LmZpbmQocmVxLmNvbmZpZywgcmVxLmF1dGgsXG4gICAgICAnX0luc3RhbGxhdGlvbicsIGJvZHkud2hlcmUsIG9wdGlvbnMsIHJlcS5pbmZvLmNsaWVudFNESylcbiAgICAgIC50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICByZXR1cm4ge3Jlc3BvbnNlOiByZXNwb25zZX07XG4gICAgICB9KTtcbiAgfVxuXG4gIG1vdW50Um91dGVzKCkge1xuICAgIHRoaXMucm91dGUoJ0dFVCcsJy9pbnN0YWxsYXRpb25zJywgcmVxID0+IHsgcmV0dXJuIHRoaXMuaGFuZGxlRmluZChyZXEpOyB9KTtcbiAgICB0aGlzLnJvdXRlKCdHRVQnLCcvaW5zdGFsbGF0aW9ucy86b2JqZWN0SWQnLCByZXEgPT4geyByZXR1cm4gdGhpcy5oYW5kbGVHZXQocmVxKTsgfSk7XG4gICAgdGhpcy5yb3V0ZSgnUE9TVCcsJy9pbnN0YWxsYXRpb25zJywgcmVxID0+IHsgcmV0dXJuIHRoaXMuaGFuZGxlQ3JlYXRlKHJlcSk7IH0pO1xuICAgIHRoaXMucm91dGUoJ1BVVCcsJy9pbnN0YWxsYXRpb25zLzpvYmplY3RJZCcsIHJlcSA9PiB7IHJldHVybiB0aGlzLmhhbmRsZVVwZGF0ZShyZXEpOyB9KTtcbiAgICB0aGlzLnJvdXRlKCdERUxFVEUnLCcvaW5zdGFsbGF0aW9ucy86b2JqZWN0SWQnLCByZXEgPT4geyByZXR1cm4gdGhpcy5oYW5kbGVEZWxldGUocmVxKTsgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgSW5zdGFsbGF0aW9uc1JvdXRlcjtcbiJdfQ==
45
+ var _default = exports.default = InstallationsRouter;
46
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfQ2xhc3Nlc1JvdXRlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX3Jlc3QiLCJfbWlkZGxld2FyZXMiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJJbnN0YWxsYXRpb25zUm91dGVyIiwiQ2xhc3Nlc1JvdXRlciIsImNsYXNzTmFtZSIsImhhbmRsZUZpbmQiLCJyZXEiLCJib2R5IiwiT2JqZWN0IiwiYXNzaWduIiwiSlNPTkZyb21RdWVyeSIsInF1ZXJ5Iiwib3B0aW9ucyIsIm9wdGlvbnNGcm9tQm9keSIsImNvbmZpZyIsImRlZmF1bHRMaW1pdCIsInJlc3QiLCJmaW5kIiwiYXV0aCIsIndoZXJlIiwiaW5mbyIsImNsaWVudFNESyIsImNvbnRleHQiLCJ0aGVuIiwicmVzcG9uc2UiLCJtb3VudFJvdXRlcyIsInJvdXRlIiwiaGFuZGxlR2V0IiwicHJvbWlzZUVuc3VyZUlkZW1wb3RlbmN5IiwiaGFuZGxlQ3JlYXRlIiwiaGFuZGxlVXBkYXRlIiwiaGFuZGxlRGVsZXRlIiwiZXhwb3J0cyIsIl9kZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL1JvdXRlcnMvSW5zdGFsbGF0aW9uc1JvdXRlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJbnN0YWxsYXRpb25zUm91dGVyLmpzXG5cbmltcG9ydCBDbGFzc2VzUm91dGVyIGZyb20gJy4vQ2xhc3Nlc1JvdXRlcic7XG5pbXBvcnQgcmVzdCBmcm9tICcuLi9yZXN0JztcbmltcG9ydCB7IHByb21pc2VFbnN1cmVJZGVtcG90ZW5jeSB9IGZyb20gJy4uL21pZGRsZXdhcmVzJztcblxuZXhwb3J0IGNsYXNzIEluc3RhbGxhdGlvbnNSb3V0ZXIgZXh0ZW5kcyBDbGFzc2VzUm91dGVyIHtcbiAgY2xhc3NOYW1lKCkge1xuICAgIHJldHVybiAnX0luc3RhbGxhdGlvbic7XG4gIH1cblxuICBoYW5kbGVGaW5kKHJlcSkge1xuICAgIGNvbnN0IGJvZHkgPSBPYmplY3QuYXNzaWduKHJlcS5ib2R5IHx8IHt9LCBDbGFzc2VzUm91dGVyLkpTT05Gcm9tUXVlcnkocmVxLnF1ZXJ5KSk7XG4gICAgY29uc3Qgb3B0aW9ucyA9IENsYXNzZXNSb3V0ZXIub3B0aW9uc0Zyb21Cb2R5KGJvZHksIHJlcS5jb25maWcuZGVmYXVsdExpbWl0KTtcbiAgICByZXR1cm4gcmVzdFxuICAgICAgLmZpbmQoXG4gICAgICAgIHJlcS5jb25maWcsXG4gICAgICAgIHJlcS5hdXRoLFxuICAgICAgICAnX0luc3RhbGxhdGlvbicsXG4gICAgICAgIGJvZHkud2hlcmUsXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICAgIHJlcS5pbmZvLmNsaWVudFNESyxcbiAgICAgICAgcmVxLmluZm8uY29udGV4dFxuICAgICAgKVxuICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICByZXR1cm4geyByZXNwb25zZTogcmVzcG9uc2UgfTtcbiAgICAgIH0pO1xuICB9XG5cbiAgbW91bnRSb3V0ZXMoKSB7XG4gICAgdGhpcy5yb3V0ZSgnR0VUJywgJy9pbnN0YWxsYXRpb25zJywgcmVxID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZUZpbmQocmVxKTtcbiAgICB9KTtcbiAgICB0aGlzLnJvdXRlKCdHRVQnLCAnL2luc3RhbGxhdGlvbnMvOm9iamVjdElkJywgcmVxID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZUdldChyZXEpO1xuICAgIH0pO1xuICAgIHRoaXMucm91dGUoJ1BPU1QnLCAnL2luc3RhbGxhdGlvbnMnLCBwcm9taXNlRW5zdXJlSWRlbXBvdGVuY3ksIHJlcSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVDcmVhdGUocmVxKTtcbiAgICB9KTtcbiAgICB0aGlzLnJvdXRlKCdQVVQnLCAnL2luc3RhbGxhdGlvbnMvOm9iamVjdElkJywgcHJvbWlzZUVuc3VyZUlkZW1wb3RlbmN5LCByZXEgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlVXBkYXRlKHJlcSk7XG4gICAgfSk7XG4gICAgdGhpcy5yb3V0ZSgnREVMRVRFJywgJy9pbnN0YWxsYXRpb25zLzpvYmplY3RJZCcsIHJlcSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVEZWxldGUocmVxKTtcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBJbnN0YWxsYXRpb25zUm91dGVyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFFQSxJQUFBQSxjQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxLQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRSxZQUFBLEdBQUFGLE9BQUE7QUFBMEQsU0FBQUQsdUJBQUFJLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxLQUFBRSxPQUFBLEVBQUFGLENBQUE7QUFKMUQ7O0FBTU8sTUFBTUcsbUJBQW1CLFNBQVNDLHNCQUFhLENBQUM7RUFDckRDLFNBQVNBLENBQUEsRUFBRztJQUNWLE9BQU8sZUFBZTtFQUN4QjtFQUVBQyxVQUFVQSxDQUFDQyxHQUFHLEVBQUU7SUFDZCxNQUFNQyxJQUFJLEdBQUdDLE1BQU0sQ0FBQ0MsTUFBTSxDQUFDSCxHQUFHLENBQUNDLElBQUksSUFBSSxDQUFDLENBQUMsRUFBRUosc0JBQWEsQ0FBQ08sYUFBYSxDQUFDSixHQUFHLENBQUNLLEtBQUssQ0FBQyxDQUFDO0lBQ2xGLE1BQU1DLE9BQU8sR0FBR1Qsc0JBQWEsQ0FBQ1UsZUFBZSxDQUFDTixJQUFJLEVBQUVELEdBQUcsQ0FBQ1EsTUFBTSxDQUFDQyxZQUFZLENBQUM7SUFDNUUsT0FBT0MsYUFBSSxDQUNSQyxJQUFJLENBQ0hYLEdBQUcsQ0FBQ1EsTUFBTSxFQUNWUixHQUFHLENBQUNZLElBQUksRUFDUixlQUFlLEVBQ2ZYLElBQUksQ0FBQ1ksS0FBSyxFQUNWUCxPQUFPLEVBQ1BOLEdBQUcsQ0FBQ2MsSUFBSSxDQUFDQyxTQUFTLEVBQ2xCZixHQUFHLENBQUNjLElBQUksQ0FBQ0UsT0FDWCxDQUFDLENBQ0FDLElBQUksQ0FBQ0MsUUFBUSxJQUFJO01BQ2hCLE9BQU87UUFBRUEsUUFBUSxFQUFFQTtNQUFTLENBQUM7SUFDL0IsQ0FBQyxDQUFDO0VBQ047RUFFQUMsV0FBV0EsQ0FBQSxFQUFHO0lBQ1osSUFBSSxDQUFDQyxLQUFLLENBQUMsS0FBSyxFQUFFLGdCQUFnQixFQUFFcEIsR0FBRyxJQUFJO01BQ3pDLE9BQU8sSUFBSSxDQUFDRCxVQUFVLENBQUNDLEdBQUcsQ0FBQztJQUM3QixDQUFDLENBQUM7SUFDRixJQUFJLENBQUNvQixLQUFLLENBQUMsS0FBSyxFQUFFLDBCQUEwQixFQUFFcEIsR0FBRyxJQUFJO01BQ25ELE9BQU8sSUFBSSxDQUFDcUIsU0FBUyxDQUFDckIsR0FBRyxDQUFDO0lBQzVCLENBQUMsQ0FBQztJQUNGLElBQUksQ0FBQ29CLEtBQUssQ0FBQyxNQUFNLEVBQUUsZ0JBQWdCLEVBQUVFLHFDQUF3QixFQUFFdEIsR0FBRyxJQUFJO01BQ3BFLE9BQU8sSUFBSSxDQUFDdUIsWUFBWSxDQUFDdkIsR0FBRyxDQUFDO0lBQy9CLENBQUMsQ0FBQztJQUNGLElBQUksQ0FBQ29CLEtBQUssQ0FBQyxLQUFLLEVBQUUsMEJBQTBCLEVBQUVFLHFDQUF3QixFQUFFdEIsR0FBRyxJQUFJO01BQzdFLE9BQU8sSUFBSSxDQUFDd0IsWUFBWSxDQUFDeEIsR0FBRyxDQUFDO0lBQy9CLENBQUMsQ0FBQztJQUNGLElBQUksQ0FBQ29CLEtBQUssQ0FBQyxRQUFRLEVBQUUsMEJBQTBCLEVBQUVwQixHQUFHLElBQUk7TUFDdEQsT0FBTyxJQUFJLENBQUN5QixZQUFZLENBQUN6QixHQUFHLENBQUM7SUFDL0IsQ0FBQyxDQUFDO0VBQ0o7QUFDRjtBQUFDMEIsT0FBQSxDQUFBOUIsbUJBQUEsR0FBQUEsbUJBQUE7QUFBQSxJQUFBK0IsUUFBQSxHQUFBRCxPQUFBLENBQUEvQixPQUFBLEdBRWNDLG1CQUFtQiIsImlnbm9yZUxpc3QiOltdfQ==
@@ -1,32 +1,20 @@
1
- 'use strict';
1
+ "use strict";
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.LogsRouter = undefined;
7
-
8
- var _node = require('parse/node');
9
-
10
- var _PromiseRouter = require('../PromiseRouter');
11
-
12
- var _PromiseRouter2 = _interopRequireDefault(_PromiseRouter);
13
-
14
- var _middlewares = require('../middlewares');
15
-
16
- var middleware = _interopRequireWildcard(_middlewares);
17
-
18
- function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
19
-
20
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
-
22
- class LogsRouter extends _PromiseRouter2.default {
23
-
6
+ exports.default = exports.LogsRouter = void 0;
7
+ var _node = require("parse/node");
8
+ var _PromiseRouter = _interopRequireDefault(require("../PromiseRouter"));
9
+ var middleware = _interopRequireWildcard(require("../middlewares"));
10
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
11
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
+ class LogsRouter extends _PromiseRouter.default {
24
13
  mountRoutes() {
25
14
  this.route('GET', '/scriptlog', middleware.promiseEnforceMasterKeyAccess, this.validateRequest, req => {
26
15
  return this.handleGET(req);
27
16
  });
28
17
  }
29
-
30
18
  validateRequest(req) {
31
19
  if (!req.config || !req.config.loggerController) {
32
20
  throw new _node.Parse.Error(_node.Parse.Error.PUSH_MISCONFIGURED, 'Logger adapter is not available');
@@ -48,7 +36,6 @@ class LogsRouter extends _PromiseRouter2.default {
48
36
  if (req.query.n) {
49
37
  size = req.query.n;
50
38
  }
51
-
52
39
  const order = req.query.order;
53
40
  const level = req.query.level;
54
41
  const options = {
@@ -58,7 +45,6 @@ class LogsRouter extends _PromiseRouter2.default {
58
45
  order,
59
46
  level
60
47
  };
61
-
62
48
  return req.config.loggerController.getLogs(options).then(result => {
63
49
  return Promise.resolve({
64
50
  response: result
@@ -66,7 +52,6 @@ class LogsRouter extends _PromiseRouter2.default {
66
52
  });
67
53
  }
68
54
  }
69
-
70
55
  exports.LogsRouter = LogsRouter;
71
- exports.default = LogsRouter;
72
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9Sb3V0ZXJzL0xvZ3NSb3V0ZXIuanMiXSwibmFtZXMiOlsibWlkZGxld2FyZSIsIkxvZ3NSb3V0ZXIiLCJQcm9taXNlUm91dGVyIiwibW91bnRSb3V0ZXMiLCJyb3V0ZSIsInByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzIiwidmFsaWRhdGVSZXF1ZXN0IiwicmVxIiwiaGFuZGxlR0VUIiwiY29uZmlnIiwibG9nZ2VyQ29udHJvbGxlciIsIlBhcnNlIiwiRXJyb3IiLCJQVVNIX01JU0NPTkZJR1VSRUQiLCJmcm9tIiwicXVlcnkiLCJ1bnRpbCIsInNpemUiLCJuIiwib3JkZXIiLCJsZXZlbCIsIm9wdGlvbnMiLCJnZXRMb2dzIiwidGhlbiIsInJlc3VsdCIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVzcG9uc2UiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFDQTs7OztBQUNBOztJQUFZQSxVOzs7Ozs7QUFFTCxNQUFNQyxVQUFOLFNBQXlCQyx1QkFBekIsQ0FBdUM7O0FBRTVDQyxnQkFBYztBQUNaLFNBQUtDLEtBQUwsQ0FBVyxLQUFYLEVBQWlCLFlBQWpCLEVBQStCSixXQUFXSyw2QkFBMUMsRUFBeUUsS0FBS0MsZUFBOUUsRUFBaUdDLEdBQUQsSUFBUztBQUN2RyxhQUFPLEtBQUtDLFNBQUwsQ0FBZUQsR0FBZixDQUFQO0FBQ0QsS0FGRDtBQUdEOztBQUVERCxrQkFBZ0JDLEdBQWhCLEVBQXFCO0FBQ25CLFFBQUksQ0FBQ0EsSUFBSUUsTUFBTCxJQUFlLENBQUNGLElBQUlFLE1BQUosQ0FBV0MsZ0JBQS9CLEVBQWlEO0FBQy9DLFlBQU0sSUFBSUMsWUFBTUMsS0FBVixDQUFnQkQsWUFBTUMsS0FBTixDQUFZQyxrQkFBNUIsRUFDSixpQ0FESSxDQUFOO0FBRUQ7QUFDRjs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0FMLFlBQVVELEdBQVYsRUFBZTtBQUNiLFVBQU1PLE9BQU9QLElBQUlRLEtBQUosQ0FBVUQsSUFBdkI7QUFDQSxVQUFNRSxRQUFRVCxJQUFJUSxLQUFKLENBQVVDLEtBQXhCO0FBQ0EsUUFBSUMsT0FBT1YsSUFBSVEsS0FBSixDQUFVRSxJQUFyQjtBQUNBLFFBQUlWLElBQUlRLEtBQUosQ0FBVUcsQ0FBZCxFQUFpQjtBQUNmRCxhQUFPVixJQUFJUSxLQUFKLENBQVVHLENBQWpCO0FBQ0Q7O0FBRUQsVUFBTUMsUUFBUVosSUFBSVEsS0FBSixDQUFVSSxLQUF4QjtBQUNBLFVBQU1DLFFBQVFiLElBQUlRLEtBQUosQ0FBVUssS0FBeEI7QUFDQSxVQUFNQyxVQUFVO0FBQ2RQLFVBRGM7QUFFZEUsV0FGYztBQUdkQyxVQUhjO0FBSWRFLFdBSmM7QUFLZEM7QUFMYyxLQUFoQjs7QUFRQSxXQUFPYixJQUFJRSxNQUFKLENBQVdDLGdCQUFYLENBQTRCWSxPQUE1QixDQUFvQ0QsT0FBcEMsRUFBNkNFLElBQTdDLENBQW1EQyxNQUFELElBQVk7QUFDbkUsYUFBT0MsUUFBUUMsT0FBUixDQUFnQjtBQUNyQkMsa0JBQVVIO0FBRFcsT0FBaEIsQ0FBUDtBQUdELEtBSk0sQ0FBUDtBQUtEO0FBOUMyQzs7UUFBakN2QixVLEdBQUFBLFU7a0JBaURFQSxVIiwiZmlsZSI6IkxvZ3NSb3V0ZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQYXJzZSB9IGZyb20gJ3BhcnNlL25vZGUnO1xuaW1wb3J0IFByb21pc2VSb3V0ZXIgZnJvbSAnLi4vUHJvbWlzZVJvdXRlcic7XG5pbXBvcnQgKiBhcyBtaWRkbGV3YXJlIGZyb20gXCIuLi9taWRkbGV3YXJlc1wiO1xuXG5leHBvcnQgY2xhc3MgTG9nc1JvdXRlciBleHRlbmRzIFByb21pc2VSb3V0ZXIge1xuXG4gIG1vdW50Um91dGVzKCkge1xuICAgIHRoaXMucm91dGUoJ0dFVCcsJy9zY3JpcHRsb2cnLCBtaWRkbGV3YXJlLnByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzLCB0aGlzLnZhbGlkYXRlUmVxdWVzdCwgIChyZXEpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZUdFVChyZXEpO1xuICAgIH0pO1xuICB9XG5cbiAgdmFsaWRhdGVSZXF1ZXN0KHJlcSkge1xuICAgIGlmICghcmVxLmNvbmZpZyB8fCAhcmVxLmNvbmZpZy5sb2dnZXJDb250cm9sbGVyKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuUFVTSF9NSVNDT05GSUdVUkVELFxuICAgICAgICAnTG9nZ2VyIGFkYXB0ZXIgaXMgbm90IGF2YWlsYWJsZScpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFJldHVybnMgYSBwcm9taXNlIGZvciBhIHtyZXNwb25zZX0gb2JqZWN0LlxuICAvLyBxdWVyeSBwYXJhbXM6XG4gIC8vIGxldmVsIChvcHRpb25hbCkgTGV2ZWwgb2YgbG9nZ2luZyB5b3Ugd2FudCB0byBxdWVyeSBmb3IgKGluZm8gfHwgZXJyb3IpXG4gIC8vIGZyb20gKG9wdGlvbmFsKSBTdGFydCB0aW1lIGZvciB0aGUgc2VhcmNoLiBEZWZhdWx0cyB0byAxIHdlZWsgYWdvLlxuICAvLyB1bnRpbCAob3B0aW9uYWwpIEVuZCB0aW1lIGZvciB0aGUgc2VhcmNoLiBEZWZhdWx0cyB0byBjdXJyZW50IHRpbWUuXG4gIC8vIG9yZGVyIChvcHRpb25hbCkgRGlyZWN0aW9uIG9mIHJlc3VsdHMgcmV0dXJuZWQsIGVpdGhlciDigJxhc2PigJ0gb3Ig4oCcZGVzY+KAnS4gRGVmYXVsdHMgdG8g4oCcZGVzY+KAnS5cbiAgLy8gc2l6ZSAob3B0aW9uYWwpIE51bWJlciBvZiByb3dzIHJldHVybmVkIGJ5IHNlYXJjaC4gRGVmYXVsdHMgdG8gMTBcbiAgLy8gbiBzYW1lIGFzIHNpemUsIG92ZXJyaWRlcyBzaXplIGlmIHNldFxuICBoYW5kbGVHRVQocmVxKSB7XG4gICAgY29uc3QgZnJvbSA9IHJlcS5xdWVyeS5mcm9tO1xuICAgIGNvbnN0IHVudGlsID0gcmVxLnF1ZXJ5LnVudGlsO1xuICAgIGxldCBzaXplID0gcmVxLnF1ZXJ5LnNpemU7XG4gICAgaWYgKHJlcS5xdWVyeS5uKSB7XG4gICAgICBzaXplID0gcmVxLnF1ZXJ5Lm47XG4gICAgfVxuXG4gICAgY29uc3Qgb3JkZXIgPSByZXEucXVlcnkub3JkZXJcbiAgICBjb25zdCBsZXZlbCA9IHJlcS5xdWVyeS5sZXZlbDtcbiAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgZnJvbSxcbiAgICAgIHVudGlsLFxuICAgICAgc2l6ZSxcbiAgICAgIG9yZGVyLFxuICAgICAgbGV2ZWxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHJlcS5jb25maWcubG9nZ2VyQ29udHJvbGxlci5nZXRMb2dzKG9wdGlvbnMpLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7XG4gICAgICAgIHJlc3BvbnNlOiByZXN1bHRcbiAgICAgIH0pO1xuICAgIH0pXG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTG9nc1JvdXRlcjtcbiJdfQ==
56
+ var _default = exports.default = LogsRouter;
57
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbm9kZSIsInJlcXVpcmUiLCJfUHJvbWlzZVJvdXRlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJtaWRkbGV3YXJlIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJlIiwidCIsIldlYWtNYXAiLCJyIiwibiIsIl9fZXNNb2R1bGUiLCJvIiwiaSIsImYiLCJfX3Byb3RvX18iLCJkZWZhdWx0IiwiaGFzIiwiZ2V0Iiwic2V0IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJMb2dzUm91dGVyIiwiUHJvbWlzZVJvdXRlciIsIm1vdW50Um91dGVzIiwicm91dGUiLCJwcm9taXNlRW5mb3JjZU1hc3RlcktleUFjY2VzcyIsInZhbGlkYXRlUmVxdWVzdCIsInJlcSIsImhhbmRsZUdFVCIsImNvbmZpZyIsImxvZ2dlckNvbnRyb2xsZXIiLCJQYXJzZSIsIkVycm9yIiwiUFVTSF9NSVNDT05GSUdVUkVEIiwiZnJvbSIsInF1ZXJ5IiwidW50aWwiLCJzaXplIiwib3JkZXIiLCJsZXZlbCIsIm9wdGlvbnMiLCJnZXRMb2dzIiwidGhlbiIsInJlc3VsdCIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVzcG9uc2UiLCJleHBvcnRzIiwiX2RlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvUm91dGVycy9Mb2dzUm91dGVyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBhcnNlIH0gZnJvbSAncGFyc2Uvbm9kZSc7XG5pbXBvcnQgUHJvbWlzZVJvdXRlciBmcm9tICcuLi9Qcm9taXNlUm91dGVyJztcbmltcG9ydCAqIGFzIG1pZGRsZXdhcmUgZnJvbSAnLi4vbWlkZGxld2FyZXMnO1xuXG5leHBvcnQgY2xhc3MgTG9nc1JvdXRlciBleHRlbmRzIFByb21pc2VSb3V0ZXIge1xuICBtb3VudFJvdXRlcygpIHtcbiAgICB0aGlzLnJvdXRlKFxuICAgICAgJ0dFVCcsXG4gICAgICAnL3NjcmlwdGxvZycsXG4gICAgICBtaWRkbGV3YXJlLnByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzLFxuICAgICAgdGhpcy52YWxpZGF0ZVJlcXVlc3QsXG4gICAgICByZXEgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5oYW5kbGVHRVQocmVxKTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgdmFsaWRhdGVSZXF1ZXN0KHJlcSkge1xuICAgIGlmICghcmVxLmNvbmZpZyB8fCAhcmVxLmNvbmZpZy5sb2dnZXJDb250cm9sbGVyKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuUFVTSF9NSVNDT05GSUdVUkVELCAnTG9nZ2VyIGFkYXB0ZXIgaXMgbm90IGF2YWlsYWJsZScpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFJldHVybnMgYSBwcm9taXNlIGZvciBhIHtyZXNwb25zZX0gb2JqZWN0LlxuICAvLyBxdWVyeSBwYXJhbXM6XG4gIC8vIGxldmVsIChvcHRpb25hbCkgTGV2ZWwgb2YgbG9nZ2luZyB5b3Ugd2FudCB0byBxdWVyeSBmb3IgKGluZm8gfHwgZXJyb3IpXG4gIC8vIGZyb20gKG9wdGlvbmFsKSBTdGFydCB0aW1lIGZvciB0aGUgc2VhcmNoLiBEZWZhdWx0cyB0byAxIHdlZWsgYWdvLlxuICAvLyB1bnRpbCAob3B0aW9uYWwpIEVuZCB0aW1lIGZvciB0aGUgc2VhcmNoLiBEZWZhdWx0cyB0byBjdXJyZW50IHRpbWUuXG4gIC8vIG9yZGVyIChvcHRpb25hbCkgRGlyZWN0aW9uIG9mIHJlc3VsdHMgcmV0dXJuZWQsIGVpdGhlciDigJxhc2PigJ0gb3Ig4oCcZGVzY+KAnS4gRGVmYXVsdHMgdG8g4oCcZGVzY+KAnS5cbiAgLy8gc2l6ZSAob3B0aW9uYWwpIE51bWJlciBvZiByb3dzIHJldHVybmVkIGJ5IHNlYXJjaC4gRGVmYXVsdHMgdG8gMTBcbiAgLy8gbiBzYW1lIGFzIHNpemUsIG92ZXJyaWRlcyBzaXplIGlmIHNldFxuICBoYW5kbGVHRVQocmVxKSB7XG4gICAgY29uc3QgZnJvbSA9IHJlcS5xdWVyeS5mcm9tO1xuICAgIGNvbnN0IHVudGlsID0gcmVxLnF1ZXJ5LnVudGlsO1xuICAgIGxldCBzaXplID0gcmVxLnF1ZXJ5LnNpemU7XG4gICAgaWYgKHJlcS5xdWVyeS5uKSB7XG4gICAgICBzaXplID0gcmVxLnF1ZXJ5Lm47XG4gICAgfVxuXG4gICAgY29uc3Qgb3JkZXIgPSByZXEucXVlcnkub3JkZXI7XG4gICAgY29uc3QgbGV2ZWwgPSByZXEucXVlcnkubGV2ZWw7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgIGZyb20sXG4gICAgICB1bnRpbCxcbiAgICAgIHNpemUsXG4gICAgICBvcmRlcixcbiAgICAgIGxldmVsLFxuICAgIH07XG5cbiAgICByZXR1cm4gcmVxLmNvbmZpZy5sb2dnZXJDb250cm9sbGVyLmdldExvZ3Mob3B0aW9ucykudGhlbihyZXN1bHQgPT4ge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7XG4gICAgICAgIHJlc3BvbnNlOiByZXN1bHQsXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBMb2dzUm91dGVyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxLQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxjQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxVQUFBLEdBQUFDLHVCQUFBLENBQUFKLE9BQUE7QUFBNkMsU0FBQUksd0JBQUFDLENBQUEsRUFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxNQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFILHVCQUFBLFlBQUFBLENBQUFDLENBQUEsRUFBQUMsQ0FBQSxTQUFBQSxDQUFBLElBQUFELENBQUEsSUFBQUEsQ0FBQSxDQUFBSyxVQUFBLFNBQUFMLENBQUEsTUFBQU0sQ0FBQSxFQUFBQyxDQUFBLEVBQUFDLENBQUEsS0FBQUMsU0FBQSxRQUFB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