@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.
- package/README.md +62 -62
- package/karma.conf.js +32 -0
- package/ng-package.json +26 -0
- package/package.json +21 -29
- package/src/lib/_common/ast.ts +75 -0
- package/src/lib/_common/deferred-promise.ts +35 -0
- package/src/lib/_common/exceptions.ts +189 -0
- package/src/lib/_common/queries.gql.ts +200 -0
- package/src/lib/_common/run-outside-angular.ts +125 -0
- package/src/lib/_common/tests.ts +82 -0
- package/{lib/_common/types.d.ts → src/lib/_common/types.ts} +13 -10
- package/src/lib/_common/utils.ts +57 -0
- package/src/lib/api/api-mutation.spec.ts +547 -0
- package/src/lib/api/api-query.spec.ts +40 -0
- package/src/lib/api/contact-card.gql.ts +85 -0
- package/src/lib/api/contact-card.service.spec.ts +249 -0
- package/src/lib/api/contact-card.service.ts +228 -0
- package/src/lib/api/contact-card2.gql.ts +93 -0
- package/src/lib/api/contact-card2.service.spec.ts +297 -0
- package/src/lib/api/contact-card2.service.ts +139 -0
- package/src/lib/api/file.service.spec.ts +14 -0
- package/src/lib/api/file.service.ts +81 -0
- package/src/lib/api/item2.gql.ts +211 -0
- package/src/lib/api/item2.service.spec.ts +1043 -0
- package/src/lib/api/item2.service.ts +481 -0
- package/src/lib/api/key-exchange.gql.ts +196 -0
- package/src/lib/api/key-exchange.service.spec.ts +470 -0
- package/src/lib/api/key-exchange.service.ts +731 -0
- package/src/lib/api/key-exchange.types.ts +235 -0
- package/src/lib/api/key-exchange2.gql.ts +310 -0
- package/src/lib/api/key-exchange2.service.spec.ts +892 -0
- package/src/lib/api/key-exchange2.service.ts +875 -0
- package/src/lib/api/lock.gql.ts +67 -0
- package/src/lib/api/lock.service.spec.ts +549 -0
- package/src/lib/api/lock.service.ts +57 -0
- package/src/lib/api/lr-apollo.service.spec.ts +27 -0
- package/src/lib/api/lr-apollo.service.ts +43 -0
- package/{lib/api/lr-graphql/index.d.ts → src/lib/api/lr-graphql/index.ts} +5 -5
- package/src/lib/api/lr-graphql/lr-graphql.service.ts +313 -0
- package/src/lib/api/lr-graphql/lr-merged-mutation.ts +377 -0
- package/src/lib/api/lr-graphql/lr-mutation-base.ts +67 -0
- package/src/lib/api/lr-graphql/lr-mutation.ts +74 -0
- package/src/lib/api/lr-graphql/lr.service.ts +28 -0
- package/src/lib/api/message.service.spec.ts +20 -0
- package/src/lib/api/message.service.ts +210 -0
- package/src/lib/api/persist.service.spec.ts +209 -0
- package/src/lib/api/persist.service.ts +220 -0
- package/src/lib/api/query-processor/common-processors.service.ts +148 -0
- package/{lib/api/query-processor/index.d.ts → src/lib/api/query-processor/index.ts} +2 -2
- package/src/lib/api/query-processor/query-processor.service.ts +240 -0
- package/src/lib/api/query-processor/tp-password-reset-processor.service.ts +177 -0
- package/src/lib/api/shared-contact-card.service.ts +156 -0
- package/src/lib/api/shared-contact-card2.gql.ts +76 -0
- package/src/lib/api/shared-contact-card2.service.ts +154 -0
- package/src/lib/api/time.service.spec.ts +48 -0
- package/src/lib/api/time.service.ts +155 -0
- package/src/lib/api/types/graphql.types.ts +48 -0
- package/{lib/api/types/index.d.ts → src/lib/api/types/index.ts} +2 -2
- package/src/lib/api/types/lr-graphql.types.ts +467 -0
- package/src/lib/auth/auth.config.ts +83 -0
- package/src/lib/auth/auth.gql.ts +62 -0
- package/src/lib/auth/auth.types.ts +79 -0
- package/src/lib/auth/idle.service.spec.ts +119 -0
- package/src/lib/auth/idle.service.ts +208 -0
- package/src/lib/auth/idle.types.ts +11 -0
- package/src/lib/auth/lbop.service.spec.ts +56 -0
- package/src/lib/auth/lbop.service.ts +539 -0
- package/src/lib/auth/life-ready-auth.service.spec.ts +70 -0
- package/src/lib/auth/life-ready-auth.service.ts +454 -0
- package/src/lib/auth/password.service.spec.ts +51 -0
- package/src/lib/auth/password.service.ts +438 -0
- package/src/lib/auth/register.service.spec.ts +31 -0
- package/src/lib/auth/register.service.ts +181 -0
- package/src/lib/auth/two-factor.service.spec.ts +21 -0
- package/src/lib/auth/two-factor.service.ts +69 -0
- package/src/lib/category/category-meta.service.spec.ts +28 -0
- package/src/lib/category/category-meta.service.ts +125 -0
- package/src/lib/category/category.gql.ts +449 -0
- package/src/lib/category/category.service.spec.ts +26 -0
- package/src/lib/category/category.service.ts +498 -0
- package/src/lib/category/category.types.ts +89 -0
- package/src/lib/cryptography/cryptography.types.ts +108 -0
- package/src/lib/cryptography/encryption.service.spec.ts +125 -0
- package/src/lib/cryptography/encryption.service.ts +243 -0
- package/src/lib/cryptography/key-factory.service.spec.ts +15 -0
- package/src/lib/cryptography/key-factory.service.ts +303 -0
- package/src/lib/cryptography/key-graph.service.spec.ts +16 -0
- package/src/lib/cryptography/key-graph.service.ts +354 -0
- package/src/lib/cryptography/key-meta.service.spec.ts +40 -0
- package/src/lib/cryptography/key-meta.service.ts +254 -0
- package/src/lib/cryptography/key.service.spec.ts +16 -0
- package/src/lib/cryptography/key.service.ts +154 -0
- package/src/lib/cryptography/slip39.service.spec.ts +44 -0
- package/src/lib/cryptography/slip39.service.ts +204 -0
- package/src/lib/cryptography/web-crypto.service.ts +22 -0
- package/src/lib/life-ready.config.ts +127 -0
- package/src/lib/life-ready.module.ts +81 -0
- package/src/lib/plan/plan.gql.ts +133 -0
- package/src/lib/plan/plan.service.spec.ts +294 -0
- package/src/lib/plan/plan.service.ts +198 -0
- package/src/lib/plan/plan.types.ts +37 -0
- package/src/lib/record/record-attachment.service.spec.ts +31 -0
- package/src/lib/record/record-attachment.service.ts +101 -0
- package/src/lib/record/record.gql.ts +192 -0
- package/src/lib/record/record.service.spec.ts +598 -0
- package/src/lib/record/record.service.ts +236 -0
- package/src/lib/record/record.types.ts +86 -0
- package/src/lib/record-type/record-type.service.spec.ts +16 -0
- package/src/lib/record-type/record-type.service.ts +71 -0
- package/src/lib/record-type/record-type.types.ts +58 -0
- package/src/lib/scenario/approvals/scenario-approval.gql.ts +112 -0
- package/src/lib/scenario/approvals/scenario-approval.types.ts +85 -0
- package/src/lib/scenario/approvals/scenario-approver.service.spec.ts +16 -0
- package/src/lib/scenario/approvals/scenario-approver.service.ts +422 -0
- package/src/lib/scenario/claimants/scenario-claimant.gql.ts +56 -0
- package/src/lib/scenario/claimants/scenario-claimant.service.spec.ts +16 -0
- package/src/lib/scenario/claimants/scenario-claimant.service.ts +100 -0
- package/src/lib/scenario/claimants/scenario-claimant.types.ts +21 -0
- package/src/lib/scenario/receivers/scenario-receiver.gql.ts +157 -0
- package/src/lib/scenario/receivers/scenario-receiver.service.spec.ts +16 -0
- package/src/lib/scenario/receivers/scenario-receiver.service.ts +278 -0
- package/src/lib/scenario/receivers/scenario-receiver.types.ts +66 -0
- package/src/lib/scenario/scenario-setup.service.spec.ts +22 -0
- package/src/lib/scenario/scenario-setup.service.ts +369 -0
- package/src/lib/scenario/scenario.gql.ts +404 -0
- package/src/lib/scenario/scenario.service.spec.ts +1586 -0
- package/src/lib/scenario/scenario.service.ts +811 -0
- package/src/lib/scenario/scenario.types.ts +258 -0
- package/src/lib/search/search.gql.ts +62 -0
- package/src/lib/search/search.service.spec.ts +57 -0
- package/src/lib/search/search.service.ts +174 -0
- package/src/lib/search/search.types.ts +24 -0
- package/src/lib/trusted-parties/tp-password-reset-request.service.ts +140 -0
- package/src/lib/trusted-parties/tp-password-reset-user.service.ts +359 -0
- package/src/lib/trusted-parties/tp-password-reset.gql.ts +453 -0
- package/src/lib/trusted-parties/tp-password-reset.service.spec.ts +602 -0
- package/src/lib/trusted-parties/tp-password-reset.service.ts +482 -0
- package/src/lib/trusted-parties/trusted-party.gql.ts +159 -0
- package/src/lib/trusted-parties/trusted-party.service.spec.ts +1008 -0
- package/src/lib/trusted-parties/trusted-party.service.ts +394 -0
- package/src/lib/trusted-parties/trusted-party.types.ts +119 -0
- package/src/lib/trusted-parties/trusted-party2.gql.ts +165 -0
- package/src/lib/trusted-parties/trusted-party2.service.spec.ts +1782 -0
- package/src/lib/trusted-parties/trusted-party2.service.ts +272 -0
- package/src/lib/users/profile-details.service.spec.ts +45 -0
- package/src/lib/users/profile-details.service.ts +278 -0
- package/src/lib/users/profile.gql.ts +108 -0
- package/src/lib/users/profile.service.spec.ts +97 -0
- package/src/lib/users/profile.service.ts +224 -0
- package/src/lib/users/profile.types.ts +101 -0
- package/src/lib/users/user.gql.ts +69 -0
- package/src/lib/users/user.service.spec.ts +161 -0
- package/src/lib/users/user.service.ts +72 -0
- package/src/lib/users/user.types.ts +27 -0
- package/{public-api.d.ts → src/public-api.ts} +96 -77
- package/src/test.ts +21 -0
- package/tsconfig.lib.json +21 -0
- package/tsconfig.lib.prod.json +6 -0
- package/tsconfig.spec.json +10 -0
- package/tslint.json +17 -0
- package/bundles/lifeready-core.umd.js +0 -15876
- package/bundles/lifeready-core.umd.js.map +0 -1
- package/bundles/lifeready-core.umd.min.js +0 -16
- package/bundles/lifeready-core.umd.min.js.map +0 -1
- package/esm2015/lib/_common/ast.js +0 -40
- package/esm2015/lib/_common/deferred-promise.js +0 -24
- package/esm2015/lib/_common/exceptions.js +0 -157
- package/esm2015/lib/_common/queries.gql.js +0 -190
- package/esm2015/lib/_common/run-outside-angular.js +0 -79
- package/esm2015/lib/_common/types.js +0 -1
- package/esm2015/lib/_common/utils.js +0 -44
- package/esm2015/lib/api/contact-card.gql.js +0 -79
- package/esm2015/lib/api/contact-card.service.js +0 -154
- package/esm2015/lib/api/contact-card2.gql.js +0 -60
- package/esm2015/lib/api/contact-card2.service.js +0 -103
- package/esm2015/lib/api/file.service.js +0 -74
- package/esm2015/lib/api/item2.gql.js +0 -110
- package/esm2015/lib/api/item2.service.js +0 -311
- package/esm2015/lib/api/key-exchange.gql.js +0 -188
- package/esm2015/lib/api/key-exchange.service.js +0 -442
- package/esm2015/lib/api/key-exchange.types.js +0 -18
- package/esm2015/lib/api/key-exchange2.gql.js +0 -171
- package/esm2015/lib/api/key-exchange2.service.js +0 -479
- package/esm2015/lib/api/lock.gql.js +0 -40
- package/esm2015/lib/api/lock.service.js +0 -64
- package/esm2015/lib/api/lr-apollo.service.js +0 -46
- package/esm2015/lib/api/lr-graphql/index.js +0 -6
- package/esm2015/lib/api/lr-graphql/lr-graphql.service.js +0 -155
- package/esm2015/lib/api/lr-graphql/lr-merged-mutation.js +0 -213
- package/esm2015/lib/api/lr-graphql/lr-mutation-base.js +0 -51
- package/esm2015/lib/api/lr-graphql/lr-mutation.js +0 -48
- package/esm2015/lib/api/lr-graphql/lr.service.js +0 -18
- package/esm2015/lib/api/message.service.js +0 -138
- package/esm2015/lib/api/persist.service.js +0 -181
- package/esm2015/lib/api/query-processor/common-processors.service.js +0 -93
- package/esm2015/lib/api/query-processor/index.js +0 -3
- package/esm2015/lib/api/query-processor/query-processor.service.js +0 -192
- package/esm2015/lib/api/query-processor/tp-password-reset-processor.service.js +0 -109
- package/esm2015/lib/api/shared-contact-card.service.js +0 -119
- package/esm2015/lib/api/shared-contact-card2.gql.js +0 -41
- package/esm2015/lib/api/shared-contact-card2.service.js +0 -117
- package/esm2015/lib/api/time.service.js +0 -146
- package/esm2015/lib/api/types/graphql.types.js +0 -7
- package/esm2015/lib/api/types/index.js +0 -3
- package/esm2015/lib/api/types/lr-graphql.types.js +0 -71
- package/esm2015/lib/auth/auth.config.js +0 -57
- package/esm2015/lib/auth/auth.gql.js +0 -48
- package/esm2015/lib/auth/auth.types.js +0 -27
- package/esm2015/lib/auth/idle.service.js +0 -168
- package/esm2015/lib/auth/idle.types.js +0 -7
- package/esm2015/lib/auth/lbop.service.js +0 -355
- package/esm2015/lib/auth/life-ready-auth.service.js +0 -333
- package/esm2015/lib/auth/password.service.js +0 -320
- package/esm2015/lib/auth/register.service.js +0 -172
- package/esm2015/lib/auth/two-factor.service.js +0 -74
- package/esm2015/lib/category/category-meta.service.js +0 -99
- package/esm2015/lib/category/category.gql.js +0 -406
- package/esm2015/lib/category/category.service.js +0 -390
- package/esm2015/lib/category/category.types.js +0 -29
- package/esm2015/lib/cryptography/cryptography.types.js +0 -11
- package/esm2015/lib/cryptography/encryption.service.js +0 -189
- package/esm2015/lib/cryptography/key-factory.service.js +0 -237
- package/esm2015/lib/cryptography/key-graph.service.js +0 -280
- package/esm2015/lib/cryptography/key-meta.service.js +0 -200
- package/esm2015/lib/cryptography/key.service.js +0 -124
- package/esm2015/lib/cryptography/slip39.service.js +0 -169
- package/esm2015/lib/cryptography/web-crypto.service.js +0 -29
- package/esm2015/lib/life-ready.config.js +0 -84
- package/esm2015/lib/life-ready.module.js +0 -74
- package/esm2015/lib/plan/plan.gql.js +0 -123
- package/esm2015/lib/plan/plan.service.js +0 -149
- package/esm2015/lib/plan/plan.types.js +0 -11
- package/esm2015/lib/record/record-attachment.service.js +0 -101
- package/esm2015/lib/record/record.gql.js +0 -179
- package/esm2015/lib/record/record.service.js +0 -206
- package/esm2015/lib/record/record.types.js +0 -15
- package/esm2015/lib/record-type/record-type.service.js +0 -75
- package/esm2015/lib/record-type/record-type.types.js +0 -28
- package/esm2015/lib/scenario/approvals/scenario-approval.gql.js +0 -105
- package/esm2015/lib/scenario/approvals/scenario-approval.types.js +0 -1
- package/esm2015/lib/scenario/approvals/scenario-approver.service.js +0 -300
- package/esm2015/lib/scenario/claimants/scenario-claimant.gql.js +0 -52
- package/esm2015/lib/scenario/claimants/scenario-claimant.service.js +0 -97
- package/esm2015/lib/scenario/claimants/scenario-claimant.types.js +0 -1
- package/esm2015/lib/scenario/receivers/scenario-receiver.gql.js +0 -150
- package/esm2015/lib/scenario/receivers/scenario-receiver.service.js +0 -229
- package/esm2015/lib/scenario/receivers/scenario-receiver.types.js +0 -1
- package/esm2015/lib/scenario/scenario-setup.service.js +0 -269
- package/esm2015/lib/scenario/scenario.gql.js +0 -368
- package/esm2015/lib/scenario/scenario.service.js +0 -611
- package/esm2015/lib/scenario/scenario.types.js +0 -64
- package/esm2015/lib/search/search.gql.js +0 -62
- package/esm2015/lib/search/search.service.js +0 -156
- package/esm2015/lib/search/search.types.js +0 -6
- package/esm2015/lib/trusted-parties/tp-password-reset-request.service.js +0 -112
- package/esm2015/lib/trusted-parties/tp-password-reset-user.service.js +0 -266
- package/esm2015/lib/trusted-parties/tp-password-reset.gql.js +0 -232
- package/esm2015/lib/trusted-parties/tp-password-reset.service.js +0 -300
- package/esm2015/lib/trusted-parties/trusted-party.gql.js +0 -148
- package/esm2015/lib/trusted-parties/trusted-party.service.js +0 -326
- package/esm2015/lib/trusted-parties/trusted-party.types.js +0 -41
- package/esm2015/lib/trusted-parties/trusted-party2.gql.js +0 -87
- package/esm2015/lib/trusted-parties/trusted-party2.service.js +0 -215
- package/esm2015/lib/users/profile-details.service.js +0 -214
- package/esm2015/lib/users/profile.gql.js +0 -97
- package/esm2015/lib/users/profile.service.js +0 -169
- package/esm2015/lib/users/profile.types.js +0 -34
- package/esm2015/lib/users/user.gql.js +0 -60
- package/esm2015/lib/users/user.service.js +0 -79
- package/esm2015/lib/users/user.types.js +0 -5
- package/esm2015/lifeready-core.js +0 -10
- package/esm2015/public-api.js +0 -81
- package/fesm2015/lifeready-core.js +0 -13282
- package/fesm2015/lifeready-core.js.map +0 -1
- package/lib/_common/ast.d.ts +0 -11
- package/lib/_common/deferred-promise.d.ts +0 -12
- package/lib/_common/exceptions.d.ts +0 -109
- package/lib/_common/queries.gql.d.ts +0 -10
- package/lib/_common/run-outside-angular.d.ts +0 -14
- package/lib/_common/utils.d.ts +0 -3
- package/lib/api/contact-card.gql.d.ts +0 -7
- package/lib/api/contact-card.service.d.ts +0 -52
- package/lib/api/contact-card2.gql.d.ts +0 -34
- package/lib/api/contact-card2.service.d.ts +0 -49
- package/lib/api/file.service.d.ts +0 -18
- package/lib/api/item2.gql.d.ts +0 -96
- package/lib/api/item2.service.d.ts +0 -177
- package/lib/api/key-exchange.gql.d.ts +0 -9
- package/lib/api/key-exchange.service.d.ts +0 -39
- package/lib/api/key-exchange.types.d.ts +0 -196
- package/lib/api/key-exchange2.gql.d.ts +0 -125
- package/lib/api/key-exchange2.service.d.ts +0 -187
- package/lib/api/lock.gql.d.ts +0 -27
- package/lib/api/lock.service.d.ts +0 -25
- package/lib/api/lr-apollo.service.d.ts +0 -15
- package/lib/api/lr-graphql/lr-graphql.service.d.ts +0 -60
- package/lib/api/lr-graphql/lr-merged-mutation.d.ts +0 -27
- package/lib/api/lr-graphql/lr-mutation-base.d.ts +0 -28
- package/lib/api/lr-graphql/lr-mutation.d.ts +0 -8
- package/lib/api/lr-graphql/lr.service.d.ts +0 -9
- package/lib/api/message.service.d.ts +0 -58
- package/lib/api/persist.service.d.ts +0 -31
- package/lib/api/query-processor/common-processors.service.d.ts +0 -36
- package/lib/api/query-processor/query-processor.service.d.ts +0 -18
- package/lib/api/query-processor/tp-password-reset-processor.service.d.ts +0 -15
- package/lib/api/shared-contact-card.service.d.ts +0 -33
- package/lib/api/shared-contact-card2.gql.d.ts +0 -36
- package/lib/api/shared-contact-card2.service.d.ts +0 -45
- package/lib/api/time.service.d.ts +0 -16
- package/lib/api/types/graphql.types.d.ts +0 -29
- package/lib/api/types/lr-graphql.types.d.ts +0 -385
- package/lib/auth/auth.config.d.ts +0 -5
- package/lib/auth/auth.gql.d.ts +0 -15
- package/lib/auth/auth.types.d.ts +0 -66
- package/lib/auth/idle.service.d.ts +0 -40
- package/lib/auth/idle.types.d.ts +0 -10
- package/lib/auth/lbop.service.d.ts +0 -91
- package/lib/auth/life-ready-auth.service.d.ts +0 -46
- package/lib/auth/password.service.d.ts +0 -78
- package/lib/auth/register.service.d.ts +0 -25
- package/lib/auth/two-factor.service.d.ts +0 -15
- package/lib/category/category-meta.service.d.ts +0 -23
- package/lib/category/category.gql.d.ts +0 -45
- package/lib/category/category.service.d.ts +0 -67
- package/lib/category/category.types.d.ts +0 -79
- package/lib/cryptography/cryptography.types.d.ts +0 -83
- package/lib/cryptography/encryption.service.d.ts +0 -41
- package/lib/cryptography/key-factory.service.d.ts +0 -38
- package/lib/cryptography/key-graph.service.d.ts +0 -33
- package/lib/cryptography/key-meta.service.d.ts +0 -44
- package/lib/cryptography/key.service.d.ts +0 -36
- package/lib/cryptography/slip39.service.d.ts +0 -43
- package/lib/cryptography/web-crypto.service.d.ts +0 -5
- package/lib/life-ready.config.d.ts +0 -14
- package/lib/life-ready.module.d.ts +0 -5
- package/lib/plan/plan.gql.d.ts +0 -11
- package/lib/plan/plan.service.d.ts +0 -33
- package/lib/plan/plan.types.d.ts +0 -31
- package/lib/record/record-attachment.service.d.ts +0 -16
- package/lib/record/record.gql.d.ts +0 -14
- package/lib/record/record.service.d.ts +0 -25
- package/lib/record/record.types.d.ts +0 -57
- package/lib/record-type/record-type.service.d.ts +0 -11
- package/lib/record-type/record-type.types.d.ts +0 -50
- package/lib/scenario/approvals/scenario-approval.gql.d.ts +0 -7
- package/lib/scenario/approvals/scenario-approval.types.d.ts +0 -63
- package/lib/scenario/approvals/scenario-approver.service.d.ts +0 -32
- package/lib/scenario/claimants/scenario-claimant.gql.d.ts +0 -5
- package/lib/scenario/claimants/scenario-claimant.service.d.ts +0 -17
- package/lib/scenario/claimants/scenario-claimant.types.d.ts +0 -18
- package/lib/scenario/receivers/scenario-receiver.gql.d.ts +0 -8
- package/lib/scenario/receivers/scenario-receiver.service.d.ts +0 -30
- package/lib/scenario/receivers/scenario-receiver.types.d.ts +0 -54
- package/lib/scenario/scenario-setup.service.d.ts +0 -22
- package/lib/scenario/scenario.gql.d.ts +0 -34
- package/lib/scenario/scenario.service.d.ts +0 -58
- package/lib/scenario/scenario.types.d.ts +0 -217
- package/lib/search/search.gql.d.ts +0 -1
- package/lib/search/search.service.d.ts +0 -25
- package/lib/search/search.types.d.ts +0 -20
- package/lib/trusted-parties/tp-password-reset-request.service.d.ts +0 -20
- package/lib/trusted-parties/tp-password-reset-user.service.d.ts +0 -41
- package/lib/trusted-parties/tp-password-reset.gql.d.ts +0 -218
- package/lib/trusted-parties/tp-password-reset.service.d.ts +0 -131
- package/lib/trusted-parties/trusted-party.gql.d.ts +0 -9
- package/lib/trusted-parties/trusted-party.service.d.ts +0 -44
- package/lib/trusted-parties/trusted-party.types.d.ts +0 -102
- package/lib/trusted-parties/trusted-party2.gql.d.ts +0 -79
- package/lib/trusted-parties/trusted-party2.service.d.ts +0 -114
- package/lib/users/profile-details.service.d.ts +0 -21
- package/lib/users/profile.gql.d.ts +0 -11
- package/lib/users/profile.service.d.ts +0 -35
- package/lib/users/profile.types.d.ts +0 -96
- package/lib/users/user.gql.d.ts +0 -9
- package/lib/users/user.service.d.ts +0 -12
- package/lib/users/user.types.d.ts +0 -23
- package/lifeready-core.d.ts +0 -9
- package/lifeready-core.metadata.json +0 -1
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
import { TestBed } from '@angular/core/testing';
|
|
2
|
+
import { environment } from 'projects/lr-auth-app/src/environments/environment';
|
|
3
|
+
import {
|
|
4
|
+
loginTestUser,
|
|
5
|
+
logoutUser,
|
|
6
|
+
} from '../auth/life-ready-auth.service.spec';
|
|
7
|
+
import {
|
|
8
|
+
lrConfigureTestingModule,
|
|
9
|
+
lrExpectAsyncThrow,
|
|
10
|
+
lrit,
|
|
11
|
+
} from '../_common/tests';
|
|
12
|
+
import {
|
|
13
|
+
ContactCardService,
|
|
14
|
+
CreateContactCardInput,
|
|
15
|
+
} from './contact-card.service';
|
|
16
|
+
|
|
17
|
+
const TIMEOUT = 1000 * 60 * 10;
|
|
18
|
+
|
|
19
|
+
describe('ContactCardService', () => {
|
|
20
|
+
let ccService: ContactCardService;
|
|
21
|
+
|
|
22
|
+
beforeEach(async () => {
|
|
23
|
+
lrConfigureTestingModule();
|
|
24
|
+
ccService = TestBed.inject(ContactCardService);
|
|
25
|
+
}, TIMEOUT);
|
|
26
|
+
|
|
27
|
+
lrit(
|
|
28
|
+
'should create single contact card',
|
|
29
|
+
async () => {
|
|
30
|
+
if (!environment.test) {
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
const {
|
|
35
|
+
username: username1,
|
|
36
|
+
password: password1,
|
|
37
|
+
} = environment.test.users[0];
|
|
38
|
+
let res;
|
|
39
|
+
let cc1;
|
|
40
|
+
|
|
41
|
+
// ------------------------------------------------------
|
|
42
|
+
// Test User 1
|
|
43
|
+
// ------------------------------------------------------
|
|
44
|
+
await loginTestUser(username1, password1);
|
|
45
|
+
|
|
46
|
+
// Clear contact cards
|
|
47
|
+
await Promise.all(
|
|
48
|
+
(await ccService.getContactCardList()).map(async (cc) => {
|
|
49
|
+
res = await ccService.deleteContactCard(cc.id);
|
|
50
|
+
expect(res).toBeTruthy();
|
|
51
|
+
})
|
|
52
|
+
);
|
|
53
|
+
|
|
54
|
+
const card1: CreateContactCardInput = {
|
|
55
|
+
plainCipherDataJson: { secret: 1 },
|
|
56
|
+
publicDataJson: '',
|
|
57
|
+
publicSearchableJson: '',
|
|
58
|
+
plainDataJson: { name: { name: 'name 1' } },
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
res = await ccService.createContactCard(card1);
|
|
62
|
+
cc1 = await ccService.getContactCard(res.id);
|
|
63
|
+
expect(cc1.id).toEqual(res.id);
|
|
64
|
+
expect(cc1.plainCipherDataJson).toEqual(card1.plainCipherDataJson);
|
|
65
|
+
expect(cc1.publicDataJson).toEqual(card1.publicDataJson);
|
|
66
|
+
expect(cc1.publicSearchableJson).toEqual(card1.publicSearchableJson);
|
|
67
|
+
},
|
|
68
|
+
TIMEOUT
|
|
69
|
+
);
|
|
70
|
+
|
|
71
|
+
lrit(
|
|
72
|
+
'should create contact cards',
|
|
73
|
+
async () => {
|
|
74
|
+
if (!environment.test) {
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
const {
|
|
79
|
+
username: username1,
|
|
80
|
+
password: password1,
|
|
81
|
+
} = environment.test.users[0];
|
|
82
|
+
const {
|
|
83
|
+
username: username2,
|
|
84
|
+
password: password2,
|
|
85
|
+
} = environment.test.users[1];
|
|
86
|
+
const {
|
|
87
|
+
username: username3,
|
|
88
|
+
password: password3,
|
|
89
|
+
} = environment.test.users[2];
|
|
90
|
+
|
|
91
|
+
let res;
|
|
92
|
+
let cc1;
|
|
93
|
+
let cc2;
|
|
94
|
+
let cc3;
|
|
95
|
+
|
|
96
|
+
const publicSearchableFilter = {
|
|
97
|
+
filter: [{ contains: { b: { c: 2 } } }],
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
// ------------------------------------------------------
|
|
101
|
+
// Signed out
|
|
102
|
+
// ------------------------------------------------------
|
|
103
|
+
await logoutUser();
|
|
104
|
+
|
|
105
|
+
(await lrExpectAsyncThrow(ccService.getContactCardList())).toBeTruthy();
|
|
106
|
+
(
|
|
107
|
+
await lrExpectAsyncThrow(
|
|
108
|
+
ccService.searchContactCard(publicSearchableFilter)
|
|
109
|
+
)
|
|
110
|
+
).toBeTruthy();
|
|
111
|
+
|
|
112
|
+
// ------------------------------------------------------
|
|
113
|
+
// Test User 1
|
|
114
|
+
// ------------------------------------------------------
|
|
115
|
+
await loginTestUser(username1, password1);
|
|
116
|
+
|
|
117
|
+
// Clear contact cards
|
|
118
|
+
await Promise.all(
|
|
119
|
+
(await ccService.getContactCardList()).map(async (cc) => {
|
|
120
|
+
res = await ccService.deleteContactCard(cc.id);
|
|
121
|
+
expect(res).toBeTruthy();
|
|
122
|
+
})
|
|
123
|
+
);
|
|
124
|
+
|
|
125
|
+
const card1: CreateContactCardInput = {
|
|
126
|
+
plainCipherDataJson: { secret: 1 },
|
|
127
|
+
publicDataJson: { public: 1 },
|
|
128
|
+
publicSearchableJson: { publicSearchable: 1 },
|
|
129
|
+
plainDataJson: { name: { name: 'name 1' } },
|
|
130
|
+
};
|
|
131
|
+
|
|
132
|
+
const card2: CreateContactCardInput = {
|
|
133
|
+
plainCipherDataJson: { secret: 2 },
|
|
134
|
+
publicDataJson: { public: 2 },
|
|
135
|
+
publicSearchableJson: { publicSearchable: 2 },
|
|
136
|
+
plainDataJson: { name: { name: 'name 2' } },
|
|
137
|
+
};
|
|
138
|
+
|
|
139
|
+
const card2Updated: CreateContactCardInput = {
|
|
140
|
+
plainCipherDataJson: { secret: 22 },
|
|
141
|
+
publicDataJson: { public: 22 },
|
|
142
|
+
publicSearchableJson: { publicSearchable: 22 },
|
|
143
|
+
plainDataJson: { name: { name: 'name 22' } },
|
|
144
|
+
};
|
|
145
|
+
|
|
146
|
+
const card3: CreateContactCardInput = {
|
|
147
|
+
plainCipherDataJson: { secret: 3 },
|
|
148
|
+
publicDataJson: { public: 3 },
|
|
149
|
+
publicSearchableJson: { publicSearchable: 3 },
|
|
150
|
+
plainDataJson: { name: { name: 'name 3' } },
|
|
151
|
+
};
|
|
152
|
+
|
|
153
|
+
// Create contact card 1
|
|
154
|
+
res = await ccService.createContactCard(card1);
|
|
155
|
+
cc1 = await ccService.getContactCard(res.id);
|
|
156
|
+
expect(cc1.id).toEqual(res.id);
|
|
157
|
+
expect(cc1.plainCipherDataJson).toEqual(card1.plainCipherDataJson);
|
|
158
|
+
expect(cc1.publicDataJson).toEqual(card1.publicDataJson);
|
|
159
|
+
expect(cc1.publicSearchableJson).toEqual(card1.publicSearchableJson);
|
|
160
|
+
|
|
161
|
+
// Create contact card 2
|
|
162
|
+
res = await ccService.createContactCard(card2);
|
|
163
|
+
cc2 = await ccService.getContactCard(res.id);
|
|
164
|
+
|
|
165
|
+
// List
|
|
166
|
+
res = await ccService.getContactCardList();
|
|
167
|
+
expect(res.length).toBe(2);
|
|
168
|
+
|
|
169
|
+
// Update
|
|
170
|
+
res = await ccService.updateContactCard({
|
|
171
|
+
id: cc2.id,
|
|
172
|
+
...card2Updated,
|
|
173
|
+
});
|
|
174
|
+
|
|
175
|
+
const cc2Updated = await ccService.getContactCard(cc2.id);
|
|
176
|
+
expect(cc2Updated.id).toEqual(cc2.id);
|
|
177
|
+
expect(cc2Updated.plainCipherDataJson).toEqual(
|
|
178
|
+
card2Updated.plainCipherDataJson
|
|
179
|
+
);
|
|
180
|
+
expect(cc2Updated.publicDataJson).toEqual(card2Updated.publicDataJson);
|
|
181
|
+
expect(cc2Updated.publicSearchableJson).toEqual(
|
|
182
|
+
card2Updated.publicSearchableJson
|
|
183
|
+
);
|
|
184
|
+
// Expecting keys to remain unchanged.
|
|
185
|
+
expect(cc2Updated.key.id).toEqual(cc2.key.id);
|
|
186
|
+
|
|
187
|
+
// Create contact card 3
|
|
188
|
+
cc3 = await ccService.createContactCard(card3);
|
|
189
|
+
res = await ccService.getContactCardList();
|
|
190
|
+
expect(res.length).toEqual(3);
|
|
191
|
+
res = await ccService.deleteContactCard(cc3.id);
|
|
192
|
+
res = await ccService.getContactCardList();
|
|
193
|
+
expect(res.length).toEqual(2);
|
|
194
|
+
|
|
195
|
+
// ------------------------------------------------------
|
|
196
|
+
// Signed out
|
|
197
|
+
// ------------------------------------------------------
|
|
198
|
+
await logoutUser();
|
|
199
|
+
(await lrExpectAsyncThrow(ccService.getContactCard(cc1.id))).toBeTruthy(
|
|
200
|
+
'Query should only available to logged in users'
|
|
201
|
+
);
|
|
202
|
+
|
|
203
|
+
// ------------------------------------------------------
|
|
204
|
+
// Test User 2
|
|
205
|
+
// ------------------------------------------------------
|
|
206
|
+
await loginTestUser(username2, password2);
|
|
207
|
+
|
|
208
|
+
(
|
|
209
|
+
await lrExpectAsyncThrow(ccService.deleteContactCard(cc1.id))
|
|
210
|
+
).toBeTruthy('Should not be able to delete another user\'s contact card.');
|
|
211
|
+
(
|
|
212
|
+
await lrExpectAsyncThrow(
|
|
213
|
+
ccService.updateContactCard({
|
|
214
|
+
id: cc2.id,
|
|
215
|
+
...card2,
|
|
216
|
+
})
|
|
217
|
+
)
|
|
218
|
+
).toBeTruthy('Should not be able to update another user\'s contact card.');
|
|
219
|
+
|
|
220
|
+
// Should be able to search by public searchable
|
|
221
|
+
res = await ccService.searchContactCard({
|
|
222
|
+
filter: [
|
|
223
|
+
{
|
|
224
|
+
contains: {
|
|
225
|
+
...card1.publicSearchableJson,
|
|
226
|
+
},
|
|
227
|
+
},
|
|
228
|
+
],
|
|
229
|
+
});
|
|
230
|
+
|
|
231
|
+
expect(res.length).toBe(1);
|
|
232
|
+
expect(res[0].id).toBe(cc1.id);
|
|
233
|
+
|
|
234
|
+
// Should not be able to search by public data
|
|
235
|
+
res = await ccService.searchContactCard({
|
|
236
|
+
filter: [
|
|
237
|
+
{
|
|
238
|
+
contains: {
|
|
239
|
+
...card1.publicDataJson,
|
|
240
|
+
},
|
|
241
|
+
},
|
|
242
|
+
],
|
|
243
|
+
});
|
|
244
|
+
|
|
245
|
+
expect(res.length).toBe(0);
|
|
246
|
+
},
|
|
247
|
+
TIMEOUT
|
|
248
|
+
);
|
|
249
|
+
});
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { HasKeyGraph, 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 { HasEdges } from '../_common/types';
|
|
7
|
+
import { LrApolloService } from './lr-apollo.service';
|
|
8
|
+
import {
|
|
9
|
+
SearchContactCardQuery,
|
|
10
|
+
ContactCardListQuery,
|
|
11
|
+
ContactCardQuery,
|
|
12
|
+
CreateContactCardMutation,
|
|
13
|
+
UpdateContactCardMutation,
|
|
14
|
+
DeleteContactCardMutation,
|
|
15
|
+
} from './contact-card.gql';
|
|
16
|
+
import { KeyFactoryService } from '../cryptography/key-factory.service';
|
|
17
|
+
import { MainContactCardPlainFields } from '../users/profile.types';
|
|
18
|
+
import { KeyMetaService } from '../cryptography/key-meta.service';
|
|
19
|
+
|
|
20
|
+
interface ContactCardQuery extends HasKeyGraph {
|
|
21
|
+
contactCard: ContactCard;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
interface SearchContactCardQuery extends HasKeyGraph {
|
|
25
|
+
searchContactCards: HasEdges<ContactCard>;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
interface ContactCardListQuery extends HasKeyGraph {
|
|
29
|
+
contactCards: HasEdges<ContactCard>;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export class ContactCard {
|
|
33
|
+
id: string;
|
|
34
|
+
key: Key;
|
|
35
|
+
sigPxk: Key;
|
|
36
|
+
publicData: string;
|
|
37
|
+
publicDataSig: string;
|
|
38
|
+
publicSearchable: string;
|
|
39
|
+
publicSearchableSig: string;
|
|
40
|
+
plainData: string;
|
|
41
|
+
plainDataSig: string;
|
|
42
|
+
cipherData: string;
|
|
43
|
+
// Parse/decrypted versions of the above.
|
|
44
|
+
publicDataJson: any;
|
|
45
|
+
publicSearchableJson: any;
|
|
46
|
+
plainCipherDataJson: any;
|
|
47
|
+
plainDataJson: any;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export interface CreateContactCardInput {
|
|
51
|
+
publicDataJson: any;
|
|
52
|
+
publicSearchableJson: any;
|
|
53
|
+
plainCipherDataJson: any;
|
|
54
|
+
plainDataJson: MainContactCardPlainFields;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
export interface UpdateContactCardInput extends CreateContactCardInput {
|
|
58
|
+
id: string;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
@Injectable({
|
|
62
|
+
providedIn: 'root',
|
|
63
|
+
})
|
|
64
|
+
export class ContactCardService {
|
|
65
|
+
constructor(
|
|
66
|
+
private keyFactory: KeyFactoryService,
|
|
67
|
+
private keyService: KeyService,
|
|
68
|
+
private lrApollo: LrApolloService,
|
|
69
|
+
private keyGraph: KeyGraphService,
|
|
70
|
+
private encryptionService: EncryptionService,
|
|
71
|
+
private keyMetaService: KeyMetaService
|
|
72
|
+
) {}
|
|
73
|
+
|
|
74
|
+
async decryptContactCard(cc: ContactCard): Promise<ContactCard> {
|
|
75
|
+
const ret = {
|
|
76
|
+
...cc,
|
|
77
|
+
publicDataJson: JSON.parse(cc.publicData),
|
|
78
|
+
publicSearchableJson: JSON.parse(cc.publicSearchable),
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
if (cc.key) {
|
|
82
|
+
const key = await this.keyGraph.getJwkKey(cc.key.id);
|
|
83
|
+
// TODO: verify signature
|
|
84
|
+
ret.plainCipherDataJson = await this.encryptionService.decrypt(
|
|
85
|
+
key,
|
|
86
|
+
cc.cipherData
|
|
87
|
+
);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
return ret;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
async decryptContactCardEdges(
|
|
94
|
+
hasEdges: HasEdges<ContactCard>
|
|
95
|
+
): Promise<ContactCard[]> {
|
|
96
|
+
return Promise.all(
|
|
97
|
+
hasEdges.edges.map(async (edge: any) => {
|
|
98
|
+
const cc = edge.node as ContactCard;
|
|
99
|
+
return await this.decryptContactCard(cc);
|
|
100
|
+
})
|
|
101
|
+
);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
// { "filter": [{ "contains": { "a": true } }] }
|
|
105
|
+
async searchContactCard(publicSearchable: object): Promise<ContactCard[]> {
|
|
106
|
+
const data = await this.lrApollo.query<SearchContactCardQuery>({
|
|
107
|
+
query: SearchContactCardQuery,
|
|
108
|
+
variables: {
|
|
109
|
+
publicSearchable: JSON.stringify(publicSearchable),
|
|
110
|
+
},
|
|
111
|
+
});
|
|
112
|
+
|
|
113
|
+
return await this.decryptContactCardEdges(data.searchContactCards);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
async getContactCardList(): Promise<ContactCard[]> {
|
|
117
|
+
const data = await this.lrApollo.query<ContactCardListQuery>({
|
|
118
|
+
query: ContactCardListQuery,
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
return await this.decryptContactCardEdges(data.contactCards);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
async getContactCard(id: string): Promise<ContactCard> {
|
|
125
|
+
const data = await this.lrApollo.query<ContactCardQuery>({
|
|
126
|
+
query: ContactCardQuery,
|
|
127
|
+
variables: {
|
|
128
|
+
id,
|
|
129
|
+
},
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
return await this.decryptContactCard(data.contactCard);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
private async prepareContactCardInput(
|
|
136
|
+
input: CreateContactCardInput
|
|
137
|
+
): Promise<any> {
|
|
138
|
+
const sigPxk = await this.keyService.getCurrentSigPxk();
|
|
139
|
+
const publicDataSig = JSON.stringify(
|
|
140
|
+
await this.encryptionService.sign(sigPxk.jwk, input.publicDataJson)
|
|
141
|
+
);
|
|
142
|
+
const publicSearchableSig = JSON.stringify(
|
|
143
|
+
await this.encryptionService.sign(sigPxk.jwk, input.publicSearchableJson)
|
|
144
|
+
);
|
|
145
|
+
const plainDataSig = JSON.stringify(
|
|
146
|
+
await this.encryptionService.sign(sigPxk.jwk, input.plainDataJson)
|
|
147
|
+
);
|
|
148
|
+
|
|
149
|
+
return {
|
|
150
|
+
sigPxkId: sigPxk.id,
|
|
151
|
+
publicDataSig,
|
|
152
|
+
publicSearchableSig,
|
|
153
|
+
plainDataSig,
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
async createContactCard(input: CreateContactCardInput): Promise<ContactCard> {
|
|
158
|
+
// Get encryption key
|
|
159
|
+
const rootKey = await this.keyService.getCurrentRootKey();
|
|
160
|
+
const key = await this.keyFactory.createKey();
|
|
161
|
+
const wrappedKey = await this.keyGraph.encryptToString(
|
|
162
|
+
rootKey.jwk,
|
|
163
|
+
key.toJSON(true)
|
|
164
|
+
);
|
|
165
|
+
const cipherData = await this.keyGraph.encryptToString(
|
|
166
|
+
key,
|
|
167
|
+
input.plainCipherDataJson
|
|
168
|
+
);
|
|
169
|
+
|
|
170
|
+
const params = await this.prepareContactCardInput(input);
|
|
171
|
+
|
|
172
|
+
const data = await this.lrApollo.mutate<{
|
|
173
|
+
createContactCard: { contactCard: ContactCard };
|
|
174
|
+
}>({
|
|
175
|
+
mutation: CreateContactCardMutation,
|
|
176
|
+
variables: {
|
|
177
|
+
input: {
|
|
178
|
+
...params,
|
|
179
|
+
wrappingKeyId: rootKey.id,
|
|
180
|
+
wrappedKey,
|
|
181
|
+
cipherData,
|
|
182
|
+
},
|
|
183
|
+
},
|
|
184
|
+
});
|
|
185
|
+
|
|
186
|
+
return data.createContactCard.contactCard;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
async updateContactCard(input: UpdateContactCardInput): Promise<ContactCard> {
|
|
190
|
+
// Get encryption key
|
|
191
|
+
const cc = await this.getContactCard(input.id);
|
|
192
|
+
const key = await this.keyGraph.getJwkKey(cc.key.id);
|
|
193
|
+
const cipherData = await this.keyGraph.encryptToString(
|
|
194
|
+
key,
|
|
195
|
+
input.plainCipherDataJson
|
|
196
|
+
);
|
|
197
|
+
|
|
198
|
+
const params = await this.prepareContactCardInput(input);
|
|
199
|
+
|
|
200
|
+
const data = await this.lrApollo.mutate<{
|
|
201
|
+
updateContactCard: { contactCard: ContactCard };
|
|
202
|
+
}>({
|
|
203
|
+
mutation: UpdateContactCardMutation,
|
|
204
|
+
variables: {
|
|
205
|
+
input: {
|
|
206
|
+
...params,
|
|
207
|
+
id: input.id,
|
|
208
|
+
cipherData,
|
|
209
|
+
},
|
|
210
|
+
},
|
|
211
|
+
});
|
|
212
|
+
|
|
213
|
+
return data.updateContactCard.contactCard;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
async deleteContactCard(id: string): Promise<string> {
|
|
217
|
+
const data = await this.lrApollo.mutate<any>({
|
|
218
|
+
mutation: DeleteContactCardMutation,
|
|
219
|
+
variables: {
|
|
220
|
+
input: {
|
|
221
|
+
id,
|
|
222
|
+
},
|
|
223
|
+
},
|
|
224
|
+
});
|
|
225
|
+
|
|
226
|
+
return data.deleteContactCard.id;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { Connection, ContactCardNode, ID } from './types';
|
|
2
|
+
import { gqlTyped } from '../_common/ast';
|
|
3
|
+
|
|
4
|
+
export const ContactCardFragment = gqlTyped<ContactCardNode>`
|
|
5
|
+
fragment ContactCardFragment on ContactCardNode {
|
|
6
|
+
id
|
|
7
|
+
publicData
|
|
8
|
+
publicSearchable
|
|
9
|
+
cipherData
|
|
10
|
+
key {
|
|
11
|
+
id
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
`;
|
|
15
|
+
|
|
16
|
+
export interface CreateContactCardMutation {
|
|
17
|
+
createContactCard: {
|
|
18
|
+
contactCard: {
|
|
19
|
+
id: ID;
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
export const CreateContactCardMutation = gqlTyped<CreateContactCardMutation>`
|
|
24
|
+
mutation CreateContactCardMutation(
|
|
25
|
+
$input: CreateContactCardInput!
|
|
26
|
+
) {
|
|
27
|
+
createContactCard(input: $input) {
|
|
28
|
+
contactCard {
|
|
29
|
+
id
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
`;
|
|
34
|
+
|
|
35
|
+
export interface UpdateContactCardMutation {
|
|
36
|
+
updateContactCard: {
|
|
37
|
+
contactCard: {
|
|
38
|
+
id: ID;
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
export const UpdateContactCardMutation = gqlTyped<UpdateContactCardMutation>`
|
|
43
|
+
mutation UpdateContactCardMutation($input: UpdateContactCardInput!) {
|
|
44
|
+
updateContactCard(input: $input) {
|
|
45
|
+
contactCard {
|
|
46
|
+
id
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
`;
|
|
51
|
+
|
|
52
|
+
export interface DeleteContactCardMutation {
|
|
53
|
+
deleteContactCard: {
|
|
54
|
+
deleteContactCard: {
|
|
55
|
+
id: ID;
|
|
56
|
+
};
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
export const DeleteContactCardMutation = gqlTyped<DeleteContactCardMutation>`
|
|
60
|
+
mutation DeleteContactCardMutation($input: DeleteContactCardInput!) {
|
|
61
|
+
deleteContactCard(input: $input) {
|
|
62
|
+
id
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
`;
|
|
66
|
+
|
|
67
|
+
export interface ContactCardsQuery {
|
|
68
|
+
contactCards: Connection<ContactCardNode>;
|
|
69
|
+
}
|
|
70
|
+
export const ContactCardsQuery = gqlTyped<ContactCardsQuery>`
|
|
71
|
+
query ContactCardsQuery {
|
|
72
|
+
contactCards(orderBy: "created") {
|
|
73
|
+
edges {
|
|
74
|
+
node {
|
|
75
|
+
...ContactCardFragment
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
${ContactCardFragment}
|
|
81
|
+
`;
|
|
82
|
+
|
|
83
|
+
export interface ContactCardQuery {
|
|
84
|
+
contactCard: ContactCardNode;
|
|
85
|
+
}
|
|
86
|
+
export const ContactCardQuery = gqlTyped<ContactCardQuery>`
|
|
87
|
+
query ContactCardQuery($id: LrRelayIdInput!) {
|
|
88
|
+
contactCard(id: $id) {
|
|
89
|
+
...ContactCardFragment
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
${ContactCardFragment}
|
|
93
|
+
`;
|