@lifeready/core 9.0.8 → 10.0.0

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 (225) hide show
  1. package/fesm2022/lifeready-core.mjs +10522 -0
  2. package/fesm2022/lifeready-core.mjs.map +1 -0
  3. package/package.json +21 -16
  4. package/types/lifeready-core.d.ts +5329 -0
  5. package/bundles/lifeready-core.umd.js +0 -13231
  6. package/bundles/lifeready-core.umd.js.map +0 -1
  7. package/bundles/lifeready-core.umd.min.js +0 -2
  8. package/bundles/lifeready-core.umd.min.js.map +0 -1
  9. package/esm2015/lib/_common/ast.js +0 -41
  10. package/esm2015/lib/_common/deferred-promise.js +0 -24
  11. package/esm2015/lib/_common/exceptions.js +0 -186
  12. package/esm2015/lib/_common/index.js +0 -3
  13. package/esm2015/lib/_common/kc-lodash.js +0 -11
  14. package/esm2015/lib/_common/key.js +0 -28
  15. package/esm2015/lib/_common/queries.gql.js +0 -43
  16. package/esm2015/lib/_common/run-outside-angular.js +0 -80
  17. package/esm2015/lib/_common/storage.js +0 -28
  18. package/esm2015/lib/_common/types.js +0 -2
  19. package/esm2015/lib/_common/utils.js +0 -73
  20. package/esm2015/lib/api/lr-apollo.service.js +0 -47
  21. package/esm2015/lib/api/lr-graphql/index.js +0 -6
  22. package/esm2015/lib/api/lr-graphql/lr-graphql.service.js +0 -170
  23. package/esm2015/lib/api/lr-graphql/lr-merged-mutation.js +0 -216
  24. package/esm2015/lib/api/lr-graphql/lr-mutation-base.js +0 -51
  25. package/esm2015/lib/api/lr-graphql/lr-mutation.js +0 -91
  26. package/esm2015/lib/api/lr-graphql/lr.service.js +0 -18
  27. package/esm2015/lib/api/query-processor/common-processors.service.js +0 -94
  28. package/esm2015/lib/api/query-processor/index.js +0 -3
  29. package/esm2015/lib/api/query-processor/query-processor.service.js +0 -307
  30. package/esm2015/lib/api/query-processor/tp-password-reset-processor.service.js +0 -110
  31. package/esm2015/lib/api/types/graphql.types.js +0 -8
  32. package/esm2015/lib/api/types/index.js +0 -3
  33. package/esm2015/lib/api/types/lr-graphql.types.js +0 -182
  34. package/esm2015/lib/auth/auth.config.js +0 -57
  35. package/esm2015/lib/auth/auth.gql.private.js +0 -85
  36. package/esm2015/lib/auth/auth.service.js +0 -616
  37. package/esm2015/lib/auth/auth.types.js +0 -19
  38. package/esm2015/lib/contact-card/contact-card.gql.js +0 -79
  39. package/esm2015/lib/contact-card/contact-card.service.js +0 -156
  40. package/esm2015/lib/contact-card/contact-card2.gql.js +0 -29
  41. package/esm2015/lib/contact-card/contact-card2.service.js +0 -103
  42. package/esm2015/lib/encryption/encryption.service.js +0 -188
  43. package/esm2015/lib/file-upload/file-upload.service.js +0 -70
  44. package/esm2015/lib/file-upload/file-upload.types.js +0 -2
  45. package/esm2015/lib/idle/idle.service.js +0 -159
  46. package/esm2015/lib/idle/idle.types.js +0 -7
  47. package/esm2015/lib/item/item.gql.js +0 -166
  48. package/esm2015/lib/item/item.gql.private.js +0 -41
  49. package/esm2015/lib/item/item.service.js +0 -662
  50. package/esm2015/lib/item/item.types.js +0 -2
  51. package/esm2015/lib/key/key-factory.service.js +0 -226
  52. package/esm2015/lib/key/key-graph.service.js +0 -314
  53. package/esm2015/lib/key/key-meta.service.js +0 -153
  54. package/esm2015/lib/key/key.service.js +0 -124
  55. package/esm2015/lib/key/key.types.js +0 -16
  56. package/esm2015/lib/key-exchange/key-exchange.gql.js +0 -174
  57. package/esm2015/lib/key-exchange/key-exchange.service.js +0 -496
  58. package/esm2015/lib/lbop/lbop.service.js +0 -351
  59. package/esm2015/lib/life-ready.config.js +0 -96
  60. package/esm2015/lib/life-ready.module.js +0 -42
  61. package/esm2015/lib/lock/lock.gql.js +0 -40
  62. package/esm2015/lib/lock/lock.service.js +0 -64
  63. package/esm2015/lib/notification/notification.gql.js +0 -43
  64. package/esm2015/lib/notification/notification.service.js +0 -118
  65. package/esm2015/lib/password/password.gql.js +0 -28
  66. package/esm2015/lib/password/password.service.js +0 -309
  67. package/esm2015/lib/persist/persist.service.js +0 -181
  68. package/esm2015/lib/plan/plan.gql.js +0 -91
  69. package/esm2015/lib/plan/plan.service.js +0 -191
  70. package/esm2015/lib/plan/plan.types.js +0 -2
  71. package/esm2015/lib/profile/profile-details.service.js +0 -261
  72. package/esm2015/lib/profile/profile.gql.js +0 -170
  73. package/esm2015/lib/profile/profile.service.js +0 -166
  74. package/esm2015/lib/profile/profile.types.js +0 -45
  75. package/esm2015/lib/register/register.service.js +0 -173
  76. package/esm2015/lib/register/register.types.js +0 -3
  77. package/esm2015/lib/reminder/reminder.gql.js +0 -27
  78. package/esm2015/lib/reminder/reminder.service.js +0 -85
  79. package/esm2015/lib/reminder/reminder.types.js +0 -2
  80. package/esm2015/lib/scenario/scenario.constants.js +0 -2
  81. package/esm2015/lib/scenario/scenario.controller.js +0 -34
  82. package/esm2015/lib/scenario/scenario.gql.js +0 -90
  83. package/esm2015/lib/scenario/scenario.private.gql.js +0 -200
  84. package/esm2015/lib/scenario/scenario.service.js +0 -679
  85. package/esm2015/lib/scenario/scenario.types.js +0 -2
  86. package/esm2015/lib/server-config/server-config.gql.js +0 -9
  87. package/esm2015/lib/server-config/server-config.service.js +0 -41
  88. package/esm2015/lib/shared-contact-card/shared-contact-card.service.js +0 -119
  89. package/esm2015/lib/shared-contact-card/shared-contact-card2.gql.js +0 -41
  90. package/esm2015/lib/shared-contact-card/shared-contact-card2.service.js +0 -117
  91. package/esm2015/lib/slip39/slip39.service.js +0 -167
  92. package/esm2015/lib/time/time.service.js +0 -152
  93. package/esm2015/lib/tp-assembly/tp-assembly.js +0 -363
  94. package/esm2015/lib/tp-assembly/tp-assembly.private.gql.js +0 -22
  95. package/esm2015/lib/tp-assembly/tp-assembly.types.js +0 -2
  96. package/esm2015/lib/tp-password-reset/tp-password-reset-request.service.js +0 -98
  97. package/esm2015/lib/tp-password-reset/tp-password-reset-user.service.js +0 -121
  98. package/esm2015/lib/tp-password-reset/tp-password-reset.constants.js +0 -4
  99. package/esm2015/lib/tp-password-reset/tp-password-reset.controller.js +0 -34
  100. package/esm2015/lib/tp-password-reset/tp-password-reset.gql.js +0 -74
  101. package/esm2015/lib/tp-password-reset/tp-password-reset.private.gql.js +0 -166
  102. package/esm2015/lib/tp-password-reset/tp-password-reset.private.service.js +0 -54
  103. package/esm2015/lib/tp-password-reset/tp-password-reset.service.js +0 -110
  104. package/esm2015/lib/tp-password-reset/tp-password-reset.types.js +0 -2
  105. package/esm2015/lib/trusted-party/trusted-party.gql.js +0 -96
  106. package/esm2015/lib/trusted-party/trusted-party.gql.private.js +0 -51
  107. package/esm2015/lib/trusted-party/trusted-party.service.js +0 -461
  108. package/esm2015/lib/trusted-party/trusted-party.types.js +0 -2
  109. package/esm2015/lib/two-factor/two-factor.service.js +0 -74
  110. package/esm2015/lib/user/user.gql.js +0 -32
  111. package/esm2015/lib/user/user.service.js +0 -58
  112. package/esm2015/lib/user/user.types.js +0 -2
  113. package/esm2015/lib/web-crypto/web-crypto.service.js +0 -29
  114. package/esm2015/lifeready-core.js +0 -17
  115. package/esm2015/public-api.js +0 -60
  116. package/fesm2015/lifeready-core.js +0 -10970
  117. package/fesm2015/lifeready-core.js.map +0 -1
  118. package/lib/_common/ast.d.ts +0 -11
  119. package/lib/_common/deferred-promise.d.ts +0 -12
  120. package/lib/_common/exceptions.d.ts +0 -126
  121. package/lib/_common/index.d.ts +0 -2
  122. package/lib/_common/kc-lodash.d.ts +0 -5
  123. package/lib/_common/key.d.ts +0 -14
  124. package/lib/_common/queries.gql.d.ts +0 -4
  125. package/lib/_common/run-outside-angular.d.ts +0 -14
  126. package/lib/_common/storage.d.ts +0 -13
  127. package/lib/_common/types.d.ts +0 -15
  128. package/lib/_common/utils.d.ts +0 -12
  129. package/lib/api/lr-apollo.service.d.ts +0 -15
  130. package/lib/api/lr-graphql/index.d.ts +0 -5
  131. package/lib/api/lr-graphql/lr-graphql.service.d.ts +0 -81
  132. package/lib/api/lr-graphql/lr-merged-mutation.d.ts +0 -46
  133. package/lib/api/lr-graphql/lr-mutation-base.d.ts +0 -28
  134. package/lib/api/lr-graphql/lr-mutation.d.ts +0 -48
  135. package/lib/api/lr-graphql/lr.service.d.ts +0 -9
  136. package/lib/api/query-processor/common-processors.service.d.ts +0 -36
  137. package/lib/api/query-processor/index.d.ts +0 -2
  138. package/lib/api/query-processor/query-processor.service.d.ts +0 -18
  139. package/lib/api/query-processor/tp-password-reset-processor.service.d.ts +0 -15
  140. package/lib/api/types/graphql.types.d.ts +0 -30
  141. package/lib/api/types/index.d.ts +0 -2
  142. package/lib/api/types/lr-graphql.types.d.ts +0 -807
  143. package/lib/auth/auth.config.d.ts +0 -5
  144. package/lib/auth/auth.gql.private.d.ts +0 -25
  145. package/lib/auth/auth.service.d.ts +0 -72
  146. package/lib/auth/auth.types.d.ts +0 -70
  147. package/lib/contact-card/contact-card.gql.d.ts +0 -7
  148. package/lib/contact-card/contact-card.service.d.ts +0 -53
  149. package/lib/contact-card/contact-card2.gql.d.ts +0 -25
  150. package/lib/contact-card/contact-card2.service.d.ts +0 -64
  151. package/lib/encryption/encryption.service.d.ts +0 -42
  152. package/lib/file-upload/file-upload.service.d.ts +0 -15
  153. package/lib/file-upload/file-upload.types.d.ts +0 -5
  154. package/lib/idle/idle.service.d.ts +0 -47
  155. package/lib/idle/idle.types.d.ts +0 -10
  156. package/lib/item/item.gql.d.ts +0 -134
  157. package/lib/item/item.gql.private.d.ts +0 -35
  158. package/lib/item/item.service.d.ts +0 -201
  159. package/lib/item/item.types.d.ts +0 -95
  160. package/lib/key/key-factory.service.d.ts +0 -40
  161. package/lib/key/key-graph.service.d.ts +0 -41
  162. package/lib/key/key-meta.service.d.ts +0 -51
  163. package/lib/key/key.service.d.ts +0 -36
  164. package/lib/key/key.types.d.ts +0 -86
  165. package/lib/key-exchange/key-exchange.gql.d.ts +0 -141
  166. package/lib/key-exchange/key-exchange.service.d.ts +0 -179
  167. package/lib/lbop/lbop.service.d.ts +0 -99
  168. package/lib/life-ready.config.d.ts +0 -26
  169. package/lib/life-ready.module.d.ts +0 -5
  170. package/lib/lock/lock.gql.d.ts +0 -27
  171. package/lib/lock/lock.service.d.ts +0 -34
  172. package/lib/notification/notification.gql.d.ts +0 -37
  173. package/lib/notification/notification.service.d.ts +0 -64
  174. package/lib/password/password.gql.d.ts +0 -3
  175. package/lib/password/password.service.d.ts +0 -79
  176. package/lib/persist/persist.service.d.ts +0 -31
  177. package/lib/plan/plan.gql.d.ts +0 -69
  178. package/lib/plan/plan.service.d.ts +0 -111
  179. package/lib/plan/plan.types.d.ts +0 -16
  180. package/lib/profile/profile-details.service.d.ts +0 -20
  181. package/lib/profile/profile.gql.d.ts +0 -21
  182. package/lib/profile/profile.service.d.ts +0 -32
  183. package/lib/profile/profile.types.d.ts +0 -121
  184. package/lib/register/register.service.d.ts +0 -25
  185. package/lib/register/register.types.d.ts +0 -6
  186. package/lib/reminder/reminder.gql.d.ts +0 -23
  187. package/lib/reminder/reminder.service.d.ts +0 -33
  188. package/lib/reminder/reminder.types.d.ts +0 -17
  189. package/lib/scenario/scenario.constants.d.ts +0 -1
  190. package/lib/scenario/scenario.controller.d.ts +0 -10
  191. package/lib/scenario/scenario.gql.d.ts +0 -78
  192. package/lib/scenario/scenario.private.gql.d.ts +0 -16
  193. package/lib/scenario/scenario.service.d.ts +0 -655
  194. package/lib/scenario/scenario.types.d.ts +0 -64
  195. package/lib/server-config/server-config.gql.d.ts +0 -5
  196. package/lib/server-config/server-config.service.d.ts +0 -9
  197. package/lib/shared-contact-card/shared-contact-card.service.d.ts +0 -33
  198. package/lib/shared-contact-card/shared-contact-card2.gql.d.ts +0 -36
  199. package/lib/shared-contact-card/shared-contact-card2.service.d.ts +0 -45
  200. package/lib/slip39/slip39.service.d.ts +0 -42
  201. package/lib/time/time.service.d.ts +0 -26
  202. package/lib/tp-assembly/tp-assembly.d.ts +0 -177
  203. package/lib/tp-assembly/tp-assembly.private.gql.d.ts +0 -5
  204. package/lib/tp-assembly/tp-assembly.types.d.ts +0 -40
  205. package/lib/tp-password-reset/tp-password-reset-request.service.d.ts +0 -16
  206. package/lib/tp-password-reset/tp-password-reset-user.service.d.ts +0 -29
  207. package/lib/tp-password-reset/tp-password-reset.constants.d.ts +0 -3
  208. package/lib/tp-password-reset/tp-password-reset.controller.d.ts +0 -10
  209. package/lib/tp-password-reset/tp-password-reset.gql.d.ts +0 -63
  210. package/lib/tp-password-reset/tp-password-reset.private.gql.d.ts +0 -163
  211. package/lib/tp-password-reset/tp-password-reset.private.service.d.ts +0 -59
  212. package/lib/tp-password-reset/tp-password-reset.service.d.ts +0 -112
  213. package/lib/tp-password-reset/tp-password-reset.types.d.ts +0 -40
  214. package/lib/trusted-party/trusted-party.gql.d.ts +0 -85
  215. package/lib/trusted-party/trusted-party.gql.private.d.ts +0 -40
  216. package/lib/trusted-party/trusted-party.service.d.ts +0 -192
  217. package/lib/trusted-party/trusted-party.types.d.ts +0 -31
  218. package/lib/two-factor/two-factor.service.d.ts +0 -15
  219. package/lib/user/user.gql.d.ts +0 -8
  220. package/lib/user/user.service.d.ts +0 -9
  221. package/lib/user/user.types.d.ts +0 -16
  222. package/lib/web-crypto/web-crypto.service.d.ts +0 -5
  223. package/lifeready-core.d.ts +0 -16
  224. package/lifeready-core.metadata.json +0 -1
  225. package/public-api.d.ts +0 -56
@@ -1,47 +0,0 @@
1
- import { __awaiter } from "tslib";
2
- /* eslint-disable @typescript-eslint/no-explicit-any */
3
- import { Injectable } from '@angular/core';
4
- import { Apollo } from 'apollo-angular';
5
- import { KeyGraphService } from '../key/key-graph.service';
6
- import { handleApolloError } from '../_common/exceptions';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "apollo-angular";
9
- import * as i2 from "../key/key-graph.service";
10
- export class LrApolloService {
11
- constructor(apollo, keyGraph) {
12
- this.apollo = apollo;
13
- this.keyGraph = keyGraph;
14
- }
15
- addKeys(response) {
16
- if (response.data.keyGraph) {
17
- this.keyGraph.addKeys(response.data.keyGraph);
18
- }
19
- }
20
- query(options) {
21
- return __awaiter(this, void 0, void 0, function* () {
22
- const response = yield this.apollo.query(options).toPromise();
23
- handleApolloError(response.errors);
24
- this.addKeys(response);
25
- return response.data;
26
- });
27
- }
28
- mutate(options) {
29
- return __awaiter(this, void 0, void 0, function* () {
30
- const response = yield this.apollo.mutate(options).toPromise();
31
- handleApolloError(response.errors);
32
- this.addKeys(response);
33
- return response.data;
34
- });
35
- }
36
- }
37
- LrApolloService.ɵprov = i0.ɵɵdefineInjectable({ factory: function LrApolloService_Factory() { return new LrApolloService(i0.ɵɵinject(i1.Apollo), i0.ɵɵinject(i2.KeyGraphService)); }, token: LrApolloService, providedIn: "root" });
38
- LrApolloService.decorators = [
39
- { type: Injectable, args: [{
40
- providedIn: 'root',
41
- },] }
42
- ];
43
- LrApolloService.ctorParameters = () => [
44
- { type: Apollo },
45
- { type: KeyGraphService }
46
- ];
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibHItYXBvbGxvLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvYXBpL2xyLWFwb2xsby5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7O0FBSzFELE1BQU0sT0FBTyxlQUFlO0lBQzFCLFlBQW9CLE1BQWMsRUFBVSxRQUF5QjtRQUFqRCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7SUFBRyxDQUFDO0lBRWpFLE9BQU8sQ0FBQyxRQUFRO1FBQ3RCLElBQUssUUFBUSxDQUFDLElBQW9CLENBQUMsUUFBUSxFQUFFO1lBQzNDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFFLFFBQVEsQ0FBQyxJQUFvQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ2hFO0lBQ0gsQ0FBQztJQUVLLEtBQUssQ0FDVCxPQUF3Qjs7WUFFeEIsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBTyxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUVwRSxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFbkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUV2QixPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDdkIsQ0FBQztLQUFBO0lBRUssTUFBTSxDQUNWLE9BQThCOztZQUU5QixNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFJLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBRWxFLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUVuQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRXZCLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQztRQUN2QixDQUFDO0tBQUE7Ozs7WUFsQ0YsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7WUFQUSxNQUFNO1lBQ04sZUFBZSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE11dGF0aW9uT3B0aW9ucywgUXVlcnlPcHRpb25zIH0gZnJvbSAnQGFwb2xsby9jbGllbnQvY29yZSc7XG5pbXBvcnQgeyBBcG9sbG8gfSBmcm9tICdhcG9sbG8tYW5ndWxhcic7XG5pbXBvcnQgeyBLZXlHcmFwaFNlcnZpY2UgfSBmcm9tICcuLi9rZXkva2V5LWdyYXBoLnNlcnZpY2UnO1xuaW1wb3J0IHsgSGFzS2V5R3JhcGggfSBmcm9tICcuLi9rZXkva2V5LnR5cGVzJztcbmltcG9ydCB7IGhhbmRsZUFwb2xsb0Vycm9yIH0gZnJvbSAnLi4vX2NvbW1vbi9leGNlcHRpb25zJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIExyQXBvbGxvU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYXBvbGxvOiBBcG9sbG8sIHByaXZhdGUga2V5R3JhcGg6IEtleUdyYXBoU2VydmljZSkge31cblxuICBwcml2YXRlIGFkZEtleXMocmVzcG9uc2UpIHtcbiAgICBpZiAoKHJlc3BvbnNlLmRhdGEgYXMgSGFzS2V5R3JhcGgpLmtleUdyYXBoKSB7XG4gICAgICB0aGlzLmtleUdyYXBoLmFkZEtleXMoKHJlc3BvbnNlLmRhdGEgYXMgSGFzS2V5R3JhcGgpLmtleUdyYXBoKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBxdWVyeTxULCBWID0geyBba2V5OiBzdHJpbmddOiBhbnkgfT4oXG4gICAgb3B0aW9uczogUXVlcnlPcHRpb25zPFY+XG4gICk6IFByb21pc2U8VD4ge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5hcG9sbG8ucXVlcnk8VCwgVj4ob3B0aW9ucykudG9Qcm9taXNlKCk7XG5cbiAgICBoYW5kbGVBcG9sbG9FcnJvcihyZXNwb25zZS5lcnJvcnMpO1xuXG4gICAgdGhpcy5hZGRLZXlzKHJlc3BvbnNlKTtcblxuICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICB9XG5cbiAgYXN5bmMgbXV0YXRlPFQgZXh0ZW5kcyBhbnksIFYgPSB7IFtrZXk6IHN0cmluZ106IGFueSB9PihcbiAgICBvcHRpb25zOiBNdXRhdGlvbk9wdGlvbnM8VCwgVj5cbiAgKTogUHJvbWlzZTxUPiB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmFwb2xsby5tdXRhdGU8VD4ob3B0aW9ucykudG9Qcm9taXNlKCk7XG5cbiAgICBoYW5kbGVBcG9sbG9FcnJvcihyZXNwb25zZS5lcnJvcnMpO1xuXG4gICAgdGhpcy5hZGRLZXlzKHJlc3BvbnNlKTtcblxuICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICB9XG59XG4iXX0=
@@ -1,6 +0,0 @@
1
- export * from './lr-graphql.service';
2
- export * from './lr-merged-mutation';
3
- export * from './lr-mutation';
4
- export * from './lr-mutation-base';
5
- export * from './lr.service';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvYXBpL2xyLWdyYXBocWwvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xyLWdyYXBocWwuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xyLW1lcmdlZC1tdXRhdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL2xyLW11dGF0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vbHItbXV0YXRpb24tYmFzZSc7XG5leHBvcnQgKiBmcm9tICcuL2xyLnNlcnZpY2UnO1xuIl19
@@ -1,170 +0,0 @@
1
- import { __awaiter, __decorate } from "tslib";
2
- /* eslint-disable @typescript-eslint/no-explicit-any */
3
- import { Injectable, NgZone } from '@angular/core';
4
- import { Apollo } from 'apollo-angular';
5
- import gql from 'graphql-tag';
6
- import * as gqlPrinter from 'graphql/language/printer';
7
- import { KeyGraphService } from '../../key/key-graph.service';
8
- import { lodash } from '../../_common';
9
- import { getMutation, getQuery } from '../../_common/ast';
10
- import { handleApolloError, KcBadStateException, KcUnsupportedException, } from '../../_common/exceptions';
11
- import { FetchKeyGraphField, KeyGraphField } from '../../_common/queries.gql';
12
- import { RunOutsideAngular } from '../../_common/run-outside-angular';
13
- import { QueryProcessorService } from '../query-processor';
14
- import { LrMergedMutation } from './lr-merged-mutation';
15
- import * as i0 from "@angular/core";
16
- import * as i1 from "apollo-angular";
17
- import * as i2 from "../../key/key-graph.service";
18
- import * as i3 from "../query-processor/query-processor.service";
19
- // Data structures
20
- // --------------------------------------------------------------------------
21
- const keyGraphFieldAstSelection = getQuery(gql `
22
- query {
23
- ${KeyGraphField}
24
- }
25
- `).selectionSet.selections[0];
26
- const fetchKeyGraphFieldAstSelection = getQuery(gql `
27
- query {
28
- ${FetchKeyGraphField}
29
- }
30
- `).selectionSet.selections[0];
31
- let LrGraphQLService = class LrGraphQLService {
32
- constructor(ngZone, apollo, keyGraph, queryProcessor) {
33
- this.ngZone = ngZone;
34
- this.apollo = apollo;
35
- this.keyGraph = keyGraph;
36
- this.queryProcessor = queryProcessor;
37
- this.stats = {
38
- queryCount: 0,
39
- mutationCount: 0,
40
- };
41
- }
42
- query(options) {
43
- return __awaiter(this, void 0, void 0, function* () {
44
- // Make copies to avoid side effect.
45
- options = lodash.cloneDeep(options);
46
- // Append the key graph query
47
- const includeKeyGraph = this.isIncludeKeyGraph(options.includeKeyGraph);
48
- if (includeKeyGraph) {
49
- const operation = getQuery(options.query);
50
- operation.selectionSet.selections = [
51
- ...operation.selectionSet.selections,
52
- keyGraphFieldAstSelection,
53
- ];
54
- }
55
- if (options.name) {
56
- const operation = getQuery(options.query);
57
- operation.name = {
58
- kind: 'Name',
59
- value: options.name,
60
- };
61
- }
62
- const response = yield this.apollo.query(options).toPromise();
63
- this.stats.queryCount++;
64
- handleApolloError(response.errors);
65
- this.addKeys(response);
66
- const data = yield this.queryProcessor.processQuery(response.data, options.processorOptions);
67
- return data;
68
- });
69
- }
70
- lrMutateImpl(lrMutation, options) {
71
- return __awaiter(this, void 0, void 0, function* () {
72
- if (options === null || options === void 0 ? void 0 : options.variables) {
73
- throw new KcUnsupportedException('Unsupported field: "options.variables"');
74
- }
75
- if (lrMutation.executed) {
76
- throw new KcBadStateException('LrMutation has already executed. LrMutation can only be used once in a lrMutate() call. Create new instances of LrMutation.');
77
- }
78
- lrMutation.setExecuted();
79
- return this.apolloMutate(Object.assign(Object.assign({}, options), lrMutation.lrMutationData))
80
- .then((res) => {
81
- // Resolve promises set on the lrMutation rather than the lrMutate() call.
82
- lrMutation.resolve(res);
83
- // Still need to return value to the promise waiting for the results of lrMutate().
84
- return res;
85
- })
86
- .catch((error) => {
87
- lrMutation.reject(error);
88
- throw error;
89
- });
90
- });
91
- }
92
- apolloMutate(options) {
93
- return __awaiter(this, void 0, void 0, function* () {
94
- // Make copies to avoid side effect.
95
- options = Object.assign(Object.assign({}, options), { mutation: lodash.cloneDeep(options.mutation) });
96
- // Append the key graph query
97
- const includeKeyGraph = this.isIncludeKeyGraph(options.includeKeyGraph);
98
- if (includeKeyGraph) {
99
- const operation = getMutation(options.mutation);
100
- operation.selectionSet.selections = [
101
- ...operation.selectionSet.selections,
102
- fetchKeyGraphFieldAstSelection,
103
- ];
104
- }
105
- if (options.name) {
106
- const operation = getMutation(options.mutation);
107
- operation.name = {
108
- kind: 'Name',
109
- value: options.name,
110
- };
111
- }
112
- // Format to string and parse again. This allows the "loc": { "start": ... }
113
- // part of the DocumentNode to be correctly setup. It's extra processing
114
- // in serialising and parsing, but probably minimal overhead.
115
- options.mutation = gql(gqlPrinter.print(options.mutation));
116
- const response = yield this.apollo.mutate(options).toPromise();
117
- this.stats.mutationCount++;
118
- handleApolloError(response.errors);
119
- this.addKeys(response);
120
- const data = yield this.queryProcessor.processQuery(response.data, options.processorOptions);
121
- return data;
122
- });
123
- }
124
- statsSnapshot() {
125
- return lodash.cloneDeep(this.stats);
126
- }
127
- addKeys(response) {
128
- if (response.data.keyGraph) {
129
- this.keyGraph.addKeys(response.data.keyGraph);
130
- delete response.data.keyGraph;
131
- }
132
- }
133
- isIncludeKeyGraph(includeKeyGraph) {
134
- // Default to true when null or undefined.
135
- return includeKeyGraph == null ? true : false;
136
- }
137
- lrMutate(lrMutations, options) {
138
- return __awaiter(this, void 0, void 0, function* () {
139
- if (lrMutations instanceof Array) {
140
- const merged = LrMergedMutation.create(yield Promise.all(lrMutations));
141
- yield this.lrMutateImpl(merged, options);
142
- return merged.promise;
143
- }
144
- else {
145
- const resolved = yield lrMutations;
146
- yield this.lrMutateImpl(resolved, options);
147
- return resolved.promise;
148
- }
149
- });
150
- }
151
- };
152
- LrGraphQLService.ɵprov = i0.ɵɵdefineInjectable({ factory: function LrGraphQLService_Factory() { return new LrGraphQLService(i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(i1.Apollo), i0.ɵɵinject(i2.KeyGraphService), i0.ɵɵinject(i3.QueryProcessorService)); }, token: LrGraphQLService, providedIn: "root" });
153
- LrGraphQLService.decorators = [
154
- { type: Injectable, args: [{
155
- providedIn: 'root',
156
- },] }
157
- ];
158
- LrGraphQLService.ctorParameters = () => [
159
- { type: NgZone },
160
- { type: Apollo },
161
- { type: KeyGraphService },
162
- { type: QueryProcessorService }
163
- ];
164
- LrGraphQLService = __decorate([
165
- RunOutsideAngular({
166
- ngZoneName: 'ngZone',
167
- })
168
- ], LrGraphQLService);
169
- export { LrGraphQLService };
170
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibHItZ3JhcGhxbC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL2FwaS9sci1ncmFwaHFsL2xyLWdyYXBocWwuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBUW5ELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QyxPQUFPLEdBQUcsTUFBTSxhQUFhLENBQUM7QUFDOUIsT0FBTyxLQUFLLFVBQVUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFOUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBcUIsTUFBTSxtQkFBbUIsQ0FBQztBQUM3RSxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLG1CQUFtQixFQUNuQixzQkFBc0IsR0FDdkIsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDOUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFdEUsT0FBTyxFQUFvQixxQkFBcUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7OztBQUd4RCxrQkFBa0I7QUFDbEIsNkVBQTZFO0FBQzdFLE1BQU0seUJBQXlCLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQTs7SUFFMUMsYUFBYTs7Q0FFaEIsQ0FBQyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFjLENBQUM7QUFFM0MsTUFB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TyxDQUFDLENBQUM7Z0JBQzNDLE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQzthQUN6QjtRQUNILENBQUM7S0FBQTtDQUNGLENBQUE7OztZQTVPQSxVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7OztZQTFGb0IsTUFBTTtZQVFsQixNQUFNO1lBSU4sZUFBZTtZQVlHLHFCQUFxQjs7QUFtRW5DLGdCQUFnQjtJQU41QixpQkFBaUIsQ0FBQztRQUNqQixVQUFVLEVBQUUsUUFBUTtLQUNyQixDQUFDO0dBSVcsZ0JBQWdCLENBeU81QjtTQXpPWSxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEZldGNoUG9saWN5LFxuICBNdXRhdGlvbk9wdGlvbnMsXG4gIE9wZXJhdGlvblZhcmlhYmxlcyxcbiAgUXVlcnlPcHRpb25zLFxufSBmcm9tICdAYXBvbGxvL2NsaWVudC9jb3JlJztcbmltcG9ydCB7IE11dGF0aW9uQmFzZU9wdGlvbnMgfSBmcm9tICdAYXBvbGxvL2NsaWVudC9jb3JlL3dhdGNoUXVlcnlPcHRpb25zJztcbmltcG9ydCB7IEFwb2xsbyB9IGZyb20gJ2Fwb2xsby1hbmd1bGFyJztcbmltcG9ydCB7IEZpZWxkTm9kZSB9IGZyb20gJ2dyYXBocWwnO1xuaW1wb3J0IGdxbCBmcm9tICdncmFwaHFsLXRhZyc7XG5pbXBvcnQgKiBhcyBncWxQcmludGVyIGZyb20gJ2dyYXBocWwvbGFuZ3VhZ2UvcHJpbnRlcic7XG5pbXBvcnQgeyBLZXlHcmFwaFNlcnZpY2UgfSBmcm9tICcuLi8uLi9rZXkva2V5LWdyYXBoLnNlcnZpY2UnO1xuaW1wb3J0IHsgSGFzS2V5R3JhcGggfSBmcm9tICcuLi8uLi9rZXkva2V5LnR5cGVzJztcbmltcG9ydCB7IGxvZGFzaCB9IGZyb20gJy4uLy4uL19jb21tb24nO1xuaW1wb3J0IHsgZ2V0TXV0YXRpb24sIGdldFF1ZXJ5LCBUeXBlZERvY3VtZW50Tm9kZSB9IGZyb20gJy4uLy4uL19jb21tb24vYXN0JztcbmltcG9ydCB7XG4gIGhhbmRsZUFwb2xsb0Vycm9yLFxuICBLY0JhZFN0YXRlRXhjZXB0aW9uLFxuICBLY1Vuc3VwcG9ydGVkRXhjZXB0aW9uLFxufSBmcm9tICcuLi8uLi9fY29tbW9uL2V4Y2VwdGlvbnMnO1xuaW1wb3J0IHsgRmV0Y2hLZXlHcmFwaEZpZWxkLCBLZXlHcmFwaEZpZWxkIH0gZnJvbSAnLi4vLi4vX2NvbW1vbi9xdWVyaWVzLmdxbCc7XG5pbXBvcnQgeyBSdW5PdXRzaWRlQW5ndWxhciB9IGZyb20gJy4uLy4uL19jb21tb24vcnVuLW91dHNpZGUtYW5ndWxhcic7XG5pbXBvcnQgeyBNYXlBc3luYyB9IGZyb20gJy4uLy4uL19jb21tb24vdHlwZXMnO1xuaW1wb3J0IHsgUHJvY2Vzc29yT3B0aW9ucywgUXVlcnlQcm9jZXNzb3JTZXJ2aWNlIH0gZnJvbSAnLi4vcXVlcnktcHJvY2Vzc29yJztcbmltcG9ydCB7IExyTWVyZ2VkTXV0YXRpb24gfSBmcm9tICcuL2xyLW1lcmdlZC1tdXRhdGlvbic7XG5pbXBvcnQgeyBMck11dGF0aW9uQmFzZSB9IGZyb20gJy4vbHItbXV0YXRpb24tYmFzZSc7XG5cbi8vIERhdGEgc3RydWN0dXJlc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmNvbnN0IGtleUdyYXBoRmllbGRBc3RTZWxlY3Rpb24gPSBnZXRRdWVyeShncWxgXG5xdWVyeSB7XG4gICR7S2V5R3JhcGhGaWVsZH1cbn1cbmApLnNlbGVjdGlvblNldC5zZWxlY3Rpb25zWzBdIGFzIEZpZWxkTm9kZTtcblxuY29uc3QgZmV0Y2hLZXlHcmFwaEZpZWxkQXN0U2VsZWN0aW9uID0gZ2V0UXVlcnkoZ3FsYFxucXVlcnkge1xuICAke0ZldGNoS2V5R3JhcGhGaWVsZH1cbn1cbmApLnNlbGVjdGlvblNldC5zZWxlY3Rpb25zWzBdIGFzIEZpZWxkTm9kZTtcblxuLy8gY29uc3Qga2V5R3JhcGhGaWVsZEFzdFNlbGVjdGlvbiA9ICgpID0+XG4vLyAgIGxvZGFzaC5kZWVwQ2xvbmUoX2tleUdyYXBoRmllbGRBc3RTZWxlY3Rpb24pIGFzIEZpZWxkTm9kZTtcbi8vIGNvbnN0IGZldGNoS2V5R3JhcGhGaWVsZEFzdFNlbGVjdGlvbiA9ICgpID0+XG4vLyAgIGxvZGFzaC5kZWVwQ2xvbmUoX2ZldGNoS2V5R3JhcGhGaWVsZEFzdFNlbGVjdGlvbikgYXMgRmllbGROb2RlO1xuXG5leHBvcnQgaW50ZXJmYWNlIExyUXVlcnlPcHRpb25zPFQsIFRWYXJpYWJsZXM+XG4gIGV4dGVuZHMgUXVlcnlPcHRpb25zPFRWYXJpYWJsZXM+IHtcbiAgcXVlcnk6IFR5cGVkRG9jdW1lbnROb2RlPFQ+O1xuICBpbmNsdWRlS2V5R3JhcGg/OiBib29sZWFuO1xuICBuYW1lPzogc3RyaW5nO1xuICBwcm9jZXNzb3JPcHRpb25zPzogUHJvY2Vzc29yT3B0aW9ucztcbn1cblxuLy8gQ29waWVkIGZyb20gTXV0YXRpb25PcHRpb25zXG4vLyBSZW1vdmVkIHJlcXVpcmVkIGZpZWxkIFwibXV0YXRpb25cIi4gVGhlIFwidmFyaWFibGVzXCIgZmllbGQgaXMgc3RpbGwgdGhlcmVcbi8vIGJ1dCBpdCdzIGR5bmFtaWNhbGx5IGNoZWNrZWQuXG5leHBvcnQgaW50ZXJmYWNlIExyTXV0YXRpb25PcHRpb25zPFxuICBUID0ge1xuICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgfSxcbiAgVFZhcmlhYmxlcyA9IE9wZXJhdGlvblZhcmlhYmxlc1xuPiBleHRlbmRzIE11dGF0aW9uQmFzZU9wdGlvbnM8VCwgVFZhcmlhYmxlcz4ge1xuICBjb250ZXh0PzogYW55O1xuICBmZXRjaFBvbGljeT86IEZldGNoUG9saWN5O1xuICBpbmNsdWRlS2V5R3JhcGg/OiBib29sZWFuO1xuICBuYW1lPzogc3RyaW5nO1xufVxuXG4vLyBUaGUgXCJtdXRhdGlvblwiIGFuZCBcInZhcmlhYmxlXCIgZmllbGRzIGFyZSBpbmhlcml0ZWQgYnV0IGR5bmFtaWNhbGx5IHByb2hpYml0ZWQgYmVjYXVzZVxuLy8gdGhleSBhcmUgcHJvdmlkZWQgYnkgTHJNdXRhdGlvbi4gSXQncyBhIGJpdCB1bmNsZWFuIGJ1dCBhdm9pZHMgYSBsb3Qgb2YgdHlwaW5nIHdvcmsuXG5leHBvcnQgaW50ZXJmYWNlIExyQXBvbGxvTXV0YXRpb25PcHRpb25zPFQsIFRWYXJpYWJsZXMgPSBPcGVyYXRpb25WYXJpYWJsZXM+XG4gIGV4dGVuZHMgTXV0YXRpb25PcHRpb25zPFQsIFRWYXJpYWJsZXM+IHtcbiAgbXV0YXRpb246IFR5cGVkRG9jdW1lbnROb2RlPFQ+O1xuICBpbmNsdWRlS2V5R3JhcGg/OiBib29sZWFuO1xuICBuYW1lPzogc3RyaW5nO1xuICBwcm9jZXNzb3JPcHRpb25zPzogUHJvY2Vzc29yT3B0aW9ucztcbn1cblxuaW50ZXJmYWNlIExyR3JhcGhRTFNlcnZpY2VTdGF0cyB7XG4gIHF1ZXJ5Q291bnQ6IG51bWJlcjtcbiAgbXV0YXRpb25Db3VudDogbnVtYmVyO1xufVxuXG5AUnVuT3V0c2lkZUFuZ3VsYXIoe1xuICBuZ1pvbmVOYW1lOiAnbmdab25lJyxcbn0pXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTHJHcmFwaFFMU2VydmljZSB7XG4gIHByaXZhdGUgc3RhdHM6IExyR3JhcGhRTFNlcnZpY2VTdGF0cyA9IHtcbiAgICBxdWVyeUNvdW50OiAwLFxuICAgIG11dGF0aW9uQ291bnQ6IDAsXG4gIH07XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIGFwb2xsbzogQXBvbGxvLFxuICAgIHByaXZhdGUga2V5R3JhcGg6IEtleUdyYXBoU2VydmljZSxcbiAgICBwcml2YXRlIHF1ZXJ5UHJvY2Vzc29yOiBRdWVyeVByb2Nlc3NvclNlcnZpY2VcbiAgKSB7fVxuXG4gIGFzeW5jIHF1ZXJ5PFQsIFYgPSB7IFtrZXk6IHN0cmluZ106IGFueSB9PihcbiAgICBvcHRpb25zOiBMclF1ZXJ5T3B0aW9uczxULCBWPlxuICApOiBQcm9taXNlPFQ+IHtcbiAgICAvLyBNYWtlIGNvcGllcyB0byBhdm9pZCBzaWRlIGVmZmVjdC5cbiAgICBvcHRpb25zID0gbG9kYXNoLmNsb25lRGVlcChvcHRpb25zKTtcblxuICAgIC8vIEFwcGVuZCB0aGUga2V5IGdyYXBoIHF1ZXJ5XG4gICAgY29uc3QgaW5jbHVkZUtleUdyYXBoID0gdGhpcy5pc0luY2x1ZGVLZXlHcmFwaChvcHRpb25zLmluY2x1ZGVLZXlHcmFwaCk7XG4gICAgaWYgKGluY2x1ZGVLZXlHcmFwaCkge1xuICAgICAgY29uc3Qgb3BlcmF0aW9uID0gZ2V0UXVlcnkob3B0aW9ucy5xdWVyeSk7XG4gICAgICBvcGVyYXRpb24uc2VsZWN0aW9uU2V0LnNlbGVjdGlvbnMgPSBbXG4gICAgICAgIC4uLm9wZXJhdGlvbi5zZWxlY3Rpb25TZXQuc2VsZWN0aW9ucyxcbiAgICAgICAga2V5R3JhcGhGaWVsZEFzdFNlbGVjdGlvbixcbiAgICAgIF07XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMubmFtZSkge1xuICAgICAgY29uc3Qgb3BlcmF0aW9uID0gZ2V0UXVlcnkob3B0aW9ucy5xdWVyeSk7XG4gICAgICAob3BlcmF0aW9uLm5hbWUgYXMgYW55KSA9IHtcbiAgICAgICAga2luZDogJ05hbWUnLFxuICAgICAgICB2YWx1ZTogb3B0aW9ucy5uYW1lLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuYXBvbGxvLnF1ZXJ5PFQsIFY+KG9wdGlvbnMpLnRvUHJvbWlzZSgpO1xuXG4gICAgdGhpcy5zdGF0cy5xdWVyeUNvdW50Kys7XG5cbiAgICBoYW5kbGVBcG9sbG9FcnJvcihyZXNwb25zZS5lcnJvcnMpO1xuXG4gICAgdGhpcy5hZGRLZXlzKHJlc3BvbnNlKTtcblxuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLnF1ZXJ5UHJvY2Vzc29yLnByb2Nlc3NRdWVyeShcbiAgICAgIHJlc3BvbnNlLmRhdGEsXG4gICAgICBvcHRpb25zLnByb2Nlc3Nvck9wdGlvbnNcbiAgICApO1xuXG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGxyTXV0YXRlSW1wbChsck11dGF0aW9uLCBvcHRpb25zPykge1xuICAgIGlmIChvcHRpb25zPy52YXJpYWJsZXMpIHtcbiAgICAgIHRocm93IG5ldyBLY1Vuc3VwcG9ydGVkRXhjZXB0aW9uKFxuICAgICAgICAnVW5zdXBwb3J0ZWQgZmllbGQ6IFwib3B0aW9ucy52YXJpYWJsZXNcIidcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKGxyTXV0YXRpb24uZXhlY3V0ZWQpIHtcbiAgICAgIHRocm93IG5ldyBLY0JhZFN0YXRlRXhjZXB0aW9uKFxuICAgICAgICAnTHJNdXRhdGlvbiBoYXMgYWxyZWFkeSBleGVjdXRlZC4gTHJNdXRhdGlvbiBjYW4gb25seSBiZSB1c2VkIG9uY2UgaW4gYSBsck11dGF0ZSgpIGNhbGwuIENyZWF0ZSBuZXcgaW5zdGFuY2VzIG9mIExyTXV0YXRpb24uJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICBsck11dGF0aW9uLnNldEV4ZWN1dGVkKCk7XG5cbiAgICByZXR1cm4gdGhpcy5hcG9sbG9NdXRhdGUoe1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIC4uLmxyTXV0YXRpb24ubHJNdXRhdGlvbkRhdGEsXG4gICAgfSlcbiAgICAgIC50aGVuKChyZXMpID0+IHtcbiAgICAgICAgLy8gUmVzb2x2ZSBwcm9taXNlcyBzZXQgb24gdGhlIGxyTXV0YXRpb24gcmF0aGVyIHRoYW4gdGhlIGxyTXV0YXRlKCkgY2FsbC5cbiAgICAgICAgbHJNdXRhdGlvbi5yZXNvbHZlKHJlcyk7XG4gICAgICAgIC8vIFN0aWxsIG5lZWQgdG8gcmV0dXJuIHZhbHVlIHRvIHRoZSBwcm9taXNlIHdhaXRpbmcgZm9yIHRoZSByZXN1bHRzIG9mIGxyTXV0YXRlKCkuXG4gICAgICAgIHJldHVybiByZXM7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICBsck11dGF0aW9uLnJlamVjdChlcnJvcik7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfSk7XG4gIH1cblxuICBhc3luYyBhcG9sbG9NdXRhdGU8VCBleHRlbmRzIGFueSwgVFZhcmlhYmxlcyA9IHsgW2tleTogc3RyaW5nXTogYW55IH0+KFxuICAgIG9wdGlvbnM6IExyQXBvbGxvTXV0YXRpb25PcHRpb25zPFQsIFRWYXJpYWJsZXM+XG4gICk6IFByb21pc2U8VD4ge1xuICAgIC8vIE1ha2UgY29waWVzIHRvIGF2b2lkIHNpZGUgZWZmZWN0LlxuICAgIG9wdGlvbnMgPSB7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgbXV0YXRpb246IGxvZGFzaC5jbG9uZURlZXAob3B0aW9ucy5tdXRhdGlvbiksXG4gICAgfTtcblxuICAgIC8vIEFwcGVuZCB0aGUga2V5IGdyYXBoIHF1ZXJ5XG4gICAgY29uc3QgaW5jbHVkZUtleUdyYXBoID0gdGhpcy5pc0luY2x1ZGVLZXlHcmFwaChvcHRpb25zLmluY2x1ZGVLZXlHcmFwaCk7XG5cbiAgICBpZiAoaW5jbHVkZUtleUdyYXBoKSB7XG4gICAgICBjb25zdCBvcGVyYXRpb24gPSBnZXRNdXRhdGlvbihvcHRpb25zLm11dGF0aW9uKTtcbiAgICAgIG9wZXJhdGlvbi5zZWxlY3Rpb25TZXQuc2VsZWN0aW9ucyA9IFtcbiAgICAgICAgLi4ub3BlcmF0aW9uLnNlbGVjdGlvblNldC5zZWxlY3Rpb25zLFxuICAgICAgICBmZXRjaEtleUdyYXBoRmllbGRBc3RTZWxlY3Rpb24sXG4gICAgICBdO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLm5hbWUpIHtcbiAgICAgIGNvbnN0IG9wZXJhdGlvbiA9IGdldE11dGF0aW9uKG9wdGlvbnMubXV0YXRpb24pO1xuICAgICAgKG9wZXJhdGlvbi5uYW1lIGFzIGFueSkgPSB7XG4gICAgICAgIGtpbmQ6ICdOYW1lJyxcbiAgICAgICAgdmFsdWU6IG9wdGlvbnMubmFtZSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gRm9ybWF0IHRvIHN0cmluZyBhbmQgcGFyc2UgYWdhaW4uIFRoaXMgYWxsb3dzIHRoZSBcImxvY1wiOiB7IFwic3RhcnRcIjogLi4uIH1cbiAgICAvLyBwYXJ0IG9mIHRoZSBEb2N1bWVudE5vZGUgdG8gYmUgY29ycmVjdGx5IHNldHVwLiBJdCdzIGV4dHJhIHByb2Nlc3NpbmdcbiAgICAvLyBpbiBzZXJpYWxpc2luZyBhbmQgcGFyc2luZywgYnV0IHByb2JhYmx5IG1pbmltYWwgb3ZlcmhlYWQuXG4gICAgb3B0aW9ucy5tdXRhdGlvbiA9IGdxbChncWxQcmludGVyLnByaW50KG9wdGlvbnMubXV0YXRpb24pKTtcblxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5hcG9sbG8ubXV0YXRlPFQ+KG9wdGlvbnMpLnRvUHJvbWlzZSgpO1xuXG4gICAgdGhpcy5zdGF0cy5tdXRhdGlvbkNvdW50Kys7XG5cbiAgICBoYW5kbGVBcG9sbG9FcnJvcihyZXNwb25zZS5lcnJvcnMpO1xuXG4gICAgdGhpcy5hZGRLZXlzKHJlc3BvbnNlKTtcblxuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLnF1ZXJ5UHJvY2Vzc29yLnByb2Nlc3NRdWVyeShcbiAgICAgIHJlc3BvbnNlLmRhdGEsXG4gICAgICBvcHRpb25zLnByb2Nlc3Nvck9wdGlvbnNcbiAgICApO1xuXG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBzdGF0c1NuYXBzaG90KCk6IExyR3JhcGhRTFNlcnZpY2VTdGF0cyB7XG4gICAgcmV0dXJuIGxvZGFzaC5jbG9uZURlZXAodGhpcy5zdGF0cyk7XG4gIH1cblxuICBwcml2YXRlIGFkZEtleXMocmVzcG9uc2UpIHtcbiAgICBpZiAoKHJlc3BvbnNlLmRhdGEgYXMgSGFzS2V5R3JhcGgpLmtleUdyYXBoKSB7XG4gICAgICB0aGlzLmtleUdyYXBoLmFkZEtleXMoKHJlc3BvbnNlLmRhdGEgYXMgSGFzS2V5R3JhcGgpLmtleUdyYXBoKTtcbiAgICAgIGRlbGV0ZSByZXNwb25zZS5kYXRhLmtleUdyYXBoO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaXNJbmNsdWRlS2V5R3JhcGgoaW5jbHVkZUtleUdyYXBoKSB7XG4gICAgLy8gRGVmYXVsdCB0byB0cnVlIHdoZW4gbnVsbCBvciB1bmRlZmluZWQuXG4gICAgcmV0dXJuIGluY2x1ZGVLZXlHcmFwaCA9PSBudWxsID8gdHJ1ZSA6IGZhbHNlO1xuICB9XG5cbiAgYXN5bmMgbHJNdXRhdGU8VDEsIFRWYXJpYWJsZXMxLCBUMiwgVFZhcmlhYmxlczI+KFxuICAgIGxyTXV0YXRpb25zOiBbXG4gICAgICBMck11dGF0aW9uTWF5QXN5bmM8VDEsIFRWYXJpYWJsZXMxPixcbiAgICAgIExyTXV0YXRpb25NYXlBc3luYzxUMiwgVFZhcmlhYmxlczI+XG4gICAgXSxcbiAgICBvcHRpb25zPzogTHJNdXRhdGlvbk9wdGlvbnNcbiAgKTogUHJvbWlzZTxbVDEsIFQyXT47XG5cbiAgYXN5bmMgbHJNdXRhdGU8VDEsIFRWYXJpYWJsZXMxLCBUMiwgVFZhcmlhYmxlczIsIFQzLCBUVmFyaWFibGVzMz4oXG4gICAgbHJNdXRhdGlvbnM6IFtcbiAgICAgIExyTXV0YXRpb25NYXlBc3luYzxUMSwgVFZhcmlhYmxlczE+LFxuICAgICAgTHJNdXRhdGlvbk1heUFzeW5jPFQyLCBUVmFyaWFibGVzMj4sXG4gICAgICBMck11dGF0aW9uTWF5QXN5bmM8VDMsIFRWYXJpYWJsZXMzPlxuICAgIF0sXG4gICAgb3B0aW9ucz86IExyTXV0YXRpb25PcHRpb25zXG4gICk6IFByb21pc2U8W1QxLCBUMiwgVDNdPjtcblxuICBhc3luYyBsck11dGF0ZTxcbiAgICBUMSxcbiAgICBUVmFyaWFibGVzMSxcbiAgICBUMixcbiAgICBUVmFyaWFibGVzMixcbiAgICBUMyxcbiAgICBUVmFyaWFibGVzMyxcbiAgICBUNCxcbiAgICBUVmFyaWFibGVzNFxuICA+KFxuICAgIGxyTXV0YXRpb25zOiBbXG4gICAgICBMck11dGF0aW9uTWF5QXN5bmM8VDEsIFRWYXJpYWJsZXMxPixcbiAgICAgIExyTXV0YXRpb25NYXlBc3luYzxUMiwgVFZhcmlhYmxlczI+LFxuICAgICAgTHJNdXRhdGlvbk1heUFzeW5jPFQzLCBUVmFyaWFibGVzMz4sXG4gICAgICBMck11dGF0aW9uTWF5QXN5bmM8VDQsIFRWYXJpYWJsZXM0PlxuICAgIF0sXG4gICAgb3B0aW9ucz86IExyTXV0YXRpb25PcHRpb25zXG4gICk6IFByb21pc2U8W1QxLCBUMiwgVDMsIFQ0XT47XG5cbiAgYXN5bmMgbHJNdXRhdGU8XG4gICAgVDEsXG4gICAgVFZhcmlhYmxlczEsXG4gICAgVDIsXG4gICAgVFZhcmlhYmxlczIsXG4gICAgVDMsXG4gICAgVFZhcmlhYmxlczMsXG4gICAgVDQsXG4gICAgVFZhcmlhYmxlczQsXG4gICAgVDUsXG4gICAgVFZhcmlhYmxlczVcbiAgPihcbiAgICBsck11dGF0aW9uczogW1xuICAgICAgTHJNdXRhdGlvbk1heUFzeW5jPFQxLCBUVmFyaWFibGVzMT4sXG4gICAgICBMck11dGF0aW9uTWF5QXN5bmM8VDIsIFRWYXJpYWJsZXMyPixcbiAgICAgIExyTXV0YXRpb25NYXlBc3luYzxUMywgVFZhcmlhYmxlczM+LFxuICAgICAgTHJNdXRhdGlvbk1heUFzeW5jPFQ0LCBUVmFyaWFibGVzND4sXG4gICAgICBMck11dGF0aW9uTWF5QXN5bmM8VDUsIFRWYXJpYWJsZXM1PlxuICAgIF0sXG4gICAgb3B0aW9ucz86IExyTXV0YXRpb25PcHRpb25zXG4gICk6IFByb21pc2U8W1QxLCBUMiwgVDMsIFQ0LCBUNV0+O1xuXG4gIGFzeW5jIGxyTXV0YXRlPFQsIFRWYXJpYWJsZXMgPSB7IFtrZXk6IHN0cmluZ106IGFueSB9PihcbiAgICBsck11dGF0aW9uOiBMck11dGF0aW9uTWF5QXN5bmM8VCwgVFZhcmlhYmxlcz4sXG4gICAgb3B0aW9ucz86IExyTXV0YXRpb25PcHRpb25zPFQsIFRWYXJpYWJsZXM+XG4gICk6IFByb21pc2U8VD47XG5cbiAgYXN5bmMgbHJNdXRhdGU8VCwgVFZhcmlhYmxlcyA9IHsgW2tleTogc3RyaW5nXTogYW55IH0+KFxuICAgIGxyTXV0YXRpb25zOiBMck11dGF0aW9uTWF5QXN5bmM8VCwgVFZhcmlhYmxlcz5bXSxcbiAgICBvcHRpb25zPzogTHJNdXRhdGlvbk9wdGlvbnNcbiAgKTtcblxuICBhc3luYyBsck11dGF0ZTxULCBUVmFyaWFibGVzID0geyBba2V5OiBzdHJpbmddOiBhbnkgfT4oXG4gICAgbHJNdXRhdGlvbnM6XG4gICAgICB8IExyTXV0YXRpb25NYXlBc3luYzxULCBUVmFyaWFibGVzPltdXG4gICAgICB8IExyTXV0YXRpb25NYXlBc3luYzxULCBUVmFyaWFibGVzPixcbiAgICBvcHRpb25zPzogTHJNdXRhdGlvbk9wdGlvbnNcbiAgKSB7XG4gICAgaWYgKGxyTXV0YXRpb25zIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgIGNvbnN0IG1lcmdlZCA9IExyTWVyZ2VkTXV0YXRpb24uY3JlYXRlKGF3YWl0IFByb21pc2UuYWxsKGxyTXV0YXRpb25zKSk7XG4gICAgICBhd2FpdCB0aGlzLmxyTXV0YXRlSW1wbChtZXJnZWQsIG9wdGlvbnMpO1xuICAgICAgcmV0dXJuIG1lcmdlZC5wcm9taXNlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCByZXNvbHZlZCA9IGF3YWl0IGxyTXV0YXRpb25zO1xuICAgICAgYXdhaXQgdGhpcy5sck11dGF0ZUltcGwocmVzb2x2ZWQsIG9wdGlvbnMpO1xuICAgICAgcmV0dXJuIHJlc29sdmVkLnByb21pc2U7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCB0eXBlIExyTXV0YXRpb25NYXlBc3luYzxULCBUVmFyaWFibGVzID0gT3BlcmF0aW9uVmFyaWFibGVzPiA9IE1heUFzeW5jPFxuICBMck11dGF0aW9uQmFzZTxULCBUVmFyaWFibGVzPlxuPjtcbiJdfQ==
@@ -1,216 +0,0 @@
1
- import { lodash } from '../../_common';
2
- import * as ast from '../../_common/ast';
3
- import { getAliasOrName, getFragments, getMutation } from '../../_common/ast';
4
- import { KcBadLogicException, KcUnsupportedException, } from '../../_common/exceptions';
5
- import { LrMutation } from './lr-mutation';
6
- import { LrMutationBase } from './lr-mutation-base';
7
- const lrMergedMutationDoc = {
8
- kind: 'Document',
9
- definitions: [
10
- {
11
- kind: 'OperationDefinition',
12
- operation: 'mutation',
13
- name: {
14
- kind: 'Name',
15
- value: 'lrMergedMutation',
16
- },
17
- variableDefinitions: [],
18
- directives: [],
19
- selectionSet: {
20
- kind: 'SelectionSet',
21
- selections: [],
22
- },
23
- },
24
- ],
25
- };
26
- export class LrMergedMutation extends LrMutationBase {
27
- constructor(lrMutations) {
28
- super();
29
- this.lrMutations = lrMutations;
30
- const { mutation, variables, prefixes } = this.merge();
31
- this.mutation = mutation;
32
- this.variables = variables;
33
- this.prefixes = prefixes;
34
- this.descendants = this.getDescendants();
35
- }
36
- static create(lrMutations) {
37
- return new LrMergedMutation(lrMutations);
38
- }
39
- getDescendants() {
40
- const ret = new Set();
41
- const addOrThrow = (item) => {
42
- if (ret.has(item)) {
43
- throw new KcBadLogicException('Classes that are derived from LrMutationBase can not be used more than once in a merged mutation.');
44
- }
45
- ret.add(item);
46
- };
47
- this.lrMutations.forEach((lrMutation) => {
48
- if (lrMutation instanceof LrMutation) {
49
- addOrThrow(lrMutation);
50
- }
51
- else if (lrMutation instanceof LrMergedMutation) {
52
- lrMutation.descendants.forEach((t) => addOrThrow(t));
53
- }
54
- else {
55
- throw new KcUnsupportedException(`LrMergeMutation can not handle class: ${lrMutation.constructor.name}`);
56
- }
57
- });
58
- return ret;
59
- }
60
- resolve(value) {
61
- // Resolves any promises waiting for the child mutations
62
- for (let i = 0; i < this.lrMutations.length; ++i) {
63
- const prefix = this.prefixes[i];
64
- // Remove the prefix and resolve child mutation.
65
- const res = {};
66
- for (const key2 in value) {
67
- if (key2.startsWith(prefix)) {
68
- const originalKey = key2.slice(prefix.length);
69
- res[originalKey] = value[key2];
70
- }
71
- }
72
- this.lrMutations[i].resolve(res);
73
- }
74
- // Resolves to the result of children
75
- Promise.all(this.lrMutations.map((m) => m.promise)).then((childValues) => {
76
- // Resolves any promises waiting for the current merged mutation
77
- super.resolve(childValues);
78
- });
79
- }
80
- reject(reason) {
81
- super.reject(reason);
82
- this.lrMutations.forEach((lrMutation) => lrMutation.reject(reason));
83
- }
84
- setExecuted() {
85
- super.setExecuted();
86
- this.lrMutations.forEach((lrMutation) => lrMutation.setExecuted());
87
- }
88
- renameVariableDefinition(varDef, prefix) {
89
- return Object.assign(Object.assign({}, varDef), { variable: Object.assign(Object.assign({}, varDef.variable), { name: ast.name(prefix + varDef.variable.name.value) }) });
90
- }
91
- renameVariableDefinitions(varDefs, prefix) {
92
- return varDefs.map((varDef) => this.renameVariableDefinition(varDef, prefix));
93
- }
94
- renameArgument(arg, prefix) {
95
- if (arg.value.kind !== 'Variable') {
96
- return arg;
97
- }
98
- return Object.assign(Object.assign({}, arg), { value: Object.assign(Object.assign({}, arg.value), { name: ast.name(prefix + arg.value.name.value) }) });
99
- }
100
- renameField(selection, prefix) {
101
- // Only handling type Field
102
- if (selection.kind !== 'Field') {
103
- return selection;
104
- }
105
- const alias = prefix + getAliasOrName(selection);
106
- const args = selection.arguments.map((arg) => this.renameArgument(arg, prefix));
107
- return Object.assign(Object.assign({}, selection), { alias: {
108
- kind: 'Name',
109
- value: alias,
110
- }, arguments: args });
111
- }
112
- renameFragmentSpread(selection, prefix) {
113
- return Object.assign(Object.assign({}, selection), { name: ast.name(prefix + selection.name.value) });
114
- }
115
- processSelection(selection, prefix) {
116
- switch (selection.kind) {
117
- case 'FragmentSpread':
118
- return this.renameFragmentSpread(selection, prefix);
119
- case 'Field':
120
- // Continue to process children for nested selections.
121
- if (selection.selectionSet) {
122
- return Object.assign(Object.assign({}, selection), { selectionSet: this.processSelectionSet(selection.selectionSet, prefix) });
123
- }
124
- else {
125
- return selection;
126
- }
127
- default:
128
- return selection;
129
- }
130
- }
131
- processSelectionSet(selectionSet, prefix) {
132
- return Object.assign(Object.assign({}, selectionSet), { selections: selectionSet.selections.map((selection) => this.processSelection(selection, prefix)) });
133
- }
134
- renameSelections(selections, prefix) {
135
- return selections.map((selection) => {
136
- switch (selection.kind) {
137
- case 'Field':
138
- return this.processSelection(this.renameField(selection, prefix), prefix);
139
- default:
140
- return selection;
141
- }
142
- });
143
- }
144
- renameFragmentDefinition(fragment, prefix) {
145
- const ret = Object.assign(Object.assign({}, fragment), { name: ast.name(prefix + fragment.name.value) });
146
- if (fragment.selectionSet) {
147
- ret.selectionSet = this.processSelectionSet(fragment.selectionSet, prefix);
148
- }
149
- return ret;
150
- }
151
- renameFragmentDefinitions(fragments, prefix) {
152
- return fragments.map((fragment) => this.renameFragmentDefinition(fragment, prefix));
153
- }
154
- merge() {
155
- let variableDefinitions = [];
156
- let selections = [];
157
- const mergedVariables = {};
158
- let mergedFragments = [];
159
- const prefixes = [];
160
- // Just wait for everything to resolve because we have to
161
- // merge the doc synchronously.
162
- this.lrMutations.forEach((lrMutation, idx) => {
163
- // Sometimes typing won't catch everything. So need to dynamically check the
164
- // type to be sure.
165
- if (!(lrMutation instanceof LrMutationBase)) {
166
- throw new KcBadLogicException('An mutation in the array is not of type LrMutationBase.');
167
- }
168
- const { mutation, variables } = lrMutation.lrMutationData;
169
- const childMutationNode = getMutation(mutation);
170
- // Prefixing all mutation fields so they don't conflict.
171
- let prefix = `item${idx}_`;
172
- if (childMutationNode.name) {
173
- prefix += childMutationNode.name.value + '_';
174
- }
175
- prefixes.push(prefix);
176
- // Rename and merge variables
177
- variableDefinitions = [
178
- ...variableDefinitions,
179
- ...this.renameVariableDefinitions(childMutationNode.variableDefinitions, prefix),
180
- ];
181
- // Rename and merge selections
182
- selections = [
183
- ...selections,
184
- ...this.renameSelections(childMutationNode.selectionSet.selections, prefix),
185
- ];
186
- // Rename and merge variables
187
- for (const key2 of Object.keys(variables)) {
188
- mergedVariables[prefix + key2] = variables[key2];
189
- }
190
- // Rename and merge fragments
191
- const fragments = getFragments(mutation);
192
- mergedFragments = [
193
- ...mergedFragments,
194
- ...this.renameFragmentDefinitions(fragments, prefix),
195
- ];
196
- });
197
- const mergedMutation = lodash.cloneDeep(lrMergedMutationDoc);
198
- const mutationNode = getMutation(mergedMutation);
199
- // Add in the mutation selections
200
- mutationNode.selectionSet.selections = selections;
201
- // Add in the variables
202
- // variableDefinitions is readonly property.
203
- mutationNode.variableDefinitions = variableDefinitions;
204
- // Add in the fragments
205
- mergedMutation.definitions = [
206
- ...mergedMutation.definitions,
207
- ...mergedFragments,
208
- ];
209
- return {
210
- mutation: mergedMutation,
211
- variables: mergedVariables,
212
- prefixes,
213
- };
214
- }
215
- }
216
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibHItbWVyZ2VkLW11dGF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL2FwaS9sci1ncmFwaHFsL2xyLW1lcmdlZC1tdXRhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFXQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sS0FBSyxHQUFHLE1BQU0sbUJBQW1CLENBQUM7QUFDekMsT0FBTyxFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUUsT0FBTyxFQUNMLG1CQUFtQixFQUNuQixzQkFBc0IsR0FDdkIsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVwRCxNQUFNLG1CQUFtQixHQUFpQjtJQUN4QyxJQUFJLEVBQUUsVUFBVTtJQUNoQixXQUFXLEVBQUU7UUFDWDtZQUNFLElBQUksRUFBRSxxQkFBcUI7WUFDM0IsU0FBUyxFQUFFLFVBQVU7WUFDckIsSUFBSSxFQUFFO2dCQUNKLElBQUksRUFBRSxNQUFNO2dCQUNaLEtBQUssRUFBRSxrQkFBa0I7YUFDMUI7WUFDRCxtQkFBbUIsRUFBRSxFQUFFO1lBQ3ZCLFVBQVUsRUFBRSxFQUFFO1lBQ2QsWUFBWSxFQUFFO2dCQUNaLElBQUksRUFBRSxjQUFjO2dCQUNwQixVQUFVLEVBQUUsRUFBRTthQUNmO1NBQ0Y7S0FDRjtDQU1GLENBQUM7QUFFRixNQUFNLE9BQU8sZ0JBQW9CLFNBQVEsY0FBaUI7SUFJeEQsWUFBNEIsV0FBa0M7UUFDNUQsS0FBSyxFQUFFLENBQUM7UUFEa0IsZ0JBQVcsR0FBWCxXQUFXLENBQXVCO1FBRzVELE1BQU0sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFFB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LDZCQUE2QjtZQUM3QixLQUFLLE1BQU0sSUFBSSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUU7Z0JBQ3pDLGVBQWUsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ2xEO1lBRUQsNkJBQTZCO1lBQzdCLE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN6QyxlQUFlLEdBQUc7Z0JBQ2hCLEdBQUcsZUFBZTtnQkFDbEIsR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQzthQUNyRCxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLGNBQWMsR0FBaUIsTUFBTSxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQzNFLE1BQU0sWUFBWSxHQUFHLFdBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNqRCxpQ0FBaUM7UUFDakMsWUFBWSxDQUFDLFlBQVksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQ2xELHVCQUF1QjtRQUN2Qiw0Q0FBNEM7UUFDM0MsWUFBb0IsQ0FBQyxtQkFBbUIsR0FBRyxtQkFBbUIsQ0FBQztRQUNoRSx1QkFBdUI7UUFDdEIsY0FBc0IsQ0FBQyxXQUFXLEdBQUc7WUFDcEMsR0FBRyxjQUFjLENBQUMsV0FBVztZQUM3QixHQUFHLGVBQWU7U0FDbkIsQ0FBQztRQUVGLE9BQU87WUFDTCxRQUFRLEVBQUUsY0FBYztZQUN4QixTQUFTLEVBQUUsZUFBZTtZQUMxQixRQUFRO1NBQ1QsQ0FBQztJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7XG4gIEFyZ3VtZW50Tm9kZSxcbiAgRG9jdW1lbnROb2RlLFxuICBGaWVsZE5vZGUsXG4gIEZyYWdtZW50RGVmaW5pdGlvbk5vZGUsXG4gIEZyYWdtZW50U3ByZWFkTm9kZSxcbiAgU2VsZWN0aW9uTm9kZSxcbiAgU2VsZWN0aW9uU2V0Tm9kZSxcbiAgVmFyaWFibGVEZWZpbml0aW9uTm9kZSxcbn0gZnJvbSAnZ3JhcGhxbCc7XG5pbXBvcnQgeyBsb2Rhc2ggfSBmcm9tICcuLi8uLi9fY29tbW9uJztcbmltcG9ydCAqIGFzIGFzdCBmcm9tICcuLi8uLi9fY29tbW9uL2FzdCc7XG5pbXBvcnQgeyBnZXRBbGlhc09yTmFtZSwgZ2V0RnJhZ21lbnRzLCBnZXRNdXRhdGlvbiB9IGZyb20gJy4uLy4uL19jb21tb24vYXN0JztcbmltcG9ydCB7XG4gIEtjQmFkTG9naWNFeGNlcHRpb24sXG4gIEtjVW5zdXBwb3J0ZWRFeGNlcHRpb24sXG59IGZyb20gJy4uLy4uL19jb21tb24vZXhjZXB0aW9ucyc7XG5pbXBvcnQgeyBMck11dGF0aW9uIH0gZnJvbSAnLi9sci1tdXRhdGlvbic7XG5pbXBvcnQgeyBMck11dGF0aW9uQmFzZSB9IGZyb20gJy4vbHItbXV0YXRpb24tYmFzZSc7XG5cbmNvbnN0IGxyTWVyZ2VkTXV0YXRpb25Eb2M6IERvY3VtZW50Tm9kZSA9IHtcbiAga2luZDogJ0RvY3VtZW50JyxcbiAgZGVmaW5pdGlvbnM6IFtcbiAgICB7XG4gICAgICBraW5kOiAnT3BlcmF0aW9uRGVmaW5pdGlvbicsXG4gICAgICBvcGVyYXRpb246ICdtdXRhdGlvbicsXG4gICAgICBuYW1lOiB7XG4gICAgICAgIGtpbmQ6ICdOYW1lJyxcbiAgICAgICAgdmFsdWU6ICdsck1lcmdlZE11dGF0aW9uJyxcbiAgICAgIH0sXG4gICAgICB2YXJpYWJsZURlZmluaXRpb25zOiBbXSxcbiAgICAgIGRpcmVjdGl2ZXM6IFtdLFxuICAgICAgc2VsZWN0aW9uU2V0OiB7XG4gICAgICAgIGtpbmQ6ICdTZWxlY3Rpb25TZXQnLFxuICAgICAgICBzZWxlY3Rpb25zOiBbXSxcbiAgICAgIH0sXG4gICAgfSxcbiAgXSxcbiAgLy8gVE9ETyBXaGF0IHRvIGRvIGFib3V0IHRoZXNlPyBTZXJpYWxpc2UgYW5kIHJlcGFyc2U/XG4gIC8vIFwibG9jXCI6IHtcbiAgLy8gICBcInN0YXJ0XCI6IDAsXG4gIC8vICAgXCJlbmRcIjogMjA0XG4gIC8vIH1cbn07XG5cbmV4cG9ydCBjbGFzcyBMck1lcmdlZE11dGF0aW9uPFQ+IGV4dGVuZHMgTHJNdXRhdGlvbkJhc2U8VD4ge1xuICBwdWJsaWMgcmVhZG9ubHkgZGVzY2VuZGFudHM6IFNldDxMck11dGF0aW9uQmFzZTxhbnk+PjtcbiAgcHJvdGVjdGVkIHByZWZpeGVzOiBzdHJpbmdbXTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgbHJNdXRhdGlvbnM6IExyTXV0YXRpb25CYXNlPGFueT5bXSkge1xuICAgIHN1cGVyKCk7XG5cbiAgICBjb25zdCB7IG11dGF0aW9uLCB2YXJpYWJsZXMsIHByZWZpeGVzIH0gPSB0aGlzLm1lcmdlKCk7XG4gICAgdGhpcy5tdXRhdGlvbiA9IG11dGF0aW9uO1xuICAgIHRoaXMudmFyaWFibGVzID0gdmFyaWFibGVzO1xuICAgIHRoaXMucHJlZml4ZXMgPSBwcmVmaXhlcztcbiAgICB0aGlzLmRlc2NlbmRhbnRzID0gdGhpcy5nZXREZXNjZW5kYW50cygpO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZTxUMSwgVDI+KFxuICAgIGxyTXV0YXRpb25zOiBbXG4gICAgICBMck11dGF0aW9uQmFzZTxUMT4gfCBMck1lcmdlZE11dGF0aW9uPFQxPixcbiAgICAgIExyTXV0YXRpb25CYXNlPFQyPiB8IExyTWVyZ2VkTXV0YXRpb248VDI+XG4gICAgXVxuICApOiBMck1lcmdlZE11dGF0aW9uPFtUMSwgVDJdPjtcblxuICBzdGF0aWMgY3JlYXRlPFQxLCBUMiwgVDM+KFxuICAgIGxyTXV0YXRpb25zOiBbXG4gICAgICBMck11dGF0aW9uQmFzZTxUMT4gfCBMck1lcmdlZE11dGF0aW9uPFQxPixcbiAgICAgIExyTXV0YXRpb25CYXNlPFQyPiB8IExyTWVyZ2VkTXV0YXRpb248VDI+LFxuICAgICAgTHJNdXRhdGlvbkJhc2U8VDM+IHwgTHJNZXJnZWRNdXRhdGlvbjxUMz5cbiAgICBdXG4gICk6IExyTWVyZ2VkTXV0YXRpb248W1QxLCBUMiwgVDNdPjtcblxuICBzdGF0aWMgY3JlYXRlPFQxLCBUMiwgVDMsIFQ0PihcbiAgICBsck11dGF0aW9uczogW1xuICAgICAgTHJNdXRhdGlvbkJhc2U8VDE+IHwgTHJNZXJnZWRNdXRhdGlvbjxUMT4sXG4gICAgICBMck11dGF0aW9uQmFzZTxUMj4gfCBMck1lcmdlZE11dGF0aW9uPFQyPixcbiAgICAgIExyTXV0YXRpb25CYXNlPFQzPiB8IExyTWVyZ2VkTXV0YXRpb248VDM+LFxuICAgICAgTHJNdXRhdGlvbkJhc2U8VDQ+IHwgTHJNZXJnZWRNdXRhdGlvbjxUND5cbiAgICBdXG4gICk6IExyTWVyZ2VkTXV0YXRpb248W1QxLCBUMiwgVDMsIFQ0XT47XG5cbiAgc3RhdGljIGNyZWF0ZTxUMSwgVDIsIFQzLCBUNCwgVDU+KFxuICAgIGxyTXV0YXRpb25zOiBbXG4gICAgICBMck11dGF0aW9uQmFzZTxUMT4gfCBMck1lcmdlZE11dGF0aW9uPFQxPixcbiAgICAgIExyTXV0YXRpb25CYXNlPFQyPiB8IExyTWVyZ2VkTXV0YXRpb248VDI+LFxuICAgICAgTHJNdXRhdGlvbkJhc2U8VDM+IHwgTHJNZXJnZWRNdXRhdGlvbjxUMz4sXG4gICAgICBMck11dGF0aW9uQmFzZTxUND4gfCBMck1lcmdlZE11dGF0aW9uPFQ0PixcbiAgICAgIExyTXV0YXRpb25CYXNlPFQ1PiB8IExyTWVyZ2VkTXV0YXRpb248VDU+XG4gICAgXVxuICApOiBMck1lcmdlZE11dGF0aW9uPFtUMSwgVDIsIFQzLCBUNCwgVDVdPjtcblxuICBzdGF0aWMgY3JlYXRlPFQ+KGxyTXV0YXRpb25zOiBMck11dGF0aW9uQmFzZTxUPltdKTogTHJNZXJnZWRNdXRhdGlvbjxUW10+O1xuXG4gIHN0YXRpYyBjcmVhdGUobHJNdXRhdGlvbnM6IExyTXV0YXRpb25CYXNlPGFueT5bXSk6IExyTWVyZ2VkTXV0YXRpb248YW55W10+O1xuXG4gIHN0YXRpYyBjcmVhdGUobHJNdXRhdGlvbnM6IExyTXV0YXRpb25CYXNlPGFueT5bXSkge1xuICAgIHJldHVybiBuZXcgTHJNZXJnZWRNdXRhdGlvbihsck11dGF0aW9ucyk7XG4gIH1cblxuICBwcml2YXRlIGdldERlc2NlbmRhbnRzKCkge1xuICAgIGNvbnN0IHJldCA9IG5ldyBTZXQ8THJNdXRhdGlvbkJhc2U8YW55Pj4oKTtcblxuICAgIGNvbnN0IGFkZE9yVGhyb3cgPSAoaXRlbSkgPT4ge1xuICAgICAgaWYgKHJldC5oYXMoaXRlbSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEtjQmFkTG9naWNFeGNlcHRpb24oXG4gICAgICAgICAgJ0NsYXNzZXMgdGhhdCBhcmUgZGVyaXZlZCBmcm9tIExyTXV0YXRpb25CYXNlIGNhbiBub3QgYmUgdXNlZCBtb3JlIHRoYW4gb25jZSBpbiBhIG1lcmdlZCBtdXRhdGlvbi4nXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHJldC5hZGQoaXRlbSk7XG4gICAgfTtcblxuICAgIHRoaXMubHJNdXRhdGlvbnMuZm9yRWFjaCgobHJNdXRhdGlvbikgPT4ge1xuICAgICAgaWYgKGxyTXV0YXRpb24gaW5zdGFuY2VvZiBMck11dGF0aW9uKSB7XG4gICAgICAgIGFkZE9yVGhyb3cobHJNdXRhdGlvbik7XG4gICAgICB9IGVsc2UgaWYgKGxyTXV0YXRpb24gaW5zdGFuY2VvZiBMck1lcmdlZE11dGF0aW9uKSB7XG4gICAgICAgIGxyTXV0YXRpb24uZGVzY2VuZGFudHMuZm9yRWFjaCgodCkgPT4gYWRkT3JUaHJvdyh0KSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgS2NVbnN1cHBvcnRlZEV4Y2VwdGlvbihcbiAgICAgICAgICBgTHJNZXJnZU11dGF0aW9uIGNhbiBub3QgaGFuZGxlIGNsYXNzOiAke2xyTXV0YXRpb24uY29uc3RydWN0b3IubmFtZX1gXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcmV0O1xuICB9XG5cbiAgcmVzb2x2ZSh2YWx1ZTogYW55KSB7XG4gICAgLy8gUmVzb2x2ZXMgYW55IHByb21pc2VzIHdhaXRpbmcgZm9yIHRoZSBjaGlsZCBtdXRhdGlvbnNcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubHJNdXRhdGlvbnMubGVuZ3RoOyArK2kpIHtcbiAgICAgIGNvbnN0IHByZWZpeCA9IHRoaXMucHJlZml4ZXNbaV07XG5cbiAgICAgIC8vIFJlbW92ZSB0aGUgcHJlZml4IGFuZCByZXNvbHZlIGNoaWxkIG11dGF0aW9uLlxuICAgICAgY29uc3QgcmVzOiBhbnkgPSB7fTtcbiAgICAgIGZvciAoY29uc3Qga2V5MiBpbiB2YWx1ZSkge1xuICAgICAgICBpZiAoa2V5Mi5zdGFydHNXaXRoKHByZWZpeCkpIHtcbiAgICAgICAgICBjb25zdCBvcmlnaW5hbEtleSA9IGtleTIuc2xpY2UocHJlZml4Lmxlbmd0aCk7XG4gICAgICAgICAgcmVzW29yaWdpbmFsS2V5XSA9IHZhbHVlW2tleTJdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLmxyTXV0YXRpb25zW2ldLnJlc29sdmUocmVzKTtcbiAgICB9XG5cbiAgICAvLyBSZXNvbHZlcyB0byB0aGUgcmVzdWx0IG9mIGNoaWxkcmVuXG4gICAgUHJvbWlzZS5hbGwodGhpcy5sck11dGF0aW9ucy5tYXAoKG0pID0+IG0ucHJvbWlzZSkpLnRoZW4oXG4gICAgICAoY2hpbGRWYWx1ZXM6IGFueSkgPT4ge1xuICAgICAgICAvLyBSZXNvbHZlcyBhbnkgcHJvbWlzZXMgd2FpdGluZyBmb3IgdGhlIGN1cnJlbnQgbWVyZ2VkIG11dGF0aW9uXG4gICAgICAgIHN1cGVyLnJlc29sdmUoY2hpbGRWYWx1ZXMpO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICByZWplY3QocmVhc29uPzogYW55KSB7XG4gICAgc3VwZXIucmVqZWN0KHJlYXNvbik7XG4gICAgdGhpcy5sck11dGF0aW9ucy5mb3JFYWNoKChsck11dGF0aW9uKSA9PiBsck11dGF0aW9uLnJlamVjdChyZWFzb24pKTtcbiAgfVxuXG4gIHNldEV4ZWN1dGVkKCkge1xuICAgIHN1cGVyLnNldEV4ZWN1dGVkKCk7XG4gICAgdGhpcy5sck11dGF0aW9ucy5mb3JFYWNoKChsck11dGF0aW9uKSA9PiBsck11dGF0aW9uLnNldEV4ZWN1dGVkKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW5hbWVWYXJpYWJsZURlZmluaXRpb24odmFyRGVmOiBWYXJpYWJsZURlZmluaXRpb25Ob2RlLCBwcmVmaXgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4udmFyRGVmLFxuICAgICAgdmFyaWFibGU6IHtcbiAgICAgICAgLi4udmFyRGVmLnZhcmlhYmxlLFxuICAgICAgICBuYW1lOiBhc3QubmFtZShwcmVmaXggKyB2YXJEZWYudmFyaWFibGUubmFtZS52YWx1ZSksXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHJlbmFtZVZhcmlhYmxlRGVmaW5pdGlvbnMoXG4gICAgdmFyRGVmczogUmVhZG9ubHlBcnJheTxWYXJpYWJsZURlZmluaXRpb25Ob2RlPixcbiAgICBwcmVmaXhcbiAgKSB7XG4gICAgcmV0dXJuIHZhckRlZnMubWFwKCh2YXJEZWYpID0+XG4gICAgICB0aGlzLnJlbmFtZVZhcmlhYmxlRGVmaW5pdGlvbih2YXJEZWYsIHByZWZpeClcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSByZW5hbWVBcmd1bWVudChhcmc6IEFyZ3VtZW50Tm9kZSwgcHJlZml4KSB7XG4gICAgaWYgKGFyZy52YWx1ZS5raW5kICE9PSAnVmFyaWFibGUnKSB7XG4gICAgICByZXR1cm4gYXJnO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAuLi5hcmcsXG4gICAgICB2YWx1ZToge1xuICAgICAgICAuLi5hcmcudmFsdWUsXG4gICAgICAgIG5hbWU6IGFzdC5uYW1lKHByZWZpeCArIGFyZy52YWx1ZS5uYW1lLnZhbHVlKSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgcmVuYW1lRmllbGQoc2VsZWN0aW9uOiBGaWVsZE5vZGUsIHByZWZpeCk6IEZpZWxkTm9kZSB7XG4gICAgLy8gT25seSBoYW5kbGluZyB0eXBlIEZpZWxkXG4gICAgaWYgKHNlbGVjdGlvbi5raW5kICE9PSAnRmllbGQnKSB7XG4gICAgICByZXR1cm4gc2VsZWN0aW9uO1xuICAgIH1cblxuICAgIGNvbnN0IGFsaWFzID0gcHJlZml4ICsgZ2V0QWxpYXNPck5hbWUoc2VsZWN0aW9uKTtcbiAgICBjb25zdCBhcmdzID0gc2VsZWN0aW9uLmFyZ3VtZW50cy5tYXAoKGFyZykgPT5cbiAgICAgIHRoaXMucmVuYW1lQXJndW1lbnQoYXJnLCBwcmVmaXgpXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5zZWxlY3Rpb24sXG4gICAgICBhbGlhczoge1xuICAgICAgICBraW5kOiAnTmFtZScsXG4gICAgICAgIHZhbHVlOiBhbGlhcyxcbiAgICAgIH0sXG4gICAgICBhcmd1bWVudHM6IGFyZ3MsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgcmVuYW1lRnJhZ21lbnRTcHJlYWQoXG4gICAgc2VsZWN0aW9uOiBGcmFnbWVudFNwcmVhZE5vZGUsXG4gICAgcHJlZml4XG4gICk6IEZyYWdtZW50U3ByZWFkTm9kZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnNlbGVjdGlvbixcbiAgICAgIG5hbWU6IGFzdC5uYW1lKHByZWZpeCArIHNlbGVjdGlvbi5uYW1lLnZhbHVlKSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBwcm9jZXNzU2VsZWN0aW9uKHNlbGVjdGlvbjogU2VsZWN0aW9uTm9kZSwgcHJlZml4KTogU2VsZWN0aW9uTm9kZSB7XG4gICAgc3dpdGNoIChzZWxlY3Rpb24ua2luZCkge1xuICAgICAgY2FzZSAnRnJhZ21lbnRTcHJlYWQnOlxuICAgICAgICByZXR1cm4gdGhpcy5yZW5hbWVGcmFnbWVudFNwcmVhZChzZWxlY3Rpb24sIHByZWZpeCk7XG4gICAgICBjYXNlICdGaWVsZCc6XG4gICAgICAgIC8vIENvbnRpbnVlIHRvIHByb2Nlc3MgY2hpbGRyZW4gZm9yIG5lc3RlZCBzZWxlY3Rpb25zLlxuICAgICAgICBpZiAoc2VsZWN0aW9uLnNlbGVjdGlvblNldCkge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5zZWxlY3Rpb24sXG4gICAgICAgICAgICBzZWxlY3Rpb25TZXQ6IHRoaXMucHJvY2Vzc1NlbGVjdGlvblNldChcbiAgICAgICAgICAgICAgc2VsZWN0aW9uLnNlbGVjdGlvblNldCxcbiAgICAgICAgICAgICAgcHJlZml4XG4gICAgICAgICAgICApLFxuICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHNlbGVjdGlvbjtcbiAgICAgICAgfVxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHNlbGVjdGlvbjtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHByb2Nlc3NTZWxlY3Rpb25TZXQoXG4gICAgc2VsZWN0aW9uU2V0OiBTZWxlY3Rpb25TZXROb2RlLFxuICAgIHByZWZpeFxuICApOiBTZWxlY3Rpb25TZXROb2RlIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc2VsZWN0aW9uU2V0LFxuICAgICAgc2VsZWN0aW9uczogc2VsZWN0aW9uU2V0LnNlbGVjdGlvbnMubWFwKChzZWxlY3Rpb24pID0+XG4gICAgICAgIHRoaXMucHJvY2Vzc1NlbGVjdGlvbihzZWxlY3Rpb24sIHByZWZpeClcbiAgICAgICksXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgcmVuYW1lU2VsZWN0aW9ucyhcbiAgICBzZWxlY3Rpb25zOiBSZWFkb25seUFycmF5PFNlbGVjdGlvbk5vZGU+LFxuICAgIHByZWZpeFxuICApOiBTZWxlY3Rpb25Ob2RlW10ge1xuICAgIHJldHVybiBzZWxlY3Rpb25zLm1hcCgoc2VsZWN0aW9uKSA9PiB7XG4gICAgICBzd2l0Y2ggKHNlbGVjdGlvbi5raW5kKSB7XG4gICAgICAgIGNhc2UgJ0ZpZWxkJzpcbiAgICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzU2VsZWN0aW9uKFxuICAgICAgICAgICAgdGhpcy5yZW5hbWVGaWVsZChzZWxlY3Rpb24sIHByZWZpeCksXG4gICAgICAgICAgICBwcmVmaXhcbiAgICAgICAgICApO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBzZWxlY3Rpb247XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlbmFtZUZyYWdtZW50RGVmaW5pdGlvbihmcmFnbWVudDogRnJhZ21lbnREZWZpbml0aW9uTm9kZSwgcHJlZml4KSB7XG4gICAgY29uc3QgcmV0ID0ge1xuICAgICAgLi4uZnJhZ21lbnQsXG4gICAgICBuYW1lOiBhc3QubmFtZShwcmVmaXggKyBmcmFnbWVudC5uYW1lLnZhbHVlKSxcbiAgICB9O1xuXG4gICAgaWYgKGZyYWdtZW50LnNlbGVjdGlvblNldCkge1xuICAgICAgcmV0LnNlbGVjdGlvblNldCA9IHRoaXMucHJvY2Vzc1NlbGVjdGlvblNldChcbiAgICAgICAgZnJhZ21lbnQuc2VsZWN0aW9uU2V0LFxuICAgICAgICBwcmVmaXhcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJldDtcbiAgfVxuXG4gIHByaXZhdGUgcmVuYW1lRnJhZ21lbnREZWZpbml0aW9ucyhcbiAgICBmcmFnbWVudHM6IEZyYWdtZW50RGVmaW5pdGlvbk5vZGVbXSxcbiAgICBwcmVmaXhcbiAgKSB7XG4gICAgcmV0dXJuIGZyYWdtZW50cy5tYXAoKGZyYWdtZW50KSA9PlxuICAgICAgdGhpcy5yZW5hbWVGcmFnbWVudERlZmluaXRpb24oZnJhZ21lbnQsIHByZWZpeClcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBtZXJnZSgpIHtcbiAgICBsZXQgdmFyaWFibGVEZWZpbml0aW9uczogVmFyaWFibGVEZWZpbml0aW9uTm9kZVtdID0gW107XG4gICAgbGV0IHNlbGVjdGlvbnM6IFNlbGVjdGlvbk5vZGVbXSA9IFtdO1xuICAgIGNvbnN0IG1lcmdlZFZhcmlhYmxlcyA9IHt9O1xuICAgIGxldCBtZXJnZWRGcmFnbWVudHM6IEZyYWdtZW50RGVmaW5pdGlvbk5vZGVbXSA9IFtdO1xuXG4gICAgY29uc3QgcHJlZml4ZXM6IHN0cmluZ1tdID0gW107XG5cbiAgICAvLyBKdXN0IHdhaXQgZm9yIGV2ZXJ5dGhpbmcgdG8gcmVzb2x2ZSBiZWNhdXNlIHdlIGhhdmUgdG9cbiAgICAvLyBtZXJnZSB0aGUgZG9jIHN5bmNocm9ub3VzbHkuXG4gICAgdGhpcy5sck11dGF0aW9ucy5mb3JFYWNoKChsck11dGF0aW9uLCBpZHgpID0+IHtcbiAgICAgIC8vIFNvbWV0aW1lcyB0eXBpbmcgd29uJ3QgY2F0Y2ggZXZlcnl0aGluZy4gU28gbmVlZCB0byBkeW5hbWljYWxseSBjaGVjayB0aGVcbiAgICAgIC8vIHR5cGUgdG8gYmUgc3VyZS5cbiAgICAgIGlmICghKGxyTXV0YXRpb24gaW5zdGFuY2VvZiBMck11dGF0aW9uQmFzZSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEtjQmFkTG9naWNFeGNlcHRpb24oXG4gICAgICAgICAgJ0FuIG11dGF0aW9uIGluIHRoZSBhcnJheSBpcyBub3Qgb2YgdHlwZSBMck11dGF0aW9uQmFzZS4nXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgbXV0YXRpb24sIHZhcmlhYmxlcyB9ID0gbHJNdXRhdGlvbi5sck11dGF0aW9uRGF0YTtcblxuICAgICAgY29uc3QgY2hpbGRNdXRhdGlvbk5vZGUgPSBnZXRNdXRhdGlvbihtdXRhdGlvbik7XG5cbiAgICAgIC8vIFByZWZpeGluZyBhbGwgbXV0YXRpb24gZmllbGRzIHNvIHRoZXkgZG9uJ3QgY29uZmxpY3QuXG4gICAgICBsZXQgcHJlZml4ID0gYGl0ZW0ke2lkeH1fYDtcbiAgICAgIGlmIChjaGlsZE11dGF0aW9uTm9kZS5uYW1lKSB7XG4gICAgICAgIHByZWZpeCArPSBjaGlsZE11dGF0aW9uTm9kZS5uYW1lLnZhbHVlICsgJ18nO1xuICAgICAgfVxuXG4gICAgICBwcmVmaXhlcy5wdXNoKHByZWZpeCk7XG5cbiAgICAgIC8vIFJlbmFtZSBhbmQgbWVyZ2UgdmFyaWFibGVzXG4gICAgICB2YXJpYWJsZURlZmluaXRpb25zID0gW1xuICAgICAgICAuLi52YXJpYWJsZURlZmluaXRpb25zLFxuICAgICAgICAuLi50aGlzLnJlbmFtZVZhcmlhYmxlRGVmaW5pdGlvbnMoXG4gICAgICAgICAgY2hpbGRNdXRhdGlvbk5vZGUudmFyaWFibGVEZWZpbml0aW9ucyxcbiAgICAgICAgICBwcmVmaXhcbiAgICAgICAgKSxcbiAgICAgIF07XG5cbiAgICAgIC8vIFJlbmFtZSBhbmQgbWVyZ2Ugc2VsZWN0aW9uc1xuICAgICAgc2VsZWN0aW9ucyA9IFtcbiAgICAgICAgLi4uc2VsZWN0aW9ucyxcbiAgICAgICAgLi4udGhpcy5yZW5hbWVTZWxlY3Rpb25zKFxuICAgICAgICAgIGNoaWxkTXV0YXRpb25Ob2RlLnNlbGVjdGlvblNldC5zZWxlY3Rpb25zLFxuICAgICAgICAgIHByZWZpeFxuICAgICAgICApLFxuICAgICAgXTtcblxuICAgICAgLy8gUmVuYW1lIGFuZCBtZXJnZSB2YXJpYWJsZXNcbiAgICAgIGZvciAoY29uc3Qga2V5MiBvZiBPYmplY3Qua2V5cyh2YXJpYWJsZXMpKSB7XG4gICAgICAgIG1lcmdlZFZhcmlhYmxlc1twcmVmaXggKyBrZXkyXSA9IHZhcmlhYmxlc1trZXkyXTtcbiAgICAgIH1cblxuICAgICAgLy8gUmVuYW1lIGFuZCBtZXJnZSBmcmFnbWVudHNcbiAgICAgIGNvbnN0IGZyYWdtZW50cyA9IGdldEZyYWdtZW50cyhtdXRhdGlvbik7XG4gICAgICBtZXJnZWRGcmFnbWVudHMgPSBbXG4gICAgICAgIC4uLm1lcmdlZEZyYWdtZW50cyxcbiAgICAgICAgLi4udGhpcy5yZW5hbWVGcmFnbWVudERlZmluaXRpb25zKGZyYWdtZW50cywgcHJlZml4KSxcbiAgICAgIF07XG4gICAgfSk7XG5cbiAgICBjb25zdCBtZXJnZWRNdXRhdGlvbjogRG9jdW1lbnROb2RlID0gbG9kYXNoLmNsb25lRGVlcChsck1lcmdlZE11dGF0aW9uRG9jKTtcbiAgICBjb25zdCBtdXRhdGlvbk5vZGUgPSBnZXRNdXRhdGlvbihtZXJnZWRNdXRhdGlvbik7XG4gICAgLy8gQWRkIGluIHRoZSBtdXRhdGlvbiBzZWxlY3Rpb25zXG4gICAgbXV0YXRpb25Ob2RlLnNlbGVjdGlvblNldC5zZWxlY3Rpb25zID0gc2VsZWN0aW9ucztcbiAgICAvLyBBZGQgaW4gdGhlIHZhcmlhYmxlc1xuICAgIC8vIHZhcmlhYmxlRGVmaW5pdGlvbnMgaXMgcmVhZG9ubHkgcHJvcGVydHkuXG4gICAgKG11dGF0aW9uTm9kZSBhcyBhbnkpLnZhcmlhYmxlRGVmaW5pdGlvbnMgPSB2YXJpYWJsZURlZmluaXRpb25zO1xuICAgIC8vIEFkZCBpbiB0aGUgZnJhZ21lbnRzXG4gICAgKG1lcmdlZE11dGF0aW9uIGFzIGFueSkuZGVmaW5pdGlvbnMgPSBbXG4gICAgICAuLi5tZXJnZWRNdXRhdGlvbi5kZWZpbml0aW9ucyxcbiAgICAgIC4uLm1lcmdlZEZyYWdtZW50cyxcbiAgICBdO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIG11dGF0aW9uOiBtZXJnZWRNdXRhdGlvbixcbiAgICAgIHZhcmlhYmxlczogbWVyZ2VkVmFyaWFibGVzLFxuICAgICAgcHJlZml4ZXMsXG4gICAgfTtcbiAgfVxufVxuIl19
@@ -1,51 +0,0 @@
1
- import gql from 'graphql-tag';
2
- import { getQuery } from '../../_common/ast';
3
- import { DeferredPromise } from '../../_common/deferred-promise';
4
- import { KcBadStateException } from '../../_common/exceptions';
5
- export const fragmentSpreadAstSelection = getQuery(gql `
6
- query {
7
- ...FragmentName
8
- }
9
- `).selectionSet.selections[0];
10
- // const fragmentSpreadAstSelection = () =>
11
- // lodash.deepClone(_fragmentSpreadAstSelection) as FragmentSpreadNode;
12
- /**
13
- * DECISION: LrMutationBase does not provide a convenience method to call lrGraphQL.lrMutate()
14
- * because this class could be made independent of what lib is used to call the API. If we
15
- * provided a configurable call back to make the API call, then the typing for that callback
16
- * needs to be known. But since the API lib (eg. Apollo) has it's own unique return type, so
17
- * it's not possible to do in general.
18
- */
19
- export class LrMutationBase {
20
- constructor() {
21
- /* tslint:disable:variable-name */
22
- this._executed = false;
23
- // protected promises: DeferredPromise<T>[] = [];
24
- this.deferredPromise = new DeferredPromise();
25
- }
26
- get promise() {
27
- return this.deferredPromise.promise;
28
- }
29
- resolve(value) {
30
- this.deferredPromise.resolve(value);
31
- }
32
- reject(reason) {
33
- this.deferredPromise.reject(reason);
34
- }
35
- get lrMutationData() {
36
- return {
37
- mutation: this.mutation,
38
- variables: this.variables,
39
- };
40
- }
41
- get executed() {
42
- return this._executed;
43
- }
44
- setExecuted() {
45
- if (this._executed) {
46
- throw new KcBadStateException('Already executed');
47
- }
48
- this._executed = true;
49
- }
50
- }
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibHItbXV0YXRpb24tYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi9hcGkvbHItZ3JhcGhxbC9sci1tdXRhdGlvbi1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sR0FBRyxNQUFNLGFBQWEsQ0FBQztBQUM5QixPQUFPLEVBQUUsUUFBUSxFQUFxQixNQUFNLG1CQUFtQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQU8vRCxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFBOzs7O0NBSXJELENBQUMsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBdUIsQ0FBQztBQUVwRCwyQ0FBMkM7QUFDM0MseUVBQXlFO0FBRXpFOzs7Ozs7R0FNRztBQUNILE1BQU0sT0FBZ0IsY0FBYztJQUFwQztRQUdFLGtDQUFrQztRQUN4QixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRTVCLGlEQUFpRDtRQUNqQyxvQkFBZSxHQUFHLElBQUksZUFBZSxFQUFLLENBQUM7SUErQjdELENBQUM7SUE3QkMsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQztJQUN0QyxDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQVE7UUFDZCxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQVk7UUFDakIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELElBQUksY0FBYztRQUNoQixPQUFPO1lBQ0wsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3ZCLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztTQUMxQixDQUFDO0lBQ0osQ0FBQztJQUVELElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNsQixNQUFNLElBQUksbUJBQW1CLENBQUMsa0JBQWtCLENBQUMsQ0FBQztTQUNuRDtRQUNELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO0lBQ3hCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IE9wZXJhdGlvblZhcmlhYmxlcyB9IGZyb20gJ0BhcG9sbG8vY2xpZW50L2NvcmUnO1xuaW1wb3J0IHsgRnJhZ21lbnRTcHJlYWROb2RlIH0gZnJvbSAnZ3JhcGhxbCc7XG5pbXBvcnQgZ3FsIGZyb20gJ2dyYXBocWwtdGFnJztcbmltcG9ydCB7IGdldFF1ZXJ5LCBUeXBlZERvY3VtZW50Tm9kZSB9IGZyb20gJy4uLy4uL19jb21tb24vYXN0JztcbmltcG9ydCB7IERlZmVycmVkUHJvbWlzZSB9IGZyb20gJy4uLy4uL19jb21tb24vZGVmZXJyZWQtcHJvbWlzZSc7XG5pbXBvcnQgeyBLY0JhZFN0YXRlRXhjZXB0aW9uIH0gZnJvbSAnLi4vLi4vX2NvbW1vbi9leGNlcHRpb25zJztcblxuZXhwb3J0IGludGVyZmFjZSBMck11dGF0aW9uRGF0YTxULCBUVmFyaWFibGVzID0gT3BlcmF0aW9uVmFyaWFibGVzPiB7XG4gIG11dGF0aW9uOiBUeXBlZERvY3VtZW50Tm9kZTxUPjtcbiAgdmFyaWFibGVzPzogVFZhcmlhYmxlcztcbn1cblxuZXhwb3J0IGNvbnN0IGZyYWdtZW50U3ByZWFkQXN0U2VsZWN0aW9uID0gZ2V0UXVlcnkoZ3FsYFxuICBxdWVyeSB7XG4gICAgLi4uRnJhZ21lbnROYW1lXG4gIH1cbmApLnNlbGVjdGlvblNldC5zZWxlY3Rpb25zWzBdIGFzIEZyYWdtZW50U3ByZWFkTm9kZTtcblxuLy8gY29uc3QgZnJhZ21lbnRTcHJlYWRBc3RTZWxlY3Rpb24gPSAoKSA9PlxuLy8gICBsb2Rhc2guZGVlcENsb25lKF9mcmFnbWVudFNwcmVhZEFzdFNlbGVjdGlvbikgYXMgRnJhZ21lbnRTcHJlYWROb2RlO1xuXG4vKipcbiAqIERFQ0lTSU9OOiBMck11dGF0aW9uQmFzZSBkb2VzIG5vdCBwcm92aWRlIGEgY29udmVuaWVuY2UgbWV0aG9kIHRvIGNhbGwgbHJHcmFwaFFMLmxyTXV0YXRlKClcbiAqIGJlY2F1c2UgdGhpcyBjbGFzcyBjb3VsZCBiZSBtYWRlIGluZGVwZW5kZW50IG9mIHdoYXQgbGliIGlzIHVzZWQgdG8gY2FsbCB0aGUgQVBJLiBJZiB3ZVxuICogcHJvdmlkZWQgYSBjb25maWd1cmFibGUgY2FsbCBiYWNrIHRvIG1ha2UgdGhlIEFQSSBjYWxsLCB0aGVuIHRoZSB0eXBpbmcgZm9yIHRoYXQgY2FsbGJhY2tcbiAqIG5lZWRzIHRvIGJlIGtub3duLiBCdXQgc2luY2UgdGhlIEFQSSBsaWIgKGVnLiBBcG9sbG8pIGhhcyBpdCdzIG93biB1bmlxdWUgcmV0dXJuIHR5cGUsIHNvXG4gKiBpdCdzIG5vdCBwb3NzaWJsZSB0byBkbyBpbiBnZW5lcmFsLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTHJNdXRhdGlvbkJhc2U8VCwgVFZhcmlhYmxlcyA9IE9wZXJhdGlvblZhcmlhYmxlcz4ge1xuICBwcm90ZWN0ZWQgbXV0YXRpb246IFR5cGVkRG9jdW1lbnROb2RlPFQ+O1xuICBwcm90ZWN0ZWQgdmFyaWFibGVzPzogVFZhcmlhYmxlcztcbiAgLyogdHNsaW50OmRpc2FibGU6dmFyaWFibGUtbmFtZSAqL1xuICBwcm90ZWN0ZWQgX2V4ZWN1dGVkID0gZmFsc2U7XG5cbiAgLy8gcHJvdGVjdGVkIHByb21pc2VzOiBEZWZlcnJlZFByb21pc2U8VD5bXSA9IFtdO1xuICBwdWJsaWMgcmVhZG9ubHkgZGVmZXJyZWRQcm9taXNlID0gbmV3IERlZmVycmVkUHJvbWlzZTxUPigpO1xuXG4gIGdldCBwcm9taXNlKCk6IFByb21pc2U8VD4ge1xuICAgIHJldHVybiB0aGlzLmRlZmVycmVkUHJvbWlzZS5wcm9taXNlO1xuICB9XG5cbiAgcmVzb2x2ZSh2YWx1ZTogVCkge1xuICAgIHRoaXMuZGVmZXJyZWRQcm9taXNlLnJlc29sdmUodmFsdWUpO1xuICB9XG5cbiAgcmVqZWN0KHJlYXNvbj86IGFueSkge1xuICAgIHRoaXMuZGVmZXJyZWRQcm9taXNlLnJlamVjdChyZWFzb24pO1xuICB9XG5cbiAgZ2V0IGxyTXV0YXRpb25EYXRhKCk6IExyTXV0YXRpb25EYXRhPFQsIFRWYXJpYWJsZXM+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbXV0YXRpb246IHRoaXMubXV0YXRpb24sXG4gICAgICB2YXJpYWJsZXM6IHRoaXMudmFyaWFibGVzLFxuICAgIH07XG4gIH1cblxuICBnZXQgZXhlY3V0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2V4ZWN1dGVkO1xuICB9XG5cbiAgc2V0RXhlY3V0ZWQoKSB7XG4gICAgaWYgKHRoaXMuX2V4ZWN1dGVkKSB7XG4gICAgICB0aHJvdyBuZXcgS2NCYWRTdGF0ZUV4Y2VwdGlvbignQWxyZWFkeSBleGVjdXRlZCcpO1xuICAgIH1cbiAgICB0aGlzLl9leGVjdXRlZCA9IHRydWU7XG4gIH1cbn1cbiJdfQ==