@lifeready/core 1.0.1 → 1.0.2

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 (380) hide show
  1. package/README.md +62 -62
  2. package/bundles/lifeready-core.umd.js +15939 -0
  3. package/bundles/lifeready-core.umd.js.map +1 -0
  4. package/bundles/lifeready-core.umd.min.js +16 -0
  5. package/bundles/lifeready-core.umd.min.js.map +1 -0
  6. package/esm2015/lib/_common/ast.js +40 -0
  7. package/esm2015/lib/_common/deferred-promise.js +24 -0
  8. package/esm2015/lib/_common/exceptions.js +157 -0
  9. package/esm2015/lib/_common/queries.gql.js +190 -0
  10. package/esm2015/lib/_common/run-outside-angular.js +79 -0
  11. package/esm2015/lib/_common/types.js +1 -0
  12. package/esm2015/lib/_common/utils.js +44 -0
  13. package/esm2015/lib/api/contact-card.gql.js +79 -0
  14. package/esm2015/lib/api/contact-card.service.js +154 -0
  15. package/esm2015/lib/api/contact-card2.gql.js +60 -0
  16. package/esm2015/lib/api/contact-card2.service.js +103 -0
  17. package/esm2015/lib/api/file.service.js +74 -0
  18. package/esm2015/lib/api/item2.gql.js +110 -0
  19. package/esm2015/lib/api/item2.service.js +311 -0
  20. package/esm2015/lib/api/key-exchange.gql.js +188 -0
  21. package/esm2015/lib/api/key-exchange.service.js +442 -0
  22. package/esm2015/lib/api/key-exchange.types.js +18 -0
  23. package/esm2015/lib/api/key-exchange2.gql.js +171 -0
  24. package/esm2015/lib/api/key-exchange2.service.js +479 -0
  25. package/esm2015/lib/api/lock.gql.js +40 -0
  26. package/esm2015/lib/api/lock.service.js +64 -0
  27. package/esm2015/lib/api/lr-apollo.service.js +46 -0
  28. package/esm2015/lib/api/lr-graphql/index.js +6 -0
  29. package/esm2015/lib/api/lr-graphql/lr-graphql.service.js +155 -0
  30. package/esm2015/lib/api/lr-graphql/lr-merged-mutation.js +213 -0
  31. package/esm2015/lib/api/lr-graphql/lr-mutation-base.js +51 -0
  32. package/esm2015/lib/api/lr-graphql/lr-mutation.js +48 -0
  33. package/esm2015/lib/api/lr-graphql/lr.service.js +18 -0
  34. package/esm2015/lib/api/message.service.js +138 -0
  35. package/esm2015/lib/api/persist.service.js +181 -0
  36. package/esm2015/lib/api/query-processor/common-processors.service.js +93 -0
  37. package/esm2015/lib/api/query-processor/index.js +3 -0
  38. package/esm2015/lib/api/query-processor/query-processor.service.js +192 -0
  39. package/esm2015/lib/api/query-processor/tp-password-reset-processor.service.js +109 -0
  40. package/esm2015/lib/api/shared-contact-card.service.js +119 -0
  41. package/esm2015/lib/api/shared-contact-card2.gql.js +41 -0
  42. package/esm2015/lib/api/shared-contact-card2.service.js +117 -0
  43. package/esm2015/lib/api/time.service.js +146 -0
  44. package/esm2015/lib/api/types/graphql.types.js +7 -0
  45. package/esm2015/lib/api/types/index.js +3 -0
  46. package/esm2015/lib/api/types/lr-graphql.types.js +71 -0
  47. package/esm2015/lib/auth/auth.config.js +57 -0
  48. package/esm2015/lib/auth/auth.gql.js +48 -0
  49. package/esm2015/lib/auth/auth.types.js +27 -0
  50. package/esm2015/lib/auth/idle.service.js +168 -0
  51. package/esm2015/lib/auth/idle.types.js +7 -0
  52. package/esm2015/lib/auth/lbop.service.js +355 -0
  53. package/esm2015/lib/auth/life-ready-auth.service.js +500 -0
  54. package/esm2015/lib/auth/password.service.js +320 -0
  55. package/esm2015/lib/auth/register.service.js +172 -0
  56. package/esm2015/lib/auth/two-factor.service.js +74 -0
  57. package/esm2015/lib/category/category-meta.service.js +99 -0
  58. package/esm2015/lib/category/category.gql.js +406 -0
  59. package/esm2015/lib/category/category.service.js +390 -0
  60. package/esm2015/lib/category/category.types.js +29 -0
  61. package/esm2015/lib/cryptography/cryptography.types.js +11 -0
  62. package/esm2015/lib/cryptography/encryption.service.js +189 -0
  63. package/esm2015/lib/cryptography/key-factory.service.js +237 -0
  64. package/esm2015/lib/cryptography/key-graph.service.js +280 -0
  65. package/esm2015/lib/cryptography/key-meta.service.js +200 -0
  66. package/esm2015/lib/cryptography/key.service.js +124 -0
  67. package/esm2015/lib/cryptography/slip39.service.js +169 -0
  68. package/esm2015/lib/cryptography/web-crypto.service.js +29 -0
  69. package/esm2015/lib/life-ready.config.js +84 -0
  70. package/esm2015/lib/life-ready.module.js +74 -0
  71. package/esm2015/lib/plan/plan.gql.js +123 -0
  72. package/esm2015/lib/plan/plan.service.js +149 -0
  73. package/esm2015/lib/plan/plan.types.js +11 -0
  74. package/esm2015/lib/record/record-attachment.service.js +101 -0
  75. package/esm2015/lib/record/record.gql.js +179 -0
  76. package/esm2015/lib/record/record.service.js +206 -0
  77. package/esm2015/lib/record/record.types.js +15 -0
  78. package/esm2015/lib/record-type/record-type.service.js +75 -0
  79. package/esm2015/lib/record-type/record-type.types.js +28 -0
  80. package/esm2015/lib/scenario/approvals/scenario-approval.gql.js +105 -0
  81. package/esm2015/lib/scenario/approvals/scenario-approval.types.js +1 -0
  82. package/esm2015/lib/scenario/approvals/scenario-approver.service.js +300 -0
  83. package/esm2015/lib/scenario/claimants/scenario-claimant.gql.js +52 -0
  84. package/esm2015/lib/scenario/claimants/scenario-claimant.service.js +97 -0
  85. package/esm2015/lib/scenario/claimants/scenario-claimant.types.js +1 -0
  86. package/esm2015/lib/scenario/receivers/scenario-receiver.gql.js +150 -0
  87. package/esm2015/lib/scenario/receivers/scenario-receiver.service.js +229 -0
  88. package/esm2015/lib/scenario/receivers/scenario-receiver.types.js +1 -0
  89. package/esm2015/lib/scenario/scenario-setup.service.js +269 -0
  90. package/esm2015/lib/scenario/scenario.gql.js +368 -0
  91. package/esm2015/lib/scenario/scenario.service.js +611 -0
  92. package/esm2015/lib/scenario/scenario.types.js +64 -0
  93. package/esm2015/lib/search/search.gql.js +62 -0
  94. package/esm2015/lib/search/search.service.js +156 -0
  95. package/esm2015/lib/search/search.types.js +6 -0
  96. package/esm2015/lib/trusted-parties/tp-password-reset-request.service.js +112 -0
  97. package/esm2015/lib/trusted-parties/tp-password-reset-user.service.js +129 -0
  98. package/esm2015/lib/trusted-parties/tp-password-reset.constants.js +4 -0
  99. package/esm2015/lib/trusted-parties/tp-password-reset.gql.js +232 -0
  100. package/esm2015/lib/trusted-parties/tp-password-reset.service.js +299 -0
  101. package/esm2015/lib/trusted-parties/trusted-party.gql.js +148 -0
  102. package/esm2015/lib/trusted-parties/trusted-party.service.js +326 -0
  103. package/esm2015/lib/trusted-parties/trusted-party.types.js +41 -0
  104. package/esm2015/lib/trusted-parties/trusted-party2.gql.js +87 -0
  105. package/esm2015/lib/trusted-parties/trusted-party2.service.js +215 -0
  106. package/esm2015/lib/users/profile-details.service.js +214 -0
  107. package/esm2015/lib/users/profile.gql.js +97 -0
  108. package/esm2015/lib/users/profile.service.js +169 -0
  109. package/esm2015/lib/users/profile.types.js +34 -0
  110. package/esm2015/lib/users/user.gql.js +60 -0
  111. package/esm2015/lib/users/user.service.js +79 -0
  112. package/esm2015/lib/users/user.types.js +5 -0
  113. package/esm2015/lifeready-core.js +10 -0
  114. package/esm2015/public-api.js +81 -0
  115. package/fesm2015/lifeready-core.js +13314 -0
  116. package/fesm2015/lifeready-core.js.map +1 -0
  117. package/lib/_common/ast.d.ts +11 -0
  118. package/lib/_common/deferred-promise.d.ts +12 -0
  119. package/lib/_common/exceptions.d.ts +109 -0
  120. package/lib/_common/queries.gql.d.ts +10 -0
  121. package/lib/_common/run-outside-angular.d.ts +14 -0
  122. package/{src/lib/_common/types.ts → lib/_common/types.d.ts} +10 -13
  123. package/lib/_common/utils.d.ts +3 -0
  124. package/lib/api/contact-card.gql.d.ts +7 -0
  125. package/lib/api/contact-card.service.d.ts +52 -0
  126. package/lib/api/contact-card2.gql.d.ts +34 -0
  127. package/lib/api/contact-card2.service.d.ts +49 -0
  128. package/lib/api/file.service.d.ts +18 -0
  129. package/lib/api/item2.gql.d.ts +96 -0
  130. package/lib/api/item2.service.d.ts +177 -0
  131. package/lib/api/key-exchange.gql.d.ts +9 -0
  132. package/lib/api/key-exchange.service.d.ts +39 -0
  133. package/lib/api/key-exchange.types.d.ts +196 -0
  134. package/lib/api/key-exchange2.gql.d.ts +125 -0
  135. package/lib/api/key-exchange2.service.d.ts +187 -0
  136. package/lib/api/lock.gql.d.ts +27 -0
  137. package/lib/api/lock.service.d.ts +25 -0
  138. package/lib/api/lr-apollo.service.d.ts +15 -0
  139. package/{src/lib/api/lr-graphql/index.ts → lib/api/lr-graphql/index.d.ts} +5 -5
  140. package/lib/api/lr-graphql/lr-graphql.service.d.ts +60 -0
  141. package/lib/api/lr-graphql/lr-merged-mutation.d.ts +27 -0
  142. package/lib/api/lr-graphql/lr-mutation-base.d.ts +28 -0
  143. package/lib/api/lr-graphql/lr-mutation.d.ts +8 -0
  144. package/lib/api/lr-graphql/lr.service.d.ts +9 -0
  145. package/lib/api/message.service.d.ts +58 -0
  146. package/lib/api/persist.service.d.ts +31 -0
  147. package/lib/api/query-processor/common-processors.service.d.ts +36 -0
  148. package/{src/lib/api/query-processor/index.ts → lib/api/query-processor/index.d.ts} +2 -2
  149. package/lib/api/query-processor/query-processor.service.d.ts +18 -0
  150. package/lib/api/query-processor/tp-password-reset-processor.service.d.ts +15 -0
  151. package/lib/api/shared-contact-card.service.d.ts +33 -0
  152. package/lib/api/shared-contact-card2.gql.d.ts +36 -0
  153. package/lib/api/shared-contact-card2.service.d.ts +45 -0
  154. package/lib/api/time.service.d.ts +16 -0
  155. package/lib/api/types/graphql.types.d.ts +29 -0
  156. package/{src/lib/api/types/index.ts → lib/api/types/index.d.ts} +2 -2
  157. package/lib/api/types/lr-graphql.types.d.ts +385 -0
  158. package/lib/auth/auth.config.d.ts +5 -0
  159. package/lib/auth/auth.gql.d.ts +15 -0
  160. package/lib/auth/auth.types.d.ts +66 -0
  161. package/lib/auth/idle.service.d.ts +40 -0
  162. package/lib/auth/idle.types.d.ts +10 -0
  163. package/lib/auth/lbop.service.d.ts +91 -0
  164. package/lib/auth/life-ready-auth.service.d.ts +59 -0
  165. package/lib/auth/password.service.d.ts +78 -0
  166. package/lib/auth/register.service.d.ts +25 -0
  167. package/lib/auth/two-factor.service.d.ts +15 -0
  168. package/lib/category/category-meta.service.d.ts +23 -0
  169. package/lib/category/category.gql.d.ts +45 -0
  170. package/lib/category/category.service.d.ts +67 -0
  171. package/lib/category/category.types.d.ts +79 -0
  172. package/lib/cryptography/cryptography.types.d.ts +83 -0
  173. package/lib/cryptography/encryption.service.d.ts +41 -0
  174. package/lib/cryptography/key-factory.service.d.ts +38 -0
  175. package/lib/cryptography/key-graph.service.d.ts +33 -0
  176. package/lib/cryptography/key-meta.service.d.ts +44 -0
  177. package/lib/cryptography/key.service.d.ts +36 -0
  178. package/lib/cryptography/slip39.service.d.ts +43 -0
  179. package/lib/cryptography/web-crypto.service.d.ts +5 -0
  180. package/lib/life-ready.config.d.ts +14 -0
  181. package/lib/life-ready.module.d.ts +5 -0
  182. package/lib/plan/plan.gql.d.ts +11 -0
  183. package/lib/plan/plan.service.d.ts +33 -0
  184. package/lib/plan/plan.types.d.ts +31 -0
  185. package/lib/record/record-attachment.service.d.ts +16 -0
  186. package/lib/record/record.gql.d.ts +14 -0
  187. package/lib/record/record.service.d.ts +25 -0
  188. package/lib/record/record.types.d.ts +57 -0
  189. package/lib/record-type/record-type.service.d.ts +11 -0
  190. package/lib/record-type/record-type.types.d.ts +50 -0
  191. package/lib/scenario/approvals/scenario-approval.gql.d.ts +7 -0
  192. package/lib/scenario/approvals/scenario-approval.types.d.ts +63 -0
  193. package/lib/scenario/approvals/scenario-approver.service.d.ts +32 -0
  194. package/lib/scenario/claimants/scenario-claimant.gql.d.ts +5 -0
  195. package/lib/scenario/claimants/scenario-claimant.service.d.ts +17 -0
  196. package/lib/scenario/claimants/scenario-claimant.types.d.ts +18 -0
  197. package/lib/scenario/receivers/scenario-receiver.gql.d.ts +8 -0
  198. package/lib/scenario/receivers/scenario-receiver.service.d.ts +30 -0
  199. package/lib/scenario/receivers/scenario-receiver.types.d.ts +54 -0
  200. package/lib/scenario/scenario-setup.service.d.ts +22 -0
  201. package/lib/scenario/scenario.gql.d.ts +34 -0
  202. package/lib/scenario/scenario.service.d.ts +58 -0
  203. package/lib/scenario/scenario.types.d.ts +217 -0
  204. package/lib/search/search.gql.d.ts +1 -0
  205. package/lib/search/search.service.d.ts +25 -0
  206. package/lib/search/search.types.d.ts +20 -0
  207. package/lib/trusted-parties/tp-password-reset-request.service.d.ts +20 -0
  208. package/lib/trusted-parties/tp-password-reset-user.service.d.ts +35 -0
  209. package/lib/trusted-parties/tp-password-reset.constants.d.ts +3 -0
  210. package/lib/trusted-parties/tp-password-reset.gql.d.ts +218 -0
  211. package/lib/trusted-parties/tp-password-reset.service.d.ts +130 -0
  212. package/lib/trusted-parties/trusted-party.gql.d.ts +9 -0
  213. package/lib/trusted-parties/trusted-party.service.d.ts +44 -0
  214. package/lib/trusted-parties/trusted-party.types.d.ts +102 -0
  215. package/lib/trusted-parties/trusted-party2.gql.d.ts +79 -0
  216. package/lib/trusted-parties/trusted-party2.service.d.ts +114 -0
  217. package/lib/users/profile-details.service.d.ts +21 -0
  218. package/lib/users/profile.gql.d.ts +11 -0
  219. package/lib/users/profile.service.d.ts +35 -0
  220. package/lib/users/profile.types.d.ts +96 -0
  221. package/lib/users/user.gql.d.ts +9 -0
  222. package/lib/users/user.service.d.ts +12 -0
  223. package/lib/users/user.types.d.ts +23 -0
  224. package/lifeready-core.d.ts +9 -0
  225. package/lifeready-core.metadata.json +1 -0
  226. package/package.json +29 -21
  227. package/{src/public-api.ts → public-api.d.ts} +77 -96
  228. package/karma.conf.js +0 -32
  229. package/ng-package.json +0 -26
  230. package/src/lib/_common/ast.ts +0 -75
  231. package/src/lib/_common/deferred-promise.ts +0 -35
  232. package/src/lib/_common/exceptions.ts +0 -189
  233. package/src/lib/_common/queries.gql.ts +0 -200
  234. package/src/lib/_common/run-outside-angular.ts +0 -125
  235. package/src/lib/_common/tests.ts +0 -82
  236. package/src/lib/_common/utils.ts +0 -57
  237. package/src/lib/api/api-mutation.spec.ts +0 -547
  238. package/src/lib/api/api-query.spec.ts +0 -40
  239. package/src/lib/api/contact-card.gql.ts +0 -85
  240. package/src/lib/api/contact-card.service.spec.ts +0 -249
  241. package/src/lib/api/contact-card.service.ts +0 -228
  242. package/src/lib/api/contact-card2.gql.ts +0 -93
  243. package/src/lib/api/contact-card2.service.spec.ts +0 -297
  244. package/src/lib/api/contact-card2.service.ts +0 -139
  245. package/src/lib/api/file.service.spec.ts +0 -14
  246. package/src/lib/api/file.service.ts +0 -81
  247. package/src/lib/api/item2.gql.ts +0 -211
  248. package/src/lib/api/item2.service.spec.ts +0 -1043
  249. package/src/lib/api/item2.service.ts +0 -481
  250. package/src/lib/api/key-exchange.gql.ts +0 -196
  251. package/src/lib/api/key-exchange.service.spec.ts +0 -470
  252. package/src/lib/api/key-exchange.service.ts +0 -731
  253. package/src/lib/api/key-exchange.types.ts +0 -235
  254. package/src/lib/api/key-exchange2.gql.ts +0 -310
  255. package/src/lib/api/key-exchange2.service.spec.ts +0 -892
  256. package/src/lib/api/key-exchange2.service.ts +0 -875
  257. package/src/lib/api/lock.gql.ts +0 -67
  258. package/src/lib/api/lock.service.spec.ts +0 -549
  259. package/src/lib/api/lock.service.ts +0 -57
  260. package/src/lib/api/lr-apollo.service.spec.ts +0 -27
  261. package/src/lib/api/lr-apollo.service.ts +0 -43
  262. package/src/lib/api/lr-graphql/lr-graphql.service.ts +0 -313
  263. package/src/lib/api/lr-graphql/lr-merged-mutation.ts +0 -377
  264. package/src/lib/api/lr-graphql/lr-mutation-base.ts +0 -67
  265. package/src/lib/api/lr-graphql/lr-mutation.ts +0 -74
  266. package/src/lib/api/lr-graphql/lr.service.ts +0 -28
  267. package/src/lib/api/message.service.spec.ts +0 -20
  268. package/src/lib/api/message.service.ts +0 -210
  269. package/src/lib/api/persist.service.spec.ts +0 -209
  270. package/src/lib/api/persist.service.ts +0 -220
  271. package/src/lib/api/query-processor/common-processors.service.ts +0 -148
  272. package/src/lib/api/query-processor/query-processor.service.ts +0 -240
  273. package/src/lib/api/query-processor/tp-password-reset-processor.service.ts +0 -177
  274. package/src/lib/api/shared-contact-card.service.ts +0 -156
  275. package/src/lib/api/shared-contact-card2.gql.ts +0 -76
  276. package/src/lib/api/shared-contact-card2.service.ts +0 -154
  277. package/src/lib/api/time.service.spec.ts +0 -48
  278. package/src/lib/api/time.service.ts +0 -155
  279. package/src/lib/api/types/graphql.types.ts +0 -48
  280. package/src/lib/api/types/lr-graphql.types.ts +0 -467
  281. package/src/lib/auth/auth.config.ts +0 -83
  282. package/src/lib/auth/auth.gql.ts +0 -62
  283. package/src/lib/auth/auth.types.ts +0 -79
  284. package/src/lib/auth/idle.service.spec.ts +0 -119
  285. package/src/lib/auth/idle.service.ts +0 -208
  286. package/src/lib/auth/idle.types.ts +0 -11
  287. package/src/lib/auth/lbop.service.spec.ts +0 -56
  288. package/src/lib/auth/lbop.service.ts +0 -539
  289. package/src/lib/auth/life-ready-auth.service.spec.ts +0 -70
  290. package/src/lib/auth/life-ready-auth.service.ts +0 -454
  291. package/src/lib/auth/password.service.spec.ts +0 -51
  292. package/src/lib/auth/password.service.ts +0 -438
  293. package/src/lib/auth/register.service.spec.ts +0 -31
  294. package/src/lib/auth/register.service.ts +0 -181
  295. package/src/lib/auth/two-factor.service.spec.ts +0 -21
  296. package/src/lib/auth/two-factor.service.ts +0 -69
  297. package/src/lib/category/category-meta.service.spec.ts +0 -28
  298. package/src/lib/category/category-meta.service.ts +0 -125
  299. package/src/lib/category/category.gql.ts +0 -449
  300. package/src/lib/category/category.service.spec.ts +0 -26
  301. package/src/lib/category/category.service.ts +0 -498
  302. package/src/lib/category/category.types.ts +0 -89
  303. package/src/lib/cryptography/cryptography.types.ts +0 -108
  304. package/src/lib/cryptography/encryption.service.spec.ts +0 -125
  305. package/src/lib/cryptography/encryption.service.ts +0 -243
  306. package/src/lib/cryptography/key-factory.service.spec.ts +0 -15
  307. package/src/lib/cryptography/key-factory.service.ts +0 -303
  308. package/src/lib/cryptography/key-graph.service.spec.ts +0 -16
  309. package/src/lib/cryptography/key-graph.service.ts +0 -354
  310. package/src/lib/cryptography/key-meta.service.spec.ts +0 -40
  311. package/src/lib/cryptography/key-meta.service.ts +0 -254
  312. package/src/lib/cryptography/key.service.spec.ts +0 -16
  313. package/src/lib/cryptography/key.service.ts +0 -154
  314. package/src/lib/cryptography/slip39.service.spec.ts +0 -44
  315. package/src/lib/cryptography/slip39.service.ts +0 -204
  316. package/src/lib/cryptography/web-crypto.service.ts +0 -22
  317. package/src/lib/life-ready.config.ts +0 -127
  318. package/src/lib/life-ready.module.ts +0 -81
  319. package/src/lib/plan/plan.gql.ts +0 -133
  320. package/src/lib/plan/plan.service.spec.ts +0 -294
  321. package/src/lib/plan/plan.service.ts +0 -198
  322. package/src/lib/plan/plan.types.ts +0 -37
  323. package/src/lib/record/record-attachment.service.spec.ts +0 -31
  324. package/src/lib/record/record-attachment.service.ts +0 -101
  325. package/src/lib/record/record.gql.ts +0 -192
  326. package/src/lib/record/record.service.spec.ts +0 -598
  327. package/src/lib/record/record.service.ts +0 -236
  328. package/src/lib/record/record.types.ts +0 -86
  329. package/src/lib/record-type/record-type.service.spec.ts +0 -16
  330. package/src/lib/record-type/record-type.service.ts +0 -71
  331. package/src/lib/record-type/record-type.types.ts +0 -58
  332. package/src/lib/scenario/approvals/scenario-approval.gql.ts +0 -112
  333. package/src/lib/scenario/approvals/scenario-approval.types.ts +0 -85
  334. package/src/lib/scenario/approvals/scenario-approver.service.spec.ts +0 -16
  335. package/src/lib/scenario/approvals/scenario-approver.service.ts +0 -422
  336. package/src/lib/scenario/claimants/scenario-claimant.gql.ts +0 -56
  337. package/src/lib/scenario/claimants/scenario-claimant.service.spec.ts +0 -16
  338. package/src/lib/scenario/claimants/scenario-claimant.service.ts +0 -100
  339. package/src/lib/scenario/claimants/scenario-claimant.types.ts +0 -21
  340. package/src/lib/scenario/receivers/scenario-receiver.gql.ts +0 -157
  341. package/src/lib/scenario/receivers/scenario-receiver.service.spec.ts +0 -16
  342. package/src/lib/scenario/receivers/scenario-receiver.service.ts +0 -278
  343. package/src/lib/scenario/receivers/scenario-receiver.types.ts +0 -66
  344. package/src/lib/scenario/scenario-setup.service.spec.ts +0 -22
  345. package/src/lib/scenario/scenario-setup.service.ts +0 -369
  346. package/src/lib/scenario/scenario.gql.ts +0 -404
  347. package/src/lib/scenario/scenario.service.spec.ts +0 -1586
  348. package/src/lib/scenario/scenario.service.ts +0 -811
  349. package/src/lib/scenario/scenario.types.ts +0 -258
  350. package/src/lib/search/search.gql.ts +0 -62
  351. package/src/lib/search/search.service.spec.ts +0 -57
  352. package/src/lib/search/search.service.ts +0 -174
  353. package/src/lib/search/search.types.ts +0 -24
  354. package/src/lib/trusted-parties/tp-password-reset-request.service.ts +0 -140
  355. package/src/lib/trusted-parties/tp-password-reset-user.service.ts +0 -359
  356. package/src/lib/trusted-parties/tp-password-reset.gql.ts +0 -453
  357. package/src/lib/trusted-parties/tp-password-reset.service.spec.ts +0 -602
  358. package/src/lib/trusted-parties/tp-password-reset.service.ts +0 -482
  359. package/src/lib/trusted-parties/trusted-party.gql.ts +0 -159
  360. package/src/lib/trusted-parties/trusted-party.service.spec.ts +0 -1008
  361. package/src/lib/trusted-parties/trusted-party.service.ts +0 -394
  362. package/src/lib/trusted-parties/trusted-party.types.ts +0 -119
  363. package/src/lib/trusted-parties/trusted-party2.gql.ts +0 -165
  364. package/src/lib/trusted-parties/trusted-party2.service.spec.ts +0 -1782
  365. package/src/lib/trusted-parties/trusted-party2.service.ts +0 -272
  366. package/src/lib/users/profile-details.service.spec.ts +0 -45
  367. package/src/lib/users/profile-details.service.ts +0 -278
  368. package/src/lib/users/profile.gql.ts +0 -108
  369. package/src/lib/users/profile.service.spec.ts +0 -97
  370. package/src/lib/users/profile.service.ts +0 -224
  371. package/src/lib/users/profile.types.ts +0 -101
  372. package/src/lib/users/user.gql.ts +0 -69
  373. package/src/lib/users/user.service.spec.ts +0 -161
  374. package/src/lib/users/user.service.ts +0 -72
  375. package/src/lib/users/user.types.ts +0 -27
  376. package/src/test.ts +0 -21
  377. package/tsconfig.lib.json +0 -21
  378. package/tsconfig.lib.prod.json +0 -6
  379. package/tsconfig.spec.json +0 -10
  380. package/tslint.json +0 -17
@@ -1,154 +0,0 @@
1
- import { Inject, Injectable } from '@angular/core';
2
- import { Key, PassKey } from './cryptography.types';
3
- import { LrNotFoundException } from '../_common/exceptions';
4
- import { PersistService } from '../api/persist.service';
5
- import { KeyFactoryService as KFS } from './key-factory.service';
6
- import { LifeReadyConfig, LR_CONFIG } from '../life-ready.config';
7
-
8
- export class UserKeys {
9
- passKey: PassKey;
10
- masterKey: Key;
11
- rootKey?: Key;
12
- pxk?: Key;
13
- sigPxk?: Key;
14
- }
15
-
16
- interface StoredPassKey {
17
- id: string;
18
- jwk: object;
19
- }
20
-
21
- @Injectable({
22
- providedIn: 'root',
23
- })
24
- export class KeyService {
25
- private readonly STORE_MASTER_KEY = 'masterKey';
26
- // variables
27
- private keys: UserKeys;
28
- private masterKey: Key;
29
-
30
- // AZ: This can't be change easily. It's basically a PassK or PassIdp rotation.
31
- // todo: we should eventually increase this periodically to match with Moore's law.
32
- // The iterations for each key are kept by the server as well but we assume the value
33
- // from the server is not trustworthy, so need to have minimum thresholds here.
34
- // If creating new keys, these minimum are used.
35
- public readonly MIN_PASS_IDP_PBKDF_ITER = 100000;
36
- public readonly MIN_PASS_KEY_PBKDF_ITER = 100000;
37
- public readonly MIN_LBOP_KEY_PBKDF_ITER = 100000;
38
-
39
- // These are used as the default values. They must be larger than the minimum values.
40
- public readonly DEFAULT_PASS_IDP_PBKDF_ITER = this.MIN_PASS_IDP_PBKDF_ITER;
41
- public readonly DEFAULT_PASS_KEY_PBKDF_ITER = this.MIN_PASS_KEY_PBKDF_ITER;
42
- public readonly DEFAULT_LBOP_KEY_PBKDF_ITER = this.MIN_LBOP_KEY_PBKDF_ITER;
43
-
44
- constructor(
45
- @Inject(LR_CONFIG) private config: LifeReadyConfig,
46
- private persistService: PersistService
47
- ) {
48
- this.resetKeys();
49
- }
50
-
51
- resetKeys() {
52
- this.keys = null;
53
- this.masterKey = null;
54
- }
55
-
56
- purgeKeys() {
57
- this.resetKeys();
58
- this.persistService.clear();
59
- }
60
-
61
- populateKeys(keys: UserKeys) {
62
- this.keys = keys;
63
- }
64
-
65
- public getCurrentPassKey(): Key {
66
- return this.keys.passKey;
67
- }
68
-
69
- public getCurrentMasterKey(): Key {
70
- return this.keys.masterKey;
71
- }
72
-
73
- public getCurrentRootKey(): Key {
74
- return this.keys.rootKey;
75
- }
76
-
77
- public getCurrentPxk(): Key {
78
- return this.keys.pxk;
79
- }
80
-
81
- public getCurrentSigPxk(): Key {
82
- return this.keys.sigPxk;
83
- }
84
-
85
- private expiresAfter(seconds: number): Date {
86
- return new Date(Date.now() + 1000 * seconds);
87
- }
88
-
89
- async persistMasterKey(
90
- masterKey: Key,
91
- expiresAfterSeconds: number
92
- ): Promise<void> {
93
- const storedKey = {
94
- id: masterKey.id,
95
- jwk: masterKey.jwk.toJSON(true),
96
- };
97
-
98
- this.masterKey = masterKey;
99
-
100
- // Save in an expirable cookie.
101
- await this.persistService.set({
102
- name: this.STORE_MASTER_KEY,
103
- value: storedKey,
104
- expiry: this.expiresAfter(expiresAfterSeconds),
105
- serverSession: !this.config.disableSessionEncryptionKey,
106
- });
107
- }
108
-
109
- async setMasterKeyExpiresAfterSeconds(seconds: number): Promise<void> {
110
- const storedKey = await this.persistService.get(this.STORE_MASTER_KEY);
111
- if (storedKey == null) {
112
- throw new LrNotFoundException(
113
- `Can not find masterKey in persisted storage using name: ${this.STORE_MASTER_KEY}`
114
- );
115
- }
116
- await this.persistService.set({
117
- name: this.STORE_MASTER_KEY,
118
- value: storedKey,
119
- expiry: this.expiresAfter(seconds),
120
- serverSession: !this.config.disableSessionEncryptionKey,
121
- });
122
- }
123
-
124
- // There's little benefit in using WebCrypto's none-extractable keys because if there
125
- // is an XSS attack, then the attacker has control over the js that downloads the keys. The
126
- // attacker can modify the code to import the keys as extractable. So none-extractable keys
127
- // are only useful if they are already persisted and the user cannot download any more keys,
128
- // which is not feasible.
129
- // So storing the PassKey in localstorage for now, at least till we know what the usage
130
- // pattern is, i.e. how often do we need to use the RootK, MaterK, and PassK.
131
- async loadMasterKey(masterKeyId: string): Promise<Key> {
132
- if (!this.masterKey) {
133
- const storedKey = await this.persistService.get(this.STORE_MASTER_KEY);
134
-
135
- if (!storedKey) {
136
- throw new LrNotFoundException(
137
- 'Could not find masterKey in persisted storage'
138
- );
139
- }
140
-
141
- if (storedKey.id !== masterKeyId) {
142
- throw new LrNotFoundException(
143
- `masterKeyId ${storedKey.id} in persisted storage does not match the one requested ${masterKeyId}`
144
- );
145
- }
146
-
147
- storedKey.jwk = await KFS.asKey(storedKey.jwk);
148
-
149
- this.masterKey = storedKey;
150
- }
151
-
152
- return this.masterKey;
153
- }
154
- }
@@ -1,44 +0,0 @@
1
- import { TestBed } from '@angular/core/testing';
2
- import { Slip39Service, Assembly, SubAssembly } from './slip39.service';
3
- import { ScenarioApproverService } from '../scenario/approvals/scenario-approver.service';
4
- import { lrConfigureTestingModule } from '../_common/tests';
5
-
6
- describe('Slip32Service', () => {
7
- let slip39Service: Slip39Service;
8
-
9
- beforeEach(() => {
10
- lrConfigureTestingModule();
11
- slip39Service = TestBed.inject(Slip39Service);
12
- });
13
-
14
- it('should combine mnemonics', async () => {
15
- const quorum = 2;
16
- const slipAssembly = new Assembly(quorum);
17
-
18
- slipAssembly.addSubAssembly(new SubAssembly(0, 2, 3));
19
- slipAssembly.addSubAssembly(new SubAssembly(1, 2, 2));
20
- slipAssembly.addSubAssembly(new SubAssembly(2, 3, 5));
21
-
22
- const secret = '123456abcdefg';
23
- await slip39Service.generateShares(
24
- secret,
25
- ScenarioApproverService.SLIP39_PASSPHRASE,
26
- slipAssembly
27
- );
28
-
29
- const mnemonics = [];
30
-
31
- slipAssembly.subAssemblies.forEach((sa) => {
32
- sa.shares.forEach((share) => mnemonics.push(share.mnemonics));
33
- });
34
-
35
- expect(mnemonics.length).toBe(10);
36
-
37
- // The recoverSecret() should
38
- const recovered = await slip39Service.recoverSecret(
39
- mnemonics,
40
- ScenarioApproverService.SLIP39_PASSPHRASE
41
- );
42
- expect(recovered).toEqual(secret);
43
- });
44
- });
@@ -1,204 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { Slip39, Slip39Helper } from 'slip39';
3
-
4
- export class SecretShare {
5
- constructor(
6
- public assembly: number = 0,
7
- public subAssembly: number = 0,
8
- public mnemonics: string = ''
9
- ) {}
10
- }
11
-
12
- export class SubAssembly {
13
- constructor(
14
- public index: number,
15
- public threshold: number = 0,
16
- public size: number = 0
17
- ) {
18
- this.clearShares();
19
- }
20
-
21
- shares: SecretShare[];
22
-
23
- public clearShares() {
24
- this.shares = Array();
25
- }
26
-
27
- public addShare(share: SecretShare) {
28
- this.shares.push(share);
29
- }
30
- }
31
-
32
- export class Assembly {
33
- constructor(public threshold: number = 0) {
34
- this.clearSubAssemblies();
35
- }
36
-
37
- subAssemblies: SubAssembly[];
38
-
39
- public size() {
40
- return this.subAssemblies.length;
41
- }
42
-
43
- public clearSubAssemblies() {
44
- this.subAssemblies = new Array();
45
- }
46
-
47
- public addSubAssembly(subAssembly: SubAssembly) {
48
- this.subAssemblies.push(subAssembly);
49
- }
50
- }
51
-
52
- export class SubQuorum {
53
- shares: string[];
54
-
55
- constructor(public subAssemblyIndex: number) {
56
- this.clearShares();
57
- }
58
-
59
- public clearShares() {
60
- this.shares = new Array();
61
- }
62
-
63
- public addShare(share: string) {
64
- this.shares.push(share);
65
- }
66
- }
67
-
68
- export class Quorum {
69
- subQuora: SubQuorum[];
70
-
71
- constructor() {
72
- this.clearSubQuora();
73
- }
74
-
75
- public clearSubQuora() {
76
- this.subQuora = new Array();
77
- }
78
-
79
- public addSubQuorum(subQuorum: SubQuorum) {
80
- this.subQuora.push(subQuorum);
81
- }
82
-
83
- public serialiseShares() {
84
- let shares = [];
85
-
86
- this.subQuora.forEach((subQuorum) => {
87
- shares = shares.concat(subQuorum.shares);
88
- });
89
-
90
- return shares;
91
- }
92
- }
93
-
94
- @Injectable({
95
- providedIn: 'root',
96
- })
97
- export class Slip39Service {
98
- constructor() {}
99
-
100
- public async generateShares(secret, passphrase: string, assembly: Assembly) {
101
- // Hex-encode secret.
102
- let ems = btoa(secret);
103
- ems = Slip39Helper.slip39EncodeHex(ems);
104
-
105
- // Construct group specifications
106
- const groups = [];
107
-
108
- for (const sa of assembly.subAssemblies) {
109
- groups.push([sa.threshold, sa.size]);
110
- }
111
-
112
- // Split!
113
- const slip = await Slip39.fromArray(ems, {
114
- passphrase,
115
- threshold: assembly.threshold,
116
- groups,
117
- title: '',
118
- });
119
-
120
- // Extract shares
121
- assembly.subAssemblies.forEach((sa, isa) => {
122
- // Remove any existing shares
123
- sa.clearShares();
124
-
125
- for (let im = 0; im < sa.size; im++) {
126
- // Construct the path to the share, formatted as "r/<subassembly index>/<member index>"
127
- // with <subassembly index> and <member index> being two-digit, zero-padded integers.
128
- const path =
129
- 'r/' +
130
- isa.toString().padStart(2, '0') +
131
- '/' +
132
- im.toString().padStart(2, '0');
133
- const mnemonics = slip.fromPath(path).mnemonics[0];
134
- const share = new SecretShare(isa, im, mnemonics);
135
-
136
- sa.addShare(share);
137
- }
138
- });
139
- }
140
-
141
- // Remove all redundant shares. i.e. keep only enough members and groups to satisfy the thresholds.
142
- private minimalSet(mnemonics: string[]): string[] {
143
- // Decode the mnemonics and sort then into groups.
144
- let groupThresh = null;
145
- const groups = new Map();
146
- for (const mnemonic of mnemonics) {
147
- const decoded = Slip39Helper.decodeMnemonic(mnemonic);
148
-
149
- if (groupThresh && groupThresh !== decoded.groupThreshold) {
150
- throw new Error('groupThreshold is different in mnemonics');
151
- }
152
-
153
- groupThresh = decoded.groupThreshold;
154
-
155
- // Note that Slip39.recoverSecret() will do all the error checking again. So it's not critical
156
- // that we error check here. So we just optimistically assume it's all good.
157
- let g = groups.get(decoded.groupIndex);
158
- if (g == null) {
159
- g = {
160
- memberThreshold: decoded.memberThreshold,
161
- members: [],
162
- };
163
- groups.set(decoded.groupIndex, g);
164
- }
165
-
166
- g.members.push({
167
- mnemonic,
168
- decoded,
169
- });
170
- }
171
-
172
- // Keep the minimum set of groups that meet threshold.
173
- const mnemonicsMinSet = [];
174
- let groupCount = 0;
175
- for (const g of groups.values()) {
176
- // Keep only groups that meet threshold
177
- if (g.members.length < g.memberThreshold) {
178
- continue;
179
- }
180
-
181
- // Keep minimum number of approvals needed for group
182
- g.members.slice(0, g.memberThreshold).forEach((member) => {
183
- mnemonicsMinSet.push(member.mnemonic);
184
- });
185
-
186
- ++groupCount;
187
- if (groupCount >= groupThresh) {
188
- break;
189
- }
190
- }
191
-
192
- return mnemonicsMinSet;
193
- }
194
-
195
- public async recoverSecret(shares: string[], passphrase: string) {
196
- shares = this.minimalSet(shares);
197
-
198
- const recovered = await Slip39.recoverSecret(shares, passphrase);
199
-
200
- const secret = Slip39Helper.slip39DecodeHex(recovered);
201
-
202
- return atob(secret);
203
- }
204
- }
@@ -1,22 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
-
3
- @Injectable({
4
- providedIn: 'root',
5
- })
6
- export class WebCryptoService {
7
- crypto: Crypto = window.crypto;
8
-
9
- toHex(buffer: ArrayBuffer) {
10
- // Ref: https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/digest
11
- const array = Array.from(new Uint8Array(buffer)); // convert buffer to byte array
12
- const hex = array.map((b) => b.toString(16).padStart(2, '0')).join(''); // convert bytes to hex string
13
- return hex;
14
- }
15
-
16
- async stringDigest(algorithm: string, message: string): Promise<string> {
17
- const encoder = new TextEncoder();
18
- const data = encoder.encode(message);
19
- const hash = await this.crypto.subtle.digest(algorithm, data);
20
- return this.toHex(hash);
21
- }
22
- }
@@ -1,127 +0,0 @@
1
- import { InjectionToken } from '@angular/core';
2
- import { AuthClass } from '@aws-amplify/auth/lib-esm/Auth';
3
- import {
4
- ApolloClientOptions,
5
- ApolloLink,
6
- createHttpLink,
7
- DefaultOptions,
8
- from,
9
- InMemoryCache,
10
- } from '@apollo/client/core';
11
- import { setContext } from '@apollo/client/link/context';
12
- import { RetryLink } from '@apollo/client/link/retry';
13
- import { LrApiErrorCode } from './_common/exceptions';
14
- import { GraphQLError } from 'graphql';
15
-
16
- export const LR_CONFIG = new InjectionToken<LifeReadyConfig>('LR.AUTH');
17
- const RETRY_ERROR_CODES = [LrApiErrorCode.CONCURRENT_ACCESS];
18
-
19
- export interface LifeReadyConfig {
20
- authUrl: string;
21
- apiUrl: string;
22
- apolloUrl: string;
23
- userPoolId: string;
24
- userPoolWebClientId: string;
25
- apolloConfig?: ApolloClientOptions<any>;
26
- // Mainly to allow localhost to not needing this. Default to falsy
27
- disableSessionEncryptionKey?: boolean;
28
- }
29
-
30
- export const configureApollo = (
31
- config: LifeReadyConfig,
32
- auth: AuthClass
33
- ): ApolloClientOptions<any> => {
34
- const defaultOptions: DefaultOptions = {
35
- watchQuery: {
36
- fetchPolicy: 'no-cache',
37
- errorPolicy: 'all',
38
- },
39
- query: {
40
- fetchPolicy: 'no-cache',
41
- errorPolicy: 'all',
42
- },
43
- mutate: {
44
- errorPolicy: 'all',
45
- },
46
- };
47
-
48
- const authLink = setContext(async (_, { headers }) => {
49
- let accessJwt = null;
50
- try {
51
- accessJwt = (await auth.currentSession()).getAccessToken();
52
- } catch {
53
- console.log('User not signed in');
54
- }
55
-
56
- return {
57
- headers: {
58
- ...headers,
59
- authorization: accessJwt ? `Bearer ${accessJwt.jwtToken}` : '',
60
- },
61
- };
62
- });
63
-
64
- // We are only retrying on certain errors, like the CONCURRENT_ACCESS gql
65
- // error which indicates DB race condition. So can be safely retried.
66
- const retryIf = (error, _) => {
67
- // The RetryLink is called on network error as well, so we need to filter for GraphQL errors.
68
- if (error instanceof GraphQLErrorException) {
69
- if (
70
- error.errors.some((e) => RETRY_ERROR_CODES.includes(e.extensions?.code))
71
- ) {
72
- return true;
73
- }
74
- }
75
-
76
- return false;
77
- };
78
-
79
- const retryLink = new RetryLink({
80
- delay: {
81
- initial: 300,
82
- max: Infinity,
83
- jitter: true,
84
- },
85
- attempts: {
86
- max: 3,
87
- retryIf,
88
- },
89
- });
90
-
91
- class GraphQLErrorException extends Error {
92
- constructor(public errors: readonly GraphQLError[]) {
93
- super(errors.map((e) => e.message).join(', '));
94
- }
95
- }
96
-
97
- // Throw exception on gql errors which effectively promotes it to a network
98
- // error, which can then be handled by the RetryLink.
99
- const promoteGqlErrors = new ApolloLink((operation, forward) => {
100
- return forward(operation).map((data) => {
101
- if (data && data.errors) {
102
- const errors = data.errors.filter((e) =>
103
- RETRY_ERROR_CODES.includes(e.extensions?.code)
104
- );
105
-
106
- if (errors.length > 0) {
107
- throw new GraphQLErrorException(data.errors);
108
- }
109
- }
110
- return data;
111
- });
112
- });
113
-
114
- const httpLink = createHttpLink({
115
- uri: config.apolloUrl,
116
- // Sending the sessionid cookie so that the server can use session data when needed.
117
- // eg. setting the session encryption key.
118
- credentials: 'include',
119
- });
120
-
121
- return {
122
- link: from([retryLink, promoteGqlErrors, authLink, httpLink]),
123
- cache: new InMemoryCache(),
124
- defaultOptions,
125
- ...config.apolloConfig,
126
- };
127
- };
@@ -1,81 +0,0 @@
1
- import { HttpClientModule } from '@angular/common/http';
2
- import { APP_INITIALIZER, ModuleWithProviders, NgModule } from '@angular/core';
3
- import Auth from '@aws-amplify/auth';
4
- import { AuthClass } from '@aws-amplify/auth/lib-esm/Auth';
5
- import { APOLLO_OPTIONS } from 'apollo-angular';
6
- import { CookieService } from 'ngx-cookie-service';
7
- import { FileService } from './api/file.service';
8
- import { ProfileService } from './users/profile.service';
9
- import { configureAmplifyAuth } from './auth/auth.config';
10
- import {
11
- initialiseAuth,
12
- LifeReadyAuthService,
13
- } from './auth/life-ready-auth.service';
14
- import { PasswordService } from './auth/password.service';
15
- import { RegisterService } from './auth/register.service';
16
- import { EncryptionService } from './cryptography/encryption.service';
17
- import { KeyGraphService } from './cryptography/key-graph.service';
18
- import { KeyService } from './cryptography/key.service';
19
- import { KeyFactoryService } from './cryptography/key-factory.service';
20
- import { WebCryptoService } from './cryptography/web-crypto.service';
21
- import {
22
- configureApollo,
23
- LifeReadyConfig,
24
- LR_CONFIG,
25
- } from './life-ready.config';
26
- import { TimeService } from './api/time.service';
27
- import { NgIdleKeepaliveModule } from '@ng-idle/keepalive';
28
-
29
- @NgModule({
30
- imports: [HttpClientModule, NgIdleKeepaliveModule.forRoot()],
31
- providers: [
32
- CookieService,
33
- TimeService,
34
- FileService,
35
- ProfileService,
36
- RegisterService,
37
- LifeReadyAuthService,
38
- PasswordService,
39
- WebCryptoService,
40
- EncryptionService,
41
- KeyGraphService,
42
- KeyService,
43
- KeyFactoryService,
44
- ],
45
- })
46
- export class LifeReadyModule {
47
- public static forRoot(
48
- config: LifeReadyConfig
49
- ): ModuleWithProviders<LifeReadyModule> {
50
- return {
51
- ngModule: LifeReadyModule,
52
- providers: [
53
- {
54
- provide: LR_CONFIG,
55
- useValue: config,
56
- },
57
- {
58
- provide: AuthClass,
59
- useValue: Auth,
60
- },
61
- {
62
- provide: APP_INITIALIZER,
63
- useFactory: configureAmplifyAuth,
64
- deps: [LR_CONFIG, AuthClass],
65
- multi: true,
66
- },
67
- {
68
- provide: APP_INITIALIZER,
69
- useFactory: initialiseAuth,
70
- deps: [LifeReadyAuthService],
71
- multi: true,
72
- },
73
- {
74
- provide: APOLLO_OPTIONS,
75
- useFactory: configureApollo,
76
- deps: [LR_CONFIG, AuthClass],
77
- },
78
- ],
79
- };
80
- }
81
- }