1 | /**
|
2 | * @fileoverview added by tsickle
|
3 | * @suppress {checkTypes} checked by tsc
|
4 | */
|
5 | import * as tslib_1 from "tslib";
|
6 | import { first } from 'rxjs/operators';
|
7 | import { Injectable } from '@angular/core';
|
8 | import { _ModelMutationType, } from '../../generated-schemas/botie-schema';
|
9 | import { log } from '../config';
|
10 | import { Db, } from '../db';
|
11 | import { Store, } from '../store';
|
12 | import { GQL_CREATE_BOTIE, GQL_DELETE_BOTIE, GQL_QUERY_ALL_BOTIES, GQL_SUBSCRIBE_BOTIE, GQL_UPDATE_BOTIE, } from './botie.graphql';
|
13 | export class BotieStore extends Store {
|
14 | /**
|
15 | * @param {?} db
|
16 | */
|
17 | constructor(db) {
|
18 | super(db, {
|
19 | gqlQueryAll: GQL_QUERY_ALL_BOTIES,
|
20 | gqlSubscribe: GQL_SUBSCRIBE_BOTIE,
|
21 | dataKey: 'allBoties',
|
22 | });
|
23 | this.db = db;
|
24 | log.verbose('BotieStore', 'constructor()');
|
25 | }
|
26 | /**
|
27 | * \@todo confirm the return type of Observable
|
28 | * @param {?} newBotie
|
29 | * @return {?}
|
30 | */
|
31 | create(newBotie) {
|
32 | return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
33 | log.verbose('BotieStore', 'create(newBotie{name:%s})', newBotie.name);
|
34 | yield this.state.ready();
|
35 | let /** @type {?} */ ownerId = newBotie.ownerId;
|
36 | if (!ownerId) {
|
37 | const /** @type {?} */ currentUser = yield this.db.currentUser.pipe(first()).toPromise();
|
38 | if (!currentUser) {
|
39 | throw new Error('no currentUser');
|
40 | }
|
41 | ownerId = currentUser.id;
|
42 | }
|
43 | if (!ownerId) {
|
44 | throw new Error('no ownerId');
|
45 | }
|
46 | // FIXME: key! & name! should be checked gracefully
|
47 | const /** @type {?} */ variables = {
|
48 | token: newBotie.token,
|
49 | name: newBotie.name,
|
50 | ownerId,
|
51 | };
|
52 | const /** @type {?} */ createBotie = yield /** @type {?} */ ((this.apollo)).mutate({
|
53 | mutation: GQL_CREATE_BOTIE,
|
54 | variables,
|
55 | update: this.mutationUpdateFnFactory(_ModelMutationType.CREATED, 'createBotie'),
|
56 | }).then(m => m.data && m.data["createBotie"]);
|
57 | if (!createBotie) {
|
58 | throw new Error('BotieStore.create() fail!');
|
59 | }
|
60 | return createBotie;
|
61 | });
|
62 | }
|
63 | /**
|
64 | * delete
|
65 | * @param {?} id
|
66 | * @return {?}
|
67 | */
|
68 | delete(id) {
|
69 | return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
70 | log.verbose('BotieStore', 'delete(id=%s)', id);
|
71 | yield this.state.ready();
|
72 | const /** @type {?} */ variables = {
|
73 | id,
|
74 | };
|
75 | const /** @type {?} */ deleteBotie = yield /** @type {?} */ ((this.apollo)).mutate({
|
76 | mutation: GQL_DELETE_BOTIE,
|
77 | variables,
|
78 | update: this.mutationUpdateFnFactory(_ModelMutationType.DELETED, 'deleteBotie'),
|
79 | }).then(m => m.data && m.data['deleteBotie']);
|
80 | if (!deleteBotie) {
|
81 | throw new Error(`BotieStore.delete(id=${id}) failed!`);
|
82 | }
|
83 | return deleteBotie;
|
84 | });
|
85 | }
|
86 | /**
|
87 | * update will only change the specified fields in documents it affects;
|
88 | * unspecified fields will be left untouched.
|
89 | * @param {?} id
|
90 | * @param {?} props
|
91 | * @return {?}
|
92 | */
|
93 | update(id, props) {
|
94 | return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
95 | log.verbose('BotieStore', 'update(id=%s)', id);
|
96 | yield this.state.ready();
|
97 | const /** @type {?} */ botie = yield this.read(id);
|
98 | const /** @type {?} */ variables = {
|
99 | id,
|
100 | name: props.name || botie.name,
|
101 | note: props.note || botie.note,
|
102 | };
|
103 | const /** @type {?} */ updateBotie = yield /** @type {?} */ ((this.apollo)).mutate({
|
104 | mutation: GQL_UPDATE_BOTIE,
|
105 | variables,
|
106 | update: this.mutationUpdateFnFactory(_ModelMutationType.UPDATED, 'updateBotie'),
|
107 | }).then(m => m.data && m.data['updateBotie']);
|
108 | if (!updateBotie) {
|
109 | throw new Error('BotieStore.update() failed!');
|
110 | }
|
111 | return updateBotie;
|
112 | });
|
113 | }
|
114 | }
|
115 | BotieStore.decorators = [
|
116 | { type: Injectable },
|
117 | ];
|
118 | /** @nocollapse */
|
119 | BotieStore.ctorParameters = () => [
|
120 | { type: Db }
|
121 | ];
|
122 | function BotieStore_tsickle_Closure_declarations() {
|
123 | /** @type {?} */
|
124 | BotieStore.prototype.db;
|
125 | }
|
126 |
|
127 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm90aWUtc3RvcmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY2hhdGllL2RiLyIsInNvdXJjZXMiOlsic3JjL2JvdGllL2JvdGllLXN0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFXLGdCQUFnQixDQUFBO0FBRTNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFMUMsT0FBTyxFQUNMLGtCQUFrQixHQVVuQixNQUFzQyxzQ0FBc0MsQ0FBQTtBQUc3RSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQVcsV0FBVyxDQUFBO0FBQ3BDLE9BQU8sRUFDTCxFQUFFLEdBQ0gsTUFBd0IsT0FBTyxDQUFBO0FBQ2hDLE9BQU8sRUFDTCxLQUFLLEdBQ04sTUFBd0IsVUFBVSxDQUFBO0FBRW5DLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsZ0JBQWdCLEVBQ2hCLG9CQUFvQixFQUNwQixtQkFBbUIsRUFDbkIsZ0JBQWdCLEdBQ2pCLE1BQThCLGlCQUFpQixDQUFBO0FBR2hELE1BQU0saUJBQWtCLFNBQVEsS0FJL0I7Ozs7SUFDQyxZQUNZLEVBQU07UUFFaEIsS0FBSyxDQUFDLEVBQUUsRUFBRTtZQUNSLFdBQVcsRUFBRyxvQkFBb0I7WUFDbEMsWUFBWSxFQUFFLG1CQUFtQjtZQUNqQyxPQUFPLEVBQU8sV0FBVztTQUMxQixDQUFDLENBQUE7UUFOUSxPQUFFLEdBQUYsRUFBRSxDQUFJO1FBT2hCLEdBQUcsQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLGVBQWUsQ0FBQyxDQUFBO0tBQzNDOzs7Ozs7SUFNWSxNQUFNLENBQUMsUUFJbkI7O1lBQ0MsR0FBRyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsMkJBQTJCLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFBO1lBRXJFLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQTtZQUV4QixxQkFBSSxPQUFPLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQTtZQUM5QixFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7Z0JBQ2IsdUJBQU0sV0FBVyxHQUFHLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUE7Z0JBQ3ZFLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztvQkFDakIsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO2lCQUNsQztnQkFDRCxPQUFPLEdBQUcsV0FBVyxDQUFDLEVBQUUsQ0FBQTthQUN6QjtZQUNELEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztnQkFDYixNQUFNLElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFBO2FBQzlCOztZQUdELHVCQUFNLFNBQVMsR0FBaUM7Z0JBQzlDLEtBQUssRUFBSyxRQUFRLENBQUMsS0FBSztnQkFDeEIsSUFBSSxFQUFNLFFBQVEsQ0FBQyxJQUFJO2dCQUN2QixPQUFPO2FBQ1IsQ0FBQTtZQUVELHVCQUFNLFdBQVcsR0FBdUMseUJBQU0sSUFBSSxDQUFDLE1BQU0sR0FBRSxNQUFNLENBQUM7Z0JBQ2hGLFFBQVEsRUFBRSxnQkFBZ0I7Z0JBQzFCLFNBQVM7Z0JBQ1QsTUFBTSxFQUFFLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsYUFBYSxDQUFDO2FBQ2hGLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxlQUFZLENBQUMsQ0FBQTtZQUUxQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsMkJBQTJCLENBQUMsQ0FBQTthQUM3QztZQUNELE1BQU0sQ0FBQyxXQUFXLENBQUE7Ozs7Ozs7O0lBT1AsTUFBTSxDQUFDLEVBQVU7O1lBQzVCLEdBQUcsQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLGVBQWUsRUFBRSxFQUFFLENBQUMsQ0FBQTtZQUU5QyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUE7WUFFeEIsdUJBQU0sU0FBUyxHQUFpQztnQkFDOUMsRUFBRTthQUNILENBQUE7WUFDRCx1QkFBTSxXQUFXLEdBQXVDLHlCQUFNLElBQUksQ0FBQyxNQUFNLEdBQUUsTUFBTSxDQUFDO2dCQUNoRixRQUFRLEVBQUUsZ0JBQWdCO2dCQUMxQixTQUFTO2dCQUNULE1BQU0sRUFBRSxJQUFJLENBQUMsdUJBQXVCLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLGFBQWEsQ0FBQzthQUNoRixFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFBO1lBRTdDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztnQkFDakIsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsRUFBRSxXQUFXLENBQUMsQ0FBQTthQUN2RDtZQUNELE1BQU0sQ0FBQyxXQUFXLENBQUE7Ozs7Ozs7Ozs7SUFRUCxNQUFNLENBQUMsRUFBVSxFQUFFLEtBQXFCOztZQUNuRCxHQUFHLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxlQUFlLEVBQUUsRUFBRSxDQUFDLENBQUE7WUFFOUMsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFBO1lBRXhCLHVCQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUE7WUFFakMsdUJBQU0sU0FBUyxHQUFpQztnQkFDOUMsRUFBRTtnQkFDRixJQUFJLEVBQUksS0FBSyxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsSUFBSTtnQkFDaEMsSUFBSSxFQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLElBQUk7YUFDakMsQ0FBQTtZQUVELHVCQUFNLFdBQVcsR0FBdUMseUJBQU0sSUFBSSxDQUFDLE1BQU0sR0FBRSxNQUFNLENBQUM7Z0JBQ2hGLFFBQVEsRUFBRSxnQkFBZ0I7Z0JBQzFCLFNBQVM7Z0JBQ1QsTUFBTSxFQUFFLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsYUFBYSxDQUFDO2FBQ2hGLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUE7WUFFN0MsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO2dCQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLDZCQUE2QixDQUFDLENBQUE7YUFDL0M7WUFDRCxNQUFNLENBQUMsV0FBVyxDQUFBOzs7OztZQWhIckIsVUFBVTs7OztZQWRULEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmaXJzdCB9ICAgICAgZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5cbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuXG5pbXBvcnQge1xuICBfTW9kZWxNdXRhdGlvblR5cGUsXG4gIEFsbEJvdGllc1F1ZXJ5LFxuICBEZWxldGVCb3RpZU11dGF0aW9uLFxuICBEZWxldGVCb3RpZU11dGF0aW9uVmFyaWFibGVzLFxuICBDcmVhdGVCb3RpZU11dGF0aW9uLFxuICBDcmVhdGVCb3RpZU11dGF0aW9uVmFyaWFibGVzLFxuICBCb3RpZUZyYWdtZW50LFxuICBTdWJzY3JpYmVCb3RpZVN1YnNjcmlwdGlvbixcbiAgVXBkYXRlQm90aWVNdXRhdGlvbixcbiAgVXBkYXRlQm90aWVNdXRhdGlvblZhcmlhYmxlcyxcbn0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tICcuLi8uLi9nZW5lcmF0ZWQtc2NoZW1hcy9ib3RpZS1zY2hlbWEnXG5leHBvcnQgdHlwZSBCb3RpZSA9IFBhcnRpYWw8Qm90aWVGcmFnbWVudD5cblxuaW1wb3J0IHsgbG9nIH0gICAgICBmcm9tICcuLi9jb25maWcnXG5pbXBvcnQge1xuICBEYixcbn0gICAgICAgICAgICAgICAgICAgZnJvbSAnLi4vZGInXG5pbXBvcnQge1xuICBTdG9yZSxcbn0gICAgICAgICAgICAgICAgICAgZnJvbSAnLi4vc3RvcmUnXG5cbmltcG9ydCB7XG4gIEdRTF9DUkVBVEVfQk9USUUsXG4gIEdRTF9ERUxFVEVfQk9USUUsXG4gIEdRTF9RVUVSWV9BTExfQk9USUVTLFxuICBHUUxfU1VCU0NSSUJFX0JPVElFLFxuICBHUUxfVVBEQVRFX0JPVElFLFxufSAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tICcuL2JvdGllLmdyYXBocWwnXG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBCb3RpZVN0b3JlIGV4dGVuZHMgU3RvcmU8XG4gICAgQm90aWUsXG4gICAgQWxsQm90aWVzUXVlcnksXG4gICAgU3Vic2NyaWJlQm90aWVTdWJzY3JpcHRpb25cbj4ge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgZGI6IERiLFxuICApIHtcbiAgICBzdXBlcihkYiwge1xuICAgICAgZ3FsUXVlcnlBbGw6ICBHUUxfUVVFUllfQUxMX0JPVElFUyxcbiAgICAgIGdxbFN1YnNjcmliZTogR1FMX1NVQlNDUklCRV9CT1RJRSxcbiAgICAgIGRhdGFLZXk6ICAgICAgJ2FsbEJvdGllcycsXG4gICAgfSlcbiAgICBsb2cudmVyYm9zZSgnQm90aWVTdG9yZScsICdjb25zdHJ1Y3RvcigpJylcbiAgfVxuXG4gIC8qKlxuICAgKiBAdG9kbyBjb25maXJtIHRoZSByZXR1cm4gdHlwZSBvZiBPYnNlcnZhYmxlXG4gICAqIEBwYXJhbSBuZXdCb3RpZVxuICAgKi9cbiAgcHVibGljIGFzeW5jIGNyZWF0ZShuZXdCb3RpZToge1xuICAgICAgbmFtZTogICAgIHN0cmluZyxcbiAgICAgIHRva2VuOiAgICBzdHJpbmcsXG4gICAgICBvd25lcklkPzogc3RyaW5nLFxuICB9KTogUHJvbWlzZTxCb3RpZT4ge1xuICAgIGxvZy52ZXJib3NlKCdCb3RpZVN0b3JlJywgJ2NyZWF0ZShuZXdCb3RpZXtuYW1lOiVzfSknLCBuZXdCb3RpZS5uYW1lKVxuXG4gICAgYXdhaXQgdGhpcy5zdGF0ZS5yZWFkeSgpXG5cbiAgICBsZXQgb3duZXJJZCA9IG5ld0JvdGllLm93bmVySWRcbiAgICBpZiAoIW93bmVySWQpIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRVc2VyID0gYXdhaXQgdGhpcy5kYi5jdXJyZW50VXNlci5waXBlKGZpcnN0KCkpLnRvUHJvbWlzZSgpXG4gICAgICBpZiAoIWN1cnJlbnRVc2VyKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignbm8gY3VycmVudFVzZXInKVxuICAgICAgfVxuICAgICAgb3duZXJJZCA9IGN1cnJlbnRVc2VyLmlkXG4gICAgfVxuICAgIGlmICghb3duZXJJZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdubyBvd25lcklkJylcbiAgICB9XG5cbiAgICAvLyBGSVhNRToga2V5ISAmIG5hbWUhIHNob3VsZCBiZSBjaGVja2VkIGdyYWNlZnVsbHlcbiAgICBjb25zdCB2YXJpYWJsZXM6IENyZWF0ZUJvdGllTXV0YXRpb25WYXJpYWJsZXMgPSB7XG4gICAgICB0b2tlbjogICAgbmV3Qm90aWUudG9rZW4sXG4gICAgICBuYW1lOiAgICAgbmV3Qm90aWUubmFtZSxcbiAgICAgIG93bmVySWQsXG4gICAgfVxuXG4gICAgY29uc3QgY3JlYXRlQm90aWU6IENyZWF0ZUJvdGllTXV0YXRpb25bJ2NyZWF0ZUJvdGllJ10gPSBhd2FpdCB0aGlzLmFwb2xsbyEubXV0YXRlKHtcbiAgICAgIG11dGF0aW9uOiBHUUxfQ1JFQVRFX0JPVElFLFxuICAgICAgdmFyaWFibGVzLFxuICAgICAgdXBkYXRlOiB0aGlzLm11dGF0aW9uVXBkYXRlRm5GYWN0b3J5KF9Nb2RlbE11dGF0aW9uVHlwZS5DUkVBVEVELCAnY3JlYXRlQm90aWUnKSxcbiAgICB9KS50aGVuKG0gPT4gbS5kYXRhICYmIG0uZGF0YS5jcmVhdGVCb3RpZSlcblxuICAgIGlmICghY3JlYXRlQm90aWUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQm90aWVTdG9yZS5jcmVhdGUoKSBmYWlsIScpXG4gICAgfVxuICAgIHJldHVybiBjcmVhdGVCb3RpZVxuICB9XG5cbiAgLyoqXG4gICAqIGRlbGV0ZVxuICAgKiBAcGFyYW0gaWRcbiAgICovXG4gIHB1YmxpYyBhc3luYyBkZWxldGUoaWQ6IHN0cmluZyk6IFByb21pc2U8Qm90aWU+IHtcbiAgICBsb2cudmVyYm9zZSgnQm90aWVTdG9yZScsICdkZWxldGUoaWQ9JXMpJywgaWQpXG5cbiAgICBhd2FpdCB0aGlzLnN0YXRlLnJlYWR5KClcblxuICAgIGNvbnN0IHZhcmlhYmxlczogRGVsZXRlQm90aWVNdXRhdGlvblZhcmlhYmxlcyA9IHtcbiAgICAgIGlkLFxuICAgIH1cbiAgICBjb25zdCBkZWxldGVCb3RpZTogRGVsZXRlQm90aWVNdXRhdGlvblsnZGVsZXRlQm90aWUnXSA9IGF3YWl0IHRoaXMuYXBvbGxvIS5tdXRhdGUoe1xuICAgICAgbXV0YXRpb246IEdRTF9ERUxFVEVfQk9USUUsXG4gICAgICB2YXJpYWJsZXMsXG4gICAgICB1cGRhdGU6IHRoaXMubXV0YXRpb25VcGRhdGVGbkZhY3RvcnkoX01vZGVsTXV0YXRpb25UeXBlLkRFTEVURUQsICdkZWxldGVCb3RpZScpLFxuICAgIH0pLnRoZW4obSA9PiBtLmRhdGEgJiYgbS5kYXRhWydkZWxldGVCb3RpZSddKVxuXG4gICAgaWYgKCFkZWxldGVCb3RpZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBCb3RpZVN0b3JlLmRlbGV0ZShpZD0ke2lkfSkgZmFpbGVkIWApXG4gICAgfVxuICAgIHJldHVybiBkZWxldGVCb3RpZVxuICB9XG5cbiAgLyoqXG4gICAqIHVwZGF0ZSB3aWxsIG9ubHkgY2hhbmdlIHRoZSBzcGVjaWZpZWQgZmllbGRzIGluIGRvY3VtZW50cyBpdCBhZmZlY3RzO1xuICAgKiB1bnNwZWNpZmllZCBmaWVsZHMgd2lsbCBiZSBsZWZ0IHVudG91Y2hlZC5cbiAgICogQHBhcmFtIHVwZGF0ZUJvdGllXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgdXBkYXRlKGlkOiBzdHJpbmcsIHByb3BzOiBQYXJ0aWFsPEJvdGllPik6IFByb21pc2U8Qm90aWU+IHtcbiAgICBsb2cudmVyYm9zZSgnQm90aWVTdG9yZScsICd1cGRhdGUoaWQ9JXMpJywgaWQpXG5cbiAgICBhd2FpdCB0aGlzLnN0YXRlLnJlYWR5KClcblxuICAgIGNvbnN0IGJvdGllID0gYXdhaXQgdGhpcy5yZWFkKGlkKVxuXG4gICAgY29uc3QgdmFyaWFibGVzOiBVcGRhdGVCb3RpZU11dGF0aW9uVmFyaWFibGVzID0ge1xuICAgICAgaWQsXG4gICAgICBuYW1lOiAgIHByb3BzLm5hbWUgfHwgYm90aWUubmFtZSxcbiAgICAgIG5vdGU6ICAgcHJvcHMubm90ZSB8fCBib3RpZS5ub3RlLFxuICAgIH1cblxuICAgIGNvbnN0IHVwZGF0ZUJvdGllOiBVcGRhdGVCb3RpZU11dGF0aW9uWyd1cGRhdGVCb3RpZSddID0gYXdhaXQgdGhpcy5hcG9sbG8hLm11dGF0ZSh7XG4gICAgICBtdXRhdGlvbjogR1FMX1VQREFURV9CT1RJRSxcbiAgICAgIHZhcmlhYmxlcyxcbiAgICAgIHVwZGF0ZTogdGhpcy5tdXRhdGlvblVwZGF0ZUZuRmFjdG9yeShfTW9kZWxNdXRhdGlvblR5cGUuVVBEQVRFRCwgJ3VwZGF0ZUJvdGllJyksXG4gICAgfSkudGhlbihtID0+IG0uZGF0YSAmJiBtLmRhdGFbJ3VwZGF0ZUJvdGllJ10pXG5cbiAgICBpZiAoIXVwZGF0ZUJvdGllKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0JvdGllU3RvcmUudXBkYXRlKCkgZmFpbGVkIScpXG4gICAgfVxuICAgIHJldHVybiB1cGRhdGVCb3RpZVxuICB9XG5cbn1cbiJdfQ== |
\ | No newline at end of file |