@beiguancyc/parse-server 9.9.0-ruixiang.1

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 (251) hide show
  1. package/LICENSE +176 -0
  2. package/NOTICE +10 -0
  3. package/README.md +1311 -0
  4. package/bin/parse-live-query-server +3 -0
  5. package/bin/parse-server +3 -0
  6. package/lib/AccountLockout.js +149 -0
  7. package/lib/Adapters/AdapterLoader.js +60 -0
  8. package/lib/Adapters/Analytics/AnalyticsAdapter.js +32 -0
  9. package/lib/Adapters/Auth/AuthAdapter.js +132 -0
  10. package/lib/Adapters/Auth/BaseCodeAuthAdapter.js +119 -0
  11. package/lib/Adapters/Auth/OAuth1Client.js +204 -0
  12. package/lib/Adapters/Auth/apple.js +125 -0
  13. package/lib/Adapters/Auth/facebook.js +187 -0
  14. package/lib/Adapters/Auth/gcenter.js +217 -0
  15. package/lib/Adapters/Auth/github.js +125 -0
  16. package/lib/Adapters/Auth/google.js +122 -0
  17. package/lib/Adapters/Auth/gpgames.js +125 -0
  18. package/lib/Adapters/Auth/httpsRequest.js +41 -0
  19. package/lib/Adapters/Auth/index.js +248 -0
  20. package/lib/Adapters/Auth/instagram.js +118 -0
  21. package/lib/Adapters/Auth/janraincapture.js +85 -0
  22. package/lib/Adapters/Auth/janrainengage.js +57 -0
  23. package/lib/Adapters/Auth/keycloak.js +168 -0
  24. package/lib/Adapters/Auth/ldap.js +193 -0
  25. package/lib/Adapters/Auth/line.js +125 -0
  26. package/lib/Adapters/Auth/linkedin.js +117 -0
  27. package/lib/Adapters/Auth/meetup.js +44 -0
  28. package/lib/Adapters/Auth/mfa.js +334 -0
  29. package/lib/Adapters/Auth/microsoft.js +111 -0
  30. package/lib/Adapters/Auth/oauth2.js +115 -0
  31. package/lib/Adapters/Auth/phantauth.js +53 -0
  32. package/lib/Adapters/Auth/qq.js +113 -0
  33. package/lib/Adapters/Auth/spotify.js +115 -0
  34. package/lib/Adapters/Auth/twitter.js +197 -0
  35. package/lib/Adapters/Auth/utils.js +28 -0
  36. package/lib/Adapters/Auth/vkontakte.js +55 -0
  37. package/lib/Adapters/Auth/wechat.js +110 -0
  38. package/lib/Adapters/Auth/weibo.js +141 -0
  39. package/lib/Adapters/Cache/CacheAdapter.js +40 -0
  40. package/lib/Adapters/Cache/InMemoryCache.js +61 -0
  41. package/lib/Adapters/Cache/InMemoryCacheAdapter.js +34 -0
  42. package/lib/Adapters/Cache/LRUCache.js +35 -0
  43. package/lib/Adapters/Cache/NullCacheAdapter.js +26 -0
  44. package/lib/Adapters/Cache/RedisCacheAdapter.js +109 -0
  45. package/lib/Adapters/Cache/SchemaCache.js +25 -0
  46. package/lib/Adapters/Email/MailAdapter.js +32 -0
  47. package/lib/Adapters/Files/FilesAdapter.js +129 -0
  48. package/lib/Adapters/Files/GridFSBucketAdapter.js +280 -0
  49. package/lib/Adapters/Files/GridStoreAdapter.js +5 -0
  50. package/lib/Adapters/Logger/LoggerAdapter.js +27 -0
  51. package/lib/Adapters/Logger/WinstonLogger.js +107 -0
  52. package/lib/Adapters/Logger/WinstonLoggerAdapter.js +63 -0
  53. package/lib/Adapters/MessageQueue/EventEmitterMQ.js +55 -0
  54. package/lib/Adapters/PubSub/EventEmitterPubSub.js +53 -0
  55. package/lib/Adapters/PubSub/PubSubAdapter.js +34 -0
  56. package/lib/Adapters/PubSub/RedisPubSub.js +49 -0
  57. package/lib/Adapters/Push/PushAdapter.js +40 -0
  58. package/lib/Adapters/Storage/Mongo/MongoCollection.js +212 -0
  59. package/lib/Adapters/Storage/Mongo/MongoSchemaCollection.js +334 -0
  60. package/lib/Adapters/Storage/Mongo/MongoStorageAdapter.js +1047 -0
  61. package/lib/Adapters/Storage/Mongo/MongoTransform.js +1397 -0
  62. package/lib/Adapters/Storage/Postgres/PostgresClient.js +38 -0
  63. package/lib/Adapters/Storage/Postgres/PostgresConfigParser.js +73 -0
  64. package/lib/Adapters/Storage/Postgres/PostgresStorageAdapter.js +2409 -0
  65. package/lib/Adapters/Storage/Postgres/sql/array/add-unique.sql +11 -0
  66. package/lib/Adapters/Storage/Postgres/sql/array/add.sql +11 -0
  67. package/lib/Adapters/Storage/Postgres/sql/array/contains-all-regex.sql +14 -0
  68. package/lib/Adapters/Storage/Postgres/sql/array/contains-all.sql +14 -0
  69. package/lib/Adapters/Storage/Postgres/sql/array/contains.sql +11 -0
  70. package/lib/Adapters/Storage/Postgres/sql/array/remove.sql +11 -0
  71. package/lib/Adapters/Storage/Postgres/sql/index.js +32 -0
  72. package/lib/Adapters/Storage/Postgres/sql/misc/json-object-set-keys.sql +19 -0
  73. package/lib/Adapters/Storage/StorageAdapter.js +2 -0
  74. package/lib/Adapters/WebSocketServer/WSAdapter.js +35 -0
  75. package/lib/Adapters/WebSocketServer/WSSAdapter.js +66 -0
  76. package/lib/Auth.js +687 -0
  77. package/lib/AuthDataLock.js +53 -0
  78. package/lib/ClientSDK.js +39 -0
  79. package/lib/Config.js +879 -0
  80. package/lib/Controllers/AdaptableController.js +72 -0
  81. package/lib/Controllers/AnalyticsController.js +43 -0
  82. package/lib/Controllers/CacheController.js +71 -0
  83. package/lib/Controllers/DatabaseController.js +1685 -0
  84. package/lib/Controllers/FilesController.js +122 -0
  85. package/lib/Controllers/HooksController.js +254 -0
  86. package/lib/Controllers/LiveQueryController.js +72 -0
  87. package/lib/Controllers/LoggerController.js +222 -0
  88. package/lib/Controllers/ParseGraphQLController.js +294 -0
  89. package/lib/Controllers/PushController.js +224 -0
  90. package/lib/Controllers/SchemaController.js +1563 -0
  91. package/lib/Controllers/UserController.js +364 -0
  92. package/lib/Controllers/index.js +251 -0
  93. package/lib/Controllers/types.js +2 -0
  94. package/lib/Deprecator/Deprecations.js +100 -0
  95. package/lib/Deprecator/Deprecator.js +140 -0
  96. package/lib/Error.js +50 -0
  97. package/lib/FileUrlValidator.js +69 -0
  98. package/lib/GraphQL/ParseGraphQLSchema.js +375 -0
  99. package/lib/GraphQL/ParseGraphQLServer.js +241 -0
  100. package/lib/GraphQL/helpers/objectsMutations.js +30 -0
  101. package/lib/GraphQL/helpers/objectsQueries.js +246 -0
  102. package/lib/GraphQL/helpers/queryComplexity.js +138 -0
  103. package/lib/GraphQL/loaders/configMutations.js +87 -0
  104. package/lib/GraphQL/loaders/configQueries.js +79 -0
  105. package/lib/GraphQL/loaders/defaultGraphQLMutations.js +21 -0
  106. package/lib/GraphQL/loaders/defaultGraphQLQueries.js +23 -0
  107. package/lib/GraphQL/loaders/defaultGraphQLTypes.js +1099 -0
  108. package/lib/GraphQL/loaders/defaultRelaySchema.js +53 -0
  109. package/lib/GraphQL/loaders/filesMutations.js +107 -0
  110. package/lib/GraphQL/loaders/functionsMutations.js +77 -0
  111. package/lib/GraphQL/loaders/parseClassMutations.js +267 -0
  112. package/lib/GraphQL/loaders/parseClassQueries.js +126 -0
  113. package/lib/GraphQL/loaders/parseClassTypes.js +493 -0
  114. package/lib/GraphQL/loaders/schemaDirectives.js +62 -0
  115. package/lib/GraphQL/loaders/schemaMutations.js +161 -0
  116. package/lib/GraphQL/loaders/schemaQueries.js +80 -0
  117. package/lib/GraphQL/loaders/schemaTypes.js +341 -0
  118. package/lib/GraphQL/loaders/usersMutations.js +433 -0
  119. package/lib/GraphQL/loaders/usersQueries.js +90 -0
  120. package/lib/GraphQL/parseGraphQLUtils.js +71 -0
  121. package/lib/GraphQL/transformers/className.js +14 -0
  122. package/lib/GraphQL/transformers/constraintType.js +53 -0
  123. package/lib/GraphQL/transformers/inputType.js +51 -0
  124. package/lib/GraphQL/transformers/mutation.js +280 -0
  125. package/lib/GraphQL/transformers/outputType.js +51 -0
  126. package/lib/GraphQL/transformers/query.js +237 -0
  127. package/lib/GraphQL/transformers/schemaFields.js +99 -0
  128. package/lib/InstallationDedup.js +178 -0
  129. package/lib/KeyPromiseQueue.js +48 -0
  130. package/lib/LiveQuery/Client.js +90 -0
  131. package/lib/LiveQuery/Id.js +20 -0
  132. package/lib/LiveQuery/ParseCloudCodePublisher.js +54 -0
  133. package/lib/LiveQuery/ParseLiveQueryServer.js +1071 -0
  134. package/lib/LiveQuery/ParsePubSub.js +37 -0
  135. package/lib/LiveQuery/ParseWebSocketServer.js +66 -0
  136. package/lib/LiveQuery/QueryTools.js +443 -0
  137. package/lib/LiveQuery/RequestSchema.js +161 -0
  138. package/lib/LiveQuery/SessionTokenCache.js +51 -0
  139. package/lib/LiveQuery/Subscription.js +47 -0
  140. package/lib/LiveQuery/equalObjects.js +50 -0
  141. package/lib/Options/Definitions.js +1599 -0
  142. package/lib/Options/docs.js +389 -0
  143. package/lib/Options/index.js +12 -0
  144. package/lib/Options/parsers.js +89 -0
  145. package/lib/Page.js +44 -0
  146. package/lib/ParseMessageQueue.js +24 -0
  147. package/lib/ParseServer.js +632 -0
  148. package/lib/ParseServerRESTController.js +173 -0
  149. package/lib/PromiseRouter.js +208 -0
  150. package/lib/Push/PushQueue.js +67 -0
  151. package/lib/Push/PushWorker.js +101 -0
  152. package/lib/Push/utils.js +129 -0
  153. package/lib/RestQuery.js +1208 -0
  154. package/lib/RestWrite.js +1671 -0
  155. package/lib/Routers/AggregateRouter.js +150 -0
  156. package/lib/Routers/AnalyticsRouter.js +26 -0
  157. package/lib/Routers/AudiencesRouter.js +54 -0
  158. package/lib/Routers/ClassesRouter.js +191 -0
  159. package/lib/Routers/CloudCodeRouter.js +87 -0
  160. package/lib/Routers/FeaturesRouter.js +72 -0
  161. package/lib/Routers/FilesRouter.js +772 -0
  162. package/lib/Routers/FunctionsRouter.js +341 -0
  163. package/lib/Routers/GlobalConfigRouter.js +123 -0
  164. package/lib/Routers/GraphQLRouter.js +41 -0
  165. package/lib/Routers/HooksRouter.js +121 -0
  166. package/lib/Routers/IAPValidationRouter.js +113 -0
  167. package/lib/Routers/InstallationsRouter.js +46 -0
  168. package/lib/Routers/LogsRouter.js +57 -0
  169. package/lib/Routers/PagesRouter.js +676 -0
  170. package/lib/Routers/PurgeRouter.js +45 -0
  171. package/lib/Routers/PushRouter.js +75 -0
  172. package/lib/Routers/RolesRouter.js +33 -0
  173. package/lib/Routers/SchemasRouter.js +118 -0
  174. package/lib/Routers/SecurityRouter.js +34 -0
  175. package/lib/Routers/SessionsRouter.js +126 -0
  176. package/lib/Routers/UsersRouter.js +733 -0
  177. package/lib/SchemaMigrations/DefinedSchemas.js +379 -0
  178. package/lib/SchemaMigrations/Migrations.js +30 -0
  179. package/lib/Security/Check.js +109 -0
  180. package/lib/Security/CheckGroup.js +44 -0
  181. package/lib/Security/CheckGroups/CheckGroupDatabase.js +44 -0
  182. package/lib/Security/CheckGroups/CheckGroupServerConfig.js +160 -0
  183. package/lib/Security/CheckGroups/CheckGroups.js +21 -0
  184. package/lib/Security/CheckRunner.js +213 -0
  185. package/lib/SharedRest.js +34 -0
  186. package/lib/StatusHandler.js +329 -0
  187. package/lib/TestUtils.js +87 -0
  188. package/lib/Utils.js +577 -0
  189. package/lib/batch.js +185 -0
  190. package/lib/cache.js +12 -0
  191. package/lib/cli/definitions/parse-live-query-server.js +9 -0
  192. package/lib/cli/definitions/parse-server.js +9 -0
  193. package/lib/cli/parse-live-query-server.js +14 -0
  194. package/lib/cli/parse-server.js +101 -0
  195. package/lib/cli/utils/commander.js +132 -0
  196. package/lib/cli/utils/runner.js +53 -0
  197. package/lib/cloud-code/Parse.Cloud.js +797 -0
  198. package/lib/cloud-code/Parse.Server.js +21 -0
  199. package/lib/cryptoUtils.js +54 -0
  200. package/lib/defaults.js +58 -0
  201. package/lib/deprecated.js +12 -0
  202. package/lib/index.js +89 -0
  203. package/lib/logger.js +40 -0
  204. package/lib/middlewares.js +810 -0
  205. package/lib/password.js +40 -0
  206. package/lib/request.js +175 -0
  207. package/lib/requiredParameter.js +11 -0
  208. package/lib/rest.js +264 -0
  209. package/lib/triggers.js +949 -0
  210. package/lib/vendor/README.md +8 -0
  211. package/lib/vendor/mongodbUrl.js +1012 -0
  212. package/package.json +172 -0
  213. package/postinstall.js +38 -0
  214. package/public/custom_json.html +17 -0
  215. package/public/custom_json.json +23 -0
  216. package/public/custom_page.html +15 -0
  217. package/public/de/email_verification_link_expired.html +24 -0
  218. package/public/de/email_verification_link_invalid.html +21 -0
  219. package/public/de/email_verification_send_fail.html +21 -0
  220. package/public/de/email_verification_send_success.html +19 -0
  221. package/public/de/email_verification_success.html +18 -0
  222. package/public/de/password_reset.html +65 -0
  223. package/public/de/password_reset_link_invalid.html +19 -0
  224. package/public/de/password_reset_success.html +18 -0
  225. package/public/de-AT/email_verification_link_expired.html +24 -0
  226. package/public/de-AT/email_verification_link_invalid.html +21 -0
  227. package/public/de-AT/email_verification_send_fail.html +21 -0
  228. package/public/de-AT/email_verification_send_success.html +19 -0
  229. package/public/de-AT/email_verification_success.html +18 -0
  230. package/public/de-AT/password_reset.html +65 -0
  231. package/public/de-AT/password_reset_link_invalid.html +19 -0
  232. package/public/de-AT/password_reset_success.html +18 -0
  233. package/public/email_verification_link_expired.html +24 -0
  234. package/public/email_verification_link_invalid.html +21 -0
  235. package/public/email_verification_send_fail.html +21 -0
  236. package/public/email_verification_send_success.html +19 -0
  237. package/public/email_verification_success.html +18 -0
  238. package/public/password_reset.html +65 -0
  239. package/public/password_reset_link_invalid.html +19 -0
  240. package/public/password_reset_success.html +18 -0
  241. package/types/@types/@parse/fs-files-adapter/index.d.ts +5 -0
  242. package/types/@types/deepcopy/index.d.ts +5 -0
  243. package/types/LiveQuery/ParseLiveQueryServer.d.ts +40 -0
  244. package/types/Options/index.d.ts +320 -0
  245. package/types/ParseServer.d.ts +65 -0
  246. package/types/eslint.config.mjs +30 -0
  247. package/types/index.d.ts +21 -0
  248. package/types/logger.d.ts +2 -0
  249. package/types/tests.ts +44 -0
  250. package/types/tsconfig.json +24 -0
  251. package/views/choose_password +215 -0
@@ -0,0 +1,121 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
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
+ var _Error = require("../Error");
11
+ 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); }
12
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
+ class HooksRouter extends _PromiseRouter.default {
14
+ createHook(aHook, config) {
15
+ return config.hooksController.createHook(aHook).then(hook => ({
16
+ response: hook
17
+ }));
18
+ }
19
+ updateHook(aHook, config) {
20
+ return config.hooksController.updateHook(aHook).then(hook => ({
21
+ response: hook
22
+ }));
23
+ }
24
+ handlePost(req) {
25
+ if (req.auth.isReadOnly) {
26
+ throw (0, _Error.createSanitizedError)(_node.Parse.Error.OPERATION_FORBIDDEN, "read-only masterKey isn't allowed to create a hook.", req.config);
27
+ }
28
+ return this.createHook(req.body || {}, req.config);
29
+ }
30
+ handleGetFunctions(req) {
31
+ var hooksController = req.config.hooksController;
32
+ if (req.params.functionName) {
33
+ return hooksController.getFunction(req.params.functionName).then(foundFunction => {
34
+ if (!foundFunction) {
35
+ throw new _node.Parse.Error(143, `no function named: ${req.params.functionName} is defined`);
36
+ }
37
+ return Promise.resolve({
38
+ response: foundFunction
39
+ });
40
+ });
41
+ }
42
+ return hooksController.getFunctions().then(functions => {
43
+ return {
44
+ response: functions || []
45
+ };
46
+ }, err => {
47
+ throw err;
48
+ });
49
+ }
50
+ handleGetTriggers(req) {
51
+ var hooksController = req.config.hooksController;
52
+ if (req.params.className && req.params.triggerName) {
53
+ return hooksController.getTrigger(req.params.className, req.params.triggerName).then(foundTrigger => {
54
+ if (!foundTrigger) {
55
+ throw new _node.Parse.Error(143, `class ${req.params.className} does not exist`);
56
+ }
57
+ return Promise.resolve({
58
+ response: foundTrigger
59
+ });
60
+ });
61
+ }
62
+ return hooksController.getTriggers().then(triggers => ({
63
+ response: triggers || []
64
+ }));
65
+ }
66
+ handleDelete(req) {
67
+ var hooksController = req.config.hooksController;
68
+ if (req.params.functionName) {
69
+ return hooksController.deleteFunction(req.params.functionName).then(() => ({
70
+ response: {}
71
+ }));
72
+ } else if (req.params.className && req.params.triggerName) {
73
+ return hooksController.deleteTrigger(req.params.className, req.params.triggerName).then(() => ({
74
+ response: {}
75
+ }));
76
+ }
77
+ return Promise.resolve({
78
+ response: {}
79
+ });
80
+ }
81
+ handleUpdate(req) {
82
+ var hook;
83
+ if (req.params.functionName && req.body?.url) {
84
+ hook = {};
85
+ hook.functionName = req.params.functionName;
86
+ hook.url = req.body.url;
87
+ } else if (req.params.className && req.params.triggerName && req.body?.url) {
88
+ hook = {};
89
+ hook.className = req.params.className;
90
+ hook.triggerName = req.params.triggerName;
91
+ hook.url = req.body.url;
92
+ } else {
93
+ throw new _node.Parse.Error(143, 'invalid hook declaration');
94
+ }
95
+ return this.updateHook(hook, req.config);
96
+ }
97
+ handlePut(req) {
98
+ if (req.auth.isReadOnly) {
99
+ throw (0, _Error.createSanitizedError)(_node.Parse.Error.OPERATION_FORBIDDEN, "read-only masterKey isn't allowed to modify a hook.", req.config);
100
+ }
101
+ var body = req.body || {};
102
+ if (body.__op == 'Delete') {
103
+ return this.handleDelete(req);
104
+ } else {
105
+ return this.handleUpdate(req);
106
+ }
107
+ }
108
+ mountRoutes() {
109
+ this.route('GET', '/hooks/functions', middleware.promiseEnforceMasterKeyAccess, this.handleGetFunctions.bind(this));
110
+ this.route('GET', '/hooks/triggers', middleware.promiseEnforceMasterKeyAccess, this.handleGetTriggers.bind(this));
111
+ this.route('GET', '/hooks/functions/:functionName', middleware.promiseEnforceMasterKeyAccess, this.handleGetFunctions.bind(this));
112
+ this.route('GET', '/hooks/triggers/:className/:triggerName', middleware.promiseEnforceMasterKeyAccess, this.handleGetTriggers.bind(this));
113
+ this.route('POST', '/hooks/functions', middleware.promiseEnforceMasterKeyAccess, this.handlePost.bind(this));
114
+ this.route('POST', '/hooks/triggers', middleware.promiseEnforceMasterKeyAccess, this.handlePost.bind(this));
115
+ this.route('PUT', '/hooks/functions/:functionName', middleware.promiseEnforceMasterKeyAccess, this.handlePut.bind(this));
116
+ this.route('PUT', '/hooks/triggers/:className/:triggerName', middleware.promiseEnforceMasterKeyAccess, this.handlePut.bind(this));
117
+ }
118
+ }
119
+ exports.HooksRouter = HooksRouter;
120
+ var _default = exports.default = HooksRouter;
121
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbm9kZSIsInJlcXVpcmUiLCJfUHJvbWlzZVJvdXRlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJtaWRkbGV3YXJlIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfRXJyb3IiLCJlIiwidCIsIldlYWtNYXAiLCJyIiwibiIsIl9fZXNNb2R1bGUiLCJvIiwiaSIsImYiLCJfX3Byb3RvX18iLCJkZWZhdWx0IiwiaGFzIiwiZ2V0Iiwic2V0IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJIb29rc1JvdXRlciIsIlByb21pc2VSb3V0ZXIiLCJjcmVhdGVIb29rIiwiYUhvb2siLCJjb25maWciLCJob29rc0NvbnRyb2xsZXIiLCJ0aGVuIiwiaG9vayIsInJlc3BvbnNlIiwidXBkYXRlSG9vayIsImhhbmRsZVBvc3QiLCJyZXEiLCJhdXRoIiwiaXNSZWFkT25seSIsImNyZWF0ZVNhbml0aXplZEVycm9yIiwiUGFyc2UiLCJFcnJvciIsIk9QRVJBVElPTl9GT1JCSURERU4iLCJib2R5IiwiaGFuZGxlR2V0RnVuY3Rpb25zIiwicGFyYW1zIiwiZnVuY3Rpb25OYW1lIiwiZ2V0RnVuY3Rpb24iLCJmb3VuZEZ1bmN0aW9uIiwiUHJvbWlzZSIsInJlc29sdmUiLCJnZXRGdW5jdGlvbnMiLCJmdW5jdGlvbnMiLCJlcnIiLCJoYW5kbGVHZXRUcmlnZ2VycyIsImNsYXNzTmFtZSIsInRyaWdnZXJOYW1lIiwiZ2V0VHJpZ2dlciIsImZvdW5kVHJpZ2dlciIsImdldFRyaWdnZXJzIiwidHJpZ2dlcnMiLCJoYW5kbGVEZWxldGUiLCJkZWxldGVGdW5jdGlvbiIsImRlbGV0ZVRyaWdnZXIiLCJoYW5kbGVVcGRhdGUiLCJ1cmwiLCJoYW5kbGVQdXQiLCJfX29wIiwibW91bnRSb3V0ZXMiLCJyb3V0ZSIsInByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzIiwiYmluZCIsImV4cG9ydHMiLCJfZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9Sb3V0ZXJzL0hvb2tzUm91dGVyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBhcnNlIH0gZnJvbSAncGFyc2Uvbm9kZSc7XG5pbXBvcnQgUHJvbWlzZVJvdXRlciBmcm9tICcuLi9Qcm9taXNlUm91dGVyJztcbmltcG9ydCAqIGFzIG1pZGRsZXdhcmUgZnJvbSAnLi4vbWlkZGxld2FyZXMnO1xuaW1wb3J0IHsgY3JlYXRlU2FuaXRpemVkRXJyb3IgfSBmcm9tICcuLi9FcnJvcic7XG5cbmV4cG9ydCBjbGFzcyBIb29rc1JvdXRlciBleHRlbmRzIFByb21pc2VSb3V0ZXIge1xuICBjcmVhdGVIb29rKGFIb29rLCBjb25maWcpIHtcbiAgICByZXR1cm4gY29uZmlnLmhvb2tzQ29udHJvbGxlci5jcmVhdGVIb29rKGFIb29rKS50aGVuKGhvb2sgPT4gKHsgcmVzcG9uc2U6IGhvb2sgfSkpO1xuICB9XG5cbiAgdXBkYXRlSG9vayhhSG9vaywgY29uZmlnKSB7XG4gICAgcmV0dXJuIGNvbmZpZy5ob29rc0NvbnRyb2xsZXIudXBkYXRlSG9vayhhSG9vaykudGhlbihob29rID0+ICh7IHJlc3BvbnNlOiBob29rIH0pKTtcbiAgfVxuXG4gIGhhbmRsZVBvc3QocmVxKSB7XG4gICAgaWYgKHJlcS5hdXRoLmlzUmVhZE9ubHkpIHtcbiAgICAgIHRocm93IGNyZWF0ZVNhbml0aXplZEVycm9yKFxuICAgICAgICBQYXJzZS5FcnJvci5PUEVSQVRJT05fRk9SQklEREVOLFxuICAgICAgICBcInJlYWQtb25seSBtYXN0ZXJLZXkgaXNuJ3QgYWxsb3dlZCB0byBjcmVhdGUgYSBob29rLlwiLFxuICAgICAgICByZXEuY29uZmlnXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jcmVhdGVIb29rKHJlcS5ib2R5IHx8IHt9LCByZXEuY29uZmlnKTtcbiAgfVxuXG4gIGhhbmRsZUdldEZ1bmN0aW9ucyhyZXEpIHtcbiAgICB2YXIgaG9va3NDb250cm9sbGVyID0gcmVxLmNvbmZpZy5ob29rc0NvbnRyb2xsZXI7XG4gICAgaWYgKHJlcS5wYXJhbXMuZnVuY3Rpb25OYW1lKSB7XG4gICAgICByZXR1cm4gaG9va3NDb250cm9sbGVyLmdldEZ1bmN0aW9uKHJlcS5wYXJhbXMuZnVuY3Rpb25OYW1lKS50aGVuKGZvdW5kRnVuY3Rpb24gPT4ge1xuICAgICAgICBpZiAoIWZvdW5kRnVuY3Rpb24pIHtcbiAgICAgICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoMTQzLCBgbm8gZnVuY3Rpb24gbmFtZWQ6ICR7cmVxLnBhcmFtcy5mdW5jdGlvbk5hbWV9IGlzIGRlZmluZWRgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHsgcmVzcG9uc2U6IGZvdW5kRnVuY3Rpb24gfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gaG9va3NDb250cm9sbGVyLmdldEZ1bmN0aW9ucygpLnRoZW4oXG4gICAgICBmdW5jdGlvbnMgPT4ge1xuICAgICAgICByZXR1cm4geyByZXNwb25zZTogZnVuY3Rpb25zIHx8IFtdIH07XG4gICAgICB9LFxuICAgICAgZXJyID0+IHtcbiAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBoYW5kbGVHZXRUcmlnZ2VycyhyZXEpIHtcbiAgICB2YXIgaG9va3NDb250cm9sbGVyID0gcmVxLmNvbmZpZy5ob29rc0NvbnRyb2xsZXI7XG4gICAgaWYgKHJlcS5wYXJhbXMuY2xhc3NOYW1lICYmIHJlcS5wYXJhbXMudHJpZ2dlck5hbWUpIHtcbiAgICAgIHJldHVybiBob29rc0NvbnRyb2xsZXJcbiAgICAgICAgLmdldFRyaWdnZXIocmVxLnBhcmFtcy5jbGFzc05hbWUsIHJlcS5wYXJhbXMudHJpZ2dlck5hbWUpXG4gICAgICAgIC50aGVuKGZvdW5kVHJpZ2dlciA9PiB7XG4gICAgICAgICAgaWYgKCFmb3VuZFRyaWdnZXIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcigxNDMsIGBjbGFzcyAke3JlcS5wYXJhbXMuY2xhc3NOYW1lfSBkb2VzIG5vdCBleGlzdGApO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHsgcmVzcG9uc2U6IGZvdW5kVHJpZ2dlciB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGhvb2tzQ29udHJvbGxlci5nZXRUcmlnZ2VycygpLnRoZW4odHJpZ2dlcnMgPT4gKHsgcmVzcG9uc2U6IHRyaWdnZXJzIHx8IFtdIH0pKTtcbiAgfVxuXG4gIGhhbmRsZURlbGV0ZShyZXEpIHtcbiAgICB2YXIgaG9va3NDb250cm9sbGVyID0gcmVxLmNvbmZpZy5ob29rc0NvbnRyb2xsZXI7XG4gICAgaWYgKHJlcS5wYXJhbXMuZnVuY3Rpb25OYW1lKSB7XG4gICAgICByZXR1cm4gaG9va3NDb250cm9sbGVyLmRlbGV0ZUZ1bmN0aW9uKHJlcS5wYXJhbXMuZnVuY3Rpb25OYW1lKS50aGVuKCgpID0+ICh7IHJlc3BvbnNlOiB7fSB9KSk7XG4gICAgfSBlbHNlIGlmIChyZXEucGFyYW1zLmNsYXNzTmFtZSAmJiByZXEucGFyYW1zLnRyaWdnZXJOYW1lKSB7XG4gICAgICByZXR1cm4gaG9va3NDb250cm9sbGVyXG4gICAgICAgIC5kZWxldGVUcmlnZ2VyKHJlcS5wYXJhbXMuY2xhc3NOYW1lLCByZXEucGFyYW1zLnRyaWdnZXJOYW1lKVxuICAgICAgICAudGhlbigoKSA9PiAoeyByZXNwb25zZToge30gfSkpO1xuICAgIH1cbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHsgcmVzcG9uc2U6IHt9IH0pO1xuICB9XG5cbiAgaGFuZGxlVXBkYXRlKHJlcSkge1xuICAgIHZhciBob29rO1xuICAgIGlmIChyZXEucGFyYW1zLmZ1bmN0aW9uTmFtZSAmJiByZXEuYm9keT8udXJsKSB7XG4gICAgICBob29rID0ge307XG4gICAgICBob29rLmZ1bmN0aW9uTmFtZSA9IHJlcS5wYXJhbXMuZnVuY3Rpb25OYW1lO1xuICAgICAgaG9vay51cmwgPSByZXEuYm9keS51cmw7XG4gICAgfSBlbHNlIGlmIChyZXEucGFyYW1zLmNsYXNzTmFtZSAmJiByZXEucGFyYW1zLnRyaWdnZXJOYW1lICYmIHJlcS5ib2R5Py51cmwpIHtcbiAgICAgIGhvb2sgPSB7fTtcbiAgICAgIGhvb2suY2xhc3NOYW1lID0gcmVxLnBhcmFtcy5jbGFzc05hbWU7XG4gICAgICBob29rLnRyaWdnZXJOYW1lID0gcmVxLnBhcmFtcy50cmlnZ2VyTmFtZTtcbiAgICAgIGhvb2sudXJsID0gcmVxLmJvZHkudXJsO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoMTQzLCAnaW52YWxpZCBob29rIGRlY2xhcmF0aW9uJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnVwZGF0ZUhvb2soaG9vaywgcmVxLmNvbmZpZyk7XG4gIH1cblxuICBoYW5kbGVQdXQocmVxKSB7XG4gICAgaWYgKHJlcS5hdXRoLmlzUmVhZE9ubHkpIHtcbiAgICAgIHRocm93IGNyZWF0ZVNhbml0aXplZEVycm9yKFxuICAgICAgICBQYXJzZS5FcnJvci5PUEVSQVRJT05fRk9SQklEREVOLFxuICAgICAgICBcInJlYWQtb25seSBtYXN0ZXJLZXkgaXNuJ3QgYWxsb3dlZCB0byBtb2RpZnkgYSBob29rLlwiLFxuICAgICAgICByZXEuY29uZmlnXG4gICAgICApO1xuICAgIH1cbiAgICB2YXIgYm9keSA9IHJlcS5ib2R5IHx8IHt9O1xuICAgIGlmIChib2R5Ll9fb3AgPT0gJ0RlbGV0ZScpIHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZURlbGV0ZShyZXEpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVVcGRhdGUocmVxKTtcbiAgICB9XG4gIH1cblxuICBtb3VudFJvdXRlcygpIHtcbiAgICB0aGlzLnJvdXRlKFxuICAgICAgJ0dFVCcsXG4gICAgICAnL2hvb2tzL2Z1bmN0aW9ucycsXG4gICAgICBtaWRkbGV3YXJlLnByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzLFxuICAgICAgdGhpcy5oYW5kbGVHZXRGdW5jdGlvbnMuYmluZCh0aGlzKVxuICAgICk7XG4gICAgdGhpcy5yb3V0ZShcbiAgICAgICdHRVQnLFxuICAgICAgJy9ob29rcy90cmlnZ2VycycsXG4gICAgICBtaWRkbGV3YXJlLnByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzLFxuICAgICAgdGhpcy5oYW5kbGVHZXRUcmlnZ2Vycy5iaW5kKHRoaXMpXG4gICAgKTtcbiAgICB0aGlzLnJvdXRlKFxuICAgICAgJ0dFVCcsXG4gICAgICAnL2hvb2tzL2Z1bmN0aW9ucy86ZnVuY3Rpb25OYW1lJyxcbiAgICAgIG1pZGRsZXdhcmUucHJvbWlzZUVuZm9yY2VNYXN0ZXJLZXlBY2Nlc3MsXG4gICAgICB0aGlzLmhhbmRsZUdldEZ1bmN0aW9ucy5iaW5kKHRoaXMpXG4gICAgKTtcbiAgICB0aGlzLnJvdXRlKFxuICAgICAgJ0dFVCcsXG4gICAgICAnL2hvb2tzL3RyaWdnZXJzLzpjbGFzc05hbWUvOnRyaWdnZXJOYW1lJyxcbiAgICAgIG1pZGRsZXdhcmUucHJvbWlzZUVuZm9yY2VNYXN0ZXJLZXlBY2Nlc3MsXG4gICAgICB0aGlzLmhhbmRsZUdldFRyaWdnZXJzLmJpbmQodGhpcylcbiAgICApO1xuICAgIHRoaXMucm91dGUoXG4gICAgICAnUE9TVCcsXG4gICAgICAnL2hvb2tzL2Z1bmN0aW9ucycsXG4gICAgICBtaWRkbGV3YXJlLnByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzLFxuICAgICAgdGhpcy5oYW5kbGVQb3N0LmJpbmQodGhpcylcbiAgICApO1xuICAgIHRoaXMucm91dGUoXG4gICAgICAnUE9TVCcsXG4gICAgICAnL2hvb2tzL3RyaWdnZXJzJyxcbiAgICAgIG1pZGRsZXdhcmUucHJvbWlzZUVuZm9yY2VNYXN0ZXJLZXlBY2Nlc3MsXG4gICAgICB0aGlzLmhhbmRsZVBvc3QuYmluZCh0aGlzKVxuICAgICk7XG4gICAgdGhpcy5yb3V0ZShcbiAgICAgICdQVVQnLFxuICAgICAgJy9ob29rcy9mdW5jdGlvbnMvOmZ1bmN0aW9uTmFtZScsXG4gICAgICBtaWRkbGV3YXJlLnByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzLFxuICAgICAgdGhpcy5oYW5kbGVQdXQuYmluZCh0aGlzKVxuICAgICk7XG4gICAgdGhpcy5yb3V0ZShcbiAgICAgICdQVVQnLFxuICAgICAgJy9ob29rcy90cmlnZ2Vycy86Y2xhc3NOYW1lLzp0cmlnZ2VyTmFtZScsXG4gICAgICBtaWRkbGV3YXJlLnByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzLFxuICAgICAgdGhpcy5oYW5kbGVQdXQuYmluZCh0aGlzKVxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgSG9va3NSb3V0ZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLEtBQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLGNBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFHLFVBQUEsR0FBQUMsdUJBQUEsQ0FBQUosT0FBQTtBQUNBLElBQUFLLE1BQUEsR0FBQUwsT0FBQTtBQUFnRCxTQUFBSSx3QkFBQUUsQ0FBQSxFQUFBQyxDQUFBLDZCQUFBQyxPQUFBLE1BQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUosdUJBQUEsWUFBQUEsQ0FBQUUsQ0FBQSxFQUFBQyxDQUFBLFNBQUFBLENBQUEsSUFBQUQsQ0FBQSxJQUFBQSxDQUFBLENBQUFLLFVBQUEsU0FBQUwsQ0FBQSxNQUFBTSxDQUFBLEVBQUFDLENBQUEsRUFBQUMsQ0FBQSxLQUFBQyxTQUFBLFFBQUFDLE9BQUEsRUFBQVYsQ0FBQSxpQkFBQUEsQ0FBQSx1QkFBQUEsQ0FBQSx5QkFBQUEsQ0FBQSxTQUFBUSxDQUFBLE1BQUFGLENBQUEsR0FBQUwsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsUUFBQUcsQ0FBQSxDQUFBSyxHQUFBLENB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
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
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');
12
+ // TODO move validation logic in IAPValidationController
13
+ const IAP_SANDBOX_URL = 'https://sandbox.itunes.apple.com/verifyReceipt';
14
+ const IAP_PRODUCTION_URL = 'https://buy.itunes.apple.com/verifyReceipt';
15
+ const APP_STORE_ERRORS = {
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.'
24
+ };
25
+ function appStoreError(status) {
26
+ status = parseInt(status);
27
+ var errorString = APP_STORE_ERRORS[status] || 'unknown error.';
28
+ return {
29
+ status: status,
30
+ error: errorString
31
+ };
32
+ }
33
+ function validateWithAppStore(url, receipt) {
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;
51
+ });
52
+ }
53
+ function getFileForProductIdentifier(productIdentifier, req) {
54
+ return rest.find(req.config, req.auth, '_Product', {
55
+ productIdentifier: productIdentifier
56
+ }, undefined, req.info.clientSDK, req.info.context).then(function (result) {
57
+ const products = result.results;
58
+ if (!products || products.length != 1) {
59
+ // Error not found or too many
60
+ throw new _node.default.Error(_node.default.Error.OBJECT_NOT_FOUND, 'Object not found.');
61
+ }
62
+ var download = products[0].download;
63
+ return Promise.resolve({
64
+ response: download
65
+ });
66
+ });
67
+ }
68
+ class IAPValidationRouter extends _PromiseRouter.default {
69
+ handleRequest(req) {
70
+ let receipt = req.body?.receipt;
71
+ const productIdentifier = req.body?.productIdentifier;
72
+ if (!receipt || !productIdentifier) {
73
+ // TODO: Error, malformed request
74
+ throw new _node.default.Error(_node.default.Error.INVALID_JSON, 'missing receipt or productIdentifier');
75
+ }
76
+
77
+ // Transform the object if there
78
+ // otherwise assume it's in Base64 already
79
+ if (typeof receipt == 'object') {
80
+ if (receipt['__type'] == 'Bytes') {
81
+ receipt = receipt.base64;
82
+ }
83
+ }
84
+ if (process.env.TESTING == '1' && req.body?.bypassAppStoreValidation) {
85
+ return getFileForProductIdentifier(productIdentifier, req);
86
+ }
87
+ function successCallback() {
88
+ return getFileForProductIdentifier(productIdentifier, req);
89
+ }
90
+ function errorCallback(error) {
91
+ return Promise.resolve({
92
+ response: appStoreError(error.status)
93
+ });
94
+ }
95
+ return validateWithAppStore(IAP_PRODUCTION_URL, receipt).then(() => {
96
+ return successCallback();
97
+ }, error => {
98
+ if (error.status == 21007) {
99
+ return validateWithAppStore(IAP_SANDBOX_URL, receipt).then(() => {
100
+ return successCallback();
101
+ }, error => {
102
+ return errorCallback(error);
103
+ });
104
+ }
105
+ return errorCallback(error);
106
+ });
107
+ }
108
+ mountRoutes() {
109
+ this.route('POST', '/validate_purchase', this.handleRequest);
110
+ }
111
+ }
112
+ exports.IAPValidationRouter = IAPValidationRouter;
113
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfUHJvbWlzZVJvdXRlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX25vZGUiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJyZXF1ZXN0IiwicmVzdCIsIklBUF9TQU5EQk9YX1VSTCIsIklBUF9QUk9EVUNUSU9OX1VSTCIsIkFQUF9TVE9SRV9FUlJPUlMiLCJhcHBTdG9yZUVycm9yIiwic3RhdHVzIiwicGFyc2VJbnQiLCJlcnJvclN0cmluZyIsImVycm9yIiwidmFsaWRhdGVXaXRoQXBwU3RvcmUiLCJ1cmwiLCJyZWNlaXB0IiwibWV0aG9kIiwiYm9keSIsImhlYWRlcnMiLCJ0aGVuIiwiaHR0cFJlc3BvbnNlIiwiZGF0YSIsImdldEZpbGVGb3JQcm9kdWN0SWRlbnRpZmllciIsInByb2R1Y3RJZGVudGlmaWVyIiwicmVxIiwiZmluZCIsImNvbmZpZyIsImF1dGgiLCJ1bmRlZmluZWQiLCJpbmZvIiwiY2xpZW50U0RLIiwiY29udGV4dCIsInJlc3VsdCIsInByb2R1Y3RzIiwicmVzdWx0cyIsImxlbmd0aCIsIlBhcnNlIiwiRXJyb3IiLCJPQkpFQ1RfTk9UX0ZPVU5EIiwiZG93bmxvYWQiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlc3BvbnNlIiwiSUFQVmFsaWRhdGlvblJvdXRlciIsIlByb21pc2VSb3V0ZXIiLCJoYW5kbGVSZXF1ZXN0IiwiSU5WQUxJRF9KU09OIiwiYmFzZTY0IiwicHJvY2VzcyIsImVudiIsIlRFU1RJTkciLCJieXBhc3NBcHBTdG9yZVZhbGlkYXRpb24iLCJzdWNjZXNzQ2FsbGJhY2siLCJlcnJvckNhbGxiYWNrIiwibW91bnRSb3V0ZXMiLCJyb3V0ZSIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvUm91dGVycy9JQVBWYWxpZGF0aW9uUm91dGVyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBQcm9taXNlUm91dGVyIGZyb20gJy4uL1Byb21pc2VSb3V0ZXInO1xuY29uc3QgcmVxdWVzdCA9IHJlcXVpcmUoJy4uL3JlcXVlc3QnKTtcbmNvbnN0IHJlc3QgPSByZXF1aXJlKCcuLi9yZXN0Jyk7XG5pbXBvcnQgUGFyc2UgZnJvbSAncGFyc2Uvbm9kZSc7XG5cbi8vIFRPRE8gbW92ZSB2YWxpZGF0aW9uIGxvZ2ljIGluIElBUFZhbGlkYXRpb25Db250cm9sbGVyXG5jb25zdCBJQVBfU0FOREJPWF9VUkwgPSAnaHR0cHM6Ly9zYW5kYm94Lml0dW5lcy5hcHBsZS5jb20vdmVyaWZ5UmVjZWlwdCc7XG5jb25zdCBJQVBfUFJPRFVDVElPTl9VUkwgPSAnaHR0cHM6Ly9idXkuaXR1bmVzLmFwcGxlLmNvbS92ZXJpZnlSZWNlaXB0JztcblxuY29uc3QgQVBQX1NUT1JFX0VSUk9SUyA9IHtcbiAgMjEwMDA6ICdUaGUgQXBwIFN0b3JlIGNvdWxkIG5vdCByZWFkIHRoZSBKU09OIG9iamVjdCB5b3UgcHJvdmlkZWQuJyxcbiAgMjEwMDI6ICdUaGUgZGF0YSBpbiB0aGUgcmVjZWlwdC1kYXRhIHByb3BlcnR5IHdhcyBtYWxmb3JtZWQgb3IgbWlzc2luZy4nLFxuICAyMTAwMzogJ1RoZSByZWNlaXB0IGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkLicsXG4gIDIxMDA0OiAnVGhlIHNoYXJlZCBzZWNyZXQgeW91IHByb3ZpZGVkIGRvZXMgbm90IG1hdGNoIHRoZSBzaGFyZWQgc2VjcmV0IG9uIGZpbGUgZm9yIHlvdXIgYWNjb3VudC4nLFxuICAyMTAwNTogJ1RoZSByZWNlaXB0IHNlcnZlciBpcyBub3QgY3VycmVudGx5IGF2YWlsYWJsZS4nLFxuICAyMTAwNjogJ1RoaXMgcmVjZWlwdCBpcyB2YWxpZCBidXQgdGhlIHN1YnNjcmlwdGlvbiBoYXMgZXhwaXJlZC4nLFxuICAyMTAwNzogJ1RoaXMgcmVjZWlwdCBpcyBmcm9tIHRoZSB0ZXN0IGVudmlyb25tZW50LCBidXQgaXQgd2FzIHNlbnQgdG8gdGhlIHByb2R1Y3Rpb24gZW52aXJvbm1lbnQgZm9yIHZlcmlmaWNhdGlvbi4gU2VuZCBpdCB0byB0aGUgdGVzdCBlbnZpcm9ubWVudCBpbnN0ZWFkLicsXG4gIDIxMDA4OiAnVGhpcyByZWNlaXB0IGlzIGZyb20gdGhlIHByb2R1Y3Rpb24gZW52aXJvbm1lbnQsIGJ1dCBpdCB3YXMgc2VudCB0byB0aGUgdGVzdCBlbnZpcm9ubWVudCBmb3IgdmVyaWZpY2F0aW9uLiBTZW5kIGl0IHRvIHRoZSBwcm9kdWN0aW9uIGVudmlyb25tZW50IGluc3RlYWQuJyxcbn07XG5cbmZ1bmN0aW9uIGFwcFN0b3JlRXJyb3Ioc3RhdHVzKSB7XG4gIHN0YXR1cyA9IHBhcnNlSW50KHN0YXR1cyk7XG4gIHZhciBlcnJvclN0cmluZyA9IEFQUF9TVE9SRV9FUlJPUlNbc3RhdHVzXSB8fCAndW5rbm93biBlcnJvci4nO1xuICByZXR1cm4geyBzdGF0dXM6IHN0YXR1cywgZXJyb3I6IGVycm9yU3RyaW5nIH07XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlV2l0aEFwcFN0b3JlKHVybCwgcmVjZWlwdCkge1xuICByZXR1cm4gcmVxdWVzdCh7XG4gICAgdXJsOiB1cmwsXG4gICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgYm9keTogeyAncmVjZWlwdC1kYXRhJzogcmVjZWlwdCB9LFxuICAgIGhlYWRlcnM6IHtcbiAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgfSxcbiAgfSkudGhlbihodHRwUmVzcG9uc2UgPT4ge1xuICAgIGNvbnN0IGJvZHkgPSBodHRwUmVzcG9uc2UuZGF0YTtcbiAgICBpZiAoYm9keSAmJiBib2R5LnN0YXR1cyA9PT0gMCkge1xuICAgICAgLy8gTm8gbmVlZCB0byBwYXNzIGFueXRoaW5nLCBzdGF0dXMgaXMgT0tcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gcmVjZWlwdCBpcyBmcm9tIHRlc3QgYW5kIHNob3VsZCBnbyB0byB0ZXN0XG4gICAgdGhyb3cgYm9keTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGdldEZpbGVGb3JQcm9kdWN0SWRlbnRpZmllcihwcm9kdWN0SWRlbnRpZmllciwgcmVxKSB7XG4gIHJldHVybiByZXN0XG4gICAgLmZpbmQoXG4gICAgICByZXEuY29uZmlnLFxuICAgICAgcmVxLmF1dGgsXG4gICAgICAnX1Byb2R1Y3QnLFxuICAgICAgeyBwcm9kdWN0SWRlbnRpZmllcjogcHJvZHVjdElkZW50aWZpZXIgfSxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIHJlcS5pbmZvLmNsaWVudFNESyxcbiAgICAgIHJlcS5pbmZvLmNvbnRleHRcbiAgICApXG4gICAgLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgY29uc3QgcHJvZHVjdHMgPSByZXN1bHQucmVzdWx0cztcbiAgICAgIGlmICghcHJvZHVjdHMgfHwgcHJvZHVjdHMubGVuZ3RoICE9IDEpIHtcbiAgICAgICAgLy8gRXJyb3Igbm90IGZvdW5kIG9yIHRvbyBtYW55XG4gICAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5ELCAnT2JqZWN0IG5vdCBmb3VuZC4nKTtcbiAgICAgIH1cblxuICAgICAgdmFyIGRvd25sb2FkID0gcHJvZHVjdHNbMF0uZG93bmxvYWQ7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHsgcmVzcG9uc2U6IGRvd25sb2FkIH0pO1xuICAgIH0pO1xufVxuXG5leHBvcnQgY2xhc3MgSUFQVmFsaWRhdGlvblJvdXRlciBleHRlbmRzIFByb21pc2VSb3V0ZXIge1xuICBoYW5kbGVSZXF1ZXN0KHJlcSkge1xuICAgIGxldCByZWNlaXB0ID0gcmVxLmJvZHk/LnJlY2VpcHQ7XG4gICAgY29uc3QgcHJvZHVjdElkZW50aWZpZXIgPSByZXEuYm9keT8ucHJvZHVjdElkZW50aWZpZXI7XG5cbiAgICBpZiAoIXJlY2VpcHQgfHwgIXByb2R1Y3RJZGVudGlmaWVyKSB7XG4gICAgICAvLyBUT0RPOiBFcnJvciwgbWFsZm9ybWVkIHJlcXVlc3RcbiAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5JTlZBTElEX0pTT04sICdtaXNzaW5nIHJlY2VpcHQgb3IgcHJvZHVjdElkZW50aWZpZXInKTtcbiAgICB9XG5cbiAgICAvLyBUcmFuc2Zvcm0gdGhlIG9iamVjdCBpZiB0aGVyZVxuICAgIC8vIG90aGVyd2lzZSBhc3N1bWUgaXQncyBpbiBCYXNlNjQgYWxyZWFkeVxuICAgIGlmICh0eXBlb2YgcmVjZWlwdCA9PSAnb2JqZWN0Jykge1xuICAgICAgaWYgKHJlY2VpcHRbJ19fdHlwZSddID09ICdCeXRlcycpIHtcbiAgICAgICAgcmVjZWlwdCA9IHJlY2VpcHQuYmFzZTY0O1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChwcm9jZXNzLmVudi5URVNUSU5HID09ICcxJyAmJiByZXEuYm9keT8uYnlwYXNzQXBwU3RvcmVWYWxpZGF0aW9uKSB7XG4gICAgICByZXR1cm4gZ2V0RmlsZUZvclByb2R1Y3RJZGVudGlmaWVyKHByb2R1Y3RJZGVudGlmaWVyLCByZXEpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHN1Y2Nlc3NDYWxsYmFjaygpIHtcbiAgICAgIHJldHVybiBnZXRGaWxlRm9yUHJvZHVjdElkZW50aWZpZXIocHJvZHVjdElkZW50aWZpZXIsIHJlcSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZXJyb3JDYWxsYmFjayhlcnJvcikge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7IHJlc3BvbnNlOiBhcHBTdG9yZUVycm9yKGVycm9yLnN0YXR1cykgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkYXRlV2l0aEFwcFN0b3JlKElBUF9QUk9EVUNUSU9OX1VSTCwgcmVjZWlwdCkudGhlbihcbiAgICAgICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHN1Y2Nlc3NDYWxsYmFjaygpO1xuICAgICAgfSxcbiAgICAgIGVycm9yID0+IHtcbiAgICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PSAyMTAwNykge1xuICAgICAgICAgIHJldHVybiB2YWxpZGF0ZVdpdGhBcHBTdG9yZShJQVBfU0FOREJPWF9VUkwsIHJlY2VpcHQpLnRoZW4oXG4gICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiBzdWNjZXNzQ2FsbGJhY2soKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnJvciA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiBlcnJvckNhbGxiYWNrKGVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGVycm9yQ2FsbGJhY2soZXJyb3IpO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBtb3VudFJvdXRlcygpIHtcbiAgICB0aGlzLnJvdXRlKCdQT1NUJywgJy92YWxpZGF0ZV9wdXJjaGFzZScsIHRoaXMuaGFuZGxlUmVxdWVzdCk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsY0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBR0EsSUFBQUMsS0FBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQStCLFNBQUFELHVCQUFBRyxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsS0FBQUUsT0FBQSxFQUFBRixDQUFBO0FBRi9CLE1BQU1HLE9BQU8sR0FBR0wsT0FBTyxDQUFDLFlBQVksQ0FBQztBQUNyQyxNQUFNTSxJQUFJLEdBQUdOLE9BQU8sQ0FBQyxTQUFTLENBQUM7QUFHL0I7QUFDQSxNQUFNTyxlQUFlLEdBQUcsZ0RBQWdEO0FBQ3hFLE1BQU1DLGtCQUFrQixHQUFHLDRDQUE0QztBQUV2RSxNQUFNQyxnQkFBZ0IsR0FBRztFQUN2QixLQUFLLEVBQUUsNERBQTREO0VBQ25FLEtBQUssRUFBRSxpRUFBaUU7RUFDeEUsS0FBSyxFQUFFLHlDQUF5QztFQUNoRCxLQUFLLEVBQUUsMkZBQTJGO0VBQ2xHLEtBQUssRUFBRSxnREFBZ0Q7RUFDdkQsS0FBSyxFQUFFLHlEQUF5RDtFQUNoRSxLQUFLLEVBQUUscUpBQXFKO0VBQzVKLEtB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
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
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 }; }
11
+ // InstallationsRouter.js
12
+
13
+ class InstallationsRouter extends _ClassesRouter.default {
14
+ className() {
15
+ return '_Installation';
16
+ }
17
+ handleFind(req) {
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
+ };
24
+ });
25
+ }
26
+ mountRoutes() {
27
+ this.route('GET', '/installations', req => {
28
+ return this.handleFind(req);
29
+ });
30
+ this.route('GET', '/installations/:objectId', req => {
31
+ return this.handleGet(req);
32
+ });
33
+ this.route('POST', '/installations', _middlewares.promiseEnsureIdempotency, req => {
34
+ return this.handleCreate(req);
35
+ });
36
+ this.route('PUT', '/installations/:objectId', _middlewares.promiseEnsureIdempotency, req => {
37
+ return this.handleUpdate(req);
38
+ });
39
+ this.route('DELETE', '/installations/:objectId', req => {
40
+ return this.handleDelete(req);
41
+ });
42
+ }
43
+ }
44
+ exports.InstallationsRouter = InstallationsRouter;
45
+ var _default = exports.default = InstallationsRouter;
46
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfQ2xhc3Nlc1JvdXRlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX3Jlc3QiLCJfbWlkZGxld2FyZXMiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJJbnN0YWxsYXRpb25zUm91dGVyIiwiQ2xhc3Nlc1JvdXRlciIsImNsYXNzTmFtZSIsImhhbmRsZUZpbmQiLCJyZXEiLCJib2R5IiwiT2JqZWN0IiwiYXNzaWduIiwiSlNPTkZyb21RdWVyeSIsInF1ZXJ5Iiwib3B0aW9ucyIsIm9wdGlvbnNGcm9tQm9keSIsImNvbmZpZyIsImRlZmF1bHRMaW1pdCIsInJlc3QiLCJmaW5kIiwiYXV0aCIsIndoZXJlIiwiaW5mbyIsImNsaWVudFNESyIsImNvbnRleHQiLCJ0aGVuIiwicmVzcG9uc2UiLCJtb3VudFJvdXRlcyIsInJvdXRlIiwiaGFuZGxlR2V0IiwicHJvbWlzZUVuc3VyZUlkZW1wb3RlbmN5IiwiaGFuZGxlQ3JlYXRlIiwiaGFuZGxlVXBkYXRlIiwiaGFuZGxlRGVsZXRlIiwiZXhwb3J0cyIsIl9kZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL1JvdXRlcnMvSW5zdGFsbGF0aW9uc1JvdXRlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJbnN0YWxsYXRpb25zUm91dGVyLmpzXG5cbmltcG9ydCBDbGFzc2VzUm91dGVyIGZyb20gJy4vQ2xhc3Nlc1JvdXRlcic7XG5pbXBvcnQgcmVzdCBmcm9tICcuLi9yZXN0JztcbmltcG9ydCB7IHByb21pc2VFbnN1cmVJZGVtcG90ZW5jeSB9IGZyb20gJy4uL21pZGRsZXdhcmVzJztcblxuZXhwb3J0IGNsYXNzIEluc3RhbGxhdGlvbnNSb3V0ZXIgZXh0ZW5kcyBDbGFzc2VzUm91dGVyIHtcbiAgY2xhc3NOYW1lKCkge1xuICAgIHJldHVybiAnX0luc3RhbGxhdGlvbic7XG4gIH1cblxuICBoYW5kbGVGaW5kKHJlcSkge1xuICAgIGNvbnN0IGJvZHkgPSBPYmplY3QuYXNzaWduKHJlcS5ib2R5IHx8IHt9LCBDbGFzc2VzUm91dGVyLkpTT05Gcm9tUXVlcnkocmVxLnF1ZXJ5KSk7XG4gICAgY29uc3Qgb3B0aW9ucyA9IENsYXNzZXNSb3V0ZXIub3B0aW9uc0Zyb21Cb2R5KGJvZHksIHJlcS5jb25maWcuZGVmYXVsdExpbWl0KTtcbiAgICByZXR1cm4gcmVzdFxuICAgICAgLmZpbmQoXG4gICAgICAgIHJlcS5jb25maWcsXG4gICAgICAgIHJlcS5hdXRoLFxuICAgICAgICAnX0luc3RhbGxhdGlvbicsXG4gICAgICAgIGJvZHkud2hlcmUsXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICAgIHJlcS5pbmZvLmNsaWVudFNESyxcbiAgICAgICAgcmVxLmluZm8uY29udGV4dFxuICAgICAgKVxuICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICByZXR1cm4geyByZXNwb25zZTogcmVzcG9uc2UgfTtcbiAgICAgIH0pO1xuICB9XG5cbiAgbW91bnRSb3V0ZXMoKSB7XG4gICAgdGhpcy5yb3V0ZSgnR0VUJywgJy9pbnN0YWxsYXRpb25zJywgcmVxID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZUZpbmQocmVxKTtcbiAgICB9KTtcbiAgICB0aGlzLnJvdXRlKCdHRVQnLCAnL2luc3RhbGxhdGlvbnMvOm9iamVjdElkJywgcmVxID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZUdldChyZXEpO1xuICAgIH0pO1xuICAgIHRoaXMucm91dGUoJ1BPU1QnLCAnL2luc3RhbGxhdGlvbnMnLCBwcm9taXNlRW5zdXJlSWRlbXBvdGVuY3ksIHJlcSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVDcmVhdGUocmVxKTtcbiAgICB9KTtcbiAgICB0aGlzLnJvdXRlKCdQVVQnLCAnL2luc3RhbGxhdGlvbnMvOm9iamVjdElkJywgcHJvbWlzZUVuc3VyZUlkZW1wb3RlbmN5LCByZXEgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlVXBkYXRlKHJlcSk7XG4gICAgfSk7XG4gICAgdGhpcy5yb3V0ZSgnREVMRVRFJywgJy9pbnN0YWxsYXRpb25zLzpvYmplY3RJZCcsIHJlcSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVEZWxldGUocmVxKTtcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBJbnN0YWxsYXRpb25zUm91dGVyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFFQSxJQUFBQSxjQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxLQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRSxZQUFBLEdBQUFGLE9BQUE7QUFBMEQsU0FBQUQsdUJBQUFJLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxLQUFBRSxPQUFBLEVBQUFGLENBQUE7QUFKMUQ7O0FBTU8sTUFBTUcsbUJBQW1CLFNBQVNDLHNCQUFhLENBQUM7RUFDckRDLFNBQVNBLENBQUEsRUFBRztJQUNWLE9BQU8sZUFBZTtFQUN4QjtFQUVBQyxVQUFVQSxDQUFDQyxHQUFHLEVBQUU7SUFDZCxNQUFNQyxJQUFJLEdBQUdDLE1BQU0sQ0FBQ0MsTUFBTSxDQUFDSCxHQUFHLENBQUNDLElBQUksSUFBSSxDQUFDLENBQUMsRUFBRUosc0JBQWEsQ0FBQ08sYUFBYSxDQUFDSixHQUFHLENBQUNLLEtBQUssQ0FBQyxDQUFDO0lBQ2xGLE1BQU1DLE9BQU8sR0FBR1Qsc0JBQWEsQ0FBQ1UsZUFBZSxDQUFDTixJQUFJLEVBQUVELEdBQUcsQ0FBQ1EsTUFBTSxDQUFDQyxZQUFZLENBQUM7SUFDNUUsT0FBT0MsYUFBSSxDQUNSQyxJQUFJLENBQ0hYLEdBQUcsQ0FBQ1EsTUFBTSxFQUNWUixHQUFHLENBQUNZLElBQUksRUFDUixlQUFlLEVBQ2ZYLElBQUksQ0FBQ1ksS0FBSyxFQUNWUCxPQUFPLEVBQ1BOLEdBQUcsQ0FBQ2MsSUFBSSxDQUFDQyxTQUFTLEVBQ2xCZixHQUFHLENBQUNjLElBQUksQ0FBQ0UsT0FDWCxDQUFDLENBQ0FDLElBQUksQ0FBQ0MsUUFBUSxJQUFJO01BQ2hCLE9BQU87UUFBRUEsUUFBUSxFQUFFQTtNQUFTLENBQUM7SUFDL0IsQ0FBQyxDQUFDO0VBQ047RUFFQUMsV0FBV0EsQ0FBQSxFQUFHO0lBQ1osSUFBSSxDQUFDQyxLQUFLLENBQUMsS0FBSyxFQUFFLGdCQUFnQixFQUFFcEIsR0FBRyxJQUFJO01BQ3pDLE9BQU8sSUFBSSxDQUFDRCxVQUFVLENBQUNDLEdBQUcsQ0FBQztJQUM3QixDQUFDLENBQUM7SUFDRixJQUFJLENBQUNvQixLQUFLLENBQUMsS0FBSyxFQUFFLDBCQUEwQixFQUFFcEIsR0FBRyxJQUFJO01BQ25ELE9BQU8sSUFBSSxDQUFDcUIsU0FBUyxDQUFDckIsR0FBRyxDQUFDO0lBQzVCLENBQUMsQ0FBQztJQUNGLElBQUksQ0FBQ29CLEtBQUssQ0FBQyxNQUFNLEVBQUUsZ0JBQWdCLEVBQUVFLHFDQUF3QixFQUFFdEIsR0FBRyxJQUFJO01BQ3BFLE9BQU8sSUFBSSxDQUFDdUIsWUFBWSxDQUFDdkIsR0FBRyxDQUFDO0lBQy9CLENBQUMsQ0FBQztJQUNGLElBQUksQ0FBQ29CLEtBQUssQ0FBQyxLQUFLLEVBQUUsMEJBQTBCLEVBQUVFLHFDQUF3QixFQUFFdEIsR0FBRyxJQUFJO01BQzdFLE9BQU8sSUFBSSxDQUFDd0IsWUFBWSxDQUFDeEIsR0FBRyxDQUFDO0lBQy9CLENBQUMsQ0FBQztJQUNGLElBQUksQ0FBQ29CLEtBQUssQ0FBQyxRQUFRLEVBQUUsMEJBQTBCLEVBQUVwQixHQUFHLElBQUk7TUFDdEQsT0FBTyxJQUFJLENBQUN5QixZQUFZLENBQUN6QixHQUFHLENBQUM7SUFDL0IsQ0FBQyxDQUFDO0VBQ0o7QUFDRjtBQUFDMEIsT0FBQSxDQUFBOUIsbUJBQUEsR0FBQUEsbUJBQUE7QUFBQSxJQUFBK0IsUUFBQSxHQUFBRCxPQUFBLENBQUEvQixPQUFBLEdBRWNDLG1CQUFtQiIsImlnbm9yZUxpc3QiOltdfQ==
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
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 {
13
+ mountRoutes() {
14
+ this.route('GET', '/scriptlog', middleware.promiseEnforceMasterKeyAccess, this.validateRequest, req => {
15
+ return this.handleGET(req);
16
+ });
17
+ }
18
+ validateRequest(req) {
19
+ if (!req.config || !req.config.loggerController) {
20
+ throw new _node.Parse.Error(_node.Parse.Error.PUSH_MISCONFIGURED, 'Logger adapter is not available');
21
+ }
22
+ }
23
+
24
+ // Returns a promise for a {response} object.
25
+ // query params:
26
+ // level (optional) Level of logging you want to query for (info || error)
27
+ // from (optional) Start time for the search. Defaults to 1 week ago.
28
+ // until (optional) End time for the search. Defaults to current time.
29
+ // order (optional) Direction of results returned, either “asc” or “desc”. Defaults to “desc”.
30
+ // size (optional) Number of rows returned by search. Defaults to 10
31
+ // n same as size, overrides size if set
32
+ handleGET(req) {
33
+ const from = req.query.from;
34
+ const until = req.query.until;
35
+ let size = req.query.size;
36
+ if (req.query.n) {
37
+ size = req.query.n;
38
+ }
39
+ const order = req.query.order;
40
+ const level = req.query.level;
41
+ const options = {
42
+ from,
43
+ until,
44
+ size,
45
+ order,
46
+ level
47
+ };
48
+ return req.config.loggerController.getLogs(options).then(result => {
49
+ return Promise.resolve({
50
+ response: result
51
+ });
52
+ });
53
+ }
54
+ }
55
+ exports.LogsRouter = LogsRouter;
56
+ var _default = exports.default = LogsRouter;
57
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbm9kZSIsInJlcXVpcmUiLCJfUHJvbWlzZVJvdXRlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJtaWRkbGV3YXJlIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJlIiwidCIsIldlYWtNYXAiLCJyIiwibiIsIl9fZXNNb2R1bGUiLCJvIiwiaSIsImYiLCJfX3Byb3RvX18iLCJkZWZhdWx0IiwiaGFzIiwiZ2V0Iiwic2V0IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJMb2dzUm91dGVyIiwiUHJvbWlzZVJvdXRlciIsIm1vdW50Um91dGVzIiwicm91dGUiLCJwcm9taXNlRW5mb3JjZU1hc3RlcktleUFjY2VzcyIsInZhbGlkYXRlUmVxdWVzdCIsInJlcSIsImhhbmRsZUdFVCIsImNvbmZpZyIsImxvZ2dlckNvbnRyb2xsZXIiLCJQYXJzZSIsIkVycm9yIiwiUFVTSF9NSVNDT05GSUdVUkVEIiwiZnJvbSIsInF1ZXJ5IiwidW50aWwiLCJzaXplIiwib3JkZXIiLCJsZXZlbCIsIm9wdGlvbnMiLCJnZXRMb2dzIiwidGhlbiIsInJlc3VsdCIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVzcG9uc2UiLCJleHBvcnRzIiwiX2RlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvUm91dGVycy9Mb2dzUm91dGVyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBhcnNlIH0gZnJvbSAncGFyc2Uvbm9kZSc7XG5pbXBvcnQgUHJvbWlzZVJvdXRlciBmcm9tICcuLi9Qcm9taXNlUm91dGVyJztcbmltcG9ydCAqIGFzIG1pZGRsZXdhcmUgZnJvbSAnLi4vbWlkZGxld2FyZXMnO1xuXG5leHBvcnQgY2xhc3MgTG9nc1JvdXRlciBleHRlbmRzIFByb21pc2VSb3V0ZXIge1xuICBtb3VudFJvdXRlcygpIHtcbiAgICB0aGlzLnJvdXRlKFxuICAgICAgJ0dFVCcsXG4gICAgICAnL3NjcmlwdGxvZycsXG4gICAgICBtaWRkbGV3YXJlLnByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzLFxuICAgICAgdGhpcy52YWxpZGF0ZVJlcXVlc3QsXG4gICAgICByZXEgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5oYW5kbGVHRVQocmVxKTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgdmFsaWRhdGVSZXF1ZXN0KHJlcSkge1xuICAgIGlmICghcmVxLmNvbmZpZyB8fCAhcmVxLmNvbmZpZy5sb2dnZXJDb250cm9sbGVyKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuUFVTSF9NSVNDT05GSUdVUkVELCAnTG9nZ2VyIGFkYXB0ZXIgaXMgbm90IGF2YWlsYWJsZScpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFJldHVybnMgYSBwcm9taXNlIGZvciBhIHtyZXNwb25zZX0gb2JqZWN0LlxuICAvLyBxdWVyeSBwYXJhbXM6XG4gIC8vIGxldmVsIChvcHRpb25hbCkgTGV2ZWwgb2YgbG9nZ2luZyB5b3Ugd2FudCB0byBxdWVyeSBmb3IgKGluZm8gfHwgZXJyb3IpXG4gIC8vIGZyb20gKG9wdGlvbmFsKSBTdGFydCB0aW1lIGZvciB0aGUgc2VhcmNoLiBEZWZhdWx0cyB0byAxIHdlZWsgYWdvLlxuICAvLyB1bnRpbCAob3B0aW9uYWwpIEVuZCB0aW1lIGZvciB0aGUgc2VhcmNoLiBEZWZhdWx0cyB0byBjdXJyZW50IHRpbWUuXG4gIC8vIG9yZGVyIChvcHRpb25hbCkgRGlyZWN0aW9uIG9mIHJlc3VsdHMgcmV0dXJuZWQsIGVpdGhlciDigJxhc2PigJ0gb3Ig4oCcZGVzY+KAnS4gRGVmYXVsdHMgdG8g4oCcZGVzY+KAnS5cbiAgLy8gc2l6ZSAob3B0aW9uYWwpIE51bWJlciBvZiByb3dzIHJldHVybmVkIGJ5IHNlYXJjaC4gRGVmYXVsdHMgdG8gMTBcbiAgLy8gbiBzYW1lIGFzIHNpemUsIG92ZXJyaWRlcyBzaXplIGlmIHNldFxuICBoYW5kbGVHRVQocmVxKSB7XG4gICAgY29uc3QgZnJvbSA9IHJlcS5xdWVyeS5mcm9tO1xuICAgIGNvbnN0IHVudGlsID0gcmVxLnF1ZXJ5LnVudGlsO1xuICAgIGxldCBzaXplID0gcmVxLnF1ZXJ5LnNpemU7XG4gICAgaWYgKHJlcS5xdWVyeS5uKSB7XG4gICAgICBzaXplID0gcmVxLnF1ZXJ5Lm47XG4gICAgfVxuXG4gICAgY29uc3Qgb3JkZXIgPSByZXEucXVlcnkub3JkZXI7XG4gICAgY29uc3QgbGV2ZWwgPSByZXEucXVlcnkubGV2ZWw7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgIGZyb20sXG4gICAgICB1bnRpbCxcbiAgICAgIHNpemUsXG4gICAgICBvcmRlcixcbiAgICAgIGxldmVsLFxuICAgIH07XG5cbiAgICByZXR1cm4gcmVxLmNvbmZpZy5sb2dnZXJDb250cm9sbGVyLmdldExvZ3Mob3B0aW9ucykudGhlbihyZXN1bHQgPT4ge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7XG4gICAgICAgIHJlc3BvbnNlOiByZXN1bHQsXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBMb2dzUm91dGVyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxLQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxjQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxVQUFBLEdBQUFDLHVCQUFBLENBQUFKLE9BQUE7QUFBNkMsU0FBQUksd0JBQUFDLENBQUEsRUFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxNQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFILHVCQUFBLFlBQUFBLENBQUFDLENBQUEsRUFBQUMsQ0FBQSxTQUFBQSxDQUFBLElBQUFELENBQUEsSUFBQUEsQ0FBQSxDQUFBSyxVQUFBLFNBQUFMLENBQUEsTUFBQU0sQ0FBQSxFQUFBQyxDQUFBLEVBQUFDLENBQUEsS0FBQUMsU0FBQSxRQUFB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