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,39 +1,24 @@
1
- 'use strict';
1
+ "use strict";
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.ClassesRouter = undefined;
7
-
8
- var _PromiseRouter = require('../PromiseRouter');
9
-
10
- var _PromiseRouter2 = _interopRequireDefault(_PromiseRouter);
11
-
12
- var _rest = require('../rest');
13
-
14
- var _rest2 = _interopRequireDefault(_rest);
15
-
16
- var _lodash = require('lodash');
17
-
18
- var _lodash2 = _interopRequireDefault(_lodash);
19
-
20
- var _node = require('parse/node');
21
-
22
- var _node2 = _interopRequireDefault(_node);
23
-
24
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25
-
26
- const ALLOWED_GET_QUERY_KEYS = ['keys', 'include'];
27
-
28
- class ClassesRouter extends _PromiseRouter2.default {
29
-
6
+ exports.default = exports.ClassesRouter = void 0;
7
+ var _PromiseRouter = _interopRequireDefault(require("../PromiseRouter"));
8
+ var _rest = _interopRequireDefault(require("../rest"));
9
+ var _lodash = _interopRequireDefault(require("lodash"));
10
+ var _node = _interopRequireDefault(require("parse/node"));
11
+ var _middlewares = require("../middlewares");
12
+ var _Error = require("../Error");
13
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
14
+ const ALLOWED_GET_QUERY_KEYS = ['keys', 'include', 'excludeKeys', 'readPreference', 'includeReadPreference', 'subqueryReadPreference'];
15
+ class ClassesRouter extends _PromiseRouter.default {
30
16
  className(req) {
31
17
  return req.params.className;
32
18
  }
33
-
34
19
  handleFind(req) {
35
- const body = Object.assign(req.body, ClassesRouter.JSONFromQuery(req.query));
36
- const options = ClassesRouter.optionsFromBody(body);
20
+ const body = Object.assign(req.body || {}, ClassesRouter.JSONFromQuery(req.query));
21
+ const options = ClassesRouter.optionsFromBody(body, req.config.defaultLimit);
37
22
  if (req.config.maxLimit && body.limit > req.config.maxLimit) {
38
23
  // Silently replace the limit on the query with the max configured
39
24
  options.limit = Number(req.config.maxLimit);
@@ -44,82 +29,92 @@ class ClassesRouter extends _PromiseRouter2.default {
44
29
  if (typeof body.where === 'string') {
45
30
  body.where = JSON.parse(body.where);
46
31
  }
47
- return _rest2.default.find(req.config, req.auth, this.className(req), body.where, options, req.info.clientSDK).then(response => {
48
- return { response: response };
32
+ return _rest.default.find(req.config, req.auth, this.className(req), body.where, options, req.info.clientSDK, req.info.context).then(response => {
33
+ return {
34
+ response: response
35
+ };
49
36
  });
50
37
  }
51
38
 
52
39
  // Returns a promise for a {response} object.
53
40
  handleGet(req) {
54
- const body = Object.assign(req.body, ClassesRouter.JSONFromQuery(req.query));
41
+ const body = Object.assign(req.body || {}, ClassesRouter.JSONFromQuery(req.query));
55
42
  const options = {};
56
-
57
43
  for (const key of Object.keys(body)) {
58
44
  if (ALLOWED_GET_QUERY_KEYS.indexOf(key) === -1) {
59
- throw new _node2.default.Error(_node2.default.Error.INVALID_QUERY, 'Improper encode of parameter');
45
+ throw new _node.default.Error(_node.default.Error.INVALID_QUERY, 'Improper encode of parameter');
60
46
  }
61
47
  }
62
-
63
- if (typeof body.keys == 'string') {
64
- options.keys = body.keys;
48
+ if (body.keys != null) {
49
+ options.keys = String(body.keys);
65
50
  }
66
- if (body.include) {
51
+ if (body.include != null) {
67
52
  options.include = String(body.include);
68
53
  }
69
-
70
- return _rest2.default.get(req.config, req.auth, this.className(req), req.params.objectId, options, req.info.clientSDK).then(response => {
54
+ if (body.excludeKeys != null) {
55
+ options.excludeKeys = String(body.excludeKeys);
56
+ }
57
+ if (typeof body.readPreference === 'string') {
58
+ options.readPreference = body.readPreference;
59
+ }
60
+ if (typeof body.includeReadPreference === 'string') {
61
+ options.includeReadPreference = body.includeReadPreference;
62
+ }
63
+ if (typeof body.subqueryReadPreference === 'string') {
64
+ options.subqueryReadPreference = body.subqueryReadPreference;
65
+ }
66
+ return _rest.default.get(req.config, req.auth, this.className(req), req.params.objectId, options, req.info.clientSDK, req.info.context).then(response => {
71
67
  if (!response.results || response.results.length == 0) {
72
- throw new _node2.default.Error(_node2.default.Error.OBJECT_NOT_FOUND, 'Object not found.');
68
+ throw new _node.default.Error(_node.default.Error.OBJECT_NOT_FOUND, 'Object not found.');
73
69
  }
74
-
75
- if (this.className(req) === "_User") {
76
-
70
+ if (this.className(req) === '_User') {
77
71
  delete response.results[0].sessionToken;
78
-
79
72
  const user = response.results[0];
80
-
81
73
  if (req.auth.user && user.objectId == req.auth.user.id) {
82
74
  // Force the session token
83
75
  response.results[0].sessionToken = req.info.sessionToken;
84
76
  }
85
77
  }
86
- return { response: response.results[0] };
78
+ return {
79
+ response: response.results[0]
80
+ };
87
81
  });
88
82
  }
89
-
90
83
  handleCreate(req) {
91
- return _rest2.default.create(req.config, req.auth, this.className(req), req.body, req.info.clientSDK);
84
+ if (this.className(req) === '_User' && typeof req.body?.objectId === 'string' && req.body.objectId.startsWith('role:')) {
85
+ throw (0, _Error.createSanitizedError)(_node.default.Error.OPERATION_FORBIDDEN, 'Invalid object ID.', req.config);
86
+ }
87
+ return _rest.default.create(req.config, req.auth, this.className(req), req.body || {}, req.info.clientSDK, req.info.context);
92
88
  }
93
-
94
89
  handleUpdate(req) {
95
- const where = { objectId: req.params.objectId };
96
- return _rest2.default.update(req.config, req.auth, this.className(req), where, req.body, req.info.clientSDK);
90
+ const where = {
91
+ objectId: req.params.objectId
92
+ };
93
+ return _rest.default.update(req.config, req.auth, this.className(req), where, req.body || {}, req.info.clientSDK, req.info.context);
97
94
  }
98
-
99
95
  handleDelete(req) {
100
- return _rest2.default.del(req.config, req.auth, this.className(req), req.params.objectId, req.info.clientSDK).then(() => {
101
- return { response: {} };
96
+ return _rest.default.del(req.config, req.auth, this.className(req), req.params.objectId, req.info.context).then(() => {
97
+ return {
98
+ response: {}
99
+ };
102
100
  });
103
101
  }
104
-
105
102
  static JSONFromQuery(query) {
106
103
  const json = {};
107
- for (const [key, value] of _lodash2.default.entries(query)) {
104
+ for (const [key, value] of _lodash.default.entries(query)) {
108
105
  try {
109
106
  json[key] = JSON.parse(value);
110
- } catch (e) {
107
+ } catch {
111
108
  json[key] = value;
112
109
  }
113
110
  }
114
111
  return json;
115
112
  }
116
-
117
- static optionsFromBody(body) {
118
- const allowConstraints = ['skip', 'limit', 'order', 'count', 'keys', 'include', 'includeAll', 'redirectClassNameForKey', 'where'];
119
-
113
+ static optionsFromBody(body, defaultLimit) {
114
+ const allowConstraints = ['skip', 'limit', 'order', 'count', 'keys', 'excludeKeys', 'include', 'includeAll', 'redirectClassNameForKey', 'where', 'readPreference', 'includeReadPreference', 'subqueryReadPreference', 'hint', 'explain', 'comment'];
120
115
  for (const key of Object.keys(body)) {
121
116
  if (allowConstraints.indexOf(key) === -1) {
122
- throw new _node2.default.Error(_node2.default.Error.INVALID_QUERY, `Invalid parameter for query: ${key}`);
117
+ throw new _node.default.Error(_node.default.Error.INVALID_QUERY, `Invalid parameter for query: ${key}`);
123
118
  }
124
119
  }
125
120
  const options = {};
@@ -129,7 +124,7 @@ class ClassesRouter extends _PromiseRouter2.default {
129
124
  if (body.limit || body.limit === 0) {
130
125
  options.limit = Number(body.limit);
131
126
  } else {
132
- options.limit = Number(100);
127
+ options.limit = Number(defaultLimit);
133
128
  }
134
129
  if (body.order) {
135
130
  options.order = String(body.order);
@@ -137,18 +132,38 @@ class ClassesRouter extends _PromiseRouter2.default {
137
132
  if (body.count) {
138
133
  options.count = true;
139
134
  }
140
- if (typeof body.keys == 'string') {
141
- options.keys = body.keys;
135
+ if (body.keys != null) {
136
+ options.keys = String(body.keys);
137
+ }
138
+ if (body.excludeKeys != null) {
139
+ options.excludeKeys = String(body.excludeKeys);
142
140
  }
143
- if (body.include) {
141
+ if (body.include != null) {
144
142
  options.include = String(body.include);
145
143
  }
146
144
  if (body.includeAll) {
147
145
  options.includeAll = true;
148
146
  }
147
+ if (typeof body.readPreference === 'string') {
148
+ options.readPreference = body.readPreference;
149
+ }
150
+ if (typeof body.includeReadPreference === 'string') {
151
+ options.includeReadPreference = body.includeReadPreference;
152
+ }
153
+ if (typeof body.subqueryReadPreference === 'string') {
154
+ options.subqueryReadPreference = body.subqueryReadPreference;
155
+ }
156
+ if (body.hint && (typeof body.hint === 'string' || typeof body.hint === 'object')) {
157
+ options.hint = body.hint;
158
+ }
159
+ if (body.explain) {
160
+ options.explain = body.explain;
161
+ }
162
+ if (body.comment && typeof body.comment === 'string') {
163
+ options.comment = body.comment;
164
+ }
149
165
  return options;
150
166
  }
151
-
152
167
  mountRoutes() {
153
168
  this.route('GET', '/classes/:className', req => {
154
169
  return this.handleFind(req);
@@ -156,10 +171,10 @@ class ClassesRouter extends _PromiseRouter2.default {
156
171
  this.route('GET', '/classes/:className/:objectId', req => {
157
172
  return this.handleGet(req);
158
173
  });
159
- this.route('POST', '/classes/:className', req => {
174
+ this.route('POST', '/classes/:className', _middlewares.promiseEnsureIdempotency, req => {
160
175
  return this.handleCreate(req);
161
176
  });
162
- this.route('PUT', '/classes/:className/:objectId', req => {
177
+ this.route('PUT', '/classes/:className/:objectId', _middlewares.promiseEnsureIdempotency, req => {
163
178
  return this.handleUpdate(req);
164
179
  });
165
180
  this.route('DELETE', '/classes/:className/:objectId', req => {
@@ -167,7 +182,6 @@ class ClassesRouter extends _PromiseRouter2.default {
167
182
  });
168
183
  }
169
184
  }
170
-
171
185
  exports.ClassesRouter = ClassesRouter;
172
- exports.default = ClassesRouter;
173
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9Sb3V0ZXJzL0NsYXNzZXNSb3V0ZXIuanMiXSwibmFtZXMiOlsiQUxMT1dFRF9HRVRfUVVFUllfS0VZUyIsIkNsYXNzZXNSb3V0ZXIiLCJQcm9taXNlUm91dGVyIiwiY2xhc3NOYW1lIiwicmVxIiwicGFyYW1zIiwiaGFuZGxlRmluZCIsImJvZHkiLCJPYmplY3QiLCJhc3NpZ24iLCJKU09ORnJvbVF1ZXJ5IiwicXVlcnkiLCJvcHRpb25zIiwib3B0aW9uc0Zyb21Cb2R5IiwiY29uZmlnIiwibWF4TGltaXQiLCJsaW1pdCIsIk51bWJlciIsInJlZGlyZWN0Q2xhc3NOYW1lRm9yS2V5IiwiU3RyaW5nIiwid2hlcmUiLCJKU09OIiwicGFyc2UiLCJyZXN0IiwiZmluZCIsImF1dGgiLCJpbmZvIiwiY2xpZW50U0RLIiwidGhlbiIsInJlc3BvbnNlIiwiaGFuZGxlR2V0Iiwia2V5Iiwia2V5cyIsImluZGV4T2YiLCJQYXJzZSIsIkVycm9yIiwiSU5WQUxJRF9RVUVSWSIsImluY2x1ZGUiLCJnZXQiLCJvYmplY3RJZCIsInJlc3VsdHMiLCJsZW5ndGgiLCJPQkpFQ1RfTk9UX0ZPVU5EIiwic2Vzc2lvblRva2VuIiwidXNlciIsImlkIiwiaGFuZGxlQ3JlYXRlIiwiY3JlYXRlIiwiaGFuZGxlVXBkYXRlIiwidXBkYXRlIiwiaGFuZGxlRGVsZXRlIiwiZGVsIiwianNvbiIsInZhbHVlIiwiXyIsImVudHJpZXMiLCJlIiwiYWxsb3dDb25zdHJhaW50cyIsInNraXAiLCJvcmRlciIsImNvdW50IiwiaW5jbHVkZUFsbCIsIm1vdW50Um91dGVzIiwicm91dGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7Ozs7O0FBRUEsTUFBTUEseUJBQXlCLENBQUMsTUFBRCxFQUFTLFNBQVQsQ0FBL0I7O0FBRU8sTUFBTUMsYUFBTixTQUE0QkMsdUJBQTVCLENBQTBDOztBQUUvQ0MsWUFBVUMsR0FBVixFQUFlO0FBQ2Is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LFlBQUwsQ0FBa0IxQyxHQUFsQixDQUFQO0FBQWdDLEtBQXJGO0FBQ0EsU0FBSzJELEtBQUwsQ0FBVyxLQUFYLEVBQWtCLCtCQUFsQixFQUFvRDNELEdBQUQsSUFBUztBQUFFLGFBQU8sS0FBSzRDLFlBQUwsQ0FBa0I1QyxHQUFsQixDQUFQO0FBQWdDLEtBQTlGO0FBQ0EsU0FBSzJELEtBQUwsQ0FBVyxRQUFYLEVBQXNCLCtCQUF0QixFQUF3RDNELEdBQUQsSUFBUztBQUFFLGFBQU8sS0FBSzhDLFlBQUwsQ0FBa0I5QyxHQUFsQixDQUFQO0FBQWdDLEtBQWxHO0FBQ0Q7QUF0SThDOztRQUFwQ0gsYSxHQUFBQSxhO2tCQXlJRUEsYSIsImZpbGUiOiJDbGFzc2VzUm91dGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgUHJvbWlzZVJvdXRlciBmcm9tICcuLi9Qcm9taXNlUm91dGVyJztcbmltcG9ydCByZXN0ICAgICAgICAgIGZyb20gJy4uL3Jlc3QnO1xuaW1wb3J0IF8gICAgICAgICAgICAgZnJvbSAnbG9kYXNoJztcbmltcG9ydCBQYXJzZSAgICAgICAgIGZyb20gJ3BhcnNlL25vZGUnO1xuXG5jb25zdCBBTExPV0VEX0dFVF9RVUVSWV9LRVlTID0gWydrZXlzJywgJ2luY2x1ZGUnXTtcblxuZXhwb3J0IGNsYXNzIENsYXNzZXNSb3V0ZXIgZXh0ZW5kcyBQcm9taXNlUm91dGVyIHtcblxuICBjbGFzc05hbWUocmVxKSB7XG4gICAgcmV0dXJuIHJlcS5wYXJhbXMuY2xhc3NOYW1lO1xuICB9XG5cbiAgaGFuZGxlRmluZChyZXEpIHtcbiAgICBjb25zdCBib2R5ID0gT2JqZWN0LmFzc2lnbihyZXEuYm9keSwgQ2xhc3Nlc1JvdXRlci5KU09ORnJvbVF1ZXJ5KHJlcS5xdWVyeSkpO1xuICAgIGNvbnN0IG9wdGlvbnMgPSBDbGFzc2VzUm91dGVyLm9wdGlvbnNGcm9tQm9keShib2R5KTtcbiAgICBpZiAocmVxLmNvbmZpZy5tYXhMaW1pdCAmJiAoYm9keS5saW1pdCA+IHJlcS5jb25maWcubWF4TGltaXQpKSB7XG4gICAgICAvLyBTaWxlbnRseSByZXBsYWNlIHRoZSBsaW1pdCBvbiB0aGUgcXVlcnkgd2l0aCB0aGUgbWF4IGNvbmZpZ3VyZWRcbiAgICAgIG9wdGlvbnMubGltaXQgPSBOdW1iZXIocmVxLmNvbmZpZy5tYXhMaW1pdCk7XG4gICAgfVxuICAgIGlmIChib2R5LnJlZGlyZWN0Q2xhc3NOYW1lRm9yS2V5KSB7XG4gICAgICBvcHRpb25zLnJlZGlyZWN0Q2xhc3NOYW1lRm9yS2V5ID0gU3RyaW5nKGJvZHkucmVkaXJlY3RDbGFzc05hbWVGb3JLZXkpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGJvZHkud2hlcmUgPT09ICdzdHJpbmcnKSB7XG4gICAgICBib2R5LndoZXJlID0gSlNPTi5wYXJzZShib2R5LndoZXJlKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3QuZmluZChyZXEuY29uZmlnLCByZXEuYXV0aCwgdGhpcy5jbGFzc05hbWUocmVxKSwgYm9keS53aGVyZSwgb3B0aW9ucywgcmVxLmluZm8uY2xpZW50U0RLKVxuICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIHJldHVybiB7IHJlc3BvbnNlOiByZXNwb25zZSB9O1xuICAgICAgfSk7XG4gIH1cblxuICAvLyBSZXR1cm5zIGEgcHJvbWlzZSBmb3IgYSB7cmVzcG9uc2V9IG9iamVjdC5cbiAgaGFuZGxlR2V0KHJlcSkge1xuICAgIGNvbnN0IGJvZHkgPSBPYmplY3QuYXNzaWduKHJlcS5ib2R5LCBDbGFzc2VzUm91dGVyLkpTT05Gcm9tUXVlcnkocmVxLnF1ZXJ5KSk7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHt9O1xuXG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoYm9keSkpIHtcbiAgICAgIGlmIChBTExPV0VEX0dFVF9RVUVSWV9LRVlTLmluZGV4T2Yoa2V5KSA9PT0gLTEpIHtcbiAgICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLklOVkFMSURfUVVFUlksICdJbXByb3BlciBlbmNvZGUgb2YgcGFyYW1ldGVyJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBib2R5LmtleXMgPT0gJ3N0cmluZycpIHtcbiAgICAgIG9wdGlvbnMua2V5cyA9IGJvZHkua2V5cztcbiAgICB9XG4gICAgaWYgKGJvZHkuaW5jbHVkZSkge1xuICAgICAgb3B0aW9ucy5pbmNsdWRlID0gU3RyaW5nKGJvZHkuaW5jbHVkZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3QuZ2V0KHJlcS5jb25maWcsIHJlcS5hdXRoLCB0aGlzLmNsYXNzTmFtZShyZXEpLCByZXEucGFyYW1zLm9iamVjdElkLCBvcHRpb25zLCByZXEuaW5mby5jbGllbnRTREspXG4gICAgICAudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgaWYgKCFyZXNwb25zZS5yZXN1bHRzIHx8IHJlc3BvbnNlLnJlc3VsdHMubGVuZ3RoID09IDApIHtcbiAgICAgICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuT0JKRUNUX05PVF9GT1VORCwgJ09iamVjdCBub3QgZm91bmQuJyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5jbGFzc05hbWUocmVxKSA9PT0gXCJfVXNlclwiKSB7XG5cbiAgICAgICAgICBkZWxldGUgcmVzcG9uc2UucmVzdWx0c1swXS5zZXNzaW9uVG9rZW47XG5cbiAgICAgICAgICBjb25zdCB1c2VyID0gIHJlc3BvbnNlLnJlc3VsdHNbMF07XG5cbiAgICAgICAgICBpZiAocmVxLmF1dGgudXNlciAmJiB1c2VyLm9iamVjdElkID09IHJlcS5hdXRoLnVzZXIuaWQpIHtcbiAgICAgICAgICAgIC8vIEZvcmNlIHRoZSBzZXNzaW9uIHRva2VuXG4gICAgICAgICAgICByZXNwb25zZS5yZXN1bHRzWzBdLnNlc3Npb25Ub2tlbiA9IHJlcS5pbmZvLnNlc3Npb25Ub2tlbjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgcmVzcG9uc2U6IHJlc3BvbnNlLnJlc3VsdHNbMF0gfTtcbiAgICAgIH0pO1xuICB9XG5cbiAgaGFuZGxlQ3JlYXRlKHJlcSkge1xuICAgIHJldHVybiByZXN0LmNyZWF0ZShyZXEuY29uZmlnLCByZXEuYXV0aCwgdGhpcy5jbGFzc05hbWUocmVxKSwgcmVxLmJvZHksIHJlcS5pbmZvLmNsaWVudFNESyk7XG4gIH1cblxuICBoYW5kbGVVcGRhdGUocmVxKSB7XG4gICAgY29uc3Qgd2hlcmUgPSB7IG9iamVjdElkOiByZXEucGFyYW1zLm9iamVjdElkIH1cbiAgICByZXR1cm4gcmVzdC51cGRhdGUocmVxLmNvbmZpZywgcmVxLmF1dGgsIHRoaXMuY2xhc3NOYW1lKHJlcSksIHdoZXJlLCByZXEuYm9keSwgcmVxLmluZm8uY2xpZW50U0RLKTtcbiAgfVxuXG4gIGhhbmRsZURlbGV0ZShyZXEpIHtcbiAgICByZXR1cm4gcmVzdC5kZWwocmVxLmNvbmZpZywgcmVxLmF1dGgsIHRoaXMuY2xhc3NOYW1lKHJlcSksIHJlcS5wYXJhbXMub2JqZWN0SWQsIHJlcS5pbmZvLmNsaWVudFNESylcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtyZXNwb25zZToge319O1xuICAgICAgfSk7XG4gIH1cblxuICBzdGF0aWMgSlNPTkZyb21RdWVyeShxdWVyeSkge1xuICAgIGNvbnN0IGpzb24gPSB7fTtcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBfLmVudHJpZXMocXVlcnkpKSB7XG4gICAgICB0cnkge1xuICAgICAgICBqc29uW2tleV0gPSBKU09OLnBhcnNlKHZhbHVlKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAganNvbltrZXldID0gdmFsdWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBqc29uXG4gIH1cblxuICBzdGF0aWMgb3B0aW9uc0Zyb21Cb2R5KGJvZHkpIHtcbiAgICBjb25zdCBhbGxvd0NvbnN0cmFpbnRzID0gWydza2lwJywgJ2xpbWl0JywgJ29yZGVyJywgJ2NvdW50JywgJ2tleXMnLFxuICAgICAgJ2luY2x1ZGUnLCAnaW5jbHVkZUFsbCcsICdyZWRpcmVjdENsYXNzTmFtZUZvcktleScsICd3aGVyZSddO1xuXG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoYm9keSkpIHtcbiAgICAgIGlmIChhbGxvd0NvbnN0cmFpbnRzLmluZGV4T2Yoa2V5KSA9PT0gLTEpIHtcbiAgICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLklOVkFMSURfUVVFUlksIGBJbnZhbGlkIHBhcmFtZXRlciBmb3IgcXVlcnk6ICR7a2V5fWApO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBvcHRpb25zID0ge307XG4gICAgaWYgKGJvZHkuc2tpcCkge1xuICAgICAgb3B0aW9ucy5za2lwID0gTnVtYmVyKGJvZHkuc2tpcCk7XG4gICAgfVxuICAgIGlmIChib2R5LmxpbWl0IHx8IGJvZHkubGltaXQgPT09IDApIHtcbiAgICAgIG9wdGlvbnMubGltaXQgPSBOdW1iZXIoYm9keS5saW1pdCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9wdGlvbnMubGltaXQgPSBOdW1iZXIoMTAwKTtcbiAgICB9XG4gICAgaWYgKGJvZHkub3JkZXIpIHtcbiAgICAgIG9wdGlvbnMub3JkZXIgPSBTdHJpbmcoYm9keS5vcmRlcik7XG4gICAgfVxuICAgIGlmIChib2R5LmNvdW50KSB7XG4gICAgICBvcHRpb25zLmNvdW50ID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBib2R5LmtleXMgPT0gJ3N0cmluZycpIHtcbiAgICAgIG9wdGlvbnMua2V5cyA9IGJvZHkua2V5cztcbiAgICB9XG4gICAgaWYgKGJvZHkuaW5jbHVkZSkge1xuICAgICAgb3B0aW9ucy5pbmNsdWRlID0gU3RyaW5nKGJvZHkuaW5jbHVkZSk7XG4gICAgfVxuICAgIGlmIChib2R5LmluY2x1ZGVBbGwpIHtcbiAgICAgIG9wdGlvbnMuaW5jbHVkZUFsbCA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiBvcHRpb25zO1xuICB9XG5cbiAgbW91bnRSb3V0ZXMoKSB7XG4gICAgdGhpcy5yb3V0ZSgnR0VUJywgJy9jbGFzc2VzLzpjbGFzc05hbWUnLCAocmVxKSA9PiB7IHJldHVybiB0aGlzLmhhbmRsZUZpbmQocmVxKTsgfSk7XG4gICAgdGhpcy5yb3V0ZSgnR0VUJywgJy9jbGFzc2VzLzpjbGFzc05hbWUvOm9iamVjdElkJywgKHJlcSkgPT4geyByZXR1cm4gdGhpcy5oYW5kbGVHZXQocmVxKTsgfSk7XG4gICAgdGhpcy5yb3V0ZSgnUE9TVCcsICcvY2xhc3Nlcy86Y2xhc3NOYW1lJywgKHJlcSkgPT4geyByZXR1cm4gdGhpcy5oYW5kbGVDcmVhdGUocmVxKTsgfSk7XG4gICAgdGhpcy5yb3V0ZSgnUFVUJywgJy9jbGFzc2VzLzpjbGFzc05hbWUvOm9iamVjdElkJywgKHJlcSkgPT4geyByZXR1cm4gdGhpcy5oYW5kbGVVcGRhdGUocmVxKTsgfSk7XG4gICAgdGhpcy5yb3V0ZSgnREVMRVRFJywgICcvY2xhc3Nlcy86Y2xhc3NOYW1lLzpvYmplY3RJZCcsIChyZXEpID0+IHsgcmV0dXJuIHRoaXMuaGFuZGxlRGVsZXRlKHJlcSk7IH0pO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IENsYXNzZXNSb3V0ZXI7XG4iXX0=
186
+ var _default = exports.default = ClassesRouter;
187
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfUHJvbWlzZVJvdXRlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX3Jlc3QiLCJfbG9kYXNoIiwiX25vZGUiLCJfbWlkZGxld2FyZXMiLCJfRXJyb3IiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJBTExPV0VEX0dFVF9RVUVSWV9LRVlTIiwiQ2xhc3Nlc1JvdXRlciIsIlByb21pc2VSb3V0ZXIiLCJjbGFzc05hbWUiLCJyZXEiLCJwYXJhbXMiLCJoYW5kbGVGaW5kIiwiYm9keSIsIk9iamVjdCIsImFzc2lnbiIsIkpTT05Gcm9tUXVlcnkiLCJxdWVyeSIsIm9wdGlvbnMiLCJvcHRpb25zRnJvbUJvZHkiLCJjb25maWciLCJkZWZhdWx0TGltaXQiLCJtYXhMaW1pdCIsImxpbWl0IiwiTnVtYmVyIiwicmVkaXJlY3RDbGFzc05hbWVGb3JLZXkiLCJTdHJpbmciLCJ3aGVyZSIsIkpTT04iLCJwYXJzZSIsInJlc3QiLCJmaW5kIiwiYXV0aCIsImluZm8iLCJjbGllbnRTREsiLCJjb250ZXh0IiwidGhlbiIsInJlc3BvbnNlIiwiaGFuZGxlR2V0Iiwia2V5Iiwia2V5cyIsImluZGV4T2YiLCJQYXJzZSIsIkVycm9yIiwiSU5WQUxJRF9RVUVSWSIsImluY2x1ZGUiLCJleGNsdWRlS2V5cyIsInJlYWRQcmVmZXJlbmNlIiwiaW5jbHVkZVJlYWRQcmVmZXJlbmNlIiwic3VicXVlcnlSZWFkUHJlZmVyZW5jZSIsImdldCIsIm9iamVjdElkIiwicmVzdWx0cyIsImxlbmd0aCIsIk9CSkVDVF9OT1RfRk9VTkQiLCJzZXNzaW9uVG9rZW4iLCJ1c2VyIiwiaWQiLCJoYW5kbGVDcmVhdGUiLCJzdGFydHNXaXRoIiwiY3JlYXRlU2FuaXRpemVkRXJyb3IiLCJPUEVSQVRJT05fRk9SQklEREVOIiwiY3JlYXRlIiwiaGFuZGxlVXBkYXRlIiwidXBkYXRlIiwiaGFuZGxlRGVsZXRlIiwiZGVsIiwianNvbiIsInZhbHVlIiwiXyIsImVudHJpZXMiLCJhbGxvd0NvbnN0cmFpbnRzIiwic2tpcCIsIm9yZGVyIiwiY291bnQiLCJpbmNsdWRlQWxsIiwiaGludCIsImV4cGxhaW4iLCJjb21tZW50IiwibW91bnRSb3V0ZXMiLCJyb3V0ZSIsInByb21pc2VFbnN1cmVJZGVtcG90ZW5jeSIsImV4cG9ydHMiLCJfZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9Sb3V0ZXJzL0NsYXNzZXNSb3V0ZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFByb21pc2VSb3V0ZXIgZnJvbSAnLi4vUHJvbWlzZVJvdXRlcic7XG5pbXBvcnQgcmVzdCBmcm9tICcuLi9yZXN0JztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgUGFyc2UgZnJvbSAncGFyc2Uvbm9kZSc7XG5pbXBvcnQgeyBwcm9taXNlRW5zdXJlSWRlbXBvdGVuY3kgfSBmcm9tICcuLi9taWRkbGV3YXJlcyc7XG5pbXBvcnQgeyBjcmVhdGVTYW5pdGl6ZWRFcnJvciB9IGZyb20gJy4uL0Vycm9yJztcblxuY29uc3QgQUxMT1dFRF9HRVRfUVVFUllfS0VZUyA9IFtcbiAgJ2tleXMnLFxuICAnaW5jbHVkZScsXG4gICdleGNsdWRlS2V5cycsXG4gICdyZWFkUHJlZmVyZW5jZScsXG4gICdpbmNsdWRlUmVhZFByZWZlcmVuY2UnLFxuICAnc3VicXVlcnlSZWFkUHJlZmVyZW5jZScsXG5dO1xuXG5leHBvcnQgY2xhc3MgQ2xhc3Nlc1JvdXRlciBleHRlbmRzIFByb21pc2VSb3V0ZXIge1xuICBjbGFzc05hbWUocmVxKSB7XG4gICAgcmV0dXJuIHJlcS5wYXJhbXMuY2xhc3NOYW1lO1xuICB9XG5cbiAgaGFuZGxlRmluZChyZXEpIHtcbiAgICBjb25zdCBib2R5ID0gT2JqZWN0LmFzc2lnbihyZXEuYm9keSB8fCB7fSwgQ2xhc3Nlc1JvdXRlci5KU09ORnJvbVF1ZXJ5KHJlcS5xdWVyeSkpO1xuICAgIGNvbnN0IG9wdGlvbnMgPSBDbGFzc2VzUm91dGVyLm9wdGlvbnNGcm9tQm9keShib2R5LCByZXEuY29uZmlnLmRlZmF1bHRMaW1pdCk7XG4gICAgaWYgKHJlcS5jb25maWcubWF4TGltaXQgJiYgYm9keS5saW1pdCA+IHJlcS5jb25maWcubWF4TGltaXQpIHtcbiAgICAgIC8vIFNpbGVudGx5IHJlcGxhY2UgdGhlIGxpbWl0IG9uIHRoZSBxdWVyeSB3aXRoIHRoZSBtYXggY29uZmlndXJlZFxuICAgICAgb3B0aW9ucy5saW1pdCA9IE51bWJlcihyZXEuY29uZmlnLm1heExpbWl0KTtcbiAgICB9XG4gICAgaWYgKGJvZHkucmVkaXJlY3RDbGFzc05hbWVGb3JLZXkpIHtcbiAgICAgIG9wdGlvbnMucmVkaXJlY3RDbGFzc05hbWVGb3JLZXkgPSBTdHJpbmcoYm9keS5yZWRpcmVjdENsYXNzTmFtZUZvcktleSk7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgYm9keS53aGVyZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGJvZHkud2hlcmUgPSBKU09OLnBhcnNlKGJvZHkud2hlcmUpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdFxuICAgICAgLmZpbmQoXG4gICAgICAgIHJlcS5jb25maWcsXG4gICAgICAgIHJlcS5hdXRoLFxuICAgICAgICB0aGlzLmNsYXNzTmFtZShyZXEpLFxuICAgICAgICBib2R5LndoZXJlLFxuICAgICAgICBvcHRpb25zLFxuICAgICAgICByZXEuaW5mby5jbGllbnRTREssXG4gICAgICAgIHJlcS5pbmZvLmNvbnRleHRcbiAgICAgIClcbiAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgcmV0dXJuIHsgcmVzcG9uc2U6IHJlc3BvbnNlIH07XG4gICAgICB9KTtcbiAgfVxuXG4gIC8vIFJldHVybnMgYSBwcm9taXNlIGZvciBhIHtyZXNwb25zZX0gb2JqZWN0LlxuICBoYW5kbGVHZXQocmVxKSB7XG4gICAgY29uc3QgYm9keSA9IE9iamVjdC5hc3NpZ24ocmVxLmJvZHkgfHwge30sIENsYXNzZXNSb3V0ZXIuSlNPTkZyb21RdWVyeShyZXEucXVlcnkpKTtcbiAgICBjb25zdCBvcHRpb25zID0ge307XG5cbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhib2R5KSkge1xuICAgICAgaWYgKEFMTE9XRURfR0VUX1FVRVJZX0tFWVMuaW5kZXhPZihrZXkpID09PSAtMSkge1xuICAgICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuSU5WQUxJRF9RVUVSWSwgJ0ltcHJvcGVyIGVuY29kZSBvZiBwYXJhbWV0ZXInKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoYm9keS5rZXlzICE9IG51bGwpIHtcbiAgICAgIG9wdGlvbnMua2V5cyA9IFN0cmluZyhib2R5LmtleXMpO1xuICAgIH1cbiAgICBpZiAoYm9keS5pbmNsdWRlICE9IG51bGwpIHtcbiAgICAgIG9wdGlvbnMuaW5jbHVkZSA9IFN0cmluZyhib2R5LmluY2x1ZGUpO1xuICAgIH1cbiAgICBpZiAoYm9keS5leGNsdWRlS2V5cyAhPSBudWxsKSB7XG4gICAgICBvcHRpb25zLmV4Y2x1ZGVLZXlzID0gU3RyaW5nKGJvZHkuZXhjbHVkZUtleXMpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGJvZHkucmVhZFByZWZlcmVuY2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICBvcHRpb25zLnJlYWRQcmVmZXJlbmNlID0gYm9keS5yZWFkUHJlZmVyZW5jZTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBib2R5LmluY2x1ZGVSZWFkUHJlZmVyZW5jZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIG9wdGlvbnMuaW5jbHVkZVJlYWRQcmVmZXJlbmNlID0gYm9keS5pbmNsdWRlUmVhZFByZWZlcmVuY2U7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgYm9keS5zdWJxdWVyeVJlYWRQcmVmZXJlbmNlID09PSAnc3RyaW5nJykge1xuICAgICAgb3B0aW9ucy5zdWJxdWVyeVJlYWRQcmVmZXJlbmNlID0gYm9keS5zdWJxdWVyeVJlYWRQcmVmZXJlbmNlO1xuICAgIH1cblxuICAgIHJldHVybiByZXN0XG4gICAgICAuZ2V0KFxuICAgICAgICByZXEuY29uZmlnLFxuICAgICAgICByZXEuYXV0aCxcbiAgICAgICAgdGhpcy5jbGFzc05hbWUocmVxKSxcbiAgICAgICAgcmVxLnBhcmFtcy5vYmplY3RJZCxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgcmVxLmluZm8uY2xpZW50U0RLLFxuICAgICAgICByZXEuaW5mby5jb250ZXh0XG4gICAgICApXG4gICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgIGlmICghcmVzcG9uc2UucmVzdWx0cyB8fCByZXNwb25zZS5yZXN1bHRzLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLk9CSkVDVF9OT1RfRk9VTkQsICdPYmplY3Qgbm90IGZvdW5kLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuY2xhc3NOYW1lKHJlcSkgPT09ICdfVXNlcicpIHtcbiAgICAgICAgICBkZWxldGUgcmVzcG9uc2UucmVzdWx0c1swXS5zZXNzaW9uVG9rZW47XG5cbiAgICAgICAgICBjb25zdCB1c2VyID0gcmVzcG9uc2UucmVzdWx0c1swXTtcblxuICAgICAgICAgIGlmIChyZXEuYXV0aC51c2VyICYmIHVzZXIub2JqZWN0SWQgPT0gcmVxLmF1dGgudXNlci5pZCkge1xuICAgICAgICAgICAgLy8gRm9yY2UgdGhlIHNlc3Npb24gdG9rZW5cbiAgICAgICAgICAgIHJlc3BvbnNlLnJlc3VsdHNbMF0uc2Vzc2lvblRva2VuID0gcmVxLmluZm8uc2Vzc2lvblRva2VuO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyByZXNwb25zZTogcmVzcG9uc2UucmVzdWx0c1swXSB9O1xuICAgICAgfSk7XG4gIH1cblxuICBoYW5kbGVDcmVhdGUocmVxKSB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5jbGFzc05hbWUocmVxKSA9PT0gJ19Vc2VyJyAmJlxuICAgICAgdHlwZW9mIHJlcS5ib2R5Py5vYmplY3RJZCA9PT0gJ3N0cmluZycgJiZcbiAgICAgIHJlcS5ib2R5Lm9iamVjdElkLnN0YXJ0c1dpdGgoJ3JvbGU6JylcbiAgICApIHtcbiAgICAgIHRocm93IGNyZWF0ZVNhbml0aXplZEVycm9yKFBhcnNlLkVycm9yLk9QRVJBVElPTl9GT1JCSURERU4sICdJbnZhbGlkIG9iamVjdCBJRC4nLCByZXEuY29uZmlnKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3QuY3JlYXRlKFxuICAgICAgcmVxLmNvbmZpZyxcbiAgICAgIHJlcS5hdXRoLFxuICAgICAgdGhpcy5jbGFzc05hbWUocmVxKSxcbiAgICAgIHJlcS5ib2R5IHx8IHt9LFxuICAgICAgcmVxLmluZm8uY2xpZW50U0RLLFxuICAgICAgcmVxLmluZm8uY29udGV4dFxuICAgICk7XG4gIH1cblxuICBoYW5kbGVVcGRhdGUocmVxKSB7XG4gICAgY29uc3Qgd2hlcmUgPSB7IG9iamVjdElkOiByZXEucGFyYW1zLm9iamVjdElkIH07XG4gICAgcmV0dXJuIHJlc3QudXBkYXRlKFxuICAgICAgcmVxLmNvbmZpZyxcbiAgICAgIHJlcS5hdXRoLFxuICAgICAgdGhpcy5jbGFzc05hbWUocmVxKSxcbiAgICAgIHdoZXJlLFxuICAgICAgcmVxLmJvZHkgfHwge30sXG4gICAgICByZXEuaW5mby5jbGllbnRTREssXG4gICAgICByZXEuaW5mby5jb250ZXh0XG4gICAgKTtcbiAgfVxuXG4gIGhhbmRsZURlbGV0ZShyZXEpIHtcbiAgICByZXR1cm4gcmVzdFxuICAgICAgLmRlbChyZXEuY29uZmlnLCByZXEuYXV0aCwgdGhpcy5jbGFzc05hbWUocmVxKSwgcmVxLnBhcmFtcy5vYmplY3RJZCwgcmVxLmluZm8uY29udGV4dClcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIHsgcmVzcG9uc2U6IHt9IH07XG4gICAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBKU09ORnJvbVF1ZXJ5KHF1ZXJ5KSB7XG4gICAgY29uc3QganNvbiA9IHt9O1xuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIF8uZW50cmllcyhxdWVyeSkpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGpzb25ba2V5XSA9IEpTT04ucGFyc2UodmFsdWUpO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIGpzb25ba2V5XSA9IHZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBvcHRpb25zRnJvbUJvZHkoYm9keSwgZGVmYXVsdExpbWl0KSB7XG4gICAgY29uc3QgYWxsb3dDb25zdHJhaW50cyA9IFtcbiAgICAgICdza2lwJyxcbiAgICAgICdsaW1pdCcsXG4gICAgICAnb3JkZXInLFxuICAgICAgJ2NvdW50JyxcbiAgICAgICdrZXlzJyxcbiAgICAgICdleGNsdWRlS2V5cycsXG4gICAgICAnaW5jbHVkZScsXG4gICAgICAnaW5jbHVkZUFsbCcsXG4gICAgICAncmVkaXJlY3RDbGFzc05hbWVGb3JLZXknLFxuICAgICAgJ3doZXJlJyxcbiAgICAgICdyZWFkUHJlZmVyZW5jZScsXG4gICAgICAnaW5jbHVkZVJlYWRQcmVmZXJlbmNlJyxcbiAgICAgICdzdWJxdWVyeVJlYWRQcmVmZXJlbmNlJyxcbiAgICAgICdoaW50JyxcbiAgICAgICdleHBsYWluJyxcbiAgICAgICdjb21tZW50JyxcbiAgICBdO1xuXG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoYm9keSkpIHtcbiAgICAgIGlmIChhbGxvd0NvbnN0cmFpbnRzLmluZGV4T2Yoa2V5KSA9PT0gLTEpIHtcbiAgICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLklOVkFMSURfUVVFUlksIGBJbnZhbGlkIHBhcmFtZXRlciBmb3IgcXVlcnk6ICR7a2V5fWApO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBvcHRpb25zID0ge307XG4gICAgaWYgKGJvZHkuc2tpcCkge1xuICAgICAgb3B0aW9ucy5za2lwID0gTnVtYmVyKGJvZHkuc2tpcCk7XG4gICAgfVxuICAgIGlmIChib2R5LmxpbWl0IHx8IGJvZHkubGltaXQgPT09IDApIHtcbiAgICAgIG9wdGlvbnMubGltaXQgPSBOdW1iZXIoYm9keS5saW1pdCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9wdGlvbnMubGltaXQgPSBOdW1iZXIoZGVmYXVsdExpbWl0KTtcbiAgICB9XG4gICAgaWYgKGJvZHkub3JkZXIpIHtcbiAgICAgIG9wdGlvbnMub3JkZXIgPSBTdHJpbmcoYm9keS5vcmRlcik7XG4gICAgfVxuICAgIGlmIChib2R5LmNvdW50KSB7XG4gICAgICBvcHRpb25zLmNvdW50ID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKGJvZHkua2V5cyAhPSBudWxsKSB7XG4gICAgICBvcHRpb25zLmtleXMgPSBTdHJpbmcoYm9keS5rZXlzKTtcbiAgICB9XG4gICAgaWYgKGJvZHkuZXhjbHVkZUtleXMgIT0gbnVsbCkge1xuICAgICAgb3B0aW9ucy5leGNsdWRlS2V5cyA9IFN0cmluZyhib2R5LmV4Y2x1ZGVLZXlzKTtcbiAgICB9XG4gICAgaWYgKGJvZHkuaW5jbHVkZSAhPSBudWxsKSB7XG4gICAgICBvcHRpb25zLmluY2x1ZGUgPSBTdHJpbmcoYm9keS5pbmNsdWRlKTtcbiAgICB9XG4gICAgaWYgKGJvZHkuaW5jbHVkZUFsbCkge1xuICAgICAgb3B0aW9ucy5pbmNsdWRlQWxsID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBib2R5LnJlYWRQcmVmZXJlbmNlID09PSAnc3RyaW5nJykge1xuICAgICAgb3B0aW9ucy5yZWFkUHJlZmVyZW5jZSA9IGJvZHkucmVhZFByZWZlcmVuY2U7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgYm9keS5pbmNsdWRlUmVhZFByZWZlcmVuY2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICBvcHRpb25zLmluY2x1ZGVSZWFkUHJlZmVyZW5jZSA9IGJvZHkuaW5jbHVkZVJlYWRQcmVmZXJlbmNlO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGJvZHkuc3VicXVlcnlSZWFkUHJlZmVyZW5jZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIG9wdGlvbnMuc3VicXVlcnlSZWFkUHJlZmVyZW5jZSA9IGJvZHkuc3VicXVlcnlSZWFkUHJlZmVyZW5jZTtcbiAgICB9XG4gICAgaWYgKGJvZHkuaGludCAmJiAodHlwZW9mIGJvZHkuaGludCA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIGJvZHkuaGludCA9PT0gJ29iamVjdCcpKSB7XG4gICAgICBvcHRpb25zLmhpbnQgPSBib2R5LmhpbnQ7XG4gICAgfVxuICAgIGlmIChib2R5LmV4cGxhaW4pIHtcbiAgICAgIG9wdGlvbnMuZXhwbGFpbiA9IGJvZHkuZXhwbGFpbjtcbiAgICB9XG4gICAgaWYgKGJvZHkuY29tbWVudCAmJiB0eXBlb2YgYm9keS5jb21tZW50ID09PSAnc3RyaW5nJykge1xuICAgICAgb3B0aW9ucy5jb21tZW50ID0gYm9keS5jb21tZW50O1xuICAgIH1cbiAgICByZXR1cm4gb3B0aW9ucztcbiAgfVxuXG4gIG1vdW50Um91dGVzKCkge1xuICAgIHRoaXMucm91dGUoJ0dFVCcsICcvY2xhc3Nlcy86Y2xhc3NOYW1lJywgcmVxID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZUZpbmQocmVxKTtcbiAgICB9KTtcbiAgICB0aGlzLnJvdXRlKCdHRVQnLCAnL2NsYXNzZXMvOmNsYXNzTmFtZS86b2JqZWN0SWQnLCByZXEgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlR2V0KHJlcSk7XG4gICAgfSk7XG4gICAgdGhpcy5yb3V0ZSgnUE9TVCcsICcvY2xhc3Nlcy86Y2xhc3NOYW1lJywgcHJvbWlzZUVuc3VyZUlkZW1wb3RlbmN5LCByZXEgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlQ3JlYXRlKHJlcSk7XG4gICAgfSk7XG4gICAgdGhpcy5yb3V0ZSgnUFVUJywgJy9jbGFzc2VzLzpjbGFzc05hbWUvOm9iamVjdElkJywgcHJvbWlzZUVuc3VyZUlkZW1wb3RlbmN5LCByZXEgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlVXBkYXRlKHJlcSk7XG4gICAgfSk7XG4gICAgdGhpcy5yb3V0ZSgnREVMRVRFJywgJy9jbGFzc2VzLzpjbGFzc05hbWUvOm9iamVjdElkJywgcmVxID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZURlbGV0ZShyZXEpO1xuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IENsYXNzZXNSb3V0ZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLGNBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLEtBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLE9BQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLEtBQUEsR0FBQUosc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFJLFlBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLE1BQUEsR0FBQUwsT0FBQTtBQUFnRCxTQUFBRCx1QkFBQU8sQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQUVoRCxNQUFNRyxzQkFBc0IsR0FBRyxDQUM3QixNQUFNLEVBQ04sU0FBUyxFQUNULGFBQWEsRUFDYixnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLHdCQUF3QixDQUN6QjtBQUVNLE1BQU1DLGFBQWEsU0FBU0Msc0JBQWEsQ0FBQztFQUMvQ0MsU0FBU0EsQ0FBQ0MsR0FBRyxFQUFFO0lBQ2IsT0FBT0EsR0FBRyxDQUFDQyxNQUFNLENBQUNGLFNBQVM7RUFDN0I7RUFFQUcsVUFBVUEsQ0FBQ0YsR0FBRyxFQUFFO0lBQ2QsTUFBTUcsSUFBSSxHQUFHQyxNQUFNLENBQUNDLE1BQU0sQ0FBQ0wsR0FBRyxDQUFDRyxJQUFJLElBQUksQ0FBQyxDQUFDLEVBQUVOLGFBQWEsQ0FBQ1MsYUFBYSxDQUFDTixHQUFHLENBQUNPLEtBQUssQ0FBQyxDQUFDO0lBQ2xGLE1BQU1DLE9BQU8sR0FBR1gsYUFBYSxDQUFDWSxlQUFlLENBQUNOLElBQUksRUFBRUgsR0FBRyxDQUFDVSxNQUFNLENBQUNDLFlBQVksQ0FBQztJQUM1RSxJQUFJWCxHQUFHLENBQUNVLE1BQU0sQ0FBQ0UsUUFBUSxJQUFJVCxJQUFJLENBQUNVLEtBQUssR0FBR2IsR0FBRyxDQUFDVSxNQUFNLENBQUNFLFFBQVEsRUFBRTtNQUMzRDtNQUNBSixPQUFPLENBQUNLLEtBQUssR0FBR0MsTUFBTSxDQUFDZCxHQUFHLENBQUNVLE1BQU0sQ0FBQ0UsUUFBUSxDQUFDO0lBQzdDO0lBQ0EsSUFBSVQsSUFBSSxDQUFDWSx1QkFBdUIsRUFBRTtNQUNoQ1AsT0FBTyxDQUFDTyx1QkFBdUIsR0FBR0MsTUFBTSxDQUFDYixJQUFJLENBQUNZLHVCQUF1QixDQUFDO0lBQ3hFO0lBQ0EsSUFBSSxPQUFPWixJQUFJLENBQUNjLEtBQUssS0FBSyxRQUFRLEVBQUU7TUFDbENkLElBQUksQ0FBQ2MsS0FBSyxHQUFHQyxJQUFJLENBQUNDLEtBQUssQ0FBQ2hCLElBQUksQ0FBQ2MsS0FBSyxDQUFDO0lBQ3JDO0lBQ0EsT0FBT0csYUFBSSxDQUNSQyxJQUFJLENBQ0hyQixHQUFHLENBQUNVLE1BQU0sRUFDVlYsR0FBRyxDQUFDc0IsSUFBSSxFQUNSLElBQUksQ0FBQ3ZCLFNBQVMsQ0FBQ0MsR0FBRyxDQUFDLEVBQ25CRyxJQUFJLENBQUNjLEtBQUssRUFDVlQsT0FBTyxFQUNQUixHQUFHLENBQUN1QixJQUFJLENBQUNDLFNBQVMsRUFDbEJ4QixHQUFHLENBQUN1QixJQUFJLENBQUNFLE9BQ1gsQ0FBQyxDQUNBQyxJQUFJLENBQUNDLFFBQVEsSUFBSTtNQUNoQixPQUFPO1FBQUVBLFFBQVEsRUFBRUE7TUFBUyxDQUFDO0lBQy9CLENBQUMsQ0FBQztFQUNOOztFQUVBO0VBQ0FDLFNBQVNBLENBQUM1QixHQUFHLEVBQUU7SUFDYixNQUFNRyxJQUFJLEdBQUdDLE1BQU0sQ0FBQ0MsTUFBTSxDQUFDTCxHQUFHLENBQUNHLElBQUksSUFBSSxDQUFDLENBQUMsRUFBRU4sYUFBYSxDQUFDUyxhQUFhLENBQUNOLEdBQUcsQ0FBQ08sS0FBSyxDQUFDLENBQUM7SUFDbEYsTUFBTUMsT0FBTyxHQUFHLENBQUMsQ0FBQztJQUVsQixLQUFLLE1BQU1xQixHQUFHLElBQUl6QixNQUFNLENBQUMwQixJQUFJLENBQUMzQixJQUFJLENBQUMsRUFBRTtNQUNuQyxJQUFJUCxzQkFBc0IsQ0FBQ21DLE9BQU8sQ0FBQ0YsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7UUFDOUMsTUFBTSxJQUFJRyxhQUFLLENBQUNDLEtBQUssQ0FBQ0QsYUFBSyxDQUFDQyxLQUFLLENBQUNDLGFBQWEsRUFBRSw4QkFBOEIsQ0FBQztNQUNsRjtJQUNGO0lBRUEsSUFBSS9CLElBQUksQ0FBQzJCLElBQUksSUFBSSxJQUFJLEVBQUU7TUFDckJ0QixPQUFPLENBQUNzQixJQUFJLEdBQUdkLE1BQU0sQ0FBQ2IsSUFBSSxDQUFDMkIsSUFBSSxDQUFDO0lBQ2xDO0lBQ0EsSUFBSTNCLElBQUksQ0FBQ2dDLE9BQU8sSUFBSSxJQUFJLEVBQUU7TUFDeEIzQixPQUFPLENBQUMyQixPQUFPLEdBQUduQixNQUFNLENBQUNiLElBQUksQ0FBQ2dDLE9BQU8sQ0FBQztJQUN4QztJQUNBLElBQUloQyxJQUFJLENBQUNpQyxXQUFXLElBQUksSUFBSSxFQUFFO01BQzVCNUIsT0FBTyxDQUFDNEIsV0FBVyxHQUFHcEIsTUFBTSxDQUFDYixJQUFJLENBQUNpQyxXQUFXLENBQUM7SUFDaEQ7SUFDQSxJQUFJLE9BQU9qQyxJQUFJLENBQUNrQyxjQUFjLEtBQUssUUFBUSxFQUFFO01BQzNDN0IsT0FBTyxDQUFDNkIsY0FBYyxHQUFHbEMsSUFBSSxDQUFDa0MsY0FBYztJQUM5QztJQUNBLElBQUksT0FBT2xDLElBQUksQ0FBQ21DLHFCQUFxQixLQUFLLFFBQVEsRUFBRTtNQUNsRDlCLE9BQU8sQ0FBQzhCLHFCQUFxQixHQUFHbkMsSUFBSSxDQUFDbUMscUJBQXFCO0lBQzVEO0lBQ0EsSUFBSSxPQUFPbkMsSUFBSSxDQUFDb0Msc0JBQXNCLEtBQUssUUFBUSxFQUFFO01BQ25EL0IsT0FBTyxDQUFDK0Isc0JBQXNCLEdBQUdwQyxJQUFJLENBQUNvQyxzQkFBc0I7SUFDOUQ7SUFFQSxPQUFPbkIsYUFBSSxDQUNSb0IsR0FBRyxDQUNGeEMsR0FBRyxDQUFDVSxNQUFNLEVBQ1ZWLEdBQUcsQ0FBQ3NCLElBQUksRUFDUixJQUFJLENBQUN2QixTQUFTLENBQUNDLEdBQUcsQ0FBQyxFQUNuQkEsR0FBRyxDQUFDQyxNQUFNLENBQUN3QyxRQUFRLEVBQ25CakMsT0FBTyxFQUNQUixHQUFHLENBQUN1QixJQUFJLENBQUNDLFNBQVMsRUFDbEJ4QixHQUFHLENBQUN1QixJQUFJLENBQUNFLE9BQ1gsQ0FBQyxDQUNBQyxJQUFJLENBQUNDLFFBQVEsSUFBSTtNQUNoQixJQUFJLENBQUNBLFFBQVEsQ0FBQ2UsT0FBTyxJQUFJZixRQUFRLENBQUNlLE9BQU8sQ0FBQ0MsTUFBTSxJQUFJLENBQUMsRUFBRTtRQUNyRCxNQUFNLElBQUlYLGFBQUssQ0FBQ0MsS0FBSyxDQUFDRCxhQUFLLENBQUNDLEtBQUssQ0FBQ1csZ0JBQWdCLEVBQUUsbUJBQW1CLENBQUM7TUFDMUU7TUFFQSxJQUFJLElBQUksQ0FBQzdDLFNBQVMsQ0FBQ0MsR0FBRyxDQUFDLEtBQUssT0FBTyxFQUFFO1FBQ25DLE9BQU8yQixRQUFRLENBQUNlLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQ0csWUFBWTtRQUV2QyxNQUFNQyxJQUFJLEdBQUduQixRQUFRLENBQUNlLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFFaEMsSUFBSTFDLEdBQUcsQ0FBQ3NCLElBQUksQ0FBQ3dCLElBQUksSUFBSUEsSUFBSSxDQUFDTCxRQUFRLElBQUl6QyxHQUFHLENBQUNzQixJQUFJLENBQUN3QixJQUFJLENBQUNDLEVBQUUsRUFBRTtVQUN0RDtVQUNBcEIsUUFBUSxDQUFDZSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUNHLFlBQVksR0FBRzdDLEdBQUcsQ0FBQ3VCLElBQUksQ0FBQ3NCLFlBQVk7UUFDMUQ7TUFDRjtNQUNBLE9BQU87UUFBRWxCLFFBQVEsRUFBRUEsUUFBUSxDQUFDZSxPQUFPLENBQUMsQ0FBQztNQUFFLENBQUM7SUFDMUMsQ0FBQyxDQUFDO0VBQ047RUFFQU0sWUFBWUEsQ0FBQ2hELEdBQUcsRUFBRTtJQUNoQixJQUNFLElBQUksQ0FBQ0QsU0FBUyxDQUFDQyxHQUFHLENBQUMsS0FBSyxPQUFPLElBQy9CLE9BQU9BLEdBQUcsQ0FBQ0csSUFBSSxFQUFFc0MsUUFBUSxLQUFLLFFBQVEsSUFDdEN6QyxHQUFHLENBQUNHLElBQUksQ0FBQ3NDLFFBQVEsQ0FBQ1EsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUNyQztNQUNBLE1BQU0sSUFBQUMsMkJBQW9CLEVBQUNsQixhQUFLLENBQUNDLEtBQUssQ0FBQ2tCLG1CQUFtQixFQUFFLG9CQUFvQixFQUFFbkQsR0FBRyxDQUFDVSxNQUFNLENBQUM7SUFDL0Y7SUFDQSxPQUFPVSxhQUFJLENBQUNnQyxNQUFNLENBQ2hCcEQsR0FBRyxDQUFDVSxNQUFNLEVBQ1ZWLEdBQUcsQ0FBQ3NCLElBQUksRUFDUixJQUFJLENBQUN2QixTQUFTLENBQUNDLEdBQUcsQ0FBQyxFQUNuQkEsR0FBRyxDQUFDRyxJQUFJLElBQUksQ0FBQyxDQUFDLEVBQ2RILEdBQUcsQ0FBQ3VCLElBQUksQ0FBQ0MsU0FBUyxFQUNsQnhCLEdBQUcsQ0FBQ3VCLElBQUksQ0FBQ0UsT0FDWCxDQUFDO0VBQ0g7RUFFQTRCLFlBQVlBLENBQUNyRCxHQUFHLEVBQUU7SUFDaEIsTUFBTWlCLEtBQUssR0FBRztNQUFFd0IsUUFBUSxFQUFFekMsR0FBRyxDQUFDQyxNQUFNLENBQUN3QztJQUFTLENBQUM7SUFDL0MsT0FBT3JCLGFBQUksQ0FBQ2tDLE1BQU0sQ0FDaEJ0RCxHQUFHLENBQUNVLE1BQU0sRUFDVlYsR0FBRyxDQUFDc0IsSUFBSSxFQUNSLElBQUksQ0FBQ3ZCLFNBQVMsQ0FBQ0MsR0FBRyxDQUFDLEVBQ25CaUIsS0FBSyxFQUNMakIsR0FBRyxDQUFDRyxJQUFJLElBQUksQ0FBQyxDQUFDLEVBQ2RILEdBQUcsQ0FBQ3VCLElBQUksQ0FBQ0MsU0FBUyxFQUNsQnhCLEdBQUcsQ0FBQ3VCLElBQUksQ0FBQ0UsT0FDWCxDQUFDO0VBQ0g7RUFFQThCLFlBQVlBLENBQUN2RCxHQUFHLEVBQUU7SUFDaEIsT0FBT29CLGFBQUksQ0FDUm9DLEdBQUcsQ0FBQ3hELEdBQUcsQ0FBQ1UsTUFBTSxFQUFFVixHQUFHLENBQUNzQixJQUFJLEVBQUUsSUFBSSxDQUFDdkIsU0FBUyxDQUFDQyxHQUFHLENBQUMsRUFBRUEsR0FBRyxDQUFDQyxNQUFNLENBQUN3QyxRQUFRLEVBQUV6QyxHQUFHLENBQUN1QixJQUFJLENBQUNFLE9BQU8sQ0FBQyxDQUNyRkMsSUFBSSxDQUFDLE1BQU07TUFDVixPQUFPO1FBQUVDLFFBQVEsRUFBRSxDQUFDO01BQUUsQ0FBQztJQUN6QixDQUFDLENBQUM7RUFDTjtFQUVBLE9BQU9yQixhQUFhQSxDQUFDQyxLQUFLLEVBQUU7SUFDMUIsTUFBTWtELElBQUksR0FBRyxDQUFDLENBQUM7SUFDZixLQUFLLE1BQU0sQ0FBQzVCLEdBQUcsRUFBRTZCLEtBQUssQ0FBQyxJQUFJQyxlQUFDLENBQUNDLE9BQU8sQ0FBQ3JELEtBQUssQ0FBQyxFQUFFO01BQzNDLElBQUk7UUFDRmtELElBQUksQ0FBQzVCLEdBQUcsQ0FBQyxHQUFHWCxJQUFJLENBQUNDLEtBQUssQ0FBQ3VDLEtBQUssQ0FBQztNQUMvQixDQUFDLENBQUMsTUFBTTtRQUNORCxJQUFJLENBQUM1QixHQUFHLENBQUMsR0FBRzZCLEtBQUs7TUFDbkI7SUFDRjtJQUNBLE9BQU9ELElBQUk7RUFDYjtFQUVBLE9BQU9oRCxlQUFlQSxDQUFDTixJQUFJLEVBQUVRLFlBQVksRUFBRTtJQUN6QyxNQUFNa0QsZ0JBQWdCLEdBQUcsQ0FDdkIsTUFBTSxFQUNOLE9BQU8sRUFDUCxPQUFPLEVBQ1AsT0FBTyxFQUNQLE1BQU0sRUFDTixhQUFhLEVBQ2IsU0FBUyxFQUNULFlBQVksRUFDWix5QkFBeUIsRUFDekIsT0FBTyxFQUNQLGdCQUFnQixFQUNoQix1QkFBdUIsRUFDdkIsd0JBQXdCLEVBQ3hCLE1BQU0sRUFDTixTQUFTLEVBQ1QsU0FBUyxDQUNWO0lBRUQsS0FBSyxNQUFNaEMsR0FBRyxJQUFJekIsTUFBTSxDQUFDMEIsSUFBSSxDQUFDM0IsSUFBSSxDQUFDLEVBQUU7TUFDbkMsSUFBSTBELGdCQUFnQixDQUFDOUIsT0FBTyxDQUFDRixHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtRQUN4QyxNQUFNLElBQUlHLGFBQUssQ0FBQ0MsS0FBSyxDQUFDRCxhQUFLLENBQUNDLEtBQUssQ0FBQ0MsYUFBYSxFQUFFLGdDQUFnQ0wsR0FBRyxFQUFFLENBQUM7TUFDekY7SUFDRjtJQUNBLE1BQU1yQixPQUFPLEdBQUcsQ0FBQyxDQUFDO0lBQ2xCLElBQUlMLElBQUksQ0FBQzJELElBQUksRUFBRTtNQUNidEQsT0FBTyxDQUFDc0QsSUFBSSxHQUFHaEQsTUFBTSxDQUFDWCxJQUFJLENBQUMyRCxJQUFJLENBQUM7SUFDbEM7SUFDQSxJQUFJM0QsSUFBSSxDQUFDVSxLQUFLLElBQUlWLElBQUksQ0FBQ1UsS0FBSyxLQUFLLENBQUMsRUFBRTtNQUNsQ0wsT0FBTyxDQUFDSyxLQUFLLEdBQUdDLE1BQU0sQ0FBQ1gsSUFBSSxDQUFDVSxLQUFLLENBQUM7SUFDcEMsQ0FBQyxNQUFNO01BQ0xMLE9BQU8sQ0FBQ0ssS0FBSyxHQUFHQyxNQUFNLENBQUNILFlBQVksQ0FBQztJQUN0QztJQUNBLElBQUlSLElBQUksQ0FBQzRELEtBQUssRUFBRTtNQUNkdkQsT0FBTyxDQUFDdUQsS0FBSyxHQUFHL0MsTUFBTSxDQUFDYixJQUFJLENBQUM0RCxLQUFLLENBQUM7SUFDcEM7SUFDQSxJQUFJNUQsSUFBSSxDQUFDNkQsS0FBSyxFQUFFO01BQ2R4RCxPQUFPLENBQUN3RCxLQUFLLEdBQUcsSUFBSTtJQUN0QjtJQUNBLElBQUk3RCxJQUFJLENBQUMyQixJQUFJLElBQUksSUFBSSxFQUFFO01BQ3JCdEIsT0FBTyxDQUFDc0IsSUFBSSxHQUFHZCxNQUFNLENBQUNiLElBQUksQ0FBQzJCLElBQUksQ0FBQztJQUNsQztJQUNBLElBQUkzQixJQUFJLENBQUNpQyxXQUFXLElBQUksSUFBSSxFQUFFO01BQzVCNUIsT0FBTyxDQUFDNEIsV0FBVyxHQUFHcEIsTUFBTSxDQUFDYixJQUFJLENBQUNpQyxXQUFXLENBQUM7SUFDaEQ7SUFDQSxJQUFJakMsSUFBSSxDQUFDZ0MsT0FBTyxJQUFJLElBQUksRUFBRTtNQUN4QjNCLE9BQU8sQ0FBQzJCLE9BQU8sR0FBR25CLE1BQU0sQ0FBQ2IsSUFBSSxDQUFDZ0MsT0FBTyxDQUFDO0lBQ3hDO0lBQ0EsSUFBSWhDLElBQUksQ0FBQzhELFVBQVUsRUFBRTtNQUNuQnpELE9BQU8sQ0FBQ3lELFVBQVUsR0FBRyxJQUFJO0lBQzNCO0lBQ0EsSUFBSSxPQUFPOUQsSUFBSSxDQUFDa0MsY0FBYyxLQUFLLFFBQVEsRUFBRTtNQUMzQzdCLE9BQU8sQ0FBQzZCLGNBQWMsR0FBR2xDLElBQUksQ0FBQ2tDLGNBQWM7SUFDOUM7SUFDQSxJQUFJLE9BQU9sQyxJQUFJLENBQUNtQyxxQkFBcUIsS0FBSyxRQUFRLEVBQUU7TUFDbEQ5QixPQUFPLENBQUM4QixxQkFBcUIsR0FBR25DLElBQUksQ0FBQ21DLHFCQUFxQjtJQUM1RDtJQUNBLElBQUksT0FBT25DLElBQUksQ0FBQ29DLHNCQUFzQixLQUFLLFFBQVEsRUFBRTtNQUNuRC9CLE9BQU8sQ0FBQytCLHNCQUFzQixHQUFHcEMsSUFBSSxDQUFDb0Msc0JBQXNCO0lBQzlEO0lBQ0EsSUFBSXBDLElBQUksQ0FBQytELElBQUksS0FBSyxPQUFPL0QsSUFBSSxDQUFDK0QsSUFBSSxLQUFLLFFBQVEsSUFBSSxPQUFPL0QsSUFBSSxDQUFDK0QsSUFBSSxLQUFLLFFBQVEsQ0FBQyxFQUFFO01BQ2pGMUQsT0FBTyxDQUFDMEQsSUFBSSxHQUFHL0QsSUFBSSxDQUFDK0QsSUFBSTtJQUMxQjtJQUNBLElBQUkvRCxJQUFJLENBQUNnRSxPQUFPLEVBQUU7TUFDaEIzRCxPQUFPLENBQUMyRCxPQUFPLEdBQUdoRSxJQUFJLENBQUNnRSxPQUFPO0lBQ2hDO0lBQ0EsSUFBSWhFLElBQUksQ0FBQ2lFLE9BQU8sSUFBSSxPQUFPakUsSUFBSSxDQUFDaUUsT0FBTyxLQUFLLFFBQVEsRUFBRTtNQUNwRDVELE9BQU8sQ0FBQzRELE9BQU8sR0FBR2pFLElBQUksQ0FBQ2lFLE9BQU87SUFDaEM7SUFDQSxPQUFPNUQsT0FBTztFQUNoQjtFQUVBNkQsV0FBV0EsQ0FBQSxFQUFHO0lBQ1osSUFBSSxDQUFDQyxLQUFLLENBQUMsS0FBSyxFQUFFLHFCQUFxQixFQUFFdEUsR0FBRyxJQUFJO01BQzlDLE9BQU8sSUFBSSxDQUFDRSxVQUFVLENBQUNGLEdBQUcsQ0FBQztJQUM3QixDQUFDLENBQUM7SUFDRixJQUFJLENBQUNzRSxLQUFLLENBQUMsS0FBSyxFQUFFLCtCQUErQixFQUFFdEUsR0FBRyxJQUFJO01BQ3hELE9BQU8sSUFBSSxDQUFDNEIsU0FBUyxDQUFDNUIsR0FBRyxDQUFDO0lBQzVCLENBQUMsQ0FBQztJQUNGLElBQUksQ0FBQ3NFLEtBQUssQ0FBQyxNQUFNLEVBQUUscUJBQXFCLEVBQUVDLHFDQUF3QixFQUFFdkUsR0FBRyxJQUFJO01BQ3pFLE9BQU8sSUFBSSxDQUFDZ0QsWUFBWSxDQUFDaEQsR0FBRyxDQUFDO0lBQy9CLENBQUMsQ0FBQztJQUNGLElBQUksQ0FBQ3NFLEtBQUssQ0FBQyxLQUFLLEVBQUUsK0JBQStCLEVBQUVDLHFDQUF3QixFQUFFdkUsR0FBRyxJQUFJO01BQ2xGLE9BQU8sSUFBSSxDQUFDcUQsWUFBWSxDQUFDckQsR0FBRyxDQUFDO0lBQy9CLENBQUMsQ0FBQztJQUNGLElBQUksQ0FBQ3NFLEtBQUssQ0FBQyxRQUFRLEVBQUUsK0JBQStCLEVBQUV0RSxHQUFHLElBQUk7TUFDM0QsT0FBTyxJQUFJLENBQUN1RCxZQUFZLENBQUN2RCxHQUFHLENBQUM7SUFDL0IsQ0FBQyxDQUFDO0VBQ0o7QUFDRjtBQUFDd0UsT0FBQSxDQUFBM0UsYUFBQSxHQUFBQSxhQUFBO0FBQUEsSUFBQTRFLFFBQUEsR0FBQUQsT0FBQSxDQUFBN0UsT0FBQSxHQUVjRSxhQUFhIiwiaWdub3JlTGlzdCI6W119
@@ -1,42 +1,28 @@
1
- 'use strict';
1
+ "use strict";
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.CloudCodeRouter = 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
- var _rest = require('../rest');
17
-
18
- var _rest2 = _interopRequireDefault(_rest);
19
-
20
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
-
6
+ exports.CloudCodeRouter = void 0;
7
+ var _PromiseRouter = _interopRequireDefault(require("../PromiseRouter"));
8
+ var _node = _interopRequireDefault(require("parse/node"));
9
+ var _rest = _interopRequireDefault(require("../rest"));
10
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
22
11
  const triggers = require('../triggers');
23
12
  const middleware = require('../middlewares');
24
-
25
13
  function formatJobSchedule(job_schedule) {
26
14
  if (typeof job_schedule.startAfter === 'undefined') {
27
15
  job_schedule.startAfter = new Date().toISOString();
28
16
  }
29
17
  return job_schedule;
30
18
  }
31
-
32
19
  function validateJobSchedule(config, job_schedule) {
33
20
  const jobs = triggers.getJobs(config.applicationId) || {};
34
21
  if (job_schedule.jobName && !jobs[job_schedule.jobName]) {
35
- throw new _node2.default.Error(_node2.default.Error.INTERNAL_SERVER_ERROR, 'Cannot Schedule a job that is not deployed');
22
+ throw new _node.default.Error(_node.default.Error.INTERNAL_SERVER_ERROR, 'Cannot Schedule a job that is not deployed');
36
23
  }
37
24
  }
38
-
39
- class CloudCodeRouter extends _PromiseRouter2.default {
25
+ class CloudCodeRouter extends _PromiseRouter.default {
40
26
  mountRoutes() {
41
27
  this.route('GET', '/cloud_code/jobs', middleware.promiseEnforceMasterKeyAccess, CloudCodeRouter.getJobs);
42
28
  this.route('GET', '/cloud_code/jobs/data', middleware.promiseEnforceMasterKeyAccess, CloudCodeRouter.getJobsData);
@@ -44,19 +30,17 @@ class CloudCodeRouter extends _PromiseRouter2.default {
44
30
  this.route('PUT', '/cloud_code/jobs/:objectId', middleware.promiseEnforceMasterKeyAccess, CloudCodeRouter.editJob);
45
31
  this.route('DELETE', '/cloud_code/jobs/:objectId', middleware.promiseEnforceMasterKeyAccess, CloudCodeRouter.deleteJob);
46
32
  }
47
-
48
33
  static getJobs(req) {
49
- return _rest2.default.find(req.config, req.auth, '_JobSchedule', {}, {}).then(scheduledJobs => {
34
+ return _rest.default.find(req.config, req.auth, '_JobSchedule', {}, {}).then(scheduledJobs => {
50
35
  return {
51
36
  response: scheduledJobs.results
52
37
  };
53
38
  });
54
39
  }
55
-
56
40
  static getJobsData(req) {
57
41
  const config = req.config;
58
42
  const jobs = triggers.getJobs(config.applicationId) || {};
59
- return _rest2.default.find(req.config, req.auth, '_JobSchedule', {}, {}).then(scheduledJobs => {
43
+ return _rest.default.find(req.config, req.auth, '_JobSchedule', {}, {}).then(scheduledJobs => {
60
44
  return {
61
45
  response: {
62
46
  in_use: scheduledJobs.results.map(job => job.jobName),
@@ -65,27 +49,34 @@ class CloudCodeRouter extends _PromiseRouter2.default {
65
49
  };
66
50
  });
67
51
  }
68
-
69
52
  static createJob(req) {
70
- const { job_schedule } = req.body;
53
+ const {
54
+ job_schedule
55
+ } = req.body || {};
71
56
  validateJobSchedule(req.config, job_schedule);
72
- return _rest2.default.create(req.config, req.auth, '_JobSchedule', formatJobSchedule(job_schedule), req.client);
57
+ return _rest.default.create(req.config, req.auth, '_JobSchedule', formatJobSchedule(job_schedule), req.client, req.info.context);
73
58
  }
74
-
75
59
  static editJob(req) {
76
- const { objectId } = req.params;
77
- const { job_schedule } = req.body;
60
+ const {
61
+ objectId
62
+ } = req.params;
63
+ const {
64
+ job_schedule
65
+ } = req.body || {};
78
66
  validateJobSchedule(req.config, job_schedule);
79
- return _rest2.default.update(req.config, req.auth, '_JobSchedule', { objectId }, formatJobSchedule(job_schedule)).then(response => {
67
+ return _rest.default.update(req.config, req.auth, '_JobSchedule', {
68
+ objectId
69
+ }, formatJobSchedule(job_schedule), undefined, req.info.context).then(response => {
80
70
  return {
81
71
  response
82
72
  };
83
73
  });
84
74
  }
85
-
86
75
  static deleteJob(req) {
87
- const { objectId } = req.params;
88
- return _rest2.default.del(req.config, req.auth, '_JobSchedule', objectId).then(response => {
76
+ const {
77
+ objectId
78
+ } = req.params;
79
+ return _rest.default.del(req.config, req.auth, '_JobSchedule', objectId, req.info.context).then(response => {
89
80
  return {
90
81
  response
91
82
  };
@@ -93,4 +84,4 @@ class CloudCodeRouter extends _PromiseRouter2.default {
93
84
  }
94
85
  }
95
86
  exports.CloudCodeRouter = CloudCodeRouter;
96
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9Sb3V0ZXJzL0Nsb3VkQ29kZVJvdXRlci5qcyJdLCJuYW1lcyI6WyJ0cmlnZ2VycyIsInJlcXVpcmUiLCJtaWRkbGV3YXJlIiwiZm9ybWF0Sm9iU2NoZWR1bGUiLCJqb2Jfc2NoZWR1bGUiLCJzdGFydEFmdGVyIiwiRGF0ZSIsInRvSVNPU3RyaW5nIiwidmFsaWRhdGVKb2JTY2hlZHVsZSIsImNvbmZpZyIsImpvYnMiLCJnZXRKb2JzIiwiYXBwbGljYXRpb25JZCIsImpvYk5hbWUiLCJQYXJzZSIsIkVycm9yIiwiSU5URVJOQUxfU0VSVkVSX0VSUk9SIiwiQ2xvdWRDb2RlUm91dGVyIiwiUHJvbWlzZVJvdXRlciIsIm1vdW50Um91dGVzIiwicm91dGUiLCJwcm9taXNlRW5mb3JjZU1hc3RlcktleUFjY2VzcyIsImdldEpvYnNEYXRhIiwiY3JlYXRlSm9iIiwiZWRpdEpvYiIsImRlbGV0ZUpvYiIsInJlcSIsInJlc3QiLCJmaW5kIiwiYXV0aCIsInRoZW4iLCJzY2hlZHVsZWRKb2JzIiwicmVzcG9uc2UiLCJyZXN1bHRzIiwiaW5fdXNlIiwibWFwIiwiam9iIiwiT2JqZWN0Iiwia2V5cyIsImJvZHkiLCJjcmVhdGUiLCJjbGllbnQiLCJvYmplY3RJZCIsInBhcmFtcyIsInVwZGF0ZSIsImRlbCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOzs7O0FBQ0E7Ozs7QUFDQTs7Ozs7O0FBQ0EsTUFBTUEsV0FBa0JDLFFBQVEsYUFBUixDQUF4QjtBQUNBLE1BQU1DLGFBQWtCRCxRQUFRLGdCQUFSLENBQXhCOztBQUVBLFNBQVNFLGlCQUFULENBQTJCQyxZQUEzQixFQUF5QztBQUN2QyxNQUFJLE9BQU9BLGFBQWFDLFVBQXBCLEtBQW1DLFdBQXZDLEVBQW9EO0FBQ2xERCxpQkFBYUMsVUFBYixHQUEwQixJQUFJQyxJQUFKLEdBQVdDLFdBQVgsRUFBMUI7QUFDRDtBQUNELFNBQU9ILFlBQVA7QUFDRDs7QUFFRCxTQUFTSSxtQkFBVCxDQUE2QkMsTUFB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aEIsRUFBd0JpQixJQUFJRyxJQUE1QixFQUFrQyxjQUFsQyxFQUFrRCxFQUFFYSxRQUFGLEVBQWxELEVBQWdFdkMsa0JBQWtCQyxZQUFsQixDQUFoRSxFQUFpRzBCLElBQWpHLENBQXVHRSxRQUFELElBQWM7QUFDekgsYUFBTztBQUNMQTtBQURLLE9BQVA7QUFHRCxLQUpNLENBQVA7QUFLRDs7QUFFRCxTQUFPUCxTQUFQLENBQWlCQyxHQUFqQixFQUFzQjtBQUNwQixVQUFNLEVBQUVnQixRQUFGLEtBQWVoQixJQUFJaUIsTUFBekI7QUFDQSxXQUFPaEIsZUFBS2tCLEdBQUwsQ0FBU25CLElBQUlqQixNQUFiLEVBQXFCaUIsSUFBSUcsSUFBekIsRUFBK0IsY0FBL0IsRUFBK0NhLFFBQS9DLEVBQXlEWixJQUF6RCxDQUErREUsUUFBRCxJQUFjO0FBQ2pGLGFBQU87QUFDTEE7QUFESyxPQUFQO0FBR0QsS0FKTSxDQUFQO0FBS0Q7QUF0RGdEO1FBQXRDZixlLEdBQUFBLGUiLCJmaWxlIjoiQ2xvdWRDb2RlUm91dGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFByb21pc2VSb3V0ZXIgIGZyb20gJy4uL1Byb21pc2VSb3V0ZXInO1xuaW1wb3J0IFBhcnNlICAgICAgICAgIGZyb20gJ3BhcnNlL25vZGUnO1xuaW1wb3J0IHJlc3QgICAgICAgICAgIGZyb20gJy4uL3Jlc3QnO1xuY29uc3QgdHJpZ2dlcnMgICAgICAgID0gcmVxdWlyZSgnLi4vdHJpZ2dlcnMnKTtcbmNvbnN0IG1pZGRsZXdhcmUgICAgICA9IHJlcXVpcmUoJy4uL21pZGRsZXdhcmVzJyk7XG5cbmZ1bmN0aW9uIGZvcm1hdEpvYlNjaGVkdWxlKGpvYl9zY2hlZHVsZSkge1xuICBpZiAodHlwZW9mIGpvYl9zY2hlZHVsZS5zdGFydEFmdGVyID09PSAndW5kZWZpbmVkJykge1xuICAgIGpvYl9zY2hlZHVsZS5zdGFydEFmdGVyID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpO1xuICB9XG4gIHJldHVybiBqb2Jfc2NoZWR1bGU7XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlSm9iU2NoZWR1bGUoY29uZmlnLCBqb2Jfc2NoZWR1bGUpIHtcbiAgY29uc3Qgam9icyA9IHRyaWdnZXJzLmdldEpvYnMoY29uZmlnLmFwcGxpY2F0aW9uSWQpIHx8IHt9O1xuICBpZiAoam9iX3NjaGVkdWxlLmpvYk5hbWUgJiYgIWpvYnNbam9iX3NjaGVkdWxlLmpvYk5hbWVdKSB7XG4gICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLklOVEVSTkFMX1NFUlZFUl9FUlJPUiwgJ0Nhbm5vdCBTY2hlZHVsZSBhIGpvYiB0aGF0IGlzIG5vdCBkZXBsb3llZCcpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDbG91ZENvZGVSb3V0ZXIgZXh0ZW5kcyBQcm9taXNlUm91dGVyIHtcbiAgbW91bnRSb3V0ZXMoKSB7XG4gICAgdGhpcy5yb3V0ZSgnR0VUJywgJy9jbG91ZF9jb2RlL2pvYnMnLCBtaWRkbGV3YXJlLnByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzLCBDbG91ZENvZGVSb3V0ZXIuZ2V0Sm9icyk7XG4gICAgdGhpcy5yb3V0ZSgnR0VUJywgJy9jbG91ZF9jb2RlL2pvYnMvZGF0YScsIG1pZGRsZXdhcmUucHJvbWlzZUVuZm9yY2VNYXN0ZXJLZXlBY2Nlc3MsIENsb3VkQ29kZVJvdXRlci5nZXRKb2JzRGF0YSk7XG4gICAgdGhpcy5yb3V0ZSgnUE9TVCcsICcvY2xvdWRfY29kZS9qb2JzJywgbWlkZGxld2FyZS5wcm9taXNlRW5mb3JjZU1hc3RlcktleUFjY2VzcywgQ2xvdWRDb2RlUm91dGVyLmNyZWF0ZUpvYik7XG4gICAgdGhpcy5yb3V0ZSgnUFVUJywgJy9jbG91ZF9jb2RlL2pvYnMvOm9iamVjdElkJywgbWlkZGxld2FyZS5wcm9taXNlRW5mb3JjZU1hc3RlcktleUFjY2VzcywgQ2xvdWRDb2RlUm91dGVyLmVkaXRKb2IpO1xuICAgIHRoaXMucm91dGUoJ0RFTEVURScsICcvY2xvdWRfY29kZS9qb2JzLzpvYmplY3RJZCcsIG1pZGRsZXdhcmUucHJvbWlzZUVuZm9yY2VNYXN0ZXJLZXlBY2Nlc3MsIENsb3VkQ29kZVJvdXRlci5kZWxldGVKb2IpO1xuICB9XG5cbiAgc3RhdGljIGdldEpvYnMocmVxKSB7XG4gICAgcmV0dXJuIHJlc3QuZmluZChyZXEuY29uZmlnLCByZXEuYXV0aCwgJ19Kb2JTY2hlZHVsZScsIHt9LCB7fSkudGhlbigoc2NoZWR1bGVkSm9icykgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcmVzcG9uc2U6IHNjaGVkdWxlZEpvYnMucmVzdWx0c1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIGdldEpvYnNEYXRhKHJlcSkge1xuICAgIGNvbnN0IGNvbmZpZyA9IHJlcS5jb25maWc7XG4gICAgY29uc3Qgam9icyA9IHRyaWdnZXJzLmdldEpvYnMoY29uZmlnLmFwcGxpY2F0aW9uSWQpIHx8IHt9O1xuICAgIHJldHVybiByZXN0LmZpbmQocmVxLmNvbmZpZywgcmVxLmF1dGgsICdfSm9iU2NoZWR1bGUnLCB7fSwge30pLnRoZW4oKHNjaGVkdWxlZEpvYnMpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHJlc3BvbnNlOiB7XG4gICAgICAgICAgaW5fdXNlOiBzY2hlZHVsZWRKb2JzLnJlc3VsdHMubWFwKChqb2IpID0+IGpvYi5qb2JOYW1lKSxcbiAgICAgICAgICBqb2JzOiBPYmplY3Qua2V5cyhqb2JzKSxcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVKb2IocmVxKSB7XG4gICAgY29uc3QgeyBqb2Jfc2NoZWR1bGUgfSA9IHJlcS5ib2R5O1xuICAgIHZhbGlkYXRlSm9iU2NoZWR1bGUocmVxLmNvbmZpZywgam9iX3NjaGVkdWxlKTtcbiAgICByZXR1cm4gcmVzdC5jcmVhdGUocmVxLmNvbmZpZywgcmVxLmF1dGgsICdfSm9iU2NoZWR1bGUnLCBmb3JtYXRKb2JTY2hlZHVsZShqb2Jfc2NoZWR1bGUpLCByZXEuY2xpZW50KTtcbiAgfVxuXG4gIHN0YXRpYyBlZGl0Sm9iKHJlcSkge1xuICAgIGNvbnN0IHsgb2JqZWN0SWQgfSA9IHJlcS5wYXJhbXM7XG4gICAgY29uc3QgeyBqb2Jfc2NoZWR1bGUgfSA9IHJlcS5ib2R5O1xuICAgIHZhbGlkYXRlSm9iU2NoZWR1bGUocmVxLmNvbmZpZywgam9iX3NjaGVkdWxlKTtcbiAgICByZXR1cm4gcmVzdC51cGRhdGUocmVxLmNvbmZpZywgcmVxLmF1dGgsICdfSm9iU2NoZWR1bGUnLCB7IG9iamVjdElkIH0sIGZvcm1hdEpvYlNjaGVkdWxlKGpvYl9zY2hlZHVsZSkpLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICByZXNwb25zZVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIGRlbGV0ZUpvYihyZXEpIHtcbiAgICBjb25zdCB7IG9iamVjdElkIH0gPSByZXEucGFyYW1zO1xuICAgIHJldHVybiByZXN0LmRlbChyZXEuY29uZmlnLCByZXEuYXV0aCwgJ19Kb2JTY2hlZHVsZScsIG9iamVjdElkKS50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcmVzcG9uc2VcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIl19
87
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfUHJvbWlzZVJvdXRlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX25vZGUiLCJfcmVzdCIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsInRyaWdnZXJzIiwibWlkZGxld2FyZSIsImZvcm1hdEpvYlNjaGVkdWxlIiwiam9iX3NjaGVkdWxlIiwic3RhcnRBZnRlciIsIkRhdGUiLCJ0b0lTT1N0cmluZyIsInZhbGlkYXRlSm9iU2NoZWR1bGUiLCJjb25maWciLCJqb2JzIiwiZ2V0Sm9icyIsImFwcGxpY2F0aW9uSWQiLCJqb2JOYW1lIiwiUGFyc2UiLCJFcnJvciIsIklOVEVSTkFMX1NFUlZFUl9FUlJPUiIsIkNsb3VkQ29kZVJvdXRlciIsIlByb21pc2VSb3V0ZXIiLCJtb3VudFJvdXRlcyIsInJvdXRlIiwicHJvbWlzZUVuZm9yY2VNYXN0ZXJLZXlBY2Nlc3MiLCJnZXRKb2JzRGF0YSIsImNyZWF0ZUpvYiIsImVkaXRKb2IiLCJkZWxldGVKb2IiLCJyZXEiLCJyZXN0IiwiZmluZCIsImF1dGgiLCJ0aGVuIiwic2NoZWR1bGVkSm9icyIsInJlc3BvbnNlIiwicmVzdWx0cyIsImluX3VzZSIsIm1hcCIsImpvYiIsIk9iamVjdCIsImtleXMiLCJib2R5IiwiY3JlYXRlIiwiY2xpZW50IiwiaW5mbyIsImNvbnRleHQiLCJvYmplY3RJZCIsInBhcmFtcyIsInVwZGF0ZSIsInVuZGVmaW5lZCIsImRlbCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvUm91dGVycy9DbG91ZENvZGVSb3V0ZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFByb21pc2VSb3V0ZXIgZnJvbSAnLi4vUHJvbWlzZVJvdXRlcic7XG5pbXBvcnQgUGFyc2UgZnJvbSAncGFyc2Uvbm9kZSc7XG5pbXBvcnQgcmVzdCBmcm9tICcuLi9yZXN0JztcbmNvbnN0IHRyaWdnZXJzID0gcmVxdWlyZSgnLi4vdHJpZ2dlcnMnKTtcbmNvbnN0IG1pZGRsZXdhcmUgPSByZXF1aXJlKCcuLi9taWRkbGV3YXJlcycpO1xuXG5mdW5jdGlvbiBmb3JtYXRKb2JTY2hlZHVsZShqb2Jfc2NoZWR1bGUpIHtcbiAgaWYgKHR5cGVvZiBqb2Jfc2NoZWR1bGUuc3RhcnRBZnRlciA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBqb2Jfc2NoZWR1bGUuc3RhcnRBZnRlciA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKTtcbiAgfVxuICByZXR1cm4gam9iX3NjaGVkdWxlO1xufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZUpvYlNjaGVkdWxlKGNvbmZpZywgam9iX3NjaGVkdWxlKSB7XG4gIGNvbnN0IGpvYnMgPSB0cmlnZ2Vycy5nZXRKb2JzKGNvbmZpZy5hcHBsaWNhdGlvbklkKSB8fCB7fTtcbiAgaWYgKGpvYl9zY2hlZHVsZS5qb2JOYW1lICYmICFqb2JzW2pvYl9zY2hlZHVsZS5qb2JOYW1lXSkge1xuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihcbiAgICAgIFBhcnNlLkVycm9yLklOVEVSTkFMX1NFUlZFUl9FUlJPUixcbiAgICAgICdDYW5ub3QgU2NoZWR1bGUgYSBqb2IgdGhhdCBpcyBub3QgZGVwbG95ZWQnXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ2xvdWRDb2RlUm91dGVyIGV4dGVuZHMgUHJvbWlzZVJvdXRlciB7XG4gIG1vdW50Um91dGVzKCkge1xuICAgIHRoaXMucm91dGUoXG4gICAgICAnR0VUJyxcbiAgICAgICcvY2xvdWRfY29kZS9qb2JzJyxcbiAgICAgIG1pZGRsZXdhcmUucHJvbWlzZUVuZm9yY2VNYXN0ZXJLZXlBY2Nlc3MsXG4gICAgICBDbG91ZENvZGVSb3V0ZXIuZ2V0Sm9ic1xuICAgICk7XG4gICAgdGhpcy5yb3V0ZShcbiAgICAgICdHRVQnLFxuICAgICAgJy9jbG91ZF9jb2RlL2pvYnMvZGF0YScsXG4gICAgICBtaWRkbGV3YXJlLnByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzLFxuICAgICAgQ2xvdWRDb2RlUm91dGVyLmdldEpvYnNEYXRhXG4gICAgKTtcbiAgICB0aGlzLnJvdXRlKFxuICAgICAgJ1BPU1QnLFxuICAgICAgJy9jbG91ZF9jb2RlL2pvYnMnLFxuICAgICAgbWlkZGxld2FyZS5wcm9taXNlRW5mb3JjZU1hc3RlcktleUFjY2VzcyxcbiAgICAgIENsb3VkQ29kZVJvdXRlci5jcmVhdGVKb2JcbiAgICApO1xuICAgIHRoaXMucm91dGUoXG4gICAgICAnUFVUJyxcbiAgICAgICcvY2xvdWRfY29kZS9qb2JzLzpvYmplY3RJZCcsXG4gICAgICBtaWRkbGV3YXJlLnByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzLFxuICAgICAgQ2xvdWRDb2RlUm91dGVyLmVkaXRKb2JcbiAgICApO1xuICAgIHRoaXMucm91dGUoXG4gICAgICAnREVMRVRFJyxcbiAgICAgICcvY2xvdWRfY29kZS9qb2JzLzpvYmplY3RJZCcsXG4gICAgICBtaWRkbGV3YXJlLnByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzLFxuICAgICAgQ2xvdWRDb2RlUm91dGVyLmRlbGV0ZUpvYlxuICAgICk7XG4gIH1cblxuICBzdGF0aWMgZ2V0Sm9icyhyZXEpIHtcbiAgICByZXR1cm4gcmVzdC5maW5kKHJlcS5jb25maWcsIHJlcS5hdXRoLCAnX0pvYlNjaGVkdWxlJywge30sIHt9KS50aGVuKHNjaGVkdWxlZEpvYnMgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcmVzcG9uc2U6IHNjaGVkdWxlZEpvYnMucmVzdWx0cyxcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgZ2V0Sm9ic0RhdGEocmVxKSB7XG4gICAgY29uc3QgY29uZmlnID0gcmVxLmNvbmZpZztcbiAgICBjb25zdCBqb2JzID0gdHJpZ2dlcnMuZ2V0Sm9icyhjb25maWcuYXBwbGljYXRpb25JZCkgfHwge307XG4gICAgcmV0dXJuIHJlc3QuZmluZChyZXEuY29uZmlnLCByZXEuYXV0aCwgJ19Kb2JTY2hlZHVsZScsIHt9LCB7fSkudGhlbihzY2hlZHVsZWRKb2JzID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHJlc3BvbnNlOiB7XG4gICAgICAgICAgaW5fdXNlOiBzY2hlZHVsZWRKb2JzLnJlc3VsdHMubWFwKGpvYiA9PiBqb2Iuam9iTmFtZSksXG4gICAgICAgICAgam9iczogT2JqZWN0LmtleXMoam9icyksXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUpvYihyZXEpIHtcbiAgICBjb25zdCB7IGpvYl9zY2hlZHVsZSB9ID0gcmVxLmJvZHkgfHwge307XG4gICAgdmFsaWRhdGVKb2JTY2hlZHVsZShyZXEuY29uZmlnLCBqb2Jfc2NoZWR1bGUpO1xuICAgIHJldHVybiByZXN0LmNyZWF0ZShcbiAgICAgIHJlcS5jb25maWcsXG4gICAgICByZXEuYXV0aCxcbiAgICAgICdfSm9iU2NoZWR1bGUnLFxuICAgICAgZm9ybWF0Sm9iU2NoZWR1bGUoam9iX3NjaGVkdWxlKSxcbiAgICAgIHJlcS5jbGllbnQsXG4gICAgICByZXEuaW5mby5jb250ZXh0XG4gICAgKTtcbiAgfVxuXG4gIHN0YXRpYyBlZGl0Sm9iKHJlcSkge1xuICAgIGNvbnN0IHsgb2JqZWN0SWQgfSA9IHJlcS5wYXJhbXM7XG4gICAgY29uc3QgeyBqb2Jfc2NoZWR1bGUgfSA9IHJlcS5ib2R5IHx8IHt9O1xuICAgIHZhbGlkYXRlSm9iU2NoZWR1bGUocmVxLmNvbmZpZywgam9iX3NjaGVkdWxlKTtcbiAgICByZXR1cm4gcmVzdFxuICAgICAgLnVwZGF0ZShcbiAgICAgICAgcmVxLmNvbmZpZyxcbiAgICAgICAgcmVxLmF1dGgsXG4gICAgICAgICdfSm9iU2NoZWR1bGUnLFxuICAgICAgICB7IG9iamVjdElkIH0sXG4gICAgICAgIGZvcm1hdEpvYlNjaGVkdWxlKGpvYl9zY2hlZHVsZSksXG4gICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgcmVxLmluZm8uY29udGV4dFxuICAgICAgKVxuICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHJlc3BvbnNlLFxuICAgICAgICB9O1xuICAgICAgfSk7XG4gIH1cblxuICBzdGF0aWMgZGVsZXRlSm9iKHJlcSkge1xuICAgIGNvbnN0IHsgb2JqZWN0SWQgfSA9IHJlcS5wYXJhbXM7XG4gICAgcmV0dXJuIHJlc3RcbiAgICAgIC5kZWwocmVxLmNvbmZpZywgcmVxLmF1dGgsICdfSm9iU2NoZWR1bGUnLCBvYmplY3RJZCwgcmVxLmluZm8uY29udGV4dClcbiAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICByZXNwb25zZSxcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLGNBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLEtBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLEtBQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUEyQixTQUFBRCx1QkFBQUksQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQUMzQixNQUFNRyxRQUFRLEdBQUdOLE9BQU8sQ0FBQyxhQUFhLENBQUM7QUFDdkMsTUFBTU8sVUFBVSxHQUFHUCxPQUFPLENBQUMsZ0JBQWdCLENBQUM7QUFFNUMsU0FBU1EsaUJBQWlCQSxDQUFDQyxZQUFZLEVBQUU7RUFDdkMsSUFBSSxPQUFPQSxZQUFZLENBQUNDLFVBQVUsS0FBSyxXQUFXLEVBQUU7SUFDbERELFlBQVksQ0FBQ0MsVUFBVSxHQUFHLElBQUlDLElBQUksQ0FBQyxDQUFDLENBQUNDLFdBQVcsQ0FBQyxDQUFDO0VBQ3BEO0VBQ0EsT0FBT0gsWUFBWTtBQUNyQjtBQUVBLFNBQVNJLG1CQUFtQkEsQ0FBQ0MsTUFBTSxFQUFFTCxZQUFZLEVBQUU7RUFDakQsTUFBTU0sSUFBSSxHQUFHVCxRQUFR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
@@ -1,27 +1,20 @@
1
- 'use strict';
1
+ "use strict";
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.FeaturesRouter = undefined;
7
-
8
- var _package = require('../../package.json');
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 FeaturesRouter extends _PromiseRouter2.default {
6
+ exports.FeaturesRouter = void 0;
7
+ var _package = require("../../package.json");
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 FeaturesRouter extends _PromiseRouter.default {
23
13
  mountRoutes() {
24
14
  this.route('GET', '/serverInfo', middleware.promiseEnforceMasterKeyAccess, req => {
15
+ const {
16
+ config
17
+ } = req;
25
18
  const features = {
26
19
  globalConfig: {
27
20
  create: true,
@@ -46,9 +39,9 @@ class FeaturesRouter extends _PromiseRouter2.default {
46
39
  from: true
47
40
  },
48
41
  push: {
49
- immediatePush: req.config.hasPushSupport,
50
- scheduledPush: req.config.hasPushScheduledSupport,
51
- storedPushData: req.config.hasPushSupport,
42
+ immediatePush: config.hasPushSupport,
43
+ scheduledPush: config.hasPushScheduledSupport,
44
+ storedPushData: config.hasPushSupport,
52
45
  pushAudiences: true,
53
46
  localization: true
54
47
  },
@@ -61,15 +54,19 @@ class FeaturesRouter extends _PromiseRouter2.default {
61
54
  exportClass: false,
62
55
  editClassLevelPermissions: true,
63
56
  editPointerPermissions: true
57
+ },
58
+ settings: {
59
+ securityCheck: !!config.security?.enableCheck
64
60
  }
65
61
  };
66
-
67
- return { response: {
62
+ return {
63
+ response: {
68
64
  features: features,
69
65
  parseServerVersion: _package.version
70
- } };
66
+ }
67
+ };
71
68
  });
72
69
  }
73
70
  }
74
71
  exports.FeaturesRouter = FeaturesRouter;
75
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9Sb3V0ZXJzL0ZlYXR1cmVzUm91dGVyLmpzIl0sIm5hbWVzIjpbIm1pZGRsZXdhcmUiLCJGZWF0dXJlc1JvdXRlciIsIlByb21pc2VSb3V0ZXIiLCJtb3VudFJvdXRlcyIsInJvdXRlIiwicHJvbWlzZUVuZm9yY2VNYXN0ZXJLZXlBY2Nlc3MiLCJyZXEiLCJmZWF0dXJlcyIsImdsb2JhbENvbmZpZyIsImNyZWF0ZSIsInJlYWQiLCJ1cGRhdGUiLCJkZWxldGUiLCJob29rcyIsImNsb3VkQ29kZSIsImpvYnMiLCJsb2dzIiwibGV2ZWwiLCJzaXplIiwib3JkZXIiLCJ1bnRpbCIsImZyb20iLCJwdXNoIiwiaW1tZWRpYXRlUHVzaCIsImNvbmZpZyIsImhhc1B1c2hTdXBwb3J0Iiwic2NoZWR1bGVkUHVzaCIsImhhc1B1c2hTY2hlZHVsZWRTdXBwb3J0Iiwic3RvcmVkUHVzaERhdGEiLCJwdXNoQXVkaWVuY2VzIiwibG9jYWxpemF0aW9uIiwic2NoZW1hcyIsImFkZEZpZWxkIiwicmVtb3ZlRmllbGQiLCJhZGRDbGFzcyIsInJlbW92ZUNsYXNzIiwiY2xlYXJBbGxEYXRhRnJvbUNsYXNzIiwiZXhwb3J0Q2xhc3MiLCJlZGl0Q2xhc3NMZXZlbFBlcm1pc3Npb25zIiwiZWRpdFBvaW50ZXJQZXJtaXNzaW9ucyIsInJlc3BvbnNlIiwicGFyc2VTZXJ2ZXJWZXJzaW9uIiwidmVyc2lvbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOzs7O0FBQ0E7O0lBQVlBLFU7Ozs7OztBQUVMLE1BQU1DLGNBQU4sU0FBNkJDLHVCQUE3QixDQUEyQztBQUNoREMsZ0JBQWM7QUFDWixTQUFLQyxLQUFMLENBQVcsS0FBWCxFQUFpQixhQUFqQixFQUFnQ0osV0FBV0ssNkJBQTNDLEVBQTBFQyxPQUFPO0FBQy9FLFlBQU1DLFdBQVc7QUFDZkMsc0JBQWM7QUFDWkMsa0JBQVEsSUFESTtBQUVaQyxnQkFBTSxJQUZNO0FBR1pDLGtCQUFRLElBSEk7QUFJWkMsa0JBQVE7QUFKSSxTQURDO0FBT2ZDLGVBQU87QUFDTEosa0JBQVEsSUFESDtBQUVMQyxnQkFBTSxJQUZEO0FBR0xDLGtCQUFRLElBSEg7QUFJTEMsa0JBQVE7QUFKSCxTQVBRO0FBYWZFLG1CQUFXO0FBQ1RDLGdCQUFNO0FBREcsU0FiSTtBQWdCZkMsY0FBTTtBQUNKQyxpQkFBTyxJQURIO0FBRUpDLGdCQUFNLElBRkY7QUFHSkMsaUJBQU8sSUFISDtBQUlKQyxpQkFBTyxJQUpIO0FBS0pDLGdCQUFNO0FBTEYsU0FoQlM7QUF1QmZDLGNBQU07QUFDSkMseUJBQWVqQixJQUFJa0IsTUFBSixDQUFXQyxjQUR0QjtBQUVKQyx5QkFBZXBCLElBQUlrQixNQUFKLENBQVdHLHVCQUZ0QjtBQUdKQywwQkFBZ0J0QixJQUFJa0IsTUFBSixDQUFXQyxjQUh2QjtBQUlKSSx5QkFBZSxJQUpYO0FBS0pDLHdCQUFjO0FBTFYsU0F2QlM7QUE4QmZDLGlCQUFTO0FBQ1BDLG9CQUFVLElBREg7QUFFUEMsdUJBQWEsSUFGTjtBQUdQQyxvQkFBVSxJQUhIO0FBSVBDLHVCQUFhLElBSk47QUFLUEMsaUNBQXVCLElBTGhCO0FBTVBDLHVCQUFhLEtBTk47QUFPUEMscUNBQTJCLElBUHBCO0FBUVBDLGtDQUF3QjtBQVJqQjtBQTlCTSxPQUFqQjs7QUEwQ0EsYUFBTyxFQUFFQyxVQUFVO0FBQ2pCakMsb0JBQVVBLFFBRE87QUFFakJrQyw4QkFBb0JDO0FBRkgsU0FBWixFQUFQO0FBSUQsS0EvQ0Q7QUFnREQ7QUFsRCtDO1FBQXJDekMsYyxHQUFBQSxjIiwiZmlsZSI6IkZlYXR1cmVzUm91dGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdmVyc2lvbiB9ICAgICBmcm9tICcuLi8uLi9wYWNrYWdlLmpzb24nO1xuaW1wb3J0IFByb21pc2VSb3V0ZXIgICBmcm9tICcuLi9Qcm9taXNlUm91dGVyJztcbmltcG9ydCAqIGFzIG1pZGRsZXdhcmUgZnJvbSBcIi4uL21pZGRsZXdhcmVzXCI7XG5cbmV4cG9ydCBjbGFzcyBGZWF0dXJlc1JvdXRlciBleHRlbmRzIFByb21pc2VSb3V0ZXIge1xuICBtb3VudFJvdXRlcygpIHtcbiAgICB0aGlzLnJvdXRlKCdHRVQnLCcvc2VydmVySW5mbycsIG1pZGRsZXdhcmUucHJvbWlzZUVuZm9yY2VNYXN0ZXJLZXlBY2Nlc3MsIHJlcSA9PiB7XG4gICAgICBjb25zdCBmZWF0dXJlcyA9IHtcbiAgICAgICAgZ2xvYmFsQ29uZmlnOiB7XG4gICAgICAgICAgY3JlYXRlOiB0cnVlLFxuICAgICAgICAgIHJlYWQ6IHRydWUsXG4gICAgICAgICAgdXBkYXRlOiB0cnVlLFxuICAgICAgICAgIGRlbGV0ZTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgaG9va3M6IHtcbiAgICAgICAgICBjcmVhdGU6IHRydWUsXG4gICAgICAgICAgcmVhZDogdHJ1ZSxcbiAgICAgICAgICB1cGRhdGU6IHRydWUsXG4gICAgICAgICAgZGVsZXRlOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBjbG91ZENvZGU6IHtcbiAgICAgICAgICBqb2JzOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBsb2dzOiB7XG4gICAgICAgICAgbGV2ZWw6IHRydWUsXG4gICAgICAgICAgc2l6ZTogdHJ1ZSxcbiAgICAgICAgICBvcmRlcjogdHJ1ZSxcbiAgICAgICAgICB1bnRpbDogdHJ1ZSxcbiAgICAgICAgICBmcm9tOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBwdXNoOiB7XG4gICAgICAgICAgaW1tZWRpYXRlUHVzaDogcmVxLmNvbmZpZy5oYXNQdXNoU3VwcG9ydCxcbiAgICAgICAgICBzY2hlZHVsZWRQdXNoOiByZXEuY29uZmlnLmhhc1B1c2hTY2hlZHVsZWRTdXBwb3J0LFxuICAgICAgICAgIHN0b3JlZFB1c2hEYXRhOiByZXEuY29uZmlnLmhhc1B1c2hTdXBwb3J0LFxuICAgICAgICAgIHB1c2hBdWRpZW5jZXM6IHRydWUsXG4gICAgICAgICAgbG9jYWxpemF0aW9uOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBzY2hlbWFzOiB7XG4gICAgICAgICAgYWRkRmllbGQ6IHRydWUsXG4gICAgICAgICAgcmVtb3ZlRmllbGQ6IHRydWUsXG4gICAgICAgICAgYWRkQ2xhc3M6IHRydWUsXG4gICAgICAgICAgcmVtb3ZlQ2xhc3M6IHRydWUsXG4gICAgICAgICAgY2xlYXJBbGxEYXRhRnJvbUNsYXNzOiB0cnVlLFxuICAgICAgICAgIGV4cG9ydENsYXNzOiBmYWxzZSxcbiAgICAgICAgICBlZGl0Q2xhc3NMZXZlbFBlcm1pc3Npb25zOiB0cnVlLFxuICAgICAgICAgIGVkaXRQb2ludGVyUGVybWlzc2lvbnM6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICB9O1xuXG4gICAgICByZXR1cm4geyByZXNwb25zZToge1xuICAgICAgICBmZWF0dXJlczogZmVhdHVyZXMsXG4gICAgICAgIHBhcnNlU2VydmVyVmVyc2lvbjogdmVyc2lvbixcbiAgICAgIH0gfTtcbiAgICB9KTtcbiAgfVxufVxuIl19
72
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcGFja2FnZSIsInJlcXVpcmUiLCJfUHJvbWlzZVJvdXRlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJtaWRkbGV3YXJlIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJlIiwidCIsIldlYWtNYXAiLCJyIiwibiIsIl9fZXNNb2R1bGUiLCJvIiwiaSIsImYiLCJfX3Byb3RvX18iLCJkZWZhdWx0IiwiaGFzIiwiZ2V0Iiwic2V0IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJGZWF0dXJlc1JvdXRlciIsIlByb21pc2VSb3V0ZXIiLCJtb3VudFJvdXRlcyIsInJvdXRlIiwicHJvbWlzZUVuZm9yY2VNYXN0ZXJLZXlBY2Nlc3MiLCJyZXEiLCJjb25maWciLCJmZWF0dXJlcyIsImdsb2JhbENvbmZpZyIsImNyZWF0ZSIsInJlYWQiLCJ1cGRhdGUiLCJkZWxldGUiLCJob29rcyIsImNsb3VkQ29kZSIsImpvYnMiLCJsb2dzIiwibGV2ZWwiLCJzaXplIiwib3JkZXIiLCJ1bnRpbCIsImZyb20iLCJwdXNoIiwiaW1tZWRpYXRlUHVzaCIsImhhc1B1c2hTdXBwb3J0Iiwic2NoZWR1bGVkUHVzaCIsImhhc1B1c2hTY2hlZHVsZWRTdXBwb3J0Iiwic3RvcmVkUHVzaERhdGEiLCJwdXNoQXVkaWVuY2VzIiwibG9jYWxpemF0aW9uIiwic2NoZW1hcyIsImFkZEZpZWxkIiwicmVtb3ZlRmllbGQiLCJhZGRDbGFzcyIsInJlbW92ZUNsYXNzIiwiY2xlYXJBbGxEYXRhRnJvbUNsYXNzIiwiZXhwb3J0Q2xhc3MiLCJlZGl0Q2xhc3NMZXZlbFBlcm1pc3Npb25zIiwiZWRpdFBvaW50ZXJQZXJtaXNzaW9ucyIsInNldHRpbmdzIiwic2VjdXJpdHlDaGVjayIsInNlY3VyaXR5IiwiZW5hYmxlQ2hlY2siLCJyZXNwb25zZSIsInBhcnNlU2VydmVyVmVyc2lvbiIsInZlcnNpb24iLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL1JvdXRlcnMvRmVhdHVyZXNSb3V0ZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdmVyc2lvbiB9IGZyb20gJy4uLy4uL3BhY2thZ2UuanNvbic7XG5pbXBvcnQgUHJvbWlzZVJvdXRlciBmcm9tICcuLi9Qcm9taXNlUm91dGVyJztcbmltcG9ydCAqIGFzIG1pZGRsZXdhcmUgZnJvbSAnLi4vbWlkZGxld2FyZXMnO1xuXG5leHBvcnQgY2xhc3MgRmVhdHVyZXNSb3V0ZXIgZXh0ZW5kcyBQcm9taXNlUm91dGVyIHtcbiAgbW91bnRSb3V0ZXMoKSB7XG4gICAgdGhpcy5yb3V0ZSgnR0VUJywgJy9zZXJ2ZXJJbmZvJywgbWlkZGxld2FyZS5wcm9taXNlRW5mb3JjZU1hc3RlcktleUFjY2VzcywgcmVxID0+IHtcbiAgICAgIGNvbnN0IHsgY29uZmlnIH0gPSByZXE7XG4gICAgICBjb25zdCBmZWF0dXJlcyA9IHtcbiAgICAgICAgZ2xvYmFsQ29uZmlnOiB7XG4gICAgICAgICAgY3JlYXRlOiB0cnVlLFxuICAgICAgICAgIHJlYWQ6IHRydWUsXG4gICAgICAgICAgdXBkYXRlOiB0cnVlLFxuICAgICAgICAgIGRlbGV0ZTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgaG9va3M6IHtcbiAgICAgICAgICBjcmVhdGU6IHRydWUsXG4gICAgICAgICAgcmVhZDogdHJ1ZSxcbiAgICAgICAgICB1cGRhdGU6IHRydWUsXG4gICAgICAgICAgZGVsZXRlOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBjbG91ZENvZGU6IHtcbiAgICAgICAgICBqb2JzOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBsb2dzOiB7XG4gICAgICAgICAgbGV2ZWw6IHRydWUsXG4gICAgICAgICAgc2l6ZTogdHJ1ZSxcbiAgICAgICAgICBvcmRlcjogdHJ1ZSxcbiAgICAgICAgICB1bnRpbDogdHJ1ZSxcbiAgICAgICAgICBmcm9tOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBwdXNoOiB7XG4gICAgICAgICAgaW1tZWRpYXRlUHVzaDogY29uZmlnLmhhc1B1c2hTdXBwb3J0LFxuICAgICAgICAgIHNjaGVkdWxlZFB1c2g6IGNvbmZpZy5oYXNQdXNoU2NoZWR1bGVkU3VwcG9ydCxcbiAgICAgICAgICBzdG9yZWRQdXNoRGF0YTogY29uZmlnLmhhc1B1c2hTdXBwb3J0LFxuICAgICAgICAgIHB1c2hBdWRpZW5jZXM6IHRydWUsXG4gICAgICAgICAgbG9jYWxpemF0aW9uOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBzY2hlbWFzOiB7XG4gICAgICAgICAgYWRkRmllbGQ6IHRydWUsXG4gICAgICAgICAgcmVtb3ZlRmllbGQ6IHRydWUsXG4gICAgICAgICAgYWRkQ2xhc3M6IHRydWUsXG4gICAgICAgICAgcmVtb3ZlQ2xhc3M6IHRydWUsXG4gICAgICAgICAgY2xlYXJBbGxEYXRhRnJvbUNsYXNzOiB0cnVlLFxuICAgICAgICAgIGV4cG9ydENsYXNzOiBmYWxzZSxcbiAgICAgICAgICBlZGl0Q2xhc3NMZXZlbFBlcm1pc3Npb25zOiB0cnVlLFxuICAgICAgICAgIGVkaXRQb2ludGVyUGVybWlzc2lvbnM6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHNldHRpbmdzOiB7XG4gICAgICAgICAgc2VjdXJpdHlDaGVjazogISFjb25maWcuc2VjdXJpdHk/LmVuYWJsZUNoZWNrLFxuICAgICAgICB9LFxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcmVzcG9uc2U6IHtcbiAgICAgICAgICBmZWF0dXJlczogZmVhdHVyZXMsXG4gICAgICAgICAgcGFyc2VTZXJ2ZXJWZXJzaW9uOiB2ZXJzaW9uLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxRQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxjQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFD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