@lifeready/core 9.0.7 → 10.0.0
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/fesm2022/lifeready-core.mjs +10522 -0
- package/fesm2022/lifeready-core.mjs.map +1 -0
- package/package.json +21 -16
- package/types/lifeready-core.d.ts +5329 -0
- package/bundles/lifeready-core.umd.js +0 -13231
- package/bundles/lifeready-core.umd.js.map +0 -1
- package/bundles/lifeready-core.umd.min.js +0 -2
- package/bundles/lifeready-core.umd.min.js.map +0 -1
- package/esm2015/lib/_common/ast.js +0 -41
- package/esm2015/lib/_common/deferred-promise.js +0 -24
- package/esm2015/lib/_common/exceptions.js +0 -186
- package/esm2015/lib/_common/index.js +0 -3
- package/esm2015/lib/_common/kc-lodash.js +0 -11
- package/esm2015/lib/_common/key.js +0 -28
- package/esm2015/lib/_common/queries.gql.js +0 -43
- package/esm2015/lib/_common/run-outside-angular.js +0 -80
- package/esm2015/lib/_common/storage.js +0 -28
- package/esm2015/lib/_common/types.js +0 -2
- package/esm2015/lib/_common/utils.js +0 -73
- package/esm2015/lib/api/lr-apollo.service.js +0 -47
- package/esm2015/lib/api/lr-graphql/index.js +0 -6
- package/esm2015/lib/api/lr-graphql/lr-graphql.service.js +0 -170
- package/esm2015/lib/api/lr-graphql/lr-merged-mutation.js +0 -216
- package/esm2015/lib/api/lr-graphql/lr-mutation-base.js +0 -51
- package/esm2015/lib/api/lr-graphql/lr-mutation.js +0 -91
- package/esm2015/lib/api/lr-graphql/lr.service.js +0 -18
- package/esm2015/lib/api/query-processor/common-processors.service.js +0 -94
- package/esm2015/lib/api/query-processor/index.js +0 -3
- package/esm2015/lib/api/query-processor/query-processor.service.js +0 -307
- package/esm2015/lib/api/query-processor/tp-password-reset-processor.service.js +0 -110
- package/esm2015/lib/api/types/graphql.types.js +0 -8
- package/esm2015/lib/api/types/index.js +0 -3
- package/esm2015/lib/api/types/lr-graphql.types.js +0 -182
- package/esm2015/lib/auth/auth.config.js +0 -57
- package/esm2015/lib/auth/auth.gql.private.js +0 -85
- package/esm2015/lib/auth/auth.service.js +0 -616
- package/esm2015/lib/auth/auth.types.js +0 -19
- package/esm2015/lib/contact-card/contact-card.gql.js +0 -79
- package/esm2015/lib/contact-card/contact-card.service.js +0 -156
- package/esm2015/lib/contact-card/contact-card2.gql.js +0 -29
- package/esm2015/lib/contact-card/contact-card2.service.js +0 -103
- package/esm2015/lib/encryption/encryption.service.js +0 -188
- package/esm2015/lib/file-upload/file-upload.service.js +0 -70
- package/esm2015/lib/file-upload/file-upload.types.js +0 -2
- package/esm2015/lib/idle/idle.service.js +0 -159
- package/esm2015/lib/idle/idle.types.js +0 -7
- package/esm2015/lib/item/item.gql.js +0 -166
- package/esm2015/lib/item/item.gql.private.js +0 -41
- package/esm2015/lib/item/item.service.js +0 -662
- package/esm2015/lib/item/item.types.js +0 -2
- package/esm2015/lib/key/key-factory.service.js +0 -226
- package/esm2015/lib/key/key-graph.service.js +0 -314
- package/esm2015/lib/key/key-meta.service.js +0 -153
- package/esm2015/lib/key/key.service.js +0 -124
- package/esm2015/lib/key/key.types.js +0 -16
- package/esm2015/lib/key-exchange/key-exchange.gql.js +0 -174
- package/esm2015/lib/key-exchange/key-exchange.service.js +0 -496
- package/esm2015/lib/lbop/lbop.service.js +0 -351
- package/esm2015/lib/life-ready.config.js +0 -96
- package/esm2015/lib/life-ready.module.js +0 -42
- package/esm2015/lib/lock/lock.gql.js +0 -40
- package/esm2015/lib/lock/lock.service.js +0 -64
- package/esm2015/lib/notification/notification.gql.js +0 -43
- package/esm2015/lib/notification/notification.service.js +0 -118
- package/esm2015/lib/password/password.gql.js +0 -28
- package/esm2015/lib/password/password.service.js +0 -309
- package/esm2015/lib/persist/persist.service.js +0 -181
- package/esm2015/lib/plan/plan.gql.js +0 -91
- package/esm2015/lib/plan/plan.service.js +0 -191
- package/esm2015/lib/plan/plan.types.js +0 -2
- package/esm2015/lib/profile/profile-details.service.js +0 -261
- package/esm2015/lib/profile/profile.gql.js +0 -170
- package/esm2015/lib/profile/profile.service.js +0 -166
- package/esm2015/lib/profile/profile.types.js +0 -45
- package/esm2015/lib/register/register.service.js +0 -173
- package/esm2015/lib/register/register.types.js +0 -3
- package/esm2015/lib/reminder/reminder.gql.js +0 -27
- package/esm2015/lib/reminder/reminder.service.js +0 -85
- package/esm2015/lib/reminder/reminder.types.js +0 -2
- package/esm2015/lib/scenario/scenario.constants.js +0 -2
- package/esm2015/lib/scenario/scenario.controller.js +0 -34
- package/esm2015/lib/scenario/scenario.gql.js +0 -90
- package/esm2015/lib/scenario/scenario.private.gql.js +0 -200
- package/esm2015/lib/scenario/scenario.service.js +0 -679
- package/esm2015/lib/scenario/scenario.types.js +0 -2
- package/esm2015/lib/server-config/server-config.gql.js +0 -9
- package/esm2015/lib/server-config/server-config.service.js +0 -41
- package/esm2015/lib/shared-contact-card/shared-contact-card.service.js +0 -119
- package/esm2015/lib/shared-contact-card/shared-contact-card2.gql.js +0 -41
- package/esm2015/lib/shared-contact-card/shared-contact-card2.service.js +0 -117
- package/esm2015/lib/slip39/slip39.service.js +0 -167
- package/esm2015/lib/time/time.service.js +0 -152
- package/esm2015/lib/tp-assembly/tp-assembly.js +0 -363
- package/esm2015/lib/tp-assembly/tp-assembly.private.gql.js +0 -22
- package/esm2015/lib/tp-assembly/tp-assembly.types.js +0 -2
- package/esm2015/lib/tp-password-reset/tp-password-reset-request.service.js +0 -98
- package/esm2015/lib/tp-password-reset/tp-password-reset-user.service.js +0 -121
- package/esm2015/lib/tp-password-reset/tp-password-reset.constants.js +0 -4
- package/esm2015/lib/tp-password-reset/tp-password-reset.controller.js +0 -34
- package/esm2015/lib/tp-password-reset/tp-password-reset.gql.js +0 -74
- package/esm2015/lib/tp-password-reset/tp-password-reset.private.gql.js +0 -166
- package/esm2015/lib/tp-password-reset/tp-password-reset.private.service.js +0 -54
- package/esm2015/lib/tp-password-reset/tp-password-reset.service.js +0 -110
- package/esm2015/lib/tp-password-reset/tp-password-reset.types.js +0 -2
- package/esm2015/lib/trusted-party/trusted-party.gql.js +0 -96
- package/esm2015/lib/trusted-party/trusted-party.gql.private.js +0 -51
- package/esm2015/lib/trusted-party/trusted-party.service.js +0 -461
- package/esm2015/lib/trusted-party/trusted-party.types.js +0 -2
- package/esm2015/lib/two-factor/two-factor.service.js +0 -74
- package/esm2015/lib/user/user.gql.js +0 -32
- package/esm2015/lib/user/user.service.js +0 -58
- package/esm2015/lib/user/user.types.js +0 -2
- package/esm2015/lib/web-crypto/web-crypto.service.js +0 -29
- package/esm2015/lifeready-core.js +0 -17
- package/esm2015/public-api.js +0 -60
- package/fesm2015/lifeready-core.js +0 -10970
- 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 -126
- package/lib/_common/index.d.ts +0 -2
- package/lib/_common/kc-lodash.d.ts +0 -5
- package/lib/_common/key.d.ts +0 -14
- package/lib/_common/queries.gql.d.ts +0 -4
- package/lib/_common/run-outside-angular.d.ts +0 -14
- package/lib/_common/storage.d.ts +0 -13
- package/lib/_common/types.d.ts +0 -15
- package/lib/_common/utils.d.ts +0 -12
- package/lib/api/lr-apollo.service.d.ts +0 -15
- package/lib/api/lr-graphql/index.d.ts +0 -5
- package/lib/api/lr-graphql/lr-graphql.service.d.ts +0 -81
- package/lib/api/lr-graphql/lr-merged-mutation.d.ts +0 -46
- package/lib/api/lr-graphql/lr-mutation-base.d.ts +0 -28
- package/lib/api/lr-graphql/lr-mutation.d.ts +0 -48
- package/lib/api/lr-graphql/lr.service.d.ts +0 -9
- package/lib/api/query-processor/common-processors.service.d.ts +0 -36
- package/lib/api/query-processor/index.d.ts +0 -2
- 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/types/graphql.types.d.ts +0 -30
- package/lib/api/types/index.d.ts +0 -2
- package/lib/api/types/lr-graphql.types.d.ts +0 -807
- package/lib/auth/auth.config.d.ts +0 -5
- package/lib/auth/auth.gql.private.d.ts +0 -25
- package/lib/auth/auth.service.d.ts +0 -72
- package/lib/auth/auth.types.d.ts +0 -70
- package/lib/contact-card/contact-card.gql.d.ts +0 -7
- package/lib/contact-card/contact-card.service.d.ts +0 -53
- package/lib/contact-card/contact-card2.gql.d.ts +0 -25
- package/lib/contact-card/contact-card2.service.d.ts +0 -64
- package/lib/encryption/encryption.service.d.ts +0 -42
- package/lib/file-upload/file-upload.service.d.ts +0 -15
- package/lib/file-upload/file-upload.types.d.ts +0 -5
- package/lib/idle/idle.service.d.ts +0 -47
- package/lib/idle/idle.types.d.ts +0 -10
- package/lib/item/item.gql.d.ts +0 -134
- package/lib/item/item.gql.private.d.ts +0 -35
- package/lib/item/item.service.d.ts +0 -201
- package/lib/item/item.types.d.ts +0 -95
- package/lib/key/key-factory.service.d.ts +0 -40
- package/lib/key/key-graph.service.d.ts +0 -41
- package/lib/key/key-meta.service.d.ts +0 -51
- package/lib/key/key.service.d.ts +0 -36
- package/lib/key/key.types.d.ts +0 -86
- package/lib/key-exchange/key-exchange.gql.d.ts +0 -141
- package/lib/key-exchange/key-exchange.service.d.ts +0 -179
- package/lib/lbop/lbop.service.d.ts +0 -99
- package/lib/life-ready.config.d.ts +0 -26
- package/lib/life-ready.module.d.ts +0 -5
- package/lib/lock/lock.gql.d.ts +0 -27
- package/lib/lock/lock.service.d.ts +0 -34
- package/lib/notification/notification.gql.d.ts +0 -37
- package/lib/notification/notification.service.d.ts +0 -64
- package/lib/password/password.gql.d.ts +0 -3
- package/lib/password/password.service.d.ts +0 -79
- package/lib/persist/persist.service.d.ts +0 -31
- package/lib/plan/plan.gql.d.ts +0 -69
- package/lib/plan/plan.service.d.ts +0 -111
- package/lib/plan/plan.types.d.ts +0 -16
- package/lib/profile/profile-details.service.d.ts +0 -20
- package/lib/profile/profile.gql.d.ts +0 -21
- package/lib/profile/profile.service.d.ts +0 -32
- package/lib/profile/profile.types.d.ts +0 -121
- package/lib/register/register.service.d.ts +0 -25
- package/lib/register/register.types.d.ts +0 -6
- package/lib/reminder/reminder.gql.d.ts +0 -23
- package/lib/reminder/reminder.service.d.ts +0 -33
- package/lib/reminder/reminder.types.d.ts +0 -17
- package/lib/scenario/scenario.constants.d.ts +0 -1
- package/lib/scenario/scenario.controller.d.ts +0 -10
- package/lib/scenario/scenario.gql.d.ts +0 -78
- package/lib/scenario/scenario.private.gql.d.ts +0 -16
- package/lib/scenario/scenario.service.d.ts +0 -655
- package/lib/scenario/scenario.types.d.ts +0 -64
- package/lib/server-config/server-config.gql.d.ts +0 -5
- package/lib/server-config/server-config.service.d.ts +0 -9
- package/lib/shared-contact-card/shared-contact-card.service.d.ts +0 -33
- package/lib/shared-contact-card/shared-contact-card2.gql.d.ts +0 -36
- package/lib/shared-contact-card/shared-contact-card2.service.d.ts +0 -45
- package/lib/slip39/slip39.service.d.ts +0 -42
- package/lib/time/time.service.d.ts +0 -26
- package/lib/tp-assembly/tp-assembly.d.ts +0 -177
- package/lib/tp-assembly/tp-assembly.private.gql.d.ts +0 -5
- package/lib/tp-assembly/tp-assembly.types.d.ts +0 -40
- package/lib/tp-password-reset/tp-password-reset-request.service.d.ts +0 -16
- package/lib/tp-password-reset/tp-password-reset-user.service.d.ts +0 -29
- package/lib/tp-password-reset/tp-password-reset.constants.d.ts +0 -3
- package/lib/tp-password-reset/tp-password-reset.controller.d.ts +0 -10
- package/lib/tp-password-reset/tp-password-reset.gql.d.ts +0 -63
- package/lib/tp-password-reset/tp-password-reset.private.gql.d.ts +0 -163
- package/lib/tp-password-reset/tp-password-reset.private.service.d.ts +0 -59
- package/lib/tp-password-reset/tp-password-reset.service.d.ts +0 -112
- package/lib/tp-password-reset/tp-password-reset.types.d.ts +0 -40
- package/lib/trusted-party/trusted-party.gql.d.ts +0 -85
- package/lib/trusted-party/trusted-party.gql.private.d.ts +0 -40
- package/lib/trusted-party/trusted-party.service.d.ts +0 -192
- package/lib/trusted-party/trusted-party.types.d.ts +0 -31
- package/lib/two-factor/two-factor.service.d.ts +0 -15
- package/lib/user/user.gql.d.ts +0 -8
- package/lib/user/user.service.d.ts +0 -9
- package/lib/user/user.types.d.ts +0 -16
- package/lib/web-crypto/web-crypto.service.d.ts +0 -5
- package/lifeready-core.d.ts +0 -16
- package/lifeready-core.metadata.json +0 -1
- package/public-api.d.ts +0 -56
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
export var RecoveryStatus;
|
|
2
|
-
(function (RecoveryStatus) {
|
|
3
|
-
RecoveryStatus["NONE"] = "NONE";
|
|
4
|
-
RecoveryStatus["NEW_PASSWORD"] = "NEW_PASSWORD";
|
|
5
|
-
RecoveryStatus["OLD_PASSWORD"] = "OLD_PASSWORD";
|
|
6
|
-
})(RecoveryStatus || (RecoveryStatus = {}));
|
|
7
|
-
export var PasswordChangeStatus;
|
|
8
|
-
(function (PasswordChangeStatus) {
|
|
9
|
-
PasswordChangeStatus["IN_PROGRESS"] = "IN_PROGRESS";
|
|
10
|
-
PasswordChangeStatus["RECOVERY"] = "RECOVERY";
|
|
11
|
-
})(PasswordChangeStatus || (PasswordChangeStatus = {}));
|
|
12
|
-
export var CognitoChallengeName;
|
|
13
|
-
(function (CognitoChallengeName) {
|
|
14
|
-
CognitoChallengeName["NEW_PASSWORD_REQUIRED"] = "NEW_PASSWORD_REQUIRED";
|
|
15
|
-
CognitoChallengeName["SMS_MFA"] = "SMS_MFA";
|
|
16
|
-
CognitoChallengeName["SOFTWARE_TOKEN_MFA"] = "SOFTWARE_TOKEN_MFA";
|
|
17
|
-
CognitoChallengeName["MFA_SETUP"] = "MFA_SETUP";
|
|
18
|
-
})(CognitoChallengeName || (CognitoChallengeName = {}));
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi9hdXRoL2F1dGgudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBaUNBLE1BQU0sQ0FBTixJQUFZLGNBSVg7QUFKRCxXQUFZLGNBQWM7SUFDeEIsK0JBQWEsQ0FBQTtJQUNiLCtDQUE2QixDQUFBO0lBQzdCLCtDQUE2QixDQUFBO0FBQy9CLENBQUMsRUFKVyxjQUFjLEtBQWQsY0FBYyxRQUl6QjtBQUVELE1BQU0sQ0FBTixJQUFZLG9CQUdYO0FBSEQsV0FBWSxvQkFBb0I7SUFDOUIsbURBQTJCLENBQUE7SUFDM0IsNkNBQXFCLENBQUE7QUFDdkIsQ0FBQyxFQUhXLG9CQUFvQixLQUFwQixvQkFBb0IsUUFHL0I7QUFZRCxNQUFNLENBQU4sSUFBWSxvQkFLWDtBQUxELFdBQVksb0JBQW9CO0lBQzlCLHVFQUErQyxDQUFBO0lBQy9DLDJDQUFtQixDQUFBO0lBQ25CLGlFQUF5QyxDQUFBO0lBQ3pDLCtDQUF1QixDQUFBO0FBQ3pCLENBQUMsRUFMVyxvQkFBb0IsS0FBcEIsb0JBQW9CLFFBSy9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29nbml0b1VzZXIgfSBmcm9tICdAYXdzLWFtcGxpZnkvYXV0aCc7XG5pbXBvcnQgeyBDb2duaXRvVXNlckF0dHJpYnV0ZSB9IGZyb20gJ2FtYXpvbi1jb2duaXRvLWlkZW50aXR5LWpzJztcbmltcG9ydCB7IEpXSyB9IGZyb20gJ25vZGUtam9zZSc7XG5pbXBvcnQge1xuICBJRCxcbiAgSlNPTk9iamVjdCxcbiAgVHBDbGFpbVN0YXRlLFxuICBUcFBhc3N3b3JkUmVzZXRVc2VyLFxuICBUcFBhc3N3b3JkUmVzZXRVc2VyQXBwcm92YWxOb2RlLFxuICBUcFBhc3N3b3JkUmVzZXRVc2VyQXBwcm92ZXIsXG4gIFRwUGFzc3dvcmRSZXNldFVzZXJBc3NlbWJseSxcbiAgVHBQYXNzd29yZFJlc2V0VXNlclN1YkFzc2VtYmx5LFxuICBVc2VyTm9kZSxcbn0gZnJvbSAnLi4vYXBpL3R5cGVzJztcbmltcG9ydCB7IFBhc3NJZHBQYXJhbXMsIFBhc3NLZXlQYXJhbXMgfSBmcm9tICcuLi9rZXkva2V5LnR5cGVzJztcblxuZXhwb3J0IHR5cGUgQXV0aFVzZXIgPSBQaWNrPFJlcXVpcmVkPFVzZXJOb2RlPiwgJ3VzZXJuYW1lJz4gJiB7XG4gIGlkPzogSUQ7IC8vIFRoZSByZXNldCB1c2VyIGRvZXMgbm90IHJldHVybiBhbiBpZC5cbiAgc3ViOiBzdHJpbmc7XG4gIGxvZ2luRW1haWw6IHN0cmluZztcbiAgcmVzZXRVc2VyOiBudWxsIHwge1xuICAgIHN0YXRlOiBUcENsYWltU3RhdGU7XG4gIH07XG59O1xuXG5leHBvcnQgdHlwZSBMb2dvdXRMaXN0ZW5lciA9ICgpID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+O1xuXG5leHBvcnQgaW50ZXJmYWNlIExvZ2luT3B0aW9ucyB7XG4gIC8vIElmIHRydWUsIGNvbXBsZXRlIGFueSBUUCBwYXNzd29yZCByZXNldCByZXF1ZXN0cyByaWdodCBhZnRlciBsb2dpbi5cbiAgLy8gVGhpcyBpcyBtYWlubHkgZm9yIGRlYnVnZ2luZyBhbmQgdGVzdGluZyBwdXJwb3Nlcy5cbiAgdHBQYXNzd29yZFJlc2V0QXV0b0NvbXBsZXRlPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGVudW0gUmVjb3ZlcnlTdGF0dXMge1xuICBOT05FID0gJ05PTkUnLFxuICBORVdfUEFTU1dPUkQgPSAnTkVXX1BBU1NXT1JEJyxcbiAgT0xEX1BBU1NXT1JEID0gJ09MRF9QQVNTV09SRCcsXG59XG5cbmV4cG9ydCBlbnVtIFBhc3N3b3JkQ2hhbmdlU3RhdHVzIHtcbiAgSU5fUFJPR1JFU1MgPSAnSU5fUFJPR1JFU1MnLFxuICBSRUNPVkVSWSA9ICdSRUNPVkVSWScsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFzc0lkcFJlc3VsdCB7XG4gIHBhc3N3b3JkQ2hhbmdlU3RhdHVzPzogUGFzc3dvcmRDaGFuZ2VTdGF0dXM7XG4gIGN1cnJlbnRQYXNzSWRwUGFyYW1zOiBQYXNzSWRwUGFyYW1zO1xuICBuZXdQYXNzSWRwUGFyYW1zOiBQYXNzSWRwUGFyYW1zO1xuICB0cFBhc3N3b3JkUmVzZXQ6IHtcbiAgICBwYXNzSWRwUGFyYW1zOiBQYXNzSWRwUGFyYW1zO1xuICAgIHJlc2V0VXNlcm5hbWU6IHN0cmluZztcbiAgfTtcbn1cblxuZXhwb3J0IGVudW0gQ29nbml0b0NoYWxsZW5nZU5hbWUge1xuICBORVdfUEFTU1dPUkRfUkVRVUlSRUQgPSAnTkVXX1BBU1NXT1JEX1JFUVVJUkVEJyxcbiAgU01TX01GQSA9ICdTTVNfTUZBJyxcbiAgU09GVFdBUkVfVE9LRU5fTUZBID0gJ1NPRlRXQVJFX1RPS0VOX01GQScsXG4gIE1GQV9TRVRVUCA9ICdNRkFfU0VUVVAnLFxufVxuXG5leHBvcnQgdHlwZSBMckNvZ25pdG9Vc2VyID0gQ29nbml0b1VzZXIgJiB7XG4gIC8vIFRoZXNlIGFyZSBtaXNzaW5nIHR5cGVzLiBCdWcgaW4gdGhlIGxpYiBiYXNpY2FsbHkuXG4gIGNoYWxsZW5nZU5hbWU6IENvZ25pdG9DaGFsbGVuZ2VOYW1lO1xuICBjaGFsbGVuZ2VQYXJhbTogSlNPTk9iamVjdDtcbn07XG5cbmV4cG9ydCB0eXBlIExyQ29nbml0b1VzZXJBdHRyaWJ1dGUgPSBDb2duaXRvVXNlckF0dHJpYnV0ZTtcblxuZXhwb3J0IGludGVyZmFjZSBMb2dpbkNoYWxsZW5nZSB7XG4gIGNvZ25pdG9Vc2VyOiBMckNvZ25pdG9Vc2VyO1xuICAvLyBJbiB0aGUgZXZlbnQgYSBwYXNzd29yZCBjaGFuZ2UgcHJvY2VzcyBoYXMgZmFpbGVkLCB3ZSBuZWVkIHRvIGtub3dcbiAgLy8gaWYgdGhlIG5ldyBvciBvbGQgcGFzc3dvcmQgd2FzIHVzZWQuIFRoaXMgYWxsb3dzIHVzIHRvIHRyYWNrIGl0LlxuICByZWNvdmVyeVN0YXR1czogUmVjb3ZlcnlTdGF0dXM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9naW5SZXN1bHQge1xuICBjaGFsbGVuZ2U/OiBMb2dpbkNoYWxsZW5nZTtcbiAgdXNlcj86IEF1dGhVc2VyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhc3NLZXlCdW5kbGUge1xuICBwYXNzS2V5UGFyYW1zOiBQYXNzS2V5UGFyYW1zO1xuICBwYXNzS2V5OiBKV0suS2V5O1xuICBwYXNzSWRwUGFyYW1zOiBQYXNzSWRwUGFyYW1zO1xuICBwYXNzSWRwOiBKV0suS2V5O1xuICBwYXNzSWRwVmVyaWZpZXI6IEpXSy5LZXk7XG4gIHdyYXBwZWRQYXNzSWRwVmVyaWZpZXJQcms6IFJlY29yZDxzdHJpbmcsIEpTT05PYmplY3Q+O1xufVxuXG5leHBvcnQgdHlwZSBSZXNldFVzZXIgPSBQaWNrPFxuICBSZXF1aXJlZDxUcFBhc3N3b3JkUmVzZXRVc2VyPixcbiAgJ3VzZXJuYW1lJyB8ICdzdGF0ZScgfCAnYXBwcm92YWxzJ1xuPiAmIHtcbiAgYXNzZW1ibHk6IFBpY2s8XG4gICAgUmVxdWlyZWQ8VHBQYXNzd29yZFJlc2V0VXNlckFzc2VtYmx5PixcbiAgICAnc2luZ2xlUmVqZWN0JyB8ICdxdW9ydW0nXG4gID4gJiB7XG4gICAgc3ViQXNzZW1ibGllczogKFBpY2s8XG4gICAgICBSZXF1aXJlZDxUcFBhc3N3b3JkUmVzZXRVc2VyU3ViQXNzZW1ibHk+LFxuICAgICAgJ3NpbmdsZVJlamVjdCcgfCAncXVvcnVtJ1xuICAgID4gJiB7XG4gICAgICBhcHByb3ZlcnM6IFBpY2s8XG4gICAgICAgIFJlcXVpcmVkPFRwUGFzc3dvcmRSZXNldFVzZXJBcHByb3Zlcj4sXG4gICAgICAgICduYW1lJyB8ICdlbWFpbCcgfCAnc3RhdGUnXG4gICAgICA+W107XG4gICAgfSlbXTtcbiAgfTtcbiAgYXBwcm92YWxzOiBQaWNrPFxuICAgIFJlcXVpcmVkPFRwUGFzc3dvcmRSZXNldFVzZXJBcHByb3ZhbE5vZGU+LFxuICAgIHwgJ2lkJ1xuICAgIHwgJ21vZGlmaWVkJ1xuICAgIHwgJ2FwcHJvdmVyRW1haWwnXG4gICAgfCAncmVjZWl2ZXJDaXBoZXInXG4gICAgfCAncmVjZWl2ZXJDaXBoZXJQYXJ0aWFsQXNzZW1ibHlLZXknXG4gID47XG59O1xuIl19
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import { KeyGraphField } from '../_common/queries.gql';
|
|
2
|
-
import gql from 'graphql-tag';
|
|
3
|
-
export const ContactCardFields = `
|
|
4
|
-
id
|
|
5
|
-
publicData
|
|
6
|
-
publicSearchable
|
|
7
|
-
cipherData
|
|
8
|
-
key {
|
|
9
|
-
id
|
|
10
|
-
}
|
|
11
|
-
`;
|
|
12
|
-
export const ContactCardQuery = gql `
|
|
13
|
-
query ContactCardQuery(
|
|
14
|
-
$id: LrRelayIdInput!
|
|
15
|
-
) {
|
|
16
|
-
contactCard (
|
|
17
|
-
id: $id
|
|
18
|
-
) {
|
|
19
|
-
${ContactCardFields}
|
|
20
|
-
}
|
|
21
|
-
${KeyGraphField}
|
|
22
|
-
}`;
|
|
23
|
-
export const SearchContactCardQuery = gql `
|
|
24
|
-
query SearchContactCardQuery(
|
|
25
|
-
$publicSearchable: LrJSONFilter!
|
|
26
|
-
) {
|
|
27
|
-
searchContactCards(
|
|
28
|
-
publicSearchable: $publicSearchable
|
|
29
|
-
orderBy: "created"
|
|
30
|
-
) {
|
|
31
|
-
edges {
|
|
32
|
-
node {
|
|
33
|
-
${ContactCardFields}
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
${KeyGraphField}
|
|
38
|
-
}`;
|
|
39
|
-
export const ContactCardListQuery = gql `
|
|
40
|
-
query ContactCardListQuery {
|
|
41
|
-
contactCards(
|
|
42
|
-
orderBy: "created"
|
|
43
|
-
) {
|
|
44
|
-
edges {
|
|
45
|
-
node {
|
|
46
|
-
${ContactCardFields}
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
${KeyGraphField}
|
|
51
|
-
}`;
|
|
52
|
-
export const CreateContactCardMutation = gql `
|
|
53
|
-
mutation CreateContactCardMutation(
|
|
54
|
-
$input: CreateContactCardInput!
|
|
55
|
-
) {
|
|
56
|
-
createContactCard(input: $input) {
|
|
57
|
-
contactCard {
|
|
58
|
-
${ContactCardFields}
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
}`;
|
|
62
|
-
export const UpdateContactCardMutation = gql `
|
|
63
|
-
mutation UpdateContactCardMutation(
|
|
64
|
-
$input: UpdateContactCardInput!
|
|
65
|
-
) {
|
|
66
|
-
updateContactCard(input: $input) {
|
|
67
|
-
contactCard {
|
|
68
|
-
${ContactCardFields}
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
}`;
|
|
72
|
-
export const DeleteContactCardMutation = gql `
|
|
73
|
-
mutation DeleteContactCardMutation($input: DeleteContactCardInput!) {
|
|
74
|
-
deleteContactCard(input: $input) {
|
|
75
|
-
id
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
`;
|
|
79
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFjdC1jYXJkLmdxbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi9jb250YWN0LWNhcmQvY29udGFjdC1jYXJkLmdxbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxHQUFHLE1BQU0sYUFBYSxDQUFDO0FBRTlCLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHOzs7Ozs7OztDQVFoQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsR0FBRyxDQUFBOzs7Ozs7O0lBTy9CLGlCQUFpQjs7RUFFbkIsYUFBYTtFQUNiLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxHQUFHLENBQUE7Ozs7Ozs7Ozs7VUFVL0IsaUJBQWlCOzs7O0lBSXZCLGFBQWE7RUFDZixDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsR0FBRyxDQUFBOzs7Ozs7O1VBTzdCLGlCQUFpQjs7OztJQUl2QixhQUFhO0VBQ2YsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLEdBQUcsQ0FBQTs7Ozs7O1FBTXBDLGlCQUFpQjs7O0VBR3ZCLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxHQUFHLENBQUE7Ozs7OztRQU1wQyxpQkFBaUI7OztFQUd2QixDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsR0FBRyxDQUFBOzs7Ozs7Q0FNM0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEtleUdyYXBoRmllbGQgfSBmcm9tICcuLi9fY29tbW9uL3F1ZXJpZXMuZ3FsJztcbmltcG9ydCBncWwgZnJvbSAnZ3JhcGhxbC10YWcnO1xuXG5leHBvcnQgY29uc3QgQ29udGFjdENhcmRGaWVsZHMgPSBgXG5pZFxucHVibGljRGF0YVxucHVibGljU2VhcmNoYWJsZVxuY2lwaGVyRGF0YVxua2V5IHtcbiAgaWRcbn1cbmA7XG5cbmV4cG9ydCBjb25zdCBDb250YWN0Q2FyZFF1ZXJ5ID0gZ3FsYFxucXVlcnkgQ29udGFjdENhcmRRdWVyeShcbiRpZDogTHJSZWxheUlkSW5wdXQhXG4pIHtcbmNvbnRhY3RDYXJkIChcbiAgaWQ6ICRpZFxuKSB7XG4gICR7Q29udGFjdENhcmRGaWVsZHN9XG59XG4ke0tleUdyYXBoRmllbGR9XG59YDtcblxuZXhwb3J0IGNvbnN0IFNlYXJjaENvbnRhY3RDYXJkUXVlcnkgPSBncWxgXG5xdWVyeSBTZWFyY2hDb250YWN0Q2FyZFF1ZXJ5KFxuICAkcHVibGljU2VhcmNoYWJsZTogTHJKU09ORmlsdGVyIVxuKSB7XG4gIHNlYXJjaENvbnRhY3RDYXJkcyhcbiAgICBwdWJsaWNTZWFyY2hhYmxlOiAkcHVibGljU2VhcmNoYWJsZVxuICAgIG9yZGVyQnk6IFwiY3JlYXRlZFwiXG4gICkge1xuICAgIGVkZ2VzIHtcbiAgICAgIG5vZGUge1xuICAgICAgICAke0NvbnRhY3RDYXJkRmllbGRzfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICAke0tleUdyYXBoRmllbGR9XG59YDtcblxuZXhwb3J0IGNvbnN0IENvbnRhY3RDYXJkTGlzdFF1ZXJ5ID0gZ3FsYFxucXVlcnkgQ29udGFjdENhcmRMaXN0UXVlcnkge1xuICBjb250YWN0Q2FyZHMoXG4gICAgb3JkZXJCeTogXCJjcmVhdGVkXCJcbiAgKSB7XG4gICAgZWRnZXMge1xuICAgICAgbm9kZSB7XG4gICAgICAgICR7Q29udGFjdENhcmRGaWVsZHN9XG4gICAgICB9XG4gICAgfVxuICB9XG4gICR7S2V5R3JhcGhGaWVsZH1cbn1gO1xuXG5leHBvcnQgY29uc3QgQ3JlYXRlQ29udGFjdENhcmRNdXRhdGlvbiA9IGdxbGBcbm11dGF0aW9uIENyZWF0ZUNvbnRhY3RDYXJkTXV0YXRpb24oXG4gICRpbnB1dDogQ3JlYXRlQ29udGFjdENhcmRJbnB1dCFcbikge1xuICBjcmVhdGVDb250YWN0Q2FyZChpbnB1dDogJGlucHV0KSB7XG4gICAgY29udGFjdENhcmQge1xuICAgICAgJHtDb250YWN0Q2FyZEZpZWxkc31cbiAgICB9XG4gIH1cbn1gO1xuXG5leHBvcnQgY29uc3QgVXBkYXRlQ29udGFjdENhcmRNdXRhdGlvbiA9IGdxbGBcbm11dGF0aW9uIFVwZGF0ZUNvbnRhY3RDYXJkTXV0YXRpb24oXG4gICRpbnB1dDogVXBkYXRlQ29udGFjdENhcmRJbnB1dCFcbikge1xuICB1cGRhdGVDb250YWN0Q2FyZChpbnB1dDogJGlucHV0KSB7XG4gICAgY29udGFjdENhcmQge1xuICAgICAgJHtDb250YWN0Q2FyZEZpZWxkc31cbiAgICB9XG4gIH1cbn1gO1xuXG5leHBvcnQgY29uc3QgRGVsZXRlQ29udGFjdENhcmRNdXRhdGlvbiA9IGdxbGBcbiAgbXV0YXRpb24gRGVsZXRlQ29udGFjdENhcmRNdXRhdGlvbigkaW5wdXQ6IERlbGV0ZUNvbnRhY3RDYXJkSW5wdXQhKSB7XG4gICAgZGVsZXRlQ29udGFjdENhcmQoaW5wdXQ6ICRpbnB1dCkge1xuICAgICAgaWRcbiAgICB9XG4gIH1cbmA7XG4iXX0=
|
|
@@ -1,156 +0,0 @@
|
|
|
1
|
-
import { __awaiter } from "tslib";
|
|
2
|
-
/* eslint-disable @typescript-eslint/ban-types */
|
|
3
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
4
|
-
import { Injectable } from '@angular/core';
|
|
5
|
-
import { LrApolloService } from '../api/lr-apollo.service';
|
|
6
|
-
import { EncryptionService } from '../encryption/encryption.service';
|
|
7
|
-
import { KeyFactoryService } from '../key/key-factory.service';
|
|
8
|
-
import { KeyGraphService } from '../key/key-graph.service';
|
|
9
|
-
import { KeyMetaService } from '../key/key-meta.service';
|
|
10
|
-
import { KeyService } from '../key/key.service';
|
|
11
|
-
import { ContactCardListQuery, ContactCardQuery, CreateContactCardMutation, DeleteContactCardMutation, SearchContactCardQuery, UpdateContactCardMutation, } from './contact-card.gql';
|
|
12
|
-
import * as i0 from "@angular/core";
|
|
13
|
-
import * as i1 from "../key/key-factory.service";
|
|
14
|
-
import * as i2 from "../key/key.service";
|
|
15
|
-
import * as i3 from "../api/lr-apollo.service";
|
|
16
|
-
import * as i4 from "../key/key-graph.service";
|
|
17
|
-
import * as i5 from "../encryption/encryption.service";
|
|
18
|
-
import * as i6 from "../key/key-meta.service";
|
|
19
|
-
export class ContactCard {
|
|
20
|
-
}
|
|
21
|
-
export class ContactCardService {
|
|
22
|
-
constructor(keyFactory, keyService, lrApollo, keyGraph, encryptionService, keyMetaService) {
|
|
23
|
-
this.keyFactory = keyFactory;
|
|
24
|
-
this.keyService = keyService;
|
|
25
|
-
this.lrApollo = lrApollo;
|
|
26
|
-
this.keyGraph = keyGraph;
|
|
27
|
-
this.encryptionService = encryptionService;
|
|
28
|
-
this.keyMetaService = keyMetaService;
|
|
29
|
-
}
|
|
30
|
-
decryptContactCard(cc) {
|
|
31
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
32
|
-
const ret = Object.assign(Object.assign({}, cc), { publicDataJson: JSON.parse(cc.publicData), publicSearchableJson: JSON.parse(cc.publicSearchable) });
|
|
33
|
-
if (cc.key) {
|
|
34
|
-
const key = yield this.keyGraph.getJwkKey(cc.key.id);
|
|
35
|
-
// TODO: verify signature
|
|
36
|
-
ret.plainCipherDataJson = yield this.encryptionService.decrypt(key, cc.cipherData);
|
|
37
|
-
}
|
|
38
|
-
return ret;
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
decryptContactCardEdges(hasEdges) {
|
|
42
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
43
|
-
return Promise.all(hasEdges.edges.map((edge) => __awaiter(this, void 0, void 0, function* () {
|
|
44
|
-
const cc = edge.node;
|
|
45
|
-
return yield this.decryptContactCard(cc);
|
|
46
|
-
})));
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
// { "filter": [{ "contains": { "a": true } }] }
|
|
50
|
-
searchContactCard(publicSearchable) {
|
|
51
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
52
|
-
const data = yield this.lrApollo.query({
|
|
53
|
-
query: SearchContactCardQuery,
|
|
54
|
-
variables: {
|
|
55
|
-
publicSearchable: JSON.stringify(publicSearchable),
|
|
56
|
-
},
|
|
57
|
-
});
|
|
58
|
-
return yield this.decryptContactCardEdges(data.searchContactCards);
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
getContactCardList() {
|
|
62
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
63
|
-
const data = yield this.lrApollo.query({
|
|
64
|
-
query: ContactCardListQuery,
|
|
65
|
-
});
|
|
66
|
-
return yield this.decryptContactCardEdges(data.contactCards);
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
getContactCard(id) {
|
|
70
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
71
|
-
const data = yield this.lrApollo.query({
|
|
72
|
-
query: ContactCardQuery,
|
|
73
|
-
variables: {
|
|
74
|
-
id,
|
|
75
|
-
},
|
|
76
|
-
});
|
|
77
|
-
return yield this.decryptContactCard(data.contactCard);
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
prepareContactCardInput(input) {
|
|
81
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
82
|
-
const sigPxk = this.keyService.currentSigPxk;
|
|
83
|
-
const publicDataSig = JSON.stringify(yield this.encryptionService.sign(sigPxk.jwk, input.publicDataJson));
|
|
84
|
-
const publicSearchableSig = JSON.stringify(yield this.encryptionService.sign(sigPxk.jwk, input.publicSearchableJson));
|
|
85
|
-
const plainDataSig = JSON.stringify(yield this.encryptionService.sign(sigPxk.jwk, input.plainDataJson));
|
|
86
|
-
return {
|
|
87
|
-
sigPxkId: sigPxk.id,
|
|
88
|
-
publicDataSig,
|
|
89
|
-
publicSearchableSig,
|
|
90
|
-
plainDataSig,
|
|
91
|
-
};
|
|
92
|
-
});
|
|
93
|
-
}
|
|
94
|
-
createContactCard(input) {
|
|
95
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
96
|
-
// Get encryption key
|
|
97
|
-
const rootKey = this.keyService.currentRootKey;
|
|
98
|
-
const key = yield this.keyFactory.createKey();
|
|
99
|
-
const wrappedKey = yield this.keyGraph.encryptToString(rootKey.jwk, key.toJSON(true));
|
|
100
|
-
const cipherData = yield this.keyGraph.encryptToString(key, input.plainCipherDataJson);
|
|
101
|
-
const params = yield this.prepareContactCardInput(input);
|
|
102
|
-
const data = yield this.lrApollo.mutate({
|
|
103
|
-
mutation: CreateContactCardMutation,
|
|
104
|
-
variables: {
|
|
105
|
-
input: Object.assign(Object.assign({}, params), { wrappingKeyId: rootKey.id, wrappedKey,
|
|
106
|
-
cipherData }),
|
|
107
|
-
},
|
|
108
|
-
});
|
|
109
|
-
return data.createContactCard.contactCard;
|
|
110
|
-
});
|
|
111
|
-
}
|
|
112
|
-
updateContactCard(input) {
|
|
113
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
114
|
-
// Get encryption key
|
|
115
|
-
const cc = yield this.getContactCard(input.id);
|
|
116
|
-
const key = yield this.keyGraph.getJwkKey(cc.key.id);
|
|
117
|
-
const cipherData = yield this.keyGraph.encryptToString(key, input.plainCipherDataJson);
|
|
118
|
-
const params = yield this.prepareContactCardInput(input);
|
|
119
|
-
const data = yield this.lrApollo.mutate({
|
|
120
|
-
mutation: UpdateContactCardMutation,
|
|
121
|
-
variables: {
|
|
122
|
-
input: Object.assign(Object.assign({}, params), { id: input.id, cipherData }),
|
|
123
|
-
},
|
|
124
|
-
});
|
|
125
|
-
return data.updateContactCard.contactCard;
|
|
126
|
-
});
|
|
127
|
-
}
|
|
128
|
-
deleteContactCard(id) {
|
|
129
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
130
|
-
const data = yield this.lrApollo.mutate({
|
|
131
|
-
mutation: DeleteContactCardMutation,
|
|
132
|
-
variables: {
|
|
133
|
-
input: {
|
|
134
|
-
id,
|
|
135
|
-
},
|
|
136
|
-
},
|
|
137
|
-
});
|
|
138
|
-
return data.deleteContactCard.id;
|
|
139
|
-
});
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
ContactCardService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ContactCardService_Factory() { return new ContactCardService(i0.ɵɵinject(i1.KeyFactoryService), i0.ɵɵinject(i2.KeyService), i0.ɵɵinject(i3.LrApolloService), i0.ɵɵinject(i4.KeyGraphService), i0.ɵɵinject(i5.EncryptionService), i0.ɵɵinject(i6.KeyMetaService)); }, token: ContactCardService, providedIn: "root" });
|
|
143
|
-
ContactCardService.decorators = [
|
|
144
|
-
{ type: Injectable, args: [{
|
|
145
|
-
providedIn: 'root',
|
|
146
|
-
},] }
|
|
147
|
-
];
|
|
148
|
-
ContactCardService.ctorParameters = () => [
|
|
149
|
-
{ type: KeyFactoryService },
|
|
150
|
-
{ type: KeyService },
|
|
151
|
-
{ type: LrApolloService },
|
|
152
|
-
{ type: KeyGraphService },
|
|
153
|
-
{ type: EncryptionService },
|
|
154
|
-
{ type: KeyMetaService }
|
|
155
|
-
];
|
|
156
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFjdC1jYXJkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvY29udGFjdC1jYXJkL2NvbnRhY3QtY2FyZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxpREFBaUQ7QUFDakQsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBSWhELE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsZ0JBQWdCLEVBQ2hCLHlCQUF5QixFQUN6Qix5QkFBeUIsRUFDekIsc0JBQXNCLEVBQ3RCLHlCQUF5QixHQUMxQixNQUFNLG9CQUFvQixDQUFDOzs7Ozs7OztBQWM1QixNQUFNLE9BQU8sV0FBVztDQWdCdkI7QUFnQkQsTUFBTSxPQUFPLGtCQUFrQjtJQUM3QixZQUNVLFVBQTZCLEVBQzdCLFVBQXNCLEVBQ3RCLFFBQXlCLEVBQ3pCLFFBQXlCLEVBQ3pCLGlCQUFvQyxFQUNwQyxjQUE4QjtRQUw5QixlQUFVLEdBQVYsVUFBVSxDQUFtQjtRQUM3QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBQ3pCLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBQ3pCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsbUJB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WUFJZixlQUFlO1lBRmYsaUJBQWlCO1lBR2pCLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXR5cGVzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMckFwb2xsb1NlcnZpY2UgfSBmcm9tICcuLi9hcGkvbHItYXBvbGxvLnNlcnZpY2UnO1xuaW1wb3J0IHsgSlNPTk9iamVjdCB9IGZyb20gJy4uL2FwaS90eXBlcyc7XG5pbXBvcnQgeyBFbmNyeXB0aW9uU2VydmljZSB9IGZyb20gJy4uL2VuY3J5cHRpb24vZW5jcnlwdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEtleUZhY3RvcnlTZXJ2aWNlIH0gZnJvbSAnLi4va2V5L2tleS1mYWN0b3J5LnNlcnZpY2UnO1xuaW1wb3J0IHsgS2V5R3JhcGhTZXJ2aWNlIH0gZnJvbSAnLi4va2V5L2tleS1ncmFwaC5zZXJ2aWNlJztcbmltcG9ydCB7IEtleU1ldGFTZXJ2aWNlIH0gZnJvbSAnLi4va2V5L2tleS1tZXRhLnNlcnZpY2UnO1xuaW1wb3J0IHsgS2V5U2VydmljZSB9IGZyb20gJy4uL2tleS9rZXkuc2VydmljZSc7XG5pbXBvcnQgeyBIYXNLZXlHcmFwaCwgS2V5IH0gZnJvbSAnLi4va2V5L2tleS50eXBlcyc7XG5pbXBvcnQgeyBNYWluQ29udGFjdENhcmRQbGFpbkZpZWxkcyB9IGZyb20gJy4uL3Byb2ZpbGUvcHJvZmlsZS50eXBlcyc7XG5pbXBvcnQgeyBIYXNFZGdlcyB9IGZyb20gJy4uL19jb21tb24vdHlwZXMnO1xuaW1wb3J0IHtcbiAgQ29udGFjdENhcmRMaXN0UXVlcnksXG4gIENvbnRhY3RDYXJkUXVlcnksXG4gIENyZWF0ZUNvbnRhY3RDYXJkTXV0YXRpb24sXG4gIERlbGV0ZUNvbnRhY3RDYXJkTXV0YXRpb24sXG4gIFNlYXJjaENvbnRhY3RDYXJkUXVlcnksXG4gIFVwZGF0ZUNvbnRhY3RDYXJkTXV0YXRpb24sXG59IGZyb20gJy4vY29udGFjdC1jYXJkLmdxbCc7XG5cbmludGVyZmFjZSBDb250YWN0Q2FyZFF1ZXJ5IGV4dGVuZHMgSGFzS2V5R3JhcGgge1xuICBjb250YWN0Q2FyZDogQ29udGFjdENhcmQ7XG59XG5cbmludGVyZmFjZSBTZWFyY2hDb250YWN0Q2FyZFF1ZXJ5IGV4dGVuZHMgSGFzS2V5R3JhcGgge1xuICBzZWFyY2hDb250YWN0Q2FyZHM6IEhhc0VkZ2VzPENvbnRhY3RDYXJkPjtcbn1cblxuaW50ZXJmYWNlIENvbnRhY3RDYXJkTGlzdFF1ZXJ5IGV4dGVuZHMgSGFzS2V5R3JhcGgge1xuICBjb250YWN0Q2FyZHM6IEhhc0VkZ2VzPENvbnRhY3RDYXJkPjtcbn1cblxuZXhwb3J0IGNsYXNzIENvbnRhY3RDYXJkIHtcbiAgaWQ6IHN0cmluZztcbiAga2V5OiBLZXk7XG4gIHNpZ1B4azogS2V5O1xuICBwdWJsaWNEYXRhOiBzdHJpbmc7XG4gIHB1YmxpY0RhdGFTaWc6IHN0cmluZztcbiAgcHVibGljU2VhcmNoYWJsZTogc3RyaW5nO1xuICBwdWJsaWNTZWFyY2hhYmxlU2lnOiBzdHJpbmc7XG4gIHBsYWluRGF0YTogc3RyaW5nO1xuICBwbGFpbkRhdGFTaWc6IHN0cmluZztcbiAgY2lwaGVyRGF0YTogc3RyaW5nO1xuICAvLyBQYXJzZS9kZWNyeXB0ZWQgdmVyc2lvbnMgb2YgdGhlIGFib3ZlLlxuICBwdWJsaWNEYXRhSnNvbjogSlNPTk9iamVjdDtcbiAgcHVibGljU2VhcmNoYWJsZUpzb246IEpTT05PYmplY3Q7XG4gIHBsYWluQ2lwaGVyRGF0YUpzb246IEpTT05PYmplY3Q7XG4gIHBsYWluRGF0YUpzb246IEpTT05PYmplY3Q7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlQ29udGFjdENhcmRJbnB1dCB7XG4gIHB1YmxpY0RhdGFKc29uOiBKU09OT2JqZWN0O1xuICBwdWJsaWNTZWFyY2hhYmxlSnNvbjogSlNPTk9iamVjdDtcbiAgcGxhaW5DaXBoZXJEYXRhSnNvbjogSlNPTk9iamVjdDtcbiAgcGxhaW5EYXRhSnNvbjogTWFpbkNvbnRhY3RDYXJkUGxhaW5GaWVsZHM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXBkYXRlQ29udGFjdENhcmRJbnB1dCBleHRlbmRzIENyZWF0ZUNvbnRhY3RDYXJkSW5wdXQge1xuICBpZDogc3RyaW5nO1xufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQ29udGFjdENhcmRTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBrZXlGYWN0b3J5OiBLZXlGYWN0b3J5U2VydmljZSxcbiAgICBwcml2YXRlIGtleVNlcnZpY2U6IEtleVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBsckFwb2xsbzogTHJBcG9sbG9TZXJ2aWNlLFxuICAgIHByaXZhdGUga2V5R3JhcGg6IEtleUdyYXBoU2VydmljZSxcbiAgICBwcml2YXRlIGVuY3J5cHRpb25TZXJ2aWNlOiBFbmNyeXB0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIGtleU1ldGFTZXJ2aWNlOiBLZXlNZXRhU2VydmljZVxuICApIHt9XG5cbiAgYXN5bmMgZGVjcnlwdENvbnRhY3RDYXJkKGNjOiBDb250YWN0Q2FyZCk6IFByb21pc2U8Q29udGFjdENhcmQ+IHtcbiAgICBjb25zdCByZXQgPSB7XG4gICAgICAuLi5jYyxcbiAgICAgIHB1YmxpY0RhdGFKc29uOiBKU09OLnBhcnNlKGNjLnB1YmxpY0RhdGEpLFxuICAgICAgcHVibGljU2VhcmNoYWJsZUpzb246IEpTT04ucGFyc2UoY2MucHVibGljU2VhcmNoYWJsZSksXG4gICAgfTtcblxuICAgIGlmIChjYy5rZXkpIHtcbiAgICAgIGNvbnN0IGtleSA9IGF3YWl0IHRoaXMua2V5R3JhcGguZ2V0SndrS2V5KGNjLmtleS5pZCk7XG4gICAgICAvLyBUT0RPOiB2ZXJpZnkgc2lnbmF0dXJlXG4gICAgICByZXQucGxhaW5DaXBoZXJEYXRhSnNvbiA9IGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZGVjcnlwdChcbiAgICAgICAga2V5LFxuICAgICAgICBjYy5jaXBoZXJEYXRhXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICBhc3luYyBkZWNyeXB0Q29udGFjdENhcmRFZGdlcyhcbiAgICBoYXNFZGdlczogSGFzRWRnZXM8Q29udGFjdENhcmQ+XG4gICk6IFByb21pc2U8Q29udGFjdENhcmRbXT4ge1xuICAgIHJldHVybiBQcm9taXNlLmFsbChcbiAgICAgIGhhc0VkZ2VzLmVkZ2VzLm1hcChhc3luYyAoZWRnZTogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IGNjID0gZWRnZS5ub2RlIGFzIENvbnRhY3RDYXJkO1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5kZWNyeXB0Q29udGFjdENhcmQoY2MpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgLy8geyBcImZpbHRlclwiOiBbeyBcImNvbnRhaW5zXCI6IHsgXCJhXCI6IHRydWUgfSB9XSB9XG4gIGFzeW5jIHNlYXJjaENvbnRhY3RDYXJkKHB1YmxpY1NlYXJjaGFibGU6IG9iamVjdCk6IFByb21pc2U8Q29udGFjdENhcmRbXT4ge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmxyQXBvbGxvLnF1ZXJ5PFNlYXJjaENvbnRhY3RDYXJkUXVlcnk+KHtcbiAgICAgIHF1ZXJ5OiBTZWFyY2hDb250YWN0Q2FyZFF1ZXJ5LFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIHB1YmxpY1NlYXJjaGFibGU6IEpTT04uc3RyaW5naWZ5KHB1YmxpY1NlYXJjaGFibGUpLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBhd2FpdCB0aGlzLmRlY3J5cHRDb250YWN0Q2FyZEVkZ2VzKGRhdGEuc2VhcmNoQ29udGFjdENhcmRzKTtcbiAgfVxuXG4gIGFzeW5jIGdldENvbnRhY3RDYXJkTGlzdCgpOiBQcm9taXNlPENvbnRhY3RDYXJkW10+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5sckFwb2xsby5xdWVyeTxDb250YWN0Q2FyZExpc3RRdWVyeT4oe1xuICAgICAgcXVlcnk6IENvbnRhY3RDYXJkTGlzdFF1ZXJ5LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZGVjcnlwdENvbnRhY3RDYXJkRWRnZXMoZGF0YS5jb250YWN0Q2FyZHMpO1xuICB9XG5cbiAgYXN5bmMgZ2V0Q29udGFjdENhcmQoaWQ6IHN0cmluZyk6IFByb21pc2U8Q29udGFjdENhcmQ+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5sckFwb2xsby5xdWVyeTxDb250YWN0Q2FyZFF1ZXJ5Pih7XG4gICAgICBxdWVyeTogQ29udGFjdENhcmRRdWVyeSxcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBpZCxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5kZWNyeXB0Q29udGFjdENhcmQoZGF0YS5jb250YWN0Q2FyZCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHByZXBhcmVDb250YWN0Q2FyZElucHV0KFxuICAgIGlucHV0OiBDcmVhdGVDb250YWN0Q2FyZElucHV0XG4gICk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3Qgc2lnUHhrID0gdGhpcy5rZXlTZXJ2aWNlLmN1cnJlbnRTaWdQeGs7XG4gICAgY29uc3QgcHVibGljRGF0YVNpZyA9IEpTT04uc3RyaW5naWZ5KFxuICAgICAgYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5zaWduKHNpZ1B4ay5qd2ssIGlucHV0LnB1YmxpY0RhdGFKc29uKVxuICAgICk7XG4gICAgY29uc3QgcHVibGljU2VhcmNoYWJsZVNpZyA9IEpTT04uc3RyaW5naWZ5KFxuICAgICAgYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5zaWduKHNpZ1B4ay5qd2ssIGlucHV0LnB1YmxpY1NlYXJjaGFibGVKc29uKVxuICAgICk7XG4gICAgY29uc3QgcGxhaW5EYXRhU2lnID0gSlNPTi5zdHJpbmdpZnkoXG4gICAgICBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLnNpZ24oc2lnUHhrLmp3aywgaW5wdXQucGxhaW5EYXRhSnNvbilcbiAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHNpZ1B4a0lkOiBzaWdQeGsuaWQsXG4gICAgICBwdWJsaWNEYXRhU2lnLFxuICAgICAgcHVibGljU2VhcmNoYWJsZVNpZyxcbiAgICAgIHBsYWluRGF0YVNpZyxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgY3JlYXRlQ29udGFjdENhcmQoaW5wdXQ6IENyZWF0ZUNvbnRhY3RDYXJkSW5wdXQpOiBQcm9taXNlPENvbnRhY3RDYXJkPiB7XG4gICAgLy8gR2V0IGVuY3J5cHRpb24ga2V5XG4gICAgY29uc3Qgcm9vdEtleSA9IHRoaXMua2V5U2VydmljZS5jdXJyZW50Um9vdEtleTtcbiAgICBjb25zdCBrZXkgPSBhd2FpdCB0aGlzLmtleUZhY3RvcnkuY3JlYXRlS2V5KCk7XG4gICAgY29uc3Qgd3JhcHBlZEtleSA9IGF3YWl0IHRoaXMua2V5R3JhcGguZW5jcnlwdFRvU3RyaW5nKFxuICAgICAgcm9vdEtleS5qd2ssXG4gICAgICBrZXkudG9KU09OKHRydWUpXG4gICAgKTtcbiAgICBjb25zdCBjaXBoZXJEYXRhID0gYXdhaXQgdGhpcy5rZXlHcmFwaC5lbmNyeXB0VG9TdHJpbmcoXG4gICAgICBrZXksXG4gICAgICBpbnB1dC5wbGFpbkNpcGhlckRhdGFKc29uXG4gICAgKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IGF3YWl0IHRoaXMucHJlcGFyZUNvbnRhY3RDYXJkSW5wdXQoaW5wdXQpO1xuXG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMubHJBcG9sbG8ubXV0YXRlPHtcbiAgICAgIGNyZWF0ZUNvbnRhY3RDYXJkOiB7IGNvbnRhY3RDYXJkOiBDb250YWN0Q2FyZCB9O1xuICAgIH0+KHtcbiAgICAgIG11dGF0aW9uOiBDcmVhdGVDb250YWN0Q2FyZE11dGF0aW9uLFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIGlucHV0OiB7XG4gICAgICAgICAgLi4ucGFyYW1zLFxuICAgICAgICAgIHdyYXBwaW5nS2V5SWQ6IHJvb3RLZXkuaWQsXG4gICAgICAgICAgd3JhcHBlZEtleSxcbiAgICAgICAgICBjaXBoZXJEYXRhLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBkYXRhLmNyZWF0ZUNvbnRhY3RDYXJkLmNvbnRhY3RDYXJkO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlQ29udGFjdENhcmQoaW5wdXQ6IFVwZGF0ZUNvbnRhY3RDYXJkSW5wdXQpOiBQcm9taXNlPENvbnRhY3RDYXJkPiB7XG4gICAgLy8gR2V0IGVuY3J5cHRpb24ga2V5XG4gICAgY29uc3QgY2MgPSBhd2FpdCB0aGlzLmdldENvbnRhY3RDYXJkKGlucHV0LmlkKTtcbiAgICBjb25zdCBrZXkgPSBhd2FpdCB0aGlzLmtleUdyYXBoLmdldEp3a0tleShjYy5rZXkuaWQpO1xuICAgIGNvbnN0IGNpcGhlckRhdGEgPSBhd2FpdCB0aGlzLmtleUdyYXBoLmVuY3J5cHRUb1N0cmluZyhcbiAgICAgIGtleSxcbiAgICAgIGlucHV0LnBsYWluQ2lwaGVyRGF0YUpzb25cbiAgICApO1xuXG4gICAgY29uc3QgcGFyYW1zID0gYXdhaXQgdGhpcy5wcmVwYXJlQ29udGFjdENhcmRJbnB1dChpbnB1dCk7XG5cbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5sckFwb2xsby5tdXRhdGU8e1xuICAgICAgdXBkYXRlQ29udGFjdENhcmQ6IHsgY29udGFjdENhcmQ6IENvbnRhY3RDYXJkIH07XG4gICAgfT4oe1xuICAgICAgbXV0YXRpb246IFVwZGF0ZUNvbnRhY3RDYXJkTXV0YXRpb24sXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICAuLi5wYXJhbXMsXG4gICAgICAgICAgaWQ6IGlucHV0LmlkLFxuICAgICAgICAgIGNpcGhlckRhdGEsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGRhdGEudXBkYXRlQ29udGFjdENhcmQuY29udGFjdENhcmQ7XG4gIH1cblxuICBhc3luYyBkZWxldGVDb250YWN0Q2FyZChpZDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5sckFwb2xsby5tdXRhdGU8YW55Pih7XG4gICAgICBtdXRhdGlvbjogRGVsZXRlQ29udGFjdENhcmRNdXRhdGlvbixcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBpbnB1dDoge1xuICAgICAgICAgIGlkLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBkYXRhLmRlbGV0ZUNvbnRhY3RDYXJkLmlkO1xuICB9XG59XG4iXX0=
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { gqlTyped } from '../_common/ast';
|
|
2
|
-
export const CreateContactCardMutation = gqlTyped `
|
|
3
|
-
mutation CreateContactCardMutation(
|
|
4
|
-
$input: CreateContactCardInput!
|
|
5
|
-
) {
|
|
6
|
-
createContactCard(input: $input) {
|
|
7
|
-
contactCard {
|
|
8
|
-
id
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
`;
|
|
13
|
-
export const UpdateContactCardMutation = gqlTyped `
|
|
14
|
-
mutation UpdateContactCardMutation($input: UpdateContactCardInput!) {
|
|
15
|
-
updateContactCard(input: $input) {
|
|
16
|
-
contactCard {
|
|
17
|
-
id
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
`;
|
|
22
|
-
export const DeleteContactCardMutation = gqlTyped `
|
|
23
|
-
mutation DeleteContactCardMutation($input: DeleteContactCardInput!) {
|
|
24
|
-
deleteContactCard(input: $input) {
|
|
25
|
-
id
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
`;
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFjdC1jYXJkMi5ncWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvY29udGFjdC1jYXJkL2NvbnRhY3QtY2FyZDIuZ3FsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQVMxQyxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxRQUFRLENBQWlDOzs7Ozs7Ozs7O0NBVWpGLENBQUM7QUFTRixNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxRQUFRLENBQWlDOzs7Ozs7OztDQVFqRixDQUFDO0FBU0YsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsUUFBUSxDQUFpQzs7Ozs7O0NBTWpGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJRCB9IGZyb20gJy4uL2FwaS90eXBlcyc7XG5pbXBvcnQgeyBncWxUeXBlZCB9IGZyb20gJy4uL19jb21tb24vYXN0JztcblxuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVDb250YWN0Q2FyZE11dGF0aW9uUmVzdWx0IHtcbiAgY3JlYXRlQ29udGFjdENhcmQ6IHtcbiAgICBjb250YWN0Q2FyZDoge1xuICAgICAgaWQ6IElEO1xuICAgIH07XG4gIH07XG59XG5leHBvcnQgY29uc3QgQ3JlYXRlQ29udGFjdENhcmRNdXRhdGlvbiA9IGdxbFR5cGVkPENyZWF0ZUNvbnRhY3RDYXJkTXV0YXRpb25SZXN1bHQ+YFxubXV0YXRpb24gQ3JlYXRlQ29udGFjdENhcmRNdXRhdGlvbihcbiAgJGlucHV0OiBDcmVhdGVDb250YWN0Q2FyZElucHV0IVxuKSB7XG4gIGNyZWF0ZUNvbnRhY3RDYXJkKGlucHV0OiAkaW5wdXQpIHtcbiAgICBjb250YWN0Q2FyZCB7XG4gICAgICBpZFxuICAgIH1cbiAgfVxufVxuYDtcblxuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVDb250YWN0Q2FyZE11dGF0aW9uUmVzdWx0IHtcbiAgdXBkYXRlQ29udGFjdENhcmQ6IHtcbiAgICBjb250YWN0Q2FyZDoge1xuICAgICAgaWQ6IElEO1xuICAgIH07XG4gIH07XG59XG5leHBvcnQgY29uc3QgVXBkYXRlQ29udGFjdENhcmRNdXRhdGlvbiA9IGdxbFR5cGVkPFVwZGF0ZUNvbnRhY3RDYXJkTXV0YXRpb25SZXN1bHQ+YFxubXV0YXRpb24gVXBkYXRlQ29udGFjdENhcmRNdXRhdGlvbigkaW5wdXQ6IFVwZGF0ZUNvbnRhY3RDYXJkSW5wdXQhKSB7XG4gIHVwZGF0ZUNvbnRhY3RDYXJkKGlucHV0OiAkaW5wdXQpIHtcbiAgICBjb250YWN0Q2FyZCB7XG4gICAgICBpZFxuICAgIH1cbiAgfVxufVxuYDtcblxuZXhwb3J0IGludGVyZmFjZSBEZWxldGVDb250YWN0Q2FyZE11dGF0aW9uUmVzdWx0IHtcbiAgZGVsZXRlQ29udGFjdENhcmQ6IHtcbiAgICBkZWxldGVDb250YWN0Q2FyZDoge1xuICAgICAgaWQ6IElEO1xuICAgIH07XG4gIH07XG59XG5leHBvcnQgY29uc3QgRGVsZXRlQ29udGFjdENhcmRNdXRhdGlvbiA9IGdxbFR5cGVkPERlbGV0ZUNvbnRhY3RDYXJkTXV0YXRpb25SZXN1bHQ+YFxubXV0YXRpb24gRGVsZXRlQ29udGFjdENhcmRNdXRhdGlvbigkaW5wdXQ6IERlbGV0ZUNvbnRhY3RDYXJkSW5wdXQhKSB7XG4gIGRlbGV0ZUNvbnRhY3RDYXJkKGlucHV0OiAkaW5wdXQpIHtcbiAgICBpZFxuICB9XG59XG5gO1xuIl19
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
import { __awaiter, __decorate } from "tslib";
|
|
2
|
-
import { Injectable, NgZone } from '@angular/core';
|
|
3
|
-
import { LrMutation } from '../api/lr-graphql';
|
|
4
|
-
import { EncryptionService } from '../encryption/encryption.service';
|
|
5
|
-
import { KeyFactoryService } from '../key/key-factory.service';
|
|
6
|
-
import { KeyGraphService } from '../key/key-graph.service';
|
|
7
|
-
import { KeyMetaService } from '../key/key-meta.service';
|
|
8
|
-
import { KeyService } from '../key/key.service';
|
|
9
|
-
import { RunOutsideAngular } from '../_common/run-outside-angular';
|
|
10
|
-
import { CreateContactCardMutation, DeleteContactCardMutation, UpdateContactCardMutation, } from './contact-card2.gql';
|
|
11
|
-
import * as i0 from "@angular/core";
|
|
12
|
-
import * as i1 from "../key/key-factory.service";
|
|
13
|
-
import * as i2 from "../key/key.service";
|
|
14
|
-
import * as i3 from "../encryption/encryption.service";
|
|
15
|
-
import * as i4 from "../key/key-graph.service";
|
|
16
|
-
import * as i5 from "../key/key-meta.service";
|
|
17
|
-
export class OwnerPlainDataJson {
|
|
18
|
-
}
|
|
19
|
-
let ContactCard2Service = class ContactCard2Service {
|
|
20
|
-
constructor(keyFactory, keyService, encryptionService, keyGraph, keyMetaService, ngZone) {
|
|
21
|
-
this.keyFactory = keyFactory;
|
|
22
|
-
this.keyService = keyService;
|
|
23
|
-
this.encryptionService = encryptionService;
|
|
24
|
-
this.keyGraph = keyGraph;
|
|
25
|
-
this.keyMetaService = keyMetaService;
|
|
26
|
-
this.ngZone = ngZone;
|
|
27
|
-
}
|
|
28
|
-
createContactCard(input) {
|
|
29
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
30
|
-
// Get encryption key
|
|
31
|
-
const rootKey = this.keyService.currentRootKey;
|
|
32
|
-
const key = yield this.keyFactory.createKey();
|
|
33
|
-
const wrappedKey = yield this.keyGraph.encryptToString(rootKey.jwk, key.toJSON(true));
|
|
34
|
-
const cipherData = yield this.keyGraph.encryptToString(key, input.plainCipherDataJson);
|
|
35
|
-
const params = yield this.prepareContactCardInput(input);
|
|
36
|
-
return new LrMutation({
|
|
37
|
-
mutation: CreateContactCardMutation,
|
|
38
|
-
variables: {
|
|
39
|
-
input: Object.assign(Object.assign({}, params), { wrappingKeyId: rootKey.id, wrappedKey,
|
|
40
|
-
cipherData }),
|
|
41
|
-
},
|
|
42
|
-
});
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
updateContactCard(input) {
|
|
46
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
47
|
-
// Get encryption key
|
|
48
|
-
const cipherData = yield this.keyGraph.encryptToString(input.keyId, input.plainCipherDataJson);
|
|
49
|
-
const params = yield this.prepareContactCardInput(input);
|
|
50
|
-
return new LrMutation({
|
|
51
|
-
mutation: UpdateContactCardMutation,
|
|
52
|
-
variables: {
|
|
53
|
-
input: Object.assign(Object.assign({}, params), { id: input.id, cipherData }),
|
|
54
|
-
},
|
|
55
|
-
});
|
|
56
|
-
});
|
|
57
|
-
}
|
|
58
|
-
deleteContactCard(id) {
|
|
59
|
-
return new LrMutation({
|
|
60
|
-
mutation: DeleteContactCardMutation,
|
|
61
|
-
variables: {
|
|
62
|
-
input: {
|
|
63
|
-
id,
|
|
64
|
-
},
|
|
65
|
-
},
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
prepareContactCardInput(input) {
|
|
69
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
70
|
-
const sigPxk = this.keyService.currentSigPxk;
|
|
71
|
-
const publicDataSig = JSON.stringify(yield this.encryptionService.sign(sigPxk.jwk, input.publicDataJson));
|
|
72
|
-
const publicSearchableSig = JSON.stringify(yield this.encryptionService.sign(sigPxk.jwk, input.publicSearchableJson));
|
|
73
|
-
const plainDataSig = JSON.stringify(yield this.encryptionService.sign(sigPxk.jwk, input.plainDataJson));
|
|
74
|
-
return {
|
|
75
|
-
sigPxkId: sigPxk.id,
|
|
76
|
-
publicDataSig,
|
|
77
|
-
publicSearchableSig,
|
|
78
|
-
plainDataSig,
|
|
79
|
-
};
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
|
-
};
|
|
83
|
-
ContactCard2Service.ɵprov = i0.ɵɵdefineInjectable({ factory: function ContactCard2Service_Factory() { return new ContactCard2Service(i0.ɵɵinject(i1.KeyFactoryService), i0.ɵɵinject(i2.KeyService), i0.ɵɵinject(i3.EncryptionService), i0.ɵɵinject(i4.KeyGraphService), i0.ɵɵinject(i5.KeyMetaService), i0.ɵɵinject(i0.NgZone)); }, token: ContactCard2Service, providedIn: "root" });
|
|
84
|
-
ContactCard2Service.decorators = [
|
|
85
|
-
{ type: Injectable, args: [{
|
|
86
|
-
providedIn: 'root',
|
|
87
|
-
},] }
|
|
88
|
-
];
|
|
89
|
-
ContactCard2Service.ctorParameters = () => [
|
|
90
|
-
{ type: KeyFactoryService },
|
|
91
|
-
{ type: KeyService },
|
|
92
|
-
{ type: EncryptionService },
|
|
93
|
-
{ type: KeyGraphService },
|
|
94
|
-
{ type: KeyMetaService },
|
|
95
|
-
{ type: NgZone }
|
|
96
|
-
];
|
|
97
|
-
ContactCard2Service = __decorate([
|
|
98
|
-
RunOutsideAngular({
|
|
99
|
-
ngZoneName: 'ngZone',
|
|
100
|
-
})
|
|
101
|
-
], ContactCard2Service);
|
|
102
|
-
export { ContactCard2Service };
|
|
103
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFjdC1jYXJkMi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL2NvbnRhY3QtY2FyZC9jb250YWN0LWNhcmQyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVoRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRSxPQUFPLEVBQ0wseUJBQXlCLEVBQ3pCLHlCQUF5QixFQUN6Qix5QkFBeUIsR0FDMUIsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7OztBQW1CN0IsTUFBTSxPQUFPLGtCQUFrQjtDQUU5QjtJQWFZLG1CQUFtQixTQUFuQixtQkFBbUI7SUFDOUIsWUFDVSxVQUE2QixFQUM3QixVQUFzQixFQUN0QixpQkFBb0MsRUFDcEMsUUFBeUIsRUFDekIsY0FBOEIsRUFDOUIsTUFBYztRQUxkLGVBQVUsR0FBVixVQUFVLENBQW1CO1FBQzdCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUN6QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsV0FBTSxHQUFO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VTtZQUpWLGlCQUFpQjtZQUVqQixlQUFlO1lBQ2YsY0FBYztZQU5GLE1BQU07O0FBZ0RkLG1CQUFtQjtJQU4vQixpQkFBaUIsQ0FBQztRQUNqQixVQUFVLEVBQUUsUUFBUTtLQUNyQixDQUFDO0dBSVcsbUJBQW1CLENBeUYvQjtTQXpGWSxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExyTXV0YXRpb24gfSBmcm9tICcuLi9hcGkvbHItZ3JhcGhxbCc7XG5pbXBvcnQgeyBKU09OT2JqZWN0IH0gZnJvbSAnLi4vYXBpL3R5cGVzJztcbmltcG9ydCB7IEVuY3J5cHRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vZW5jcnlwdGlvbi9lbmNyeXB0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgS2V5RmFjdG9yeVNlcnZpY2UgfSBmcm9tICcuLi9rZXkva2V5LWZhY3Rvcnkuc2VydmljZSc7XG5pbXBvcnQgeyBLZXlHcmFwaFNlcnZpY2UgfSBmcm9tICcuLi9rZXkva2V5LWdyYXBoLnNlcnZpY2UnO1xuaW1wb3J0IHsgS2V5TWV0YVNlcnZpY2UgfSBmcm9tICcuLi9rZXkva2V5LW1ldGEuc2VydmljZSc7XG5pbXBvcnQgeyBLZXlTZXJ2aWNlIH0gZnJvbSAnLi4va2V5L2tleS5zZXJ2aWNlJztcbmltcG9ydCB7IE1haW5Db250YWN0Q2FyZFBsYWluRmllbGRzIH0gZnJvbSAnLi4vcHJvZmlsZS9wcm9maWxlLnR5cGVzJztcbmltcG9ydCB7IFJ1bk91dHNpZGVBbmd1bGFyIH0gZnJvbSAnLi4vX2NvbW1vbi9ydW4tb3V0c2lkZS1hbmd1bGFyJztcbmltcG9ydCB7XG4gIENyZWF0ZUNvbnRhY3RDYXJkTXV0YXRpb24sXG4gIERlbGV0ZUNvbnRhY3RDYXJkTXV0YXRpb24sXG4gIFVwZGF0ZUNvbnRhY3RDYXJkTXV0YXRpb24sXG59IGZyb20gJy4vY29udGFjdC1jYXJkMi5ncWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZUNvbnRhY3RDYXJkSW5wdXQyIHtcbiAgcHVibGljRGF0YUpzb246IEpTT05PYmplY3Q7XG4gIHB1YmxpY1NlYXJjaGFibGVKc29uOiBKU09OT2JqZWN0O1xuICBwbGFpbkNpcGhlckRhdGFKc29uOiBKU09OT2JqZWN0O1xuICBwbGFpbkRhdGFKc29uOiBNYWluQ29udGFjdENhcmRQbGFpbkZpZWxkcztcbn1cblxuLy8gVGhlc2UgY29udGFjdCBuYW1lIGZpZWxkcyBhcmUgZW5mb3JjZWQgYnkgdGhlIHNlcnZlciBzbyB0aGF0IGl0IGNhbiBzZW5kIG91dCBlbWFpbHMgd2l0aFxuLy8gYXBwcm9wcmlhdGUgZm9ybWF0LlxuZXhwb3J0IGludGVyZmFjZSBDb250YWN0Q2FyZE5hbWUyIHtcbiAgbmFtZTogc3RyaW5nO1xuICB0aXRsZT86IHN0cmluZztcbiAgZmlyc3ROYW1lPzogc3RyaW5nO1xuICBsYXN0TmFtZT86IHN0cmluZztcbiAgLy8gYWRkaXRpb25hbCBmaWVsZHMgYXJlIG5vdCBhbGxvd2VkIGJ5IHRoZSBzZXJ2ZXJcbn1cblxuZXhwb3J0IGNsYXNzIE93bmVyUGxhaW5EYXRhSnNvbiB7XG4gIG5hbWU6IENvbnRhY3RDYXJkTmFtZTI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXBkYXRlQ29udGFjdENhcmRJbnB1dDIgZXh0ZW5kcyBDcmVhdGVDb250YWN0Q2FyZElucHV0MiB7XG4gIGlkOiBzdHJpbmc7XG4gIGtleUlkOiBzdHJpbmc7XG59XG5cbkBSdW5PdXRzaWRlQW5ndWxhcih7XG4gIG5nWm9uZU5hbWU6ICduZ1pvbmUnLFxufSlcbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBDb250YWN0Q2FyZDJTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBrZXlGYWN0b3J5OiBLZXlGYWN0b3J5U2VydmljZSxcbiAgICBwcml2YXRlIGtleVNlcnZpY2U6IEtleVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlbmNyeXB0aW9uU2VydmljZTogRW5jcnlwdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBrZXlHcmFwaDogS2V5R3JhcGhTZXJ2aWNlLFxuICAgIHByaXZhdGUga2V5TWV0YVNlcnZpY2U6IEtleU1ldGFTZXJ2aWNlLFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmVcbiAgKSB7fVxuXG4gIGFzeW5jIGNyZWF0ZUNvbnRhY3RDYXJkKGlucHV0OiBDcmVhdGVDb250YWN0Q2FyZElucHV0Mikge1xuICAgIC8vIEdldCBlbmNyeXB0aW9uIGtleVxuICAgIGNvbnN0IHJvb3RLZXkgPSB0aGlzLmtleVNlcnZpY2UuY3VycmVudFJvb3RLZXk7XG4gICAgY29uc3Qga2V5ID0gYXdhaXQgdGhpcy5rZXlGYWN0b3J5LmNyZWF0ZUtleSgpO1xuICAgIGNvbnN0IHdyYXBwZWRLZXkgPSBhd2FpdCB0aGlzLmtleUdyYXBoLmVuY3J5cHRUb1N0cmluZyhcbiAgICAgIHJvb3RLZXkuandrLFxuICAgICAga2V5LnRvSlNPTih0cnVlKVxuICAgICk7XG4gICAgY29uc3QgY2lwaGVyRGF0YSA9IGF3YWl0IHRoaXMua2V5R3JhcGguZW5jcnlwdFRvU3RyaW5nKFxuICAgICAga2V5LFxuICAgICAgaW5wdXQucGxhaW5DaXBoZXJEYXRhSnNvblxuICAgICk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSBhd2FpdCB0aGlzLnByZXBhcmVDb250YWN0Q2FyZElucHV0KGlucHV0KTtcblxuICAgIHJldHVybiBuZXcgTHJNdXRhdGlvbih7XG4gICAgICBtdXRhdGlvbjogQ3JlYXRlQ29udGFjdENhcmRNdXRhdGlvbixcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBpbnB1dDoge1xuICAgICAgICAgIC4uLnBhcmFtcyxcbiAgICAgICAgICB3cmFwcGluZ0tleUlkOiByb290S2V5LmlkLFxuICAgICAgICAgIHdyYXBwZWRLZXksXG4gICAgICAgICAgY2lwaGVyRGF0YSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyB1cGRhdGVDb250YWN0Q2FyZChpbnB1dDogVXBkYXRlQ29udGFjdENhcmRJbnB1dDIpIHtcbiAgICAvLyBHZXQgZW5jcnlwdGlvbiBrZXlcbiAgICBjb25zdCBjaXBoZXJEYXRhID0gYXdhaXQgdGhpcy5rZXlHcmFwaC5lbmNyeXB0VG9TdHJpbmcoXG4gICAgICBpbnB1dC5rZXlJZCxcbiAgICAgIGlucHV0LnBsYWluQ2lwaGVyRGF0YUpzb25cbiAgICApO1xuXG4gICAgY29uc3QgcGFyYW1zID0gYXdhaXQgdGhpcy5wcmVwYXJlQ29udGFjdENhcmRJbnB1dChpbnB1dCk7XG5cbiAgICByZXR1cm4gbmV3IExyTXV0YXRpb24oe1xuICAgICAgbXV0YXRpb246IFVwZGF0ZUNvbnRhY3RDYXJkTXV0YXRpb24sXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICAuLi5wYXJhbXMsXG4gICAgICAgICAgaWQ6IGlucHV0LmlkLFxuICAgICAgICAgIGNpcGhlckRhdGEsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgZGVsZXRlQ29udGFjdENhcmQoaWQ6IHN0cmluZykge1xuICAgIHJldHVybiBuZXcgTHJNdXRhdGlvbih7XG4gICAgICBtdXRhdGlvbjogRGVsZXRlQ29udGFjdENhcmRNdXRhdGlvbixcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBpbnB1dDoge1xuICAgICAgICAgIGlkLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJlcGFyZUNvbnRhY3RDYXJkSW5wdXQoaW5wdXQ6IENyZWF0ZUNvbnRhY3RDYXJkSW5wdXQyKSB7XG4gICAgY29uc3Qgc2lnUHhrID0gdGhpcy5rZXlTZXJ2aWNlLmN1cnJlbnRTaWdQeGs7XG4gICAgY29uc3QgcHVibGljRGF0YVNpZyA9IEpTT04uc3RyaW5naWZ5KFxuICAgICAgYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5zaWduKHNpZ1B4ay5qd2ssIGlucHV0LnB1YmxpY0RhdGFKc29uKVxuICAgICk7XG4gICAgY29uc3QgcHVibGljU2VhcmNoYWJsZVNpZyA9IEpTT04uc3RyaW5naWZ5KFxuICAgICAgYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5zaWduKHNpZ1B4ay5qd2ssIGlucHV0LnB1YmxpY1NlYXJjaGFibGVKc29uKVxuICAgICk7XG4gICAgY29uc3QgcGxhaW5EYXRhU2lnID0gSlNPTi5zdHJpbmdpZnkoXG4gICAgICBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLnNpZ24oc2lnUHhrLmp3aywgaW5wdXQucGxhaW5EYXRhSnNvbilcbiAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHNpZ1B4a0lkOiBzaWdQeGsuaWQsXG4gICAgICBwdWJsaWNEYXRhU2lnLFxuICAgICAgcHVibGljU2VhcmNoYWJsZVNpZyxcbiAgICAgIHBsYWluRGF0YVNpZyxcbiAgICB9O1xuICB9XG59XG4iXX0=
|