@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,156 @@
1
+ import { Injectable } from '@angular/core';
2
+ import gql from 'graphql-tag';
3
+ import { Key } from '../cryptography/cryptography.types';
4
+ import { EncryptionService } from '../cryptography/encryption.service';
5
+ import { KeyGraphService } from '../cryptography/key-graph.service';
6
+ import { KeyService } from '../cryptography/key.service';
7
+ import { SharedTrustedPartyDetails } from '../trusted-parties/trusted-party.types';
8
+ import { ContactCardName, TrustedPartyDetails } from '../users/profile.types';
9
+ import { User } from '../users/user.types';
10
+ import { KeyGraphField } from '../_common/queries.gql';
11
+ import { LrApolloService } from './lr-apollo.service';
12
+
13
+ export const SharedContactCardFields = `
14
+ id
15
+ owner {
16
+ id
17
+ username
18
+ }
19
+ ownerKey {
20
+ id
21
+ }
22
+ ownerCipherData
23
+ receiver {
24
+ id
25
+ username
26
+ }
27
+ receiverKey {
28
+ id
29
+ }
30
+ receiverCipherData
31
+ sharedKey {
32
+ id
33
+ }
34
+ sharedCipherData
35
+ sharedCipherDataSig
36
+ sharedCipherDataSigPxk {
37
+ id
38
+ }
39
+ `;
40
+
41
+ const UpdateOwnedContactCard = gql`
42
+ mutation UpdateOwnedContactCard(
43
+ $input: UpdateOwnedContactCardInput!
44
+ ) {
45
+ updateOwnedContactCard(
46
+ input: $input
47
+ ) {
48
+ ownedContactCard {
49
+ ${SharedContactCardFields}
50
+ }
51
+ }
52
+ }`;
53
+
54
+ interface UpdateOwnedContactCard {
55
+ updateOwnedContactCard: {
56
+ ownedContactCard: SharedContactCard;
57
+ };
58
+ }
59
+
60
+ export interface SharedContactCard {
61
+ id: string;
62
+ owner: User;
63
+ ownerKey: Key;
64
+ ownerCipherData: string;
65
+ receiver: User;
66
+ receiverKey: Key;
67
+ receiverCipherData: string;
68
+ sharedKey: Key;
69
+ sharedCipherData: string;
70
+ // Decrypted
71
+ plainOwnerCipherDataJson: any;
72
+ plainReceiverCipherDataJson: any;
73
+ plainSharedCipherDataJson: any;
74
+ }
75
+
76
+ @Injectable({
77
+ providedIn: 'root',
78
+ })
79
+ export class SharedContactCardService {
80
+ constructor(
81
+ private keyService: KeyService,
82
+ private lrApollo: LrApolloService,
83
+ private keyGraph: KeyGraphService,
84
+ private encryptionService: EncryptionService
85
+ ) {}
86
+
87
+ async decryptSharedTrustedPartyDetails(
88
+ cc: SharedContactCard
89
+ ): Promise<SharedTrustedPartyDetails> {
90
+ const details = await this.decryptTrustedPartyDetails(cc);
91
+
92
+ return {
93
+ id: cc.id,
94
+ ownedKeyId: cc.ownerKey.id,
95
+ sharedKeyId: cc.sharedKey.id,
96
+ ...details,
97
+ };
98
+ }
99
+
100
+ async decryptTrustedPartyDetails(
101
+ cc: SharedContactCard
102
+ ): Promise<TrustedPartyDetails> {
103
+ if (cc && cc.sharedKey && cc.sharedCipherData) {
104
+ try {
105
+ return await this.encryptionService.decrypt(
106
+ await this.keyGraph.getJwkKey(cc.sharedKey.id),
107
+ cc.sharedCipherData
108
+ );
109
+ } catch (e) {
110
+ console.error('Cannot decrypt trusted party details', e);
111
+ }
112
+ }
113
+ return null;
114
+ }
115
+
116
+ async updateMySharedContactCard(
117
+ id: string,
118
+ ownedKeyId: string,
119
+ sharedKeyId: string,
120
+ contactCard: TrustedPartyDetails
121
+ ): Promise<void> {
122
+ const ownerKey = await this.keyGraph.getKey(ownedKeyId);
123
+ const sharedKey = await this.keyGraph.getKey(sharedKeyId);
124
+ const sigPxk = await this.keyService.getCurrentSigPxk();
125
+
126
+ const sharedCipherData = await this.encryptionService.encrypt(
127
+ sharedKey.jwk,
128
+ contactCard
129
+ );
130
+ const sharedCipherDataSig = JSON.stringify(
131
+ await this.encryptionService.sign(sigPxk.jwk, sharedCipherData)
132
+ );
133
+
134
+ const ownerPlainData = {
135
+ name: new ContactCardName(contactCard.name),
136
+ };
137
+ const ownerPlainDataSig = JSON.stringify(
138
+ await this.encryptionService.sign(sigPxk.jwk, ownerPlainData)
139
+ );
140
+
141
+ await this.lrApollo.mutate<UpdateOwnedContactCard>({
142
+ mutation: UpdateOwnedContactCard,
143
+ variables: {
144
+ input: {
145
+ id,
146
+ ownerCipherData: '',
147
+ ownerKeyId: ownerKey.id,
148
+ sharedCipherDataSig,
149
+ sharedKeyId: sharedKey.id,
150
+ sigPxkId: sigPxk.id,
151
+ ownerPlainDataSig,
152
+ },
153
+ },
154
+ });
155
+ }
156
+ }
@@ -0,0 +1,76 @@
1
+ import { gqlTyped } from '../_common/ast';
2
+ import { ID } from './types';
3
+
4
+ export interface UpdateOwnedContactCardMutation {
5
+ updateOwnedContactCard: {
6
+ ownedContactCard: {
7
+ id: ID;
8
+ };
9
+ };
10
+ }
11
+ export const UpdateOwnedContactCardMutation = gqlTyped<UpdateOwnedContactCardMutation>`
12
+ mutation UpdateOwnedContactCardMutation(
13
+ $input: UpdateOwnedContactCardInput!
14
+ ) {
15
+ updateOwnedContactCard(input: $input) {
16
+ ownedContactCard {
17
+ id
18
+ }
19
+ }
20
+ }`;
21
+
22
+ export interface UpdateReceivedContactCardMutation {
23
+ updateReceivedContactCard: {
24
+ receivedContactCard: {
25
+ id: ID;
26
+ };
27
+ };
28
+ }
29
+ export const UpdateReceivedContactCardMutation = gqlTyped<UpdateReceivedContactCardMutation>`
30
+ mutation UpdateReceivedContactCardMutation(
31
+ $input: UpdateReceivedContactCardInput!
32
+ ) {
33
+ updateReceivedContactCard(input: $input) {
34
+ receivedContactCard {
35
+ id
36
+ }
37
+ }
38
+ }`;
39
+
40
+ export interface GetOwnedContactCardKeyIdsQuery {
41
+ ownedContactCard: {
42
+ sharedKey: {
43
+ id: ID;
44
+ };
45
+ ownerKey: {
46
+ id: ID;
47
+ };
48
+ };
49
+ }
50
+ export const GetOwnedContactCardKeyIdsQuery = gqlTyped<GetOwnedContactCardKeyIdsQuery>`
51
+ query GetOwnedContactCardKeyIdsQuery($id: LrRelayIdInput!) {
52
+ ownedContactCard(id: $id) {
53
+ sharedKey {
54
+ id
55
+ }
56
+ ownerKey {
57
+ id
58
+ }
59
+ }
60
+ }`;
61
+
62
+ export interface GetReceivedContactCardKeyIdQuery {
63
+ receivedContactCard: {
64
+ receiverKey: {
65
+ id: ID;
66
+ };
67
+ };
68
+ }
69
+ export const GetReceivedContactCardKeyIdQuery = gqlTyped<GetReceivedContactCardKeyIdQuery>`
70
+ query GetReceivedContactCardKeyIdQuery($id: LrRelayIdInput!) {
71
+ receivedContactCard(id: $id) {
72
+ receiverKey {
73
+ id
74
+ }
75
+ }
76
+ }`;
@@ -0,0 +1,154 @@
1
+ import { Injectable, NgZone } from '@angular/core';
2
+ import { Key } from '../cryptography/cryptography.types';
3
+ import { EncryptionService } from '../cryptography/encryption.service';
4
+ import { KeyGraphService } from '../cryptography/key-graph.service';
5
+ import { KeyService } from '../cryptography/key.service';
6
+ import { RunOutsideAngular } from '../_common/run-outside-angular';
7
+ import {
8
+ ContactCardReceiverCipherData,
9
+ SendContactCardInput,
10
+ } from './key-exchange2.service';
11
+ import { LrGraphQLService, LrMutation } from './lr-graphql';
12
+ import {
13
+ GetOwnedContactCardKeyIdsQuery,
14
+ GetReceivedContactCardKeyIdQuery,
15
+ UpdateOwnedContactCardMutation,
16
+ UpdateReceivedContactCardMutation,
17
+ } from './shared-contact-card2.gql';
18
+ import { LrRelayIdInput } from './types';
19
+
20
+ export interface UpdateOwnedContactCardInput extends SendContactCardInput {
21
+ id: LrRelayIdInput;
22
+ ownerKeyId?: LrRelayIdInput;
23
+ sharedKeyId?: LrRelayIdInput;
24
+ }
25
+
26
+ export interface UpdateReceivedContactCardInput
27
+ extends ContactCardReceiverCipherData {
28
+ id: LrRelayIdInput;
29
+ receiverKeyId?: LrRelayIdInput;
30
+ }
31
+
32
+ @RunOutsideAngular({
33
+ ngZoneName: 'ngZone',
34
+ })
35
+ @Injectable({
36
+ providedIn: 'root',
37
+ })
38
+ export class SharedContactCard2Service {
39
+ constructor(
40
+ private ngZone: NgZone,
41
+ private keyService: KeyService,
42
+ private keyGraph: KeyGraphService,
43
+ private encryptionService: EncryptionService,
44
+ private lrGraphQL: LrGraphQLService
45
+ ) {}
46
+
47
+ private async getOwnedContactCardKeyIds(id: LrRelayIdInput) {
48
+ const { ownedContactCard: cc } = await this.lrGraphQL.query({
49
+ query: GetOwnedContactCardKeyIdsQuery,
50
+ variables: {
51
+ id,
52
+ },
53
+ });
54
+
55
+ return {
56
+ sharedKeyId: cc.sharedKey.id,
57
+ ownerKeyId: cc.ownerKey.id,
58
+ };
59
+ }
60
+
61
+ private async getReceivedContactCardKeyId(id: LrRelayIdInput) {
62
+ return (
63
+ await this.lrGraphQL.query({
64
+ query: GetReceivedContactCardKeyIdQuery,
65
+ variables: {
66
+ id,
67
+ },
68
+ })
69
+ ).receivedContactCard.receiverKey.id;
70
+ }
71
+
72
+ async updateOwnedContactCard({
73
+ id,
74
+ ownerKeyId,
75
+ sharedKeyId,
76
+ ownerPlainDataJson,
77
+ ownerCipherDataClearJson,
78
+ sharedCipherDataClearJson,
79
+ }: UpdateOwnedContactCardInput) {
80
+ let ownerKey: Key;
81
+ let sharedKey: Key;
82
+
83
+ try {
84
+ ownerKey = await this.keyGraph.getKey(ownerKeyId);
85
+ sharedKey = await this.keyGraph.getKey(sharedKeyId);
86
+ } catch (error) {
87
+ const keys = await this.getOwnedContactCardKeyIds(id);
88
+
89
+ // try again
90
+ ownerKey = await this.keyGraph.getKey(keys.ownerKeyId);
91
+ sharedKey = await this.keyGraph.getKey(keys.sharedKeyId);
92
+ }
93
+
94
+ const sigPxk = await this.keyService.getCurrentSigPxk();
95
+
96
+ const sharedCipherData = await this.encryptionService.encrypt(
97
+ sharedKey.jwk,
98
+ sharedCipherDataClearJson
99
+ );
100
+ const sharedCipherDataSig = JSON.stringify(
101
+ await this.encryptionService.sign(sigPxk.jwk, sharedCipherData)
102
+ );
103
+
104
+ const ownerPlainDataSig = JSON.stringify(
105
+ await this.encryptionService.sign(sigPxk.jwk, ownerPlainDataJson)
106
+ );
107
+
108
+ const ownerCipherData = await this.encryptionService.encryptToString(
109
+ ownerKey.jwk,
110
+ ownerCipherDataClearJson
111
+ );
112
+
113
+ return new LrMutation({
114
+ mutation: UpdateOwnedContactCardMutation,
115
+ variables: {
116
+ input: {
117
+ id,
118
+ ownerCipherData,
119
+ ownerKeyId: ownerKey.id,
120
+ sharedCipherDataSig,
121
+ sharedKeyId: sharedKey.id,
122
+ sigPxkId: sigPxk.id,
123
+ ownerPlainDataSig,
124
+ },
125
+ },
126
+ });
127
+ }
128
+
129
+ async updateReceivedContactCard({
130
+ id,
131
+ receiverKeyId,
132
+ receiverCipherDataClearJson,
133
+ }: UpdateReceivedContactCardInput) {
134
+ const receiverKey = await this.keyGraph.getKey(receiverKeyId, () =>
135
+ this.getReceivedContactCardKeyId(id)
136
+ );
137
+
138
+ const receiverCipherData = await this.encryptionService.encryptToString(
139
+ receiverKey.jwk,
140
+ receiverCipherDataClearJson
141
+ );
142
+
143
+ return new LrMutation({
144
+ mutation: UpdateReceivedContactCardMutation,
145
+ variables: {
146
+ input: {
147
+ id,
148
+ receiverCipherData,
149
+ receiverKeyId: receiverKey.id,
150
+ },
151
+ },
152
+ });
153
+ }
154
+ }
@@ -0,0 +1,48 @@
1
+ import { TimeService } from './time.service';
2
+ import { TestBed } from '@angular/core/testing';
3
+ import { environment } from 'projects/lr-auth-app/src/environments/environment';
4
+ import {
5
+ loginTestUser,
6
+ logoutUser,
7
+ } from '../auth/life-ready-auth.service.spec';
8
+ import { lrConfigureTestingModule, lrit } from '../_common/tests';
9
+
10
+ const TIMEOUT = 1000 * 60 * 10;
11
+
12
+ describe('TimeService', () => {
13
+ let timeService: TimeService;
14
+
15
+ beforeEach(async () => {
16
+ lrConfigureTestingModule();
17
+ timeService = TestBed.inject(TimeService);
18
+ });
19
+
20
+ lrit('should get server time', async () => {
21
+ const serverNow = await timeService.serverNow();
22
+ console.log('server now', serverNow);
23
+ console.log('local now', Date.now());
24
+ expect(serverNow).toBeTruthy();
25
+ expect(timeService.offsetMs).not.toBeNull();
26
+ console.log('timeService.offsetMs', timeService.offsetMs);
27
+ });
28
+
29
+ lrit(
30
+ 'should confirm time from independent source',
31
+ async () => {
32
+ if (!timeService.VERIFY_ENABLED) {
33
+ return;
34
+ }
35
+
36
+ // Using AWS Cognito, so need to login first, it might block the client/host as malicious.
37
+ const {
38
+ username: username1,
39
+ password: password1,
40
+ } = environment.test.users[0];
41
+ await loginTestUser(username1, password1);
42
+
43
+ const serverNow = await timeService.serverNow();
44
+ expect(timeService.verified).toBeTrue();
45
+ },
46
+ TIMEOUT
47
+ );
48
+ });
@@ -0,0 +1,155 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { AuthClass } from '@aws-amplify/auth/lib-esm/Auth';
3
+ import { Apollo } from 'apollo-angular';
4
+ import gql from 'graphql-tag';
5
+ import * as moment_ from 'moment';
6
+ import {
7
+ LrErrorCode,
8
+ LrException,
9
+ handleApolloError,
10
+ } from '../_common/exceptions';
11
+ // "why?" you ask: https://stackoverflow.com/questions/59735280/angular-8-moment-error-cannot-call-a-namespace-moment
12
+ const moment = moment_;
13
+
14
+ export const ServerTimeQuery = gql`
15
+ query {
16
+ serverTime {
17
+ timestamp
18
+ }
19
+ }
20
+ `;
21
+
22
+ interface ServerTime {
23
+ timestamp: string;
24
+ }
25
+
26
+ @Injectable({
27
+ providedIn: 'root',
28
+ })
29
+ export class TimeService {
30
+ public VERIFY_ENABLED = true;
31
+ private readonly MAX_DIFF_MSEC = moment
32
+ .duration({ seconds: 30 })
33
+ .asMilliseconds();
34
+
35
+ offsetMs: number = null; // Millisecond offset of local clock.
36
+ verified = false; // Verified with independent time source
37
+
38
+ constructor(private auth: AuthClass, private apollo: Apollo) {}
39
+
40
+ private async getAccessToken(): Promise<string> {
41
+ try {
42
+ return (await this.auth.currentAuthenticatedUser())
43
+ .getSignInUserSession()
44
+ .getAccessToken()
45
+ .getJwtToken();
46
+ } catch (error) {
47
+ return ''; // Not authenticated
48
+ }
49
+ }
50
+
51
+ // Get time from independent source to confirm.
52
+ private async verifyCognito(): Promise<void> {
53
+ const accessToken = await this.getAccessToken();
54
+ if (!accessToken) {
55
+ return;
56
+ }
57
+
58
+ // Request headers from AWS Amplify Auth lib
59
+ // accept: */*
60
+ // accept-encoding: gzip, deflate, br
61
+ // accept-language: en-GB,en-US;q=0.9,en;q=0.8
62
+ // cache-control: no-cache
63
+ // content-length: 1089
64
+ // content-type: application/x-amz-json-1.1
65
+ // origin: http://localhost:4200
66
+ // pragma: no-cache
67
+ // referer: http://localhost:4200/
68
+ // sec-fetch-dest: empty
69
+ // sec-fetch-mode: cors
70
+ // sec-fetch-site: cross-site
71
+ // user-agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36
72
+ // x-amz-target: AWSCognitoIdentityProviderService.GetUser
73
+ // x-amz-user-agent: aws-amplify/0.1.x js
74
+
75
+ // We are only interested in the Date field.
76
+ // AZ: I suppose we could use any end-point that provides a reliable Date field in the header. And we don't
77
+ // need to be authenticated. Even a 400 response would have a Date header. But the worry is that AWS might
78
+ // think it's some sort of attack, and block the IP or domain. At least in an authenticated call it can't be
79
+ // seen as illegitimate.
80
+ const response = await fetch(
81
+ 'https://cognito-idp.ap-southeast-2.amazonaws.com/',
82
+ {
83
+ method: 'POST', // *GET, POST, PUT, DELETE, etc.
84
+ mode: 'cors', // no-cors, *cors, same-origin
85
+ cache: 'no-cache', // *default, no-cache, reload, force-cache, only-if-cached
86
+ headers: {
87
+ 'x-amz-target': 'AWSCognitoIdentityProviderService.GetUser',
88
+ 'x-amz-user-agent': 'aws-amplify/0.1.x js',
89
+ 'Content-Type': 'application/x-amz-json-1.1',
90
+ },
91
+ // redirect: 'follow', // manual, *follow, error
92
+ // referrerPolicy: 'no-referrer', // no-referrer, *no-referrer-when-downgrade, origin, origin-when-cross-origin, same-origin, strict-origin, strict-origin-when-cross-origin, unsafe-url
93
+ body: JSON.stringify({
94
+ AccessToken: accessToken,
95
+ }), // body data type must match "Content-Type" header
96
+ }
97
+ );
98
+
99
+ const now = Date.now();
100
+
101
+ const verifyTime = moment(response.headers.get('Date')).valueOf();
102
+ const serverTime = now + this.offsetMs;
103
+ const diff = Math.abs(serverTime - verifyTime);
104
+
105
+ if (diff > this.MAX_DIFF_MSEC) {
106
+ throw new LrException({
107
+ code: LrErrorCode.BadTimeSync,
108
+ message: `Server time does not match independent source. ServerTime: ${serverTime}, Cognito time: ${verifyTime}`,
109
+ });
110
+ }
111
+
112
+ this.verified = true;
113
+ }
114
+
115
+ private async refresh(): Promise<void> {
116
+ const start = Date.now();
117
+ const res = await this.apollo
118
+ .query<{ serverTime: ServerTime }>({ query: ServerTimeQuery })
119
+ .toPromise();
120
+ const end = Date.now();
121
+
122
+ handleApolloError(res.errors);
123
+
124
+ const serverTime = parseInt(res.data.serverTime.timestamp, 10);
125
+
126
+ const roundtrip = end - start;
127
+ this.offsetMs = serverTime - (start + roundtrip / 2);
128
+
129
+ if (this.VERIFY_ENABLED) {
130
+ await this.verifyCognito();
131
+ }
132
+ }
133
+
134
+ async serverNow(): Promise<number> {
135
+ let needsRefresh = false;
136
+
137
+ // First call
138
+ if (this.offsetMs === null) {
139
+ needsRefresh = true;
140
+ }
141
+
142
+ if (this.VERIFY_ENABLED) {
143
+ // logged in but not yet verified time matches.
144
+ if (!this.verified && (await this.getAccessToken())) {
145
+ needsRefresh = true;
146
+ }
147
+ }
148
+
149
+ if (needsRefresh) {
150
+ await this.refresh();
151
+ }
152
+
153
+ return Date.now() + this.offsetMs;
154
+ }
155
+ }
@@ -0,0 +1,48 @@
1
+ // ------------------------------------------------------
2
+ // Basic types
3
+ // ------------------------------------------------------
4
+ // These types map directory to types of the same name in graphql.
5
+ // We use these aliases in case in the future we wish to reify the types and do
6
+ // additional automated conversion.
7
+
8
+ export type ID = string;
9
+ // Server requires this to have certain format. But client
10
+ // just treats this as an opaque string.
11
+ export type LrRelayIdInput = string;
12
+ export type DateTime = string;
13
+ // This is basically the results of: JSON.stringify(obj)
14
+ // Server validated to make sure it can JSON.parse() this.
15
+ export type LrJSONString = string;
16
+ // JSONString is a type from graphene. DB JSON fields maps to this type
17
+ // automatically.
18
+ // Where as LrJSONString is out custom implementation for input variables.
19
+ export type JSONString = string;
20
+ export type LrEmail = string;
21
+ export type GenericScalar = any;
22
+ export type UUID = string;
23
+
24
+ export interface Node {
25
+ id?: string;
26
+ }
27
+
28
+ export interface TimeStamped {
29
+ created?: DateTime;
30
+ modified?: DateTime;
31
+ }
32
+
33
+ export interface Edge<NodeType extends Node> {
34
+ node?: NodeType;
35
+ cursor?: string;
36
+ }
37
+
38
+ export interface Connection<NodeType> {
39
+ pageInfo?: PageInfo;
40
+ edges?: Edge<NodeType>[];
41
+ }
42
+
43
+ export interface PageInfo {
44
+ hasNextPage?: boolean;
45
+ hasPreviousPage?: boolean;
46
+ startCursor?: string;
47
+ endCursor?: string;
48
+ }
@@ -1,2 +1,2 @@
1
- export * from './graphql.types';
2
- export * from './lr-graphql.types';
1
+ export * from './graphql.types';
2
+ export * from './lr-graphql.types';