@lifeready/core 1.0.0 → 1.0.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 (378) hide show
  1. package/README.md +62 -62
  2. package/karma.conf.js +32 -0
  3. package/ng-package.json +26 -0
  4. package/package.json +21 -29
  5. package/src/lib/_common/ast.ts +75 -0
  6. package/src/lib/_common/deferred-promise.ts +35 -0
  7. package/src/lib/_common/exceptions.ts +189 -0
  8. package/src/lib/_common/queries.gql.ts +200 -0
  9. package/src/lib/_common/run-outside-angular.ts +125 -0
  10. package/src/lib/_common/tests.ts +82 -0
  11. package/{lib/_common/types.d.ts → src/lib/_common/types.ts} +13 -10
  12. package/src/lib/_common/utils.ts +57 -0
  13. package/src/lib/api/api-mutation.spec.ts +547 -0
  14. package/src/lib/api/api-query.spec.ts +40 -0
  15. package/src/lib/api/contact-card.gql.ts +85 -0
  16. package/src/lib/api/contact-card.service.spec.ts +249 -0
  17. package/src/lib/api/contact-card.service.ts +228 -0
  18. package/src/lib/api/contact-card2.gql.ts +93 -0
  19. package/src/lib/api/contact-card2.service.spec.ts +297 -0
  20. package/src/lib/api/contact-card2.service.ts +139 -0
  21. package/src/lib/api/file.service.spec.ts +14 -0
  22. package/src/lib/api/file.service.ts +81 -0
  23. package/src/lib/api/item2.gql.ts +211 -0
  24. package/src/lib/api/item2.service.spec.ts +1043 -0
  25. package/src/lib/api/item2.service.ts +481 -0
  26. package/src/lib/api/key-exchange.gql.ts +196 -0
  27. package/src/lib/api/key-exchange.service.spec.ts +470 -0
  28. package/src/lib/api/key-exchange.service.ts +731 -0
  29. package/src/lib/api/key-exchange.types.ts +235 -0
  30. package/src/lib/api/key-exchange2.gql.ts +310 -0
  31. package/src/lib/api/key-exchange2.service.spec.ts +892 -0
  32. package/src/lib/api/key-exchange2.service.ts +875 -0
  33. package/src/lib/api/lock.gql.ts +67 -0
  34. package/src/lib/api/lock.service.spec.ts +549 -0
  35. package/src/lib/api/lock.service.ts +57 -0
  36. package/src/lib/api/lr-apollo.service.spec.ts +27 -0
  37. package/src/lib/api/lr-apollo.service.ts +43 -0
  38. package/{lib/api/lr-graphql/index.d.ts → src/lib/api/lr-graphql/index.ts} +5 -5
  39. package/src/lib/api/lr-graphql/lr-graphql.service.ts +313 -0
  40. package/src/lib/api/lr-graphql/lr-merged-mutation.ts +377 -0
  41. package/src/lib/api/lr-graphql/lr-mutation-base.ts +67 -0
  42. package/src/lib/api/lr-graphql/lr-mutation.ts +74 -0
  43. package/src/lib/api/lr-graphql/lr.service.ts +28 -0
  44. package/src/lib/api/message.service.spec.ts +20 -0
  45. package/src/lib/api/message.service.ts +210 -0
  46. package/src/lib/api/persist.service.spec.ts +209 -0
  47. package/src/lib/api/persist.service.ts +220 -0
  48. package/src/lib/api/query-processor/common-processors.service.ts +148 -0
  49. package/{lib/api/query-processor/index.d.ts → src/lib/api/query-processor/index.ts} +2 -2
  50. package/src/lib/api/query-processor/query-processor.service.ts +240 -0
  51. package/src/lib/api/query-processor/tp-password-reset-processor.service.ts +177 -0
  52. package/src/lib/api/shared-contact-card.service.ts +156 -0
  53. package/src/lib/api/shared-contact-card2.gql.ts +76 -0
  54. package/src/lib/api/shared-contact-card2.service.ts +154 -0
  55. package/src/lib/api/time.service.spec.ts +48 -0
  56. package/src/lib/api/time.service.ts +155 -0
  57. package/src/lib/api/types/graphql.types.ts +48 -0
  58. package/{lib/api/types/index.d.ts → src/lib/api/types/index.ts} +2 -2
  59. package/src/lib/api/types/lr-graphql.types.ts +467 -0
  60. package/src/lib/auth/auth.config.ts +83 -0
  61. package/src/lib/auth/auth.gql.ts +62 -0
  62. package/src/lib/auth/auth.types.ts +79 -0
  63. package/src/lib/auth/idle.service.spec.ts +119 -0
  64. package/src/lib/auth/idle.service.ts +208 -0
  65. package/src/lib/auth/idle.types.ts +11 -0
  66. package/src/lib/auth/lbop.service.spec.ts +56 -0
  67. package/src/lib/auth/lbop.service.ts +539 -0
  68. package/src/lib/auth/life-ready-auth.service.spec.ts +70 -0
  69. package/src/lib/auth/life-ready-auth.service.ts +454 -0
  70. package/src/lib/auth/password.service.spec.ts +51 -0
  71. package/src/lib/auth/password.service.ts +438 -0
  72. package/src/lib/auth/register.service.spec.ts +31 -0
  73. package/src/lib/auth/register.service.ts +181 -0
  74. package/src/lib/auth/two-factor.service.spec.ts +21 -0
  75. package/src/lib/auth/two-factor.service.ts +69 -0
  76. package/src/lib/category/category-meta.service.spec.ts +28 -0
  77. package/src/lib/category/category-meta.service.ts +125 -0
  78. package/src/lib/category/category.gql.ts +449 -0
  79. package/src/lib/category/category.service.spec.ts +26 -0
  80. package/src/lib/category/category.service.ts +498 -0
  81. package/src/lib/category/category.types.ts +89 -0
  82. package/src/lib/cryptography/cryptography.types.ts +108 -0
  83. package/src/lib/cryptography/encryption.service.spec.ts +125 -0
  84. package/src/lib/cryptography/encryption.service.ts +243 -0
  85. package/src/lib/cryptography/key-factory.service.spec.ts +15 -0
  86. package/src/lib/cryptography/key-factory.service.ts +303 -0
  87. package/src/lib/cryptography/key-graph.service.spec.ts +16 -0
  88. package/src/lib/cryptography/key-graph.service.ts +354 -0
  89. package/src/lib/cryptography/key-meta.service.spec.ts +40 -0
  90. package/src/lib/cryptography/key-meta.service.ts +254 -0
  91. package/src/lib/cryptography/key.service.spec.ts +16 -0
  92. package/src/lib/cryptography/key.service.ts +154 -0
  93. package/src/lib/cryptography/slip39.service.spec.ts +44 -0
  94. package/src/lib/cryptography/slip39.service.ts +204 -0
  95. package/src/lib/cryptography/web-crypto.service.ts +22 -0
  96. package/src/lib/life-ready.config.ts +127 -0
  97. package/src/lib/life-ready.module.ts +81 -0
  98. package/src/lib/plan/plan.gql.ts +133 -0
  99. package/src/lib/plan/plan.service.spec.ts +294 -0
  100. package/src/lib/plan/plan.service.ts +198 -0
  101. package/src/lib/plan/plan.types.ts +37 -0
  102. package/src/lib/record/record-attachment.service.spec.ts +31 -0
  103. package/src/lib/record/record-attachment.service.ts +101 -0
  104. package/src/lib/record/record.gql.ts +192 -0
  105. package/src/lib/record/record.service.spec.ts +598 -0
  106. package/src/lib/record/record.service.ts +236 -0
  107. package/src/lib/record/record.types.ts +86 -0
  108. package/src/lib/record-type/record-type.service.spec.ts +16 -0
  109. package/src/lib/record-type/record-type.service.ts +71 -0
  110. package/src/lib/record-type/record-type.types.ts +58 -0
  111. package/src/lib/scenario/approvals/scenario-approval.gql.ts +112 -0
  112. package/src/lib/scenario/approvals/scenario-approval.types.ts +85 -0
  113. package/src/lib/scenario/approvals/scenario-approver.service.spec.ts +16 -0
  114. package/src/lib/scenario/approvals/scenario-approver.service.ts +422 -0
  115. package/src/lib/scenario/claimants/scenario-claimant.gql.ts +56 -0
  116. package/src/lib/scenario/claimants/scenario-claimant.service.spec.ts +16 -0
  117. package/src/lib/scenario/claimants/scenario-claimant.service.ts +100 -0
  118. package/src/lib/scenario/claimants/scenario-claimant.types.ts +21 -0
  119. package/src/lib/scenario/receivers/scenario-receiver.gql.ts +157 -0
  120. package/src/lib/scenario/receivers/scenario-receiver.service.spec.ts +16 -0
  121. package/src/lib/scenario/receivers/scenario-receiver.service.ts +278 -0
  122. package/src/lib/scenario/receivers/scenario-receiver.types.ts +66 -0
  123. package/src/lib/scenario/scenario-setup.service.spec.ts +22 -0
  124. package/src/lib/scenario/scenario-setup.service.ts +369 -0
  125. package/src/lib/scenario/scenario.gql.ts +404 -0
  126. package/src/lib/scenario/scenario.service.spec.ts +1586 -0
  127. package/src/lib/scenario/scenario.service.ts +811 -0
  128. package/src/lib/scenario/scenario.types.ts +258 -0
  129. package/src/lib/search/search.gql.ts +62 -0
  130. package/src/lib/search/search.service.spec.ts +57 -0
  131. package/src/lib/search/search.service.ts +174 -0
  132. package/src/lib/search/search.types.ts +24 -0
  133. package/src/lib/trusted-parties/tp-password-reset-request.service.ts +140 -0
  134. package/src/lib/trusted-parties/tp-password-reset-user.service.ts +359 -0
  135. package/src/lib/trusted-parties/tp-password-reset.gql.ts +453 -0
  136. package/src/lib/trusted-parties/tp-password-reset.service.spec.ts +602 -0
  137. package/src/lib/trusted-parties/tp-password-reset.service.ts +482 -0
  138. package/src/lib/trusted-parties/trusted-party.gql.ts +159 -0
  139. package/src/lib/trusted-parties/trusted-party.service.spec.ts +1008 -0
  140. package/src/lib/trusted-parties/trusted-party.service.ts +394 -0
  141. package/src/lib/trusted-parties/trusted-party.types.ts +119 -0
  142. package/src/lib/trusted-parties/trusted-party2.gql.ts +165 -0
  143. package/src/lib/trusted-parties/trusted-party2.service.spec.ts +1782 -0
  144. package/src/lib/trusted-parties/trusted-party2.service.ts +272 -0
  145. package/src/lib/users/profile-details.service.spec.ts +45 -0
  146. package/src/lib/users/profile-details.service.ts +278 -0
  147. package/src/lib/users/profile.gql.ts +108 -0
  148. package/src/lib/users/profile.service.spec.ts +97 -0
  149. package/src/lib/users/profile.service.ts +224 -0
  150. package/src/lib/users/profile.types.ts +101 -0
  151. package/src/lib/users/user.gql.ts +69 -0
  152. package/src/lib/users/user.service.spec.ts +161 -0
  153. package/src/lib/users/user.service.ts +72 -0
  154. package/src/lib/users/user.types.ts +27 -0
  155. package/{public-api.d.ts → src/public-api.ts} +96 -77
  156. package/src/test.ts +21 -0
  157. package/tsconfig.lib.json +21 -0
  158. package/tsconfig.lib.prod.json +6 -0
  159. package/tsconfig.spec.json +10 -0
  160. package/tslint.json +17 -0
  161. package/bundles/lifeready-core.umd.js +0 -15876
  162. package/bundles/lifeready-core.umd.js.map +0 -1
  163. package/bundles/lifeready-core.umd.min.js +0 -16
  164. package/bundles/lifeready-core.umd.min.js.map +0 -1
  165. package/esm2015/lib/_common/ast.js +0 -40
  166. package/esm2015/lib/_common/deferred-promise.js +0 -24
  167. package/esm2015/lib/_common/exceptions.js +0 -157
  168. package/esm2015/lib/_common/queries.gql.js +0 -190
  169. package/esm2015/lib/_common/run-outside-angular.js +0 -79
  170. package/esm2015/lib/_common/types.js +0 -1
  171. package/esm2015/lib/_common/utils.js +0 -44
  172. package/esm2015/lib/api/contact-card.gql.js +0 -79
  173. package/esm2015/lib/api/contact-card.service.js +0 -154
  174. package/esm2015/lib/api/contact-card2.gql.js +0 -60
  175. package/esm2015/lib/api/contact-card2.service.js +0 -103
  176. package/esm2015/lib/api/file.service.js +0 -74
  177. package/esm2015/lib/api/item2.gql.js +0 -110
  178. package/esm2015/lib/api/item2.service.js +0 -311
  179. package/esm2015/lib/api/key-exchange.gql.js +0 -188
  180. package/esm2015/lib/api/key-exchange.service.js +0 -442
  181. package/esm2015/lib/api/key-exchange.types.js +0 -18
  182. package/esm2015/lib/api/key-exchange2.gql.js +0 -171
  183. package/esm2015/lib/api/key-exchange2.service.js +0 -479
  184. package/esm2015/lib/api/lock.gql.js +0 -40
  185. package/esm2015/lib/api/lock.service.js +0 -64
  186. package/esm2015/lib/api/lr-apollo.service.js +0 -46
  187. package/esm2015/lib/api/lr-graphql/index.js +0 -6
  188. package/esm2015/lib/api/lr-graphql/lr-graphql.service.js +0 -155
  189. package/esm2015/lib/api/lr-graphql/lr-merged-mutation.js +0 -213
  190. package/esm2015/lib/api/lr-graphql/lr-mutation-base.js +0 -51
  191. package/esm2015/lib/api/lr-graphql/lr-mutation.js +0 -48
  192. package/esm2015/lib/api/lr-graphql/lr.service.js +0 -18
  193. package/esm2015/lib/api/message.service.js +0 -138
  194. package/esm2015/lib/api/persist.service.js +0 -181
  195. package/esm2015/lib/api/query-processor/common-processors.service.js +0 -93
  196. package/esm2015/lib/api/query-processor/index.js +0 -3
  197. package/esm2015/lib/api/query-processor/query-processor.service.js +0 -192
  198. package/esm2015/lib/api/query-processor/tp-password-reset-processor.service.js +0 -109
  199. package/esm2015/lib/api/shared-contact-card.service.js +0 -119
  200. package/esm2015/lib/api/shared-contact-card2.gql.js +0 -41
  201. package/esm2015/lib/api/shared-contact-card2.service.js +0 -117
  202. package/esm2015/lib/api/time.service.js +0 -146
  203. package/esm2015/lib/api/types/graphql.types.js +0 -7
  204. package/esm2015/lib/api/types/index.js +0 -3
  205. package/esm2015/lib/api/types/lr-graphql.types.js +0 -71
  206. package/esm2015/lib/auth/auth.config.js +0 -57
  207. package/esm2015/lib/auth/auth.gql.js +0 -48
  208. package/esm2015/lib/auth/auth.types.js +0 -27
  209. package/esm2015/lib/auth/idle.service.js +0 -168
  210. package/esm2015/lib/auth/idle.types.js +0 -7
  211. package/esm2015/lib/auth/lbop.service.js +0 -355
  212. package/esm2015/lib/auth/life-ready-auth.service.js +0 -333
  213. package/esm2015/lib/auth/password.service.js +0 -320
  214. package/esm2015/lib/auth/register.service.js +0 -172
  215. package/esm2015/lib/auth/two-factor.service.js +0 -74
  216. package/esm2015/lib/category/category-meta.service.js +0 -99
  217. package/esm2015/lib/category/category.gql.js +0 -406
  218. package/esm2015/lib/category/category.service.js +0 -390
  219. package/esm2015/lib/category/category.types.js +0 -29
  220. package/esm2015/lib/cryptography/cryptography.types.js +0 -11
  221. package/esm2015/lib/cryptography/encryption.service.js +0 -189
  222. package/esm2015/lib/cryptography/key-factory.service.js +0 -237
  223. package/esm2015/lib/cryptography/key-graph.service.js +0 -280
  224. package/esm2015/lib/cryptography/key-meta.service.js +0 -200
  225. package/esm2015/lib/cryptography/key.service.js +0 -124
  226. package/esm2015/lib/cryptography/slip39.service.js +0 -169
  227. package/esm2015/lib/cryptography/web-crypto.service.js +0 -29
  228. package/esm2015/lib/life-ready.config.js +0 -84
  229. package/esm2015/lib/life-ready.module.js +0 -74
  230. package/esm2015/lib/plan/plan.gql.js +0 -123
  231. package/esm2015/lib/plan/plan.service.js +0 -149
  232. package/esm2015/lib/plan/plan.types.js +0 -11
  233. package/esm2015/lib/record/record-attachment.service.js +0 -101
  234. package/esm2015/lib/record/record.gql.js +0 -179
  235. package/esm2015/lib/record/record.service.js +0 -206
  236. package/esm2015/lib/record/record.types.js +0 -15
  237. package/esm2015/lib/record-type/record-type.service.js +0 -75
  238. package/esm2015/lib/record-type/record-type.types.js +0 -28
  239. package/esm2015/lib/scenario/approvals/scenario-approval.gql.js +0 -105
  240. package/esm2015/lib/scenario/approvals/scenario-approval.types.js +0 -1
  241. package/esm2015/lib/scenario/approvals/scenario-approver.service.js +0 -300
  242. package/esm2015/lib/scenario/claimants/scenario-claimant.gql.js +0 -52
  243. package/esm2015/lib/scenario/claimants/scenario-claimant.service.js +0 -97
  244. package/esm2015/lib/scenario/claimants/scenario-claimant.types.js +0 -1
  245. package/esm2015/lib/scenario/receivers/scenario-receiver.gql.js +0 -150
  246. package/esm2015/lib/scenario/receivers/scenario-receiver.service.js +0 -229
  247. package/esm2015/lib/scenario/receivers/scenario-receiver.types.js +0 -1
  248. package/esm2015/lib/scenario/scenario-setup.service.js +0 -269
  249. package/esm2015/lib/scenario/scenario.gql.js +0 -368
  250. package/esm2015/lib/scenario/scenario.service.js +0 -611
  251. package/esm2015/lib/scenario/scenario.types.js +0 -64
  252. package/esm2015/lib/search/search.gql.js +0 -62
  253. package/esm2015/lib/search/search.service.js +0 -156
  254. package/esm2015/lib/search/search.types.js +0 -6
  255. package/esm2015/lib/trusted-parties/tp-password-reset-request.service.js +0 -112
  256. package/esm2015/lib/trusted-parties/tp-password-reset-user.service.js +0 -266
  257. package/esm2015/lib/trusted-parties/tp-password-reset.gql.js +0 -232
  258. package/esm2015/lib/trusted-parties/tp-password-reset.service.js +0 -300
  259. package/esm2015/lib/trusted-parties/trusted-party.gql.js +0 -148
  260. package/esm2015/lib/trusted-parties/trusted-party.service.js +0 -326
  261. package/esm2015/lib/trusted-parties/trusted-party.types.js +0 -41
  262. package/esm2015/lib/trusted-parties/trusted-party2.gql.js +0 -87
  263. package/esm2015/lib/trusted-parties/trusted-party2.service.js +0 -215
  264. package/esm2015/lib/users/profile-details.service.js +0 -214
  265. package/esm2015/lib/users/profile.gql.js +0 -97
  266. package/esm2015/lib/users/profile.service.js +0 -169
  267. package/esm2015/lib/users/profile.types.js +0 -34
  268. package/esm2015/lib/users/user.gql.js +0 -60
  269. package/esm2015/lib/users/user.service.js +0 -79
  270. package/esm2015/lib/users/user.types.js +0 -5
  271. package/esm2015/lifeready-core.js +0 -10
  272. package/esm2015/public-api.js +0 -81
  273. package/fesm2015/lifeready-core.js +0 -13282
  274. package/fesm2015/lifeready-core.js.map +0 -1
  275. package/lib/_common/ast.d.ts +0 -11
  276. package/lib/_common/deferred-promise.d.ts +0 -12
  277. package/lib/_common/exceptions.d.ts +0 -109
  278. package/lib/_common/queries.gql.d.ts +0 -10
  279. package/lib/_common/run-outside-angular.d.ts +0 -14
  280. package/lib/_common/utils.d.ts +0 -3
  281. package/lib/api/contact-card.gql.d.ts +0 -7
  282. package/lib/api/contact-card.service.d.ts +0 -52
  283. package/lib/api/contact-card2.gql.d.ts +0 -34
  284. package/lib/api/contact-card2.service.d.ts +0 -49
  285. package/lib/api/file.service.d.ts +0 -18
  286. package/lib/api/item2.gql.d.ts +0 -96
  287. package/lib/api/item2.service.d.ts +0 -177
  288. package/lib/api/key-exchange.gql.d.ts +0 -9
  289. package/lib/api/key-exchange.service.d.ts +0 -39
  290. package/lib/api/key-exchange.types.d.ts +0 -196
  291. package/lib/api/key-exchange2.gql.d.ts +0 -125
  292. package/lib/api/key-exchange2.service.d.ts +0 -187
  293. package/lib/api/lock.gql.d.ts +0 -27
  294. package/lib/api/lock.service.d.ts +0 -25
  295. package/lib/api/lr-apollo.service.d.ts +0 -15
  296. package/lib/api/lr-graphql/lr-graphql.service.d.ts +0 -60
  297. package/lib/api/lr-graphql/lr-merged-mutation.d.ts +0 -27
  298. package/lib/api/lr-graphql/lr-mutation-base.d.ts +0 -28
  299. package/lib/api/lr-graphql/lr-mutation.d.ts +0 -8
  300. package/lib/api/lr-graphql/lr.service.d.ts +0 -9
  301. package/lib/api/message.service.d.ts +0 -58
  302. package/lib/api/persist.service.d.ts +0 -31
  303. package/lib/api/query-processor/common-processors.service.d.ts +0 -36
  304. package/lib/api/query-processor/query-processor.service.d.ts +0 -18
  305. package/lib/api/query-processor/tp-password-reset-processor.service.d.ts +0 -15
  306. package/lib/api/shared-contact-card.service.d.ts +0 -33
  307. package/lib/api/shared-contact-card2.gql.d.ts +0 -36
  308. package/lib/api/shared-contact-card2.service.d.ts +0 -45
  309. package/lib/api/time.service.d.ts +0 -16
  310. package/lib/api/types/graphql.types.d.ts +0 -29
  311. package/lib/api/types/lr-graphql.types.d.ts +0 -385
  312. package/lib/auth/auth.config.d.ts +0 -5
  313. package/lib/auth/auth.gql.d.ts +0 -15
  314. package/lib/auth/auth.types.d.ts +0 -66
  315. package/lib/auth/idle.service.d.ts +0 -40
  316. package/lib/auth/idle.types.d.ts +0 -10
  317. package/lib/auth/lbop.service.d.ts +0 -91
  318. package/lib/auth/life-ready-auth.service.d.ts +0 -46
  319. package/lib/auth/password.service.d.ts +0 -78
  320. package/lib/auth/register.service.d.ts +0 -25
  321. package/lib/auth/two-factor.service.d.ts +0 -15
  322. package/lib/category/category-meta.service.d.ts +0 -23
  323. package/lib/category/category.gql.d.ts +0 -45
  324. package/lib/category/category.service.d.ts +0 -67
  325. package/lib/category/category.types.d.ts +0 -79
  326. package/lib/cryptography/cryptography.types.d.ts +0 -83
  327. package/lib/cryptography/encryption.service.d.ts +0 -41
  328. package/lib/cryptography/key-factory.service.d.ts +0 -38
  329. package/lib/cryptography/key-graph.service.d.ts +0 -33
  330. package/lib/cryptography/key-meta.service.d.ts +0 -44
  331. package/lib/cryptography/key.service.d.ts +0 -36
  332. package/lib/cryptography/slip39.service.d.ts +0 -43
  333. package/lib/cryptography/web-crypto.service.d.ts +0 -5
  334. package/lib/life-ready.config.d.ts +0 -14
  335. package/lib/life-ready.module.d.ts +0 -5
  336. package/lib/plan/plan.gql.d.ts +0 -11
  337. package/lib/plan/plan.service.d.ts +0 -33
  338. package/lib/plan/plan.types.d.ts +0 -31
  339. package/lib/record/record-attachment.service.d.ts +0 -16
  340. package/lib/record/record.gql.d.ts +0 -14
  341. package/lib/record/record.service.d.ts +0 -25
  342. package/lib/record/record.types.d.ts +0 -57
  343. package/lib/record-type/record-type.service.d.ts +0 -11
  344. package/lib/record-type/record-type.types.d.ts +0 -50
  345. package/lib/scenario/approvals/scenario-approval.gql.d.ts +0 -7
  346. package/lib/scenario/approvals/scenario-approval.types.d.ts +0 -63
  347. package/lib/scenario/approvals/scenario-approver.service.d.ts +0 -32
  348. package/lib/scenario/claimants/scenario-claimant.gql.d.ts +0 -5
  349. package/lib/scenario/claimants/scenario-claimant.service.d.ts +0 -17
  350. package/lib/scenario/claimants/scenario-claimant.types.d.ts +0 -18
  351. package/lib/scenario/receivers/scenario-receiver.gql.d.ts +0 -8
  352. package/lib/scenario/receivers/scenario-receiver.service.d.ts +0 -30
  353. package/lib/scenario/receivers/scenario-receiver.types.d.ts +0 -54
  354. package/lib/scenario/scenario-setup.service.d.ts +0 -22
  355. package/lib/scenario/scenario.gql.d.ts +0 -34
  356. package/lib/scenario/scenario.service.d.ts +0 -58
  357. package/lib/scenario/scenario.types.d.ts +0 -217
  358. package/lib/search/search.gql.d.ts +0 -1
  359. package/lib/search/search.service.d.ts +0 -25
  360. package/lib/search/search.types.d.ts +0 -20
  361. package/lib/trusted-parties/tp-password-reset-request.service.d.ts +0 -20
  362. package/lib/trusted-parties/tp-password-reset-user.service.d.ts +0 -41
  363. package/lib/trusted-parties/tp-password-reset.gql.d.ts +0 -218
  364. package/lib/trusted-parties/tp-password-reset.service.d.ts +0 -131
  365. package/lib/trusted-parties/trusted-party.gql.d.ts +0 -9
  366. package/lib/trusted-parties/trusted-party.service.d.ts +0 -44
  367. package/lib/trusted-parties/trusted-party.types.d.ts +0 -102
  368. package/lib/trusted-parties/trusted-party2.gql.d.ts +0 -79
  369. package/lib/trusted-parties/trusted-party2.service.d.ts +0 -114
  370. package/lib/users/profile-details.service.d.ts +0 -21
  371. package/lib/users/profile.gql.d.ts +0 -11
  372. package/lib/users/profile.service.d.ts +0 -35
  373. package/lib/users/profile.types.d.ts +0 -96
  374. package/lib/users/user.gql.d.ts +0 -9
  375. package/lib/users/user.service.d.ts +0 -12
  376. package/lib/users/user.types.d.ts +0 -23
  377. package/lifeready-core.d.ts +0 -9
  378. package/lifeready-core.metadata.json +0 -1
@@ -0,0 +1,482 @@
1
+ import { Injectable, Injector, NgZone } from '@angular/core';
2
+ import { KeyService } from '../cryptography/key.service';
3
+ import { EncryptionService } from '../cryptography/encryption.service';
4
+ import {
5
+ CreateTpPasswordResetMutation,
6
+ DeleteTpPasswordResetMutation,
7
+ TpPasswordResetQuery,
8
+ UpdateTpPasswordResetMutation,
9
+ CancelTpPasswordResetRequestMutation,
10
+ } from './tp-password-reset.gql';
11
+ import { KeyGraphService } from '../cryptography/key-graph.service';
12
+ import * as slip from '../cryptography/slip39.service';
13
+ import {
14
+ LrBadArgumentException,
15
+ LrBadLogicException,
16
+ } from '../_common/exceptions';
17
+ import { PartialAssemblyKey } from '../scenario/scenario.types';
18
+ import { JWK } from 'node-jose';
19
+ import { Key } from '../cryptography/cryptography.types';
20
+ import { KeyFactoryService } from '../cryptography/key-factory.service';
21
+ import { LrGraphQLService, LrMutation, LrService } from '../api/lr-graphql';
22
+ import { TpNode } from '../api/types';
23
+ import { RunOutsideAngular } from '../_common/run-outside-angular';
24
+
25
+ export class CreateSubAssembliesInput {
26
+ name: string;
27
+ quorum: number;
28
+ singleReject: boolean;
29
+ approverTps: TpNode[];
30
+ }
31
+
32
+ export class UpdateSubAssembliesInput extends CreateSubAssembliesInput {
33
+ id: string;
34
+ }
35
+
36
+ export class CreateTpPasswordResetInput {
37
+ quorum: number;
38
+ singleReject: boolean;
39
+ createSubAssemblies: CreateSubAssembliesInput[];
40
+ }
41
+
42
+ export class UpdateTpPasswordResetInput extends CreateTpPasswordResetInput {
43
+ updateSubAssemblies: UpdateSubAssembliesInput[];
44
+ }
45
+
46
+ export interface TpAssemblyApprovers {
47
+ id: string;
48
+ tp: {
49
+ id: string;
50
+ };
51
+ sharedKey: Key;
52
+ sharedCipherData?: string;
53
+ sharedCipherDataClearJson?: any;
54
+ sharedCipherApprovalData?: string;
55
+ sharedCipherApprovalDataClearJson?: any;
56
+ }
57
+
58
+ export interface TpSubAssembly {
59
+ id: string;
60
+ singleReject: boolean;
61
+ quorum: number;
62
+ subjectCipherData: string;
63
+ plainSubjectCipherData: any;
64
+ approvers: TpAssemblyApprovers[];
65
+ }
66
+
67
+ export interface TpAssembly {
68
+ singleReject: boolean;
69
+ quorum: number;
70
+ subjectKey: Key;
71
+ assemblyKey: Key;
72
+ assemblyCipherData: string;
73
+ plainAssemblyCipherData: any;
74
+ subAssemblies: TpSubAssembly[];
75
+ }
76
+
77
+ export interface TpPasswordReset {
78
+ id: string;
79
+ assembly: TpAssembly;
80
+ applied: boolean;
81
+ }
82
+
83
+ export interface RequestResetResult {
84
+ id: string;
85
+ associate_reset_user_token: string;
86
+ reset_username: string;
87
+ }
88
+
89
+ @RunOutsideAngular({
90
+ ngZoneName: 'ngZone',
91
+ })
92
+ @Injectable({
93
+ providedIn: 'root',
94
+ })
95
+ export class TpPasswordResetService extends LrService {
96
+ public static SLIP39_PASSPHRASE = 'lifeready';
97
+
98
+ constructor(
99
+ private ngZone: NgZone,
100
+ private injector: Injector,
101
+ private keyService: KeyService,
102
+ private keyFactory: KeyFactoryService,
103
+ private encryptionService: EncryptionService,
104
+ private keyGraph: KeyGraphService,
105
+ private slip39Service: slip.Slip39Service
106
+ ) {
107
+ super(injector);
108
+ }
109
+
110
+ async getReset() {
111
+ return (
112
+ await this.query({
113
+ query: TpPasswordResetQuery,
114
+ })
115
+ ).tpPasswordReset;
116
+ }
117
+
118
+ createReset(input: CreateTpPasswordResetInput) {
119
+ return this.mutate(this.createResetMutation(input));
120
+ }
121
+
122
+ async createResetMutation(input: CreateTpPasswordResetInput) {
123
+ const { mutationInput } = await this._createReset(
124
+ input,
125
+ async (rawAssemblyKey) => {
126
+ return this.prepareSlip39(
127
+ input.createSubAssemblies,
128
+ input.quorum,
129
+ rawAssemblyKey
130
+ );
131
+ }
132
+ );
133
+
134
+ return new LrMutation({
135
+ mutation: CreateTpPasswordResetMutation,
136
+ variables: {
137
+ input: mutationInput,
138
+ },
139
+ });
140
+ }
141
+
142
+ deleteReset() {
143
+ return this.mutate(this.deleteResetMutation());
144
+ }
145
+
146
+ deleteResetMutation() {
147
+ return new LrMutation({
148
+ mutation: DeleteTpPasswordResetMutation,
149
+ });
150
+ }
151
+
152
+ updateReset(input: UpdateTpPasswordResetInput) {
153
+ return this.mutate(this.updateResetMutation(input));
154
+ }
155
+
156
+ async updateResetMutation(input: UpdateTpPasswordResetInput) {
157
+ const passwordReset = await this.getReset();
158
+
159
+ const {
160
+ mutationInput,
161
+ subjectKey,
162
+ slipAssembly,
163
+ assemblyKeyParams,
164
+ } = await this._createReset(input, async (rawAssemblyKey) => {
165
+ return this.prepareSlip39(
166
+ input.createSubAssemblies.concat(input.updateSubAssemblies),
167
+ input.quorum,
168
+ rawAssemblyKey
169
+ );
170
+ });
171
+
172
+ const updateSubAssemblies = await Promise.all(
173
+ input.updateSubAssemblies.map(async (sa, saIndex) => {
174
+ const subjectCipherData = await this.encryptionService.encryptToString(
175
+ subjectKey,
176
+ {
177
+ name: sa.name,
178
+ }
179
+ );
180
+
181
+ // Get the existing sub-assembly
182
+ const existingSa = passwordReset.assembly.subAssemblies.edges.find(
183
+ (edge) => edge.node.id === sa.id
184
+ ).node;
185
+
186
+ // Get approvers that do not exist yet
187
+ const createApprovers = [];
188
+ const updateApprovers = [];
189
+
190
+ sa.approverTps.forEach((tp) => {
191
+ const approver = existingSa.approvers.edges.find(
192
+ (edge) => edge.node.tp.id === tp.id
193
+ )?.node;
194
+ if (approver) {
195
+ updateApprovers.push({
196
+ tp,
197
+ approverId: approver.id,
198
+ });
199
+ } else {
200
+ createApprovers.push({
201
+ tp,
202
+ });
203
+ }
204
+ });
205
+
206
+ return {
207
+ subAssemblyId: sa.id,
208
+ singleReject: sa.singleReject,
209
+ quorum: sa.quorum,
210
+ subjectCipherData,
211
+ createApprovers: await Promise.all(
212
+ createApprovers.map(async ({ tp }, approverIndex) =>
213
+ this.prepareApprover({
214
+ tp,
215
+ approverIndex,
216
+ saIndex: saIndex + input.createSubAssemblies.length, // slipAssembly is all sub-assemblies combined
217
+ slipAssembly,
218
+ assemblyKeyParams,
219
+ subjectKey,
220
+ })
221
+ )
222
+ ),
223
+ updateApprovers: await Promise.all(
224
+ updateApprovers.map(async ({ tp, approverId }, approverIndex) =>
225
+ this.prepareApprover({
226
+ approverId,
227
+ tp,
228
+ approverIndex: approverIndex + createApprovers.length,
229
+ saIndex: saIndex + input.createSubAssemblies.length, // slipAssembly is all sub-assemblies combined
230
+ slipAssembly,
231
+ assemblyKeyParams,
232
+ subjectKey,
233
+ })
234
+ )
235
+ ),
236
+ };
237
+ })
238
+ );
239
+
240
+ return new LrMutation({
241
+ mutation: UpdateTpPasswordResetMutation,
242
+ variables: {
243
+ input: {
244
+ ...mutationInput,
245
+ assembly: {
246
+ ...mutationInput.assembly,
247
+ updateSubAssemblies,
248
+ },
249
+ },
250
+ },
251
+ });
252
+ }
253
+
254
+ cancelResetRequest() {
255
+ return this.mutate(this.cancelResetRequestMutation());
256
+ }
257
+
258
+ cancelResetRequestMutation() {
259
+ return new LrMutation({
260
+ mutation: CancelTpPasswordResetRequestMutation,
261
+ });
262
+ }
263
+
264
+ validateApprovers(approvers: TpNode[]): void {
265
+ // Ensure all approvers have mkSharedKey.
266
+ for (const tp of approvers) {
267
+ if (!tp.currentUserSharedKey.userSharedKey.mkSharedKey) {
268
+ const msg = `tp ${tp.other.username} does not have mkSharedKey`;
269
+ console.log(msg);
270
+ throw new LrBadArgumentException(msg);
271
+ }
272
+ }
273
+ }
274
+
275
+ private async prepareApprover({
276
+ approverId,
277
+ tp,
278
+ approverIndex,
279
+ saIndex,
280
+ slipAssembly,
281
+ assemblyKeyParams,
282
+ subjectKey,
283
+ }: {
284
+ approverId?: string;
285
+ tp: TpNode;
286
+ approverIndex: number;
287
+ saIndex: number;
288
+ slipAssembly: slip.Assembly;
289
+ assemblyKeyParams: object;
290
+ subjectKey: JWK.Key;
291
+ }) {
292
+ if (!tp.currentUserSharedKey.userSharedKey.mkSharedKey) {
293
+ throw new LrBadArgumentException(
294
+ `Tp ${tp.other.username} does not have mkSharedKey. Need to reshared it first.`
295
+ );
296
+ }
297
+
298
+ const sharedKey = await this.keyFactory.createKey();
299
+ const tpMkSharedKey = await this.keyGraph.getKey(
300
+ tp.currentUserSharedKey.userSharedKey.mkSharedKey.id
301
+ );
302
+ // For TP to access shared_key
303
+ const tpMkSharedKeyWrappedSharedKey = await this.encryptionService.encryptToString(
304
+ tpMkSharedKey.jwk,
305
+ sharedKey.toJSON(true)
306
+ );
307
+ // For subject to access shared_key
308
+ const subjectKeyWrappedSharedKey = await this.encryptionService.encryptToString(
309
+ subjectKey,
310
+ sharedKey.toJSON(true)
311
+ );
312
+
313
+ const saSlip = slipAssembly.subAssemblies[saIndex];
314
+ if (saSlip.index !== saIndex) {
315
+ // Paranoia
316
+ throw new LrBadLogicException(
317
+ 'slip sub assembly index should match with array index'
318
+ );
319
+ }
320
+
321
+ // If quorum is 1, then using the same share for every member.
322
+ const share =
323
+ saSlip.threshold === 1 ? saSlip.shares[0] : saSlip.shares[approverIndex];
324
+
325
+ const partialAssemblyKey: PartialAssemblyKey = {
326
+ slip39: {
327
+ share,
328
+ subAssembly: {
329
+ quorum: saSlip.threshold,
330
+ size: saSlip.size,
331
+ },
332
+ },
333
+ assemblyKeyParams,
334
+ };
335
+
336
+ console.log('partialAssemblyKey', partialAssemblyKey);
337
+
338
+ return {
339
+ tpMkSharedKeyId: tpMkSharedKey.id,
340
+ tpMkSharedKeyWrappedSharedKey,
341
+ subjectKeyWrappedSharedKey,
342
+ sharedCipherData: await this.encryptionService.encryptToString(
343
+ sharedKey,
344
+ { a: '123' }
345
+ ),
346
+ sharedCipherApprovalData: '',
347
+ sharedCipherPartialAssemblyKey: await this.encryptionService.encryptToString(
348
+ sharedKey,
349
+ partialAssemblyKey
350
+ ),
351
+ approverId: approverId || void 0,
352
+ tpId: approverId ? void 0 : tp.id,
353
+ };
354
+ }
355
+
356
+ // Prepare slip39
357
+ private async prepareSlip39(
358
+ subAssemblies,
359
+ assemblyQuorum: number,
360
+ rawAssemblyKey: string
361
+ ): Promise<slip.Assembly> {
362
+ // Is there enough sub assemblies to meet quorum
363
+ if (subAssemblies.length < assemblyQuorum) {
364
+ throw new LrBadArgumentException(
365
+ 'Not enough sub assemblies to meet quorum'
366
+ );
367
+ }
368
+
369
+ const slipAssembly = new slip.Assembly(assemblyQuorum);
370
+
371
+ subAssemblies.forEach((sa, index) => {
372
+ let approverCount = sa.approverTps.length;
373
+
374
+ // slip39 restricts quorum == 1 to have only 1 member. So we just share the same
375
+ // partial key for all sub assembly members.
376
+ if (sa.quorum === 1) {
377
+ approverCount = 1;
378
+ }
379
+ slipAssembly.addSubAssembly(
380
+ new slip.SubAssembly(index, sa.quorum, approverCount)
381
+ );
382
+ });
383
+
384
+ await this.slip39Service.generateShares(
385
+ rawAssemblyKey,
386
+ TpPasswordResetService.SLIP39_PASSPHRASE,
387
+ slipAssembly
388
+ );
389
+ return slipAssembly;
390
+ }
391
+
392
+ private async _createReset(
393
+ input: CreateTpPasswordResetInput,
394
+ createSlipAssembly
395
+ ): Promise<any> {
396
+ // Create subject key
397
+ const masterKey = await this.keyService.getCurrentMasterKey();
398
+ const subjectKey = await this.keyFactory.createKey();
399
+ const assemblyKey = await this.keyFactory.createKey();
400
+ const { k: rawAssemblyKey, ...assemblyKeyParams } = assemblyKey.toJSON(
401
+ true
402
+ ) as any;
403
+ const assemblyKeyVerifierPrk = await this.keyFactory.createPkcSignKey();
404
+ const wrappedAssemblyKeyVerifierPrk = await this.encryptionService.encryptToString(
405
+ assemblyKey,
406
+ assemblyKeyVerifierPrk.toJSON(true)
407
+ );
408
+
409
+ const masterKeyWrappedSubjectKey = await this.encryptionService.encryptToString(
410
+ masterKey.jwk,
411
+ subjectKey.toJSON(true)
412
+ );
413
+ const subjectKeyWrappedAssemblyKey = await this.encryptionService.encryptToString(
414
+ subjectKey,
415
+ assemblyKey.toJSON(true)
416
+ );
417
+
418
+ // Encrypt the rootKey with the assemblyKey
419
+ const rootKey = await this.keyService.getCurrentRootKey();
420
+
421
+ const assemblyCipherData = await this.encryptionService.encryptToString(
422
+ assemblyKey,
423
+ {
424
+ rootKey: rootKey.jwk.toJSON(true),
425
+ }
426
+ );
427
+
428
+ const slipAssembly = await createSlipAssembly(rawAssemblyKey);
429
+ // const slipAssembly = await this.prepareSlip39(input.createSubAssemblies, input.quorum, rawAssemblyKey);
430
+
431
+ const createSubAssemblies = await Promise.all(
432
+ input.createSubAssemblies.map(async (sa, saIndex) => {
433
+ const subjectCipherData = await this.encryptionService.encryptToString(
434
+ subjectKey,
435
+ {
436
+ name: sa.name,
437
+ }
438
+ );
439
+
440
+ return {
441
+ singleReject: sa.singleReject,
442
+ quorum: sa.quorum,
443
+ subjectCipherData,
444
+ createApprovers: await Promise.all(
445
+ sa.approverTps.map(async (approverTp, approverIndex) =>
446
+ this.prepareApprover({
447
+ tp: approverTp,
448
+ approverIndex,
449
+ saIndex,
450
+ slipAssembly,
451
+ assemblyKeyParams,
452
+ subjectKey,
453
+ })
454
+ )
455
+ ),
456
+ };
457
+ })
458
+ );
459
+
460
+ return {
461
+ subjectKey,
462
+ slipAssembly,
463
+ assemblyKeyParams,
464
+ mutationInput: {
465
+ assembly: {
466
+ singleReject: input.singleReject,
467
+ quorum: input.quorum,
468
+ masterKeyId: masterKey.id,
469
+ masterKeyWrappedSubjectKey,
470
+ subjectKeyWrappedAssemblyKey,
471
+ subjectCipherData: '',
472
+ assemblyCipherData,
473
+ createSubAssemblies,
474
+ assemblyKeyVerifierPbk: JSON.stringify(
475
+ assemblyKeyVerifierPrk.toJSON()
476
+ ),
477
+ wrappedAssemblyKeyVerifierPrk,
478
+ },
479
+ },
480
+ };
481
+ }
482
+ }
@@ -0,0 +1,159 @@
1
+ import gql from 'graphql-tag';
2
+ import { KeyGraphField } from '../_common/queries.gql';
3
+ import {
4
+ KeyExchangeFields,
5
+ UserSharedKeyFields,
6
+ } from '../api/key-exchange.gql';
7
+ import { SharedContactCardFields } from '../api/shared-contact-card.service';
8
+
9
+ export const TrustedPartyProperties = `
10
+ id
11
+ user {
12
+ id
13
+ username
14
+ }
15
+ other{
16
+ id
17
+ username,
18
+ features {
19
+ shareVault
20
+ }
21
+ }
22
+ sharedContactCard {
23
+ ${SharedContactCardFields}
24
+ }
25
+ myContactCard {
26
+ ${SharedContactCardFields}
27
+ }
28
+ sharedScenarios {
29
+ edges {
30
+ node {
31
+ id
32
+ }
33
+ }
34
+ }
35
+ sharedItems {
36
+ directories {
37
+ edges {
38
+ node {
39
+ id
40
+ }
41
+ }
42
+ }
43
+ }
44
+ currentUserSharedKey {
45
+ userSharedKey {
46
+ keyExchange {
47
+ ${KeyExchangeFields}
48
+ }
49
+ ${UserSharedKeyFields}
50
+ }
51
+ }`;
52
+
53
+ export const GetTrustedPartiesQuery = gql`
54
+ query GetTrustedPartiesQuery {
55
+ tps {
56
+ edges {
57
+ node {
58
+ ${TrustedPartyProperties}
59
+ }
60
+ }
61
+ }
62
+ ${KeyGraphField}
63
+ }`;
64
+
65
+ export const GetAllTrustedPartiesQuery = gql`
66
+ query GetAllTrustedPartiesQuery($userId: ID, $isExpired: Boolean, $inviteState: String, $sentInviteState: String) {
67
+ tps {
68
+ edges {
69
+ node {
70
+ ${TrustedPartyProperties}
71
+ }
72
+ }
73
+ }
74
+ invites: keyExchanges(
75
+ responder: $userId
76
+ isExpired: $isExpired
77
+ state: $inviteState
78
+ orderBy: "state,-created"
79
+ ) {
80
+ edges {
81
+ node {
82
+ ${KeyExchangeFields}
83
+ }
84
+ }
85
+ }
86
+ sentInvites: keyExchanges(
87
+ initiator: $userId
88
+ isExpired: $isExpired
89
+ state: $sentInviteState
90
+ orderBy: "state,-created"
91
+ ) {
92
+ edges {
93
+ node {
94
+ ${KeyExchangeFields}
95
+ }
96
+ }
97
+ }
98
+ ${KeyGraphField}
99
+ }`;
100
+
101
+ export const GetTrustedPartyQuery = gql`
102
+ query GetTrustedPartyQuery($partyId: LrRelayIdInput!) {
103
+ tp(id: $partyId) {
104
+ ${TrustedPartyProperties}
105
+ }
106
+ ${KeyGraphField}
107
+ }`;
108
+
109
+ export const DeclineTrustedPartyInvitationMutation = gql`
110
+ mutation DeclineKeyExchange($input: DeclineKeyExchangeInput!) {
111
+ declineKeyExchange(input: $input) {
112
+ keyExchange {
113
+ id
114
+ }
115
+ }
116
+ }
117
+ `;
118
+
119
+ export const CancelTrustedPartyInvitationMutation = gql`
120
+ mutation CancelKeyExchange($input: CancelKeyExchangeInput!) {
121
+ cancelKeyExchange(input: $input) {
122
+ keyExchange {
123
+ id
124
+ }
125
+ }
126
+ }
127
+ `;
128
+
129
+ export const DeleteTrustedPartyMutation = gql`
130
+ mutation DeleteTpMutation($input: DeleteTpInput!) {
131
+ deleteTp(input: $input) {
132
+ id
133
+ }
134
+ }
135
+ `;
136
+
137
+ export const ShareCategoryMutation = gql`
138
+ mutation ShareDirectory($input: ShareDirectoryInput!) {
139
+ shareDirectory(input: $input) {
140
+ tpDirectory {
141
+ item {
142
+ plainMeta
143
+ }
144
+ }
145
+ }
146
+ }
147
+ `;
148
+
149
+ export const UnshareCategoryMutation = gql`
150
+ mutation UnshareDirectory($input: UnshareDirectoryInput!) {
151
+ unshareDirectory(input: $input) {
152
+ tpDirectory {
153
+ item {
154
+ plainMeta
155
+ }
156
+ }
157
+ }
158
+ }
159
+ `;