@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,79 @@
1
+ import { KeyGraphField } from '../_common/queries.gql';
2
+ import gql from 'graphql-tag';
3
+ export const ContactCardFields = `
4
+ id
5
+ publicData
6
+ publicSearchable
7
+ cipherData
8
+ key {
9
+ id
10
+ }
11
+ `;
12
+ export const ContactCardQuery = gql `
13
+ query ContactCardQuery(
14
+ $id: LrRelayIdInput!
15
+ ) {
16
+ contactCard (
17
+ id: $id
18
+ ) {
19
+ ${ContactCardFields}
20
+ }
21
+ ${KeyGraphField}
22
+ }`;
23
+ export const SearchContactCardQuery = gql `
24
+ query SearchContactCardQuery(
25
+ $publicSearchable: LrJSONFilter!
26
+ ) {
27
+ searchContactCards(
28
+ publicSearchable: $publicSearchable
29
+ orderBy: "created"
30
+ ) {
31
+ edges {
32
+ node {
33
+ ${ContactCardFields}
34
+ }
35
+ }
36
+ }
37
+ ${KeyGraphField}
38
+ }`;
39
+ export const ContactCardListQuery = gql `
40
+ query ContactCardListQuery {
41
+ contactCards(
42
+ orderBy: "created"
43
+ ) {
44
+ edges {
45
+ node {
46
+ ${ContactCardFields}
47
+ }
48
+ }
49
+ }
50
+ ${KeyGraphField}
51
+ }`;
52
+ export const CreateContactCardMutation = gql `
53
+ mutation CreateContactCardMutation(
54
+ $input: CreateContactCardInput!
55
+ ) {
56
+ createContactCard(input: $input) {
57
+ contactCard {
58
+ ${ContactCardFields}
59
+ }
60
+ }
61
+ }`;
62
+ export const UpdateContactCardMutation = gql `
63
+ mutation UpdateContactCardMutation(
64
+ $input: UpdateContactCardInput!
65
+ ) {
66
+ updateContactCard(input: $input) {
67
+ contactCard {
68
+ ${ContactCardFields}
69
+ }
70
+ }
71
+ }`;
72
+ export const DeleteContactCardMutation = gql `
73
+ mutation DeleteContactCardMutation($input: DeleteContactCardInput!) {
74
+ deleteContactCard(input: $input) {
75
+ id
76
+ }
77
+ }
78
+ `;
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFjdC1jYXJkLmdxbC5qcyIsInNvdXJjZVJvb3QiOiJDOi9Qcm9qZWN0cy90ZXN0L3Byb2plY3RzL2NvcmUvc3JjLyIsInNvdXJjZXMiOlsibGliL2FwaS9jb250YWN0LWNhcmQuZ3FsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEdBQUcsTUFBTSxhQUFhLENBQUM7QUFFOUIsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUc7Ozs7Ozs7O0NBUWhDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxHQUFHLENBQUE7Ozs7Ozs7SUFPL0IsaUJBQWlCOztFQUVuQixhQUFhO0VBQ2IsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLEdBQUcsQ0FBQTs7Ozs7Ozs7OztVQVUvQixpQkFBaUI7Ozs7SUFJdkIsYUFBYTtFQUNmLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxHQUFHLENBQUE7Ozs7Ozs7VUFPN0IsaUJBQWlCOzs7O0lBSXZCLGFBQWE7RUFDZixDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsR0FBRyxDQUFBOzs7Ozs7UUFNcEMsaUJBQWlCOzs7RUFHdkIsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLEdBQUcsQ0FBQTs7Ozs7O1FBTXBDLGlCQUFpQjs7O0VBR3ZCLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxHQUFHLENBQUE7Ozs7OztDQU0zQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgS2V5R3JhcGhGaWVsZCB9IGZyb20gJy4uL19jb21tb24vcXVlcmllcy5ncWwnO1xyXG5pbXBvcnQgZ3FsIGZyb20gJ2dyYXBocWwtdGFnJztcclxuXHJcbmV4cG9ydCBjb25zdCBDb250YWN0Q2FyZEZpZWxkcyA9IGBcclxuaWRcclxucHVibGljRGF0YVxyXG5wdWJsaWNTZWFyY2hhYmxlXHJcbmNpcGhlckRhdGFcclxua2V5IHtcclxuICBpZFxyXG59XHJcbmA7XHJcblxyXG5leHBvcnQgY29uc3QgQ29udGFjdENhcmRRdWVyeSA9IGdxbGBcclxucXVlcnkgQ29udGFjdENhcmRRdWVyeShcclxuJGlkOiBMclJlbGF5SWRJbnB1dCFcclxuKSB7XHJcbmNvbnRhY3RDYXJkIChcclxuICBpZDogJGlkXHJcbikge1xyXG4gICR7Q29udGFjdENhcmRGaWVsZHN9XHJcbn1cclxuJHtLZXlHcmFwaEZpZWxkfVxyXG59YDtcclxuXHJcbmV4cG9ydCBjb25zdCBTZWFyY2hDb250YWN0Q2FyZFF1ZXJ5ID0gZ3FsYFxyXG5xdWVyeSBTZWFyY2hDb250YWN0Q2FyZFF1ZXJ5KFxyXG4gICRwdWJsaWNTZWFyY2hhYmxlOiBMckpTT05GaWx0ZXIhXHJcbikge1xyXG4gIHNlYXJjaENvbnRhY3RDYXJkcyhcclxuICAgIHB1YmxpY1NlYXJjaGFibGU6ICRwdWJsaWNTZWFyY2hhYmxlXHJcbiAgICBvcmRlckJ5OiBcImNyZWF0ZWRcIlxyXG4gICkge1xyXG4gICAgZWRnZXMge1xyXG4gICAgICBub2RlIHtcclxuICAgICAgICAke0NvbnRhY3RDYXJkRmllbGRzfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gICR7S2V5R3JhcGhGaWVsZH1cclxufWA7XHJcblxyXG5leHBvcnQgY29uc3QgQ29udGFjdENhcmRMaXN0UXVlcnkgPSBncWxgXHJcbnF1ZXJ5IENvbnRhY3RDYXJkTGlzdFF1ZXJ5IHtcclxuICBjb250YWN0Q2FyZHMoXHJcbiAgICBvcmRlckJ5OiBcImNyZWF0ZWRcIlxyXG4gICkge1xyXG4gICAgZWRnZXMge1xyXG4gICAgICBub2RlIHtcclxuICAgICAgICAke0NvbnRhY3RDYXJkRmllbGRzfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gICR7S2V5R3JhcGhGaWVsZH1cclxufWA7XHJcblxyXG5leHBvcnQgY29uc3QgQ3JlYXRlQ29udGFjdENhcmRNdXRhdGlvbiA9IGdxbGBcclxubXV0YXRpb24gQ3JlYXRlQ29udGFjdENhcmRNdXRhdGlvbihcclxuICAkaW5wdXQ6IENyZWF0ZUNvbnRhY3RDYXJkSW5wdXQhXHJcbikge1xyXG4gIGNyZWF0ZUNvbnRhY3RDYXJkKGlucHV0OiAkaW5wdXQpIHtcclxuICAgIGNvbnRhY3RDYXJkIHtcclxuICAgICAgJHtDb250YWN0Q2FyZEZpZWxkc31cclxuICAgIH1cclxuICB9XHJcbn1gO1xyXG5cclxuZXhwb3J0IGNvbnN0IFVwZGF0ZUNvbnRhY3RDYXJkTXV0YXRpb24gPSBncWxgXHJcbm11dGF0aW9uIFVwZGF0ZUNvbnRhY3RDYXJkTXV0YXRpb24oXHJcbiAgJGlucHV0OiBVcGRhdGVDb250YWN0Q2FyZElucHV0IVxyXG4pIHtcclxuICB1cGRhdGVDb250YWN0Q2FyZChpbnB1dDogJGlucHV0KSB7XHJcbiAgICBjb250YWN0Q2FyZCB7XHJcbiAgICAgICR7Q29udGFjdENhcmRGaWVsZHN9XHJcbiAgICB9XHJcbiAgfVxyXG59YDtcclxuXHJcbmV4cG9ydCBjb25zdCBEZWxldGVDb250YWN0Q2FyZE11dGF0aW9uID0gZ3FsYFxyXG4gIG11dGF0aW9uIERlbGV0ZUNvbnRhY3RDYXJkTXV0YXRpb24oJGlucHV0OiBEZWxldGVDb250YWN0Q2FyZElucHV0ISkge1xyXG4gICAgZGVsZXRlQ29udGFjdENhcmQoaW5wdXQ6ICRpbnB1dCkge1xyXG4gICAgICBpZFxyXG4gICAgfVxyXG4gIH1cclxuYDtcclxuIl19
@@ -0,0 +1,154 @@
1
+ import { __awaiter } from "tslib";
2
+ import { Injectable } from '@angular/core';
3
+ import { EncryptionService } from '../cryptography/encryption.service';
4
+ import { KeyGraphService } from '../cryptography/key-graph.service';
5
+ import { KeyService } from '../cryptography/key.service';
6
+ import { LrApolloService } from './lr-apollo.service';
7
+ import { SearchContactCardQuery, ContactCardListQuery, ContactCardQuery, CreateContactCardMutation, UpdateContactCardMutation, DeleteContactCardMutation, } from './contact-card.gql';
8
+ import { KeyFactoryService } from '../cryptography/key-factory.service';
9
+ import { KeyMetaService } from '../cryptography/key-meta.service';
10
+ import * as i0 from "@angular/core";
11
+ import * as i1 from "../cryptography/key-factory.service";
12
+ import * as i2 from "../cryptography/key.service";
13
+ import * as i3 from "./lr-apollo.service";
14
+ import * as i4 from "../cryptography/key-graph.service";
15
+ import * as i5 from "../cryptography/encryption.service";
16
+ import * as i6 from "../cryptography/key-meta.service";
17
+ export class ContactCard {
18
+ }
19
+ export class ContactCardService {
20
+ constructor(keyFactory, keyService, lrApollo, keyGraph, encryptionService, keyMetaService) {
21
+ this.keyFactory = keyFactory;
22
+ this.keyService = keyService;
23
+ this.lrApollo = lrApollo;
24
+ this.keyGraph = keyGraph;
25
+ this.encryptionService = encryptionService;
26
+ this.keyMetaService = keyMetaService;
27
+ }
28
+ decryptContactCard(cc) {
29
+ return __awaiter(this, void 0, void 0, function* () {
30
+ const ret = Object.assign(Object.assign({}, cc), { publicDataJson: JSON.parse(cc.publicData), publicSearchableJson: JSON.parse(cc.publicSearchable) });
31
+ if (cc.key) {
32
+ const key = yield this.keyGraph.getJwkKey(cc.key.id);
33
+ // TODO: verify signature
34
+ ret.plainCipherDataJson = yield this.encryptionService.decrypt(key, cc.cipherData);
35
+ }
36
+ return ret;
37
+ });
38
+ }
39
+ decryptContactCardEdges(hasEdges) {
40
+ return __awaiter(this, void 0, void 0, function* () {
41
+ return Promise.all(hasEdges.edges.map((edge) => __awaiter(this, void 0, void 0, function* () {
42
+ const cc = edge.node;
43
+ return yield this.decryptContactCard(cc);
44
+ })));
45
+ });
46
+ }
47
+ // { "filter": [{ "contains": { "a": true } }] }
48
+ searchContactCard(publicSearchable) {
49
+ return __awaiter(this, void 0, void 0, function* () {
50
+ const data = yield this.lrApollo.query({
51
+ query: SearchContactCardQuery,
52
+ variables: {
53
+ publicSearchable: JSON.stringify(publicSearchable),
54
+ },
55
+ });
56
+ return yield this.decryptContactCardEdges(data.searchContactCards);
57
+ });
58
+ }
59
+ getContactCardList() {
60
+ return __awaiter(this, void 0, void 0, function* () {
61
+ const data = yield this.lrApollo.query({
62
+ query: ContactCardListQuery,
63
+ });
64
+ return yield this.decryptContactCardEdges(data.contactCards);
65
+ });
66
+ }
67
+ getContactCard(id) {
68
+ return __awaiter(this, void 0, void 0, function* () {
69
+ const data = yield this.lrApollo.query({
70
+ query: ContactCardQuery,
71
+ variables: {
72
+ id,
73
+ },
74
+ });
75
+ return yield this.decryptContactCard(data.contactCard);
76
+ });
77
+ }
78
+ prepareContactCardInput(input) {
79
+ return __awaiter(this, void 0, void 0, function* () {
80
+ const sigPxk = yield this.keyService.getCurrentSigPxk();
81
+ const publicDataSig = JSON.stringify(yield this.encryptionService.sign(sigPxk.jwk, input.publicDataJson));
82
+ const publicSearchableSig = JSON.stringify(yield this.encryptionService.sign(sigPxk.jwk, input.publicSearchableJson));
83
+ const plainDataSig = JSON.stringify(yield this.encryptionService.sign(sigPxk.jwk, input.plainDataJson));
84
+ return {
85
+ sigPxkId: sigPxk.id,
86
+ publicDataSig,
87
+ publicSearchableSig,
88
+ plainDataSig,
89
+ };
90
+ });
91
+ }
92
+ createContactCard(input) {
93
+ return __awaiter(this, void 0, void 0, function* () {
94
+ // Get encryption key
95
+ const rootKey = yield this.keyService.getCurrentRootKey();
96
+ const key = yield this.keyFactory.createKey();
97
+ const wrappedKey = yield this.keyGraph.encryptToString(rootKey.jwk, key.toJSON(true));
98
+ const cipherData = yield this.keyGraph.encryptToString(key, input.plainCipherDataJson);
99
+ const params = yield this.prepareContactCardInput(input);
100
+ const data = yield this.lrApollo.mutate({
101
+ mutation: CreateContactCardMutation,
102
+ variables: {
103
+ input: Object.assign(Object.assign({}, params), { wrappingKeyId: rootKey.id, wrappedKey,
104
+ cipherData }),
105
+ },
106
+ });
107
+ return data.createContactCard.contactCard;
108
+ });
109
+ }
110
+ updateContactCard(input) {
111
+ return __awaiter(this, void 0, void 0, function* () {
112
+ // Get encryption key
113
+ const cc = yield this.getContactCard(input.id);
114
+ const key = yield this.keyGraph.getJwkKey(cc.key.id);
115
+ const cipherData = yield this.keyGraph.encryptToString(key, input.plainCipherDataJson);
116
+ const params = yield this.prepareContactCardInput(input);
117
+ const data = yield this.lrApollo.mutate({
118
+ mutation: UpdateContactCardMutation,
119
+ variables: {
120
+ input: Object.assign(Object.assign({}, params), { id: input.id, cipherData }),
121
+ },
122
+ });
123
+ return data.updateContactCard.contactCard;
124
+ });
125
+ }
126
+ deleteContactCard(id) {
127
+ return __awaiter(this, void 0, void 0, function* () {
128
+ const data = yield this.lrApollo.mutate({
129
+ mutation: DeleteContactCardMutation,
130
+ variables: {
131
+ input: {
132
+ id,
133
+ },
134
+ },
135
+ });
136
+ return data.deleteContactCard.id;
137
+ });
138
+ }
139
+ }
140
+ ContactCardService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ContactCardService_Factory() { return new ContactCardService(i0.ɵɵinject(i1.KeyFactoryService), i0.ɵɵinject(i2.KeyService), i0.ɵɵinject(i3.LrApolloService), i0.ɵɵinject(i4.KeyGraphService), i0.ɵɵinject(i5.EncryptionService), i0.ɵɵinject(i6.KeyMetaService)); }, token: ContactCardService, providedIn: "root" });
141
+ ContactCardService.decorators = [
142
+ { type: Injectable, args: [{
143
+ providedIn: 'root',
144
+ },] }
145
+ ];
146
+ ContactCardService.ctorParameters = () => [
147
+ { type: KeyFactoryService },
148
+ { type: KeyService },
149
+ { type: LrApolloService },
150
+ { type: KeyGraphService },
151
+ { type: EncryptionService },
152
+ { type: KeyMetaService }
153
+ ];
154
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFjdC1jYXJkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiQzovUHJvamVjdHMvdGVzdC9wcm9qZWN0cy9jb3JlL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9hcGkvY29udGFjdC1jYXJkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUNMLHNCQUFzQixFQUN0QixvQkFBb0IsRUFDcEIsZ0JBQWdCLEVBQ2hCLHlCQUF5QixFQUN6Qix5QkFBeUIsRUFDekIseUJBQXlCLEdBQzFCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFeEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7Ozs7OztBQWNsRSxNQUFNLE9BQU8sV0FBVztDQWdCdkI7QUFnQkQsTUFBTSxPQUFPLGtCQUFrQjtJQUM3QixZQUNVLFVBQTZCLEVBQzdCLFVBQXNCLEVBQ3RCLFFBQXlCLEVBQ3pCLFFBQXlCLEVBQ3pCLGlCQUFvQyxFQUNwQyxjQUE4QjtRQUw5QixlQUFVLEdBQVYsVUFBVSxDQUFtQjtRQUM3QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBQ3pCLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBQ3pCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO0lBQ3JDLENBQUM7SUFFRSxr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RGYsaUJBQWlCO1lBZWpCLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEhhc0tleUdyYXBoLCBLZXkgfSBmcm9tICcuLi9jcnlwdG9ncmFwaHkvY3J5cHRvZ3JhcGh5LnR5cGVzJztcclxuaW1wb3J0IHsgRW5jcnlwdGlvblNlcnZpY2UgfSBmcm9tICcuLi9jcnlwdG9ncmFwaHkvZW5jcnlwdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgS2V5R3JhcGhTZXJ2aWNlIH0gZnJvbSAnLi4vY3J5cHRvZ3JhcGh5L2tleS1ncmFwaC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgS2V5U2VydmljZSB9IGZyb20gJy4uL2NyeXB0b2dyYXBoeS9rZXkuc2VydmljZSc7XHJcbmltcG9ydCB7IEhhc0VkZ2VzIH0gZnJvbSAnLi4vX2NvbW1vbi90eXBlcyc7XHJcbmltcG9ydCB7IExyQXBvbGxvU2VydmljZSB9IGZyb20gJy4vbHItYXBvbGxvLnNlcnZpY2UnO1xyXG5pbXBvcnQge1xyXG4gIFNlYXJjaENvbnRhY3RDYXJkUXVlcnksXHJcbiAgQ29udGFjdENhcmRMaXN0UXVlcnksXHJcbiAgQ29udGFjdENhcmRRdWVyeSxcclxuICBDcmVhdGVDb250YWN0Q2FyZE11dGF0aW9uLFxyXG4gIFVwZGF0ZUNvbnRhY3RDYXJkTXV0YXRpb24sXHJcbiAgRGVsZXRlQ29udGFjdENhcmRNdXRhdGlvbixcclxufSBmcm9tICcuL2NvbnRhY3QtY2FyZC5ncWwnO1xyXG5pbXBvcnQgeyBLZXlGYWN0b3J5U2VydmljZSB9IGZyb20gJy4uL2NyeXB0b2dyYXBoeS9rZXktZmFjdG9yeS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTWFpbkNvbnRhY3RDYXJkUGxhaW5GaWVsZHMgfSBmcm9tICcuLi91c2Vycy9wcm9maWxlLnR5cGVzJztcclxuaW1wb3J0IHsgS2V5TWV0YVNlcnZpY2UgfSBmcm9tICcuLi9jcnlwdG9ncmFwaHkva2V5LW1ldGEuc2VydmljZSc7XHJcblxyXG5pbnRlcmZhY2UgQ29udGFjdENhcmRRdWVyeSBleHRlbmRzIEhhc0tleUdyYXBoIHtcclxuICBjb250YWN0Q2FyZDogQ29udGFjdENhcmQ7XHJcbn1cclxuXHJcbmludGVyZmFjZSBTZWFyY2hDb250YWN0Q2FyZFF1ZXJ5IGV4dGVuZHMgSGFzS2V5R3JhcGgge1xyXG4gIHNlYXJjaENvbnRhY3RDYXJkczogSGFzRWRnZXM8Q29udGFjdENhcmQ+O1xyXG59XHJcblxyXG5pbnRlcmZhY2UgQ29udGFjdENhcmRMaXN0UXVlcnkgZXh0ZW5kcyBIYXNLZXlHcmFwaCB7XHJcbiAgY29udGFjdENhcmRzOiBIYXNFZGdlczxDb250YWN0Q2FyZD47XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBDb250YWN0Q2FyZCB7XHJcbiAgaWQ6IHN0cmluZztcclxuICBrZXk6IEtleTtcclxuICBzaWdQeGs6IEtleTtcclxuICBwdWJsaWNEYXRhOiBzdHJpbmc7XHJcbiAgcHVibGljRGF0YVNpZzogc3RyaW5nO1xyXG4gIHB1YmxpY1NlYXJjaGFibGU6IHN0cmluZztcclxuICBwdWJsaWNTZWFyY2hhYmxlU2lnOiBzdHJpbmc7XHJcbiAgcGxhaW5EYXRhOiBzdHJpbmc7XHJcbiAgcGxhaW5EYXRhU2lnOiBzdHJpbmc7XHJcbiAgY2lwaGVyRGF0YTogc3RyaW5nO1xyXG4gIC8vIFBhcnNlL2RlY3J5cHRlZCB2ZXJzaW9ucyBvZiB0aGUgYWJvdmUuXHJcbiAgcHVibGljRGF0YUpzb246IGFueTtcclxuICBwdWJsaWNTZWFyY2hhYmxlSnNvbjogYW55O1xyXG4gIHBsYWluQ2lwaGVyRGF0YUpzb246IGFueTtcclxuICBwbGFpbkRhdGFKc29uOiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlQ29udGFjdENhcmRJbnB1dCB7XHJcbiAgcHVibGljRGF0YUpzb246IGFueTtcclxuICBwdWJsaWNTZWFyY2hhYmxlSnNvbjogYW55O1xyXG4gIHBsYWluQ2lwaGVyRGF0YUpzb246IGFueTtcclxuICBwbGFpbkRhdGFKc29uOiBNYWluQ29udGFjdENhcmRQbGFpbkZpZWxkcztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVDb250YWN0Q2FyZElucHV0IGV4dGVuZHMgQ3JlYXRlQ29udGFjdENhcmRJbnB1dCB7XHJcbiAgaWQ6IHN0cmluZztcclxufVxyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIENvbnRhY3RDYXJkU2VydmljZSB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGtleUZhY3Rvcnk6IEtleUZhY3RvcnlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBrZXlTZXJ2aWNlOiBLZXlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBsckFwb2xsbzogTHJBcG9sbG9TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBrZXlHcmFwaDogS2V5R3JhcGhTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBlbmNyeXB0aW9uU2VydmljZTogRW5jcnlwdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGtleU1ldGFTZXJ2aWNlOiBLZXlNZXRhU2VydmljZVxyXG4gICkge31cclxuXHJcbiAgYXN5bmMgZGVjcnlwdENvbnRhY3RDYXJkKGNjOiBDb250YWN0Q2FyZCk6IFByb21pc2U8Q29udGFjdENhcmQ+IHtcclxuICAgIGNvbnN0IHJldCA9IHtcclxuICAgICAgLi4uY2MsXHJcbiAgICAgIHB1YmxpY0RhdGFKc29uOiBKU09OLnBhcnNlKGNjLnB1YmxpY0RhdGEpLFxyXG4gICAgICBwdWJsaWNTZWFyY2hhYmxlSnNvbjogSlNPTi5wYXJzZShjYy5wdWJsaWNTZWFyY2hhYmxlKSxcclxuICAgIH07XHJcblxyXG4gICAgaWYgKGNjLmtleSkge1xyXG4gICAgICBjb25zdCBrZXkgPSBhd2FpdCB0aGlzLmtleUdyYXBoLmdldEp3a0tleShjYy5rZXkuaWQpO1xyXG4gICAgICAvLyBUT0RPOiB2ZXJpZnkgc2lnbmF0dXJlXHJcbiAgICAgIHJldC5wbGFpbkNpcGhlckRhdGFKc29uID0gYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5kZWNyeXB0KFxyXG4gICAgICAgIGtleSxcclxuICAgICAgICBjYy5jaXBoZXJEYXRhXHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHJldDtcclxuICB9XHJcblxyXG4gIGFzeW5jIGRlY3J5cHRDb250YWN0Q2FyZEVkZ2VzKFxyXG4gICAgaGFzRWRnZXM6IEhhc0VkZ2VzPENvbnRhY3RDYXJkPlxyXG4gICk6IFByb21pc2U8Q29udGFjdENhcmRbXT4ge1xyXG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFxyXG4gICAgICBoYXNFZGdlcy5lZGdlcy5tYXAoYXN5bmMgKGVkZ2U6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGNjID0gZWRnZS5ub2RlIGFzIENvbnRhY3RDYXJkO1xyXG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmRlY3J5cHRDb250YWN0Q2FyZChjYyk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLy8geyBcImZpbHRlclwiOiBbeyBcImNvbnRhaW5zXCI6IHsgXCJhXCI6IHRydWUgfSB9XSB9XHJcbiAgYXN5bmMgc2VhcmNoQ29udGFjdENhcmQocHVibGljU2VhcmNoYWJsZTogb2JqZWN0KTogUHJvbWlzZTxDb250YWN0Q2FyZFtdPiB7XHJcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5sckFwb2xsby5xdWVyeTxTZWFyY2hDb250YWN0Q2FyZFF1ZXJ5Pih7XHJcbiAgICAgIHF1ZXJ5OiBTZWFyY2hDb250YWN0Q2FyZFF1ZXJ5LFxyXG4gICAgICB2YXJpYWJsZXM6IHtcclxuICAgICAgICBwdWJsaWNTZWFyY2hhYmxlOiBKU09OLnN0cmluZ2lmeShwdWJsaWNTZWFyY2hhYmxlKSxcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBhd2FpdCB0aGlzLmRlY3J5cHRDb250YWN0Q2FyZEVkZ2VzKGRhdGEuc2VhcmNoQ29udGFjdENhcmRzKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGdldENvbnRhY3RDYXJkTGlzdCgpOiBQcm9taXNlPENvbnRhY3RDYXJkW10+IHtcclxuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmxyQXBvbGxvLnF1ZXJ5PENvbnRhY3RDYXJkTGlzdFF1ZXJ5Pih7XHJcbiAgICAgIHF1ZXJ5OiBDb250YWN0Q2FyZExpc3RRdWVyeSxcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBhd2FpdCB0aGlzLmRlY3J5cHRDb250YWN0Q2FyZEVkZ2VzKGRhdGEuY29udGFjdENhcmRzKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGdldENvbnRhY3RDYXJkKGlkOiBzdHJpbmcpOiBQcm9taXNlPENvbnRhY3RDYXJkPiB7XHJcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5sckFwb2xsby5xdWVyeTxDb250YWN0Q2FyZFF1ZXJ5Pih7XHJcbiAgICAgIHF1ZXJ5OiBDb250YWN0Q2FyZFF1ZXJ5LFxyXG4gICAgICB2YXJpYWJsZXM6IHtcclxuICAgICAgICBpZCxcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBhd2FpdCB0aGlzLmRlY3J5cHRDb250YWN0Q2FyZChkYXRhLmNvbnRhY3RDYXJkKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgcHJlcGFyZUNvbnRhY3RDYXJkSW5wdXQoXHJcbiAgICBpbnB1dDogQ3JlYXRlQ29udGFjdENhcmRJbnB1dFxyXG4gICk6IFByb21pc2U8YW55PiB7XHJcbiAgICBjb25zdCBzaWdQeGsgPSBhd2FpdCB0aGlzLmtleVNlcnZpY2UuZ2V0Q3VycmVudFNpZ1B4aygpO1xyXG4gICAgY29uc3QgcHVibGljRGF0YVNpZyA9IEpTT04uc3RyaW5naWZ5KFxyXG4gICAgICBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLnNpZ24oc2lnUHhrLmp3aywgaW5wdXQucHVibGljRGF0YUpzb24pXHJcbiAgICApO1xyXG4gICAgY29uc3QgcHVibGljU2VhcmNoYWJsZVNpZyA9IEpTT04uc3RyaW5naWZ5KFxyXG4gICAgICBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLnNpZ24oc2lnUHhrLmp3aywgaW5wdXQucHVibGljU2VhcmNoYWJsZUpzb24pXHJcbiAgICApO1xyXG4gICAgY29uc3QgcGxhaW5EYXRhU2lnID0gSlNPTi5zdHJpbmdpZnkoXHJcbiAgICAgIGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2Uuc2lnbihzaWdQeGsuandrLCBpbnB1dC5wbGFpbkRhdGFKc29uKVxyXG4gICAgKTtcclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBzaWdQeGtJZDogc2lnUHhrLmlkLFxyXG4gICAgICBwdWJsaWNEYXRhU2lnLFxyXG4gICAgICBwdWJsaWNTZWFyY2hhYmxlU2lnLFxyXG4gICAgICBwbGFpbkRhdGFTaWcsXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgY3JlYXRlQ29udGFjdENhcmQoaW5wdXQ6IENyZWF0ZUNvbnRhY3RDYXJkSW5wdXQpOiBQcm9taXNlPENvbnRhY3RDYXJkPiB7XHJcbiAgICAvLyBHZXQgZW5jcnlwdGlvbiBrZXlcclxuICAgIGNvbnN0IHJvb3RLZXkgPSBhd2FpdCB0aGlzLmtleVNlcnZpY2UuZ2V0Q3VycmVudFJvb3RLZXkoKTtcclxuICAgIGNvbnN0IGtleSA9IGF3YWl0IHRoaXMua2V5RmFjdG9yeS5jcmVhdGVLZXkoKTtcclxuICAgIGNvbnN0IHdyYXBwZWRLZXkgPSBhd2FpdCB0aGlzLmtleUdyYXBoLmVuY3J5cHRUb1N0cmluZyhcclxuICAgICAgcm9vdEtleS5qd2ssXHJcbiAgICAgIGtleS50b0pTT04odHJ1ZSlcclxuICAgICk7XHJcbiAgICBjb25zdCBjaXBoZXJEYXRhID0gYXdhaXQgdGhpcy5rZXlHcmFwaC5lbmNyeXB0VG9TdHJpbmcoXHJcbiAgICAgIGtleSxcclxuICAgICAgaW5wdXQucGxhaW5DaXBoZXJEYXRhSnNvblxyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdCBwYXJhbXMgPSBhd2FpdCB0aGlzLnByZXBhcmVDb250YWN0Q2FyZElucHV0KGlucHV0KTtcclxuXHJcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5sckFwb2xsby5tdXRhdGU8e1xyXG4gICAgICBjcmVhdGVDb250YWN0Q2FyZDogeyBjb250YWN0Q2FyZDogQ29udGFjdENhcmQgfTtcclxuICAgIH0+KHtcclxuICAgICAgbXV0YXRpb246IENyZWF0ZUNvbnRhY3RDYXJkTXV0YXRpb24sXHJcbiAgICAgIHZhcmlhYmxlczoge1xyXG4gICAgICAgIGlucHV0OiB7XHJcbiAgICAgICAgICAuLi5wYXJhbXMsXHJcbiAgICAgICAgICB3cmFwcGluZ0tleUlkOiByb290S2V5LmlkLFxyXG4gICAgICAgICAgd3JhcHBlZEtleSxcclxuICAgICAgICAgIGNpcGhlckRhdGEsXHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBkYXRhLmNyZWF0ZUNvbnRhY3RDYXJkLmNvbnRhY3RDYXJkO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgdXBkYXRlQ29udGFjdENhcmQoaW5wdXQ6IFVwZGF0ZUNvbnRhY3RDYXJkSW5wdXQpOiBQcm9taXNlPENvbnRhY3RDYXJkPiB7XHJcbiAgICAvLyBHZXQgZW5jcnlwdGlvbiBrZXlcclxuICAgIGNvbnN0IGNjID0gYXdhaXQgdGhpcy5nZXRDb250YWN0Q2FyZChpbnB1dC5pZCk7XHJcbiAgICBjb25zdCBrZXkgPSBhd2FpdCB0aGlzLmtleUdyYXBoLmdldEp3a0tleShjYy5rZXkuaWQpO1xyXG4gICAgY29uc3QgY2lwaGVyRGF0YSA9IGF3YWl0IHRoaXMua2V5R3JhcGguZW5jcnlwdFRvU3RyaW5nKFxyXG4gICAgICBrZXksXHJcbiAgICAgIGlucHV0LnBsYWluQ2lwaGVyRGF0YUpzb25cclxuICAgICk7XHJcblxyXG4gICAgY29uc3QgcGFyYW1zID0gYXdhaXQgdGhpcy5wcmVwYXJlQ29udGFjdENhcmRJbnB1dChpbnB1dCk7XHJcblxyXG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMubHJBcG9sbG8ubXV0YXRlPHtcclxuICAgICAgdXBkYXRlQ29udGFjdENhcmQ6IHsgY29udGFjdENhcmQ6IENvbnRhY3RDYXJkIH07XHJcbiAgICB9Pih7XHJcbiAgICAgIG11dGF0aW9uOiBVcGRhdGVDb250YWN0Q2FyZE11dGF0aW9uLFxyXG4gICAgICB2YXJpYWJsZXM6IHtcclxuICAgICAgICBpbnB1dDoge1xyXG4gICAgICAgICAgLi4ucGFyYW1zLFxyXG4gICAgICAgICAgaWQ6IGlucHV0LmlkLFxyXG4gICAgICAgICAgY2lwaGVyRGF0YSxcclxuICAgICAgICB9LFxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIGRhdGEudXBkYXRlQ29udGFjdENhcmQuY29udGFjdENhcmQ7XHJcbiAgfVxyXG5cclxuICBhc3luYyBkZWxldGVDb250YWN0Q2FyZChpZDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmxyQXBvbGxvLm11dGF0ZTxhbnk+KHtcclxuICAgICAgbXV0YXRpb246IERlbGV0ZUNvbnRhY3RDYXJkTXV0YXRpb24sXHJcbiAgICAgIHZhcmlhYmxlczoge1xyXG4gICAgICAgIGlucHV0OiB7XHJcbiAgICAgICAgICBpZCxcclxuICAgICAgICB9LFxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIGRhdGEuZGVsZXRlQ29udGFjdENhcmQuaWQ7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,60 @@
1
+ import { gqlTyped } from '../_common/ast';
2
+ export const ContactCardFragment = gqlTyped `
3
+ fragment ContactCardFragment on ContactCardNode {
4
+ id
5
+ publicData
6
+ publicSearchable
7
+ cipherData
8
+ key {
9
+ id
10
+ }
11
+ }
12
+ `;
13
+ export const CreateContactCardMutation = gqlTyped `
14
+ mutation CreateContactCardMutation(
15
+ $input: CreateContactCardInput!
16
+ ) {
17
+ createContactCard(input: $input) {
18
+ contactCard {
19
+ id
20
+ }
21
+ }
22
+ }
23
+ `;
24
+ export const UpdateContactCardMutation = gqlTyped `
25
+ mutation UpdateContactCardMutation($input: UpdateContactCardInput!) {
26
+ updateContactCard(input: $input) {
27
+ contactCard {
28
+ id
29
+ }
30
+ }
31
+ }
32
+ `;
33
+ export const DeleteContactCardMutation = gqlTyped `
34
+ mutation DeleteContactCardMutation($input: DeleteContactCardInput!) {
35
+ deleteContactCard(input: $input) {
36
+ id
37
+ }
38
+ }
39
+ `;
40
+ export const ContactCardsQuery = gqlTyped `
41
+ query ContactCardsQuery {
42
+ contactCards(orderBy: "created") {
43
+ edges {
44
+ node {
45
+ ...ContactCardFragment
46
+ }
47
+ }
48
+ }
49
+ }
50
+ ${ContactCardFragment}
51
+ `;
52
+ export const ContactCardQuery = gqlTyped `
53
+ query ContactCardQuery($id: LrRelayIdInput!) {
54
+ contactCard(id: $id) {
55
+ ...ContactCardFragment
56
+ }
57
+ }
58
+ ${ContactCardFragment}
59
+ `;
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFjdC1jYXJkMi5ncWwuanMiLCJzb3VyY2VSb290IjoiQzovUHJvamVjdHMvdGVzdC9wcm9qZWN0cy9jb3JlL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9hcGkvY29udGFjdC1jYXJkMi5ncWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTFDLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLFFBQVEsQ0FBaUI7Ozs7Ozs7Ozs7Q0FVM0QsQ0FBQztBQVNGLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLFFBQVEsQ0FBMkI7Ozs7Ozs7Ozs7Q0FVM0UsQ0FBQztBQVNGLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLFFBQVEsQ0FBMkI7Ozs7Ozs7O0NBUTNFLENBQUM7QUFTRixNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxRQUFRLENBQTJCOzs7Ozs7Q0FNM0UsQ0FBQztBQUtGLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLFFBQVEsQ0FBbUI7Ozs7Ozs7Ozs7SUFVeEQsbUJBQW1CO0NBQ3RCLENBQUM7QUFLRixNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxRQUFRLENBQWtCOzs7Ozs7SUFNdEQsbUJBQW1CO0NBQ3RCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25uZWN0aW9uLCBDb250YWN0Q2FyZE5vZGUsIElEIH0gZnJvbSAnLi90eXBlcyc7XHJcbmltcG9ydCB7IGdxbFR5cGVkIH0gZnJvbSAnLi4vX2NvbW1vbi9hc3QnO1xyXG5cclxuZXhwb3J0IGNvbnN0IENvbnRhY3RDYXJkRnJhZ21lbnQgPSBncWxUeXBlZDxDb250YWN0Q2FyZE5vZGU+YFxyXG4gIGZyYWdtZW50IENvbnRhY3RDYXJkRnJhZ21lbnQgb24gQ29udGFjdENhcmROb2RlIHtcclxuICAgIGlkXHJcbiAgICBwdWJsaWNEYXRhXHJcbiAgICBwdWJsaWNTZWFyY2hhYmxlXHJcbiAgICBjaXBoZXJEYXRhXHJcbiAgICBrZXkge1xyXG4gICAgICAgIGlkXHJcbiAgICB9XHJcbiAgfVxyXG5gO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVDb250YWN0Q2FyZE11dGF0aW9uIHtcclxuICBjcmVhdGVDb250YWN0Q2FyZDoge1xyXG4gICAgY29udGFjdENhcmQ6IHtcclxuICAgICAgaWQ6IElEO1xyXG4gICAgfTtcclxuICB9O1xyXG59XHJcbmV4cG9ydCBjb25zdCBDcmVhdGVDb250YWN0Q2FyZE11dGF0aW9uID0gZ3FsVHlwZWQ8Q3JlYXRlQ29udGFjdENhcmRNdXRhdGlvbj5gXHJcbiAgbXV0YXRpb24gQ3JlYXRlQ29udGFjdENhcmRNdXRhdGlvbihcclxuICAgICRpbnB1dDogQ3JlYXRlQ29udGFjdENhcmRJbnB1dCFcclxuICApIHtcclxuICAgIGNyZWF0ZUNvbnRhY3RDYXJkKGlucHV0OiAkaW5wdXQpIHtcclxuICAgICAgY29udGFjdENhcmQge1xyXG4gICAgICAgIGlkXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbmA7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0ZUNvbnRhY3RDYXJkTXV0YXRpb24ge1xyXG4gIHVwZGF0ZUNvbnRhY3RDYXJkOiB7XHJcbiAgICBjb250YWN0Q2FyZDoge1xyXG4gICAgICBpZDogSUQ7XHJcbiAgICB9O1xyXG4gIH07XHJcbn1cclxuZXhwb3J0IGNvbnN0IFVwZGF0ZUNvbnRhY3RDYXJkTXV0YXRpb24gPSBncWxUeXBlZDxVcGRhdGVDb250YWN0Q2FyZE11dGF0aW9uPmBcclxuICBtdXRhdGlvbiBVcGRhdGVDb250YWN0Q2FyZE11dGF0aW9uKCRpbnB1dDogVXBkYXRlQ29udGFjdENhcmRJbnB1dCEpIHtcclxuICAgIHVwZGF0ZUNvbnRhY3RDYXJkKGlucHV0OiAkaW5wdXQpIHtcclxuICAgICAgY29udGFjdENhcmQge1xyXG4gICAgICAgIGlkXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbmA7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIERlbGV0ZUNvbnRhY3RDYXJkTXV0YXRpb24ge1xyXG4gIGRlbGV0ZUNvbnRhY3RDYXJkOiB7XHJcbiAgICBkZWxldGVDb250YWN0Q2FyZDoge1xyXG4gICAgICBpZDogSUQ7XHJcbiAgICB9O1xyXG4gIH07XHJcbn1cclxuZXhwb3J0IGNvbnN0IERlbGV0ZUNvbnRhY3RDYXJkTXV0YXRpb24gPSBncWxUeXBlZDxEZWxldGVDb250YWN0Q2FyZE11dGF0aW9uPmBcclxuICBtdXRhdGlvbiBEZWxldGVDb250YWN0Q2FyZE11dGF0aW9uKCRpbnB1dDogRGVsZXRlQ29udGFjdENhcmRJbnB1dCEpIHtcclxuICAgIGRlbGV0ZUNvbnRhY3RDYXJkKGlucHV0OiAkaW5wdXQpIHtcclxuICAgICAgaWRcclxuICAgIH1cclxuICB9XHJcbmA7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENvbnRhY3RDYXJkc1F1ZXJ5IHtcclxuICBjb250YWN0Q2FyZHM6IENvbm5lY3Rpb248Q29udGFjdENhcmROb2RlPjtcclxufVxyXG5leHBvcnQgY29uc3QgQ29udGFjdENhcmRzUXVlcnkgPSBncWxUeXBlZDxDb250YWN0Q2FyZHNRdWVyeT5gXHJcbiAgcXVlcnkgQ29udGFjdENhcmRzUXVlcnkge1xyXG4gICAgY29udGFjdENhcmRzKG9yZGVyQnk6IFwiY3JlYXRlZFwiKSB7XHJcbiAgICAgIGVkZ2VzIHtcclxuICAgICAgICBub2RlIHtcclxuICAgICAgICAgIC4uLkNvbnRhY3RDYXJkRnJhZ21lbnRcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgJHtDb250YWN0Q2FyZEZyYWdtZW50fVxyXG5gO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDb250YWN0Q2FyZFF1ZXJ5IHtcclxuICBjb250YWN0Q2FyZDogQ29udGFjdENhcmROb2RlO1xyXG59XHJcbmV4cG9ydCBjb25zdCBDb250YWN0Q2FyZFF1ZXJ5ID0gZ3FsVHlwZWQ8Q29udGFjdENhcmRRdWVyeT5gXHJcbiAgcXVlcnkgQ29udGFjdENhcmRRdWVyeSgkaWQ6IExyUmVsYXlJZElucHV0ISkge1xyXG4gICAgY29udGFjdENhcmQoaWQ6ICRpZCkge1xyXG4gICAgICAuLi5Db250YWN0Q2FyZEZyYWdtZW50XHJcbiAgICB9XHJcbiAgfVxyXG4gICR7Q29udGFjdENhcmRGcmFnbWVudH1cclxuYDtcclxuIl19
@@ -0,0 +1,103 @@
1
+ import { __awaiter, __decorate } from "tslib";
2
+ import { Injectable, NgZone } from '@angular/core';
3
+ import { EncryptionService } from '../cryptography/encryption.service';
4
+ import { KeyFactoryService } from '../cryptography/key-factory.service';
5
+ import { KeyGraphService } from '../cryptography/key-graph.service';
6
+ import { KeyMetaService } from '../cryptography/key-meta.service';
7
+ import { KeyService } from '../cryptography/key.service';
8
+ import { RunOutsideAngular } from '../_common/run-outside-angular';
9
+ import { CreateContactCardMutation, DeleteContactCardMutation, UpdateContactCardMutation, } from './contact-card2.gql';
10
+ import { LrMutation } from './lr-graphql';
11
+ import * as i0 from "@angular/core";
12
+ import * as i1 from "../cryptography/key-factory.service";
13
+ import * as i2 from "../cryptography/key.service";
14
+ import * as i3 from "../cryptography/encryption.service";
15
+ import * as i4 from "../cryptography/key-graph.service";
16
+ import * as i5 from "../cryptography/key-meta.service";
17
+ export class OwnerPlainDataJson {
18
+ }
19
+ let ContactCard2Service = class ContactCard2Service {
20
+ constructor(keyFactory, keyService, encryptionService, keyGraph, keyMetaService, ngZone) {
21
+ this.keyFactory = keyFactory;
22
+ this.keyService = keyService;
23
+ this.encryptionService = encryptionService;
24
+ this.keyGraph = keyGraph;
25
+ this.keyMetaService = keyMetaService;
26
+ this.ngZone = ngZone;
27
+ }
28
+ createContactCard(input) {
29
+ return __awaiter(this, void 0, void 0, function* () {
30
+ // Get encryption key
31
+ const rootKey = yield this.keyService.getCurrentRootKey();
32
+ const key = yield this.keyFactory.createKey();
33
+ const wrappedKey = yield this.keyGraph.encryptToString(rootKey.jwk, key.toJSON(true));
34
+ const cipherData = yield this.keyGraph.encryptToString(key, input.plainCipherDataJson);
35
+ const params = yield this.prepareContactCardInput(input);
36
+ return new LrMutation({
37
+ mutation: CreateContactCardMutation,
38
+ variables: {
39
+ input: Object.assign(Object.assign({}, params), { wrappingKeyId: rootKey.id, wrappedKey,
40
+ cipherData }),
41
+ },
42
+ });
43
+ });
44
+ }
45
+ updateContactCard(input) {
46
+ return __awaiter(this, void 0, void 0, function* () {
47
+ // Get encryption key
48
+ const cipherData = yield this.keyGraph.encryptToString(input.keyId, input.plainCipherDataJson);
49
+ const params = yield this.prepareContactCardInput(input);
50
+ return new LrMutation({
51
+ mutation: UpdateContactCardMutation,
52
+ variables: {
53
+ input: Object.assign(Object.assign({}, params), { id: input.id, cipherData }),
54
+ },
55
+ });
56
+ });
57
+ }
58
+ deleteContactCard(id) {
59
+ return new LrMutation({
60
+ mutation: DeleteContactCardMutation,
61
+ variables: {
62
+ input: {
63
+ id,
64
+ },
65
+ },
66
+ });
67
+ }
68
+ prepareContactCardInput(input) {
69
+ return __awaiter(this, void 0, void 0, function* () {
70
+ const sigPxk = yield this.keyService.getCurrentSigPxk();
71
+ const publicDataSig = JSON.stringify(yield this.encryptionService.sign(sigPxk.jwk, input.publicDataJson));
72
+ const publicSearchableSig = JSON.stringify(yield this.encryptionService.sign(sigPxk.jwk, input.publicSearchableJson));
73
+ const plainDataSig = JSON.stringify(yield this.encryptionService.sign(sigPxk.jwk, input.plainDataJson));
74
+ return {
75
+ sigPxkId: sigPxk.id,
76
+ publicDataSig,
77
+ publicSearchableSig,
78
+ plainDataSig,
79
+ };
80
+ });
81
+ }
82
+ };
83
+ ContactCard2Service.ɵprov = i0.ɵɵdefineInjectable({ factory: function ContactCard2Service_Factory() { return new ContactCard2Service(i0.ɵɵinject(i1.KeyFactoryService), i0.ɵɵinject(i2.KeyService), i0.ɵɵinject(i3.EncryptionService), i0.ɵɵinject(i4.KeyGraphService), i0.ɵɵinject(i5.KeyMetaService), i0.ɵɵinject(i0.NgZone)); }, token: ContactCard2Service, providedIn: "root" });
84
+ ContactCard2Service.decorators = [
85
+ { type: Injectable, args: [{
86
+ providedIn: 'root',
87
+ },] }
88
+ ];
89
+ ContactCard2Service.ctorParameters = () => [
90
+ { type: KeyFactoryService },
91
+ { type: KeyService },
92
+ { type: EncryptionService },
93
+ { type: KeyGraphService },
94
+ { type: KeyMetaService },
95
+ { type: NgZone }
96
+ ];
97
+ ContactCard2Service = __decorate([
98
+ RunOutsideAngular({
99
+ ngZoneName: 'ngZone',
100
+ })
101
+ ], ContactCard2Service);
102
+ export { ContactCard2Service };
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFjdC1jYXJkMi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IkM6L1Byb2plY3RzL3Rlc3QvcHJvamVjdHMvY29yZS9zcmMvIiwic291cmNlcyI6WyJsaWIvYXBpL2NvbnRhY3QtY2FyZDIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDeEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFekQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbkUsT0FBTyxFQUNMLHlCQUF5QixFQUN6Qix5QkFBeUIsRUFDekIseUJBQXlCLEdBQzFCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7Ozs7OztBQW1CMUMsTUFBTSxPQUFPLGtCQUFrQjtDQUU5QjtJQWFZLG1CQUFtQixTQUFuQixtQkFBbUI7SUFDOUIsWUFDVSxVQUE2QixFQUM3QixVQUFzQixFQUN0QixpQkFBb0MsRUFDcEMsUUFBeUIsRUFDekIsY0FBOEIsRUFDOUIsTUFBYztRQUxkLGVBQVUsR0FBVixVQUFVLENBQW1CO1FBQzdCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUN6QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtJ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QWlCO1lBR2pCLFVBQVU7WUFKVixpQkFBaUI7WUFFakIsZUFBZTtZQUNmLGNBQWM7WUFKRixNQUFNOztBQStDZCxtQkFBbUI7SUFOL0IsaUJBQWlCLENBQUM7UUFDakIsVUFBVSxFQUFFLFFBQVE7S0FDckIsQ0FBQztHQUlXLG1CQUFtQixDQTJGL0I7U0EzRlksbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEVuY3J5cHRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vY3J5cHRvZ3JhcGh5L2VuY3J5cHRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IEtleUZhY3RvcnlTZXJ2aWNlIH0gZnJvbSAnLi4vY3J5cHRvZ3JhcGh5L2tleS1mYWN0b3J5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBLZXlHcmFwaFNlcnZpY2UgfSBmcm9tICcuLi9jcnlwdG9ncmFwaHkva2V5LWdyYXBoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBLZXlNZXRhU2VydmljZSB9IGZyb20gJy4uL2NyeXB0b2dyYXBoeS9rZXktbWV0YS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgS2V5U2VydmljZSB9IGZyb20gJy4uL2NyeXB0b2dyYXBoeS9rZXkuc2VydmljZSc7XHJcbmltcG9ydCB7IE1haW5Db250YWN0Q2FyZFBsYWluRmllbGRzIH0gZnJvbSAnLi4vdXNlcnMvcHJvZmlsZS50eXBlcyc7XHJcbmltcG9ydCB7IFJ1bk91dHNpZGVBbmd1bGFyIH0gZnJvbSAnLi4vX2NvbW1vbi9ydW4tb3V0c2lkZS1hbmd1bGFyJztcclxuaW1wb3J0IHtcclxuICBDcmVhdGVDb250YWN0Q2FyZE11dGF0aW9uLFxyXG4gIERlbGV0ZUNvbnRhY3RDYXJkTXV0YXRpb24sXHJcbiAgVXBkYXRlQ29udGFjdENhcmRNdXRhdGlvbixcclxufSBmcm9tICcuL2NvbnRhY3QtY2FyZDIuZ3FsJztcclxuaW1wb3J0IHsgTHJNdXRhdGlvbiB9IGZyb20gJy4vbHItZ3JhcGhxbCc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZUNvbnRhY3RDYXJkSW5wdXQyIHtcclxuICBwdWJsaWNEYXRhSnNvbjogYW55O1xyXG4gIHB1YmxpY1NlYXJjaGFibGVKc29uOiBhbnk7XHJcbiAgcGxhaW5DaXBoZXJEYXRhSnNvbjogYW55O1xyXG4gIHBsYWluRGF0YUpzb246IE1haW5Db250YWN0Q2FyZFBsYWluRmllbGRzO1xyXG59XHJcblxyXG4vLyBUaGVzZSBjb250YWN0IG5hbWUgZmllbGRzIGFyZSBlbmZvcmNlZCBieSB0aGUgc2VydmVyIHNvIHRoYXQgaXQgY2FuIHNlbmQgb3V0IGVtYWlscyB3aXRoXHJcbi8vIGFwcHJvcHJpYXRlIGZvcm1hdC5cclxuZXhwb3J0IGludGVyZmFjZSBDb250YWN0Q2FyZE5hbWUyIHtcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgdGl0bGU/OiBzdHJpbmc7XHJcbiAgZmlyc3ROYW1lPzogc3RyaW5nO1xyXG4gIGxhc3ROYW1lPzogc3RyaW5nO1xyXG4gIC8vIGFkZGl0aW9uYWwgZmllbGRzIGFyZSBub3QgYWxsb3dlZCBieSB0aGUgc2VydmVyXHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBPd25lclBsYWluRGF0YUpzb24ge1xyXG4gIG5hbWU6IENvbnRhY3RDYXJkTmFtZTI7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgVXBkYXRlQ29udGFjdENhcmRJbnB1dDIgZXh0ZW5kcyBDcmVhdGVDb250YWN0Q2FyZElucHV0MiB7XHJcbiAgaWQ6IHN0cmluZztcclxuICBrZXlJZDogc3RyaW5nO1xyXG59XHJcblxyXG5AUnVuT3V0c2lkZUFuZ3VsYXIoe1xyXG4gIG5nWm9uZU5hbWU6ICduZ1pvbmUnLFxyXG59KVxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29udGFjdENhcmQyU2VydmljZSB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGtleUZhY3Rvcnk6IEtleUZhY3RvcnlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBrZXlTZXJ2aWNlOiBLZXlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBlbmNyeXB0aW9uU2VydmljZTogRW5jcnlwdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGtleUdyYXBoOiBLZXlHcmFwaFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGtleU1ldGFTZXJ2aWNlOiBLZXlNZXRhU2VydmljZSxcclxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmVcclxuICApIHt9XHJcblxyXG4gIGFzeW5jIGNyZWF0ZUNvbnRhY3RDYXJkKGlucHV0OiBDcmVhdGVDb250YWN0Q2FyZElucHV0Mikge1xyXG4gICAgLy8gR2V0IGVuY3J5cHRpb24ga2V5XHJcbiAgICBjb25zdCByb290S2V5ID0gYXdhaXQgdGhpcy5rZXlTZXJ2aWNlLmdldEN1cnJlbnRSb290S2V5KCk7XHJcbiAgICBjb25zdCBrZXkgPSBhd2FpdCB0aGlzLmtleUZhY3RvcnkuY3JlYXRlS2V5KCk7XHJcbiAgICBjb25zdCB3cmFwcGVkS2V5ID0gYXdhaXQgdGhpcy5rZXlHcmFwaC5lbmNyeXB0VG9TdHJpbmcoXHJcbiAgICAgIHJvb3RLZXkuandrLFxyXG4gICAgICBrZXkudG9KU09OKHRydWUpXHJcbiAgICApO1xyXG4gICAgY29uc3QgY2lwaGVyRGF0YSA9IGF3YWl0IHRoaXMua2V5R3JhcGguZW5jcnlwdFRvU3RyaW5nKFxyXG4gICAgICBrZXksXHJcbiAgICAgIGlucHV0LnBsYWluQ2lwaGVyRGF0YUpzb25cclxuICAgICk7XHJcblxyXG4gICAgY29uc3QgcGFyYW1zID0gYXdhaXQgdGhpcy5wcmVwYXJlQ29udGFjdENhcmRJbnB1dChpbnB1dCk7XHJcblxyXG4gICAgcmV0dXJuIG5ldyBMck11dGF0aW9uKHtcclxuICAgICAgbXV0YXRpb246IENyZWF0ZUNvbnRhY3RDYXJkTXV0YXRpb24sXHJcbiAgICAgIHZhcmlhYmxlczoge1xyXG4gICAgICAgIGlucHV0OiB7XHJcbiAgICAgICAgICAuLi5wYXJhbXMsXHJcbiAgICAgICAgICB3cmFwcGluZ0tleUlkOiByb290S2V5LmlkLFxyXG4gICAgICAgICAgd3JhcHBlZEtleSxcclxuICAgICAgICAgIGNpcGhlckRhdGEsXHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgdXBkYXRlQ29udGFjdENhcmQoaW5wdXQ6IFVwZGF0ZUNvbnRhY3RDYXJkSW5wdXQyKSB7XHJcbiAgICAvLyBHZXQgZW5jcnlwdGlvbiBrZXlcclxuICAgIGNvbnN0IGNpcGhlckRhdGEgPSBhd2FpdCB0aGlzLmtleUdyYXBoLmVuY3J5cHRUb1N0cmluZyhcclxuICAgICAgaW5wdXQua2V5SWQsXHJcbiAgICAgIGlucHV0LnBsYWluQ2lwaGVyRGF0YUpzb25cclxuICAgICk7XHJcblxyXG4gICAgY29uc3QgcGFyYW1zID0gYXdhaXQgdGhpcy5wcmVwYXJlQ29udGFjdENhcmRJbnB1dChpbnB1dCk7XHJcblxyXG4gICAgcmV0dXJuIG5ldyBMck11dGF0aW9uKHtcclxuICAgICAgbXV0YXRpb246IFVwZGF0ZUNvbnRhY3RDYXJkTXV0YXRpb24sXHJcbiAgICAgIHZhcmlhYmxlczoge1xyXG4gICAgICAgIGlucHV0OiB7XHJcbiAgICAgICAgICAuLi5wYXJhbXMsXHJcbiAgICAgICAgICBpZDogaW5wdXQuaWQsXHJcbiAgICAgICAgICBjaXBoZXJEYXRhLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZUNvbnRhY3RDYXJkKGlkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiBuZXcgTHJNdXRhdGlvbih7XHJcbiAgICAgIG11dGF0aW9uOiBEZWxldGVDb250YWN0Q2FyZE11dGF0aW9uLFxyXG4gICAgICB2YXJpYWJsZXM6IHtcclxuICAgICAgICBpbnB1dDoge1xyXG4gICAgICAgICAgaWQsXHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBwcmVwYXJlQ29udGFjdENhcmRJbnB1dChcclxuICAgIGlucHV0OiBDcmVhdGVDb250YWN0Q2FyZElucHV0MlxyXG4gICk6IFByb21pc2U8YW55PiB7XHJcbiAgICBjb25zdCBzaWdQeGsgPSBhd2FpdCB0aGlzLmtleVNlcnZpY2UuZ2V0Q3VycmVudFNpZ1B4aygpO1xyXG4gICAgY29uc3QgcHVibGljRGF0YVNpZyA9IEpTT04uc3RyaW5naWZ5KFxyXG4gICAgICBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLnNpZ24oc2lnUHhrLmp3aywgaW5wdXQucHVibGljRGF0YUpzb24pXHJcbiAgICApO1xyXG4gICAgY29uc3QgcHVibGljU2VhcmNoYWJsZVNpZyA9IEpTT04uc3RyaW5naWZ5KFxyXG4gICAgICBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLnNpZ24oc2lnUHhrLmp3aywgaW5wdXQucHVibGljU2VhcmNoYWJsZUpzb24pXHJcbiAgICApO1xyXG4gICAgY29uc3QgcGxhaW5EYXRhU2lnID0gSlNPTi5zdHJpbmdpZnkoXHJcbiAgICAgIGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2Uuc2lnbihzaWdQeGsuandrLCBpbnB1dC5wbGFpbkRhdGFKc29uKVxyXG4gICAgKTtcclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBzaWdQeGtJZDogc2lnUHhrLmlkLFxyXG4gICAgICBwdWJsaWNEYXRhU2lnLFxyXG4gICAgICBwdWJsaWNTZWFyY2hhYmxlU2lnLFxyXG4gICAgICBwbGFpbkRhdGFTaWcsXHJcbiAgICB9O1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,74 @@
1
+ import { __awaiter } from "tslib";
2
+ import { HttpClient } from '@angular/common/http';
3
+ import { Injectable, Inject } from '@angular/core';
4
+ import { LR_CONFIG } from '../life-ready.config';
5
+ import { LifeReadyAuthService } from '../auth/life-ready-auth.service';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "../life-ready.config";
8
+ import * as i2 from "@angular/common/http";
9
+ import * as i3 from "../auth/life-ready-auth.service";
10
+ export class FileService {
11
+ constructor(config, http, lrAuth) {
12
+ this.config = config;
13
+ this.http = http;
14
+ this.lrAuth = lrAuth;
15
+ }
16
+ downloadEncryptedFile(fileStateNodeId) {
17
+ return __awaiter(this, void 0, void 0, function* () {
18
+ return JSON.parse(yield this.downloadEncryptedFile2(fileStateNodeId));
19
+ });
20
+ }
21
+ downloadEncryptedFile2(fileStateNodeId) {
22
+ return __awaiter(this, void 0, void 0, function* () {
23
+ const url = `${this.config.apiUrl}files/download/?file_state_node_id=${fileStateNodeId}`;
24
+ const content = yield this.http
25
+ .get(url, {
26
+ responseType: 'text',
27
+ headers: {
28
+ Authorization: `Bearer ${(yield this.lrAuth.getUser()).getAccessJwtToken()}`,
29
+ },
30
+ })
31
+ .toPromise();
32
+ return content;
33
+ });
34
+ }
35
+ loadFile(file) {
36
+ return __awaiter(this, void 0, void 0, function* () {
37
+ return new Promise((resolve, reject) => {
38
+ const reader = new FileReader();
39
+ reader.onload = () => {
40
+ // OK to type cast here since we are using readAsArrayBuffer.
41
+ resolve(reader.result);
42
+ };
43
+ reader.readAsArrayBuffer(file);
44
+ });
45
+ });
46
+ }
47
+ uploadEncryptedFile(options) {
48
+ return __awaiter(this, void 0, void 0, function* () {
49
+ const { encryptedContent, fileName } = options;
50
+ const formData = new FormData();
51
+ formData.append('content', new Blob([encryptedContent]), fileName);
52
+ const { content_resource } = yield this.http
53
+ .post(`${this.config.apiUrl}files/upload/`, formData, {
54
+ headers: {
55
+ Authorization: `Bearer ${(yield this.lrAuth.getUser()).getAccessJwtToken()}`,
56
+ },
57
+ })
58
+ .toPromise();
59
+ return content_resource;
60
+ });
61
+ }
62
+ }
63
+ FileService.ɵprov = i0.ɵɵdefineInjectable({ factory: function FileService_Factory() { return new FileService(i0.ɵɵinject(i1.LR_CONFIG), i0.ɵɵinject(i2.HttpClient), i0.ɵɵinject(i3.LifeReadyAuthService)); }, token: FileService, providedIn: "root" });
64
+ FileService.decorators = [
65
+ { type: Injectable, args: [{
66
+ providedIn: 'root',
67
+ },] }
68
+ ];
69
+ FileService.ctorParameters = () => [
70
+ { type: undefined, decorators: [{ type: Inject, args: [LR_CONFIG,] }] },
71
+ { type: HttpClient },
72
+ { type: LifeReadyAuthService }
73
+ ];
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IkM6L1Byb2plY3RzL3Rlc3QvcHJvamVjdHMvY29yZS9zcmMvIiwic291cmNlcyI6WyJsaWIvYXBpL2ZpbGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxTQUFTLEVBQW1CLE1BQU0sc0JBQXNCLENBQUM7QUFDbEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUNBQWlDLENBQUM7Ozs7O0FBY3ZFLE1BQU0sT0FBTyxXQUFXO0lBQ3RCLFlBQzZCLE1BQXVCLEVBQzFDLElBQWdCLEVBQ2hCLE1BQTRCO1FBRlQsV0FBTSxHQUFOLE1BQU0sQ0FBaUI7UUFDMUMsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixXQUFNLEdBQU4sTUFBTSxDQUFzQjtJQUNuQyxDQUFDO0lBRUUscUJBQXFCLENBQUMsZUFBdUI7O1lBQ2pELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO1FBQ3hFLENBQUM7S0FBQTtJQUVLLHNCQUFzQixDQUFDLGVBQXVCOztZQUNsRCxNQUFNLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxzQ0FBc0MsZUFBZSxFQUFFLENBQUM7WUFFekYsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSTtpQkFDNUIsR0FBRyxDQUFDLEdBQUcsRUFBRTtnQkFDUixZQUFZLEVBQUUsTUFBTTtnQkFDcEIsT0FBTyxFQUFFO29CQUNQLGFBQWEsRUFBRSxVQUFVLENBQ3ZCLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FDNUIsQ0FBQyxpQkFBaUIsRUFBRSxFQUFFO2lCQUN4QjthQUNGLENBQUM7aUJBQ0QsU0FBUyxFQUFFLENBQUM7WUFFZixPQUFPLE9BQU8sQ0FBQztRQUNqQixDQUFDO0tBQUE7SUFFSyxRQUFRLENBQUMsSUFBVTs7WUFDdkIsT0FBTyxJQUFJLE9BQU8sQ0FBYyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtnQkFDbEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztnQkFDaEMsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUU7b0JBQ25CLDZEQUE2RDtvQkFDN0QsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFxQixDQUFDLENBQUM7Z0JBQ3hDLENBQUMsQ0FBQztnQkFDRixNQUFNLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDakMsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO0tBQUE7SUFFSyxtQkFBbUIsQ0FDdkIsT0FBbUM7O1lBRW5DLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsR0FBRyxPQUFPLENBQUM7WUFFL0MsTUFBTSxRQUFRLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNoQyxRQUFRLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxJQUFJLElBQUksQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUVuRSxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJO2lCQUN6QyxJQUFJLENBQ0gsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sZUFBZSxFQUNwQyxRQUFRLEVBQ1I7Z0JBQ0UsT0FBTyxFQUFFO29CQUNQLGFBQWEsRUFBRSxVQUFVLENBQ3ZCLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FDNUIsQ0FBQyxpQkFBaUIsRUFBRSxFQUFFO2lCQUN4QjthQUNGLENBQ0Y7aUJBQ0EsU0FBUyxFQUFFLENBQUM7WUFFZixPQUFPLGdCQUFnQixDQUFDO1FBQzFCLENBQUM7S0FBQTs7OztZQWpFRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7Ozs0Q0FHSSxNQUFNLFNBQUMsU0FBUztZQW5CWixVQUFVO1lBR1Ysb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IExSX0NPTkZJRywgTGlmZVJlYWR5Q29uZmlnIH0gZnJvbSAnLi4vbGlmZS1yZWFkeS5jb25maWcnO1xyXG5pbXBvcnQgeyBMaWZlUmVhZHlBdXRoU2VydmljZSB9IGZyb20gJy4uL2F1dGgvbGlmZS1yZWFkeS1hdXRoLnNlcnZpY2UnO1xyXG5cclxuZXhwb3J0IHR5cGUgRmlsZUNvbnRlbnRDb250ZXh0ID0gJ0ZJTEVfU1RBVEUnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBVcGxvYWRFbmNyeXB0ZWRGaWxlT3B0aW9ucyB7XHJcbiAgZW5jcnlwdGVkQ29udGVudDogc3RyaW5nO1xyXG4gIC8vIFRPRE8gQWRkIGluIHRoZSBjb250ZXh0IGZpZWxkIGFuZCBtYWtlIGl0IG1hbmRhdG9yeVxyXG4gIC8vIGNvbnRleHQ6IEZpbGVDb250ZW50Q29udGV4dDtcclxuICBmaWxlTmFtZT86IHN0cmluZztcclxufVxyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEZpbGVTZXJ2aWNlIHtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBJbmplY3QoTFJfQ09ORklHKSBwcml2YXRlIGNvbmZpZzogTGlmZVJlYWR5Q29uZmlnLFxyXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSBsckF1dGg6IExpZmVSZWFkeUF1dGhTZXJ2aWNlXHJcbiAgKSB7fVxyXG5cclxuICBhc3luYyBkb3dubG9hZEVuY3J5cHRlZEZpbGUoZmlsZVN0YXRlTm9kZUlkOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgcmV0dXJuIEpTT04ucGFyc2UoYXdhaXQgdGhpcy5kb3dubG9hZEVuY3J5cHRlZEZpbGUyKGZpbGVTdGF0ZU5vZGVJZCkpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZG93bmxvYWRFbmNyeXB0ZWRGaWxlMihmaWxlU3RhdGVOb2RlSWQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmNvbmZpZy5hcGlVcmx9ZmlsZXMvZG93bmxvYWQvP2ZpbGVfc3RhdGVfbm9kZV9pZD0ke2ZpbGVTdGF0ZU5vZGVJZH1gO1xyXG5cclxuICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCB0aGlzLmh0dHBcclxuICAgICAgLmdldCh1cmwsIHtcclxuICAgICAgICByZXNwb25zZVR5cGU6ICd0ZXh0JyxcclxuICAgICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgICBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7KFxyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLmxyQXV0aC5nZXRVc2VyKClcclxuICAgICAgICAgICkuZ2V0QWNjZXNzSnd0VG9rZW4oKX1gLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pXHJcbiAgICAgIC50b1Byb21pc2UoKTtcclxuXHJcbiAgICByZXR1cm4gY29udGVudDtcclxuICB9XHJcblxyXG4gIGFzeW5jIGxvYWRGaWxlKGZpbGU6IEZpbGUpOiBQcm9taXNlPEFycmF5QnVmZmVyPiB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2U8QXJyYXlCdWZmZXI+KChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuICAgICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHtcclxuICAgICAgICAvLyBPSyB0byB0eXBlIGNhc3QgaGVyZSBzaW5jZSB3ZSBhcmUgdXNpbmcgcmVhZEFzQXJyYXlCdWZmZXIuXHJcbiAgICAgICAgcmVzb2x2ZShyZWFkZXIucmVzdWx0IGFzIEFycmF5QnVmZmVyKTtcclxuICAgICAgfTtcclxuICAgICAgcmVhZGVyLnJlYWRBc0FycmF5QnVmZmVyKGZpbGUpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyB1cGxvYWRFbmNyeXB0ZWRGaWxlKFxyXG4gICAgb3B0aW9uczogVXBsb2FkRW5jcnlwdGVkRmlsZU9wdGlvbnNcclxuICApOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgY29uc3QgeyBlbmNyeXB0ZWRDb250ZW50LCBmaWxlTmFtZSB9ID0gb3B0aW9ucztcclxuXHJcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgZm9ybURhdGEuYXBwZW5kKCdjb250ZW50JywgbmV3IEJsb2IoW2VuY3J5cHRlZENvbnRlbnRdKSwgZmlsZU5hbWUpO1xyXG5cclxuICAgIGNvbnN0IHsgY29udGVudF9yZXNvdXJjZSB9ID0gYXdhaXQgdGhpcy5odHRwXHJcbiAgICAgIC5wb3N0PHsgY29udGVudF9yZXNvdXJjZSB9PihcclxuICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlVcmx9ZmlsZXMvdXBsb2FkL2AsXHJcbiAgICAgICAgZm9ybURhdGEsXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICAgICBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7KFxyXG4gICAgICAgICAgICAgIGF3YWl0IHRoaXMubHJBdXRoLmdldFVzZXIoKVxyXG4gICAgICAgICAgICApLmdldEFjY2Vzc0p3dFRva2VuKCl9YCxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfVxyXG4gICAgICApXHJcbiAgICAgIC50b1Byb21pc2UoKTtcclxuXHJcbiAgICByZXR1cm4gY29udGVudF9yZXNvdXJjZTtcclxuICB9XHJcbn1cclxuIl19