@lifeready/core 1.0.1 → 1.0.3

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 (379) hide show
  1. package/bundles/lifeready-core.umd.js +15939 -0
  2. package/bundles/lifeready-core.umd.js.map +1 -0
  3. package/bundles/lifeready-core.umd.min.js +16 -0
  4. package/bundles/lifeready-core.umd.min.js.map +1 -0
  5. package/esm2015/lib/_common/ast.js +40 -0
  6. package/esm2015/lib/_common/deferred-promise.js +24 -0
  7. package/esm2015/lib/_common/exceptions.js +157 -0
  8. package/esm2015/lib/_common/queries.gql.js +190 -0
  9. package/esm2015/lib/_common/run-outside-angular.js +79 -0
  10. package/esm2015/lib/_common/types.js +1 -0
  11. package/esm2015/lib/_common/utils.js +44 -0
  12. package/esm2015/lib/api/contact-card.gql.js +79 -0
  13. package/esm2015/lib/api/contact-card.service.js +154 -0
  14. package/esm2015/lib/api/contact-card2.gql.js +60 -0
  15. package/esm2015/lib/api/contact-card2.service.js +103 -0
  16. package/esm2015/lib/api/file.service.js +74 -0
  17. package/esm2015/lib/api/item2.gql.js +110 -0
  18. package/esm2015/lib/api/item2.service.js +311 -0
  19. package/esm2015/lib/api/key-exchange.gql.js +188 -0
  20. package/esm2015/lib/api/key-exchange.service.js +442 -0
  21. package/esm2015/lib/api/key-exchange.types.js +18 -0
  22. package/esm2015/lib/api/key-exchange2.gql.js +171 -0
  23. package/esm2015/lib/api/key-exchange2.service.js +479 -0
  24. package/esm2015/lib/api/lock.gql.js +40 -0
  25. package/esm2015/lib/api/lock.service.js +64 -0
  26. package/esm2015/lib/api/lr-apollo.service.js +46 -0
  27. package/esm2015/lib/api/lr-graphql/index.js +6 -0
  28. package/esm2015/lib/api/lr-graphql/lr-graphql.service.js +155 -0
  29. package/esm2015/lib/api/lr-graphql/lr-merged-mutation.js +213 -0
  30. package/esm2015/lib/api/lr-graphql/lr-mutation-base.js +51 -0
  31. package/esm2015/lib/api/lr-graphql/lr-mutation.js +48 -0
  32. package/esm2015/lib/api/lr-graphql/lr.service.js +18 -0
  33. package/esm2015/lib/api/message.service.js +138 -0
  34. package/esm2015/lib/api/persist.service.js +181 -0
  35. package/esm2015/lib/api/query-processor/common-processors.service.js +93 -0
  36. package/esm2015/lib/api/query-processor/index.js +3 -0
  37. package/esm2015/lib/api/query-processor/query-processor.service.js +192 -0
  38. package/esm2015/lib/api/query-processor/tp-password-reset-processor.service.js +109 -0
  39. package/esm2015/lib/api/shared-contact-card.service.js +119 -0
  40. package/esm2015/lib/api/shared-contact-card2.gql.js +41 -0
  41. package/esm2015/lib/api/shared-contact-card2.service.js +117 -0
  42. package/esm2015/lib/api/time.service.js +146 -0
  43. package/esm2015/lib/api/types/graphql.types.js +7 -0
  44. package/esm2015/lib/api/types/index.js +3 -0
  45. package/esm2015/lib/api/types/lr-graphql.types.js +71 -0
  46. package/esm2015/lib/auth/auth.config.js +57 -0
  47. package/esm2015/lib/auth/auth.gql.js +48 -0
  48. package/esm2015/lib/auth/auth.types.js +27 -0
  49. package/esm2015/lib/auth/idle.service.js +168 -0
  50. package/esm2015/lib/auth/idle.types.js +7 -0
  51. package/esm2015/lib/auth/lbop.service.js +355 -0
  52. package/esm2015/lib/auth/life-ready-auth.service.js +500 -0
  53. package/esm2015/lib/auth/password.service.js +320 -0
  54. package/esm2015/lib/auth/register.service.js +172 -0
  55. package/esm2015/lib/auth/two-factor.service.js +74 -0
  56. package/esm2015/lib/category/category-meta.service.js +99 -0
  57. package/esm2015/lib/category/category.gql.js +406 -0
  58. package/esm2015/lib/category/category.service.js +390 -0
  59. package/esm2015/lib/category/category.types.js +29 -0
  60. package/esm2015/lib/cryptography/cryptography.types.js +11 -0
  61. package/esm2015/lib/cryptography/encryption.service.js +189 -0
  62. package/esm2015/lib/cryptography/key-factory.service.js +237 -0
  63. package/esm2015/lib/cryptography/key-graph.service.js +280 -0
  64. package/esm2015/lib/cryptography/key-meta.service.js +200 -0
  65. package/esm2015/lib/cryptography/key.service.js +124 -0
  66. package/esm2015/lib/cryptography/slip39.service.js +169 -0
  67. package/esm2015/lib/cryptography/web-crypto.service.js +29 -0
  68. package/esm2015/lib/life-ready.config.js +84 -0
  69. package/esm2015/lib/life-ready.module.js +74 -0
  70. package/esm2015/lib/plan/plan.gql.js +123 -0
  71. package/esm2015/lib/plan/plan.service.js +149 -0
  72. package/esm2015/lib/plan/plan.types.js +11 -0
  73. package/esm2015/lib/record/record-attachment.service.js +101 -0
  74. package/esm2015/lib/record/record.gql.js +179 -0
  75. package/esm2015/lib/record/record.service.js +206 -0
  76. package/esm2015/lib/record/record.types.js +15 -0
  77. package/esm2015/lib/record-type/record-type.service.js +75 -0
  78. package/esm2015/lib/record-type/record-type.types.js +28 -0
  79. package/esm2015/lib/scenario/approvals/scenario-approval.gql.js +105 -0
  80. package/esm2015/lib/scenario/approvals/scenario-approval.types.js +1 -0
  81. package/esm2015/lib/scenario/approvals/scenario-approver.service.js +300 -0
  82. package/esm2015/lib/scenario/claimants/scenario-claimant.gql.js +52 -0
  83. package/esm2015/lib/scenario/claimants/scenario-claimant.service.js +97 -0
  84. package/esm2015/lib/scenario/claimants/scenario-claimant.types.js +1 -0
  85. package/esm2015/lib/scenario/receivers/scenario-receiver.gql.js +150 -0
  86. package/esm2015/lib/scenario/receivers/scenario-receiver.service.js +229 -0
  87. package/esm2015/lib/scenario/receivers/scenario-receiver.types.js +1 -0
  88. package/esm2015/lib/scenario/scenario-setup.service.js +269 -0
  89. package/esm2015/lib/scenario/scenario.gql.js +368 -0
  90. package/esm2015/lib/scenario/scenario.service.js +611 -0
  91. package/esm2015/lib/scenario/scenario.types.js +64 -0
  92. package/esm2015/lib/search/search.gql.js +62 -0
  93. package/esm2015/lib/search/search.service.js +156 -0
  94. package/esm2015/lib/search/search.types.js +6 -0
  95. package/esm2015/lib/trusted-parties/tp-password-reset-request.service.js +112 -0
  96. package/esm2015/lib/trusted-parties/tp-password-reset-user.service.js +129 -0
  97. package/esm2015/lib/trusted-parties/tp-password-reset.constants.js +4 -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 +299 -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 +13314 -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/{src/lib/_common/types.ts → lib/_common/types.d.ts} +3 -6
  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/lr-graphql.service.d.ts +60 -0
  139. package/lib/api/lr-graphql/lr-merged-mutation.d.ts +27 -0
  140. package/lib/api/lr-graphql/lr-mutation-base.d.ts +28 -0
  141. package/lib/api/lr-graphql/lr-mutation.d.ts +8 -0
  142. package/lib/api/lr-graphql/lr.service.d.ts +9 -0
  143. package/lib/api/message.service.d.ts +58 -0
  144. package/lib/api/persist.service.d.ts +31 -0
  145. package/lib/api/query-processor/common-processors.service.d.ts +36 -0
  146. package/lib/api/query-processor/query-processor.service.d.ts +18 -0
  147. package/lib/api/query-processor/tp-password-reset-processor.service.d.ts +15 -0
  148. package/lib/api/shared-contact-card.service.d.ts +33 -0
  149. package/lib/api/shared-contact-card2.gql.d.ts +36 -0
  150. package/lib/api/shared-contact-card2.service.d.ts +45 -0
  151. package/lib/api/time.service.d.ts +16 -0
  152. package/lib/api/types/graphql.types.d.ts +29 -0
  153. package/lib/api/types/lr-graphql.types.d.ts +385 -0
  154. package/lib/auth/auth.config.d.ts +5 -0
  155. package/lib/auth/auth.gql.d.ts +15 -0
  156. package/lib/auth/auth.types.d.ts +66 -0
  157. package/lib/auth/idle.service.d.ts +40 -0
  158. package/lib/auth/idle.types.d.ts +10 -0
  159. package/lib/auth/lbop.service.d.ts +91 -0
  160. package/lib/auth/life-ready-auth.service.d.ts +59 -0
  161. package/lib/auth/password.service.d.ts +78 -0
  162. package/lib/auth/register.service.d.ts +25 -0
  163. package/lib/auth/two-factor.service.d.ts +15 -0
  164. package/lib/category/category-meta.service.d.ts +23 -0
  165. package/lib/category/category.gql.d.ts +45 -0
  166. package/lib/category/category.service.d.ts +67 -0
  167. package/lib/category/category.types.d.ts +79 -0
  168. package/lib/cryptography/cryptography.types.d.ts +83 -0
  169. package/lib/cryptography/encryption.service.d.ts +41 -0
  170. package/lib/cryptography/key-factory.service.d.ts +38 -0
  171. package/lib/cryptography/key-graph.service.d.ts +33 -0
  172. package/lib/cryptography/key-meta.service.d.ts +44 -0
  173. package/lib/cryptography/key.service.d.ts +36 -0
  174. package/lib/cryptography/slip39.service.d.ts +43 -0
  175. package/lib/cryptography/web-crypto.service.d.ts +5 -0
  176. package/lib/life-ready.config.d.ts +14 -0
  177. package/lib/life-ready.module.d.ts +5 -0
  178. package/lib/plan/plan.gql.d.ts +11 -0
  179. package/lib/plan/plan.service.d.ts +33 -0
  180. package/lib/plan/plan.types.d.ts +31 -0
  181. package/lib/record/record-attachment.service.d.ts +16 -0
  182. package/lib/record/record.gql.d.ts +14 -0
  183. package/lib/record/record.service.d.ts +25 -0
  184. package/lib/record/record.types.d.ts +57 -0
  185. package/lib/record-type/record-type.service.d.ts +11 -0
  186. package/lib/record-type/record-type.types.d.ts +50 -0
  187. package/lib/scenario/approvals/scenario-approval.gql.d.ts +7 -0
  188. package/lib/scenario/approvals/scenario-approval.types.d.ts +63 -0
  189. package/lib/scenario/approvals/scenario-approver.service.d.ts +32 -0
  190. package/lib/scenario/claimants/scenario-claimant.gql.d.ts +5 -0
  191. package/lib/scenario/claimants/scenario-claimant.service.d.ts +17 -0
  192. package/lib/scenario/claimants/scenario-claimant.types.d.ts +18 -0
  193. package/lib/scenario/receivers/scenario-receiver.gql.d.ts +8 -0
  194. package/lib/scenario/receivers/scenario-receiver.service.d.ts +30 -0
  195. package/lib/scenario/receivers/scenario-receiver.types.d.ts +54 -0
  196. package/lib/scenario/scenario-setup.service.d.ts +22 -0
  197. package/lib/scenario/scenario.gql.d.ts +34 -0
  198. package/lib/scenario/scenario.service.d.ts +58 -0
  199. package/lib/scenario/scenario.types.d.ts +217 -0
  200. package/lib/search/search.gql.d.ts +1 -0
  201. package/lib/search/search.service.d.ts +25 -0
  202. package/lib/search/search.types.d.ts +20 -0
  203. package/lib/trusted-parties/tp-password-reset-request.service.d.ts +20 -0
  204. package/lib/trusted-parties/tp-password-reset-user.service.d.ts +35 -0
  205. package/lib/trusted-parties/tp-password-reset.constants.d.ts +3 -0
  206. package/lib/trusted-parties/tp-password-reset.gql.d.ts +218 -0
  207. package/lib/trusted-parties/tp-password-reset.service.d.ts +130 -0
  208. package/lib/trusted-parties/trusted-party.gql.d.ts +9 -0
  209. package/lib/trusted-parties/trusted-party.service.d.ts +44 -0
  210. package/lib/trusted-parties/trusted-party.types.d.ts +102 -0
  211. package/lib/trusted-parties/trusted-party2.gql.d.ts +79 -0
  212. package/lib/trusted-parties/trusted-party2.service.d.ts +114 -0
  213. package/lib/users/profile-details.service.d.ts +21 -0
  214. package/lib/users/profile.gql.d.ts +11 -0
  215. package/lib/users/profile.service.d.ts +35 -0
  216. package/lib/users/profile.types.d.ts +96 -0
  217. package/lib/users/user.gql.d.ts +9 -0
  218. package/lib/users/user.service.d.ts +12 -0
  219. package/lib/users/user.types.d.ts +23 -0
  220. package/lifeready-core.d.ts +9 -0
  221. package/lifeready-core.metadata.json +1 -0
  222. package/package.json +29 -21
  223. package/{src/public-api.ts → public-api.d.ts} +0 -19
  224. package/karma.conf.js +0 -32
  225. package/ng-package.json +0 -26
  226. package/src/lib/_common/ast.ts +0 -75
  227. package/src/lib/_common/deferred-promise.ts +0 -35
  228. package/src/lib/_common/exceptions.ts +0 -189
  229. package/src/lib/_common/queries.gql.ts +0 -200
  230. package/src/lib/_common/run-outside-angular.ts +0 -125
  231. package/src/lib/_common/tests.ts +0 -82
  232. package/src/lib/_common/utils.ts +0 -57
  233. package/src/lib/api/api-mutation.spec.ts +0 -547
  234. package/src/lib/api/api-query.spec.ts +0 -40
  235. package/src/lib/api/contact-card.gql.ts +0 -85
  236. package/src/lib/api/contact-card.service.spec.ts +0 -249
  237. package/src/lib/api/contact-card.service.ts +0 -228
  238. package/src/lib/api/contact-card2.gql.ts +0 -93
  239. package/src/lib/api/contact-card2.service.spec.ts +0 -297
  240. package/src/lib/api/contact-card2.service.ts +0 -139
  241. package/src/lib/api/file.service.spec.ts +0 -14
  242. package/src/lib/api/file.service.ts +0 -81
  243. package/src/lib/api/item2.gql.ts +0 -211
  244. package/src/lib/api/item2.service.spec.ts +0 -1043
  245. package/src/lib/api/item2.service.ts +0 -481
  246. package/src/lib/api/key-exchange.gql.ts +0 -196
  247. package/src/lib/api/key-exchange.service.spec.ts +0 -470
  248. package/src/lib/api/key-exchange.service.ts +0 -731
  249. package/src/lib/api/key-exchange.types.ts +0 -235
  250. package/src/lib/api/key-exchange2.gql.ts +0 -310
  251. package/src/lib/api/key-exchange2.service.spec.ts +0 -892
  252. package/src/lib/api/key-exchange2.service.ts +0 -875
  253. package/src/lib/api/lock.gql.ts +0 -67
  254. package/src/lib/api/lock.service.spec.ts +0 -549
  255. package/src/lib/api/lock.service.ts +0 -57
  256. package/src/lib/api/lr-apollo.service.spec.ts +0 -27
  257. package/src/lib/api/lr-apollo.service.ts +0 -43
  258. package/src/lib/api/lr-graphql/lr-graphql.service.ts +0 -313
  259. package/src/lib/api/lr-graphql/lr-merged-mutation.ts +0 -377
  260. package/src/lib/api/lr-graphql/lr-mutation-base.ts +0 -67
  261. package/src/lib/api/lr-graphql/lr-mutation.ts +0 -74
  262. package/src/lib/api/lr-graphql/lr.service.ts +0 -28
  263. package/src/lib/api/message.service.spec.ts +0 -20
  264. package/src/lib/api/message.service.ts +0 -210
  265. package/src/lib/api/persist.service.spec.ts +0 -209
  266. package/src/lib/api/persist.service.ts +0 -220
  267. package/src/lib/api/query-processor/common-processors.service.ts +0 -148
  268. package/src/lib/api/query-processor/query-processor.service.ts +0 -240
  269. package/src/lib/api/query-processor/tp-password-reset-processor.service.ts +0 -177
  270. package/src/lib/api/shared-contact-card.service.ts +0 -156
  271. package/src/lib/api/shared-contact-card2.gql.ts +0 -76
  272. package/src/lib/api/shared-contact-card2.service.ts +0 -154
  273. package/src/lib/api/time.service.spec.ts +0 -48
  274. package/src/lib/api/time.service.ts +0 -155
  275. package/src/lib/api/types/graphql.types.ts +0 -48
  276. package/src/lib/api/types/lr-graphql.types.ts +0 -467
  277. package/src/lib/auth/auth.config.ts +0 -83
  278. package/src/lib/auth/auth.gql.ts +0 -62
  279. package/src/lib/auth/auth.types.ts +0 -79
  280. package/src/lib/auth/idle.service.spec.ts +0 -119
  281. package/src/lib/auth/idle.service.ts +0 -208
  282. package/src/lib/auth/idle.types.ts +0 -11
  283. package/src/lib/auth/lbop.service.spec.ts +0 -56
  284. package/src/lib/auth/lbop.service.ts +0 -539
  285. package/src/lib/auth/life-ready-auth.service.spec.ts +0 -70
  286. package/src/lib/auth/life-ready-auth.service.ts +0 -454
  287. package/src/lib/auth/password.service.spec.ts +0 -51
  288. package/src/lib/auth/password.service.ts +0 -438
  289. package/src/lib/auth/register.service.spec.ts +0 -31
  290. package/src/lib/auth/register.service.ts +0 -181
  291. package/src/lib/auth/two-factor.service.spec.ts +0 -21
  292. package/src/lib/auth/two-factor.service.ts +0 -69
  293. package/src/lib/category/category-meta.service.spec.ts +0 -28
  294. package/src/lib/category/category-meta.service.ts +0 -125
  295. package/src/lib/category/category.gql.ts +0 -449
  296. package/src/lib/category/category.service.spec.ts +0 -26
  297. package/src/lib/category/category.service.ts +0 -498
  298. package/src/lib/category/category.types.ts +0 -89
  299. package/src/lib/cryptography/cryptography.types.ts +0 -108
  300. package/src/lib/cryptography/encryption.service.spec.ts +0 -125
  301. package/src/lib/cryptography/encryption.service.ts +0 -243
  302. package/src/lib/cryptography/key-factory.service.spec.ts +0 -15
  303. package/src/lib/cryptography/key-factory.service.ts +0 -303
  304. package/src/lib/cryptography/key-graph.service.spec.ts +0 -16
  305. package/src/lib/cryptography/key-graph.service.ts +0 -354
  306. package/src/lib/cryptography/key-meta.service.spec.ts +0 -40
  307. package/src/lib/cryptography/key-meta.service.ts +0 -254
  308. package/src/lib/cryptography/key.service.spec.ts +0 -16
  309. package/src/lib/cryptography/key.service.ts +0 -154
  310. package/src/lib/cryptography/slip39.service.spec.ts +0 -44
  311. package/src/lib/cryptography/slip39.service.ts +0 -204
  312. package/src/lib/cryptography/web-crypto.service.ts +0 -22
  313. package/src/lib/life-ready.config.ts +0 -127
  314. package/src/lib/life-ready.module.ts +0 -81
  315. package/src/lib/plan/plan.gql.ts +0 -133
  316. package/src/lib/plan/plan.service.spec.ts +0 -294
  317. package/src/lib/plan/plan.service.ts +0 -198
  318. package/src/lib/plan/plan.types.ts +0 -37
  319. package/src/lib/record/record-attachment.service.spec.ts +0 -31
  320. package/src/lib/record/record-attachment.service.ts +0 -101
  321. package/src/lib/record/record.gql.ts +0 -192
  322. package/src/lib/record/record.service.spec.ts +0 -598
  323. package/src/lib/record/record.service.ts +0 -236
  324. package/src/lib/record/record.types.ts +0 -86
  325. package/src/lib/record-type/record-type.service.spec.ts +0 -16
  326. package/src/lib/record-type/record-type.service.ts +0 -71
  327. package/src/lib/record-type/record-type.types.ts +0 -58
  328. package/src/lib/scenario/approvals/scenario-approval.gql.ts +0 -112
  329. package/src/lib/scenario/approvals/scenario-approval.types.ts +0 -85
  330. package/src/lib/scenario/approvals/scenario-approver.service.spec.ts +0 -16
  331. package/src/lib/scenario/approvals/scenario-approver.service.ts +0 -422
  332. package/src/lib/scenario/claimants/scenario-claimant.gql.ts +0 -56
  333. package/src/lib/scenario/claimants/scenario-claimant.service.spec.ts +0 -16
  334. package/src/lib/scenario/claimants/scenario-claimant.service.ts +0 -100
  335. package/src/lib/scenario/claimants/scenario-claimant.types.ts +0 -21
  336. package/src/lib/scenario/receivers/scenario-receiver.gql.ts +0 -157
  337. package/src/lib/scenario/receivers/scenario-receiver.service.spec.ts +0 -16
  338. package/src/lib/scenario/receivers/scenario-receiver.service.ts +0 -278
  339. package/src/lib/scenario/receivers/scenario-receiver.types.ts +0 -66
  340. package/src/lib/scenario/scenario-setup.service.spec.ts +0 -22
  341. package/src/lib/scenario/scenario-setup.service.ts +0 -369
  342. package/src/lib/scenario/scenario.gql.ts +0 -404
  343. package/src/lib/scenario/scenario.service.spec.ts +0 -1586
  344. package/src/lib/scenario/scenario.service.ts +0 -811
  345. package/src/lib/scenario/scenario.types.ts +0 -258
  346. package/src/lib/search/search.gql.ts +0 -62
  347. package/src/lib/search/search.service.spec.ts +0 -57
  348. package/src/lib/search/search.service.ts +0 -174
  349. package/src/lib/search/search.types.ts +0 -24
  350. package/src/lib/trusted-parties/tp-password-reset-request.service.ts +0 -140
  351. package/src/lib/trusted-parties/tp-password-reset-user.service.ts +0 -359
  352. package/src/lib/trusted-parties/tp-password-reset.gql.ts +0 -453
  353. package/src/lib/trusted-parties/tp-password-reset.service.spec.ts +0 -602
  354. package/src/lib/trusted-parties/tp-password-reset.service.ts +0 -482
  355. package/src/lib/trusted-parties/trusted-party.gql.ts +0 -159
  356. package/src/lib/trusted-parties/trusted-party.service.spec.ts +0 -1008
  357. package/src/lib/trusted-parties/trusted-party.service.ts +0 -394
  358. package/src/lib/trusted-parties/trusted-party.types.ts +0 -119
  359. package/src/lib/trusted-parties/trusted-party2.gql.ts +0 -165
  360. package/src/lib/trusted-parties/trusted-party2.service.spec.ts +0 -1782
  361. package/src/lib/trusted-parties/trusted-party2.service.ts +0 -272
  362. package/src/lib/users/profile-details.service.spec.ts +0 -45
  363. package/src/lib/users/profile-details.service.ts +0 -278
  364. package/src/lib/users/profile.gql.ts +0 -108
  365. package/src/lib/users/profile.service.spec.ts +0 -97
  366. package/src/lib/users/profile.service.ts +0 -224
  367. package/src/lib/users/profile.types.ts +0 -101
  368. package/src/lib/users/user.gql.ts +0 -69
  369. package/src/lib/users/user.service.spec.ts +0 -161
  370. package/src/lib/users/user.service.ts +0 -72
  371. package/src/lib/users/user.types.ts +0 -27
  372. package/src/test.ts +0 -21
  373. package/tsconfig.lib.json +0 -21
  374. package/tsconfig.lib.prod.json +0 -6
  375. package/tsconfig.spec.json +0 -10
  376. package/tslint.json +0 -17
  377. /package/{src/lib/api/lr-graphql/index.ts → lib/api/lr-graphql/index.d.ts} +0 -0
  378. /package/{src/lib/api/query-processor/index.ts → lib/api/query-processor/index.d.ts} +0 -0
  379. /package/{src/lib/api/types/index.ts → lib/api/types/index.d.ts} +0 -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFjdC1jYXJkLmdxbC5qcyIsInNvdXJjZVJvb3QiOiJDOi9Qcm9qZWN0cy9uZXdyZXBvL2tjLWNsaWVudC9wcm9qZWN0cy9jb3JlL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9hcGkvY29udGFjdC1jYXJkLmdxbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxHQUFHLE1BQU0sYUFBYSxDQUFDO0FBRTlCLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHOzs7Ozs7OztDQVFoQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsR0FBRyxDQUFBOzs7Ozs7O0lBTy9CLGlCQUFpQjs7RUFFbkIsYUFBYTtFQUNiLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxHQUFHLENBQUE7Ozs7Ozs7Ozs7VUFVL0IsaUJBQWlCOzs7O0lBSXZCLGFBQWE7RUFDZixDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsR0FBRyxDQUFBOzs7Ozs7O1VBTzdCLGlCQUFpQjs7OztJQUl2QixhQUFhO0VBQ2YsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLEdBQUcsQ0FBQTs7Ozs7O1FBTXBDLGlCQUFpQjs7O0VBR3ZCLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxHQUFHLENBQUE7Ozs7OztRQU1wQyxpQkFBaUI7OztFQUd2QixDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsR0FBRyxDQUFBOzs7Ozs7Q0FNM0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEtleUdyYXBoRmllbGQgfSBmcm9tICcuLi9fY29tbW9uL3F1ZXJpZXMuZ3FsJztcclxuaW1wb3J0IGdxbCBmcm9tICdncmFwaHFsLXRhZyc7XHJcblxyXG5leHBvcnQgY29uc3QgQ29udGFjdENhcmRGaWVsZHMgPSBgXHJcbmlkXHJcbnB1YmxpY0RhdGFcclxucHVibGljU2VhcmNoYWJsZVxyXG5jaXBoZXJEYXRhXHJcbmtleSB7XHJcbiAgaWRcclxufVxyXG5gO1xyXG5cclxuZXhwb3J0IGNvbnN0IENvbnRhY3RDYXJkUXVlcnkgPSBncWxgXHJcbnF1ZXJ5IENvbnRhY3RDYXJkUXVlcnkoXHJcbiRpZDogTHJSZWxheUlkSW5wdXQhXHJcbikge1xyXG5jb250YWN0Q2FyZCAoXHJcbiAgaWQ6ICRpZFxyXG4pIHtcclxuICAke0NvbnRhY3RDYXJkRmllbGRzfVxyXG59XHJcbiR7S2V5R3JhcGhGaWVsZH1cclxufWA7XHJcblxyXG5leHBvcnQgY29uc3QgU2VhcmNoQ29udGFjdENhcmRRdWVyeSA9IGdxbGBcclxucXVlcnkgU2VhcmNoQ29udGFjdENhcmRRdWVyeShcclxuICAkcHVibGljU2VhcmNoYWJsZTogTHJKU09ORmlsdGVyIVxyXG4pIHtcclxuICBzZWFyY2hDb250YWN0Q2FyZHMoXHJcbiAgICBwdWJsaWNTZWFyY2hhYmxlOiAkcHVibGljU2VhcmNoYWJsZVxyXG4gICAgb3JkZXJCeTogXCJjcmVhdGVkXCJcclxuICApIHtcclxuICAgIGVkZ2VzIHtcclxuICAgICAgbm9kZSB7XHJcbiAgICAgICAgJHtDb250YWN0Q2FyZEZpZWxkc31cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICAke0tleUdyYXBoRmllbGR9XHJcbn1gO1xyXG5cclxuZXhwb3J0IGNvbnN0IENvbnRhY3RDYXJkTGlzdFF1ZXJ5ID0gZ3FsYFxyXG5xdWVyeSBDb250YWN0Q2FyZExpc3RRdWVyeSB7XHJcbiAgY29udGFjdENhcmRzKFxyXG4gICAgb3JkZXJCeTogXCJjcmVhdGVkXCJcclxuICApIHtcclxuICAgIGVkZ2VzIHtcclxuICAgICAgbm9kZSB7XHJcbiAgICAgICAgJHtDb250YWN0Q2FyZEZpZWxkc31cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICAke0tleUdyYXBoRmllbGR9XHJcbn1gO1xyXG5cclxuZXhwb3J0IGNvbnN0IENyZWF0ZUNvbnRhY3RDYXJkTXV0YXRpb24gPSBncWxgXHJcbm11dGF0aW9uIENyZWF0ZUNvbnRhY3RDYXJkTXV0YXRpb24oXHJcbiAgJGlucHV0OiBDcmVhdGVDb250YWN0Q2FyZElucHV0IVxyXG4pIHtcclxuICBjcmVhdGVDb250YWN0Q2FyZChpbnB1dDogJGlucHV0KSB7XHJcbiAgICBjb250YWN0Q2FyZCB7XHJcbiAgICAgICR7Q29udGFjdENhcmRGaWVsZHN9XHJcbiAgICB9XHJcbiAgfVxyXG59YDtcclxuXHJcbmV4cG9ydCBjb25zdCBVcGRhdGVDb250YWN0Q2FyZE11dGF0aW9uID0gZ3FsYFxyXG5tdXRhdGlvbiBVcGRhdGVDb250YWN0Q2FyZE11dGF0aW9uKFxyXG4gICRpbnB1dDogVXBkYXRlQ29udGFjdENhcmRJbnB1dCFcclxuKSB7XHJcbiAgdXBkYXRlQ29udGFjdENhcmQoaW5wdXQ6ICRpbnB1dCkge1xyXG4gICAgY29udGFjdENhcmQge1xyXG4gICAgICAke0NvbnRhY3RDYXJkRmllbGRzfVxyXG4gICAgfVxyXG4gIH1cclxufWA7XHJcblxyXG5leHBvcnQgY29uc3QgRGVsZXRlQ29udGFjdENhcmRNdXRhdGlvbiA9IGdxbGBcclxuICBtdXRhdGlvbiBEZWxldGVDb250YWN0Q2FyZE11dGF0aW9uKCRpbnB1dDogRGVsZXRlQ29udGFjdENhcmRJbnB1dCEpIHtcclxuICAgIGRlbGV0ZUNvbnRhY3RDYXJkKGlucHV0OiAkaW5wdXQpIHtcclxuICAgICAgaWRcclxuICAgIH1cclxuICB9XHJcbmA7XHJcbiJdfQ==
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFjdC1jYXJkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiQzovUHJvamVjdHMvbmV3cmVwby9rYy1jbGllbnQvcHJvamVjdHMvY29yZS9zcmMvIiwic291cmNlcyI6WyJsaWIvYXBpL2NvbnRhY3QtY2FyZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsb0JBQW9CLEVBQ3BCLGdCQUFnQixFQUNoQix5QkFBeUIsRUFDekIseUJBQXlCLEVBQ3pCLHlCQUF5QixHQUMxQixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBRXhFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7Ozs7QUFjbEUsTUFBTSxPQUFPLFdBQVc7Q0FnQnZCO0FBZ0JELE1BQU0sT0FBTyxrQkFBa0I7SUFDN0IsWUFDVSxVQUE2QixFQUM3QixVQUFzQixFQUN0QixRQUF5QixFQUN6QixRQUF5QixFQUN6QixpQkFBb0MsRUFDcEMsY0FBOEI7UUFMOUIsZUFBVSxHQUFWLFVBQVUsQ0FBbUI7UUFDN0IsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUN6QixhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUN6QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtJQUNy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O1lBSGYsZUFBZTtZQURmLGlCQUFpQjtZQWVqQixjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIYXNLZXlHcmFwaCwgS2V5IH0gZnJvbSAnLi4vY3J5cHRvZ3JhcGh5L2NyeXB0b2dyYXBoeS50eXBlcyc7XHJcbmltcG9ydCB7IEVuY3J5cHRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vY3J5cHRvZ3JhcGh5L2VuY3J5cHRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IEtleUdyYXBoU2VydmljZSB9IGZyb20gJy4uL2NyeXB0b2dyYXBoeS9rZXktZ3JhcGguc2VydmljZSc7XHJcbmltcG9ydCB7IEtleVNlcnZpY2UgfSBmcm9tICcuLi9jcnlwdG9ncmFwaHkva2V5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBIYXNFZGdlcyB9IGZyb20gJy4uL19jb21tb24vdHlwZXMnO1xyXG5pbXBvcnQgeyBMckFwb2xsb1NlcnZpY2UgfSBmcm9tICcuL2xyLWFwb2xsby5zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuICBTZWFyY2hDb250YWN0Q2FyZFF1ZXJ5LFxyXG4gIENvbnRhY3RDYXJkTGlzdFF1ZXJ5LFxyXG4gIENvbnRhY3RDYXJkUXVlcnksXHJcbiAgQ3JlYXRlQ29udGFjdENhcmRNdXRhdGlvbixcclxuICBVcGRhdGVDb250YWN0Q2FyZE11dGF0aW9uLFxyXG4gIERlbGV0ZUNvbnRhY3RDYXJkTXV0YXRpb24sXHJcbn0gZnJvbSAnLi9jb250YWN0LWNhcmQuZ3FsJztcclxuaW1wb3J0IHsgS2V5RmFjdG9yeVNlcnZpY2UgfSBmcm9tICcuLi9jcnlwdG9ncmFwaHkva2V5LWZhY3Rvcnkuc2VydmljZSc7XHJcbmltcG9ydCB7IE1haW5Db250YWN0Q2FyZFBsYWluRmllbGRzIH0gZnJvbSAnLi4vdXNlcnMvcHJvZmlsZS50eXBlcyc7XHJcbmltcG9ydCB7IEtleU1ldGFTZXJ2aWNlIH0gZnJvbSAnLi4vY3J5cHRvZ3JhcGh5L2tleS1tZXRhLnNlcnZpY2UnO1xyXG5cclxuaW50ZXJmYWNlIENvbnRhY3RDYXJkUXVlcnkgZXh0ZW5kcyBIYXNLZXlHcmFwaCB7XHJcbiAgY29udGFjdENhcmQ6IENvbnRhY3RDYXJkO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgU2VhcmNoQ29udGFjdENhcmRRdWVyeSBleHRlbmRzIEhhc0tleUdyYXBoIHtcclxuICBzZWFyY2hDb250YWN0Q2FyZHM6IEhhc0VkZ2VzPENvbnRhY3RDYXJkPjtcclxufVxyXG5cclxuaW50ZXJmYWNlIENvbnRhY3RDYXJkTGlzdFF1ZXJ5IGV4dGVuZHMgSGFzS2V5R3JhcGgge1xyXG4gIGNvbnRhY3RDYXJkczogSGFzRWRnZXM8Q29udGFjdENhcmQ+O1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQ29udGFjdENhcmQge1xyXG4gIGlkOiBzdHJpbmc7XHJcbiAga2V5OiBLZXk7XHJcbiAgc2lnUHhrOiBLZXk7XHJcbiAgcHVibGljRGF0YTogc3RyaW5nO1xyXG4gIHB1YmxpY0RhdGFTaWc6IHN0cmluZztcclxuICBwdWJsaWNTZWFyY2hhYmxlOiBzdHJpbmc7XHJcbiAgcHVibGljU2VhcmNoYWJsZVNpZzogc3RyaW5nO1xyXG4gIHBsYWluRGF0YTogc3RyaW5nO1xyXG4gIHBsYWluRGF0YVNpZzogc3RyaW5nO1xyXG4gIGNpcGhlckRhdGE6IHN0cmluZztcclxuICAvLyBQYXJzZS9kZWNyeXB0ZWQgdmVyc2lvbnMgb2YgdGhlIGFib3ZlLlxyXG4gIHB1YmxpY0RhdGFKc29uOiBhbnk7XHJcbiAgcHVibGljU2VhcmNoYWJsZUpzb246IGFueTtcclxuICBwbGFpbkNpcGhlckRhdGFKc29uOiBhbnk7XHJcbiAgcGxhaW5EYXRhSnNvbjogYW55O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZUNvbnRhY3RDYXJkSW5wdXQge1xyXG4gIHB1YmxpY0RhdGFKc29uOiBhbnk7XHJcbiAgcHVibGljU2VhcmNoYWJsZUpzb246IGFueTtcclxuICBwbGFpbkNpcGhlckRhdGFKc29uOiBhbnk7XHJcbiAgcGxhaW5EYXRhSnNvbjogTWFpbkNvbnRhY3RDYXJkUGxhaW5GaWVsZHM7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgVXBkYXRlQ29udGFjdENhcmRJbnB1dCBleHRlbmRzIENyZWF0ZUNvbnRhY3RDYXJkSW5wdXQge1xyXG4gIGlkOiBzdHJpbmc7XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb250YWN0Q2FyZFNlcnZpY2Uge1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBrZXlGYWN0b3J5OiBLZXlGYWN0b3J5U2VydmljZSxcclxuICAgIHByaXZhdGUga2V5U2VydmljZTogS2V5U2VydmljZSxcclxuICAgIHByaXZhdGUgbHJBcG9sbG86IExyQXBvbGxvU2VydmljZSxcclxuICAgIHByaXZhdGUga2V5R3JhcGg6IEtleUdyYXBoU2VydmljZSxcclxuICAgIHByaXZhdGUgZW5jcnlwdGlvblNlcnZpY2U6IEVuY3J5cHRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBrZXlNZXRhU2VydmljZTogS2V5TWV0YVNlcnZpY2VcclxuICApIHt9XHJcblxyXG4gIGFzeW5jIGRlY3J5cHRDb250YWN0Q2FyZChjYzogQ29udGFjdENhcmQpOiBQcm9taXNlPENvbnRhY3RDYXJkPiB7XHJcbiAgICBjb25zdCByZXQgPSB7XHJcbiAgICAgIC4uLmNjLFxyXG4gICAgICBwdWJsaWNEYXRhSnNvbjogSlNPTi5wYXJzZShjYy5wdWJsaWNEYXRhKSxcclxuICAgICAgcHVibGljU2VhcmNoYWJsZUpzb246IEpTT04ucGFyc2UoY2MucHVibGljU2VhcmNoYWJsZSksXHJcbiAgICB9O1xyXG5cclxuICAgIGlmIChjYy5rZXkpIHtcclxuICAgICAgY29uc3Qga2V5ID0gYXdhaXQgdGhpcy5rZXlHcmFwaC5nZXRKd2tLZXkoY2Mua2V5LmlkKTtcclxuICAgICAgLy8gVE9ETzogdmVyaWZ5IHNpZ25hdHVyZVxyXG4gICAgICByZXQucGxhaW5DaXBoZXJEYXRhSnNvbiA9IGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZGVjcnlwdChcclxuICAgICAgICBrZXksXHJcbiAgICAgICAgY2MuY2lwaGVyRGF0YVxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByZXQ7XHJcbiAgfVxyXG5cclxuICBhc3luYyBkZWNyeXB0Q29udGFjdENhcmRFZGdlcyhcclxuICAgIGhhc0VkZ2VzOiBIYXNFZGdlczxDb250YWN0Q2FyZD5cclxuICApOiBQcm9taXNlPENvbnRhY3RDYXJkW10+IHtcclxuICAgIHJldHVybiBQcm9taXNlLmFsbChcclxuICAgICAgaGFzRWRnZXMuZWRnZXMubWFwKGFzeW5jIChlZGdlOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zdCBjYyA9IGVkZ2Uubm9kZSBhcyBDb250YWN0Q2FyZDtcclxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5kZWNyeXB0Q29udGFjdENhcmQoY2MpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8vIHsgXCJmaWx0ZXJcIjogW3sgXCJjb250YWluc1wiOiB7IFwiYVwiOiB0cnVlIH0gfV0gfVxyXG4gIGFzeW5jIHNlYXJjaENvbnRhY3RDYXJkKHB1YmxpY1NlYXJjaGFibGU6IG9iamVjdCk6IFByb21pc2U8Q29udGFjdENhcmRbXT4ge1xyXG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMubHJBcG9sbG8ucXVlcnk8U2VhcmNoQ29udGFjdENhcmRRdWVyeT4oe1xyXG4gICAgICBxdWVyeTogU2VhcmNoQ29udGFjdENhcmRRdWVyeSxcclxuICAgICAgdmFyaWFibGVzOiB7XHJcbiAgICAgICAgcHVibGljU2VhcmNoYWJsZTogSlNPTi5zdHJpbmdpZnkocHVibGljU2VhcmNoYWJsZSksXHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5kZWNyeXB0Q29udGFjdENhcmRFZGdlcyhkYXRhLnNlYXJjaENvbnRhY3RDYXJkcyk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBnZXRDb250YWN0Q2FyZExpc3QoKTogUHJvbWlzZTxDb250YWN0Q2FyZFtdPiB7XHJcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5sckFwb2xsby5xdWVyeTxDb250YWN0Q2FyZExpc3RRdWVyeT4oe1xyXG4gICAgICBxdWVyeTogQ29udGFjdENhcmRMaXN0UXVlcnksXHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5kZWNyeXB0Q29udGFjdENhcmRFZGdlcyhkYXRhLmNvbnRhY3RDYXJkcyk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBnZXRDb250YWN0Q2FyZChpZDogc3RyaW5nKTogUHJvbWlzZTxDb250YWN0Q2FyZD4ge1xyXG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMubHJBcG9sbG8ucXVlcnk8Q29udGFjdENhcmRRdWVyeT4oe1xyXG4gICAgICBxdWVyeTogQ29udGFjdENhcmRRdWVyeSxcclxuICAgICAgdmFyaWFibGVzOiB7XHJcbiAgICAgICAgaWQsXHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5kZWNyeXB0Q29udGFjdENhcmQoZGF0YS5jb250YWN0Q2FyZCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIHByZXBhcmVDb250YWN0Q2FyZElucHV0KFxyXG4gICAgaW5wdXQ6IENyZWF0ZUNvbnRhY3RDYXJkSW5wdXRcclxuICApOiBQcm9taXNlPGFueT4ge1xyXG4gICAgY29uc3Qgc2lnUHhrID0gYXdhaXQgdGhpcy5rZXlTZXJ2aWNlLmdldEN1cnJlbnRTaWdQeGsoKTtcclxuICAgIGNvbnN0IHB1YmxpY0RhdGFTaWcgPSBKU09OLnN0cmluZ2lmeShcclxuICAgICAgYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5zaWduKHNpZ1B4ay5qd2ssIGlucHV0LnB1YmxpY0RhdGFKc29uKVxyXG4gICAgKTtcclxuICAgIGNvbnN0IHB1YmxpY1NlYXJjaGFibGVTaWcgPSBKU09OLnN0cmluZ2lmeShcclxuICAgICAgYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5zaWduKHNpZ1B4ay5qd2ssIGlucHV0LnB1YmxpY1NlYXJjaGFibGVKc29uKVxyXG4gICAgKTtcclxuICAgIGNvbnN0IHBsYWluRGF0YVNpZyA9IEpTT04uc3RyaW5naWZ5KFxyXG4gICAgICBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLnNpZ24oc2lnUHhrLmp3aywgaW5wdXQucGxhaW5EYXRhSnNvbilcclxuICAgICk7XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgc2lnUHhrSWQ6IHNpZ1B4ay5pZCxcclxuICAgICAgcHVibGljRGF0YVNpZyxcclxuICAgICAgcHVibGljU2VhcmNoYWJsZVNpZyxcclxuICAgICAgcGxhaW5EYXRhU2lnLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGNyZWF0ZUNvbnRhY3RDYXJkKGlucHV0OiBDcmVhdGVDb250YWN0Q2FyZElucHV0KTogUHJvbWlzZTxDb250YWN0Q2FyZD4ge1xyXG4gICAgLy8gR2V0IGVuY3J5cHRpb24ga2V5XHJcbiAgICBjb25zdCByb290S2V5ID0gYXdhaXQgdGhpcy5rZXlTZXJ2aWNlLmdldEN1cnJlbnRSb290S2V5KCk7XHJcbiAgICBjb25zdCBrZXkgPSBhd2FpdCB0aGlzLmtleUZhY3RvcnkuY3JlYXRlS2V5KCk7XHJcbiAgICBjb25zdCB3cmFwcGVkS2V5ID0gYXdhaXQgdGhpcy5rZXlHcmFwaC5lbmNyeXB0VG9TdHJpbmcoXHJcbiAgICAgIHJvb3RLZXkuandrLFxyXG4gICAgICBrZXkudG9KU09OKHRydWUpXHJcbiAgICApO1xyXG4gICAgY29uc3QgY2lwaGVyRGF0YSA9IGF3YWl0IHRoaXMua2V5R3JhcGguZW5jcnlwdFRvU3RyaW5nKFxyXG4gICAgICBrZXksXHJcbiAgICAgIGlucHV0LnBsYWluQ2lwaGVyRGF0YUpzb25cclxuICAgICk7XHJcblxyXG4gICAgY29uc3QgcGFyYW1zID0gYXdhaXQgdGhpcy5wcmVwYXJlQ29udGFjdENhcmRJbnB1dChpbnB1dCk7XHJcblxyXG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMubHJBcG9sbG8ubXV0YXRlPHtcclxuICAgICAgY3JlYXRlQ29udGFjdENhcmQ6IHsgY29udGFjdENhcmQ6IENvbnRhY3RDYXJkIH07XHJcbiAgICB9Pih7XHJcbiAgICAgIG11dGF0aW9uOiBDcmVhdGVDb250YWN0Q2FyZE11dGF0aW9uLFxyXG4gICAgICB2YXJpYWJsZXM6IHtcclxuICAgICAgICBpbnB1dDoge1xyXG4gICAgICAgICAgLi4ucGFyYW1zLFxyXG4gICAgICAgICAgd3JhcHBpbmdLZXlJZDogcm9vdEtleS5pZCxcclxuICAgICAgICAgIHdyYXBwZWRLZXksXHJcbiAgICAgICAgICBjaXBoZXJEYXRhLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gZGF0YS5jcmVhdGVDb250YWN0Q2FyZC5jb250YWN0Q2FyZDtcclxuICB9XHJcblxyXG4gIGFzeW5jIHVwZGF0ZUNvbnRhY3RDYXJkKGlucHV0OiBVcGRhdGVDb250YWN0Q2FyZElucHV0KTogUHJvbWlzZTxDb250YWN0Q2FyZD4ge1xyXG4gICAgLy8gR2V0IGVuY3J5cHRpb24ga2V5XHJcbiAgICBjb25zdCBjYyA9IGF3YWl0IHRoaXMuZ2V0Q29udGFjdENhcmQoaW5wdXQuaWQpO1xyXG4gICAgY29uc3Qga2V5ID0gYXdhaXQgdGhpcy5rZXlHcmFwaC5nZXRKd2tLZXkoY2Mua2V5LmlkKTtcclxuICAgIGNvbnN0IGNpcGhlckRhdGEgPSBhd2FpdCB0aGlzLmtleUdyYXBoLmVuY3J5cHRUb1N0cmluZyhcclxuICAgICAga2V5LFxyXG4gICAgICBpbnB1dC5wbGFpbkNpcGhlckRhdGFKc29uXHJcbiAgICApO1xyXG5cclxuICAgIGNvbnN0IHBhcmFtcyA9IGF3YWl0IHRoaXMucHJlcGFyZUNvbnRhY3RDYXJkSW5wdXQoaW5wdXQpO1xyXG5cclxuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmxyQXBvbGxvLm11dGF0ZTx7XHJcbiAgICAgIHVwZGF0ZUNvbnRhY3RDYXJkOiB7IGNvbnRhY3RDYXJkOiBDb250YWN0Q2FyZCB9O1xyXG4gICAgfT4oe1xyXG4gICAgICBtdXRhdGlvbjogVXBkYXRlQ29udGFjdENhcmRNdXRhdGlvbixcclxuICAgICAgdmFyaWFibGVzOiB7XHJcbiAgICAgICAgaW5wdXQ6IHtcclxuICAgICAgICAgIC4uLnBhcmFtcyxcclxuICAgICAgICAgIGlkOiBpbnB1dC5pZCxcclxuICAgICAgICAgIGNpcGhlckRhdGEsXHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBkYXRhLnVwZGF0ZUNvbnRhY3RDYXJkLmNvbnRhY3RDYXJkO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZGVsZXRlQ29udGFjdENhcmQoaWQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5sckFwb2xsby5tdXRhdGU8YW55Pih7XHJcbiAgICAgIG11dGF0aW9uOiBEZWxldGVDb250YWN0Q2FyZE11dGF0aW9uLFxyXG4gICAgICB2YXJpYWJsZXM6IHtcclxuICAgICAgICBpbnB1dDoge1xyXG4gICAgICAgICAgaWQsXHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBkYXRhLmRlbGV0ZUNvbnRhY3RDYXJkLmlkO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFjdC1jYXJkMi5ncWwuanMiLCJzb3VyY2VSb290IjoiQzovUHJvamVjdHMvbmV3cmVwby9rYy1jbGllbnQvcHJvamVjdHMvY29yZS9zcmMvIiwic291cmNlcyI6WyJsaWIvYXBpL2NvbnRhY3QtY2FyZDIuZ3FsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUxQyxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxRQUFRLENBQWlCOzs7Ozs7Ozs7O0NBVTNELENBQUM7QUFTRixNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxRQUFRLENBQTJCOzs7Ozs7Ozs7O0NBVTNFLENBQUM7QUFTRixNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxRQUFRLENBQTJCOzs7Ozs7OztDQVEzRSxDQUFDO0FBU0YsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsUUFBUSxDQUEyQjs7Ozs7O0NBTTNFLENBQUM7QUFLRixNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxRQUFRLENBQW1COzs7Ozs7Ozs7O0lBVXhELG1CQUFtQjtDQUN0QixDQUFDO0FBS0YsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsUUFBUSxDQUFrQjs7Ozs7O0lBTXRELG1CQUFtQjtDQUN0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29ubmVjdGlvbiwgQ29udGFjdENhcmROb2RlLCBJRCB9IGZyb20gJy4vdHlwZXMnO1xyXG5pbXBvcnQgeyBncWxUeXBlZCB9IGZyb20gJy4uL19jb21tb24vYXN0JztcclxuXHJcbmV4cG9ydCBjb25zdCBDb250YWN0Q2FyZEZyYWdtZW50ID0gZ3FsVHlwZWQ8Q29udGFjdENhcmROb2RlPmBcclxuICBmcmFnbWVudCBDb250YWN0Q2FyZEZyYWdtZW50IG9uIENvbnRhY3RDYXJkTm9kZSB7XHJcbiAgICBpZFxyXG4gICAgcHVibGljRGF0YVxyXG4gICAgcHVibGljU2VhcmNoYWJsZVxyXG4gICAgY2lwaGVyRGF0YVxyXG4gICAga2V5IHtcclxuICAgICAgICBpZFxyXG4gICAgfVxyXG4gIH1cclxuYDtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlQ29udGFjdENhcmRNdXRhdGlvbiB7XHJcbiAgY3JlYXRlQ29udGFjdENhcmQ6IHtcclxuICAgIGNvbnRhY3RDYXJkOiB7XHJcbiAgICAgIGlkOiBJRDtcclxuICAgIH07XHJcbiAgfTtcclxufVxyXG5leHBvcnQgY29uc3QgQ3JlYXRlQ29udGFjdENhcmRNdXRhdGlvbiA9IGdxbFR5cGVkPENyZWF0ZUNvbnRhY3RDYXJkTXV0YXRpb24+YFxyXG4gIG11dGF0aW9uIENyZWF0ZUNvbnRhY3RDYXJkTXV0YXRpb24oXHJcbiAgICAkaW5wdXQ6IENyZWF0ZUNvbnRhY3RDYXJkSW5wdXQhXHJcbiAgKSB7XHJcbiAgICBjcmVhdGVDb250YWN0Q2FyZChpbnB1dDogJGlucHV0KSB7XHJcbiAgICAgIGNvbnRhY3RDYXJkIHtcclxuICAgICAgICBpZFxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5gO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVDb250YWN0Q2FyZE11dGF0aW9uIHtcclxuICB1cGRhdGVDb250YWN0Q2FyZDoge1xyXG4gICAgY29udGFjdENhcmQ6IHtcclxuICAgICAgaWQ6IElEO1xyXG4gICAgfTtcclxuICB9O1xyXG59XHJcbmV4cG9ydCBjb25zdCBVcGRhdGVDb250YWN0Q2FyZE11dGF0aW9uID0gZ3FsVHlwZWQ8VXBkYXRlQ29udGFjdENhcmRNdXRhdGlvbj5gXHJcbiAgbXV0YXRpb24gVXBkYXRlQ29udGFjdENhcmRNdXRhdGlvbigkaW5wdXQ6IFVwZGF0ZUNvbnRhY3RDYXJkSW5wdXQhKSB7XHJcbiAgICB1cGRhdGVDb250YWN0Q2FyZChpbnB1dDogJGlucHV0KSB7XHJcbiAgICAgIGNvbnRhY3RDYXJkIHtcclxuICAgICAgICBpZFxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5gO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBEZWxldGVDb250YWN0Q2FyZE11dGF0aW9uIHtcclxuICBkZWxldGVDb250YWN0Q2FyZDoge1xyXG4gICAgZGVsZXRlQ29udGFjdENhcmQ6IHtcclxuICAgICAgaWQ6IElEO1xyXG4gICAgfTtcclxuICB9O1xyXG59XHJcbmV4cG9ydCBjb25zdCBEZWxldGVDb250YWN0Q2FyZE11dGF0aW9uID0gZ3FsVHlwZWQ8RGVsZXRlQ29udGFjdENhcmRNdXRhdGlvbj5gXHJcbiAgbXV0YXRpb24gRGVsZXRlQ29udGFjdENhcmRNdXRhdGlvbigkaW5wdXQ6IERlbGV0ZUNvbnRhY3RDYXJkSW5wdXQhKSB7XHJcbiAgICBkZWxldGVDb250YWN0Q2FyZChpbnB1dDogJGlucHV0KSB7XHJcbiAgICAgIGlkXHJcbiAgICB9XHJcbiAgfVxyXG5gO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDb250YWN0Q2FyZHNRdWVyeSB7XHJcbiAgY29udGFjdENhcmRzOiBDb25uZWN0aW9uPENvbnRhY3RDYXJkTm9kZT47XHJcbn1cclxuZXhwb3J0IGNvbnN0IENvbnRhY3RDYXJkc1F1ZXJ5ID0gZ3FsVHlwZWQ8Q29udGFjdENhcmRzUXVlcnk+YFxyXG4gIHF1ZXJ5IENvbnRhY3RDYXJkc1F1ZXJ5IHtcclxuICAgIGNvbnRhY3RDYXJkcyhvcmRlckJ5OiBcImNyZWF0ZWRcIikge1xyXG4gICAgICBlZGdlcyB7XHJcbiAgICAgICAgbm9kZSB7XHJcbiAgICAgICAgICAuLi5Db250YWN0Q2FyZEZyYWdtZW50XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gICR7Q29udGFjdENhcmRGcmFnbWVudH1cclxuYDtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ29udGFjdENhcmRRdWVyeSB7XHJcbiAgY29udGFjdENhcmQ6IENvbnRhY3RDYXJkTm9kZTtcclxufVxyXG5leHBvcnQgY29uc3QgQ29udGFjdENhcmRRdWVyeSA9IGdxbFR5cGVkPENvbnRhY3RDYXJkUXVlcnk+YFxyXG4gIHF1ZXJ5IENvbnRhY3RDYXJkUXVlcnkoJGlkOiBMclJlbGF5SWRJbnB1dCEpIHtcclxuICAgIGNvbnRhY3RDYXJkKGlkOiAkaWQpIHtcclxuICAgICAgLi4uQ29udGFjdENhcmRGcmFnbWVudFxyXG4gICAgfVxyXG4gIH1cclxuICAke0NvbnRhY3RDYXJkRnJhZ21lbnR9XHJcbmA7XHJcbiJdfQ==
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFjdC1jYXJkMi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IkM6L1Byb2plY3RzL25ld3JlcG8va2MtY2xpZW50L3Byb2plY3RzL2NvcmUvc3JjLyIsInNvdXJjZXMiOlsibGliL2FwaS9jb250YWN0LWNhcmQyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRXpELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ25FLE9BQU8sRUFDTCx5QkFBeUIsRUFDekIseUJBQXlCLEVBQ3pCLHlCQUF5QixHQUMxQixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7Ozs7Ozs7QUFtQjFDLE1BQU0sT0FBTyxrQkFBa0I7Q0FFOUI7SUFhWSxtQkFBbUIsU0FBbkIsbUJBQW1CO0lBQzlCLFlBQ1UsVUFBNkIsRUFDN0IsVUFBc0IsRUFDdEIsaUJBQW9DLEVBQ3BDLFFBQXlCLEVBQ3pCLGNBQThCLEVBQzlCLE1BQWM7UUFMZCxlQUFVLEdBQVYsVUFBVSxDQUFtQjtRQUM3QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFDekIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLFdBQU0sR0FB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Qjs7O1lBNUNRLGlCQUFpQjtZQUdqQixVQUFVO1lBSlYsaUJBQWlCO1lBRWpCLGVBQWU7WUFDZixjQUFjO1lBSkYsTUFBTTs7QUErQ2QsbUJBQW1CO0lBTi9CLGlCQUFpQixDQUFDO1FBQ2pCLFVBQVUsRUFBRSxRQUFRO0tBQ3JCLENBQUM7R0FJVyxtQkFBbUIsQ0EyRi9CO1NBM0ZZLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBFbmNyeXB0aW9uU2VydmljZSB9IGZyb20gJy4uL2NyeXB0b2dyYXBoeS9lbmNyeXB0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBLZXlGYWN0b3J5U2VydmljZSB9IGZyb20gJy4uL2NyeXB0b2dyYXBoeS9rZXktZmFjdG9yeS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgS2V5R3JhcGhTZXJ2aWNlIH0gZnJvbSAnLi4vY3J5cHRvZ3JhcGh5L2tleS1ncmFwaC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgS2V5TWV0YVNlcnZpY2UgfSBmcm9tICcuLi9jcnlwdG9ncmFwaHkva2V5LW1ldGEuc2VydmljZSc7XHJcbmltcG9ydCB7IEtleVNlcnZpY2UgfSBmcm9tICcuLi9jcnlwdG9ncmFwaHkva2V5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNYWluQ29udGFjdENhcmRQbGFpbkZpZWxkcyB9IGZyb20gJy4uL3VzZXJzL3Byb2ZpbGUudHlwZXMnO1xyXG5pbXBvcnQgeyBSdW5PdXRzaWRlQW5ndWxhciB9IGZyb20gJy4uL19jb21tb24vcnVuLW91dHNpZGUtYW5ndWxhcic7XHJcbmltcG9ydCB7XHJcbiAgQ3JlYXRlQ29udGFjdENhcmRNdXRhdGlvbixcclxuICBEZWxldGVDb250YWN0Q2FyZE11dGF0aW9uLFxyXG4gIFVwZGF0ZUNvbnRhY3RDYXJkTXV0YXRpb24sXHJcbn0gZnJvbSAnLi9jb250YWN0LWNhcmQyLmdxbCc7XHJcbmltcG9ydCB7IExyTXV0YXRpb24gfSBmcm9tICcuL2xyLWdyYXBocWwnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVDb250YWN0Q2FyZElucHV0MiB7XHJcbiAgcHVibGljRGF0YUpzb246IGFueTtcclxuICBwdWJsaWNTZWFyY2hhYmxlSnNvbjogYW55O1xyXG4gIHBsYWluQ2lwaGVyRGF0YUpzb246IGFueTtcclxuICBwbGFpbkRhdGFKc29uOiBNYWluQ29udGFjdENhcmRQbGFpbkZpZWxkcztcclxufVxyXG5cclxuLy8gVGhlc2UgY29udGFjdCBuYW1lIGZpZWxkcyBhcmUgZW5mb3JjZWQgYnkgdGhlIHNlcnZlciBzbyB0aGF0IGl0IGNhbiBzZW5kIG91dCBlbWFpbHMgd2l0aFxyXG4vLyBhcHByb3ByaWF0ZSBmb3JtYXQuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ29udGFjdENhcmROYW1lMiB7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIHRpdGxlPzogc3RyaW5nO1xyXG4gIGZpcnN0TmFtZT86IHN0cmluZztcclxuICBsYXN0TmFtZT86IHN0cmluZztcclxuICAvLyBhZGRpdGlvbmFsIGZpZWxkcyBhcmUgbm90IGFsbG93ZWQgYnkgdGhlIHNlcnZlclxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgT3duZXJQbGFpbkRhdGFKc29uIHtcclxuICBuYW1lOiBDb250YWN0Q2FyZE5hbWUyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0ZUNvbnRhY3RDYXJkSW5wdXQyIGV4dGVuZHMgQ3JlYXRlQ29udGFjdENhcmRJbnB1dDIge1xyXG4gIGlkOiBzdHJpbmc7XHJcbiAga2V5SWQ6IHN0cmluZztcclxufVxyXG5cclxuQFJ1bk91dHNpZGVBbmd1bGFyKHtcclxuICBuZ1pvbmVOYW1lOiAnbmdab25lJyxcclxufSlcclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIENvbnRhY3RDYXJkMlNlcnZpY2Uge1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBrZXlGYWN0b3J5OiBLZXlGYWN0b3J5U2VydmljZSxcclxuICAgIHByaXZhdGUga2V5U2VydmljZTogS2V5U2VydmljZSxcclxuICAgIHByaXZhdGUgZW5jcnlwdGlvblNlcnZpY2U6IEVuY3J5cHRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBrZXlHcmFwaDogS2V5R3JhcGhTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBrZXlNZXRhU2VydmljZTogS2V5TWV0YVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lXHJcbiAgKSB7fVxyXG5cclxuICBhc3luYyBjcmVhdGVDb250YWN0Q2FyZChpbnB1dDogQ3JlYXRlQ29udGFjdENhcmRJbnB1dDIpIHtcclxuICAgIC8vIEdldCBlbmNyeXB0aW9uIGtleVxyXG4gICAgY29uc3Qgcm9vdEtleSA9IGF3YWl0IHRoaXMua2V5U2VydmljZS5nZXRDdXJyZW50Um9vdEtleSgpO1xyXG4gICAgY29uc3Qga2V5ID0gYXdhaXQgdGhpcy5rZXlGYWN0b3J5LmNyZWF0ZUtleSgpO1xyXG4gICAgY29uc3Qgd3JhcHBlZEtleSA9IGF3YWl0IHRoaXMua2V5R3JhcGguZW5jcnlwdFRvU3RyaW5nKFxyXG4gICAgICByb290S2V5Lmp3ayxcclxuICAgICAga2V5LnRvSlNPTih0cnVlKVxyXG4gICAgKTtcclxuICAgIGNvbnN0IGNpcGhlckRhdGEgPSBhd2FpdCB0aGlzLmtleUdyYXBoLmVuY3J5cHRUb1N0cmluZyhcclxuICAgICAga2V5LFxyXG4gICAgICBpbnB1dC5wbGFpbkNpcGhlckRhdGFKc29uXHJcbiAgICApO1xyXG5cclxuICAgIGNvbnN0IHBhcmFtcyA9IGF3YWl0IHRoaXMucHJlcGFyZUNvbnRhY3RDYXJkSW5wdXQoaW5wdXQpO1xyXG5cclxuICAgIHJldHVybiBuZXcgTHJNdXRhdGlvbih7XHJcbiAgICAgIG11dGF0aW9uOiBDcmVhdGVDb250YWN0Q2FyZE11dGF0aW9uLFxyXG4gICAgICB2YXJpYWJsZXM6IHtcclxuICAgICAgICBpbnB1dDoge1xyXG4gICAgICAgICAgLi4ucGFyYW1zLFxyXG4gICAgICAgICAgd3JhcHBpbmdLZXlJZDogcm9vdEtleS5pZCxcclxuICAgICAgICAgIHdyYXBwZWRLZXksXHJcbiAgICAgICAgICBjaXBoZXJEYXRhLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHVwZGF0ZUNvbnRhY3RDYXJkKGlucHV0OiBVcGRhdGVDb250YWN0Q2FyZElucHV0Mikge1xyXG4gICAgLy8gR2V0IGVuY3J5cHRpb24ga2V5XHJcbiAgICBjb25zdCBjaXBoZXJEYXRhID0gYXdhaXQgdGhpcy5rZXlHcmFwaC5lbmNyeXB0VG9TdHJpbmcoXHJcbiAgICAgIGlucHV0LmtleUlkLFxyXG4gICAgICBpbnB1dC5wbGFpbkNpcGhlckRhdGFKc29uXHJcbiAgICApO1xyXG5cclxuICAgIGNvbnN0IHBhcmFtcyA9IGF3YWl0IHRoaXMucHJlcGFyZUNvbnRhY3RDYXJkSW5wdXQoaW5wdXQpO1xyXG5cclxuICAgIHJldHVybiBuZXcgTHJNdXRhdGlvbih7XHJcbiAgICAgIG11dGF0aW9uOiBVcGRhdGVDb250YWN0Q2FyZE11dGF0aW9uLFxyXG4gICAgICB2YXJpYWJsZXM6IHtcclxuICAgICAgICBpbnB1dDoge1xyXG4gICAgICAgICAgLi4ucGFyYW1zLFxyXG4gICAgICAgICAgaWQ6IGlucHV0LmlkLFxyXG4gICAgICAgICAgY2lwaGVyRGF0YSxcclxuICAgICAgICB9LFxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVDb250YWN0Q2FyZChpZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gbmV3IExyTXV0YXRpb24oe1xyXG4gICAgICBtdXRhdGlvbjogRGVsZXRlQ29udGFjdENhcmRNdXRhdGlvbixcclxuICAgICAgdmFyaWFibGVzOiB7XHJcbiAgICAgICAgaW5wdXQ6IHtcclxuICAgICAgICAgIGlkLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgcHJlcGFyZUNvbnRhY3RDYXJkSW5wdXQoXHJcbiAgICBpbnB1dDogQ3JlYXRlQ29udGFjdENhcmRJbnB1dDJcclxuICApOiBQcm9taXNlPGFueT4ge1xyXG4gICAgY29uc3Qgc2lnUHhrID0gYXdhaXQgdGhpcy5rZXlTZXJ2aWNlLmdldEN1cnJlbnRTaWdQeGsoKTtcclxuICAgIGNvbnN0IHB1YmxpY0RhdGFTaWcgPSBKU09OLnN0cmluZ2lmeShcclxuICAgICAgYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5zaWduKHNpZ1B4ay5qd2ssIGlucHV0LnB1YmxpY0RhdGFKc29uKVxyXG4gICAgKTtcclxuICAgIGNvbnN0IHB1YmxpY1NlYXJjaGFibGVTaWcgPSBKU09OLnN0cmluZ2lmeShcclxuICAgICAgYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5zaWduKHNpZ1B4ay5qd2ssIGlucHV0LnB1YmxpY1NlYXJjaGFibGVKc29uKVxyXG4gICAgKTtcclxuICAgIGNvbnN0IHBsYWluRGF0YVNpZyA9IEpTT04uc3RyaW5naWZ5KFxyXG4gICAgICBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLnNpZ24oc2lnUHhrLmp3aywgaW5wdXQucGxhaW5EYXRhSnNvbilcclxuICAgICk7XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgc2lnUHhrSWQ6IHNpZ1B4ay5pZCxcclxuICAgICAgcHVibGljRGF0YVNpZyxcclxuICAgICAgcHVibGljU2VhcmNoYWJsZVNpZyxcclxuICAgICAgcGxhaW5EYXRhU2lnLFxyXG4gICAgfTtcclxuICB9XHJcbn1cclxuIl19
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IkM6L1Byb2plY3RzL25ld3JlcG8va2MtY2xpZW50L3Byb2plY3RzL2NvcmUvc3JjLyIsInNvdXJjZXMiOlsibGliL2FwaS9maWxlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsU0FBUyxFQUFtQixNQUFNLHNCQUFzQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7OztBQWN2RSxNQUFNLE9BQU8sV0FBVztJQUN0QixZQUM2QixNQUF1QixFQUMxQyxJQUFnQixFQUNoQixNQUE0QjtRQUZULFdBQU0sR0FBTixNQUFNLENBQWlCO1FBQzFDLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsV0FBTSxHQUFOLE1BQU0sQ0FBc0I7SUFDbkMsQ0FBQztJQUVFLHFCQUFxQixDQUFDLGVBQXVCOztZQUNqRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsc0JBQXNCLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztRQUN4RSxDQUFDO0tBQUE7SUFFSyxzQkFBc0IsQ0FBQyxlQUF1Qjs7WUFDbEQsTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sc0NBQXNDLGVBQWUsRUFBRSxDQUFDO1lBRXpGLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUk7aUJBQzVCLEdBQUcsQ0FBQyxHQUFHLEVBQUU7Z0JBQ1IsWUFBWSxFQUFFLE1BQU07Z0JBQ3BCLE9BQU8sRUFBRTtvQkFDUCxhQUFhLEVBQUUsVUFBVSxDQUN2QixNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQzVCLENBQUMsaUJBQWlCLEVBQUUsRUFBRTtpQkFDeEI7YUFDRixDQUFDO2lCQUNELFNBQVMsRUFBRSxDQUFDO1lBRWYsT0FBTyxPQUFPLENBQUM7UUFDakIsQ0FBQztLQUFBO0lBRUssUUFBUSxDQUFDLElBQVU7O1lBQ3ZCLE9BQU8sSUFBSSxPQUFPLENBQWMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7Z0JBQ2xELE1BQU0sTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7Z0JBQ2hDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUFFO29CQUNuQiw2REFBNkQ7b0JBQzdELE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBcUIsQ0FBQyxDQUFDO2dCQUN4QyxDQUFDLENBQUM7Z0JBQ0YsTUFBTSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2pDLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztLQUFBO0lBRUssbUJBQW1CLENBQ3ZCLE9BQW1DOztZQUVuQyxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLEdBQUcsT0FBTyxDQUFDO1lBRS9DLE1BQU0sUUFBUSxHQUFHLElBQUksUUFBUSxFQUFFLENBQUM7WUFDaEMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsSUFBSSxJQUFJLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFFbkUsTUFBTSxFQUFFLGdCQUFnQixFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSTtpQkFDekMsSUFBSSxDQUNILEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLGVBQWUsRUFDcEMsUUFBUSxFQUNSO2dCQUNFLE9BQU8sRUFBRTtvQkFDUCxhQUFhLEVBQUUsVUFBVSxDQUN2QixNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQzVCLENBQUMsaUJBQWlCLEVBQUUsRUFBRTtpQkFDeEI7YUFDRixDQUNGO2lCQUNBLFNBQVMsRUFBRSxDQUFDO1lBRWYsT0FBTyxnQkFBZ0IsQ0FBQztRQUMxQixDQUFDO0tBQUE7Ozs7WUFqRUYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7NENBR0ksTUFBTSxTQUFDLFNBQVM7WUFuQlosVUFBVTtZQUdWLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBMUl9DT05GSUcsIExpZmVSZWFkeUNvbmZpZyB9IGZyb20gJy4uL2xpZmUtcmVhZHkuY29uZmlnJztcclxuaW1wb3J0IHsgTGlmZVJlYWR5QXV0aFNlcnZpY2UgfSBmcm9tICcuLi9hdXRoL2xpZmUtcmVhZHktYXV0aC5zZXJ2aWNlJztcclxuXHJcbmV4cG9ydCB0eXBlIEZpbGVDb250ZW50Q29udGV4dCA9ICdGSUxFX1NUQVRFJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgVXBsb2FkRW5jcnlwdGVkRmlsZU9wdGlvbnMge1xyXG4gIGVuY3J5cHRlZENvbnRlbnQ6IHN0cmluZztcclxuICAvLyBUT0RPIEFkZCBpbiB0aGUgY29udGV4dCBmaWVsZCBhbmQgbWFrZSBpdCBtYW5kYXRvcnlcclxuICAvLyBjb250ZXh0OiBGaWxlQ29udGVudENvbnRleHQ7XHJcbiAgZmlsZU5hbWU/OiBzdHJpbmc7XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGaWxlU2VydmljZSB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBASW5qZWN0KExSX0NPTkZJRykgcHJpdmF0ZSBjb25maWc6IExpZmVSZWFkeUNvbmZpZyxcclxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcclxuICAgIHByaXZhdGUgbHJBdXRoOiBMaWZlUmVhZHlBdXRoU2VydmljZVxyXG4gICkge31cclxuXHJcbiAgYXN5bmMgZG93bmxvYWRFbmNyeXB0ZWRGaWxlKGZpbGVTdGF0ZU5vZGVJZDogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcclxuICAgIHJldHVybiBKU09OLnBhcnNlKGF3YWl0IHRoaXMuZG93bmxvYWRFbmNyeXB0ZWRGaWxlMihmaWxlU3RhdGVOb2RlSWQpKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGRvd25sb2FkRW5jcnlwdGVkRmlsZTIoZmlsZVN0YXRlTm9kZUlkOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5jb25maWcuYXBpVXJsfWZpbGVzL2Rvd25sb2FkLz9maWxlX3N0YXRlX25vZGVfaWQ9JHtmaWxlU3RhdGVOb2RlSWR9YDtcclxuXHJcbiAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgdGhpcy5odHRwXHJcbiAgICAgIC5nZXQodXJsLCB7XHJcbiAgICAgICAgcmVzcG9uc2VUeXBlOiAndGV4dCcsXHJcbiAgICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAkeyhcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5sckF1dGguZ2V0VXNlcigpXHJcbiAgICAgICAgICApLmdldEFjY2Vzc0p3dFRva2VuKCl9YCxcclxuICAgICAgICB9LFxyXG4gICAgICB9KVxyXG4gICAgICAudG9Qcm9taXNlKCk7XHJcblxyXG4gICAgcmV0dXJuIGNvbnRlbnQ7XHJcbiAgfVxyXG5cclxuICBhc3luYyBsb2FkRmlsZShmaWxlOiBGaWxlKTogUHJvbWlzZTxBcnJheUJ1ZmZlcj4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPEFycmF5QnVmZmVyPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcbiAgICAgIHJlYWRlci5vbmxvYWQgPSAoKSA9PiB7XHJcbiAgICAgICAgLy8gT0sgdG8gdHlwZSBjYXN0IGhlcmUgc2luY2Ugd2UgYXJlIHVzaW5nIHJlYWRBc0FycmF5QnVmZmVyLlxyXG4gICAgICAgIHJlc29sdmUocmVhZGVyLnJlc3VsdCBhcyBBcnJheUJ1ZmZlcik7XHJcbiAgICAgIH07XHJcbiAgICAgIHJlYWRlci5yZWFkQXNBcnJheUJ1ZmZlcihmaWxlKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgdXBsb2FkRW5jcnlwdGVkRmlsZShcclxuICAgIG9wdGlvbnM6IFVwbG9hZEVuY3J5cHRlZEZpbGVPcHRpb25zXHJcbiAgKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgIGNvbnN0IHsgZW5jcnlwdGVkQ29udGVudCwgZmlsZU5hbWUgfSA9IG9wdGlvbnM7XHJcblxyXG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcclxuICAgIGZvcm1EYXRhLmFwcGVuZCgnY29udGVudCcsIG5ldyBCbG9iKFtlbmNyeXB0ZWRDb250ZW50XSksIGZpbGVOYW1lKTtcclxuXHJcbiAgICBjb25zdCB7IGNvbnRlbnRfcmVzb3VyY2UgfSA9IGF3YWl0IHRoaXMuaHR0cFxyXG4gICAgICAucG9zdDx7IGNvbnRlbnRfcmVzb3VyY2UgfT4oXHJcbiAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpVXJsfWZpbGVzL3VwbG9hZC9gLFxyXG4gICAgICAgIGZvcm1EYXRhLFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGhlYWRlcnM6IHtcclxuICAgICAgICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAkeyhcclxuICAgICAgICAgICAgICBhd2FpdCB0aGlzLmxyQXV0aC5nZXRVc2VyKClcclxuICAgICAgICAgICAgKS5nZXRBY2Nlc3NKd3RUb2tlbigpfWAsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH1cclxuICAgICAgKVxyXG4gICAgICAudG9Qcm9taXNlKCk7XHJcblxyXG4gICAgcmV0dXJuIGNvbnRlbnRfcmVzb3VyY2U7XHJcbiAgfVxyXG59XHJcbiJdfQ==