@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,47 +0,0 @@
|
|
|
1
|
-
import { __awaiter } from "tslib";
|
|
2
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
3
|
-
import { Injectable } from '@angular/core';
|
|
4
|
-
import { Apollo } from 'apollo-angular';
|
|
5
|
-
import { KeyGraphService } from '../key/key-graph.service';
|
|
6
|
-
import { handleApolloError } from '../_common/exceptions';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "apollo-angular";
|
|
9
|
-
import * as i2 from "../key/key-graph.service";
|
|
10
|
-
export class LrApolloService {
|
|
11
|
-
constructor(apollo, keyGraph) {
|
|
12
|
-
this.apollo = apollo;
|
|
13
|
-
this.keyGraph = keyGraph;
|
|
14
|
-
}
|
|
15
|
-
addKeys(response) {
|
|
16
|
-
if (response.data.keyGraph) {
|
|
17
|
-
this.keyGraph.addKeys(response.data.keyGraph);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
query(options) {
|
|
21
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
22
|
-
const response = yield this.apollo.query(options).toPromise();
|
|
23
|
-
handleApolloError(response.errors);
|
|
24
|
-
this.addKeys(response);
|
|
25
|
-
return response.data;
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
|
-
mutate(options) {
|
|
29
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
30
|
-
const response = yield this.apollo.mutate(options).toPromise();
|
|
31
|
-
handleApolloError(response.errors);
|
|
32
|
-
this.addKeys(response);
|
|
33
|
-
return response.data;
|
|
34
|
-
});
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
LrApolloService.ɵprov = i0.ɵɵdefineInjectable({ factory: function LrApolloService_Factory() { return new LrApolloService(i0.ɵɵinject(i1.Apollo), i0.ɵɵinject(i2.KeyGraphService)); }, token: LrApolloService, providedIn: "root" });
|
|
38
|
-
LrApolloService.decorators = [
|
|
39
|
-
{ type: Injectable, args: [{
|
|
40
|
-
providedIn: 'root',
|
|
41
|
-
},] }
|
|
42
|
-
];
|
|
43
|
-
LrApolloService.ctorParameters = () => [
|
|
44
|
-
{ type: Apollo },
|
|
45
|
-
{ type: KeyGraphService }
|
|
46
|
-
];
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibHItYXBvbGxvLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvYXBpL2xyLWFwb2xsby5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7O0FBSzFELE1BQU0sT0FBTyxlQUFlO0lBQzFCLFlBQW9CLE1BQWMsRUFBVSxRQUF5QjtRQUFqRCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7SUFBRyxDQUFDO0lBRWpFLE9BQU8sQ0FBQyxRQUFRO1FBQ3RCLElBQUssUUFBUSxDQUFDLElBQW9CLENBQUMsUUFBUSxFQUFFO1lBQzNDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFFLFFBQVEsQ0FBQyxJQUFvQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ2hFO0lBQ0gsQ0FBQztJQUVLLEtBQUssQ0FDVCxPQUF3Qjs7WUFFeEIsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBTyxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUVwRSxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFbkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUV2QixPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDdkIsQ0FBQztLQUFBO0lBRUssTUFBTSxDQUNWLE9BQThCOztZQUU5QixNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFJLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBRWxFLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUVuQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRXZCLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQztRQUN2QixDQUFDO0tBQUE7Ozs7WUFsQ0YsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7WUFQUSxNQUFNO1lBQ04sZUFBZSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE11dGF0aW9uT3B0aW9ucywgUXVlcnlPcHRpb25zIH0gZnJvbSAnQGFwb2xsby9jbGllbnQvY29yZSc7XG5pbXBvcnQgeyBBcG9sbG8gfSBmcm9tICdhcG9sbG8tYW5ndWxhcic7XG5pbXBvcnQgeyBLZXlHcmFwaFNlcnZpY2UgfSBmcm9tICcuLi9rZXkva2V5LWdyYXBoLnNlcnZpY2UnO1xuaW1wb3J0IHsgSGFzS2V5R3JhcGggfSBmcm9tICcuLi9rZXkva2V5LnR5cGVzJztcbmltcG9ydCB7IGhhbmRsZUFwb2xsb0Vycm9yIH0gZnJvbSAnLi4vX2NvbW1vbi9leGNlcHRpb25zJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIExyQXBvbGxvU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYXBvbGxvOiBBcG9sbG8sIHByaXZhdGUga2V5R3JhcGg6IEtleUdyYXBoU2VydmljZSkge31cblxuICBwcml2YXRlIGFkZEtleXMocmVzcG9uc2UpIHtcbiAgICBpZiAoKHJlc3BvbnNlLmRhdGEgYXMgSGFzS2V5R3JhcGgpLmtleUdyYXBoKSB7XG4gICAgICB0aGlzLmtleUdyYXBoLmFkZEtleXMoKHJlc3BvbnNlLmRhdGEgYXMgSGFzS2V5R3JhcGgpLmtleUdyYXBoKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBxdWVyeTxULCBWID0geyBba2V5OiBzdHJpbmddOiBhbnkgfT4oXG4gICAgb3B0aW9uczogUXVlcnlPcHRpb25zPFY+XG4gICk6IFByb21pc2U8VD4ge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5hcG9sbG8ucXVlcnk8VCwgVj4ob3B0aW9ucykudG9Qcm9taXNlKCk7XG5cbiAgICBoYW5kbGVBcG9sbG9FcnJvcihyZXNwb25zZS5lcnJvcnMpO1xuXG4gICAgdGhpcy5hZGRLZXlzKHJlc3BvbnNlKTtcblxuICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICB9XG5cbiAgYXN5bmMgbXV0YXRlPFQgZXh0ZW5kcyBhbnksIFYgPSB7IFtrZXk6IHN0cmluZ106IGFueSB9PihcbiAgICBvcHRpb25zOiBNdXRhdGlvbk9wdGlvbnM8VCwgVj5cbiAgKTogUHJvbWlzZTxUPiB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmFwb2xsby5tdXRhdGU8VD4ob3B0aW9ucykudG9Qcm9taXNlKCk7XG5cbiAgICBoYW5kbGVBcG9sbG9FcnJvcihyZXNwb25zZS5lcnJvcnMpO1xuXG4gICAgdGhpcy5hZGRLZXlzKHJlc3BvbnNlKTtcblxuICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICB9XG59XG4iXX0=
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export * from './lr-graphql.service';
|
|
2
|
-
export * from './lr-merged-mutation';
|
|
3
|
-
export * from './lr-mutation';
|
|
4
|
-
export * from './lr-mutation-base';
|
|
5
|
-
export * from './lr.service';
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvYXBpL2xyLWdyYXBocWwvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xyLWdyYXBocWwuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xyLW1lcmdlZC1tdXRhdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL2xyLW11dGF0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vbHItbXV0YXRpb24tYmFzZSc7XG5leHBvcnQgKiBmcm9tICcuL2xyLnNlcnZpY2UnO1xuIl19
|
|
@@ -1,170 +0,0 @@
|
|
|
1
|
-
import { __awaiter, __decorate } from "tslib";
|
|
2
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
3
|
-
import { Injectable, NgZone } from '@angular/core';
|
|
4
|
-
import { Apollo } from 'apollo-angular';
|
|
5
|
-
import gql from 'graphql-tag';
|
|
6
|
-
import * as gqlPrinter from 'graphql/language/printer';
|
|
7
|
-
import { KeyGraphService } from '../../key/key-graph.service';
|
|
8
|
-
import { lodash } from '../../_common';
|
|
9
|
-
import { getMutation, getQuery } from '../../_common/ast';
|
|
10
|
-
import { handleApolloError, KcBadStateException, KcUnsupportedException, } from '../../_common/exceptions';
|
|
11
|
-
import { FetchKeyGraphField, KeyGraphField } from '../../_common/queries.gql';
|
|
12
|
-
import { RunOutsideAngular } from '../../_common/run-outside-angular';
|
|
13
|
-
import { QueryProcessorService } from '../query-processor';
|
|
14
|
-
import { LrMergedMutation } from './lr-merged-mutation';
|
|
15
|
-
import * as i0 from "@angular/core";
|
|
16
|
-
import * as i1 from "apollo-angular";
|
|
17
|
-
import * as i2 from "../../key/key-graph.service";
|
|
18
|
-
import * as i3 from "../query-processor/query-processor.service";
|
|
19
|
-
// Data structures
|
|
20
|
-
// --------------------------------------------------------------------------
|
|
21
|
-
const keyGraphFieldAstSelection = getQuery(gql `
|
|
22
|
-
query {
|
|
23
|
-
${KeyGraphField}
|
|
24
|
-
}
|
|
25
|
-
`).selectionSet.selections[0];
|
|
26
|
-
const fetchKeyGraphFieldAstSelection = getQuery(gql `
|
|
27
|
-
query {
|
|
28
|
-
${FetchKeyGraphField}
|
|
29
|
-
}
|
|
30
|
-
`).selectionSet.selections[0];
|
|
31
|
-
let LrGraphQLService = class LrGraphQLService {
|
|
32
|
-
constructor(ngZone, apollo, keyGraph, queryProcessor) {
|
|
33
|
-
this.ngZone = ngZone;
|
|
34
|
-
this.apollo = apollo;
|
|
35
|
-
this.keyGraph = keyGraph;
|
|
36
|
-
this.queryProcessor = queryProcessor;
|
|
37
|
-
this.stats = {
|
|
38
|
-
queryCount: 0,
|
|
39
|
-
mutationCount: 0,
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
query(options) {
|
|
43
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
44
|
-
// Make copies to avoid side effect.
|
|
45
|
-
options = lodash.cloneDeep(options);
|
|
46
|
-
// Append the key graph query
|
|
47
|
-
const includeKeyGraph = this.isIncludeKeyGraph(options.includeKeyGraph);
|
|
48
|
-
if (includeKeyGraph) {
|
|
49
|
-
const operation = getQuery(options.query);
|
|
50
|
-
operation.selectionSet.selections = [
|
|
51
|
-
...operation.selectionSet.selections,
|
|
52
|
-
keyGraphFieldAstSelection,
|
|
53
|
-
];
|
|
54
|
-
}
|
|
55
|
-
if (options.name) {
|
|
56
|
-
const operation = getQuery(options.query);
|
|
57
|
-
operation.name = {
|
|
58
|
-
kind: 'Name',
|
|
59
|
-
value: options.name,
|
|
60
|
-
};
|
|
61
|
-
}
|
|
62
|
-
const response = yield this.apollo.query(options).toPromise();
|
|
63
|
-
this.stats.queryCount++;
|
|
64
|
-
handleApolloError(response.errors);
|
|
65
|
-
this.addKeys(response);
|
|
66
|
-
const data = yield this.queryProcessor.processQuery(response.data, options.processorOptions);
|
|
67
|
-
return data;
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
lrMutateImpl(lrMutation, options) {
|
|
71
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
72
|
-
if (options === null || options === void 0 ? void 0 : options.variables) {
|
|
73
|
-
throw new KcUnsupportedException('Unsupported field: "options.variables"');
|
|
74
|
-
}
|
|
75
|
-
if (lrMutation.executed) {
|
|
76
|
-
throw new KcBadStateException('LrMutation has already executed. LrMutation can only be used once in a lrMutate() call. Create new instances of LrMutation.');
|
|
77
|
-
}
|
|
78
|
-
lrMutation.setExecuted();
|
|
79
|
-
return this.apolloMutate(Object.assign(Object.assign({}, options), lrMutation.lrMutationData))
|
|
80
|
-
.then((res) => {
|
|
81
|
-
// Resolve promises set on the lrMutation rather than the lrMutate() call.
|
|
82
|
-
lrMutation.resolve(res);
|
|
83
|
-
// Still need to return value to the promise waiting for the results of lrMutate().
|
|
84
|
-
return res;
|
|
85
|
-
})
|
|
86
|
-
.catch((error) => {
|
|
87
|
-
lrMutation.reject(error);
|
|
88
|
-
throw error;
|
|
89
|
-
});
|
|
90
|
-
});
|
|
91
|
-
}
|
|
92
|
-
apolloMutate(options) {
|
|
93
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
94
|
-
// Make copies to avoid side effect.
|
|
95
|
-
options = Object.assign(Object.assign({}, options), { mutation: lodash.cloneDeep(options.mutation) });
|
|
96
|
-
// Append the key graph query
|
|
97
|
-
const includeKeyGraph = this.isIncludeKeyGraph(options.includeKeyGraph);
|
|
98
|
-
if (includeKeyGraph) {
|
|
99
|
-
const operation = getMutation(options.mutation);
|
|
100
|
-
operation.selectionSet.selections = [
|
|
101
|
-
...operation.selectionSet.selections,
|
|
102
|
-
fetchKeyGraphFieldAstSelection,
|
|
103
|
-
];
|
|
104
|
-
}
|
|
105
|
-
if (options.name) {
|
|
106
|
-
const operation = getMutation(options.mutation);
|
|
107
|
-
operation.name = {
|
|
108
|
-
kind: 'Name',
|
|
109
|
-
value: options.name,
|
|
110
|
-
};
|
|
111
|
-
}
|
|
112
|
-
// Format to string and parse again. This allows the "loc": { "start": ... }
|
|
113
|
-
// part of the DocumentNode to be correctly setup. It's extra processing
|
|
114
|
-
// in serialising and parsing, but probably minimal overhead.
|
|
115
|
-
options.mutation = gql(gqlPrinter.print(options.mutation));
|
|
116
|
-
const response = yield this.apollo.mutate(options).toPromise();
|
|
117
|
-
this.stats.mutationCount++;
|
|
118
|
-
handleApolloError(response.errors);
|
|
119
|
-
this.addKeys(response);
|
|
120
|
-
const data = yield this.queryProcessor.processQuery(response.data, options.processorOptions);
|
|
121
|
-
return data;
|
|
122
|
-
});
|
|
123
|
-
}
|
|
124
|
-
statsSnapshot() {
|
|
125
|
-
return lodash.cloneDeep(this.stats);
|
|
126
|
-
}
|
|
127
|
-
addKeys(response) {
|
|
128
|
-
if (response.data.keyGraph) {
|
|
129
|
-
this.keyGraph.addKeys(response.data.keyGraph);
|
|
130
|
-
delete response.data.keyGraph;
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
isIncludeKeyGraph(includeKeyGraph) {
|
|
134
|
-
// Default to true when null or undefined.
|
|
135
|
-
return includeKeyGraph == null ? true : false;
|
|
136
|
-
}
|
|
137
|
-
lrMutate(lrMutations, options) {
|
|
138
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
139
|
-
if (lrMutations instanceof Array) {
|
|
140
|
-
const merged = LrMergedMutation.create(yield Promise.all(lrMutations));
|
|
141
|
-
yield this.lrMutateImpl(merged, options);
|
|
142
|
-
return merged.promise;
|
|
143
|
-
}
|
|
144
|
-
else {
|
|
145
|
-
const resolved = yield lrMutations;
|
|
146
|
-
yield this.lrMutateImpl(resolved, options);
|
|
147
|
-
return resolved.promise;
|
|
148
|
-
}
|
|
149
|
-
});
|
|
150
|
-
}
|
|
151
|
-
};
|
|
152
|
-
LrGraphQLService.ɵprov = i0.ɵɵdefineInjectable({ factory: function LrGraphQLService_Factory() { return new LrGraphQLService(i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(i1.Apollo), i0.ɵɵinject(i2.KeyGraphService), i0.ɵɵinject(i3.QueryProcessorService)); }, token: LrGraphQLService, providedIn: "root" });
|
|
153
|
-
LrGraphQLService.decorators = [
|
|
154
|
-
{ type: Injectable, args: [{
|
|
155
|
-
providedIn: 'root',
|
|
156
|
-
},] }
|
|
157
|
-
];
|
|
158
|
-
LrGraphQLService.ctorParameters = () => [
|
|
159
|
-
{ type: NgZone },
|
|
160
|
-
{ type: Apollo },
|
|
161
|
-
{ type: KeyGraphService },
|
|
162
|
-
{ type: QueryProcessorService }
|
|
163
|
-
];
|
|
164
|
-
LrGraphQLService = __decorate([
|
|
165
|
-
RunOutsideAngular({
|
|
166
|
-
ngZoneName: 'ngZone',
|
|
167
|
-
})
|
|
168
|
-
], LrGraphQLService);
|
|
169
|
-
export { LrGraphQLService };
|
|
170
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibHItZ3JhcGhxbC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL2FwaS9sci1ncmFwaHFsL2xyLWdyYXBocWwuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBUW5ELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QyxPQUFPLEdBQUcsTUFBTSxhQUFhLENBQUM7QUFDOUIsT0FBTyxLQUFLLFVBQVUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFOUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBcUIsTUFBTSxtQkFBbUIsQ0FBQztBQUM3RSxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLG1CQUFtQixFQUNuQixzQkFBc0IsR0FDdkIsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDOUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFdEUsT0FBTyxFQUFvQixxQkFBcUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7OztBQUd4RCxrQkFBa0I7QUFDbEIsNkVBQTZFO0FBQzdFLE1BQU0seUJBQXlCLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQTs7SUFFMUMsYUFBYTs7Q0FFaEIsQ0FBQyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFjLENBQUM7QUFFM0MsTUFB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TyxDQUFDLENBQUM7Z0JBQzNDLE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQzthQUN6QjtRQUNILENBQUM7S0FBQTtDQUNGLENBQUE7OztZQTVPQSxVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7OztZQTFGb0IsTUFBTTtZQVFsQixNQUFNO1lBSU4sZUFBZTtZQVlHLHFCQUFxQjs7QUFtRW5DLGdCQUFnQjtJQU41QixpQkFBaUIsQ0FBQztRQUNqQixVQUFVLEVBQUUsUUFBUTtLQUNyQixDQUFDO0dBSVcsZ0JBQWdCLENBeU81QjtTQXpPWSxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEZldGNoUG9saWN5LFxuICBNdXRhdGlvbk9wdGlvbnMsXG4gIE9wZXJhdGlvblZhcmlhYmxlcyxcbiAgUXVlcnlPcHRpb25zLFxufSBmcm9tICdAYXBvbGxvL2NsaWVudC9jb3JlJztcbmltcG9ydCB7IE11dGF0aW9uQmFzZU9wdGlvbnMgfSBmcm9tICdAYXBvbGxvL2NsaWVudC9jb3JlL3dhdGNoUXVlcnlPcHRpb25zJztcbmltcG9ydCB7IEFwb2xsbyB9IGZyb20gJ2Fwb2xsby1hbmd1bGFyJztcbmltcG9ydCB7IEZpZWxkTm9kZSB9IGZyb20gJ2dyYXBocWwnO1xuaW1wb3J0IGdxbCBmcm9tICdncmFwaHFsLXRhZyc7XG5pbXBvcnQgKiBhcyBncWxQcmludGVyIGZyb20gJ2dyYXBocWwvbGFuZ3VhZ2UvcHJpbnRlcic7XG5pbXBvcnQgeyBLZXlHcmFwaFNlcnZpY2UgfSBmcm9tICcuLi8uLi9rZXkva2V5LWdyYXBoLnNlcnZpY2UnO1xuaW1wb3J0IHsgSGFzS2V5R3JhcGggfSBmcm9tICcuLi8uLi9rZXkva2V5LnR5cGVzJztcbmltcG9ydCB7IGxvZGFzaCB9IGZyb20gJy4uLy4uL19jb21tb24nO1xuaW1wb3J0IHsgZ2V0TXV0YXRpb24sIGdldFF1ZXJ5LCBUeXBlZERvY3VtZW50Tm9kZSB9IGZyb20gJy4uLy4uL19jb21tb24vYXN0JztcbmltcG9ydCB7XG4gIGhhbmRsZUFwb2xsb0Vycm9yLFxuICBLY0JhZFN0YXRlRXhjZXB0aW9uLFxuICBLY1Vuc3VwcG9ydGVkRXhjZXB0aW9uLFxufSBmcm9tICcuLi8uLi9fY29tbW9uL2V4Y2VwdGlvbnMnO1xuaW1wb3J0IHsgRmV0Y2hLZXlHcmFwaEZpZWxkLCBLZXlHcmFwaEZpZWxkIH0gZnJvbSAnLi4vLi4vX2NvbW1vbi9xdWVyaWVzLmdxbCc7XG5pbXBvcnQgeyBSdW5PdXRzaWRlQW5ndWxhciB9IGZyb20gJy4uLy4uL19jb21tb24vcnVuLW91dHNpZGUtYW5ndWxhcic7XG5pbXBvcnQgeyBNYXlBc3luYyB9IGZyb20gJy4uLy4uL19jb21tb24vdHlwZXMnO1xuaW1wb3J0IHsgUHJvY2Vzc29yT3B0aW9ucywgUXVlcnlQcm9jZXNzb3JTZXJ2aWNlIH0gZnJvbSAnLi4vcXVlcnktcHJvY2Vzc29yJztcbmltcG9ydCB7IExyTWVyZ2VkTXV0YXRpb24gfSBmcm9tICcuL2xyLW1lcmdlZC1tdXRhdGlvbic7XG5pbXBvcnQgeyBMck11dGF0aW9uQmFzZSB9IGZyb20gJy4vbHItbXV0YXRpb24tYmFzZSc7XG5cbi8vIERhdGEgc3RydWN0dXJlc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmNvbnN0IGtleUdyYXBoRmllbGRBc3RTZWxlY3Rpb24gPSBnZXRRdWVyeShncWxgXG5xdWVyeSB7XG4gICR7S2V5R3JhcGhGaWVsZH1cbn1cbmApLnNlbGVjdGlvblNldC5zZWxlY3Rpb25zWzBdIGFzIEZpZWxkTm9kZTtcblxuY29uc3QgZmV0Y2hLZXlHcmFwaEZpZWxkQXN0U2VsZWN0aW9uID0gZ2V0UXVlcnkoZ3FsYFxucXVlcnkge1xuICAke0ZldGNoS2V5R3JhcGhGaWVsZH1cbn1cbmApLnNlbGVjdGlvblNldC5zZWxlY3Rpb25zWzBdIGFzIEZpZWxkTm9kZTtcblxuLy8gY29uc3Qga2V5R3JhcGhGaWVsZEFzdFNlbGVjdGlvbiA9ICgpID0+XG4vLyAgIGxvZGFzaC5kZWVwQ2xvbmUoX2tleUdyYXBoRmllbGRBc3RTZWxlY3Rpb24pIGFzIEZpZWxkTm9kZTtcbi8vIGNvbnN0IGZldGNoS2V5R3JhcGhGaWVsZEFzdFNlbGVjdGlvbiA9ICgpID0+XG4vLyAgIGxvZGFzaC5kZWVwQ2xvbmUoX2ZldGNoS2V5R3JhcGhGaWVsZEFzdFNlbGVjdGlvbikgYXMgRmllbGROb2RlO1xuXG5leHBvcnQgaW50ZXJmYWNlIExyUXVlcnlPcHRpb25zPFQsIFRWYXJpYWJsZXM+XG4gIGV4dGVuZHMgUXVlcnlPcHRpb25zPFRWYXJpYWJsZXM+IHtcbiAgcXVlcnk6IFR5cGVkRG9jdW1lbnROb2RlPFQ+O1xuICBpbmNsdWRlS2V5R3JhcGg/OiBib29sZWFuO1xuICBuYW1lPzogc3RyaW5nO1xuICBwcm9jZXNzb3JPcHRpb25zPzogUHJvY2Vzc29yT3B0aW9ucztcbn1cblxuLy8gQ29waWVkIGZyb20gTXV0YXRpb25PcHRpb25zXG4vLyBSZW1vdmVkIHJlcXVpcmVkIGZpZWxkIFwibXV0YXRpb25cIi4gVGhlIFwidmFyaWFibGVzXCIgZmllbGQgaXMgc3RpbGwgdGhlcmVcbi8vIGJ1dCBpdCdzIGR5bmFtaWNhbGx5IGNoZWNrZWQuXG5leHBvcnQgaW50ZXJmYWNlIExyTXV0YXRpb25PcHRpb25zPFxuICBUID0ge1xuICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgfSxcbiAgVFZhcmlhYmxlcyA9IE9wZXJhdGlvblZhcmlhYmxlc1xuPiBleHRlbmRzIE11dGF0aW9uQmFzZU9wdGlvbnM8VCwgVFZhcmlhYmxlcz4ge1xuICBjb250ZXh0PzogYW55O1xuICBmZXRjaFBvbGljeT86IEZldGNoUG9saWN5O1xuICBpbmNsdWRlS2V5R3JhcGg/OiBib29sZWFuO1xuICBuYW1lPzogc3RyaW5nO1xufVxuXG4vLyBUaGUgXCJtdXRhdGlvblwiIGFuZCBcInZhcmlhYmxlXCIgZmllbGRzIGFyZSBpbmhlcml0ZWQgYnV0IGR5bmFtaWNhbGx5IHByb2hpYml0ZWQgYmVjYXVzZVxuLy8gdGhleSBhcmUgcHJvdmlkZWQgYnkgTHJNdXRhdGlvbi4gSXQncyBhIGJpdCB1bmNsZWFuIGJ1dCBhdm9pZHMgYSBsb3Qgb2YgdHlwaW5nIHdvcmsuXG5leHBvcnQgaW50ZXJmYWNlIExyQXBvbGxvTXV0YXRpb25PcHRpb25zPFQsIFRWYXJpYWJsZXMgPSBPcGVyYXRpb25WYXJpYWJsZXM+XG4gIGV4dGVuZHMgTXV0YXRpb25PcHRpb25zPFQsIFRWYXJpYWJsZXM+IHtcbiAgbXV0YXRpb246IFR5cGVkRG9jdW1lbnROb2RlPFQ+O1xuICBpbmNsdWRlS2V5R3JhcGg/OiBib29sZWFuO1xuICBuYW1lPzogc3RyaW5nO1xuICBwcm9jZXNzb3JPcHRpb25zPzogUHJvY2Vzc29yT3B0aW9ucztcbn1cblxuaW50ZXJmYWNlIExyR3JhcGhRTFNlcnZpY2VTdGF0cyB7XG4gIHF1ZXJ5Q291bnQ6IG51bWJlcjtcbiAgbXV0YXRpb25Db3VudDogbnVtYmVyO1xufVxuXG5AUnVuT3V0c2lkZUFuZ3VsYXIoe1xuICBuZ1pvbmVOYW1lOiAnbmdab25lJyxcbn0pXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTHJHcmFwaFFMU2VydmljZSB7XG4gIHByaXZhdGUgc3RhdHM6IExyR3JhcGhRTFNlcnZpY2VTdGF0cyA9IHtcbiAgICBxdWVyeUNvdW50OiAwLFxuICAgIG11dGF0aW9uQ291bnQ6IDAsXG4gIH07XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIGFwb2xsbzogQXBvbGxvLFxuICAgIHByaXZhdGUga2V5R3JhcGg6IEtleUdyYXBoU2VydmljZSxcbiAgICBwcml2YXRlIHF1ZXJ5UHJvY2Vzc29yOiBRdWVyeVByb2Nlc3NvclNlcnZpY2VcbiAgKSB7fVxuXG4gIGFzeW5jIHF1ZXJ5PFQsIFYgPSB7IFtrZXk6IHN0cmluZ106IGFueSB9PihcbiAgICBvcHRpb25zOiBMclF1ZXJ5T3B0aW9uczxULCBWPlxuICApOiBQcm9taXNlPFQ+IHtcbiAgICAvLyBNYWtlIGNvcGllcyB0byBhdm9pZCBzaWRlIGVmZmVjdC5cbiAgICBvcHRpb25zID0gbG9kYXNoLmNsb25lRGVlcChvcHRpb25zKTtcblxuICAgIC8vIEFwcGVuZCB0aGUga2V5IGdyYXBoIHF1ZXJ5XG4gICAgY29uc3QgaW5jbHVkZUtleUdyYXBoID0gdGhpcy5pc0luY2x1ZGVLZXlHcmFwaChvcHRpb25zLmluY2x1ZGVLZXlHcmFwaCk7XG4gICAgaWYgKGluY2x1ZGVLZXlHcmFwaCkge1xuICAgICAgY29uc3Qgb3BlcmF0aW9uID0gZ2V0UXVlcnkob3B0aW9ucy5xdWVyeSk7XG4gICAgICBvcGVyYXRpb24uc2VsZWN0aW9uU2V0LnNlbGVjdGlvbnMgPSBbXG4gICAgICAgIC4uLm9wZXJhdGlvbi5zZWxlY3Rpb25TZXQuc2VsZWN0aW9ucyxcbiAgICAgICAga2V5R3JhcGhGaWVsZEFzdFNlbGVjdGlvbixcbiAgICAgIF07XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMubmFtZSkge1xuICAgICAgY29uc3Qgb3BlcmF0aW9uID0gZ2V0UXVlcnkob3B0aW9ucy5xdWVyeSk7XG4gICAgICAob3BlcmF0aW9uLm5hbWUgYXMgYW55KSA9IHtcbiAgICAgICAga2luZDogJ05hbWUnLFxuICAgICAgICB2YWx1ZTogb3B0aW9ucy5uYW1lLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuYXBvbGxvLnF1ZXJ5PFQsIFY+KG9wdGlvbnMpLnRvUHJvbWlzZSgpO1xuXG4gICAgdGhpcy5zdGF0cy5xdWVyeUNvdW50Kys7XG5cbiAgICBoYW5kbGVBcG9sbG9FcnJvcihyZXNwb25zZS5lcnJvcnMpO1xuXG4gICAgdGhpcy5hZGRLZXlzKHJlc3BvbnNlKTtcblxuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLnF1ZXJ5UHJvY2Vzc29yLnByb2Nlc3NRdWVyeShcbiAgICAgIHJlc3BvbnNlLmRhdGEsXG4gICAgICBvcHRpb25zLnByb2Nlc3Nvck9wdGlvbnNcbiAgICApO1xuXG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGxyTXV0YXRlSW1wbChsck11dGF0aW9uLCBvcHRpb25zPykge1xuICAgIGlmIChvcHRpb25zPy52YXJpYWJsZXMpIHtcbiAgICAgIHRocm93IG5ldyBLY1Vuc3VwcG9ydGVkRXhjZXB0aW9uKFxuICAgICAgICAnVW5zdXBwb3J0ZWQgZmllbGQ6IFwib3B0aW9ucy52YXJpYWJsZXNcIidcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKGxyTXV0YXRpb24uZXhlY3V0ZWQpIHtcbiAgICAgIHRocm93IG5ldyBLY0JhZFN0YXRlRXhjZXB0aW9uKFxuICAgICAgICAnTHJNdXRhdGlvbiBoYXMgYWxyZWFkeSBleGVjdXRlZC4gTHJNdXRhdGlvbiBjYW4gb25seSBiZSB1c2VkIG9uY2UgaW4gYSBsck11dGF0ZSgpIGNhbGwuIENyZWF0ZSBuZXcgaW5zdGFuY2VzIG9mIExyTXV0YXRpb24uJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICBsck11dGF0aW9uLnNldEV4ZWN1dGVkKCk7XG5cbiAgICByZXR1cm4gdGhpcy5hcG9sbG9NdXRhdGUoe1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIC4uLmxyTXV0YXRpb24ubHJNdXRhdGlvbkRhdGEsXG4gICAgfSlcbiAgICAgIC50aGVuKChyZXMpID0+IHtcbiAgICAgICAgLy8gUmVzb2x2ZSBwcm9taXNlcyBzZXQgb24gdGhlIGxyTXV0YXRpb24gcmF0aGVyIHRoYW4gdGhlIGxyTXV0YXRlKCkgY2FsbC5cbiAgICAgICAgbHJNdXRhdGlvbi5yZXNvbHZlKHJlcyk7XG4gICAgICAgIC8vIFN0aWxsIG5lZWQgdG8gcmV0dXJuIHZhbHVlIHRvIHRoZSBwcm9taXNlIHdhaXRpbmcgZm9yIHRoZSByZXN1bHRzIG9mIGxyTXV0YXRlKCkuXG4gICAgICAgIHJldHVybiByZXM7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICBsck11dGF0aW9uLnJlamVjdChlcnJvcik7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfSk7XG4gIH1cblxuICBhc3luYyBhcG9sbG9NdXRhdGU8VCBleHRlbmRzIGFueSwgVFZhcmlhYmxlcyA9IHsgW2tleTogc3RyaW5nXTogYW55IH0+KFxuICAgIG9wdGlvbnM6IExyQXBvbGxvTXV0YXRpb25PcHRpb25zPFQsIFRWYXJpYWJsZXM+XG4gICk6IFByb21pc2U8VD4ge1xuICAgIC8vIE1ha2UgY29waWVzIHRvIGF2b2lkIHNpZGUgZWZmZWN0LlxuICAgIG9wdGlvbnMgPSB7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgbXV0YXRpb246IGxvZGFzaC5jbG9uZURlZXAob3B0aW9ucy5tdXRhdGlvbiksXG4gICAgfTtcblxuICAgIC8vIEFwcGVuZCB0aGUga2V5IGdyYXBoIHF1ZXJ5XG4gICAgY29uc3QgaW5jbHVkZUtleUdyYXBoID0gdGhpcy5pc0luY2x1ZGVLZXlHcmFwaChvcHRpb25zLmluY2x1ZGVLZXlHcmFwaCk7XG5cbiAgICBpZiAoaW5jbHVkZUtleUdyYXBoKSB7XG4gICAgICBjb25zdCBvcGVyYXRpb24gPSBnZXRNdXRhdGlvbihvcHRpb25zLm11dGF0aW9uKTtcbiAgICAgIG9wZXJhdGlvbi5zZWxlY3Rpb25TZXQuc2VsZWN0aW9ucyA9IFtcbiAgICAgICAgLi4ub3BlcmF0aW9uLnNlbGVjdGlvblNldC5zZWxlY3Rpb25zLFxuICAgICAgICBmZXRjaEtleUdyYXBoRmllbGRBc3RTZWxlY3Rpb24sXG4gICAgICBdO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLm5hbWUpIHtcbiAgICAgIGNvbnN0IG9wZXJhdGlvbiA9IGdldE11dGF0aW9uKG9wdGlvbnMubXV0YXRpb24pO1xuICAgICAgKG9wZXJhdGlvbi5uYW1lIGFzIGFueSkgPSB7XG4gICAgICAgIGtpbmQ6ICdOYW1lJyxcbiAgICAgICAgdmFsdWU6IG9wdGlvbnMubmFtZSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gRm9ybWF0IHRvIHN0cmluZyBhbmQgcGFyc2UgYWdhaW4uIFRoaXMgYWxsb3dzIHRoZSBcImxvY1wiOiB7IFwic3RhcnRcIjogLi4uIH1cbiAgICAvLyBwYXJ0IG9mIHRoZSBEb2N1bWVudE5vZGUgdG8gYmUgY29ycmVjdGx5IHNldHVwLiBJdCdzIGV4dHJhIHByb2Nlc3NpbmdcbiAgICAvLyBpbiBzZXJpYWxpc2luZyBhbmQgcGFyc2luZywgYnV0IHByb2JhYmx5IG1pbmltYWwgb3ZlcmhlYWQuXG4gICAgb3B0aW9ucy5tdXRhdGlvbiA9IGdxbChncWxQcmludGVyLnByaW50KG9wdGlvbnMubXV0YXRpb24pKTtcblxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5hcG9sbG8ubXV0YXRlPFQ+KG9wdGlvbnMpLnRvUHJvbWlzZSgpO1xuXG4gICAgdGhpcy5zdGF0cy5tdXRhdGlvbkNvdW50Kys7XG5cbiAgICBoYW5kbGVBcG9sbG9FcnJvcihyZXNwb25zZS5lcnJvcnMpO1xuXG4gICAgdGhpcy5hZGRLZXlzKHJlc3BvbnNlKTtcblxuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLnF1ZXJ5UHJvY2Vzc29yLnByb2Nlc3NRdWVyeShcbiAgICAgIHJlc3BvbnNlLmRhdGEsXG4gICAgICBvcHRpb25zLnByb2Nlc3Nvck9wdGlvbnNcbiAgICApO1xuXG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBzdGF0c1NuYXBzaG90KCk6IExyR3JhcGhRTFNlcnZpY2VTdGF0cyB7XG4gICAgcmV0dXJuIGxvZGFzaC5jbG9uZURlZXAodGhpcy5zdGF0cyk7XG4gIH1cblxuICBwcml2YXRlIGFkZEtleXMocmVzcG9uc2UpIHtcbiAgICBpZiAoKHJlc3BvbnNlLmRhdGEgYXMgSGFzS2V5R3JhcGgpLmtleUdyYXBoKSB7XG4gICAgICB0aGlzLmtleUdyYXBoLmFkZEtleXMoKHJlc3BvbnNlLmRhdGEgYXMgSGFzS2V5R3JhcGgpLmtleUdyYXBoKTtcbiAgICAgIGRlbGV0ZSByZXNwb25zZS5kYXRhLmtleUdyYXBoO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaXNJbmNsdWRlS2V5R3JhcGgoaW5jbHVkZUtleUdyYXBoKSB7XG4gICAgLy8gRGVmYXVsdCB0byB0cnVlIHdoZW4gbnVsbCBvciB1bmRlZmluZWQuXG4gICAgcmV0dXJuIGluY2x1ZGVLZXlHcmFwaCA9PSBudWxsID8gdHJ1ZSA6IGZhbHNlO1xuICB9XG5cbiAgYXN5bmMgbHJNdXRhdGU8VDEsIFRWYXJpYWJsZXMxLCBUMiwgVFZhcmlhYmxlczI+KFxuICAgIGxyTXV0YXRpb25zOiBbXG4gICAgICBMck11dGF0aW9uTWF5QXN5bmM8VDEsIFRWYXJpYWJsZXMxPixcbiAgICAgIExyTXV0YXRpb25NYXlBc3luYzxUMiwgVFZhcmlhYmxlczI+XG4gICAgXSxcbiAgICBvcHRpb25zPzogTHJNdXRhdGlvbk9wdGlvbnNcbiAgKTogUHJvbWlzZTxbVDEsIFQyXT47XG5cbiAgYXN5bmMgbHJNdXRhdGU8VDEsIFRWYXJpYWJsZXMxLCBUMiwgVFZhcmlhYmxlczIsIFQzLCBUVmFyaWFibGVzMz4oXG4gICAgbHJNdXRhdGlvbnM6IFtcbiAgICAgIExyTXV0YXRpb25NYXlBc3luYzxUMSwgVFZhcmlhYmxlczE+LFxuICAgICAgTHJNdXRhdGlvbk1heUFzeW5jPFQyLCBUVmFyaWFibGVzMj4sXG4gICAgICBMck11dGF0aW9uTWF5QXN5bmM8VDMsIFRWYXJpYWJsZXMzPlxuICAgIF0sXG4gICAgb3B0aW9ucz86IExyTXV0YXRpb25PcHRpb25zXG4gICk6IFByb21pc2U8W1QxLCBUMiwgVDNdPjtcblxuICBhc3luYyBsck11dGF0ZTxcbiAgICBUMSxcbiAgICBUVmFyaWFibGVzMSxcbiAgICBUMixcbiAgICBUVmFyaWFibGVzMixcbiAgICBUMyxcbiAgICBUVmFyaWFibGVzMyxcbiAgICBUNCxcbiAgICBUVmFyaWFibGVzNFxuICA+KFxuICAgIGxyTXV0YXRpb25zOiBbXG4gICAgICBMck11dGF0aW9uTWF5QXN5bmM8VDEsIFRWYXJpYWJsZXMxPixcbiAgICAgIExyTXV0YXRpb25NYXlBc3luYzxUMiwgVFZhcmlhYmxlczI+LFxuICAgICAgTHJNdXRhdGlvbk1heUFzeW5jPFQzLCBUVmFyaWFibGVzMz4sXG4gICAgICBMck11dGF0aW9uTWF5QXN5bmM8VDQsIFRWYXJpYWJsZXM0PlxuICAgIF0sXG4gICAgb3B0aW9ucz86IExyTXV0YXRpb25PcHRpb25zXG4gICk6IFByb21pc2U8W1QxLCBUMiwgVDMsIFQ0XT47XG5cbiAgYXN5bmMgbHJNdXRhdGU8XG4gICAgVDEsXG4gICAgVFZhcmlhYmxlczEsXG4gICAgVDIsXG4gICAgVFZhcmlhYmxlczIsXG4gICAgVDMsXG4gICAgVFZhcmlhYmxlczMsXG4gICAgVDQsXG4gICAgVFZhcmlhYmxlczQsXG4gICAgVDUsXG4gICAgVFZhcmlhYmxlczVcbiAgPihcbiAgICBsck11dGF0aW9uczogW1xuICAgICAgTHJNdXRhdGlvbk1heUFzeW5jPFQxLCBUVmFyaWFibGVzMT4sXG4gICAgICBMck11dGF0aW9uTWF5QXN5bmM8VDIsIFRWYXJpYWJsZXMyPixcbiAgICAgIExyTXV0YXRpb25NYXlBc3luYzxUMywgVFZhcmlhYmxlczM+LFxuICAgICAgTHJNdXRhdGlvbk1heUFzeW5jPFQ0LCBUVmFyaWFibGVzND4sXG4gICAgICBMck11dGF0aW9uTWF5QXN5bmM8VDUsIFRWYXJpYWJsZXM1PlxuICAgIF0sXG4gICAgb3B0aW9ucz86IExyTXV0YXRpb25PcHRpb25zXG4gICk6IFByb21pc2U8W1QxLCBUMiwgVDMsIFQ0LCBUNV0+O1xuXG4gIGFzeW5jIGxyTXV0YXRlPFQsIFRWYXJpYWJsZXMgPSB7IFtrZXk6IHN0cmluZ106IGFueSB9PihcbiAgICBsck11dGF0aW9uOiBMck11dGF0aW9uTWF5QXN5bmM8VCwgVFZhcmlhYmxlcz4sXG4gICAgb3B0aW9ucz86IExyTXV0YXRpb25PcHRpb25zPFQsIFRWYXJpYWJsZXM+XG4gICk6IFByb21pc2U8VD47XG5cbiAgYXN5bmMgbHJNdXRhdGU8VCwgVFZhcmlhYmxlcyA9IHsgW2tleTogc3RyaW5nXTogYW55IH0+KFxuICAgIGxyTXV0YXRpb25zOiBMck11dGF0aW9uTWF5QXN5bmM8VCwgVFZhcmlhYmxlcz5bXSxcbiAgICBvcHRpb25zPzogTHJNdXRhdGlvbk9wdGlvbnNcbiAgKTtcblxuICBhc3luYyBsck11dGF0ZTxULCBUVmFyaWFibGVzID0geyBba2V5OiBzdHJpbmddOiBhbnkgfT4oXG4gICAgbHJNdXRhdGlvbnM6XG4gICAgICB8IExyTXV0YXRpb25NYXlBc3luYzxULCBUVmFyaWFibGVzPltdXG4gICAgICB8IExyTXV0YXRpb25NYXlBc3luYzxULCBUVmFyaWFibGVzPixcbiAgICBvcHRpb25zPzogTHJNdXRhdGlvbk9wdGlvbnNcbiAgKSB7XG4gICAgaWYgKGxyTXV0YXRpb25zIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgIGNvbnN0IG1lcmdlZCA9IExyTWVyZ2VkTXV0YXRpb24uY3JlYXRlKGF3YWl0IFByb21pc2UuYWxsKGxyTXV0YXRpb25zKSk7XG4gICAgICBhd2FpdCB0aGlzLmxyTXV0YXRlSW1wbChtZXJnZWQsIG9wdGlvbnMpO1xuICAgICAgcmV0dXJuIG1lcmdlZC5wcm9taXNlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCByZXNvbHZlZCA9IGF3YWl0IGxyTXV0YXRpb25zO1xuICAgICAgYXdhaXQgdGhpcy5sck11dGF0ZUltcGwocmVzb2x2ZWQsIG9wdGlvbnMpO1xuICAgICAgcmV0dXJuIHJlc29sdmVkLnByb21pc2U7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCB0eXBlIExyTXV0YXRpb25NYXlBc3luYzxULCBUVmFyaWFibGVzID0gT3BlcmF0aW9uVmFyaWFibGVzPiA9IE1heUFzeW5jPFxuICBMck11dGF0aW9uQmFzZTxULCBUVmFyaWFibGVzPlxuPjtcbiJdfQ==
|
|
@@ -1,216 +0,0 @@
|
|
|
1
|
-
import { lodash } from '../../_common';
|
|
2
|
-
import * as ast from '../../_common/ast';
|
|
3
|
-
import { getAliasOrName, getFragments, getMutation } from '../../_common/ast';
|
|
4
|
-
import { KcBadLogicException, KcUnsupportedException, } from '../../_common/exceptions';
|
|
5
|
-
import { LrMutation } from './lr-mutation';
|
|
6
|
-
import { LrMutationBase } from './lr-mutation-base';
|
|
7
|
-
const lrMergedMutationDoc = {
|
|
8
|
-
kind: 'Document',
|
|
9
|
-
definitions: [
|
|
10
|
-
{
|
|
11
|
-
kind: 'OperationDefinition',
|
|
12
|
-
operation: 'mutation',
|
|
13
|
-
name: {
|
|
14
|
-
kind: 'Name',
|
|
15
|
-
value: 'lrMergedMutation',
|
|
16
|
-
},
|
|
17
|
-
variableDefinitions: [],
|
|
18
|
-
directives: [],
|
|
19
|
-
selectionSet: {
|
|
20
|
-
kind: 'SelectionSet',
|
|
21
|
-
selections: [],
|
|
22
|
-
},
|
|
23
|
-
},
|
|
24
|
-
],
|
|
25
|
-
};
|
|
26
|
-
export class LrMergedMutation extends LrMutationBase {
|
|
27
|
-
constructor(lrMutations) {
|
|
28
|
-
super();
|
|
29
|
-
this.lrMutations = lrMutations;
|
|
30
|
-
const { mutation, variables, prefixes } = this.merge();
|
|
31
|
-
this.mutation = mutation;
|
|
32
|
-
this.variables = variables;
|
|
33
|
-
this.prefixes = prefixes;
|
|
34
|
-
this.descendants = this.getDescendants();
|
|
35
|
-
}
|
|
36
|
-
static create(lrMutations) {
|
|
37
|
-
return new LrMergedMutation(lrMutations);
|
|
38
|
-
}
|
|
39
|
-
getDescendants() {
|
|
40
|
-
const ret = new Set();
|
|
41
|
-
const addOrThrow = (item) => {
|
|
42
|
-
if (ret.has(item)) {
|
|
43
|
-
throw new KcBadLogicException('Classes that are derived from LrMutationBase can not be used more than once in a merged mutation.');
|
|
44
|
-
}
|
|
45
|
-
ret.add(item);
|
|
46
|
-
};
|
|
47
|
-
this.lrMutations.forEach((lrMutation) => {
|
|
48
|
-
if (lrMutation instanceof LrMutation) {
|
|
49
|
-
addOrThrow(lrMutation);
|
|
50
|
-
}
|
|
51
|
-
else if (lrMutation instanceof LrMergedMutation) {
|
|
52
|
-
lrMutation.descendants.forEach((t) => addOrThrow(t));
|
|
53
|
-
}
|
|
54
|
-
else {
|
|
55
|
-
throw new KcUnsupportedException(`LrMergeMutation can not handle class: ${lrMutation.constructor.name}`);
|
|
56
|
-
}
|
|
57
|
-
});
|
|
58
|
-
return ret;
|
|
59
|
-
}
|
|
60
|
-
resolve(value) {
|
|
61
|
-
// Resolves any promises waiting for the child mutations
|
|
62
|
-
for (let i = 0; i < this.lrMutations.length; ++i) {
|
|
63
|
-
const prefix = this.prefixes[i];
|
|
64
|
-
// Remove the prefix and resolve child mutation.
|
|
65
|
-
const res = {};
|
|
66
|
-
for (const key2 in value) {
|
|
67
|
-
if (key2.startsWith(prefix)) {
|
|
68
|
-
const originalKey = key2.slice(prefix.length);
|
|
69
|
-
res[originalKey] = value[key2];
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
this.lrMutations[i].resolve(res);
|
|
73
|
-
}
|
|
74
|
-
// Resolves to the result of children
|
|
75
|
-
Promise.all(this.lrMutations.map((m) => m.promise)).then((childValues) => {
|
|
76
|
-
// Resolves any promises waiting for the current merged mutation
|
|
77
|
-
super.resolve(childValues);
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
reject(reason) {
|
|
81
|
-
super.reject(reason);
|
|
82
|
-
this.lrMutations.forEach((lrMutation) => lrMutation.reject(reason));
|
|
83
|
-
}
|
|
84
|
-
setExecuted() {
|
|
85
|
-
super.setExecuted();
|
|
86
|
-
this.lrMutations.forEach((lrMutation) => lrMutation.setExecuted());
|
|
87
|
-
}
|
|
88
|
-
renameVariableDefinition(varDef, prefix) {
|
|
89
|
-
return Object.assign(Object.assign({}, varDef), { variable: Object.assign(Object.assign({}, varDef.variable), { name: ast.name(prefix + varDef.variable.name.value) }) });
|
|
90
|
-
}
|
|
91
|
-
renameVariableDefinitions(varDefs, prefix) {
|
|
92
|
-
return varDefs.map((varDef) => this.renameVariableDefinition(varDef, prefix));
|
|
93
|
-
}
|
|
94
|
-
renameArgument(arg, prefix) {
|
|
95
|
-
if (arg.value.kind !== 'Variable') {
|
|
96
|
-
return arg;
|
|
97
|
-
}
|
|
98
|
-
return Object.assign(Object.assign({}, arg), { value: Object.assign(Object.assign({}, arg.value), { name: ast.name(prefix + arg.value.name.value) }) });
|
|
99
|
-
}
|
|
100
|
-
renameField(selection, prefix) {
|
|
101
|
-
// Only handling type Field
|
|
102
|
-
if (selection.kind !== 'Field') {
|
|
103
|
-
return selection;
|
|
104
|
-
}
|
|
105
|
-
const alias = prefix + getAliasOrName(selection);
|
|
106
|
-
const args = selection.arguments.map((arg) => this.renameArgument(arg, prefix));
|
|
107
|
-
return Object.assign(Object.assign({}, selection), { alias: {
|
|
108
|
-
kind: 'Name',
|
|
109
|
-
value: alias,
|
|
110
|
-
}, arguments: args });
|
|
111
|
-
}
|
|
112
|
-
renameFragmentSpread(selection, prefix) {
|
|
113
|
-
return Object.assign(Object.assign({}, selection), { name: ast.name(prefix + selection.name.value) });
|
|
114
|
-
}
|
|
115
|
-
processSelection(selection, prefix) {
|
|
116
|
-
switch (selection.kind) {
|
|
117
|
-
case 'FragmentSpread':
|
|
118
|
-
return this.renameFragmentSpread(selection, prefix);
|
|
119
|
-
case 'Field':
|
|
120
|
-
// Continue to process children for nested selections.
|
|
121
|
-
if (selection.selectionSet) {
|
|
122
|
-
return Object.assign(Object.assign({}, selection), { selectionSet: this.processSelectionSet(selection.selectionSet, prefix) });
|
|
123
|
-
}
|
|
124
|
-
else {
|
|
125
|
-
return selection;
|
|
126
|
-
}
|
|
127
|
-
default:
|
|
128
|
-
return selection;
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
processSelectionSet(selectionSet, prefix) {
|
|
132
|
-
return Object.assign(Object.assign({}, selectionSet), { selections: selectionSet.selections.map((selection) => this.processSelection(selection, prefix)) });
|
|
133
|
-
}
|
|
134
|
-
renameSelections(selections, prefix) {
|
|
135
|
-
return selections.map((selection) => {
|
|
136
|
-
switch (selection.kind) {
|
|
137
|
-
case 'Field':
|
|
138
|
-
return this.processSelection(this.renameField(selection, prefix), prefix);
|
|
139
|
-
default:
|
|
140
|
-
return selection;
|
|
141
|
-
}
|
|
142
|
-
});
|
|
143
|
-
}
|
|
144
|
-
renameFragmentDefinition(fragment, prefix) {
|
|
145
|
-
const ret = Object.assign(Object.assign({}, fragment), { name: ast.name(prefix + fragment.name.value) });
|
|
146
|
-
if (fragment.selectionSet) {
|
|
147
|
-
ret.selectionSet = this.processSelectionSet(fragment.selectionSet, prefix);
|
|
148
|
-
}
|
|
149
|
-
return ret;
|
|
150
|
-
}
|
|
151
|
-
renameFragmentDefinitions(fragments, prefix) {
|
|
152
|
-
return fragments.map((fragment) => this.renameFragmentDefinition(fragment, prefix));
|
|
153
|
-
}
|
|
154
|
-
merge() {
|
|
155
|
-
let variableDefinitions = [];
|
|
156
|
-
let selections = [];
|
|
157
|
-
const mergedVariables = {};
|
|
158
|
-
let mergedFragments = [];
|
|
159
|
-
const prefixes = [];
|
|
160
|
-
// Just wait for everything to resolve because we have to
|
|
161
|
-
// merge the doc synchronously.
|
|
162
|
-
this.lrMutations.forEach((lrMutation, idx) => {
|
|
163
|
-
// Sometimes typing won't catch everything. So need to dynamically check the
|
|
164
|
-
// type to be sure.
|
|
165
|
-
if (!(lrMutation instanceof LrMutationBase)) {
|
|
166
|
-
throw new KcBadLogicException('An mutation in the array is not of type LrMutationBase.');
|
|
167
|
-
}
|
|
168
|
-
const { mutation, variables } = lrMutation.lrMutationData;
|
|
169
|
-
const childMutationNode = getMutation(mutation);
|
|
170
|
-
// Prefixing all mutation fields so they don't conflict.
|
|
171
|
-
let prefix = `item${idx}_`;
|
|
172
|
-
if (childMutationNode.name) {
|
|
173
|
-
prefix += childMutationNode.name.value + '_';
|
|
174
|
-
}
|
|
175
|
-
prefixes.push(prefix);
|
|
176
|
-
// Rename and merge variables
|
|
177
|
-
variableDefinitions = [
|
|
178
|
-
...variableDefinitions,
|
|
179
|
-
...this.renameVariableDefinitions(childMutationNode.variableDefinitions, prefix),
|
|
180
|
-
];
|
|
181
|
-
// Rename and merge selections
|
|
182
|
-
selections = [
|
|
183
|
-
...selections,
|
|
184
|
-
...this.renameSelections(childMutationNode.selectionSet.selections, prefix),
|
|
185
|
-
];
|
|
186
|
-
// Rename and merge variables
|
|
187
|
-
for (const key2 of Object.keys(variables)) {
|
|
188
|
-
mergedVariables[prefix + key2] = variables[key2];
|
|
189
|
-
}
|
|
190
|
-
// Rename and merge fragments
|
|
191
|
-
const fragments = getFragments(mutation);
|
|
192
|
-
mergedFragments = [
|
|
193
|
-
...mergedFragments,
|
|
194
|
-
...this.renameFragmentDefinitions(fragments, prefix),
|
|
195
|
-
];
|
|
196
|
-
});
|
|
197
|
-
const mergedMutation = lodash.cloneDeep(lrMergedMutationDoc);
|
|
198
|
-
const mutationNode = getMutation(mergedMutation);
|
|
199
|
-
// Add in the mutation selections
|
|
200
|
-
mutationNode.selectionSet.selections = selections;
|
|
201
|
-
// Add in the variables
|
|
202
|
-
// variableDefinitions is readonly property.
|
|
203
|
-
mutationNode.variableDefinitions = variableDefinitions;
|
|
204
|
-
// Add in the fragments
|
|
205
|
-
mergedMutation.definitions = [
|
|
206
|
-
...mergedMutation.definitions,
|
|
207
|
-
...mergedFragments,
|
|
208
|
-
];
|
|
209
|
-
return {
|
|
210
|
-
mutation: mergedMutation,
|
|
211
|
-
variables: mergedVariables,
|
|
212
|
-
prefixes,
|
|
213
|
-
};
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibHItbWVyZ2VkLW11dGF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL2FwaS9sci1ncmFwaHFsL2xyLW1lcmdlZC1tdXRhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFXQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sS0FBSyxHQUFHLE1BQU0sbUJBQW1CLENBQUM7QUFDekMsT0FBTyxFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUUsT0FBTyxFQUNMLG1CQUFtQixFQUNuQixzQkFBc0IsR0FDdkIsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVwRCxNQUFNLG1CQUFtQixHQUFpQjtJQUN4QyxJQUFJLEVBQUUsVUFBVTtJQUNoQixXQUFXLEVBQUU7UUFDWDtZQUNFLElBQUksRUFBRSxxQkFBcUI7WUFDM0IsU0FBUyxFQUFFLFVBQVU7WUFDckIsSUFBSSxFQUFFO2dCQUNKLElBQUksRUFBRSxNQUFNO2dCQUNaLEtBQUssRUFBRSxrQkFBa0I7YUFDMUI7WUFDRCxtQkFBbUIsRUFBRSxFQUFFO1lBQ3ZCLFVBQVUsRUFBRSxFQUFFO1lBQ2QsWUFBWSxFQUFFO2dCQUNaLElBQUksRUFBRSxjQUFjO2dCQUNwQixVQUFVLEVBQUUsRUFBRTthQUNmO1NBQ0Y7S0FDRjtDQU1GLENBQUM7QUFFRixNQUFNLE9BQU8sZ0JBQW9CLFNBQVEsY0FBaUI7SUFJeEQsWUFBNEIsV0FBa0M7UUFDNUQsS0FBSyxFQUFFLENBQUM7UUFEa0IsZ0JBQVcsR0FBWCxXQUFXLENBQXVCO1FBRzVELE1BQU0sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFFB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LDZCQUE2QjtZQUM3QixLQUFLLE1BQU0sSUFBSSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUU7Z0JBQ3pDLGVBQWUsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ2xEO1lBRUQsNkJBQTZCO1lBQzdCLE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN6QyxlQUFlLEdBQUc7Z0JBQ2hCLEdBQUcsZUFBZTtnQkFDbEIsR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQzthQUNyRCxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLGNBQWMsR0FBaUIsTUFBTSxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQzNFLE1BQU0sWUFBWSxHQUFHLFdBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNqRCxpQ0FBaUM7UUFDakMsWUFBWSxDQUFDLFlBQVksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQ2xELHVCQUF1QjtRQUN2Qiw0Q0FBNEM7UUFDM0MsWUFBb0IsQ0FBQyxtQkFBbUIsR0FBRyxtQkFBbUIsQ0FBQztRQUNoRSx1QkFBdUI7UUFDdEIsY0FBc0IsQ0FBQyxXQUFXLEdBQUc7WUFDcEMsR0FBRyxjQUFjLENBQUMsV0FBVztZQUM3QixHQUFHLGVBQWU7U0FDbkIsQ0FBQztRQUVGLE9BQU87WUFDTCxRQUFRLEVBQUUsY0FBYztZQUN4QixTQUFTLEVBQUUsZUFBZTtZQUMxQixRQUFRO1NBQ1QsQ0FBQztJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7XG4gIEFyZ3VtZW50Tm9kZSxcbiAgRG9jdW1lbnROb2RlLFxuICBGaWVsZE5vZGUsXG4gIEZyYWdtZW50RGVmaW5pdGlvbk5vZGUsXG4gIEZyYWdtZW50U3ByZWFkTm9kZSxcbiAgU2VsZWN0aW9uTm9kZSxcbiAgU2VsZWN0aW9uU2V0Tm9kZSxcbiAgVmFyaWFibGVEZWZpbml0aW9uTm9kZSxcbn0gZnJvbSAnZ3JhcGhxbCc7XG5pbXBvcnQgeyBsb2Rhc2ggfSBmcm9tICcuLi8uLi9fY29tbW9uJztcbmltcG9ydCAqIGFzIGFzdCBmcm9tICcuLi8uLi9fY29tbW9uL2FzdCc7XG5pbXBvcnQgeyBnZXRBbGlhc09yTmFtZSwgZ2V0RnJhZ21lbnRzLCBnZXRNdXRhdGlvbiB9IGZyb20gJy4uLy4uL19jb21tb24vYXN0JztcbmltcG9ydCB7XG4gIEtjQmFkTG9naWNFeGNlcHRpb24sXG4gIEtjVW5zdXBwb3J0ZWRFeGNlcHRpb24sXG59IGZyb20gJy4uLy4uL19jb21tb24vZXhjZXB0aW9ucyc7XG5pbXBvcnQgeyBMck11dGF0aW9uIH0gZnJvbSAnLi9sci1tdXRhdGlvbic7XG5pbXBvcnQgeyBMck11dGF0aW9uQmFzZSB9IGZyb20gJy4vbHItbXV0YXRpb24tYmFzZSc7XG5cbmNvbnN0IGxyTWVyZ2VkTXV0YXRpb25Eb2M6IERvY3VtZW50Tm9kZSA9IHtcbiAga2luZDogJ0RvY3VtZW50JyxcbiAgZGVmaW5pdGlvbnM6IFtcbiAgICB7XG4gICAgICBraW5kOiAnT3BlcmF0aW9uRGVmaW5pdGlvbicsXG4gICAgICBvcGVyYXRpb246ICdtdXRhdGlvbicsXG4gICAgICBuYW1lOiB7XG4gICAgICAgIGtpbmQ6ICdOYW1lJyxcbiAgICAgICAgdmFsdWU6ICdsck1lcmdlZE11dGF0aW9uJyxcbiAgICAgIH0sXG4gICAgICB2YXJpYWJsZURlZmluaXRpb25zOiBbXSxcbiAgICAgIGRpcmVjdGl2ZXM6IFtdLFxuICAgICAgc2VsZWN0aW9uU2V0OiB7XG4gICAgICAgIGtpbmQ6ICdTZWxlY3Rpb25TZXQnLFxuICAgICAgICBzZWxlY3Rpb25zOiBbXSxcbiAgICAgIH0sXG4gICAgfSxcbiAgXSxcbiAgLy8gVE9ETyBXaGF0IHRvIGRvIGFib3V0IHRoZXNlPyBTZXJpYWxpc2UgYW5kIHJlcGFyc2U/XG4gIC8vIFwibG9jXCI6IHtcbiAgLy8gICBcInN0YXJ0XCI6IDAsXG4gIC8vICAgXCJlbmRcIjogMjA0XG4gIC8vIH1cbn07XG5cbmV4cG9ydCBjbGFzcyBMck1lcmdlZE11dGF0aW9uPFQ+IGV4dGVuZHMgTHJNdXRhdGlvbkJhc2U8VD4ge1xuICBwdWJsaWMgcmVhZG9ubHkgZGVzY2VuZGFudHM6IFNldDxMck11dGF0aW9uQmFzZTxhbnk+PjtcbiAgcHJvdGVjdGVkIHByZWZpeGVzOiBzdHJpbmdbXTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgbHJNdXRhdGlvbnM6IExyTXV0YXRpb25CYXNlPGFueT5bXSkge1xuICAgIHN1cGVyKCk7XG5cbiAgICBjb25zdCB7IG11dGF0aW9uLCB2YXJpYWJsZXMsIHByZWZpeGVzIH0gPSB0aGlzLm1lcmdlKCk7XG4gICAgdGhpcy5tdXRhdGlvbiA9IG11dGF0aW9uO1xuICAgIHRoaXMudmFyaWFibGVzID0gdmFyaWFibGVzO1xuICAgIHRoaXMucHJlZml4ZXMgPSBwcmVmaXhlcztcbiAgICB0aGlzLmRlc2NlbmRhbnRzID0gdGhpcy5nZXREZXNjZW5kYW50cygpO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZTxUMSwgVDI+KFxuICAgIGxyTXV0YXRpb25zOiBbXG4gICAgICBMck11dGF0aW9uQmFzZTxUMT4gfCBMck1lcmdlZE11dGF0aW9uPFQxPixcbiAgICAgIExyTXV0YXRpb25CYXNlPFQyPiB8IExyTWVyZ2VkTXV0YXRpb248VDI+XG4gICAgXVxuICApOiBMck1lcmdlZE11dGF0aW9uPFtUMSwgVDJdPjtcblxuICBzdGF0aWMgY3JlYXRlPFQxLCBUMiwgVDM+KFxuICAgIGxyTXV0YXRpb25zOiBbXG4gICAgICBMck11dGF0aW9uQmFzZTxUMT4gfCBMck1lcmdlZE11dGF0aW9uPFQxPixcbiAgICAgIExyTXV0YXRpb25CYXNlPFQyPiB8IExyTWVyZ2VkTXV0YXRpb248VDI+LFxuICAgICAgTHJNdXRhdGlvbkJhc2U8VDM+IHwgTHJNZXJnZWRNdXRhdGlvbjxUMz5cbiAgICBdXG4gICk6IExyTWVyZ2VkTXV0YXRpb248W1QxLCBUMiwgVDNdPjtcblxuICBzdGF0aWMgY3JlYXRlPFQxLCBUMiwgVDMsIFQ0PihcbiAgICBsck11dGF0aW9uczogW1xuICAgICAgTHJNdXRhdGlvbkJhc2U8VDE+IHwgTHJNZXJnZWRNdXRhdGlvbjxUMT4sXG4gICAgICBMck11dGF0aW9uQmFzZTxUMj4gfCBMck1lcmdlZE11dGF0aW9uPFQyPixcbiAgICAgIExyTXV0YXRpb25CYXNlPFQzPiB8IExyTWVyZ2VkTXV0YXRpb248VDM+LFxuICAgICAgTHJNdXRhdGlvbkJhc2U8VDQ+IHwgTHJNZXJnZWRNdXRhdGlvbjxUND5cbiAgICBdXG4gICk6IExyTWVyZ2VkTXV0YXRpb248W1QxLCBUMiwgVDMsIFQ0XT47XG5cbiAgc3RhdGljIGNyZWF0ZTxUMSwgVDIsIFQzLCBUNCwgVDU+KFxuICAgIGxyTXV0YXRpb25zOiBbXG4gICAgICBMck11dGF0aW9uQmFzZTxUMT4gfCBMck1lcmdlZE11dGF0aW9uPFQxPixcbiAgICAgIExyTXV0YXRpb25CYXNlPFQyPiB8IExyTWVyZ2VkTXV0YXRpb248VDI+LFxuICAgICAgTHJNdXRhdGlvbkJhc2U8VDM+IHwgTHJNZXJnZWRNdXRhdGlvbjxUMz4sXG4gICAgICBMck11dGF0aW9uQmFzZTxUND4gfCBMck1lcmdlZE11dGF0aW9uPFQ0PixcbiAgICAgIExyTXV0YXRpb25CYXNlPFQ1PiB8IExyTWVyZ2VkTXV0YXRpb248VDU+XG4gICAgXVxuICApOiBMck1lcmdlZE11dGF0aW9uPFtUMSwgVDIsIFQzLCBUNCwgVDVdPjtcblxuICBzdGF0aWMgY3JlYXRlPFQ+KGxyTXV0YXRpb25zOiBMck11dGF0aW9uQmFzZTxUPltdKTogTHJNZXJnZWRNdXRhdGlvbjxUW10+O1xuXG4gIHN0YXRpYyBjcmVhdGUobHJNdXRhdGlvbnM6IExyTXV0YXRpb25CYXNlPGFueT5bXSk6IExyTWVyZ2VkTXV0YXRpb248YW55W10+O1xuXG4gIHN0YXRpYyBjcmVhdGUobHJNdXRhdGlvbnM6IExyTXV0YXRpb25CYXNlPGFueT5bXSkge1xuICAgIHJldHVybiBuZXcgTHJNZXJnZWRNdXRhdGlvbihsck11dGF0aW9ucyk7XG4gIH1cblxuICBwcml2YXRlIGdldERlc2NlbmRhbnRzKCkge1xuICAgIGNvbnN0IHJldCA9IG5ldyBTZXQ8THJNdXRhdGlvbkJhc2U8YW55Pj4oKTtcblxuICAgIGNvbnN0IGFkZE9yVGhyb3cgPSAoaXRlbSkgPT4ge1xuICAgICAgaWYgKHJldC5oYXMoaXRlbSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEtjQmFkTG9naWNFeGNlcHRpb24oXG4gICAgICAgICAgJ0NsYXNzZXMgdGhhdCBhcmUgZGVyaXZlZCBmcm9tIExyTXV0YXRpb25CYXNlIGNhbiBub3QgYmUgdXNlZCBtb3JlIHRoYW4gb25jZSBpbiBhIG1lcmdlZCBtdXRhdGlvbi4nXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHJldC5hZGQoaXRlbSk7XG4gICAgfTtcblxuICAgIHRoaXMubHJNdXRhdGlvbnMuZm9yRWFjaCgobHJNdXRhdGlvbikgPT4ge1xuICAgICAgaWYgKGxyTXV0YXRpb24gaW5zdGFuY2VvZiBMck11dGF0aW9uKSB7XG4gICAgICAgIGFkZE9yVGhyb3cobHJNdXRhdGlvbik7XG4gICAgICB9IGVsc2UgaWYgKGxyTXV0YXRpb24gaW5zdGFuY2VvZiBMck1lcmdlZE11dGF0aW9uKSB7XG4gICAgICAgIGxyTXV0YXRpb24uZGVzY2VuZGFudHMuZm9yRWFjaCgodCkgPT4gYWRkT3JUaHJvdyh0KSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgS2NVbnN1cHBvcnRlZEV4Y2VwdGlvbihcbiAgICAgICAgICBgTHJNZXJnZU11dGF0aW9uIGNhbiBub3QgaGFuZGxlIGNsYXNzOiAke2xyTXV0YXRpb24uY29uc3RydWN0b3IubmFtZX1gXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcmV0O1xuICB9XG5cbiAgcmVzb2x2ZSh2YWx1ZTogYW55KSB7XG4gICAgLy8gUmVzb2x2ZXMgYW55IHByb21pc2VzIHdhaXRpbmcgZm9yIHRoZSBjaGlsZCBtdXRhdGlvbnNcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubHJNdXRhdGlvbnMubGVuZ3RoOyArK2kpIHtcbiAgICAgIGNvbnN0IHByZWZpeCA9IHRoaXMucHJlZml4ZXNbaV07XG5cbiAgICAgIC8vIFJlbW92ZSB0aGUgcHJlZml4IGFuZCByZXNvbHZlIGNoaWxkIG11dGF0aW9uLlxuICAgICAgY29uc3QgcmVzOiBhbnkgPSB7fTtcbiAgICAgIGZvciAoY29uc3Qga2V5MiBpbiB2YWx1ZSkge1xuICAgICAgICBpZiAoa2V5Mi5zdGFydHNXaXRoKHByZWZpeCkpIHtcbiAgICAgICAgICBjb25zdCBvcmlnaW5hbEtleSA9IGtleTIuc2xpY2UocHJlZml4Lmxlbmd0aCk7XG4gICAgICAgICAgcmVzW29yaWdpbmFsS2V5XSA9IHZhbHVlW2tleTJdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLmxyTXV0YXRpb25zW2ldLnJlc29sdmUocmVzKTtcbiAgICB9XG5cbiAgICAvLyBSZXNvbHZlcyB0byB0aGUgcmVzdWx0IG9mIGNoaWxkcmVuXG4gICAgUHJvbWlzZS5hbGwodGhpcy5sck11dGF0aW9ucy5tYXAoKG0pID0+IG0ucHJvbWlzZSkpLnRoZW4oXG4gICAgICAoY2hpbGRWYWx1ZXM6IGFueSkgPT4ge1xuICAgICAgICAvLyBSZXNvbHZlcyBhbnkgcHJvbWlzZXMgd2FpdGluZyBmb3IgdGhlIGN1cnJlbnQgbWVyZ2VkIG11dGF0aW9uXG4gICAgICAgIHN1cGVyLnJlc29sdmUoY2hpbGRWYWx1ZXMpO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICByZWplY3QocmVhc29uPzogYW55KSB7XG4gICAgc3VwZXIucmVqZWN0KHJlYXNvbik7XG4gICAgdGhpcy5sck11dGF0aW9ucy5mb3JFYWNoKChsck11dGF0aW9uKSA9PiBsck11dGF0aW9uLnJlamVjdChyZWFzb24pKTtcbiAgfVxuXG4gIHNldEV4ZWN1dGVkKCkge1xuICAgIHN1cGVyLnNldEV4ZWN1dGVkKCk7XG4gICAgdGhpcy5sck11dGF0aW9ucy5mb3JFYWNoKChsck11dGF0aW9uKSA9PiBsck11dGF0aW9uLnNldEV4ZWN1dGVkKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW5hbWVWYXJpYWJsZURlZmluaXRpb24odmFyRGVmOiBWYXJpYWJsZURlZmluaXRpb25Ob2RlLCBwcmVmaXgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4udmFyRGVmLFxuICAgICAgdmFyaWFibGU6IHtcbiAgICAgICAgLi4udmFyRGVmLnZhcmlhYmxlLFxuICAgICAgICBuYW1lOiBhc3QubmFtZShwcmVmaXggKyB2YXJEZWYudmFyaWFibGUubmFtZS52YWx1ZSksXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHJlbmFtZVZhcmlhYmxlRGVmaW5pdGlvbnMoXG4gICAgdmFyRGVmczogUmVhZG9ubHlBcnJheTxWYXJpYWJsZURlZmluaXRpb25Ob2RlPixcbiAgICBwcmVmaXhcbiAgKSB7XG4gICAgcmV0dXJuIHZhckRlZnMubWFwKCh2YXJEZWYpID0+XG4gICAgICB0aGlzLnJlbmFtZVZhcmlhYmxlRGVmaW5pdGlvbih2YXJEZWYsIHByZWZpeClcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSByZW5hbWVBcmd1bWVudChhcmc6IEFyZ3VtZW50Tm9kZSwgcHJlZml4KSB7XG4gICAgaWYgKGFyZy52YWx1ZS5raW5kICE9PSAnVmFyaWFibGUnKSB7XG4gICAgICByZXR1cm4gYXJnO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAuLi5hcmcsXG4gICAgICB2YWx1ZToge1xuICAgICAgICAuLi5hcmcudmFsdWUsXG4gICAgICAgIG5hbWU6IGFzdC5uYW1lKHByZWZpeCArIGFyZy52YWx1ZS5uYW1lLnZhbHVlKSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgcmVuYW1lRmllbGQoc2VsZWN0aW9uOiBGaWVsZE5vZGUsIHByZWZpeCk6IEZpZWxkTm9kZSB7XG4gICAgLy8gT25seSBoYW5kbGluZyB0eXBlIEZpZWxkXG4gICAgaWYgKHNlbGVjdGlvbi5raW5kICE9PSAnRmllbGQnKSB7XG4gICAgICByZXR1cm4gc2VsZWN0aW9uO1xuICAgIH1cblxuICAgIGNvbnN0IGFsaWFzID0gcHJlZml4ICsgZ2V0QWxpYXNPck5hbWUoc2VsZWN0aW9uKTtcbiAgICBjb25zdCBhcmdzID0gc2VsZWN0aW9uLmFyZ3VtZW50cy5tYXAoKGFyZykgPT5cbiAgICAgIHRoaXMucmVuYW1lQXJndW1lbnQoYXJnLCBwcmVmaXgpXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5zZWxlY3Rpb24sXG4gICAgICBhbGlhczoge1xuICAgICAgICBraW5kOiAnTmFtZScsXG4gICAgICAgIHZhbHVlOiBhbGlhcyxcbiAgICAgIH0sXG4gICAgICBhcmd1bWVudHM6IGFyZ3MsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgcmVuYW1lRnJhZ21lbnRTcHJlYWQoXG4gICAgc2VsZWN0aW9uOiBGcmFnbWVudFNwcmVhZE5vZGUsXG4gICAgcHJlZml4XG4gICk6IEZyYWdtZW50U3ByZWFkTm9kZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnNlbGVjdGlvbixcbiAgICAgIG5hbWU6IGFzdC5uYW1lKHByZWZpeCArIHNlbGVjdGlvbi5uYW1lLnZhbHVlKSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBwcm9jZXNzU2VsZWN0aW9uKHNlbGVjdGlvbjogU2VsZWN0aW9uTm9kZSwgcHJlZml4KTogU2VsZWN0aW9uTm9kZSB7XG4gICAgc3dpdGNoIChzZWxlY3Rpb24ua2luZCkge1xuICAgICAgY2FzZSAnRnJhZ21lbnRTcHJlYWQnOlxuICAgICAgICByZXR1cm4gdGhpcy5yZW5hbWVGcmFnbWVudFNwcmVhZChzZWxlY3Rpb24sIHByZWZpeCk7XG4gICAgICBjYXNlICdGaWVsZCc6XG4gICAgICAgIC8vIENvbnRpbnVlIHRvIHByb2Nlc3MgY2hpbGRyZW4gZm9yIG5lc3RlZCBzZWxlY3Rpb25zLlxuICAgICAgICBpZiAoc2VsZWN0aW9uLnNlbGVjdGlvblNldCkge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5zZWxlY3Rpb24sXG4gICAgICAgICAgICBzZWxlY3Rpb25TZXQ6IHRoaXMucHJvY2Vzc1NlbGVjdGlvblNldChcbiAgICAgICAgICAgICAgc2VsZWN0aW9uLnNlbGVjdGlvblNldCxcbiAgICAgICAgICAgICAgcHJlZml4XG4gICAgICAgICAgICApLFxuICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHNlbGVjdGlvbjtcbiAgICAgICAgfVxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHNlbGVjdGlvbjtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHByb2Nlc3NTZWxlY3Rpb25TZXQoXG4gICAgc2VsZWN0aW9uU2V0OiBTZWxlY3Rpb25TZXROb2RlLFxuICAgIHByZWZpeFxuICApOiBTZWxlY3Rpb25TZXROb2RlIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc2VsZWN0aW9uU2V0LFxuICAgICAgc2VsZWN0aW9uczogc2VsZWN0aW9uU2V0LnNlbGVjdGlvbnMubWFwKChzZWxlY3Rpb24pID0+XG4gICAgICAgIHRoaXMucHJvY2Vzc1NlbGVjdGlvbihzZWxlY3Rpb24sIHByZWZpeClcbiAgICAgICksXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgcmVuYW1lU2VsZWN0aW9ucyhcbiAgICBzZWxlY3Rpb25zOiBSZWFkb25seUFycmF5PFNlbGVjdGlvbk5vZGU+LFxuICAgIHByZWZpeFxuICApOiBTZWxlY3Rpb25Ob2RlW10ge1xuICAgIHJldHVybiBzZWxlY3Rpb25zLm1hcCgoc2VsZWN0aW9uKSA9PiB7XG4gICAgICBzd2l0Y2ggKHNlbGVjdGlvbi5raW5kKSB7XG4gICAgICAgIGNhc2UgJ0ZpZWxkJzpcbiAgICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzU2VsZWN0aW9uKFxuICAgICAgICAgICAgdGhpcy5yZW5hbWVGaWVsZChzZWxlY3Rpb24sIHByZWZpeCksXG4gICAgICAgICAgICBwcmVmaXhcbiAgICAgICAgICApO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBzZWxlY3Rpb247XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlbmFtZUZyYWdtZW50RGVmaW5pdGlvbihmcmFnbWVudDogRnJhZ21lbnREZWZpbml0aW9uTm9kZSwgcHJlZml4KSB7XG4gICAgY29uc3QgcmV0ID0ge1xuICAgICAgLi4uZnJhZ21lbnQsXG4gICAgICBuYW1lOiBhc3QubmFtZShwcmVmaXggKyBmcmFnbWVudC5uYW1lLnZhbHVlKSxcbiAgICB9O1xuXG4gICAgaWYgKGZyYWdtZW50LnNlbGVjdGlvblNldCkge1xuICAgICAgcmV0LnNlbGVjdGlvblNldCA9IHRoaXMucHJvY2Vzc1NlbGVjdGlvblNldChcbiAgICAgICAgZnJhZ21lbnQuc2VsZWN0aW9uU2V0LFxuICAgICAgICBwcmVmaXhcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJldDtcbiAgfVxuXG4gIHByaXZhdGUgcmVuYW1lRnJhZ21lbnREZWZpbml0aW9ucyhcbiAgICBmcmFnbWVudHM6IEZyYWdtZW50RGVmaW5pdGlvbk5vZGVbXSxcbiAgICBwcmVmaXhcbiAgKSB7XG4gICAgcmV0dXJuIGZyYWdtZW50cy5tYXAoKGZyYWdtZW50KSA9PlxuICAgICAgdGhpcy5yZW5hbWVGcmFnbWVudERlZmluaXRpb24oZnJhZ21lbnQsIHByZWZpeClcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBtZXJnZSgpIHtcbiAgICBsZXQgdmFyaWFibGVEZWZpbml0aW9uczogVmFyaWFibGVEZWZpbml0aW9uTm9kZVtdID0gW107XG4gICAgbGV0IHNlbGVjdGlvbnM6IFNlbGVjdGlvbk5vZGVbXSA9IFtdO1xuICAgIGNvbnN0IG1lcmdlZFZhcmlhYmxlcyA9IHt9O1xuICAgIGxldCBtZXJnZWRGcmFnbWVudHM6IEZyYWdtZW50RGVmaW5pdGlvbk5vZGVbXSA9IFtdO1xuXG4gICAgY29uc3QgcHJlZml4ZXM6IHN0cmluZ1tdID0gW107XG5cbiAgICAvLyBKdXN0IHdhaXQgZm9yIGV2ZXJ5dGhpbmcgdG8gcmVzb2x2ZSBiZWNhdXNlIHdlIGhhdmUgdG9cbiAgICAvLyBtZXJnZSB0aGUgZG9jIHN5bmNocm9ub3VzbHkuXG4gICAgdGhpcy5sck11dGF0aW9ucy5mb3JFYWNoKChsck11dGF0aW9uLCBpZHgpID0+IHtcbiAgICAgIC8vIFNvbWV0aW1lcyB0eXBpbmcgd29uJ3QgY2F0Y2ggZXZlcnl0aGluZy4gU28gbmVlZCB0byBkeW5hbWljYWxseSBjaGVjayB0aGVcbiAgICAgIC8vIHR5cGUgdG8gYmUgc3VyZS5cbiAgICAgIGlmICghKGxyTXV0YXRpb24gaW5zdGFuY2VvZiBMck11dGF0aW9uQmFzZSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEtjQmFkTG9naWNFeGNlcHRpb24oXG4gICAgICAgICAgJ0FuIG11dGF0aW9uIGluIHRoZSBhcnJheSBpcyBub3Qgb2YgdHlwZSBMck11dGF0aW9uQmFzZS4nXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgbXV0YXRpb24sIHZhcmlhYmxlcyB9ID0gbHJNdXRhdGlvbi5sck11dGF0aW9uRGF0YTtcblxuICAgICAgY29uc3QgY2hpbGRNdXRhdGlvbk5vZGUgPSBnZXRNdXRhdGlvbihtdXRhdGlvbik7XG5cbiAgICAgIC8vIFByZWZpeGluZyBhbGwgbXV0YXRpb24gZmllbGRzIHNvIHRoZXkgZG9uJ3QgY29uZmxpY3QuXG4gICAgICBsZXQgcHJlZml4ID0gYGl0ZW0ke2lkeH1fYDtcbiAgICAgIGlmIChjaGlsZE11dGF0aW9uTm9kZS5uYW1lKSB7XG4gICAgICAgIHByZWZpeCArPSBjaGlsZE11dGF0aW9uTm9kZS5uYW1lLnZhbHVlICsgJ18nO1xuICAgICAgfVxuXG4gICAgICBwcmVmaXhlcy5wdXNoKHByZWZpeCk7XG5cbiAgICAgIC8vIFJlbmFtZSBhbmQgbWVyZ2UgdmFyaWFibGVzXG4gICAgICB2YXJpYWJsZURlZmluaXRpb25zID0gW1xuICAgICAgICAuLi52YXJpYWJsZURlZmluaXRpb25zLFxuICAgICAgICAuLi50aGlzLnJlbmFtZVZhcmlhYmxlRGVmaW5pdGlvbnMoXG4gICAgICAgICAgY2hpbGRNdXRhdGlvbk5vZGUudmFyaWFibGVEZWZpbml0aW9ucyxcbiAgICAgICAgICBwcmVmaXhcbiAgICAgICAgKSxcbiAgICAgIF07XG5cbiAgICAgIC8vIFJlbmFtZSBhbmQgbWVyZ2Ugc2VsZWN0aW9uc1xuICAgICAgc2VsZWN0aW9ucyA9IFtcbiAgICAgICAgLi4uc2VsZWN0aW9ucyxcbiAgICAgICAgLi4udGhpcy5yZW5hbWVTZWxlY3Rpb25zKFxuICAgICAgICAgIGNoaWxkTXV0YXRpb25Ob2RlLnNlbGVjdGlvblNldC5zZWxlY3Rpb25zLFxuICAgICAgICAgIHByZWZpeFxuICAgICAgICApLFxuICAgICAgXTtcblxuICAgICAgLy8gUmVuYW1lIGFuZCBtZXJnZSB2YXJpYWJsZXNcbiAgICAgIGZvciAoY29uc3Qga2V5MiBvZiBPYmplY3Qua2V5cyh2YXJpYWJsZXMpKSB7XG4gICAgICAgIG1lcmdlZFZhcmlhYmxlc1twcmVmaXggKyBrZXkyXSA9IHZhcmlhYmxlc1trZXkyXTtcbiAgICAgIH1cblxuICAgICAgLy8gUmVuYW1lIGFuZCBtZXJnZSBmcmFnbWVudHNcbiAgICAgIGNvbnN0IGZyYWdtZW50cyA9IGdldEZyYWdtZW50cyhtdXRhdGlvbik7XG4gICAgICBtZXJnZWRGcmFnbWVudHMgPSBbXG4gICAgICAgIC4uLm1lcmdlZEZyYWdtZW50cyxcbiAgICAgICAgLi4udGhpcy5yZW5hbWVGcmFnbWVudERlZmluaXRpb25zKGZyYWdtZW50cywgcHJlZml4KSxcbiAgICAgIF07XG4gICAgfSk7XG5cbiAgICBjb25zdCBtZXJnZWRNdXRhdGlvbjogRG9jdW1lbnROb2RlID0gbG9kYXNoLmNsb25lRGVlcChsck1lcmdlZE11dGF0aW9uRG9jKTtcbiAgICBjb25zdCBtdXRhdGlvbk5vZGUgPSBnZXRNdXRhdGlvbihtZXJnZWRNdXRhdGlvbik7XG4gICAgLy8gQWRkIGluIHRoZSBtdXRhdGlvbiBzZWxlY3Rpb25zXG4gICAgbXV0YXRpb25Ob2RlLnNlbGVjdGlvblNldC5zZWxlY3Rpb25zID0gc2VsZWN0aW9ucztcbiAgICAvLyBBZGQgaW4gdGhlIHZhcmlhYmxlc1xuICAgIC8vIHZhcmlhYmxlRGVmaW5pdGlvbnMgaXMgcmVhZG9ubHkgcHJvcGVydHkuXG4gICAgKG11dGF0aW9uTm9kZSBhcyBhbnkpLnZhcmlhYmxlRGVmaW5pdGlvbnMgPSB2YXJpYWJsZURlZmluaXRpb25zO1xuICAgIC8vIEFkZCBpbiB0aGUgZnJhZ21lbnRzXG4gICAgKG1lcmdlZE11dGF0aW9uIGFzIGFueSkuZGVmaW5pdGlvbnMgPSBbXG4gICAgICAuLi5tZXJnZWRNdXRhdGlvbi5kZWZpbml0aW9ucyxcbiAgICAgIC4uLm1lcmdlZEZyYWdtZW50cyxcbiAgICBdO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIG11dGF0aW9uOiBtZXJnZWRNdXRhdGlvbixcbiAgICAgIHZhcmlhYmxlczogbWVyZ2VkVmFyaWFibGVzLFxuICAgICAgcHJlZml4ZXMsXG4gICAgfTtcbiAgfVxufVxuIl19
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import gql from 'graphql-tag';
|
|
2
|
-
import { getQuery } from '../../_common/ast';
|
|
3
|
-
import { DeferredPromise } from '../../_common/deferred-promise';
|
|
4
|
-
import { KcBadStateException } from '../../_common/exceptions';
|
|
5
|
-
export const fragmentSpreadAstSelection = getQuery(gql `
|
|
6
|
-
query {
|
|
7
|
-
...FragmentName
|
|
8
|
-
}
|
|
9
|
-
`).selectionSet.selections[0];
|
|
10
|
-
// const fragmentSpreadAstSelection = () =>
|
|
11
|
-
// lodash.deepClone(_fragmentSpreadAstSelection) as FragmentSpreadNode;
|
|
12
|
-
/**
|
|
13
|
-
* DECISION: LrMutationBase does not provide a convenience method to call lrGraphQL.lrMutate()
|
|
14
|
-
* because this class could be made independent of what lib is used to call the API. If we
|
|
15
|
-
* provided a configurable call back to make the API call, then the typing for that callback
|
|
16
|
-
* needs to be known. But since the API lib (eg. Apollo) has it's own unique return type, so
|
|
17
|
-
* it's not possible to do in general.
|
|
18
|
-
*/
|
|
19
|
-
export class LrMutationBase {
|
|
20
|
-
constructor() {
|
|
21
|
-
/* tslint:disable:variable-name */
|
|
22
|
-
this._executed = false;
|
|
23
|
-
// protected promises: DeferredPromise<T>[] = [];
|
|
24
|
-
this.deferredPromise = new DeferredPromise();
|
|
25
|
-
}
|
|
26
|
-
get promise() {
|
|
27
|
-
return this.deferredPromise.promise;
|
|
28
|
-
}
|
|
29
|
-
resolve(value) {
|
|
30
|
-
this.deferredPromise.resolve(value);
|
|
31
|
-
}
|
|
32
|
-
reject(reason) {
|
|
33
|
-
this.deferredPromise.reject(reason);
|
|
34
|
-
}
|
|
35
|
-
get lrMutationData() {
|
|
36
|
-
return {
|
|
37
|
-
mutation: this.mutation,
|
|
38
|
-
variables: this.variables,
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
get executed() {
|
|
42
|
-
return this._executed;
|
|
43
|
-
}
|
|
44
|
-
setExecuted() {
|
|
45
|
-
if (this._executed) {
|
|
46
|
-
throw new KcBadStateException('Already executed');
|
|
47
|
-
}
|
|
48
|
-
this._executed = true;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibHItbXV0YXRpb24tYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi9hcGkvbHItZ3JhcGhxbC9sci1tdXRhdGlvbi1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sR0FBRyxNQUFNLGFBQWEsQ0FBQztBQUM5QixPQUFPLEVBQUUsUUFBUSxFQUFxQixNQUFNLG1CQUFtQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQU8vRCxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFBOzs7O0NBSXJELENBQUMsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBdUIsQ0FBQztBQUVwRCwyQ0FBMkM7QUFDM0MseUVBQXlFO0FBRXpFOzs7Ozs7R0FNRztBQUNILE1BQU0sT0FBZ0IsY0FBYztJQUFwQztRQUdFLGtDQUFrQztRQUN4QixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRTVCLGlEQUFpRDtRQUNqQyxvQkFBZSxHQUFHLElBQUksZUFBZSxFQUFLLENBQUM7SUErQjdELENBQUM7SUE3QkMsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQztJQUN0QyxDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQVE7UUFDZCxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQVk7UUFDakIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELElBQUksY0FBYztRQUNoQixPQUFPO1lBQ0wsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3ZCLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztTQUMxQixDQUFDO0lBQ0osQ0FBQztJQUVELElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNsQixNQUFNLElBQUksbUJBQW1CLENBQUMsa0JBQWtCLENBQUMsQ0FBQztTQUNuRDtRQUNELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO0lBQ3hCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IE9wZXJhdGlvblZhcmlhYmxlcyB9IGZyb20gJ0BhcG9sbG8vY2xpZW50L2NvcmUnO1xuaW1wb3J0IHsgRnJhZ21lbnRTcHJlYWROb2RlIH0gZnJvbSAnZ3JhcGhxbCc7XG5pbXBvcnQgZ3FsIGZyb20gJ2dyYXBocWwtdGFnJztcbmltcG9ydCB7IGdldFF1ZXJ5LCBUeXBlZERvY3VtZW50Tm9kZSB9IGZyb20gJy4uLy4uL19jb21tb24vYXN0JztcbmltcG9ydCB7IERlZmVycmVkUHJvbWlzZSB9IGZyb20gJy4uLy4uL19jb21tb24vZGVmZXJyZWQtcHJvbWlzZSc7XG5pbXBvcnQgeyBLY0JhZFN0YXRlRXhjZXB0aW9uIH0gZnJvbSAnLi4vLi4vX2NvbW1vbi9leGNlcHRpb25zJztcblxuZXhwb3J0IGludGVyZmFjZSBMck11dGF0aW9uRGF0YTxULCBUVmFyaWFibGVzID0gT3BlcmF0aW9uVmFyaWFibGVzPiB7XG4gIG11dGF0aW9uOiBUeXBlZERvY3VtZW50Tm9kZTxUPjtcbiAgdmFyaWFibGVzPzogVFZhcmlhYmxlcztcbn1cblxuZXhwb3J0IGNvbnN0IGZyYWdtZW50U3ByZWFkQXN0U2VsZWN0aW9uID0gZ2V0UXVlcnkoZ3FsYFxuICBxdWVyeSB7XG4gICAgLi4uRnJhZ21lbnROYW1lXG4gIH1cbmApLnNlbGVjdGlvblNldC5zZWxlY3Rpb25zWzBdIGFzIEZyYWdtZW50U3ByZWFkTm9kZTtcblxuLy8gY29uc3QgZnJhZ21lbnRTcHJlYWRBc3RTZWxlY3Rpb24gPSAoKSA9PlxuLy8gICBsb2Rhc2guZGVlcENsb25lKF9mcmFnbWVudFNwcmVhZEFzdFNlbGVjdGlvbikgYXMgRnJhZ21lbnRTcHJlYWROb2RlO1xuXG4vKipcbiAqIERFQ0lTSU9OOiBMck11dGF0aW9uQmFzZSBkb2VzIG5vdCBwcm92aWRlIGEgY29udmVuaWVuY2UgbWV0aG9kIHRvIGNhbGwgbHJHcmFwaFFMLmxyTXV0YXRlKClcbiAqIGJlY2F1c2UgdGhpcyBjbGFzcyBjb3VsZCBiZSBtYWRlIGluZGVwZW5kZW50IG9mIHdoYXQgbGliIGlzIHVzZWQgdG8gY2FsbCB0aGUgQVBJLiBJZiB3ZVxuICogcHJvdmlkZWQgYSBjb25maWd1cmFibGUgY2FsbCBiYWNrIHRvIG1ha2UgdGhlIEFQSSBjYWxsLCB0aGVuIHRoZSB0eXBpbmcgZm9yIHRoYXQgY2FsbGJhY2tcbiAqIG5lZWRzIHRvIGJlIGtub3duLiBCdXQgc2luY2UgdGhlIEFQSSBsaWIgKGVnLiBBcG9sbG8pIGhhcyBpdCdzIG93biB1bmlxdWUgcmV0dXJuIHR5cGUsIHNvXG4gKiBpdCdzIG5vdCBwb3NzaWJsZSB0byBkbyBpbiBnZW5lcmFsLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTHJNdXRhdGlvbkJhc2U8VCwgVFZhcmlhYmxlcyA9IE9wZXJhdGlvblZhcmlhYmxlcz4ge1xuICBwcm90ZWN0ZWQgbXV0YXRpb246IFR5cGVkRG9jdW1lbnROb2RlPFQ+O1xuICBwcm90ZWN0ZWQgdmFyaWFibGVzPzogVFZhcmlhYmxlcztcbiAgLyogdHNsaW50OmRpc2FibGU6dmFyaWFibGUtbmFtZSAqL1xuICBwcm90ZWN0ZWQgX2V4ZWN1dGVkID0gZmFsc2U7XG5cbiAgLy8gcHJvdGVjdGVkIHByb21pc2VzOiBEZWZlcnJlZFByb21pc2U8VD5bXSA9IFtdO1xuICBwdWJsaWMgcmVhZG9ubHkgZGVmZXJyZWRQcm9taXNlID0gbmV3IERlZmVycmVkUHJvbWlzZTxUPigpO1xuXG4gIGdldCBwcm9taXNlKCk6IFByb21pc2U8VD4ge1xuICAgIHJldHVybiB0aGlzLmRlZmVycmVkUHJvbWlzZS5wcm9taXNlO1xuICB9XG5cbiAgcmVzb2x2ZSh2YWx1ZTogVCkge1xuICAgIHRoaXMuZGVmZXJyZWRQcm9taXNlLnJlc29sdmUodmFsdWUpO1xuICB9XG5cbiAgcmVqZWN0KHJlYXNvbj86IGFueSkge1xuICAgIHRoaXMuZGVmZXJyZWRQcm9taXNlLnJlamVjdChyZWFzb24pO1xuICB9XG5cbiAgZ2V0IGxyTXV0YXRpb25EYXRhKCk6IExyTXV0YXRpb25EYXRhPFQsIFRWYXJpYWJsZXM+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbXV0YXRpb246IHRoaXMubXV0YXRpb24sXG4gICAgICB2YXJpYWJsZXM6IHRoaXMudmFyaWFibGVzLFxuICAgIH07XG4gIH1cblxuICBnZXQgZXhlY3V0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2V4ZWN1dGVkO1xuICB9XG5cbiAgc2V0RXhlY3V0ZWQoKSB7XG4gICAgaWYgKHRoaXMuX2V4ZWN1dGVkKSB7XG4gICAgICB0aHJvdyBuZXcgS2NCYWRTdGF0ZUV4Y2VwdGlvbignQWxyZWFkeSBleGVjdXRlZCcpO1xuICAgIH1cbiAgICB0aGlzLl9leGVjdXRlZCA9IHRydWU7XG4gIH1cbn1cbiJdfQ==
|