@lifeready/core 0.6.0-beta.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 (225) hide show
  1. package/README.md +62 -0
  2. package/bundles/lifeready-core.umd.js +15939 -0
  3. package/bundles/lifeready-core.umd.js.map +1 -0
  4. package/bundles/lifeready-core.umd.min.js +2 -0
  5. package/bundles/lifeready-core.umd.min.js.map +1 -0
  6. package/esm2015/lib/_common/ast.js +40 -0
  7. package/esm2015/lib/_common/deferred-promise.js +24 -0
  8. package/esm2015/lib/_common/exceptions.js +157 -0
  9. package/esm2015/lib/_common/queries.gql.js +190 -0
  10. package/esm2015/lib/_common/run-outside-angular.js +79 -0
  11. package/esm2015/lib/_common/types.js +1 -0
  12. package/esm2015/lib/_common/utils.js +44 -0
  13. package/esm2015/lib/api/contact-card.gql.js +79 -0
  14. package/esm2015/lib/api/contact-card.service.js +154 -0
  15. package/esm2015/lib/api/contact-card2.gql.js +60 -0
  16. package/esm2015/lib/api/contact-card2.service.js +103 -0
  17. package/esm2015/lib/api/file.service.js +74 -0
  18. package/esm2015/lib/api/item2.gql.js +110 -0
  19. package/esm2015/lib/api/item2.service.js +311 -0
  20. package/esm2015/lib/api/key-exchange.gql.js +188 -0
  21. package/esm2015/lib/api/key-exchange.service.js +442 -0
  22. package/esm2015/lib/api/key-exchange.types.js +18 -0
  23. package/esm2015/lib/api/key-exchange2.gql.js +171 -0
  24. package/esm2015/lib/api/key-exchange2.service.js +479 -0
  25. package/esm2015/lib/api/lock.gql.js +40 -0
  26. package/esm2015/lib/api/lock.service.js +64 -0
  27. package/esm2015/lib/api/lr-apollo.service.js +46 -0
  28. package/esm2015/lib/api/lr-graphql/index.js +6 -0
  29. package/esm2015/lib/api/lr-graphql/lr-graphql.service.js +155 -0
  30. package/esm2015/lib/api/lr-graphql/lr-merged-mutation.js +213 -0
  31. package/esm2015/lib/api/lr-graphql/lr-mutation-base.js +51 -0
  32. package/esm2015/lib/api/lr-graphql/lr-mutation.js +48 -0
  33. package/esm2015/lib/api/lr-graphql/lr.service.js +18 -0
  34. package/esm2015/lib/api/message.service.js +138 -0
  35. package/esm2015/lib/api/persist.service.js +181 -0
  36. package/esm2015/lib/api/query-processor/common-processors.service.js +93 -0
  37. package/esm2015/lib/api/query-processor/index.js +3 -0
  38. package/esm2015/lib/api/query-processor/query-processor.service.js +192 -0
  39. package/esm2015/lib/api/query-processor/tp-password-reset-processor.service.js +109 -0
  40. package/esm2015/lib/api/shared-contact-card.service.js +119 -0
  41. package/esm2015/lib/api/shared-contact-card2.gql.js +41 -0
  42. package/esm2015/lib/api/shared-contact-card2.service.js +117 -0
  43. package/esm2015/lib/api/time.service.js +146 -0
  44. package/esm2015/lib/api/types/graphql.types.js +7 -0
  45. package/esm2015/lib/api/types/index.js +3 -0
  46. package/esm2015/lib/api/types/lr-graphql.types.js +71 -0
  47. package/esm2015/lib/auth/auth.config.js +57 -0
  48. package/esm2015/lib/auth/auth.gql.js +48 -0
  49. package/esm2015/lib/auth/auth.types.js +27 -0
  50. package/esm2015/lib/auth/idle.service.js +168 -0
  51. package/esm2015/lib/auth/idle.types.js +7 -0
  52. package/esm2015/lib/auth/lbop.service.js +355 -0
  53. package/esm2015/lib/auth/life-ready-auth.service.js +333 -0
  54. package/esm2015/lib/auth/password.service.js +320 -0
  55. package/esm2015/lib/auth/register.service.js +172 -0
  56. package/esm2015/lib/auth/two-factor.service.js +74 -0
  57. package/esm2015/lib/category/category-meta.service.js +99 -0
  58. package/esm2015/lib/category/category.gql.js +406 -0
  59. package/esm2015/lib/category/category.service.js +390 -0
  60. package/esm2015/lib/category/category.types.js +29 -0
  61. package/esm2015/lib/cryptography/cryptography.types.js +11 -0
  62. package/esm2015/lib/cryptography/encryption.service.js +189 -0
  63. package/esm2015/lib/cryptography/key-factory.service.js +237 -0
  64. package/esm2015/lib/cryptography/key-graph.service.js +280 -0
  65. package/esm2015/lib/cryptography/key-meta.service.js +200 -0
  66. package/esm2015/lib/cryptography/key.service.js +124 -0
  67. package/esm2015/lib/cryptography/slip39.service.js +169 -0
  68. package/esm2015/lib/cryptography/web-crypto.service.js +29 -0
  69. package/esm2015/lib/life-ready.config.js +84 -0
  70. package/esm2015/lib/life-ready.module.js +74 -0
  71. package/esm2015/lib/plan/plan.gql.js +123 -0
  72. package/esm2015/lib/plan/plan.service.js +149 -0
  73. package/esm2015/lib/plan/plan.types.js +11 -0
  74. package/esm2015/lib/record/record-attachment.service.js +101 -0
  75. package/esm2015/lib/record/record.gql.js +179 -0
  76. package/esm2015/lib/record/record.service.js +206 -0
  77. package/esm2015/lib/record/record.types.js +15 -0
  78. package/esm2015/lib/record-type/record-type.service.js +75 -0
  79. package/esm2015/lib/record-type/record-type.types.js +28 -0
  80. package/esm2015/lib/scenario/approvals/scenario-approval.gql.js +105 -0
  81. package/esm2015/lib/scenario/approvals/scenario-approval.types.js +1 -0
  82. package/esm2015/lib/scenario/approvals/scenario-approver.service.js +300 -0
  83. package/esm2015/lib/scenario/claimants/scenario-claimant.gql.js +52 -0
  84. package/esm2015/lib/scenario/claimants/scenario-claimant.service.js +97 -0
  85. package/esm2015/lib/scenario/claimants/scenario-claimant.types.js +1 -0
  86. package/esm2015/lib/scenario/receivers/scenario-receiver.gql.js +150 -0
  87. package/esm2015/lib/scenario/receivers/scenario-receiver.service.js +229 -0
  88. package/esm2015/lib/scenario/receivers/scenario-receiver.types.js +1 -0
  89. package/esm2015/lib/scenario/scenario-setup.service.js +269 -0
  90. package/esm2015/lib/scenario/scenario.gql.js +368 -0
  91. package/esm2015/lib/scenario/scenario.service.js +611 -0
  92. package/esm2015/lib/scenario/scenario.types.js +64 -0
  93. package/esm2015/lib/search/search.gql.js +62 -0
  94. package/esm2015/lib/search/search.service.js +156 -0
  95. package/esm2015/lib/search/search.types.js +6 -0
  96. package/esm2015/lib/trusted-parties/tp-password-reset-request.service.js +112 -0
  97. package/esm2015/lib/trusted-parties/tp-password-reset-user.service.js +266 -0
  98. package/esm2015/lib/trusted-parties/tp-password-reset.gql.js +232 -0
  99. package/esm2015/lib/trusted-parties/tp-password-reset.service.js +300 -0
  100. package/esm2015/lib/trusted-parties/trusted-party.gql.js +148 -0
  101. package/esm2015/lib/trusted-parties/trusted-party.service.js +326 -0
  102. package/esm2015/lib/trusted-parties/trusted-party.types.js +41 -0
  103. package/esm2015/lib/trusted-parties/trusted-party2.gql.js +87 -0
  104. package/esm2015/lib/trusted-parties/trusted-party2.service.js +215 -0
  105. package/esm2015/lib/users/profile-details.service.js +214 -0
  106. package/esm2015/lib/users/profile.gql.js +97 -0
  107. package/esm2015/lib/users/profile.service.js +169 -0
  108. package/esm2015/lib/users/profile.types.js +34 -0
  109. package/esm2015/lib/users/user.gql.js +60 -0
  110. package/esm2015/lib/users/user.service.js +79 -0
  111. package/esm2015/lib/users/user.types.js +5 -0
  112. package/esm2015/lifeready-core.js +10 -0
  113. package/esm2015/public-api.js +81 -0
  114. package/fesm2015/lifeready-core.js +13290 -0
  115. package/fesm2015/lifeready-core.js.map +1 -0
  116. package/lib/_common/ast.d.ts +11 -0
  117. package/lib/_common/deferred-promise.d.ts +12 -0
  118. package/lib/_common/exceptions.d.ts +109 -0
  119. package/lib/_common/queries.gql.d.ts +10 -0
  120. package/lib/_common/run-outside-angular.d.ts +14 -0
  121. package/lib/_common/types.d.ts +10 -0
  122. package/lib/_common/utils.d.ts +3 -0
  123. package/lib/api/contact-card.gql.d.ts +7 -0
  124. package/lib/api/contact-card.service.d.ts +52 -0
  125. package/lib/api/contact-card2.gql.d.ts +34 -0
  126. package/lib/api/contact-card2.service.d.ts +49 -0
  127. package/lib/api/file.service.d.ts +18 -0
  128. package/lib/api/item2.gql.d.ts +96 -0
  129. package/lib/api/item2.service.d.ts +177 -0
  130. package/lib/api/key-exchange.gql.d.ts +9 -0
  131. package/lib/api/key-exchange.service.d.ts +39 -0
  132. package/lib/api/key-exchange.types.d.ts +196 -0
  133. package/lib/api/key-exchange2.gql.d.ts +125 -0
  134. package/lib/api/key-exchange2.service.d.ts +187 -0
  135. package/lib/api/lock.gql.d.ts +27 -0
  136. package/lib/api/lock.service.d.ts +25 -0
  137. package/lib/api/lr-apollo.service.d.ts +15 -0
  138. package/lib/api/lr-graphql/index.d.ts +5 -0
  139. package/lib/api/lr-graphql/lr-graphql.service.d.ts +60 -0
  140. package/lib/api/lr-graphql/lr-merged-mutation.d.ts +27 -0
  141. package/lib/api/lr-graphql/lr-mutation-base.d.ts +28 -0
  142. package/lib/api/lr-graphql/lr-mutation.d.ts +8 -0
  143. package/lib/api/lr-graphql/lr.service.d.ts +9 -0
  144. package/lib/api/message.service.d.ts +58 -0
  145. package/lib/api/persist.service.d.ts +31 -0
  146. package/lib/api/query-processor/common-processors.service.d.ts +36 -0
  147. package/lib/api/query-processor/index.d.ts +2 -0
  148. package/lib/api/query-processor/query-processor.service.d.ts +18 -0
  149. package/lib/api/query-processor/tp-password-reset-processor.service.d.ts +15 -0
  150. package/lib/api/shared-contact-card.service.d.ts +33 -0
  151. package/lib/api/shared-contact-card2.gql.d.ts +36 -0
  152. package/lib/api/shared-contact-card2.service.d.ts +45 -0
  153. package/lib/api/time.service.d.ts +16 -0
  154. package/lib/api/types/graphql.types.d.ts +29 -0
  155. package/lib/api/types/index.d.ts +2 -0
  156. package/lib/api/types/lr-graphql.types.d.ts +385 -0
  157. package/lib/auth/auth.config.d.ts +5 -0
  158. package/lib/auth/auth.gql.d.ts +15 -0
  159. package/lib/auth/auth.types.d.ts +66 -0
  160. package/lib/auth/idle.service.d.ts +40 -0
  161. package/lib/auth/idle.types.d.ts +10 -0
  162. package/lib/auth/lbop.service.d.ts +91 -0
  163. package/lib/auth/life-ready-auth.service.d.ts +46 -0
  164. package/lib/auth/password.service.d.ts +78 -0
  165. package/lib/auth/register.service.d.ts +25 -0
  166. package/lib/auth/two-factor.service.d.ts +15 -0
  167. package/lib/category/category-meta.service.d.ts +23 -0
  168. package/lib/category/category.gql.d.ts +45 -0
  169. package/lib/category/category.service.d.ts +67 -0
  170. package/lib/category/category.types.d.ts +79 -0
  171. package/lib/cryptography/cryptography.types.d.ts +83 -0
  172. package/lib/cryptography/encryption.service.d.ts +41 -0
  173. package/lib/cryptography/key-factory.service.d.ts +38 -0
  174. package/lib/cryptography/key-graph.service.d.ts +33 -0
  175. package/lib/cryptography/key-meta.service.d.ts +44 -0
  176. package/lib/cryptography/key.service.d.ts +36 -0
  177. package/lib/cryptography/slip39.service.d.ts +43 -0
  178. package/lib/cryptography/web-crypto.service.d.ts +5 -0
  179. package/lib/life-ready.config.d.ts +14 -0
  180. package/lib/life-ready.module.d.ts +5 -0
  181. package/lib/plan/plan.gql.d.ts +11 -0
  182. package/lib/plan/plan.service.d.ts +33 -0
  183. package/lib/plan/plan.types.d.ts +31 -0
  184. package/lib/record/record-attachment.service.d.ts +16 -0
  185. package/lib/record/record.gql.d.ts +14 -0
  186. package/lib/record/record.service.d.ts +25 -0
  187. package/lib/record/record.types.d.ts +57 -0
  188. package/lib/record-type/record-type.service.d.ts +11 -0
  189. package/lib/record-type/record-type.types.d.ts +50 -0
  190. package/lib/scenario/approvals/scenario-approval.gql.d.ts +7 -0
  191. package/lib/scenario/approvals/scenario-approval.types.d.ts +63 -0
  192. package/lib/scenario/approvals/scenario-approver.service.d.ts +32 -0
  193. package/lib/scenario/claimants/scenario-claimant.gql.d.ts +5 -0
  194. package/lib/scenario/claimants/scenario-claimant.service.d.ts +17 -0
  195. package/lib/scenario/claimants/scenario-claimant.types.d.ts +18 -0
  196. package/lib/scenario/receivers/scenario-receiver.gql.d.ts +8 -0
  197. package/lib/scenario/receivers/scenario-receiver.service.d.ts +30 -0
  198. package/lib/scenario/receivers/scenario-receiver.types.d.ts +54 -0
  199. package/lib/scenario/scenario-setup.service.d.ts +22 -0
  200. package/lib/scenario/scenario.gql.d.ts +34 -0
  201. package/lib/scenario/scenario.service.d.ts +58 -0
  202. package/lib/scenario/scenario.types.d.ts +217 -0
  203. package/lib/search/search.gql.d.ts +1 -0
  204. package/lib/search/search.service.d.ts +25 -0
  205. package/lib/search/search.types.d.ts +20 -0
  206. package/lib/trusted-parties/tp-password-reset-request.service.d.ts +20 -0
  207. package/lib/trusted-parties/tp-password-reset-user.service.d.ts +41 -0
  208. package/lib/trusted-parties/tp-password-reset.gql.d.ts +218 -0
  209. package/lib/trusted-parties/tp-password-reset.service.d.ts +131 -0
  210. package/lib/trusted-parties/trusted-party.gql.d.ts +9 -0
  211. package/lib/trusted-parties/trusted-party.service.d.ts +44 -0
  212. package/lib/trusted-parties/trusted-party.types.d.ts +102 -0
  213. package/lib/trusted-parties/trusted-party2.gql.d.ts +79 -0
  214. package/lib/trusted-parties/trusted-party2.service.d.ts +114 -0
  215. package/lib/users/profile-details.service.d.ts +21 -0
  216. package/lib/users/profile.gql.d.ts +11 -0
  217. package/lib/users/profile.service.d.ts +35 -0
  218. package/lib/users/profile.types.d.ts +96 -0
  219. package/lib/users/user.gql.d.ts +9 -0
  220. package/lib/users/user.service.d.ts +12 -0
  221. package/lib/users/user.types.d.ts +23 -0
  222. package/lifeready-core.d.ts +9 -0
  223. package/lifeready-core.metadata.json +1 -0
  224. package/package.json +29 -0
  225. package/public-api.d.ts +77 -0
@@ -0,0 +1,40 @@
1
+ import { gqlTyped } from '../_common/ast';
2
+ export const LockFragment = gqlTyped `
3
+ fragment LockFragment on LockField {
4
+ created
5
+ modified
6
+ version
7
+ expiryTime
8
+ state
9
+ }`;
10
+ export const UpdateLockMutation = gqlTyped `
11
+ mutation UpdateLockMutation($input: UpdateLockInput!) {
12
+ updateLock(input: $input) {
13
+ lock {
14
+ ...LockFragment
15
+ }
16
+ }
17
+ }
18
+ ${LockFragment}
19
+ `;
20
+ export const AcquireLockMutation = gqlTyped `
21
+ mutation AcquireLockMutation($input: AcquireLockInput!) {
22
+ acquireLock(input: $input) {
23
+ lock {
24
+ ...LockFragment
25
+ }
26
+ }
27
+ }
28
+ ${LockFragment}
29
+ `;
30
+ export const ReleaseLockMutation = gqlTyped `
31
+ mutation ReleaseLockMutation($input: ReleaseLockInput!) {
32
+ releaseLock(input: $input) {
33
+ lock {
34
+ ...LockFragment
35
+ }
36
+ }
37
+ }
38
+ ${LockFragment}
39
+ `;
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jay5ncWwuanMiLCJzb3VyY2VSb290IjoiQzovUHJvamVjdHMvdGVzdC9wcm9qZWN0cy9jb3JlL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9hcGkvbG9jay5ncWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBVTFDLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxRQUFRLENBQW9COzs7Ozs7O0VBT3RELENBQUM7QUFPSCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxRQUFRLENBQTBCOzs7Ozs7OztFQVFsRSxZQUFZO0NBQ2IsQ0FBQztBQU9GLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLFFBQVEsQ0FBMkI7Ozs7Ozs7O0VBUXBFLFlBQVk7Q0FDYixDQUFDO0FBT0YsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsUUFBUSxDQUEyQjs7Ozs7Ozs7RUFRcEUsWUFBWTtDQUNiLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBKV0sgfSBmcm9tICdub2RlLWpvc2UnO1xyXG5pbXBvcnQgeyBncWxUeXBlZCB9IGZyb20gJy4uL19jb21tb24vYXN0JztcclxuaW1wb3J0IHsgRGF0ZVRpbWUsIExvY2tTdGF0ZSwgVVVJRCB9IGZyb20gJy4vdHlwZXMnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBMb2NrRnJhZ21lbnRSZXN1bHQge1xyXG4gIGNyZWF0ZWQ6IERhdGVUaW1lO1xyXG4gIG1vZGlmaWVkOiBEYXRlVGltZTtcclxuICB2ZXJzaW9uPzogVVVJRDtcclxuICBleHBpcnlUaW1lOiBEYXRlVGltZTtcclxuICBzdGF0ZTogTG9ja1N0YXRlO1xyXG59XHJcbmV4cG9ydCBjb25zdCBMb2NrRnJhZ21lbnQgPSBncWxUeXBlZDxMb2NrRnJhZ21lbnRSZXN1bHQ+YFxyXG5mcmFnbWVudCBMb2NrRnJhZ21lbnQgb24gTG9ja0ZpZWxkIHtcclxuICBjcmVhdGVkXHJcbiAgbW9kaWZpZWRcclxuICB2ZXJzaW9uXHJcbiAgZXhwaXJ5VGltZVxyXG4gIHN0YXRlXHJcbn1gO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVMb2NrTXV0YXRpb25SZXN1bHQge1xyXG4gIHVwZGF0ZUxvY2s6IHtcclxuICAgIGxvY2s6IExvY2tGcmFnbWVudFJlc3VsdDtcclxuICB9O1xyXG59XHJcbmV4cG9ydCBjb25zdCBVcGRhdGVMb2NrTXV0YXRpb24gPSBncWxUeXBlZDxVcGRhdGVMb2NrTXV0YXRpb25SZXN1bHQ+YFxyXG5tdXRhdGlvbiBVcGRhdGVMb2NrTXV0YXRpb24oJGlucHV0OiBVcGRhdGVMb2NrSW5wdXQhKSB7XHJcbiAgdXBkYXRlTG9jayhpbnB1dDogJGlucHV0KSB7XHJcbiAgICBsb2NrIHtcclxuICAgICAgLi4uTG9ja0ZyYWdtZW50XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiR7TG9ja0ZyYWdtZW50fVxyXG5gO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBY3F1aXJlTG9ja011dGF0aW9uUmVzdWx0IHtcclxuICBhY3F1aXJlTG9jazoge1xyXG4gICAgbG9jazogTG9ja0ZyYWdtZW50UmVzdWx0O1xyXG4gIH07XHJcbn1cclxuZXhwb3J0IGNvbnN0IEFjcXVpcmVMb2NrTXV0YXRpb24gPSBncWxUeXBlZDxBY3F1aXJlTG9ja011dGF0aW9uUmVzdWx0PmBcclxubXV0YXRpb24gQWNxdWlyZUxvY2tNdXRhdGlvbigkaW5wdXQ6IEFjcXVpcmVMb2NrSW5wdXQhKSB7XHJcbiAgYWNxdWlyZUxvY2soaW5wdXQ6ICRpbnB1dCkge1xyXG4gICAgbG9jayB7XHJcbiAgICAgIC4uLkxvY2tGcmFnbWVudFxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4ke0xvY2tGcmFnbWVudH1cclxuYDtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUmVsZWFzZUxvY2tNdXRhdGlvblJlc3VsdCB7XHJcbiAgcmVsZWFzZUxvY2s6IHtcclxuICAgIGxvY2s6IExvY2tGcmFnbWVudFJlc3VsdDtcclxuICB9O1xyXG59XHJcbmV4cG9ydCBjb25zdCBSZWxlYXNlTG9ja011dGF0aW9uID0gZ3FsVHlwZWQ8UmVsZWFzZUxvY2tNdXRhdGlvblJlc3VsdD5gXHJcbm11dGF0aW9uIFJlbGVhc2VMb2NrTXV0YXRpb24oJGlucHV0OiBSZWxlYXNlTG9ja0lucHV0ISkge1xyXG4gIHJlbGVhc2VMb2NrKGlucHV0OiAkaW5wdXQpIHtcclxuICAgIGxvY2sge1xyXG4gICAgICAuLi5Mb2NrRnJhZ21lbnRcclxuICAgIH1cclxuICB9XHJcbn1cclxuJHtMb2NrRnJhZ21lbnR9XHJcbmA7XHJcbiJdfQ==
@@ -0,0 +1,64 @@
1
+ import { __decorate } from "tslib";
2
+ import { Injectable, Injector, NgZone } from '@angular/core';
3
+ import { LrMutation, LrService } from './lr-graphql';
4
+ import { AcquireLockMutation, ReleaseLockMutation, UpdateLockMutation, } from './lock.gql';
5
+ import { RunOutsideAngular } from '../_common/run-outside-angular';
6
+ import * as i0 from "@angular/core";
7
+ let LockService = class LockService extends LrService {
8
+ constructor(ngZone, injector) {
9
+ super(injector);
10
+ this.ngZone = ngZone;
11
+ this.injector = injector;
12
+ }
13
+ // Updating the lock version is always to be down along with another mutation.
14
+ updateLockMutation(resourceId, version) {
15
+ return new LrMutation({
16
+ mutation: UpdateLockMutation,
17
+ variables: {
18
+ input: {
19
+ resourceId,
20
+ version,
21
+ },
22
+ },
23
+ });
24
+ }
25
+ acquireLockMutation(resourceId, timeoutMs) {
26
+ return new LrMutation({
27
+ mutation: AcquireLockMutation,
28
+ variables: {
29
+ input: {
30
+ resourceId,
31
+ timeoutMs,
32
+ },
33
+ },
34
+ });
35
+ }
36
+ releaseLockMutation(resourceId, version) {
37
+ return new LrMutation({
38
+ mutation: ReleaseLockMutation,
39
+ variables: {
40
+ input: {
41
+ resourceId,
42
+ version,
43
+ },
44
+ },
45
+ });
46
+ }
47
+ };
48
+ LockService.ɵprov = i0.ɵɵdefineInjectable({ factory: function LockService_Factory() { return new LockService(i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(i0.INJECTOR)); }, token: LockService, providedIn: "root" });
49
+ LockService.decorators = [
50
+ { type: Injectable, args: [{
51
+ providedIn: 'root',
52
+ },] }
53
+ ];
54
+ LockService.ctorParameters = () => [
55
+ { type: NgZone },
56
+ { type: Injector }
57
+ ];
58
+ LockService = __decorate([
59
+ RunOutsideAngular({
60
+ ngZoneName: 'ngZone',
61
+ })
62
+ ], LockService);
63
+ export { LockService };
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jay5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IkM6L1Byb2plY3RzL3Rlc3QvcHJvamVjdHMvY29yZS9zcmMvIiwic291cmNlcyI6WyJsaWIvYXBpL2xvY2suc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3JELE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsbUJBQW1CLEVBQ25CLGtCQUFrQixHQUNuQixNQUFNLFlBQVksQ0FBQztBQUNwQixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7SUFRdEQsV0FBVyxTQUFYLFdBQVksU0FBUSxTQUFTO0lBQ3hDLFlBQW9CLE1BQWMsRUFBVSxRQUFrQjtRQUM1RCxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFERSxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBVTtJQUU5RCxDQUFDO0lBRUQsOEVBQThFO0lBQzlFLGtCQUFrQixDQUFDLFVBQWtCLEVBQUUsT0FBZTtRQUNwRCxPQUFPLElBQUksVUFBVSxDQUFDO1lBQ3BCLFFBQVEsRUFBRSxrQkFBa0I7WUFDNUIsU0FBUyxFQUFFO2dCQUNULEtBQUssRUFBRTtvQkFDTCxVQUFVO29CQUNWLE9BQU87aUJBQ1I7YUFDRjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxVQUFrQixFQUFFLFNBQWlCO1FBQ3ZELE9BQU8sSUFBSSxVQUFVLENBQUM7WUFDcEIsUUFBUSxFQUFFLG1CQUFtQjtZQUM3QixTQUFTLEVBQUU7Z0JBQ1QsS0FBSyxFQUFFO29CQUNMLFVBQVU7b0JBQ1YsU0FBUztpQkFDVjthQUNGO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELG1CQUFtQixDQUFDLFVBQWtCLEVBQUUsT0FBZTtRQUNyRCxPQUFPLElBQUksVUFBVSxDQUFDO1lBQ3BCLFFBQVEsRUFBRSxtQkFBbUI7WUFDN0IsU0FBUyxFQUFFO2dCQUNULEtBQUssRUFBRTtvQkFDTCxVQUFVO29CQUNWLE9BQU87aUJBQ1I7YUFDRjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRixDQUFBOzs7WUE1Q0EsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7WUFkOEIsTUFBTTtZQUFoQixRQUFROztBQWVoQixXQUFXO0lBTnZCLGlCQUFpQixDQUFDO1FBQ2pCLFVBQVUsRUFBRSxRQUFRO0tBQ3JCLENBQUM7R0FJVyxXQUFXLENBeUN2QjtTQXpDWSxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBMck11dGF0aW9uLCBMclNlcnZpY2UgfSBmcm9tICcuL2xyLWdyYXBocWwnO1xyXG5pbXBvcnQge1xyXG4gIEFjcXVpcmVMb2NrTXV0YXRpb24sXHJcbiAgUmVsZWFzZUxvY2tNdXRhdGlvbixcclxuICBVcGRhdGVMb2NrTXV0YXRpb24sXHJcbn0gZnJvbSAnLi9sb2NrLmdxbCc7XHJcbmltcG9ydCB7IFJ1bk91dHNpZGVBbmd1bGFyIH0gZnJvbSAnLi4vX2NvbW1vbi9ydW4tb3V0c2lkZS1hbmd1bGFyJztcclxuXHJcbkBSdW5PdXRzaWRlQW5ndWxhcih7XHJcbiAgbmdab25lTmFtZTogJ25nWm9uZScsXHJcbn0pXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMb2NrU2VydmljZSBleHRlbmRzIExyU2VydmljZSB7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSwgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IpIHtcclxuICAgIHN1cGVyKGluamVjdG9yKTtcclxuICB9XHJcblxyXG4gIC8vIFVwZGF0aW5nIHRoZSBsb2NrIHZlcnNpb24gaXMgYWx3YXlzIHRvIGJlIGRvd24gYWxvbmcgd2l0aCBhbm90aGVyIG11dGF0aW9uLlxyXG4gIHVwZGF0ZUxvY2tNdXRhdGlvbihyZXNvdXJjZUlkOiBzdHJpbmcsIHZlcnNpb246IHN0cmluZykge1xyXG4gICAgcmV0dXJuIG5ldyBMck11dGF0aW9uKHtcclxuICAgICAgbXV0YXRpb246IFVwZGF0ZUxvY2tNdXRhdGlvbixcclxuICAgICAgdmFyaWFibGVzOiB7XHJcbiAgICAgICAgaW5wdXQ6IHtcclxuICAgICAgICAgIHJlc291cmNlSWQsXHJcbiAgICAgICAgICB2ZXJzaW9uLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGFjcXVpcmVMb2NrTXV0YXRpb24ocmVzb3VyY2VJZDogc3RyaW5nLCB0aW1lb3V0TXM6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIG5ldyBMck11dGF0aW9uKHtcclxuICAgICAgbXV0YXRpb246IEFjcXVpcmVMb2NrTXV0YXRpb24sXHJcbiAgICAgIHZhcmlhYmxlczoge1xyXG4gICAgICAgIGlucHV0OiB7XHJcbiAgICAgICAgICByZXNvdXJjZUlkLFxyXG4gICAgICAgICAgdGltZW91dE1zLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHJlbGVhc2VMb2NrTXV0YXRpb24ocmVzb3VyY2VJZDogc3RyaW5nLCB2ZXJzaW9uOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiBuZXcgTHJNdXRhdGlvbih7XHJcbiAgICAgIG11dGF0aW9uOiBSZWxlYXNlTG9ja011dGF0aW9uLFxyXG4gICAgICB2YXJpYWJsZXM6IHtcclxuICAgICAgICBpbnB1dDoge1xyXG4gICAgICAgICAgcmVzb3VyY2VJZCxcclxuICAgICAgICAgIHZlcnNpb24sXHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,46 @@
1
+ import { __awaiter } from "tslib";
2
+ import { Injectable } from '@angular/core';
3
+ import { Apollo } from 'apollo-angular';
4
+ import { KeyGraphService } from '../cryptography/key-graph.service';
5
+ import { handleApolloError } from '../_common/exceptions';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "apollo-angular";
8
+ import * as i2 from "../cryptography/key-graph.service";
9
+ export class LrApolloService {
10
+ constructor(apollo, keyGraph) {
11
+ this.apollo = apollo;
12
+ this.keyGraph = keyGraph;
13
+ }
14
+ addKeys(response) {
15
+ if (response.data.keyGraph) {
16
+ this.keyGraph.addKeys(response.data.keyGraph);
17
+ }
18
+ }
19
+ query(options) {
20
+ return __awaiter(this, void 0, void 0, function* () {
21
+ const response = yield this.apollo.query(options).toPromise();
22
+ handleApolloError(response.errors);
23
+ this.addKeys(response);
24
+ return response.data;
25
+ });
26
+ }
27
+ mutate(options) {
28
+ return __awaiter(this, void 0, void 0, function* () {
29
+ const response = yield this.apollo.mutate(options).toPromise();
30
+ handleApolloError(response.errors);
31
+ this.addKeys(response);
32
+ return response.data;
33
+ });
34
+ }
35
+ }
36
+ LrApolloService.ɵprov = i0.ɵɵdefineInjectable({ factory: function LrApolloService_Factory() { return new LrApolloService(i0.ɵɵinject(i1.Apollo), i0.ɵɵinject(i2.KeyGraphService)); }, token: LrApolloService, providedIn: "root" });
37
+ LrApolloService.decorators = [
38
+ { type: Injectable, args: [{
39
+ providedIn: 'root',
40
+ },] }
41
+ ];
42
+ LrApolloService.ctorParameters = () => [
43
+ { type: Apollo },
44
+ { type: KeyGraphService }
45
+ ];
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibHItYXBvbGxvLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiQzovUHJvamVjdHMvdGVzdC9wcm9qZWN0cy9jb3JlL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9hcGkvbHItYXBvbGxvLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXhDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUVwRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7OztBQUsxRCxNQUFNLE9BQU8sZUFBZTtJQUMxQixZQUFvQixNQUFjLEVBQVUsUUFBeUI7UUFBakQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFVLGFBQVEsR0FBUixRQUFRLENBQWlCO0lBQUcsQ0FBQztJQUVqRSxPQUFPLENBQUMsUUFBUTtRQUN0QixJQUFLLFFBQVEsQ0FBQyxJQUFvQixDQUFDLFFBQVEsRUFBRTtZQUMzQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBRSxRQUFRLENBQUMsSUFBb0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNoRTtJQUNILENBQUM7SUFFSyxLQUFLLENBQ1QsT0FBd0I7O1lBRXhCLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQU8sT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7WUFFcEUsaUJBQWlCLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRW5DLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7WUFFdkIsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQ3ZCLENBQUM7S0FBQTtJQUVLLE1BQU0sQ0FDVixPQUE4Qjs7WUFFOUIsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBSSxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUVsRSxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFbkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUV2QixPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDdkIsQ0FBQztLQUFBOzs7O1lBbENGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7O1lBUlEsTUFBTTtZQUVOLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFwb2xsbyB9IGZyb20gJ2Fwb2xsby1hbmd1bGFyJztcclxuaW1wb3J0IHsgUXVlcnlPcHRpb25zLCBNdXRhdGlvbk9wdGlvbnMgfSBmcm9tICdAYXBvbGxvL2NsaWVudC9jb3JlJztcclxuaW1wb3J0IHsgS2V5R3JhcGhTZXJ2aWNlIH0gZnJvbSAnLi4vY3J5cHRvZ3JhcGh5L2tleS1ncmFwaC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSGFzS2V5R3JhcGggfSBmcm9tICcuLi9jcnlwdG9ncmFwaHkvY3J5cHRvZ3JhcGh5LnR5cGVzJztcclxuaW1wb3J0IHsgaGFuZGxlQXBvbGxvRXJyb3IgfSBmcm9tICcuLi9fY29tbW9uL2V4Y2VwdGlvbnMnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIExyQXBvbGxvU2VydmljZSB7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhcG9sbG86IEFwb2xsbywgcHJpdmF0ZSBrZXlHcmFwaDogS2V5R3JhcGhTZXJ2aWNlKSB7fVxyXG5cclxuICBwcml2YXRlIGFkZEtleXMocmVzcG9uc2UpIHtcclxuICAgIGlmICgocmVzcG9uc2UuZGF0YSBhcyBIYXNLZXlHcmFwaCkua2V5R3JhcGgpIHtcclxuICAgICAgdGhpcy5rZXlHcmFwaC5hZGRLZXlzKChyZXNwb25zZS5kYXRhIGFzIEhhc0tleUdyYXBoKS5rZXlHcmFwaCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBxdWVyeTxULCBWID0geyBba2V5OiBzdHJpbmddOiBhbnkgfT4oXHJcbiAgICBvcHRpb25zOiBRdWVyeU9wdGlvbnM8Vj5cclxuICApOiBQcm9taXNlPFQ+IHtcclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5hcG9sbG8ucXVlcnk8VCwgVj4ob3B0aW9ucykudG9Qcm9taXNlKCk7XHJcblxyXG4gICAgaGFuZGxlQXBvbGxvRXJyb3IocmVzcG9uc2UuZXJyb3JzKTtcclxuXHJcbiAgICB0aGlzLmFkZEtleXMocmVzcG9uc2UpO1xyXG5cclxuICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgbXV0YXRlPFQgZXh0ZW5kcyBhbnksIFYgPSB7IFtrZXk6IHN0cmluZ106IGFueSB9PihcclxuICAgIG9wdGlvbnM6IE11dGF0aW9uT3B0aW9uczxULCBWPlxyXG4gICk6IFByb21pc2U8VD4ge1xyXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmFwb2xsby5tdXRhdGU8VD4ob3B0aW9ucykudG9Qcm9taXNlKCk7XHJcblxyXG4gICAgaGFuZGxlQXBvbGxvRXJyb3IocmVzcG9uc2UuZXJyb3JzKTtcclxuXHJcbiAgICB0aGlzLmFkZEtleXMocmVzcG9uc2UpO1xyXG5cclxuICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,6 @@
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiQzovUHJvamVjdHMvdGVzdC9wcm9qZWN0cy9jb3JlL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9hcGkvbHItZ3JhcGhxbC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbHItZ3JhcGhxbC5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9sci1tZXJnZWQtbXV0YXRpb24nO1xyXG5leHBvcnQgKiBmcm9tICcuL2xyLW11dGF0aW9uJztcclxuZXhwb3J0ICogZnJvbSAnLi9sci1tdXRhdGlvbi1iYXNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9sci5zZXJ2aWNlJztcclxuIl19
@@ -0,0 +1,155 @@
1
+ import { __awaiter, __decorate } from "tslib";
2
+ import * as lodash from 'lodash';
3
+ import { Injectable, NgZone } from '@angular/core';
4
+ import { Apollo } from 'apollo-angular';
5
+ import { KeyGraphService } from '../../cryptography/key-graph.service';
6
+ import { handleApolloError, LrBadStateException, LrUnsupportedException, } from '../../_common/exceptions';
7
+ import { FetchKeyGraphField, KeyGraphField } from '../../_common/queries.gql';
8
+ import { getQuery, getMutation } from '../../_common/ast';
9
+ import gql from 'graphql-tag';
10
+ import { QueryProcessorService } from '../query-processor';
11
+ import { RunOutsideAngular } from '../../_common/run-outside-angular';
12
+ import * as gqlPrinter from 'graphql/language/printer';
13
+ import { LrMergedMutation } from './lr-merged-mutation';
14
+ import * as i0 from "@angular/core";
15
+ import * as i1 from "apollo-angular";
16
+ import * as i2 from "../../cryptography/key-graph.service";
17
+ import * as i3 from "../query-processor/query-processor.service";
18
+ // Data structures
19
+ // --------------------------------------------------------------------------
20
+ const keyGraphFieldAstSelection = getQuery(gql `
21
+ query {
22
+ ${KeyGraphField}
23
+ }
24
+ `).selectionSet.selections[0];
25
+ const fetchKeyGraphFieldAstSelection = getQuery(gql `
26
+ query {
27
+ ${FetchKeyGraphField}
28
+ }
29
+ `).selectionSet.selections[0];
30
+ let LrGraphQLService = class LrGraphQLService {
31
+ constructor(ngZone, apollo, keyGraph, queryProcessor) {
32
+ this.ngZone = ngZone;
33
+ this.apollo = apollo;
34
+ this.keyGraph = keyGraph;
35
+ this.queryProcessor = queryProcessor;
36
+ this.stats = {
37
+ queryCount: 0,
38
+ mutationCount: 0,
39
+ };
40
+ }
41
+ query(options) {
42
+ return __awaiter(this, void 0, void 0, function* () {
43
+ // Make copies to avoid side effect.
44
+ options = lodash.cloneDeep(options);
45
+ // Append the key graph query
46
+ const includeKeyGraph = this.isIncludeKeyGraph(options.includeKeyGraph);
47
+ if (includeKeyGraph) {
48
+ const operation = getQuery(options.query);
49
+ operation.selectionSet.selections = [
50
+ ...operation.selectionSet.selections,
51
+ keyGraphFieldAstSelection,
52
+ ];
53
+ }
54
+ const response = yield this.apollo.query(options).toPromise();
55
+ this.stats.queryCount++;
56
+ handleApolloError(response.errors);
57
+ this.addKeys(response);
58
+ const data = yield this.queryProcessor.processQuery(response.data, options.processorOptions);
59
+ return data;
60
+ });
61
+ }
62
+ lrMutateImpl(lrMutation, options) {
63
+ return __awaiter(this, void 0, void 0, function* () {
64
+ if (options === null || options === void 0 ? void 0 : options.variables) {
65
+ throw new LrUnsupportedException('Unsupported field: "options.variables"');
66
+ }
67
+ if (lrMutation.executed) {
68
+ throw new LrBadStateException('LrMutation has already executed. LrMutation can only be used once in a lrMutate() call. Create new instances of LrMutation.');
69
+ }
70
+ lrMutation.setExecuted();
71
+ return this.apolloMutate(Object.assign(Object.assign({}, options), lrMutation.lrMutationData))
72
+ .then((res) => {
73
+ // Resolve promises set on the lrMutation rather than the lrMutate() call.
74
+ lrMutation.resolve(res);
75
+ // Still need to return value to the promise waiting for the results of lrMutate().
76
+ return res;
77
+ })
78
+ .catch((error) => {
79
+ lrMutation.reject(error);
80
+ throw error;
81
+ });
82
+ });
83
+ }
84
+ apolloMutate(options) {
85
+ return __awaiter(this, void 0, void 0, function* () {
86
+ // Make copies to avoid side effect.
87
+ options = Object.assign(Object.assign({}, options), { mutation: lodash.cloneDeep(options.mutation) });
88
+ // Append the key graph query
89
+ const includeKeyGraph = this.isIncludeKeyGraph(options.includeKeyGraph);
90
+ if (includeKeyGraph) {
91
+ const operation = getMutation(options.mutation);
92
+ operation.selectionSet.selections = [
93
+ ...operation.selectionSet.selections,
94
+ fetchKeyGraphFieldAstSelection,
95
+ ];
96
+ }
97
+ // Format to string and parse again. This allows the "loc": { "start": ... }
98
+ // part of the DocumentNode to be correctly setup. It's extra processing
99
+ // in serialising and parsing, but probably minimal overhead.
100
+ options.mutation = gql(gqlPrinter.print(options.mutation));
101
+ const response = yield this.apollo.mutate(options).toPromise();
102
+ this.stats.mutationCount++;
103
+ handleApolloError(response.errors);
104
+ this.addKeys(response);
105
+ const data = yield this.queryProcessor.processQuery(response.data, options.processorOptions);
106
+ return data;
107
+ });
108
+ }
109
+ statsSnapshot() {
110
+ return lodash.cloneDeep(this.stats);
111
+ }
112
+ addKeys(response) {
113
+ if (response.data.keyGraph) {
114
+ this.keyGraph.addKeys(response.data.keyGraph);
115
+ delete response.data.keyGraph;
116
+ }
117
+ }
118
+ isIncludeKeyGraph(includeKeyGraph) {
119
+ // Default to true when null or undefined.
120
+ return includeKeyGraph == null ? true : false;
121
+ }
122
+ lrMutate(lrMutations, options) {
123
+ return __awaiter(this, void 0, void 0, function* () {
124
+ if (lrMutations instanceof Array) {
125
+ const merged = LrMergedMutation.create(yield Promise.all(lrMutations));
126
+ yield this.lrMutateImpl(merged, options);
127
+ return merged.promise;
128
+ }
129
+ else {
130
+ const resolved = yield lrMutations;
131
+ yield this.lrMutateImpl(resolved, options);
132
+ return resolved.promise;
133
+ }
134
+ });
135
+ }
136
+ };
137
+ 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" });
138
+ LrGraphQLService.decorators = [
139
+ { type: Injectable, args: [{
140
+ providedIn: 'root',
141
+ },] }
142
+ ];
143
+ LrGraphQLService.ctorParameters = () => [
144
+ { type: NgZone },
145
+ { type: Apollo },
146
+ { type: KeyGraphService },
147
+ { type: QueryProcessorService }
148
+ ];
149
+ LrGraphQLService = __decorate([
150
+ RunOutsideAngular({
151
+ ngZoneName: 'ngZone',
152
+ })
153
+ ], LrGraphQLService);
154
+ export { LrGraphQLService };
155
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibHItZ3JhcGhxbC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IkM6L1Byb2plY3RzL3Rlc3QvcHJvamVjdHMvY29yZS9zcmMvIiwic291cmNlcyI6WyJsaWIvYXBpL2xyLWdyYXBocWwvbHItZ3JhcGhxbC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEtBQUssTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUNqQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFReEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRXZFLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsbUJBQW1CLEVBQ25CLHNCQUFzQixHQUN2QixNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RSxPQUFPLEVBQXFCLFFBQVEsRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM3RSxPQUFPLEdBQUcsTUFBTSxhQUFhLENBQUM7QUFDOUIsT0FBTyxFQUFvQixxQkFBcUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBR3RFLE9BQU8sS0FBSyxVQUFVLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7O0FBRXhELGtCQUFrQjtBQUNsQiw2RUFBNkU7QUFDN0UsTUFBTSx5QkFBeUIsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFBOztJQUUxQyxhQUFhOztDQUVoQixDQUFDLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQWMsQ0FBQztBQUUzQyxNQUFNLDhCQUE4QixHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUE7O0lBRS9DLGtCQUFrQjs7Q0FFckIsQ0FBQyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFjLENBQUM7SUFnRDlCLGdCQUFnQixTQUFoQixnQkFBZ0I7SUFNM0IsWUFDVSxNQUFjLEVBQ2QsTUFBYyxFQUNkLFFBQXlCLEVBQ3pCLGNBQXFDO1FBSHJDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFDekIsbUJBQWMsR0FBZCxjQUFjLENBQXVCO1FBVHZDLFVBQUssR0FBMEI7WUFDckMsVUFBVSxFQUFFLENBQUM7WUFDYixhQUFhLEVBQUUsQ0FBQztTQUNqQixDQUFDO0lBT0MsQ0FBQztJQUVFLEtBQUssQ0FDVCxPQUE2Qjs7WUFFN0Isb0NBQW9DO1lBQ3BDLE9BQU8sR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBRXBDLDZCQUE2QjtZQUM3QixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ3hFLElBQUksZUFBZSxFQUFFO2dCQUNuQixNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMxQyxTQUFTLENBQUMsWUFBWSxDQUFDLFVBQVUsR0FBRztvQkFDbEMsR0FBRyxTQUFTLENBQUMsWUFBWSxDQUFDLFVBQVU7b0JBQ3BDLHlCQUF5QjtpQkFDMUIsQ0FBQzthQUNIO1lBRUQsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBTyxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUVwRSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBRXhCLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUVuQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRXZCLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQ2pELFFBQVEsQ0FBQyxJQUFJLEVBQ2IsT0FBTyxDQUFDLGdCQUFnQixDQUN6QixDQUFDO1lBRUYsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO0tBQUE7SUFFYSxZQUFZLENBQUMsVUFBVSxFQUFFLE9BQVE7O1lBQzdDLElBQUksT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLFNBQVMsRUFBRTtnQkFDdEIsTUFBTSxJQUFJLHNCQUFzQixDQUM5Qix3Q0FBd0MsQ0FDekMsQ0FBQzthQUNIO1lBRUQsSUFBSSxVQUFVLENBQUMsUUFBUSxFQUFFO2dCQUN2QixNQUFNLElBQUksbUJBQW1CLENBQzNCLDZIQUE2SCxDQUM5SCxDQUFDO2FBQ0g7WUFFRCxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUM7WUFFekIsT0FBTyxJQUFJLENBQUMsWUFBWSxpQ0FDbkIsT0FBTyxHQUNQLFVBQVUsQ0FBQyxjQUFjLEVBQzVCO2lCQUNDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNaLDBFQUEwRTtnQkFDMUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDeEIsbUZBQW1GO2dCQUNuRixPQUFPLEdBQUcsQ0FBQztZQUNiLENBQUMsQ0FBQztpQkFDRCxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDZixVQUFVLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN6QixNQUFNLEtBQUssQ0FBQztZQUNkLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztLQUFBO0lBRUssWUFBWSxDQUNoQixPQUErQzs7WUFFL0Msb0NBQW9DO1lBQ3BDLE9BQU8sbUNBQ0YsT0FBTyxLQUNWLFFBQVEsRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FDN0MsQ0FBQztZQUVGLDZCQUE2QjtZQUM3QixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBRXhFLElBQUksZUFBZSxFQUFFO2dCQUNuQixNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNoRCxTQUFTLENBQUMsWUFBWSxDQUFDLFVBQVUsR0FBRztvQkFDbEMsR0FBRyxTQUFTLENBQUMsWUFBWSxDQUFDLFVBQVU7b0JBQ3BDLDhCQUE4QjtpQkFDL0IsQ0FBQzthQUNIO1lBRUQsNEVBQTRFO1lBQzVFLHdFQUF3RTtZQUN4RSw2REFBNkQ7WUFDN0QsT0FBTyxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUUzRCxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFJLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBRWxFLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7WUFFM0IsaUJBQWlCLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRW5DLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7WUFFdkIsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FDakQsUUFBUSxDQUFDLElBQUksRUFDYixPQUFPLENBQUMsZ0JBQWdCLENBQ3pCLENBQUM7WUFFRixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7S0FBQTtJQUVELGFBQWE7UUFDWCxPQUFPLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFTyxPQUFPLENBQUMsUUFBUTtRQUN0QixJQUFLLFFBQVEsQ0FBQyxJQUFvQixDQUFDLFFBQVEsRUFBRTtZQUMzQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBRSxRQUFRLENBQUMsSUFBb0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMvRCxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1NBQy9CO0lBQ0gsQ0FBQztJQUVPLGlCQUFpQixDQUFDLGVBQWU7UUFDdkMsMENBQTBDO1FBQzFDLE9BQU8sZUFBZSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDaEQsQ0FBQztJQXdFSyxRQUFRLENBQ1osV0FFcUMsRUFDckMsT0FBMkI7O1lBRTNCLElBQUksV0FBVyxZQUFZLEtBQUssRUFBRTtnQkFDaEMsTUFBTSxNQUFNLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO2dCQUN2RSxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUN6QyxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUM7YUFDdkI7aUJBQU07Z0JBQ0wsTUFBTSxRQUFRLEdBQUcsTUFBTSxXQUFXLENBQUM7Z0JBQ25DLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBQzNDLE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQzthQUN6QjtRQUNILENBQUM7S0FBQTtDQUNGLENBQUE7OztZQTlOQSxVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7OztZQXJGb0IsTUFBTTtZQUNsQixNQUFNO1lBUU4sZUFBZTtZQVVHLHFCQUFxQjs7QUFtRW5DLGdCQUFnQjtJQU41QixpQkFBaUIsQ0FBQztRQUNqQixVQUFVLEVBQUUsUUFBUTtLQUNyQixDQUFDO0dBSVcsZ0JBQWdCLENBMk41QjtTQTNOWSxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBsb2Rhc2ggZnJvbSAnbG9kYXNoJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFwb2xsbyB9IGZyb20gJ2Fwb2xsby1hbmd1bGFyJztcclxuaW1wb3J0IHtcclxuICBRdWVyeU9wdGlvbnMsXHJcbiAgTXV0YXRpb25PcHRpb25zLFxyXG4gIE9wZXJhdGlvblZhcmlhYmxlcyxcclxuICBGZXRjaFBvbGljeSxcclxufSBmcm9tICdAYXBvbGxvL2NsaWVudC9jb3JlJztcclxuaW1wb3J0IHsgTXV0YXRpb25CYXNlT3B0aW9ucyB9IGZyb20gJ0BhcG9sbG8vY2xpZW50L2NvcmUvd2F0Y2hRdWVyeU9wdGlvbnMnO1xyXG5pbXBvcnQgeyBLZXlHcmFwaFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jcnlwdG9ncmFwaHkva2V5LWdyYXBoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBIYXNLZXlHcmFwaCB9IGZyb20gJy4uLy4uL2NyeXB0b2dyYXBoeS9jcnlwdG9ncmFwaHkudHlwZXMnO1xyXG5pbXBvcnQge1xyXG4gIGhhbmRsZUFwb2xsb0Vycm9yLFxyXG4gIExyQmFkU3RhdGVFeGNlcHRpb24sXHJcbiAgTHJVbnN1cHBvcnRlZEV4Y2VwdGlvbixcclxufSBmcm9tICcuLi8uLi9fY29tbW9uL2V4Y2VwdGlvbnMnO1xyXG5pbXBvcnQgeyBGZXRjaEtleUdyYXBoRmllbGQsIEtleUdyYXBoRmllbGQgfSBmcm9tICcuLi8uLi9fY29tbW9uL3F1ZXJpZXMuZ3FsJztcclxuaW1wb3J0IHsgVHlwZWREb2N1bWVudE5vZGUsIGdldFF1ZXJ5LCBnZXRNdXRhdGlvbiB9IGZyb20gJy4uLy4uL19jb21tb24vYXN0JztcclxuaW1wb3J0IGdxbCBmcm9tICdncmFwaHFsLXRhZyc7XHJcbmltcG9ydCB7IFByb2Nlc3Nvck9wdGlvbnMsIFF1ZXJ5UHJvY2Vzc29yU2VydmljZSB9IGZyb20gJy4uL3F1ZXJ5LXByb2Nlc3Nvcic7XHJcbmltcG9ydCB7IFJ1bk91dHNpZGVBbmd1bGFyIH0gZnJvbSAnLi4vLi4vX2NvbW1vbi9ydW4tb3V0c2lkZS1hbmd1bGFyJztcclxuaW1wb3J0IHsgRmllbGROb2RlIH0gZnJvbSAnZ3JhcGhxbCc7XHJcbmltcG9ydCB7IExyTXV0YXRpb25CYXNlIH0gZnJvbSAnLi9sci1tdXRhdGlvbi1iYXNlJztcclxuaW1wb3J0ICogYXMgZ3FsUHJpbnRlciBmcm9tICdncmFwaHFsL2xhbmd1YWdlL3ByaW50ZXInO1xyXG5pbXBvcnQgeyBMck1lcmdlZE11dGF0aW9uIH0gZnJvbSAnLi9sci1tZXJnZWQtbXV0YXRpb24nO1xyXG5cclxuLy8gRGF0YSBzdHJ1Y3R1cmVzXHJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbmNvbnN0IGtleUdyYXBoRmllbGRBc3RTZWxlY3Rpb24gPSBnZXRRdWVyeShncWxgXHJcbnF1ZXJ5IHtcclxuICAke0tleUdyYXBoRmllbGR9XHJcbn1cclxuYCkuc2VsZWN0aW9uU2V0LnNlbGVjdGlvbnNbMF0gYXMgRmllbGROb2RlO1xyXG5cclxuY29uc3QgZmV0Y2hLZXlHcmFwaEZpZWxkQXN0U2VsZWN0aW9uID0gZ2V0UXVlcnkoZ3FsYFxyXG5xdWVyeSB7XHJcbiAgJHtGZXRjaEtleUdyYXBoRmllbGR9XHJcbn1cclxuYCkuc2VsZWN0aW9uU2V0LnNlbGVjdGlvbnNbMF0gYXMgRmllbGROb2RlO1xyXG5cclxuLy8gY29uc3Qga2V5R3JhcGhGaWVsZEFzdFNlbGVjdGlvbiA9ICgpID0+XHJcbi8vICAgbG9kYXNoLmRlZXBDbG9uZShfa2V5R3JhcGhGaWVsZEFzdFNlbGVjdGlvbikgYXMgRmllbGROb2RlO1xyXG4vLyBjb25zdCBmZXRjaEtleUdyYXBoRmllbGRBc3RTZWxlY3Rpb24gPSAoKSA9PlxyXG4vLyAgIGxvZGFzaC5kZWVwQ2xvbmUoX2ZldGNoS2V5R3JhcGhGaWVsZEFzdFNlbGVjdGlvbikgYXMgRmllbGROb2RlO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBMclF1ZXJ5T3B0aW9uczxULCBUVmFyaWFibGVzPlxyXG4gIGV4dGVuZHMgUXVlcnlPcHRpb25zPFRWYXJpYWJsZXM+IHtcclxuICBxdWVyeTogVHlwZWREb2N1bWVudE5vZGU8VD47XHJcbiAgaW5jbHVkZUtleUdyYXBoPzogYm9vbGVhbjtcclxuICBwcm9jZXNzb3JPcHRpb25zPzogUHJvY2Vzc29yT3B0aW9ucztcclxufVxyXG5cclxuLy8gQ29waWVkIGZyb20gTXV0YXRpb25PcHRpb25zXHJcbi8vIFJlbW92ZWQgcmVxdWlyZWQgZmllbGQgXCJtdXRhdGlvblwiLiBUaGUgXCJ2YXJpYWJsZXNcIiBmaWVsZCBpcyBzdGlsbCB0aGVyZVxyXG4vLyBidXQgaXQncyBkeW5hbWljYWxseSBjaGVja2VkLlxyXG5leHBvcnQgaW50ZXJmYWNlIExyTXV0YXRpb25PcHRpb25zPFxyXG4gIFQgPSB7XHJcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XHJcbiAgfSxcclxuICBUVmFyaWFibGVzID0gT3BlcmF0aW9uVmFyaWFibGVzXHJcbj4gZXh0ZW5kcyBNdXRhdGlvbkJhc2VPcHRpb25zPFQsIFRWYXJpYWJsZXM+IHtcclxuICBjb250ZXh0PzogYW55O1xyXG4gIGZldGNoUG9saWN5PzogRmV0Y2hQb2xpY3k7XHJcbiAgaW5jbHVkZUtleUdyYXBoPzogYm9vbGVhbjtcclxufVxyXG5cclxuLy8gVGhlIFwibXV0YXRpb25cIiBhbmQgXCJ2YXJpYWJsZVwiIGZpZWxkcyBhcmUgaW5oZXJpdGVkIGJ1dCBkeW5hbWljYWxseSBwcm9oaWJpdGVkIGJlY2F1c2VcclxuLy8gdGhleSBhcmUgcHJvdmlkZWQgYnkgTHJNdXRhdGlvbi4gSXQncyBhIGJpdCB1bmNsZWFuIGJ1dCBhdm9pZHMgYSBsb3Qgb2YgdHlwaW5nIHdvcmsuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTHJBcG9sbG9NdXRhdGlvbk9wdGlvbnM8VCwgVFZhcmlhYmxlcyA9IE9wZXJhdGlvblZhcmlhYmxlcz5cclxuICBleHRlbmRzIE11dGF0aW9uT3B0aW9uczxULCBUVmFyaWFibGVzPiB7XHJcbiAgbXV0YXRpb246IFR5cGVkRG9jdW1lbnROb2RlPFQ+O1xyXG4gIGluY2x1ZGVLZXlHcmFwaD86IGJvb2xlYW47XHJcbiAgcHJvY2Vzc29yT3B0aW9ucz86IFByb2Nlc3Nvck9wdGlvbnM7XHJcbn1cclxuXHJcbmludGVyZmFjZSBMckdyYXBoUUxTZXJ2aWNlU3RhdHMge1xyXG4gIHF1ZXJ5Q291bnQ6IG51bWJlcjtcclxuICBtdXRhdGlvbkNvdW50OiBudW1iZXI7XHJcbn1cclxuXHJcbkBSdW5PdXRzaWRlQW5ndWxhcih7XHJcbiAgbmdab25lTmFtZTogJ25nWm9uZScsXHJcbn0pXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMckdyYXBoUUxTZXJ2aWNlIHtcclxuICBwcml2YXRlIHN0YXRzOiBMckdyYXBoUUxTZXJ2aWNlU3RhdHMgPSB7XHJcbiAgICBxdWVyeUNvdW50OiAwLFxyXG4gICAgbXV0YXRpb25Db3VudDogMCxcclxuICB9O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXHJcbiAgICBwcml2YXRlIGFwb2xsbzogQXBvbGxvLFxyXG4gICAgcHJpdmF0ZSBrZXlHcmFwaDogS2V5R3JhcGhTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBxdWVyeVByb2Nlc3NvcjogUXVlcnlQcm9jZXNzb3JTZXJ2aWNlXHJcbiAgKSB7fVxyXG5cclxuICBhc3luYyBxdWVyeTxULCBWID0geyBba2V5OiBzdHJpbmddOiBhbnkgfT4oXHJcbiAgICBvcHRpb25zOiBMclF1ZXJ5T3B0aW9uczxULCBWPlxyXG4gICk6IFByb21pc2U8VD4ge1xyXG4gICAgLy8gTWFrZSBjb3BpZXMgdG8gYXZvaWQgc2lkZSBlZmZlY3QuXHJcbiAgICBvcHRpb25zID0gbG9kYXNoLmNsb25lRGVlcChvcHRpb25zKTtcclxuXHJcbiAgICAvLyBBcHBlbmQgdGhlIGtleSBncmFwaCBxdWVyeVxyXG4gICAgY29uc3QgaW5jbHVkZUtleUdyYXBoID0gdGhpcy5pc0luY2x1ZGVLZXlHcmFwaChvcHRpb25zLmluY2x1ZGVLZXlHcmFwaCk7XHJcbiAgICBpZiAoaW5jbHVkZUtleUdyYXBoKSB7XHJcbiAgICAgIGNvbnN0IG9wZXJhdGlvbiA9IGdldFF1ZXJ5KG9wdGlvbnMucXVlcnkpO1xyXG4gICAgICBvcGVyYXRpb24uc2VsZWN0aW9uU2V0LnNlbGVjdGlvbnMgPSBbXHJcbiAgICAgICAgLi4ub3BlcmF0aW9uLnNlbGVjdGlvblNldC5zZWxlY3Rpb25zLFxyXG4gICAgICAgIGtleUdyYXBoRmllbGRBc3RTZWxlY3Rpb24sXHJcbiAgICAgIF07XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmFwb2xsby5xdWVyeTxULCBWPihvcHRpb25zKS50b1Byb21pc2UoKTtcclxuXHJcbiAgICB0aGlzLnN0YXRzLnF1ZXJ5Q291bnQrKztcclxuXHJcbiAgICBoYW5kbGVBcG9sbG9FcnJvcihyZXNwb25zZS5lcnJvcnMpO1xyXG5cclxuICAgIHRoaXMuYWRkS2V5cyhyZXNwb25zZSk7XHJcblxyXG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMucXVlcnlQcm9jZXNzb3IucHJvY2Vzc1F1ZXJ5KFxyXG4gICAgICByZXNwb25zZS5kYXRhLFxyXG4gICAgICBvcHRpb25zLnByb2Nlc3Nvck9wdGlvbnNcclxuICAgICk7XHJcblxyXG4gICAgcmV0dXJuIGRhdGE7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGxyTXV0YXRlSW1wbChsck11dGF0aW9uLCBvcHRpb25zPykge1xyXG4gICAgaWYgKG9wdGlvbnM/LnZhcmlhYmxlcykge1xyXG4gICAgICB0aHJvdyBuZXcgTHJVbnN1cHBvcnRlZEV4Y2VwdGlvbihcclxuICAgICAgICAnVW5zdXBwb3J0ZWQgZmllbGQ6IFwib3B0aW9ucy52YXJpYWJsZXNcIidcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAobHJNdXRhdGlvbi5leGVjdXRlZCkge1xyXG4gICAgICB0aHJvdyBuZXcgTHJCYWRTdGF0ZUV4Y2VwdGlvbihcclxuICAgICAgICAnTHJNdXRhdGlvbiBoYXMgYWxyZWFkeSBleGVjdXRlZC4gTHJNdXRhdGlvbiBjYW4gb25seSBiZSB1c2VkIG9uY2UgaW4gYSBsck11dGF0ZSgpIGNhbGwuIENyZWF0ZSBuZXcgaW5zdGFuY2VzIG9mIExyTXV0YXRpb24uJ1xyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGxyTXV0YXRpb24uc2V0RXhlY3V0ZWQoKTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5hcG9sbG9NdXRhdGUoe1xyXG4gICAgICAuLi5vcHRpb25zLFxyXG4gICAgICAuLi5sck11dGF0aW9uLmxyTXV0YXRpb25EYXRhLFxyXG4gICAgfSlcclxuICAgICAgLnRoZW4oKHJlcykgPT4ge1xyXG4gICAgICAgIC8vIFJlc29sdmUgcHJvbWlzZXMgc2V0IG9uIHRoZSBsck11dGF0aW9uIHJhdGhlciB0aGFuIHRoZSBsck11dGF0ZSgpIGNhbGwuXHJcbiAgICAgICAgbHJNdXRhdGlvbi5yZXNvbHZlKHJlcyk7XHJcbiAgICAgICAgLy8gU3RpbGwgbmVlZCB0byByZXR1cm4gdmFsdWUgdG8gdGhlIHByb21pc2Ugd2FpdGluZyBmb3IgdGhlIHJlc3VsdHMgb2YgbHJNdXRhdGUoKS5cclxuICAgICAgICByZXR1cm4gcmVzO1xyXG4gICAgICB9KVxyXG4gICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XHJcbiAgICAgICAgbHJNdXRhdGlvbi5yZWplY3QoZXJyb3IpO1xyXG4gICAgICAgIHRocm93IGVycm9yO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGFwb2xsb011dGF0ZTxUIGV4dGVuZHMgYW55LCBUVmFyaWFibGVzID0geyBba2V5OiBzdHJpbmddOiBhbnkgfT4oXHJcbiAgICBvcHRpb25zOiBMckFwb2xsb011dGF0aW9uT3B0aW9uczxULCBUVmFyaWFibGVzPlxyXG4gICk6IFByb21pc2U8VD4ge1xyXG4gICAgLy8gTWFrZSBjb3BpZXMgdG8gYXZvaWQgc2lkZSBlZmZlY3QuXHJcbiAgICBvcHRpb25zID0ge1xyXG4gICAgICAuLi5vcHRpb25zLFxyXG4gICAgICBtdXRhdGlvbjogbG9kYXNoLmNsb25lRGVlcChvcHRpb25zLm11dGF0aW9uKSxcclxuICAgIH07XHJcblxyXG4gICAgLy8gQXBwZW5kIHRoZSBrZXkgZ3JhcGggcXVlcnlcclxuICAgIGNvbnN0IGluY2x1ZGVLZXlHcmFwaCA9IHRoaXMuaXNJbmNsdWRlS2V5R3JhcGgob3B0aW9ucy5pbmNsdWRlS2V5R3JhcGgpO1xyXG5cclxuICAgIGlmIChpbmNsdWRlS2V5R3JhcGgpIHtcclxuICAgICAgY29uc3Qgb3BlcmF0aW9uID0gZ2V0TXV0YXRpb24ob3B0aW9ucy5tdXRhdGlvbik7XHJcbiAgICAgIG9wZXJhdGlvbi5zZWxlY3Rpb25TZXQuc2VsZWN0aW9ucyA9IFtcclxuICAgICAgICAuLi5vcGVyYXRpb24uc2VsZWN0aW9uU2V0LnNlbGVjdGlvbnMsXHJcbiAgICAgICAgZmV0Y2hLZXlHcmFwaEZpZWxkQXN0U2VsZWN0aW9uLFxyXG4gICAgICBdO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEZvcm1hdCB0byBzdHJpbmcgYW5kIHBhcnNlIGFnYWluLiBUaGlzIGFsbG93cyB0aGUgXCJsb2NcIjogeyBcInN0YXJ0XCI6IC4uLiB9XHJcbiAgICAvLyBwYXJ0IG9mIHRoZSBEb2N1bWVudE5vZGUgdG8gYmUgY29ycmVjdGx5IHNldHVwLiBJdCdzIGV4dHJhIHByb2Nlc3NpbmdcclxuICAgIC8vIGluIHNlcmlhbGlzaW5nIGFuZCBwYXJzaW5nLCBidXQgcHJvYmFibHkgbWluaW1hbCBvdmVyaGVhZC5cclxuICAgIG9wdGlvbnMubXV0YXRpb24gPSBncWwoZ3FsUHJpbnRlci5wcmludChvcHRpb25zLm11dGF0aW9uKSk7XHJcblxyXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmFwb2xsby5tdXRhdGU8VD4ob3B0aW9ucykudG9Qcm9taXNlKCk7XHJcblxyXG4gICAgdGhpcy5zdGF0cy5tdXRhdGlvbkNvdW50Kys7XHJcblxyXG4gICAgaGFuZGxlQXBvbGxvRXJyb3IocmVzcG9uc2UuZXJyb3JzKTtcclxuXHJcbiAgICB0aGlzLmFkZEtleXMocmVzcG9uc2UpO1xyXG5cclxuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLnF1ZXJ5UHJvY2Vzc29yLnByb2Nlc3NRdWVyeShcclxuICAgICAgcmVzcG9uc2UuZGF0YSxcclxuICAgICAgb3B0aW9ucy5wcm9jZXNzb3JPcHRpb25zXHJcbiAgICApO1xyXG5cclxuICAgIHJldHVybiBkYXRhO1xyXG4gIH1cclxuXHJcbiAgc3RhdHNTbmFwc2hvdCgpOiBMckdyYXBoUUxTZXJ2aWNlU3RhdHMge1xyXG4gICAgcmV0dXJuIGxvZGFzaC5jbG9uZURlZXAodGhpcy5zdGF0cyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFkZEtleXMocmVzcG9uc2UpIHtcclxuICAgIGlmICgocmVzcG9uc2UuZGF0YSBhcyBIYXNLZXlHcmFwaCkua2V5R3JhcGgpIHtcclxuICAgICAgdGhpcy5rZXlHcmFwaC5hZGRLZXlzKChyZXNwb25zZS5kYXRhIGFzIEhhc0tleUdyYXBoKS5rZXlHcmFwaCk7XHJcbiAgICAgIGRlbGV0ZSByZXNwb25zZS5kYXRhLmtleUdyYXBoO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc0luY2x1ZGVLZXlHcmFwaChpbmNsdWRlS2V5R3JhcGgpIHtcclxuICAgIC8vIERlZmF1bHQgdG8gdHJ1ZSB3aGVuIG51bGwgb3IgdW5kZWZpbmVkLlxyXG4gICAgcmV0dXJuIGluY2x1ZGVLZXlHcmFwaCA9PSBudWxsID8gdHJ1ZSA6IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgbHJNdXRhdGU8VDEsIFRWYXJpYWJsZXMxLCBUMiwgVFZhcmlhYmxlczI+KFxyXG4gICAgbHJNdXRhdGlvbnM6IFtcclxuICAgICAgTHJNdXRhdGlvbk1heUFzeW5jPFQxLCBUVmFyaWFibGVzMT4sXHJcbiAgICAgIExyTXV0YXRpb25NYXlBc3luYzxUMiwgVFZhcmlhYmxlczI+XHJcbiAgICBdLFxyXG4gICAgb3B0aW9ucz86IExyTXV0YXRpb25PcHRpb25zXHJcbiAgKTogUHJvbWlzZTxbVDEsIFQyXT47XHJcblxyXG4gIGFzeW5jIGxyTXV0YXRlPFQxLCBUVmFyaWFibGVzMSwgVDIsIFRWYXJpYWJsZXMyLCBUMywgVFZhcmlhYmxlczM+KFxyXG4gICAgbHJNdXRhdGlvbnM6IFtcclxuICAgICAgTHJNdXRhdGlvbk1heUFzeW5jPFQxLCBUVmFyaWFibGVzMT4sXHJcbiAgICAgIExyTXV0YXRpb25NYXlBc3luYzxUMiwgVFZhcmlhYmxlczI+LFxyXG4gICAgICBMck11dGF0aW9uTWF5QXN5bmM8VDMsIFRWYXJpYWJsZXMzPlxyXG4gICAgXSxcclxuICAgIG9wdGlvbnM/OiBMck11dGF0aW9uT3B0aW9uc1xyXG4gICk6IFByb21pc2U8W1QxLCBUMiwgVDNdPjtcclxuXHJcbiAgYXN5bmMgbHJNdXRhdGU8XHJcbiAgICBUMSxcclxuICAgIFRWYXJpYWJsZXMxLFxyXG4gICAgVDIsXHJcbiAgICBUVmFyaWFibGVzMixcclxuICAgIFQzLFxyXG4gICAgVFZhcmlhYmxlczMsXHJcbiAgICBUNCxcclxuICAgIFRWYXJpYWJsZXM0XHJcbiAgPihcclxuICAgIGxyTXV0YXRpb25zOiBbXHJcbiAgICAgIExyTXV0YXRpb25NYXlBc3luYzxUMSwgVFZhcmlhYmxlczE+LFxyXG4gICAgICBMck11dGF0aW9uTWF5QXN5bmM8VDIsIFRWYXJpYWJsZXMyPixcclxuICAgICAgTHJNdXRhdGlvbk1heUFzeW5jPFQzLCBUVmFyaWFibGVzMz4sXHJcbiAgICAgIExyTXV0YXRpb25NYXlBc3luYzxUNCwgVFZhcmlhYmxlczQ+XHJcbiAgICBdLFxyXG4gICAgb3B0aW9ucz86IExyTXV0YXRpb25PcHRpb25zXHJcbiAgKTogUHJvbWlzZTxbVDEsIFQyLCBUMywgVDRdPjtcclxuXHJcbiAgYXN5bmMgbHJNdXRhdGU8XHJcbiAgICBUMSxcclxuICAgIFRWYXJpYWJsZXMxLFxyXG4gICAgVDIsXHJcbiAgICBUVmFyaWFibGVzMixcclxuICAgIFQzLFxyXG4gICAgVFZhcmlhYmxlczMsXHJcbiAgICBUNCxcclxuICAgIFRWYXJpYWJsZXM0LFxyXG4gICAgVDUsXHJcbiAgICBUVmFyaWFibGVzNVxyXG4gID4oXHJcbiAgICBsck11dGF0aW9uczogW1xyXG4gICAgICBMck11dGF0aW9uTWF5QXN5bmM8VDEsIFRWYXJpYWJsZXMxPixcclxuICAgICAgTHJNdXRhdGlvbk1heUFzeW5jPFQyLCBUVmFyaWFibGVzMj4sXHJcbiAgICAgIExyTXV0YXRpb25NYXlBc3luYzxUMywgVFZhcmlhYmxlczM+LFxyXG4gICAgICBMck11dGF0aW9uTWF5QXN5bmM8VDQsIFRWYXJpYWJsZXM0PixcclxuICAgICAgTHJNdXRhdGlvbk1heUFzeW5jPFQ1LCBUVmFyaWFibGVzNT5cclxuICAgIF0sXHJcbiAgICBvcHRpb25zPzogTHJNdXRhdGlvbk9wdGlvbnNcclxuICApOiBQcm9taXNlPFtUMSwgVDIsIFQzLCBUNCwgVDVdPjtcclxuXHJcbiAgYXN5bmMgbHJNdXRhdGU8VCwgVFZhcmlhYmxlcyA9IHsgW2tleTogc3RyaW5nXTogYW55IH0+KFxyXG4gICAgbHJNdXRhdGlvbjogTHJNdXRhdGlvbk1heUFzeW5jPFQsIFRWYXJpYWJsZXM+LFxyXG4gICAgb3B0aW9ucz86IExyTXV0YXRpb25PcHRpb25zPFQsIFRWYXJpYWJsZXM+XHJcbiAgKTogUHJvbWlzZTxUPjtcclxuXHJcbiAgYXN5bmMgbHJNdXRhdGU8VCwgVFZhcmlhYmxlcyA9IHsgW2tleTogc3RyaW5nXTogYW55IH0+KFxyXG4gICAgbHJNdXRhdGlvbnM6XHJcbiAgICAgIHwgTHJNdXRhdGlvbk1heUFzeW5jPFQsIFRWYXJpYWJsZXM+W11cclxuICAgICAgfCBMck11dGF0aW9uTWF5QXN5bmM8VCwgVFZhcmlhYmxlcz4sXHJcbiAgICBvcHRpb25zPzogTHJNdXRhdGlvbk9wdGlvbnNcclxuICApO1xyXG5cclxuICBhc3luYyBsck11dGF0ZTxULCBUVmFyaWFibGVzID0geyBba2V5OiBzdHJpbmddOiBhbnkgfT4oXHJcbiAgICBsck11dGF0aW9uczpcclxuICAgICAgfCBMck11dGF0aW9uTWF5QXN5bmM8VCwgVFZhcmlhYmxlcz5bXVxyXG4gICAgICB8IExyTXV0YXRpb25NYXlBc3luYzxULCBUVmFyaWFibGVzPixcclxuICAgIG9wdGlvbnM/OiBMck11dGF0aW9uT3B0aW9uc1xyXG4gICkge1xyXG4gICAgaWYgKGxyTXV0YXRpb25zIGluc3RhbmNlb2YgQXJyYXkpIHtcclxuICAgICAgY29uc3QgbWVyZ2VkID0gTHJNZXJnZWRNdXRhdGlvbi5jcmVhdGUoYXdhaXQgUHJvbWlzZS5hbGwobHJNdXRhdGlvbnMpKTtcclxuICAgICAgYXdhaXQgdGhpcy5sck11dGF0ZUltcGwobWVyZ2VkLCBvcHRpb25zKTtcclxuICAgICAgcmV0dXJuIG1lcmdlZC5wcm9taXNlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgcmVzb2x2ZWQgPSBhd2FpdCBsck11dGF0aW9ucztcclxuICAgICAgYXdhaXQgdGhpcy5sck11dGF0ZUltcGwocmVzb2x2ZWQsIG9wdGlvbnMpO1xyXG4gICAgICByZXR1cm4gcmVzb2x2ZWQucHJvbWlzZTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbnR5cGUgTHJNdXRhdGlvbk1heUFzeW5jPFQsIFRWYXJpYWJsZXM+ID1cclxuICB8IExyTXV0YXRpb25CYXNlPFQsIFRWYXJpYWJsZXM+XHJcbiAgfCBQcm9taXNlPExyTXV0YXRpb25CYXNlPFQsIFRWYXJpYWJsZXM+PlxyXG4gIHwgTHJNZXJnZWRNdXRhdGlvbjxUPlxyXG4gIHwgUHJvbWlzZTxMck1lcmdlZE11dGF0aW9uPFQ+PjtcclxuIl19
@@ -0,0 +1,213 @@
1
+ import { LrBadLogicException, LrUnsupportedException, } from '../../_common/exceptions';
2
+ import { LrMutation } from './lr-mutation';
3
+ import { LrMutationBase } from './lr-mutation-base';
4
+ import { getAliasOrName, getFragments, getMutation } from '../../_common/ast';
5
+ import * as ast from '../../_common/ast';
6
+ import * as lodash from 'lodash';
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 LrBadLogicException('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 LrUnsupportedException(`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
+ const field = this.renameField(selection, prefix);
139
+ return this.processSelection(field, prefix);
140
+ default:
141
+ return selection;
142
+ }
143
+ });
144
+ }
145
+ renameFragmentDefinition(fragment, prefix) {
146
+ const ret = Object.assign(Object.assign({}, fragment), { name: ast.name(prefix + fragment.name.value) });
147
+ if (fragment.selectionSet) {
148
+ ret.selectionSet = this.processSelectionSet(fragment.selectionSet, prefix);
149
+ }
150
+ return ret;
151
+ }
152
+ renameFragmentDefinitions(fragments, prefix) {
153
+ return fragments.map((fragment) => this.renameFragmentDefinition(fragment, prefix));
154
+ }
155
+ merge() {
156
+ let variableDefinitions = [];
157
+ let selections = [];
158
+ const mergedVariables = {};
159
+ let mergedFragments = [];
160
+ const prefixes = [];
161
+ // Just wait for everything to resolve because we have to
162
+ // merge the doc synchronously.
163
+ this.lrMutations.forEach((lrMutation, idx) => {
164
+ const { mutation, variables } = lrMutation.lrMutationData;
165
+ const childMutationNode = getMutation(mutation);
166
+ // Prefixing all mutation fields so they don't conflict.
167
+ let prefix = `item${idx}_`;
168
+ if (childMutationNode.name) {
169
+ prefix += childMutationNode.name.value + '_';
170
+ }
171
+ prefixes.push(prefix);
172
+ // Rename and merge variables
173
+ variableDefinitions = [
174
+ ...variableDefinitions,
175
+ ...this.renameVariableDefinitions(childMutationNode.variableDefinitions, prefix),
176
+ ];
177
+ // Rename and merge selections
178
+ selections = [
179
+ ...selections,
180
+ ...this.renameSelections(childMutationNode.selectionSet.selections, prefix),
181
+ ];
182
+ // TODO Rename and merge fragments
183
+ // Rename and merge variables
184
+ for (const key2 of Object.keys(variables)) {
185
+ mergedVariables[prefix + key2] = variables[key2];
186
+ }
187
+ // Rename and merge fragments
188
+ const fragments = getFragments(mutation);
189
+ mergedFragments = [
190
+ ...mergedFragments,
191
+ ...this.renameFragmentDefinitions(fragments, prefix),
192
+ ];
193
+ });
194
+ const mergedMutation = lodash.cloneDeep(lrMergedMutationDoc);
195
+ const mutationNode = getMutation(mergedMutation);
196
+ // Add in the mutation selections
197
+ mutationNode.selectionSet.selections = selections;
198
+ // Add in the variables
199
+ // variableDefinitions is readonly property.
200
+ mutationNode.variableDefinitions = variableDefinitions;
201
+ // Add in the fragments
202
+ mergedMutation.definitions = [
203
+ ...mergedMutation.definitions,
204
+ ...mergedFragments,
205
+ ];
206
+ return {
207
+ mutation: mergedMutation,
208
+ variables: mergedVariables,
209
+ prefixes,
210
+ };
211
+ }
212
+ }
213
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibHItbWVyZ2VkLW11dGF0aW9uLmpzIiwic291cmNlUm9vdCI6IkM6L1Byb2plY3RzL3Rlc3QvcHJvamVjdHMvY29yZS9zcmMvIiwic291cmNlcyI6WyJsaWIvYXBpL2xyLWdyYXBocWwvbHItbWVyZ2VkLW11dGF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVVBLE9BQU8sRUFFTCxtQkFBbUIsRUFDbkIsc0JBQXNCLEdBQ3ZCLE1BQU0sMEJBQTBCLENBQUM7QUFDbEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUUsT0FBTyxLQUFLLEdBQUcsTUFBTSxtQkFBbUIsQ0FBQztBQUN6QyxPQUFPLEtBQUssTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUVqQyxNQUFNLG1CQUFtQixHQUFpQjtJQUN4QyxJQUFJLEVBQUUsVUFBVTtJQUNoQixXQUFXLEVBQUU7UUFDWDtZQUNFLElBQUksRUFBRSxxQkFBcUI7WUFDM0IsU0FBUyxFQUFFLFVBQVU7WUFDckIsSUFBSSxFQUFFO2dCQUNKLElBQUksRUFBRSxNQUFNO2dCQUNaLEtBQUssRUFBRSxrQkFBa0I7YUFDMUI7WUFDRCxtQkFBbUIsRUFBRSxFQUFFO1lBQ3ZCLFVBQVUsRUFBRSxFQUFFO1lBQ2QsWUFBWSxFQUFFO2dCQUNaLElBQUksRUFBRSxjQUFjO2dCQUNwQixVQUFVLEVBQUUsRUFBRTthQUNmO1NBQ0Y7S0FDRjtDQU1GLENBQUM7QUFFRixNQUFNLE9BQU8sZ0JBQW9CLFNBQVEsY0FBaUI7SUFJeEQsWUFBNEIsV0FBa0M7UUFDNUQsS0FBSyxFQUFFLENBQUM7UUFEa0IsZ0JBQVcsR0FBWCxXQUFXLENBQXVCO1FBRzVELE1BQU0sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxH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TSxHQUFHLElBQUksQ0FBQyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNsRDtZQUVELDZCQUE2QjtZQUM3QixNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDekMsZUFBZSxHQUFHO2dCQUNoQixHQUFHLGVBQWU7Z0JBQ2xCLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUM7YUFDckQsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxjQUFjLEdBQWlCLE1BQU0sQ0FBQyxTQUFTLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUMzRSxNQUFNLFlBQVksR0FBRyxXQUFXLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDakQsaUNBQWlDO1FBQ2pDLFlBQVksQ0FBQyxZQUFZLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUNsRCx1QkFBdUI7UUFDdkIsNENBQTRDO1FBQzNDLFlBQW9CLENBQUMsbUJBQW1CLEdBQUcsbUJBQW1CLENBQUM7UUFDaEUsdUJBQXVCO1FBQ3RCLGNBQXNCLENBQUMsV0FBVyxHQUFHO1lBQ3BDLEdBQUcsY0FBYyxDQUFDLFdBQVc7WUFDN0IsR0FBRyxlQUFlO1NBQ25CLENBQUM7UUFFRixPQUFPO1lBQ0wsUUFBUSxFQUFFLGNBQWM7WUFDeEIsU0FBUyxFQUFFLGVBQWU7WUFDMUIsUUFBUTtTQUNULENBQUM7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEFyZ3VtZW50Tm9kZSxcclxuICBEb2N1bWVudE5vZGUsXHJcbiAgRmllbGROb2RlLFxyXG4gIEZyYWdtZW50RGVmaW5pdGlvbk5vZGUsXHJcbiAgRnJhZ21lbnRTcHJlYWROb2RlLFxyXG4gIFNlbGVjdGlvbk5vZGUsXHJcbiAgU2VsZWN0aW9uU2V0Tm9kZSxcclxuICBWYXJpYWJsZURlZmluaXRpb25Ob2RlLFxyXG59IGZyb20gJ2dyYXBocWwnO1xyXG5pbXBvcnQge1xyXG4gIExyQmFkQXJndW1lbnRFeGNlcHRpb24sXHJcbiAgTHJCYWRMb2dpY0V4Y2VwdGlvbixcclxuICBMclVuc3VwcG9ydGVkRXhjZXB0aW9uLFxyXG59IGZyb20gJy4uLy4uL19jb21tb24vZXhjZXB0aW9ucyc7XHJcbmltcG9ydCB7IExyTXV0YXRpb24gfSBmcm9tICcuL2xyLW11dGF0aW9uJztcclxuaW1wb3J0IHsgTHJNdXRhdGlvbkJhc2UgfSBmcm9tICcuL2xyLW11dGF0aW9uLWJhc2UnO1xyXG5pbXBvcnQgeyBnZXRBbGlhc09yTmFtZSwgZ2V0RnJhZ21lbnRzLCBnZXRNdXRhdGlvbiB9IGZyb20gJy4uLy4uL19jb21tb24vYXN0JztcclxuaW1wb3J0ICogYXMgYXN0IGZyb20gJy4uLy4uL19jb21tb24vYXN0JztcclxuaW1wb3J0ICogYXMgbG9kYXNoIGZyb20gJ2xvZGFzaCc7XHJcblxyXG5jb25zdCBsck1lcmdlZE11dGF0aW9uRG9jOiBEb2N1bWVudE5vZGUgPSB7XHJcbiAga2luZDogJ0RvY3VtZW50JyxcclxuICBkZWZpbml0aW9uczogW1xyXG4gICAge1xyXG4gICAgICBraW5kOiAnT3BlcmF0aW9uRGVmaW5pdGlvbicsXHJcbiAgICAgIG9wZXJhdGlvbjogJ211dGF0aW9uJyxcclxuICAgICAgbmFtZToge1xyXG4gICAgICAgIGtpbmQ6ICdOYW1lJyxcclxuICAgICAgICB2YWx1ZTogJ2xyTWVyZ2VkTXV0YXRpb24nLFxyXG4gICAgICB9LFxyXG4gICAgICB2YXJpYWJsZURlZmluaXRpb25zOiBbXSxcclxuICAgICAgZGlyZWN0aXZlczogW10sXHJcbiAgICAgIHNlbGVjdGlvblNldDoge1xyXG4gICAgICAgIGtpbmQ6ICdTZWxlY3Rpb25TZXQnLFxyXG4gICAgICAgIHNlbGVjdGlvbnM6IFtdLFxyXG4gICAgICB9LFxyXG4gICAgfSxcclxuICBdLFxyXG4gIC8vIFRPRE8gV2hhdCB0byBkbyBhYm91dCB0aGVzZT8gU2VyaWFsaXNlIGFuZCByZXBhcnNlP1xyXG4gIC8vIFwibG9jXCI6IHtcclxuICAvLyAgIFwic3RhcnRcIjogMCxcclxuICAvLyAgIFwiZW5kXCI6IDIwNFxyXG4gIC8vIH1cclxufTtcclxuXHJcbmV4cG9ydCBjbGFzcyBMck1lcmdlZE11dGF0aW9uPFQ+IGV4dGVuZHMgTHJNdXRhdGlvbkJhc2U8VD4ge1xyXG4gIHB1YmxpYyByZWFkb25seSBkZXNjZW5kYW50czogU2V0PExyTXV0YXRpb25CYXNlPGFueT4+O1xyXG4gIHByb3RlY3RlZCBwcmVmaXhlczogc3RyaW5nW107XHJcblxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBsck11dGF0aW9uczogTHJNdXRhdGlvbkJhc2U8YW55PltdKSB7XHJcbiAgICBzdXBlcigpO1xyXG5cclxuICAgIGNvbnN0IHsgbXV0YXRpb24sIHZhcmlhYmxlcywgcHJlZml4ZXMgfSA9IHRoaXMubWVyZ2UoKTtcclxuICAgIHRoaXMubXV0YXRpb24gPSBtdXRhdGlvbjtcclxuICAgIHRoaXMudmFyaWFibGVzID0gdmFyaWFibGVzO1xyXG4gICAgdGhpcy5wcmVmaXhlcyA9IHByZWZpeGVzO1xyXG4gICAgdGhpcy5kZXNjZW5kYW50cyA9IHRoaXMuZ2V0RGVzY2VuZGFudHMoKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBjcmVhdGU8VDEsIFQyPihcclxuICAgIGxyTXV0YXRpb25zOiBbXHJcbiAgICAgIExyTXV0YXRpb25CYXNlPFQxPiB8IExyTWVyZ2VkTXV0YXRpb248VDE+LFxyXG4gICAgICBMck11dGF0aW9uQmFzZTxUMj4gfCBMck1lcmdlZE11dGF0aW9uPFQyPlxyXG4gICAgXVxyXG4gICk6IExyTWVyZ2VkTXV0YXRpb248W1QxLCBUMl0+O1xyXG5cclxuICBzdGF0aWMgY3JlYXRlPFQxLCBUMiwgVDM+KFxyXG4gICAgbHJNdXRhdGlvbnM6IFtcclxuICAgICAgTHJNdXRhdGlvbkJhc2U8VDE+IHwgTHJNZXJnZWRNdXRhdGlvbjxUMT4sXHJcbiAgICAgIExyTXV0YXRpb25CYXNlPFQyPiB8IExyTWVyZ2VkTXV0YXRpb248VDI+LFxyXG4gICAgICBMck11dGF0aW9uQmFzZTxUMz4gfCBMck1lcmdlZE11dGF0aW9uPFQzPlxyXG4gICAgXVxyXG4gICk6IExyTWVyZ2VkTXV0YXRpb248W1QxLCBUMiwgVDNdPjtcclxuXHJcbiAgc3RhdGljIGNyZWF0ZTxUMSwgVDIsIFQzLCBUND4oXHJcbiAgICBsck11dGF0aW9uczogW1xyXG4gICAgICBMck11dGF0aW9uQmFzZTxUMT4gfCBMck1lcmdlZE11dGF0aW9uPFQxPixcclxuICAgICAgTHJNdXRhdGlvbkJhc2U8VDI+IHwgTHJNZXJnZWRNdXRhdGlvbjxUMj4sXHJcbiAgICAgIExyTXV0YXRpb25CYXNlPFQzPiB8IExyTWVyZ2VkTXV0YXRpb248VDM+LFxyXG4gICAgICBMck11dGF0aW9uQmFzZTxUND4gfCBMck1lcmdlZE11dGF0aW9uPFQ0PlxyXG4gICAgXVxyXG4gICk6IExyTWVyZ2VkTXV0YXRpb248W1QxLCBUMiwgVDMsIFQ0XT47XHJcblxyXG4gIHN0YXRpYyBjcmVhdGU8VDEsIFQyLCBUMywgVDQsIFQ1PihcclxuICAgIGxyTXV0YXRpb25zOiBbXHJcbiAgICAgIExyTXV0YXRpb25CYXNlPFQxPiB8IExyTWVyZ2VkTXV0YXRpb248VDE+LFxyXG4gICAgICBMck11dGF0aW9uQmFzZTxUMj4gfCBMck1lcmdlZE11dGF0aW9uPFQyPixcclxuICAgICAgTHJNdXRhdGlvbkJhc2U8VDM+IHwgTHJNZXJnZWRNdXRhdGlvbjxUMz4sXHJcbiAgICAgIExyTXV0YXRpb25CYXNlPFQ0PiB8IExyTWVyZ2VkTXV0YXRpb248VDQ+LFxyXG4gICAgICBMck11dGF0aW9uQmFzZTxUNT4gfCBMck1lcmdlZE11dGF0aW9uPFQ1PlxyXG4gICAgXVxyXG4gICk6IExyTWVyZ2VkTXV0YXRpb248W1QxLCBUMiwgVDMsIFQ0LCBUNV0+O1xyXG5cclxuICBzdGF0aWMgY3JlYXRlKGxyTXV0YXRpb25zOiBMck11dGF0aW9uQmFzZTxhbnk+W10pOiBMck1lcmdlZE11dGF0aW9uPGFueVtdPjtcclxuXHJcbiAgc3RhdGljIGNyZWF0ZShsck11dGF0aW9uczogTHJNdXRhdGlvbkJhc2U8YW55PltdKSB7XHJcbiAgICByZXR1cm4gbmV3IExyTWVyZ2VkTXV0YXRpb24obHJNdXRhdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXREZXNjZW5kYW50cygpIHtcclxuICAgIGNvbnN0IHJldCA9IG5ldyBTZXQ8THJNdXRhdGlvbkJhc2U8YW55Pj4oKTtcclxuXHJcbiAgICBjb25zdCBhZGRPclRocm93ID0gKGl0ZW0pID0+IHtcclxuICAgICAgaWYgKHJldC5oYXMoaXRlbSkpIHtcclxuICAgICAgICB0aHJvdyBuZXcgTHJCYWRMb2dpY0V4Y2VwdGlvbihcclxuICAgICAgICAgICdDbGFzc2VzIHRoYXQgYXJlIGRlcml2ZWQgZnJvbSBMck11dGF0aW9uQmFzZSBjYW4gbm90IGJlIHVzZWQgbW9yZSB0aGFuIG9uY2UgaW4gYSBtZXJnZWQgbXV0YXRpb24uJ1xyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldC5hZGQoaXRlbSk7XHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMubHJNdXRhdGlvbnMuZm9yRWFjaCgobHJNdXRhdGlvbikgPT4ge1xyXG4gICAgICBpZiAobHJNdXRhdGlvbiBpbnN0YW5jZW9mIExyTXV0YXRpb24pIHtcclxuICAgICAgICBhZGRPclRocm93KGxyTXV0YXRpb24pO1xyXG4gICAgICB9IGVsc2UgaWYgKGxyTXV0YXRpb24gaW5zdGFuY2VvZiBMck1lcmdlZE11dGF0aW9uKSB7XHJcbiAgICAgICAgbHJNdXRhdGlvbi5kZXNjZW5kYW50cy5mb3JFYWNoKCh0KSA9PiBhZGRPclRocm93KHQpKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aHJvdyBuZXcgTHJVbnN1cHBvcnRlZEV4Y2VwdGlvbihcclxuICAgICAgICAgIGBMck1lcmdlTXV0YXRpb24gY2FuIG5vdCBoYW5kbGUgY2xhc3M6ICR7bHJNdXRhdGlvbi5jb25zdHJ1Y3Rvci5uYW1lfWBcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gcmV0O1xyXG4gIH1cclxuXHJcbiAgcmVzb2x2ZSh2YWx1ZTogYW55KSB7XHJcbiAgICAvLyBSZXNvbHZlcyBhbnkgcHJvbWlzZXMgd2FpdGluZyBmb3IgdGhlIGNoaWxkIG11dGF0aW9uc1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmxyTXV0YXRpb25zLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgIGNvbnN0IHByZWZpeCA9IHRoaXMucHJlZml4ZXNbaV07XHJcblxyXG4gICAgICAvLyBSZW1vdmUgdGhlIHByZWZpeCBhbmQgcmVzb2x2ZSBjaGlsZCBtdXRhdGlvbi5cclxuICAgICAgY29uc3QgcmVzOiBhbnkgPSB7fTtcclxuICAgICAgZm9yIChjb25zdCBrZXkyIGluIHZhbHVlKSB7XHJcbiAgICAgICAgaWYgKGtleTIuc3RhcnRzV2l0aChwcmVmaXgpKSB7XHJcbiAgICAgICAgICBjb25zdCBvcmlnaW5hbEtleSA9IGtleTIuc2xpY2UocHJlZml4Lmxlbmd0aCk7XHJcbiAgICAgICAgICByZXNbb3JpZ2luYWxLZXldID0gdmFsdWVba2V5Ml07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMubHJNdXRhdGlvbnNbaV0ucmVzb2x2ZShyZXMpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFJlc29sdmVzIHRvIHRoZSByZXN1bHQgb2YgY2hpbGRyZW5cclxuICAgIFByb21pc2UuYWxsKHRoaXMubHJNdXRhdGlvbnMubWFwKChtKSA9PiBtLnByb21pc2UpKS50aGVuKFxyXG4gICAgICAoY2hpbGRWYWx1ZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIC8vIFJlc29sdmVzIGFueSBwcm9taXNlcyB3YWl0aW5nIGZvciB0aGUgY3VycmVudCBtZXJnZWQgbXV0YXRpb25cclxuICAgICAgICBzdXBlci5yZXNvbHZlKGNoaWxkVmFsdWVzKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHJlamVjdChyZWFzb24/OiBhbnkpIHtcclxuICAgIHN1cGVyLnJlamVjdChyZWFzb24pO1xyXG4gICAgdGhpcy5sck11dGF0aW9ucy5mb3JFYWNoKChsck11dGF0aW9uKSA9PiBsck11dGF0aW9uLnJlamVjdChyZWFzb24pKTtcclxuICB9XHJcblxyXG4gIHNldEV4ZWN1dGVkKCkge1xyXG4gICAgc3VwZXIuc2V0RXhlY3V0ZWQoKTtcclxuICAgIHRoaXMubHJNdXRhdGlvbnMuZm9yRWFjaCgobHJNdXRhdGlvbikgPT4gbHJNdXRhdGlvbi5zZXRFeGVjdXRlZCgpKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVuYW1lVmFyaWFibGVEZWZpbml0aW9uKHZhckRlZjogVmFyaWFibGVEZWZpbml0aW9uTm9kZSwgcHJlZml4KSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAuLi52YXJEZWYsXHJcbiAgICAgIHZhcmlhYmxlOiB7XHJcbiAgICAgICAgLi4udmFyRGVmLnZhcmlhYmxlLFxyXG4gICAgICAgIG5hbWU6IGFzdC5uYW1lKHByZWZpeCArIHZhckRlZi52YXJpYWJsZS5uYW1lLnZhbHVlKSxcclxuICAgICAgfSxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlbmFtZVZhcmlhYmxlRGVmaW5pdGlvbnMoXHJcbiAgICB2YXJEZWZzOiBSZWFkb25seUFycmF5PFZhcmlhYmxlRGVmaW5pdGlvbk5vZGU+LFxyXG4gICAgcHJlZml4XHJcbiAgKSB7XHJcbiAgICByZXR1cm4gdmFyRGVmcy5tYXAoKHZhckRlZikgPT5cclxuICAgICAgdGhpcy5yZW5hbWVWYXJpYWJsZURlZmluaXRpb24odmFyRGVmLCBwcmVmaXgpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZW5hbWVBcmd1bWVudChhcmc6IEFyZ3VtZW50Tm9kZSwgcHJlZml4KSB7XHJcbiAgICBpZiAoYXJnLnZhbHVlLmtpbmQgIT09ICdWYXJpYWJsZScpIHtcclxuICAgICAgcmV0dXJuIGFyZztcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAuLi5hcmcsXHJcbiAgICAgIHZhbHVlOiB7XHJcbiAgICAgICAgLi4uYXJnLnZhbHVlLFxyXG4gICAgICAgIG5hbWU6IGFzdC5uYW1lKHByZWZpeCArIGFyZy52YWx1ZS5uYW1lLnZhbHVlKSxcclxuICAgICAgfSxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlbmFtZUZpZWxkKHNlbGVjdGlvbjogRmllbGROb2RlLCBwcmVmaXgpOiBGaWVsZE5vZGUge1xyXG4gICAgLy8gT25seSBoYW5kbGluZyB0eXBlIEZpZWxkXHJcbiAgICBpZiAoc2VsZWN0aW9uLmtpbmQgIT09ICdGaWVsZCcpIHtcclxuICAgICAgcmV0dXJuIHNlbGVjdGlvbjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBhbGlhcyA9IHByZWZpeCArIGdldEFsaWFzT3JOYW1lKHNlbGVjdGlvbik7XHJcbiAgICBjb25zdCBhcmdzID0gc2VsZWN0aW9uLmFyZ3VtZW50cy5tYXAoKGFyZykgPT5cclxuICAgICAgdGhpcy5yZW5hbWVBcmd1bWVudChhcmcsIHByZWZpeClcclxuICAgICk7XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgLi4uc2VsZWN0aW9uLFxyXG4gICAgICBhbGlhczoge1xyXG4gICAgICAgIGtpbmQ6ICdOYW1lJyxcclxuICAgICAgICB2YWx1ZTogYWxpYXMsXHJcbiAgICAgIH0sXHJcbiAgICAgIGFyZ3VtZW50czogYXJncyxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlbmFtZUZyYWdtZW50U3ByZWFkKFxyXG4gICAgc2VsZWN0aW9uOiBGcmFnbWVudFNwcmVhZE5vZGUsXHJcbiAgICBwcmVmaXhcclxuICApOiBGcmFnbWVudFNwcmVhZE5vZGUge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgLi4uc2VsZWN0aW9uLFxyXG4gICAgICBuYW1lOiBhc3QubmFtZShwcmVmaXggKyBzZWxlY3Rpb24ubmFtZS52YWx1ZSksXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwcm9jZXNzU2VsZWN0aW9uKHNlbGVjdGlvbjogU2VsZWN0aW9uTm9kZSwgcHJlZml4KTogU2VsZWN0aW9uTm9kZSB7XHJcbiAgICBzd2l0Y2ggKHNlbGVjdGlvbi5raW5kKSB7XHJcbiAgICAgIGNhc2UgJ0ZyYWdtZW50U3ByZWFkJzpcclxuICAgICAgICByZXR1cm4gdGhpcy5yZW5hbWVGcmFnbWVudFNwcmVhZChzZWxlY3Rpb24sIHByZWZpeCk7XHJcbiAgICAgIGNhc2UgJ0ZpZWxkJzpcclxuICAgICAgICAvLyBDb250aW51ZSB0byBwcm9jZXNzIGNoaWxkcmVuIGZvciBuZXN0ZWQgc2VsZWN0aW9ucy5cclxuICAgICAgICBpZiAoc2VsZWN0aW9uLnNlbGVjdGlvblNldCkge1xyXG4gICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgLi4uc2VsZWN0aW9uLFxyXG4gICAgICAgICAgICBzZWxlY3Rpb25TZXQ6IHRoaXMucHJvY2Vzc1NlbGVjdGlvblNldChcclxuICAgICAgICAgICAgICBzZWxlY3Rpb24uc2VsZWN0aW9uU2V0LFxyXG4gICAgICAgICAgICAgIHByZWZpeFxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIHNlbGVjdGlvbjtcclxuICAgICAgICB9XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIHNlbGVjdGlvbjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgcHJvY2Vzc1NlbGVjdGlvblNldChcclxuICAgIHNlbGVjdGlvblNldDogU2VsZWN0aW9uU2V0Tm9kZSxcclxuICAgIHByZWZpeFxyXG4gICk6IFNlbGVjdGlvblNldE5vZGUge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgLi4uc2VsZWN0aW9uU2V0LFxyXG4gICAgICBzZWxlY3Rpb25zOiBzZWxlY3Rpb25TZXQuc2VsZWN0aW9ucy5tYXAoKHNlbGVjdGlvbikgPT5cclxuICAgICAgICB0aGlzLnByb2Nlc3NTZWxlY3Rpb24oc2VsZWN0aW9uLCBwcmVmaXgpXHJcbiAgICAgICksXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZW5hbWVTZWxlY3Rpb25zKFxyXG4gICAgc2VsZWN0aW9uczogUmVhZG9ubHlBcnJheTxTZWxlY3Rpb25Ob2RlPixcclxuICAgIHByZWZpeFxyXG4gICk6IFNlbGVjdGlvbk5vZGVbXSB7XHJcbiAgICByZXR1cm4gc2VsZWN0aW9ucy5tYXAoKHNlbGVjdGlvbikgPT4ge1xyXG4gICAgICBzd2l0Y2ggKHNlbGVjdGlvbi5raW5kKSB7XHJcbiAgICAgICAgY2FzZSAnRmllbGQnOlxyXG4gICAgICAgICAgY29uc3QgZmllbGQgPSB0aGlzLnJlbmFtZUZpZWxkKHNlbGVjdGlvbiwgcHJlZml4KTtcclxuICAgICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NTZWxlY3Rpb24oZmllbGQsIHByZWZpeCk7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIHJldHVybiBzZWxlY3Rpb247XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZW5hbWVGcmFnbWVudERlZmluaXRpb24oZnJhZ21lbnQ6IEZyYWdtZW50RGVmaW5pdGlvbk5vZGUsIHByZWZpeCkge1xyXG4gICAgY29uc3QgcmV0ID0ge1xyXG4gICAgICAuLi5mcmFnbWVudCxcclxuICAgICAgbmFtZTogYXN0Lm5hbWUocHJlZml4ICsgZnJhZ21lbnQubmFtZS52YWx1ZSksXHJcbiAgICB9O1xyXG5cclxuICAgIGlmIChmcmFnbWVudC5zZWxlY3Rpb25TZXQpIHtcclxuICAgICAgcmV0LnNlbGVjdGlvblNldCA9IHRoaXMucHJvY2Vzc1NlbGVjdGlvblNldChcclxuICAgICAgICBmcmFnbWVudC5zZWxlY3Rpb25TZXQsXHJcbiAgICAgICAgcHJlZml4XHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHJldDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVuYW1lRnJhZ21lbnREZWZpbml0aW9ucyhcclxuICAgIGZyYWdtZW50czogRnJhZ21lbnREZWZpbml0aW9uTm9kZVtdLFxyXG4gICAgcHJlZml4XHJcbiAgKSB7XHJcbiAgICByZXR1cm4gZnJhZ21lbnRzLm1hcCgoZnJhZ21lbnQpID0+XHJcbiAgICAgIHRoaXMucmVuYW1lRnJhZ21lbnREZWZpbml0aW9uKGZyYWdtZW50LCBwcmVmaXgpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBtZXJnZSgpIHtcclxuICAgIGxldCB2YXJpYWJsZURlZmluaXRpb25zOiBWYXJpYWJsZURlZmluaXRpb25Ob2RlW10gPSBbXTtcclxuICAgIGxldCBzZWxlY3Rpb25zOiBTZWxlY3Rpb25Ob2RlW10gPSBbXTtcclxuICAgIGNvbnN0IG1lcmdlZFZhcmlhYmxlcyA9IHt9O1xyXG4gICAgbGV0IG1lcmdlZEZyYWdtZW50czogRnJhZ21lbnREZWZpbml0aW9uTm9kZVtdID0gW107XHJcblxyXG4gICAgY29uc3QgcHJlZml4ZXM6IHN0cmluZ1tdID0gW107XHJcblxyXG4gICAgLy8gSnVzdCB3YWl0IGZvciBldmVyeXRoaW5nIHRvIHJlc29sdmUgYmVjYXVzZSB3ZSBoYXZlIHRvXHJcbiAgICAvLyBtZXJnZSB0aGUgZG9jIHN5bmNocm9ub3VzbHkuXHJcbiAgICB0aGlzLmxyTXV0YXRpb25zLmZvckVhY2goKGxyTXV0YXRpb24sIGlkeCkgPT4ge1xyXG4gICAgICBjb25zdCB7IG11dGF0aW9uLCB2YXJpYWJsZXMgfSA9IGxyTXV0YXRpb24ubHJNdXRhdGlvbkRhdGE7XHJcblxyXG4gICAgICBjb25zdCBjaGlsZE11dGF0aW9uTm9kZSA9IGdldE11dGF0aW9uKG11dGF0aW9uKTtcclxuXHJcbiAgICAgIC8vIFByZWZpeGluZyBhbGwgbXV0YXRpb24gZmllbGRzIHNvIHRoZXkgZG9uJ3QgY29uZmxpY3QuXHJcbiAgICAgIGxldCBwcmVmaXggPSBgaXRlbSR7aWR4fV9gO1xyXG4gICAgICBpZiAoY2hpbGRNdXRhdGlvbk5vZGUubmFtZSkge1xyXG4gICAgICAgIHByZWZpeCArPSBjaGlsZE11dGF0aW9uTm9kZS5uYW1lLnZhbHVlICsgJ18nO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBwcmVmaXhlcy5wdXNoKHByZWZpeCk7XHJcblxyXG4gICAgICAvLyBSZW5hbWUgYW5kIG1lcmdlIHZhcmlhYmxlc1xyXG4gICAgICB2YXJpYWJsZURlZmluaXRpb25zID0gW1xyXG4gICAgICAgIC4uLnZhcmlhYmxlRGVmaW5pdGlvbnMsXHJcbiAgICAgICAgLi4udGhpcy5yZW5hbWVWYXJpYWJsZURlZmluaXRpb25zKFxyXG4gICAgICAgICAgY2hpbGRNdXRhdGlvbk5vZGUudmFyaWFibGVEZWZpbml0aW9ucyxcclxuICAgICAgICAgIHByZWZpeFxyXG4gICAgICAgICksXHJcbiAgICAgIF07XHJcblxyXG4gICAgICAvLyBSZW5hbWUgYW5kIG1lcmdlIHNlbGVjdGlvbnNcclxuICAgICAgc2VsZWN0aW9ucyA9IFtcclxuICAgICAgICAuLi5zZWxlY3Rpb25zLFxyXG4gICAgICAgIC4uLnRoaXMucmVuYW1lU2VsZWN0aW9ucyhcclxuICAgICAgICAgIGNoaWxkTXV0YXRpb25Ob2RlLnNlbGVjdGlvblNldC5zZWxlY3Rpb25zLFxyXG4gICAgICAgICAgcHJlZml4XHJcbiAgICAgICAgKSxcclxuICAgICAgXTtcclxuXHJcbiAgICAgIC8vIFRPRE8gUmVuYW1lIGFuZCBtZXJnZSBmcmFnbWVudHNcclxuXHJcbiAgICAgIC8vIFJlbmFtZSBhbmQgbWVyZ2UgdmFyaWFibGVzXHJcbiAgICAgIGZvciAoY29uc3Qga2V5MiBvZiBPYmplY3Qua2V5cyh2YXJpYWJsZXMpKSB7XHJcbiAgICAgICAgbWVyZ2VkVmFyaWFibGVzW3ByZWZpeCArIGtleTJdID0gdmFyaWFibGVzW2tleTJdO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBSZW5hbWUgYW5kIG1lcmdlIGZyYWdtZW50c1xyXG4gICAgICBjb25zdCBmcmFnbWVudHMgPSBnZXRGcmFnbWVudHMobXV0YXRpb24pO1xyXG4gICAgICBtZXJnZWRGcmFnbWVudHMgPSBbXHJcbiAgICAgICAgLi4ubWVyZ2VkRnJhZ21lbnRzLFxyXG4gICAgICAgIC4uLnRoaXMucmVuYW1lRnJhZ21lbnREZWZpbml0aW9ucyhmcmFnbWVudHMsIHByZWZpeCksXHJcbiAgICAgIF07XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCBtZXJnZWRNdXRhdGlvbjogRG9jdW1lbnROb2RlID0gbG9kYXNoLmNsb25lRGVlcChsck1lcmdlZE11dGF0aW9uRG9jKTtcclxuICAgIGNvbnN0IG11dGF0aW9uTm9kZSA9IGdldE11dGF0aW9uKG1lcmdlZE11dGF0aW9uKTtcclxuICAgIC8vIEFkZCBpbiB0aGUgbXV0YXRpb24gc2VsZWN0aW9uc1xyXG4gICAgbXV0YXRpb25Ob2RlLnNlbGVjdGlvblNldC5zZWxlY3Rpb25zID0gc2VsZWN0aW9ucztcclxuICAgIC8vIEFkZCBpbiB0aGUgdmFyaWFibGVzXHJcbiAgICAvLyB2YXJpYWJsZURlZmluaXRpb25zIGlzIHJlYWRvbmx5IHByb3BlcnR5LlxyXG4gICAgKG11dGF0aW9uTm9kZSBhcyBhbnkpLnZhcmlhYmxlRGVmaW5pdGlvbnMgPSB2YXJpYWJsZURlZmluaXRpb25zO1xyXG4gICAgLy8gQWRkIGluIHRoZSBmcmFnbWVudHNcclxuICAgIChtZXJnZWRNdXRhdGlvbiBhcyBhbnkpLmRlZmluaXRpb25zID0gW1xyXG4gICAgICAuLi5tZXJnZWRNdXRhdGlvbi5kZWZpbml0aW9ucyxcclxuICAgICAgLi4ubWVyZ2VkRnJhZ21lbnRzLFxyXG4gICAgXTtcclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBtdXRhdGlvbjogbWVyZ2VkTXV0YXRpb24sXHJcbiAgICAgIHZhcmlhYmxlczogbWVyZ2VkVmFyaWFibGVzLFxyXG4gICAgICBwcmVmaXhlcyxcclxuICAgIH07XHJcbiAgfVxyXG59XHJcbiJdfQ==