ng-miam 6.4.13 → 7.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/bundles/ng-miam.umd.js +8539 -10855
- package/bundles/ng-miam.umd.js.map +1 -1
- package/bundles/ng-miam.umd.min.js +2 -2
- package/bundles/ng-miam.umd.min.js.map +1 -1
- package/esm2015/lib/_components/abstracts/event-tracer.component.js +3 -2
- package/esm2015/lib/_components/accordion/accordion.component.js +75 -0
- package/esm2015/lib/_components/components.module.js +27 -21
- package/esm2015/lib/_components/counter-input/counter-input.component.js +86 -76
- package/esm2015/lib/_components/icon/icon.component.js +1 -1
- package/esm2015/lib/_components/index.js +5 -5
- package/esm2015/lib/_components/like-button/like-button.component.js +1 -1
- package/esm2015/lib/_components/list-input/list-input.component.js +5 -5
- package/esm2015/lib/_components/loader/loader.component.js +1 -1
- package/esm2015/lib/_components/meals-planner-link/meals-planner-link.component.js +3 -3
- package/esm2015/lib/_components/modal/modal.component.js +155 -137
- package/esm2015/lib/_components/product-card/product-card.component.js +333 -0
- package/esm2015/lib/_components/products-picker/products-picker.component.js +155 -0
- package/esm2015/lib/_components/progress-tracker/progress-tracker.component.js +1 -1
- package/esm2015/lib/_components/recipe-filters/recipe-filters.component.js +166 -217
- package/esm2015/lib/_components/recipe-pricing/recipe-pricing.component.js +55 -35
- package/esm2015/lib/_components/slider-tabs/slider-tabs.component.js +84 -0
- package/esm2015/lib/_components/sponsor-blocks/sponsor-image-and-text-block/sponsor-image-and-text-block.component.js +1 -1
- package/esm2015/lib/_components/sponsor-blocks/sponsor-text-and-image-block/sponsor-text-and-image-block.component.js +1 -1
- package/esm2015/lib/_components/tabs/tabs.component.js +48 -88
- package/esm2015/lib/_components/toaster/toaster.component.js +48 -84
- package/esm2015/lib/_components/tooltipable-content/tooltipable-content.component.js +1 -1
- package/esm2015/lib/_models/basket-entry.js +33 -49
- package/esm2015/lib/_models/basket-preview-line.js +5 -5
- package/esm2015/lib/_models/basket.js +15 -12
- package/esm2015/lib/_models/item.js +2 -2
- package/esm2015/lib/_models/recipe.js +2 -15
- package/esm2015/lib/_models/user.js +1 -1
- package/esm2015/lib/_services/analytics.service.js +24 -5
- package/esm2015/lib/_services/baskets-synchronizing/baskets-comparator.service.js +1 -10
- package/esm2015/lib/_services/baskets-synchronizing/baskets-synchronizer.service.js +15 -15
- package/esm2015/lib/_services/baskets.service.js +478 -60
- package/esm2015/lib/_services/context.service.js +22 -35
- package/esm2015/lib/_services/index.js +3 -5
- package/esm2015/lib/_services/interceptor.service.js +2 -2
- package/esm2015/lib/_services/items.service.js +27 -4
- package/esm2015/lib/_services/recipe-details.service.js +198 -0
- package/esm2015/lib/_services/recipe-likes.service.js +1 -1
- package/esm2015/lib/_services/recipes.service.js +24 -53
- package/esm2015/lib/_services/scrolling.service.js +17 -0
- package/esm2015/lib/_services/toaster.service.js +4 -5
- package/esm2015/lib/_services/user.service.js +2 -2
- package/esm2015/lib/_types/basket-action-type.enum.js +11 -0
- package/esm2015/lib/_types/basket-action.js +2 -0
- package/esm2015/lib/_types/basket-stats.js +2 -0
- package/esm2015/lib/_types/builded/miam-interface.js +1 -1
- package/esm2015/lib/_types/event-trace.js +5 -0
- package/esm2015/lib/_types/items-comparator.js +1 -10
- package/esm2015/lib/_types/recipe-filters.js +1 -1
- package/esm2015/lib/_types/toaster.js +1 -1
- package/esm2015/lib/_utils/directives/index.js +2 -1
- package/esm2015/lib/_utils/directives/reach-top.directive.js +33 -0
- package/esm2015/lib/_utils/pipes/readable-float-number/readable-float-number.pipe.js +8 -2
- package/esm2015/lib/_utils/utils.module.js +12 -8
- package/esm2015/lib/_web-components/basket-preview/basket-preview-block/basket-preview-block.component.js +140 -118
- package/esm2015/lib/_web-components/basket-preview/basket-preview-disabled/basket-preview-disabled.component.js +2 -2
- package/esm2015/lib/_web-components/basket-preview/basket-preview-line/basket-preview-line.component.js +125 -444
- package/esm2015/lib/_web-components/basket-preview/replace-item/replace-item.component.js +211 -108
- package/esm2015/lib/_web-components/index.js +1 -4
- package/esm2015/lib/_web-components/list-scan/basket-preview/basket-preview.component.js +11 -14
- package/esm2015/lib/_web-components/list-scan/files-inputs/files-inputs.component.js +13 -13
- package/esm2015/lib/_web-components/list-scan/ingredients-list/ingredients-list.component.js +6 -6
- package/esm2015/lib/_web-components/list-scan/list-scan.component.js +10 -10
- package/esm2015/lib/_web-components/list-scan/overlay-button/overlay-button.component.js +23 -11
- package/esm2015/lib/_web-components/meals-planner/meals-planner-basket-confirmation/meals-planner-basket-confirmation.component.js +1 -1
- package/esm2015/lib/_web-components/meals-planner/meals-planner-catalog/meals-planner-catalog.component.js +1 -1
- package/esm2015/lib/_web-components/meals-planner/meals-planner-form/meals-planner-form.component.js +7 -7
- package/esm2015/lib/_web-components/meals-planner/meals-planner-result/meals-planner-result.component.js +5 -5
- package/esm2015/lib/_web-components/meals-planner/meals-planner.component.js +16 -20
- package/esm2015/lib/_web-components/planner-side-menu/planner-side-menu.component.js +4 -53
- package/esm2015/lib/_web-components/recipe-cards/add-recipe-card/add-recipe-card.component.js +1 -1
- package/esm2015/lib/_web-components/recipe-cards/index.js +1 -3
- package/esm2015/lib/_web-components/recipe-cards/recipe-card/recipe-card.component.js +326 -404
- package/esm2015/lib/_web-components/recipe-cards/recipe-card-cta/recipe-card-cta.component.js +50 -146
- package/esm2015/lib/_web-components/recipe-cards/recipe-cards.module.js +3 -15
- package/esm2015/lib/_web-components/recipe-catalog/catalog-article-card/catalog-article-card.component.js +1 -1
- package/esm2015/lib/_web-components/recipe-catalog/catalog-category/catalog-category.component.js +35 -29
- package/esm2015/lib/_web-components/recipe-catalog/catalog-header/catalog-header.component.js +1 -1
- package/esm2015/lib/_web-components/recipe-catalog/catalog-list/catalog-list.component.js +27 -31
- package/esm2015/lib/_web-components/recipe-catalog/recipe-catalog.component.js +98 -100
- package/esm2015/lib/_web-components/recipe-creation/recipe-form/recipe-form.component.js +2 -2
- package/esm2015/lib/_web-components/recipe-creation/recipe-stepper/recipe-stepper.component.js +7 -7
- package/esm2015/lib/_web-components/recipe-creation/tags-creator/tags-creator.component.js +4 -4
- package/esm2015/lib/_web-components/recipe-creation/tags-selector/tags-selector.component.js +8 -8
- package/esm2015/lib/_web-components/recipe-details/recipe-addon/recipe-addon.component.js +7 -3
- package/esm2015/lib/_web-components/recipe-details/recipe-details-infos/recipe-details-infos.component.js +57 -358
- package/esm2015/lib/_web-components/recipe-details/recipe-details-ingredients/recipe-details-ingredients.component.js +59 -122
- package/esm2015/lib/_web-components/recipe-details/recipe-details-steps/recipe-details-steps.component.js +51 -72
- package/esm2015/lib/_web-components/recipe-details/recipe-details.component.js +313 -363
- package/esm2015/lib/_web-components/recipe-details/recipe-details.module.js +8 -4
- package/esm2015/lib/_web-components/recipe-details/sponsor-storytelling/sponsor-storytelling.component.js +1 -1
- package/esm2015/lib/_web-components/recipe-helper/recipe-helper.component.js +89 -113
- package/esm2015/lib/_web-components/recipe-modal/recipe-modal.component.js +78 -69
- package/esm2015/lib/_web-components/recipe-tags/recipe-tags.component.js +5 -5
- package/esm2015/lib/_web-components/toaster-stack/toaster-stack.component.js +8 -4
- package/esm2015/lib/_web-components/web-components.module.js +3 -19
- package/esm2015/lib/ng-miam.module.js +5 -7
- package/fesm2015/ng-miam.js +5165 -6973
- package/fesm2015/ng-miam.js.map +1 -1
- package/lib/_components/abstracts/event-tracer.component.d.ts +2 -1
- package/lib/_components/accordion/accordion.component.d.ts +23 -0
- package/lib/_components/components.module.d.ts +38 -36
- package/lib/_components/counter-input/counter-input.component.d.ts +12 -14
- package/lib/_components/index.d.ts +4 -4
- package/lib/_components/modal/modal.component.d.ts +18 -18
- package/lib/_components/product-card/product-card.component.d.ts +40 -0
- package/lib/_components/products-picker/products-picker.component.d.ts +17 -0
- package/lib/_components/recipe-pricing/recipe-pricing.component.d.ts +12 -8
- package/lib/_components/slider-tabs/slider-tabs.component.d.ts +16 -0
- package/lib/_components/tabs/tabs.component.d.ts +11 -11
- package/lib/_components/toaster/toaster.component.d.ts +4 -2
- package/lib/_models/basket-entry.d.ts +16 -20
- package/lib/_models/basket-preview-line.d.ts +1 -0
- package/lib/_models/basket.d.ts +12 -5
- package/lib/_models/item.d.ts +1 -1
- package/lib/_models/recipe.d.ts +0 -5
- package/lib/_models/user.d.ts +0 -1
- package/lib/_services/analytics.service.d.ts +8 -22
- package/lib/_services/baskets-synchronizing/baskets-comparator.service.d.ts +0 -5
- package/lib/_services/baskets-synchronizing/baskets-synchronizer.service.d.ts +3 -6
- package/lib/_services/baskets.service.d.ts +137 -18
- package/lib/_services/context.service.d.ts +2 -4
- package/lib/_services/index.d.ts +2 -4
- package/lib/_services/items.service.d.ts +9 -2
- package/lib/_services/recipe-details.service.d.ts +84 -0
- package/lib/_services/recipe-likes.service.d.ts +2 -1
- package/lib/_services/recipes.service.d.ts +10 -14
- package/lib/_services/scrolling.service.d.ts +8 -0
- package/lib/_services/toaster.service.d.ts +1 -1
- package/lib/_types/basket-action-type.enum.d.ts +9 -0
- package/lib/_types/basket-action.d.ts +14 -0
- package/lib/_types/basket-stats.d.ts +5 -0
- package/lib/_types/builded/miam-interface.d.ts +16 -25
- package/lib/_types/event-trace.d.ts +22 -0
- package/lib/_types/items-comparator.d.ts +0 -5
- package/lib/_types/recipe-filters.d.ts +0 -2
- package/lib/_types/toaster.d.ts +1 -1
- package/lib/_utils/directives/index.d.ts +1 -0
- package/lib/_utils/directives/reach-top.directive.d.ts +13 -0
- package/lib/_utils/pipes/readable-float-number/readable-float-number.pipe.d.ts +1 -1
- package/lib/_utils/utils.module.d.ts +2 -2
- package/lib/_web-components/basket-preview/basket-preview-block/basket-preview-block.component.d.ts +9 -8
- package/lib/_web-components/basket-preview/basket-preview-line/basket-preview-line.component.d.ts +11 -9
- package/lib/_web-components/basket-preview/replace-item/replace-item.component.d.ts +27 -20
- package/lib/_web-components/index.d.ts +0 -3
- package/lib/_web-components/list-scan/basket-preview/basket-preview.component.d.ts +1 -2
- package/lib/_web-components/list-scan/files-inputs/files-inputs.component.d.ts +6 -5
- package/lib/_web-components/list-scan/ingredients-list/ingredients-list.component.d.ts +3 -3
- package/lib/_web-components/list-scan/list-scan.component.d.ts +3 -3
- package/lib/_web-components/list-scan/overlay-button/overlay-button.component.d.ts +8 -6
- package/lib/_web-components/meals-planner/meals-planner.component.d.ts +2 -3
- package/lib/_web-components/recipe-cards/index.d.ts +0 -2
- package/lib/_web-components/recipe-cards/recipe-card/recipe-card.component.d.ts +58 -17
- package/lib/_web-components/recipe-cards/recipe-card-cta/recipe-card-cta.component.d.ts +5 -12
- package/lib/_web-components/recipe-cards/recipe-cards.module.d.ts +7 -9
- package/lib/_web-components/recipe-catalog/catalog-category/catalog-category.component.d.ts +8 -6
- package/lib/_web-components/recipe-catalog/catalog-list/catalog-list.component.d.ts +7 -4
- package/lib/_web-components/recipe-catalog/recipe-catalog.component.d.ts +2 -3
- package/lib/_web-components/recipe-details/recipe-addon/recipe-addon.component.d.ts +5 -2
- package/lib/_web-components/recipe-details/recipe-details-infos/recipe-details-infos.component.d.ts +6 -18
- package/lib/_web-components/recipe-details/recipe-details-ingredients/recipe-details-ingredients.component.d.ts +6 -13
- package/lib/_web-components/recipe-details/recipe-details-steps/recipe-details-steps.component.d.ts +2 -10
- package/lib/_web-components/recipe-details/recipe-details.component.d.ts +29 -36
- package/lib/_web-components/recipe-details/recipe-details.module.d.ts +2 -1
- package/lib/_web-components/recipe-helper/recipe-helper.component.d.ts +2 -6
- package/lib/_web-components/recipe-modal/recipe-modal.component.d.ts +11 -9
- package/lib/_web-components/toaster-stack/toaster-stack.component.d.ts +5 -2
- package/lib/_web-components/web-components.module.d.ts +23 -29
- package/miam-style.css +1 -1
- package/package.json +1 -1
- package/esm2015/lib/_components/abstracts/abstract-recipe-card.component.js +0 -130
- package/esm2015/lib/_components/skeleton/skeleton.component.js +0 -70
- package/esm2015/lib/_components/tabs/tab-body.component.js +0 -30
- package/esm2015/lib/_components/tabs/tab-item.component.js +0 -36
- package/esm2015/lib/_components/tabs/tab-label.component.js +0 -30
- package/esm2015/lib/_models/groceries-entry.js +0 -42
- package/esm2015/lib/_models/groceries-list.js +0 -36
- package/esm2015/lib/_services/counter.service.js +0 -20
- package/esm2015/lib/_services/groceries-entries.service.js +0 -21
- package/esm2015/lib/_services/groceries-lists.service.js +0 -240
- package/esm2015/lib/_services/recipe-events.service.js +0 -63
- package/esm2015/lib/_types/skeleton.enum.js +0 -7
- package/esm2015/lib/_web-components/drawer/drawer.component.js +0 -273
- package/esm2015/lib/_web-components/pos-card/pos-card.component.js +0 -207
- package/esm2015/lib/_web-components/pos-selection/pos-selection.component.js +0 -283
- package/esm2015/lib/_web-components/recipe-cards/catalog-recipe-card/catalog-recipe-card.component.js +0 -632
- package/esm2015/lib/_web-components/recipe-cards/suggestion-card/suggestion-card.component.js +0 -144
- package/lib/_components/abstracts/abstract-recipe-card.component.d.ts +0 -49
- package/lib/_components/skeleton/skeleton.component.d.ts +0 -11
- package/lib/_components/tabs/tab-body.component.d.ts +0 -8
- package/lib/_components/tabs/tab-item.component.d.ts +0 -11
- package/lib/_components/tabs/tab-label.component.d.ts +0 -8
- package/lib/_models/groceries-entry.d.ts +0 -20
- package/lib/_models/groceries-list.d.ts +0 -30
- package/lib/_services/counter.service.d.ts +0 -10
- package/lib/_services/groceries-entries.service.d.ts +0 -10
- package/lib/_services/groceries-lists.service.d.ts +0 -68
- package/lib/_services/recipe-events.service.d.ts +0 -23
- package/lib/_types/skeleton.enum.d.ts +0 -5
- package/lib/_web-components/drawer/drawer.component.d.ts +0 -37
- package/lib/_web-components/pos-card/pos-card.component.d.ts +0 -24
- package/lib/_web-components/pos-selection/pos-selection.component.d.ts +0 -38
- package/lib/_web-components/recipe-cards/catalog-recipe-card/catalog-recipe-card.component.d.ts +0 -49
- package/lib/_web-components/recipe-cards/suggestion-card/suggestion-card.component.d.ts +0 -42
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
// THIS IS JUST AN EXAMPLE - UNUSED IN THE CODE
|
|
2
|
-
import { Injectable, ApplicationRef } from '@angular/core';
|
|
3
|
-
import { BehaviorSubject } from 'rxjs';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
export class CounterService {
|
|
6
|
-
constructor(app) {
|
|
7
|
-
this.app = app;
|
|
8
|
-
this.counterNumber = new BehaviorSubject(1);
|
|
9
|
-
this.counterNumber.asObservable().subscribe(() => this.app.tick());
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
CounterService.ɵfac = function CounterService_Factory(t) { return new (t || CounterService)(i0.ɵɵinject(i0.ApplicationRef)); };
|
|
13
|
-
CounterService.ɵprov = i0.ɵɵdefineInjectable({ token: CounterService, factory: CounterService.ɵfac, providedIn: 'root' });
|
|
14
|
-
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(CounterService, [{
|
|
15
|
-
type: Injectable,
|
|
16
|
-
args: [{
|
|
17
|
-
providedIn: 'root'
|
|
18
|
-
}]
|
|
19
|
-
}], function () { return [{ type: i0.ApplicationRef }]; }, null); })();
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Ii9idWlsZHMvbWlhbS9uZy1taWFtLXNkay9wcm9qZWN0cy9uZy1taWFtL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9fc2VydmljZXMvY291bnRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUUvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUt2QyxNQUFNLE9BQU8sY0FBYztJQUl6QixZQUFvQixHQUFtQjtRQUFuQixRQUFHLEdBQUgsR0FBRyxDQUFnQjtRQUNyQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTVDLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN0RSxDQUFDOzs0RUFSVSxjQUFjO3NEQUFkLGNBQWMsV0FBZCxjQUFjLG1CQUZiLE1BQU07a0RBRVAsY0FBYztjQUgxQixVQUFVO2VBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUSElTIElTIEpVU1QgQU4gRVhBTVBMRSAtIFVOVVNFRCBJTiBUSEUgQ09ERVxuXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBBcHBsaWNhdGlvblJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIENvdW50ZXJTZXJ2aWNlIHtcblxuICBjb3VudGVyTnVtYmVyOiBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFwcDogQXBwbGljYXRpb25SZWYpe1xuICAgIHRoaXMuY291bnRlck51bWJlciA9IG5ldyBCZWhhdmlvclN1YmplY3QoMSk7XG5cbiAgICB0aGlzLmNvdW50ZXJOdW1iZXIuYXNPYnNlcnZhYmxlKCkuc3Vic2NyaWJlKCgpID0+ICB0aGlzLmFwcC50aWNrKCkpO1xuICB9XG5cblxufVxuIl19
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { Service } from 'ngx-jsonapi';
|
|
3
|
-
import { GroceriesEntry } from '../_models/groceries-entry';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
export class GroceriesEntriesService extends Service {
|
|
6
|
-
constructor() {
|
|
7
|
-
super();
|
|
8
|
-
this.resource = GroceriesEntry;
|
|
9
|
-
this.type = 'groceries-entries';
|
|
10
|
-
this.register();
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
GroceriesEntriesService.ɵfac = function GroceriesEntriesService_Factory(t) { return new (t || GroceriesEntriesService)(); };
|
|
14
|
-
GroceriesEntriesService.ɵprov = i0.ɵɵdefineInjectable({ token: GroceriesEntriesService, factory: GroceriesEntriesService.ɵfac, providedIn: 'root' });
|
|
15
|
-
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(GroceriesEntriesService, [{
|
|
16
|
-
type: Injectable,
|
|
17
|
-
args: [{
|
|
18
|
-
providedIn: 'root'
|
|
19
|
-
}]
|
|
20
|
-
}], function () { return []; }, null); })();
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvY2VyaWVzLWVudHJpZXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIvYnVpbGRzL21pYW0vbmctbWlhbS1zZGsvcHJvamVjdHMvbmctbWlhbS9zcmMvIiwic291cmNlcyI6WyJsaWIvX3NlcnZpY2VzL2dyb2Nlcmllcy1lbnRyaWVzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFLNUQsTUFBTSxPQUFPLHVCQUF3QixTQUFRLE9BQXVCO0lBSWxFO1FBQ0UsS0FBSyxFQUFFLENBQUM7UUFKVixhQUFRLEdBQUcsY0FBYyxDQUFDO1FBQzFCLFNBQUksR0FBRyxtQkFBbUIsQ0FBQztRQUl6QixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEIsQ0FBQzs7OEZBUFUsdUJBQXVCOytEQUF2Qix1QkFBdUIsV0FBdkIsdUJBQXVCLG1CQUZ0QixNQUFNO2tEQUVQLHVCQUF1QjtjQUhuQyxVQUFVO2VBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTZXJ2aWNlIH0gZnJvbSAnbmd4LWpzb25hcGknO1xuaW1wb3J0IHsgR3JvY2VyaWVzRW50cnkgfSBmcm9tICcuLi9fbW9kZWxzL2dyb2Nlcmllcy1lbnRyeSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEdyb2Nlcmllc0VudHJpZXNTZXJ2aWNlIGV4dGVuZHMgU2VydmljZTxHcm9jZXJpZXNFbnRyeT4ge1xuICByZXNvdXJjZSA9IEdyb2Nlcmllc0VudHJ5O1xuICB0eXBlID0gJ2dyb2Nlcmllcy1lbnRyaWVzJztcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMucmVnaXN0ZXIoKTtcbiAgfVxufVxuIl19
|
|
@@ -1,240 +0,0 @@
|
|
|
1
|
-
import { HttpClient } from '@angular/common/http';
|
|
2
|
-
import { Inject, Injectable } from '@angular/core';
|
|
3
|
-
import { Service } from 'ngx-jsonapi';
|
|
4
|
-
import { BehaviorSubject } from 'rxjs';
|
|
5
|
-
import { debounceTime, map, skipWhile, switchMap, take, tap } from 'rxjs/operators';
|
|
6
|
-
import { v4 as uuidv4 } from 'uuid';
|
|
7
|
-
import { GroceriesList } from '../_models/groceries-list';
|
|
8
|
-
import { environment as e } from '../environments/environment';
|
|
9
|
-
import { MIAM_BASKET_PATH } from '../providers';
|
|
10
|
-
import { AnalyticsService } from './analytics.service';
|
|
11
|
-
import * as i0 from "@angular/core";
|
|
12
|
-
import * as i1 from "@angular/common/http";
|
|
13
|
-
import * as i2 from "./analytics.service";
|
|
14
|
-
// @dynamic
|
|
15
|
-
export class GroceriesListsService extends Service {
|
|
16
|
-
constructor(miamBasketURL, http, analyticsService) {
|
|
17
|
-
super();
|
|
18
|
-
this.miamBasketURL = miamBasketURL;
|
|
19
|
-
this.http = http;
|
|
20
|
-
this.analyticsService = analyticsService;
|
|
21
|
-
this.resource = GroceriesList;
|
|
22
|
-
this.type = 'groceries-lists';
|
|
23
|
-
// Unused in sdk at the moment but any client app can subscribe on it to know when a recipe has been added
|
|
24
|
-
this.recipeWasAdded$ = new BehaviorSubject([]);
|
|
25
|
-
// Unused in sdk at the moment but any client app can subscribe on it to know when a recipe has been added
|
|
26
|
-
this.recipeWasDeleted$ = new BehaviorSubject([]);
|
|
27
|
-
this.recipesToRemove = new BehaviorSubject([]);
|
|
28
|
-
this.isRemovingRecipes = false;
|
|
29
|
-
// Singleton instance of GroceriesList
|
|
30
|
-
this._list$ = new BehaviorSubject(null);
|
|
31
|
-
this.saveOperationType = '';
|
|
32
|
-
// Observe the fetching of the recipe so calls to list$ are delayed instead of calling refreshCurrentList dozens of times
|
|
33
|
-
this.listIsFetching = false;
|
|
34
|
-
this.register();
|
|
35
|
-
this.recipesToRemove.pipe(skipWhile(toRemove => toRemove.length === 0 || this.isRemovingRecipes), debounceTime(200), tap(() => this.emptyRecipesToRemove())).subscribe();
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* We want list$ to be a singleton that always returns the same list, so it is fetched only when necessary.
|
|
39
|
-
* At any point in time the list can be fetched via the refreshCurrentList function (if we want to fetch it on startup to save time later)
|
|
40
|
-
* But if refreshCurrentList is not called, the list will only be fetched the 1st time it is needed
|
|
41
|
-
*/
|
|
42
|
-
get list$() {
|
|
43
|
-
if (this._list$.value || this.listIsFetching) {
|
|
44
|
-
return this._list$;
|
|
45
|
-
}
|
|
46
|
-
return this.refreshCurrentList();
|
|
47
|
-
}
|
|
48
|
-
takeFirstList() {
|
|
49
|
-
return this.list$.pipe(skipWhile(l => !l), take(1));
|
|
50
|
-
}
|
|
51
|
-
// Check if recipe with id = recipeId is in the GroceriesList
|
|
52
|
-
recipeIsInList(recipeId) {
|
|
53
|
-
return this._list$.pipe(skipWhile(l => !l), take(1), map(list => list.hasRecipe(recipeId)));
|
|
54
|
-
}
|
|
55
|
-
guestsForRecipe(recipe) {
|
|
56
|
-
var _a;
|
|
57
|
-
return (_a = this._list$.value) === null || _a === void 0 ? void 0 : _a.guestsForRecipe(recipe);
|
|
58
|
-
}
|
|
59
|
-
refreshCurrentList() {
|
|
60
|
-
console.log('[Miam] refreshing gl');
|
|
61
|
-
this.listIsFetching = true;
|
|
62
|
-
const cachedListId = localStorage.getItem('_miam/listId');
|
|
63
|
-
// adding this uuid will force request to be sent even if one is still in process
|
|
64
|
-
// think about making a queue to process request in order
|
|
65
|
-
const baseRoute = 'current?uniq_token=' + uuidv4();
|
|
66
|
-
const endpoint = (cachedListId === null || cachedListId === void 0 ? void 0 : cachedListId.toString().match(/^[0-9]+$/)) ? baseRoute + '&merge_with=' + cachedListId : baseRoute;
|
|
67
|
-
// alway keep only the last subscription, that will make forget the last calls
|
|
68
|
-
if (this.currentSubscription) {
|
|
69
|
-
this.currentSubscription.unsubscribe();
|
|
70
|
-
}
|
|
71
|
-
this.currentSubscription = this.get(endpoint + '&include=groceries-entries').pipe(skipWhile(l => l.is_loading), tap(l => this.assignList(l))).subscribe();
|
|
72
|
-
return this._list$;
|
|
73
|
-
}
|
|
74
|
-
resetList(eventTrace = { originPath: '', props: {} }) {
|
|
75
|
-
this.analyticsService.sendEventWhenReady(this.analyticsService.EVENT_RECIPE_RESET, eventTrace.originPath, eventTrace.props);
|
|
76
|
-
return this.takeFirstList().pipe(tap(gl => {
|
|
77
|
-
gl.recipeInfos.forEach(info => {
|
|
78
|
-
const newProp = { recipe_id: info.id };
|
|
79
|
-
const mergedProps = Object.assign(newProp, eventTrace.props);
|
|
80
|
-
this.analyticsService.sendEventWhenReady(this.analyticsService.EVENT_RECIPE_REMOVE, eventTrace.originPath, mergedProps);
|
|
81
|
-
});
|
|
82
|
-
}), switchMap(() => this.get('reset').pipe(skipWhile(l => l.is_loading), tap(l => this.assignList(l)))));
|
|
83
|
-
}
|
|
84
|
-
appendRecipeToList(recipeId, guests, eventTrace, openBasket = false) {
|
|
85
|
-
return this.takeFirstList().pipe(switchMap(list => {
|
|
86
|
-
this.addOrUpdateRecipeInList(list, { id: recipeId, guests }, eventTrace);
|
|
87
|
-
return this.saveList(list, openBasket);
|
|
88
|
-
}));
|
|
89
|
-
}
|
|
90
|
-
appendRecipesToList(recipes, eventTrace, openBasket = false) {
|
|
91
|
-
return this.takeFirstList().pipe(switchMap(list => {
|
|
92
|
-
recipes.forEach(recipe => {
|
|
93
|
-
this.addOrUpdateRecipeInList(list, recipe, { originPath: eventTrace.originPath, props: { recipe_id: recipe === null || recipe === void 0 ? void 0 : recipe.id } });
|
|
94
|
-
});
|
|
95
|
-
return this.saveList(list, openBasket);
|
|
96
|
-
}));
|
|
97
|
-
}
|
|
98
|
-
addOrUpdateRecipeInList(list, recipe, eventTrace) {
|
|
99
|
-
if (!list.hasRecipe(recipe.id)) {
|
|
100
|
-
// append to list
|
|
101
|
-
list.attributes['append-recipes'] = true;
|
|
102
|
-
const info = { id: recipe.id };
|
|
103
|
-
if (recipe.guests) {
|
|
104
|
-
Object.assign(info, { guests: recipe.guests });
|
|
105
|
-
}
|
|
106
|
-
list.attributes['recipes-infos'].push(info);
|
|
107
|
-
this.saveOperationType = 'ADD';
|
|
108
|
-
this.analyticsService.sendEventWhenReady(this.analyticsService.EVENT_RECIPE_ADD, eventTrace.originPath, eventTrace.props);
|
|
109
|
-
}
|
|
110
|
-
else if (recipe.guests) {
|
|
111
|
-
// update guests number
|
|
112
|
-
const info = list.recipeInfos.find(i => i.id === recipe.id);
|
|
113
|
-
if (info.guests.toString() === recipe.guests.toString()) {
|
|
114
|
-
// Avoid saving the list if nothing changed
|
|
115
|
-
return;
|
|
116
|
-
}
|
|
117
|
-
info.guests = recipe.guests.toString();
|
|
118
|
-
this.analyticsService.sendEventWhenReady(this.analyticsService.EVENT_RECIPE_CHANGEGUESTS, eventTrace.originPath, eventTrace.props);
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
removeRecipeFromList(recipeId, eventTrace) {
|
|
122
|
-
const toRemove = this.recipesToRemove.value;
|
|
123
|
-
toRemove.push({ id: recipeId, eventTrace });
|
|
124
|
-
this.recipesToRemove.next(toRemove);
|
|
125
|
-
}
|
|
126
|
-
updateRecipeGuests(recipeId, guests, eventTrace) {
|
|
127
|
-
this.analyticsService.sendEventWhenReady(this.analyticsService.EVENT_RECIPE_CHANGEGUESTS, eventTrace.originPath, eventTrace.props);
|
|
128
|
-
return this.takeFirstList().pipe(switchMap(list => {
|
|
129
|
-
if (list.attributes['recipes-infos']) {
|
|
130
|
-
const recipeInfo = list.attributes['recipes-infos'].find(info => info.id === recipeId);
|
|
131
|
-
recipeInfo.guests = guests.toString();
|
|
132
|
-
this.saveOperationType = 'GUESTS';
|
|
133
|
-
return this.saveList(list);
|
|
134
|
-
}
|
|
135
|
-
return this._list$;
|
|
136
|
-
}));
|
|
137
|
-
}
|
|
138
|
-
addEntriesFromPicture(file, include = [], disableIngredientsMatching = false) {
|
|
139
|
-
return this.takeFirstList().pipe(switchMap(list => {
|
|
140
|
-
let url = [e.miamAPI, 'api/v1/groceries-lists', list.id, 'add_entries_from_picture'].join('/');
|
|
141
|
-
if (disableIngredientsMatching) {
|
|
142
|
-
url += '?disable_matching=true';
|
|
143
|
-
}
|
|
144
|
-
const formData = new FormData();
|
|
145
|
-
formData.append('picture', file);
|
|
146
|
-
formData.append('include', include.join(','));
|
|
147
|
-
return this.http.patch(url, formData).pipe(map((response) => {
|
|
148
|
-
const l = this.new();
|
|
149
|
-
l.fill(response);
|
|
150
|
-
this._list$.next(l);
|
|
151
|
-
return l;
|
|
152
|
-
}));
|
|
153
|
-
}));
|
|
154
|
-
}
|
|
155
|
-
/**
|
|
156
|
-
* Will create a temporary list and set it in _list$. The list won't be marked as current and thus
|
|
157
|
-
* will not be reused
|
|
158
|
-
*/
|
|
159
|
-
createTemporaryList() {
|
|
160
|
-
this.listIsFetching = true;
|
|
161
|
-
this.new().save({ include: ['groceries-entries'] }).subscribe((temporaryList) => {
|
|
162
|
-
this._list$.next(this.afterSave(temporaryList));
|
|
163
|
-
this.listIsFetching = false;
|
|
164
|
-
});
|
|
165
|
-
}
|
|
166
|
-
emptyRecipesToRemove() {
|
|
167
|
-
this.isRemovingRecipes = true;
|
|
168
|
-
const idsToRemove = this.recipesToRemove.value.map(i => i.id);
|
|
169
|
-
if (idsToRemove.length > 0) {
|
|
170
|
-
const eventTrace = this.recipesToRemove.value[0].eventTrace;
|
|
171
|
-
this.takeFirstList().pipe(switchMap(list => {
|
|
172
|
-
if (list.attributes['recipes-infos']) {
|
|
173
|
-
list.attributes['recipes-infos'] = list.attributes['recipes-infos'].filter(info => !idsToRemove.includes(info.id));
|
|
174
|
-
this.analyticsService.sendEventWhenReady(this.analyticsService.EVENT_RECIPE_REMOVE, eventTrace.originPath, eventTrace.props);
|
|
175
|
-
this.saveOperationType = 'REMOVE';
|
|
176
|
-
return this.saveList(list).pipe(take(1));
|
|
177
|
-
}
|
|
178
|
-
})).subscribe(() => {
|
|
179
|
-
this.isRemovingRecipes = false;
|
|
180
|
-
this.recipesToRemove.next(this.recipesToRemove.value.filter(i => !idsToRemove.includes(i.id)));
|
|
181
|
-
});
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
/**
|
|
185
|
-
* save() returns an object that isn't a resource so methods aren't attached, so we have to do a little trick
|
|
186
|
-
* @param res result of the save
|
|
187
|
-
* @returns correct GroceriesList with the right attributes & methods
|
|
188
|
-
*/
|
|
189
|
-
afterSave(res) {
|
|
190
|
-
const list = this.new();
|
|
191
|
-
list.fill(res);
|
|
192
|
-
return list;
|
|
193
|
-
}
|
|
194
|
-
saveList(list, openBasket = false) {
|
|
195
|
-
delete (list.attributes['recipes-ids']);
|
|
196
|
-
delete (list.relationships['groceries-entries']);
|
|
197
|
-
return list.save({ include: ['groceries-entries'] }).pipe(skipWhile((l) => l.is_loading), tap(l => {
|
|
198
|
-
var _a;
|
|
199
|
-
if ((_a = l === null || l === void 0 ? void 0 : l.data) === null || _a === void 0 ? void 0 : _a.id) {
|
|
200
|
-
this._list$.next(this.afterSave(l));
|
|
201
|
-
if (this.saveOperationType === 'ADD') {
|
|
202
|
-
this.recipeWasAdded$.next(list.recipeInfos);
|
|
203
|
-
}
|
|
204
|
-
if (this.saveOperationType === 'REMOVE') {
|
|
205
|
-
this.recipeWasDeleted$.next(list.recipeInfos);
|
|
206
|
-
}
|
|
207
|
-
this.saveOperationType = '';
|
|
208
|
-
if (openBasket) {
|
|
209
|
-
window.open(`${this.miamBasketURL}/${list.id}`, '_blank');
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
}), map(l => l.data));
|
|
213
|
-
}
|
|
214
|
-
assignList(l) {
|
|
215
|
-
// When a CORS error happens the response is a GL with an id equal to the request URL
|
|
216
|
-
// In this case we don't change the GL
|
|
217
|
-
if (l.id.toString().match(/^[0-9]+$/)) {
|
|
218
|
-
if (l.attributes['user-id']) {
|
|
219
|
-
localStorage.removeItem('_miam/listId');
|
|
220
|
-
}
|
|
221
|
-
else {
|
|
222
|
-
localStorage.setItem('_miam/listId', l.id);
|
|
223
|
-
}
|
|
224
|
-
this._list$.next(l);
|
|
225
|
-
this.listIsFetching = false;
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
GroceriesListsService.ɵfac = function GroceriesListsService_Factory(t) { return new (t || GroceriesListsService)(i0.ɵɵinject(MIAM_BASKET_PATH), i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(i2.AnalyticsService)); };
|
|
230
|
-
GroceriesListsService.ɵprov = i0.ɵɵdefineInjectable({ token: GroceriesListsService, factory: GroceriesListsService.ɵfac, providedIn: 'root' });
|
|
231
|
-
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(GroceriesListsService, [{
|
|
232
|
-
type: Injectable,
|
|
233
|
-
args: [{
|
|
234
|
-
providedIn: 'root'
|
|
235
|
-
}]
|
|
236
|
-
}], function () { return [{ type: undefined, decorators: [{
|
|
237
|
-
type: Inject,
|
|
238
|
-
args: [MIAM_BASKET_PATH]
|
|
239
|
-
}] }, { type: i1.HttpClient }, { type: i2.AnalyticsService }]; }, null); })();
|
|
240
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvY2VyaWVzLWxpc3RzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiL2J1aWxkcy9taWFtL25nLW1pYW0tc2RrL3Byb2plY3RzL25nLW1pYW0vc3JjLyIsInNvdXJjZXMiOlsibGliL19zZXJ2aWNlcy9ncm9jZXJpZXMtbGlzdHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFvQixPQUFPLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDeEQsT0FBTyxFQUFjLGVBQWUsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDakUsT0FBTyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEYsT0FBTyxFQUFFLEVBQUUsSUFBSSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFcEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzFELE9BQU8sRUFBRSxXQUFXLElBQUksQ0FBQyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBZ0MsTUFBTSxxQkFBcUIsQ0FBQzs7OztBQUVyRixXQUFXO0FBSVgsTUFBTSxPQUFPLHFCQUFzQixTQUFRLE9BQXNCO0lBaUIvRCxZQUNvQyxhQUFxQixFQUMvQyxJQUFnQixFQUNoQixnQkFBa0M7UUFFMUMsS0FBSyxFQUFFLENBQUM7UUFKMEIsa0JBQWEsR0FBYixhQUFhLENBQVE7UUFDL0MsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBbEI1Qyxh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aUJBQU07Z0JBQ0wsWUFBWSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQzVDO1lBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7U0FDN0I7SUFDSCxDQUFDOzswRkE3UVUscUJBQXFCLGNBa0J0QixnQkFBZ0I7NkRBbEJmLHFCQUFxQixXQUFyQixxQkFBcUIsbUJBRnBCLE1BQU07a0RBRVAscUJBQXFCO2NBSGpDLFVBQVU7ZUFBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7c0JBbUJJLE1BQU07dUJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9jdW1lbnRSZXNvdXJjZSwgU2VydmljZSB9IGZyb20gJ25neC1qc29uYXBpJztcbmltcG9ydCB7IE9ic2VydmFibGUsIEJlaGF2aW9yU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIG1hcCwgc2tpcFdoaWxlLCBzd2l0Y2hNYXAsIHRha2UsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnO1xuaW1wb3J0IHsgUmVjaXBlIH0gZnJvbSAnLi4vX21vZGVscyc7XG5pbXBvcnQgeyBHcm9jZXJpZXNMaXN0IH0gZnJvbSAnLi4vX21vZGVscy9ncm9jZXJpZXMtbGlzdCc7XG5pbXBvcnQgeyBlbnZpcm9ubWVudCBhcyBlIH0gZnJvbSAnLi4vZW52aXJvbm1lbnRzL2Vudmlyb25tZW50JztcbmltcG9ydCB7IE1JQU1fQkFTS0VUX1BBVEggfSBmcm9tICcuLi9wcm92aWRlcnMnO1xuaW1wb3J0IHsgQW5hbHl0aWNzU2VydmljZSwgQ3VzdG9tUHJvcGVydGllcywgRXZlbnRUcmFjZSB9IGZyb20gJy4vYW5hbHl0aWNzLnNlcnZpY2UnO1xuXG4vLyBAZHluYW1pY1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgR3JvY2VyaWVzTGlzdHNTZXJ2aWNlIGV4dGVuZHMgU2VydmljZTxHcm9jZXJpZXNMaXN0PiB7XG5cbiAgcmVzb3VyY2UgPSBHcm9jZXJpZXNMaXN0O1xuICB0eXBlID0gJ2dyb2Nlcmllcy1saXN0cyc7XG4gIC8vIFVudXNlZCBpbiBzZGsgYXQgdGhlIG1vbWVudCBidXQgYW55IGNsaWVudCBhcHAgY2FuIHN1YnNjcmliZSBvbiBpdCB0byBrbm93IHdoZW4gYSByZWNpcGUgaGFzIGJlZW4gYWRkZWRcbiAgcmVjaXBlV2FzQWRkZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDx7IGlkOiBzdHJpbmc7IGd1ZXN0cz86IHN0cmluZyB9W10+KFtdKTtcbiAgLy8gVW51c2VkIGluIHNkayBhdCB0aGUgbW9tZW50IGJ1dCBhbnkgY2xpZW50IGFwcCBjYW4gc3Vic2NyaWJlIG9uIGl0IHRvIGtub3cgd2hlbiBhIHJlY2lwZSBoYXMgYmVlbiBhZGRlZFxuICByZWNpcGVXYXNEZWxldGVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8eyBpZDogc3RyaW5nOyBndWVzdHM/OiBzdHJpbmcgfVtdPihbXSk7XG4gIHJlY2lwZXNUb1JlbW92ZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8e2lkOiBzdHJpbmc7IGV2ZW50VHJhY2U6IEV2ZW50VHJhY2V9W10+KFtdKTtcbiAgaXNSZW1vdmluZ1JlY2lwZXMgPSBmYWxzZTtcbiAgLy8gU2luZ2xldG9uIGluc3RhbmNlIG9mIEdyb2Nlcmllc0xpc3RcbiAgcHJpdmF0ZSBfbGlzdCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEdyb2Nlcmllc0xpc3Q+KG51bGwpO1xuICBwcml2YXRlIHNhdmVPcGVyYXRpb25UeXBlID0gJyc7XG4gIHByaXZhdGUgY3VycmVudFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICAvLyBPYnNlcnZlIHRoZSBmZXRjaGluZyBvZiB0aGUgcmVjaXBlIHNvIGNhbGxzIHRvIGxpc3QkIGFyZSBkZWxheWVkIGluc3RlYWQgb2YgY2FsbGluZyByZWZyZXNoQ3VycmVudExpc3QgZG96ZW5zIG9mIHRpbWVzXG4gIHByaXZhdGUgbGlzdElzRmV0Y2hpbmcgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KE1JQU1fQkFTS0VUX1BBVEgpIHByaXZhdGUgbWlhbUJhc2tldFVSTDogc3RyaW5nLFxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcbiAgICBwcml2YXRlIGFuYWx5dGljc1NlcnZpY2U6IEFuYWx5dGljc1NlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnJlZ2lzdGVyKCk7XG4gICAgdGhpcy5yZWNpcGVzVG9SZW1vdmUucGlwZShcbiAgICAgIHNraXBXaGlsZSh0b1JlbW92ZSA9PiB0b1JlbW92ZS5sZW5ndGggPT09IDAgfHwgdGhpcy5pc1JlbW92aW5nUmVjaXBlcyksXG4gICAgICBkZWJvdW5jZVRpbWUoMjAwKSxcbiAgICAgIHRhcCgoKSA9PiB0aGlzLmVtcHR5UmVjaXBlc1RvUmVtb3ZlKCkpXG4gICAgKS5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXZSB3YW50IGxpc3QkIHRvIGJlIGEgc2luZ2xldG9uIHRoYXQgYWx3YXlzIHJldHVybnMgdGhlIHNhbWUgbGlzdCwgc28gaXQgaXMgZmV0Y2hlZCBvbmx5IHdoZW4gbmVjZXNzYXJ5LlxuICAgKiBBdCBhbnkgcG9pbnQgaW4gdGltZSB0aGUgbGlzdCBjYW4gYmUgZmV0Y2hlZCB2aWEgdGhlIHJlZnJlc2hDdXJyZW50TGlzdCBmdW5jdGlvbiAoaWYgd2Ugd2FudCB0byBmZXRjaCBpdCBvbiBzdGFydHVwIHRvIHNhdmUgdGltZSBsYXRlcilcbiAgICogQnV0IGlmIHJlZnJlc2hDdXJyZW50TGlzdCBpcyBub3QgY2FsbGVkLCB0aGUgbGlzdCB3aWxsIG9ubHkgYmUgZmV0Y2hlZCB0aGUgMXN0IHRpbWUgaXQgaXMgbmVlZGVkXG4gICAqL1xuICBnZXQgbGlzdCQoKTogQmVoYXZpb3JTdWJqZWN0PEdyb2Nlcmllc0xpc3Q+IHtcbiAgICBpZiAodGhpcy5fbGlzdCQudmFsdWUgfHwgdGhpcy5saXN0SXNGZXRjaGluZykgeyByZXR1cm4gdGhpcy5fbGlzdCQ7IH1cblxuICAgIHJldHVybiB0aGlzLnJlZnJlc2hDdXJyZW50TGlzdCgpO1xuICB9XG5cbiAgdGFrZUZpcnN0TGlzdCgpOiBPYnNlcnZhYmxlPEdyb2Nlcmllc0xpc3Q+IHtcbiAgICByZXR1cm4gdGhpcy5saXN0JC5waXBlKFxuICAgICAgc2tpcFdoaWxlKGwgPT4gIWwpLFxuICAgICAgdGFrZSgxKVxuICAgICk7XG4gIH1cblxuXG4gIC8vIENoZWNrIGlmIHJlY2lwZSB3aXRoIGlkID0gcmVjaXBlSWQgaXMgaW4gdGhlIEdyb2Nlcmllc0xpc3RcbiAgcmVjaXBlSXNJbkxpc3QocmVjaXBlSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9saXN0JC5waXBlKFxuICAgICAgc2tpcFdoaWxlKGwgPT4gIWwpLFxuICAgICAgdGFrZSgxKSxcbiAgICAgIG1hcChsaXN0ID0+IGxpc3QuaGFzUmVjaXBlKHJlY2lwZUlkKSlcbiAgICApO1xuICB9XG5cbiAgZ3Vlc3RzRm9yUmVjaXBlKHJlY2lwZTogUmVjaXBlKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fbGlzdCQudmFsdWU/Lmd1ZXN0c0ZvclJlY2lwZShyZWNpcGUpO1xuICB9XG5cbiAgcmVmcmVzaEN1cnJlbnRMaXN0KCk6IEJlaGF2aW9yU3ViamVjdDxHcm9jZXJpZXNMaXN0PiB7XG4gICAgY29uc29sZS5sb2coJ1tNaWFtXSByZWZyZXNoaW5nIGdsJyk7XG4gICAgdGhpcy5saXN0SXNGZXRjaGluZyA9IHRydWU7XG4gICAgY29uc3QgY2FjaGVkTGlzdElkID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ19taWFtL2xpc3RJZCcpO1xuICAgIC8vIGFkZGluZyB0aGlzIHV1aWQgd2lsbCBmb3JjZSByZXF1ZXN0IHRvIGJlIHNlbnQgZXZlbiBpZiBvbmUgaXMgc3RpbGwgaW4gcHJvY2Vzc1xuICAgIC8vIHRoaW5rIGFib3V0IG1ha2luZyBhIHF1ZXVlIHRvIHByb2Nlc3MgcmVxdWVzdCBpbiBvcmRlclxuICAgIGNvbnN0IGJhc2VSb3V0ZSA9ICdjdXJyZW50P3VuaXFfdG9rZW49JyArICh1dWlkdjQgYXMgKCkgPT4gc3RyaW5nKSgpO1xuICAgIGNvbnN0IGVuZHBvaW50ID0gY2FjaGVkTGlzdElkPy50b1N0cmluZygpLm1hdGNoKC9eWzAtOV0rJC8pID8gYmFzZVJvdXRlICsgJyZtZXJnZV93aXRoPScgKyBjYWNoZWRMaXN0SWQgOiBiYXNlUm91dGU7XG4gICAgLy8gYWx3YXkga2VlcCBvbmx5IHRoZSBsYXN0IHN1YnNjcmlwdGlvbiwgdGhhdCB3aWxsIG1ha2UgZm9yZ2V0IHRoZSBsYXN0IGNhbGxzXG4gICAgaWYgKHRoaXMuY3VycmVudFN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5jdXJyZW50U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIHRoaXMuY3VycmVudFN1YnNjcmlwdGlvbiA9IHRoaXMuZ2V0KGVuZHBvaW50ICsgJyZpbmNsdWRlPWdyb2Nlcmllcy1lbnRyaWVzJykucGlwZShcbiAgICAgIHNraXBXaGlsZShsID0+IGwuaXNfbG9hZGluZyksXG4gICAgICB0YXAobCA9PiB0aGlzLmFzc2lnbkxpc3QobCkpXG4gICAgKS5zdWJzY3JpYmUoKTtcblxuICAgIHJldHVybiB0aGlzLl9saXN0JDtcbiAgfVxuXG4gIHJlc2V0TGlzdChldmVudFRyYWNlOiBFdmVudFRyYWNlID0ge29yaWdpblBhdGg6ICcnLCBwcm9wczoge319KTogT2JzZXJ2YWJsZTxHcm9jZXJpZXNMaXN0PiB7XG4gICAgdGhpcy5hbmFseXRpY3NTZXJ2aWNlLnNlbmRFdmVudFdoZW5SZWFkeSh0aGlzLmFuYWx5dGljc1NlcnZpY2UuRVZFTlRfUkVDSVBFX1JFU0VULCBldmVudFRyYWNlLm9yaWdpblBhdGgsIGV2ZW50VHJhY2UucHJvcHMpO1xuICAgIHJldHVybiAgdGhpcy50YWtlRmlyc3RMaXN0KCkucGlwZShcbiAgICAgIHRhcChnbCA9PiB7XG4gICAgICAgIGdsLnJlY2lwZUluZm9zLmZvckVhY2goaW5mbyA9PiB7XG4gICAgICAgICAgY29uc3QgbmV3UHJvcDogQ3VzdG9tUHJvcGVydGllcyA9IHsgcmVjaXBlX2lkOiBpbmZvLmlkIH07XG4gICAgICAgICAgY29uc3QgbWVyZ2VkUHJvcHMgPSBPYmplY3QuYXNzaWduKG5ld1Byb3AsIGV2ZW50VHJhY2UucHJvcHMpO1xuICAgICAgICAgIHRoaXMuYW5hbHl0aWNzU2VydmljZS5zZW5kRXZlbnRXaGVuUmVhZHkodGhpcy5hbmFseXRpY3NTZXJ2aWNlLkVWRU5UX1JFQ0lQRV9SRU1PVkUsIGV2ZW50VHJhY2Uub3JpZ2luUGF0aCwgbWVyZ2VkUHJvcHMpO1xuICAgICAgICB9KTtcbiAgICAgIH0pLFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuZ2V0KCdyZXNldCcpLnBpcGUoXG4gICAgICAgIHNraXBXaGlsZShsID0+IGwuaXNfbG9hZGluZyksXG4gICAgICAgIHRhcChsID0+IHRoaXMuYXNzaWduTGlzdChsKSlcbiAgICAgICkpXG4gICAgKTtcbiAgfVxuXG4gIGFwcGVuZFJlY2lwZVRvTGlzdChyZWNpcGVJZDogc3RyaW5nLCBndWVzdHM6IG51bWJlciwgZXZlbnRUcmFjZTogRXZlbnRUcmFjZSwgb3BlbkJhc2tldDogYm9vbGVhbiA9IGZhbHNlKTogT2JzZXJ2YWJsZTxvYmplY3Q+IHtcbiAgICByZXR1cm4gdGhpcy50YWtlRmlyc3RMaXN0KCkucGlwZShcbiAgICAgIHN3aXRjaE1hcChsaXN0ID0+IHtcbiAgICAgICAgdGhpcy5hZGRPclVwZGF0ZVJlY2lwZUluTGlzdChsaXN0LCB7IGlkOiByZWNpcGVJZCwgZ3Vlc3RzIH0sIGV2ZW50VHJhY2UpO1xuICAgICAgICByZXR1cm4gdGhpcy5zYXZlTGlzdChsaXN0LCBvcGVuQmFza2V0KTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIGFwcGVuZFJlY2lwZXNUb0xpc3QocmVjaXBlczogeyBpZDogc3RyaW5nOyBndWVzdHM6IG51bWJlciB9W10sIGV2ZW50VHJhY2U6IEV2ZW50VHJhY2UsIG9wZW5CYXNrZXQ6IGJvb2xlYW4gPSBmYWxzZSk6IE9ic2VydmFibGU8b2JqZWN0PiB7XG4gICAgcmV0dXJuIHRoaXMudGFrZUZpcnN0TGlzdCgpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAobGlzdCA9PiB7XG4gICAgICAgIHJlY2lwZXMuZm9yRWFjaChyZWNpcGUgPT4ge1xuICAgICAgICAgIHRoaXMuYWRkT3JVcGRhdGVSZWNpcGVJbkxpc3QobGlzdCwgcmVjaXBlLCB7IG9yaWdpblBhdGg6IGV2ZW50VHJhY2Uub3JpZ2luUGF0aCwgcHJvcHM6IHsgcmVjaXBlX2lkOiByZWNpcGU/LmlkIH0gfSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcy5zYXZlTGlzdChsaXN0LCBvcGVuQmFza2V0KTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkT3JVcGRhdGVSZWNpcGVJbkxpc3QobGlzdDogR3JvY2VyaWVzTGlzdCwgcmVjaXBlOiB7IGlkOiBzdHJpbmc7IGd1ZXN0czogbnVtYmVyIH0sIGV2ZW50VHJhY2U6IEV2ZW50VHJhY2UpOiB2b2lkIHtcbiAgICBpZiAoIWxpc3QuaGFzUmVjaXBlKHJlY2lwZS5pZCkpIHtcbiAgICAgIC8vIGFwcGVuZCB0byBsaXN0XG4gICAgICBsaXN0LmF0dHJpYnV0ZXNbJ2FwcGVuZC1yZWNpcGVzJ10gPSB0cnVlO1xuICAgICAgY29uc3QgaW5mbyA9IHsgaWQ6IHJlY2lwZS5pZCB9O1xuICAgICAgaWYgKHJlY2lwZS5ndWVzdHMpIHtcbiAgICAgICAgT2JqZWN0LmFzc2lnbihpbmZvLCB7IGd1ZXN0czogcmVjaXBlLmd1ZXN0cyB9KTtcbiAgICAgIH1cbiAgICAgIGxpc3QuYXR0cmlidXRlc1sncmVjaXBlcy1pbmZvcyddLnB1c2goaW5mbyk7XG4gICAgICB0aGlzLnNhdmVPcGVyYXRpb25UeXBlID0gJ0FERCc7XG4gICAgICB0aGlzLmFuYWx5dGljc1NlcnZpY2Uuc2VuZEV2ZW50V2hlblJlYWR5KHRoaXMuYW5hbHl0aWNzU2VydmljZS5FVkVOVF9SRUNJUEVfQURELCBldmVudFRyYWNlLm9yaWdpblBhdGgsIGV2ZW50VHJhY2UucHJvcHMpO1xuICAgIH0gZWxzZSBpZiAocmVjaXBlLmd1ZXN0cykge1xuICAgICAgLy8gdXBkYXRlIGd1ZXN0cyBudW1iZXJcbiAgICAgIGNvbnN0IGluZm8gPSBsaXN0LnJlY2lwZUluZm9zLmZpbmQoaSA9PiBpLmlkID09PSByZWNpcGUuaWQpO1xuICAgICAgaWYgKGluZm8uZ3Vlc3RzLnRvU3RyaW5nKCkgPT09IHJlY2lwZS5ndWVzdHMudG9TdHJpbmcoKSkge1xuICAgICAgICAvLyBBdm9pZCBzYXZpbmcgdGhlIGxpc3QgaWYgbm90aGluZyBjaGFuZ2VkXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGluZm8uZ3Vlc3RzID0gcmVjaXBlLmd1ZXN0cy50b1N0cmluZygpO1xuICAgICAgdGhpcy5hbmFseXRpY3NTZXJ2aWNlLnNlbmRFdmVudFdoZW5SZWFkeSh0aGlzLmFuYWx5dGljc1NlcnZpY2UuRVZFTlRfUkVDSVBFX0NIQU5HRUdVRVNUUywgZXZlbnRUcmFjZS5vcmlnaW5QYXRoLCBldmVudFRyYWNlLnByb3BzKTtcbiAgICB9XG4gIH1cblxuICByZW1vdmVSZWNpcGVGcm9tTGlzdChyZWNpcGVJZDogc3RyaW5nLCBldmVudFRyYWNlOiBFdmVudFRyYWNlKTogdm9pZCB7XG4gICAgY29uc3QgdG9SZW1vdmUgPSB0aGlzLnJlY2lwZXNUb1JlbW92ZS52YWx1ZTtcbiAgICB0b1JlbW92ZS5wdXNoKHsgaWQ6IHJlY2lwZUlkLCBldmVudFRyYWNlIH0pO1xuICAgIHRoaXMucmVjaXBlc1RvUmVtb3ZlLm5leHQodG9SZW1vdmUpO1xuICB9XG5cbiAgdXBkYXRlUmVjaXBlR3Vlc3RzKHJlY2lwZUlkOiBzdHJpbmcsIGd1ZXN0czogbnVtYmVyLCBldmVudFRyYWNlOiBFdmVudFRyYWNlKTogT2JzZXJ2YWJsZTxHcm9jZXJpZXNMaXN0PiAge1xuICAgIHRoaXMuYW5hbHl0aWNzU2VydmljZS5zZW5kRXZlbnRXaGVuUmVhZHkodGhpcy5hbmFseXRpY3NTZXJ2aWNlLkVWRU5UX1JFQ0lQRV9DSEFOR0VHVUVTVFMsIGV2ZW50VHJhY2Uub3JpZ2luUGF0aCwgZXZlbnRUcmFjZS5wcm9wcyk7XG4gICAgcmV0dXJuIHRoaXMudGFrZUZpcnN0TGlzdCgpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAobGlzdCA9PiB7XG4gICAgICAgIGlmIChsaXN0LmF0dHJpYnV0ZXNbJ3JlY2lwZXMtaW5mb3MnXSkge1xuICAgICAgICAgIGNvbnN0IHJlY2lwZUluZm8gPSBsaXN0LmF0dHJpYnV0ZXNbJ3JlY2lwZXMtaW5mb3MnXS5maW5kKGluZm8gPT4gaW5mby5pZCA9PT0gcmVjaXBlSWQpO1xuICAgICAgICAgIHJlY2lwZUluZm8uZ3Vlc3RzID0gZ3Vlc3RzLnRvU3RyaW5nKCk7XG4gICAgICAgICAgdGhpcy5zYXZlT3BlcmF0aW9uVHlwZSA9ICdHVUVTVFMnO1xuICAgICAgICAgIHJldHVybiB0aGlzLnNhdmVMaXN0KGxpc3QpIDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLl9saXN0JDtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIGFkZEVudHJpZXNGcm9tUGljdHVyZShmaWxlOiBGaWxlLCBpbmNsdWRlID0gW10sIGRpc2FibGVJbmdyZWRpZW50c01hdGNoaW5nID0gZmFsc2UpOiBPYnNlcnZhYmxlPEdyb2Nlcmllc0xpc3Q+IHtcbiAgICByZXR1cm4gdGhpcy50YWtlRmlyc3RMaXN0KCkucGlwZShcbiAgICAgIHN3aXRjaE1hcChsaXN0ID0+IHtcbiAgICAgICAgbGV0IHVybCA9IFtlLm1pYW1BUEksICdhcGkvdjEvZ3JvY2VyaWVzLWxpc3RzJywgbGlzdC5pZCwgJ2FkZF9lbnRyaWVzX2Zyb21fcGljdHVyZSddLmpvaW4oJy8nKTtcbiAgICAgICAgaWYgKGRpc2FibGVJbmdyZWRpZW50c01hdGNoaW5nKSB7XG4gICAgICAgICAgdXJsICs9ICc/ZGlzYWJsZV9tYXRjaGluZz10cnVlJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmb3JtRGF0YTogRm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdwaWN0dXJlJywgZmlsZSk7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZCgnaW5jbHVkZScsIGluY2x1ZGUuam9pbignLCcpKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wYXRjaCh1cmwsIGZvcm1EYXRhKS5waXBlKFxuICAgICAgICAgIG1hcCgocmVzcG9uc2U6IERvY3VtZW50UmVzb3VyY2U8R3JvY2VyaWVzTGlzdD4pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGwgPSB0aGlzLm5ldygpO1xuICAgICAgICAgICAgbC5maWxsKHJlc3BvbnNlKTtcbiAgICAgICAgICAgIHRoaXMuX2xpc3QkLm5leHQobCk7XG4gICAgICAgICAgICByZXR1cm4gbDtcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFdpbGwgY3JlYXRlIGEgdGVtcG9yYXJ5IGxpc3QgYW5kIHNldCBpdCBpbiBfbGlzdCQuIFRoZSBsaXN0IHdvbid0IGJlIG1hcmtlZCBhcyBjdXJyZW50IGFuZCB0aHVzXG4gICAqIHdpbGwgbm90IGJlIHJldXNlZFxuICAgKi9cbiAgY3JlYXRlVGVtcG9yYXJ5TGlzdCgpOiB2b2lkIHtcbiAgICB0aGlzLmxpc3RJc0ZldGNoaW5nID0gdHJ1ZTtcbiAgICB0aGlzLm5ldygpLnNhdmUoe2luY2x1ZGU6IFsnZ3JvY2VyaWVzLWVudHJpZXMnXX0pLnN1YnNjcmliZSgodGVtcG9yYXJ5TGlzdDogRG9jdW1lbnRSZXNvdXJjZTxHcm9jZXJpZXNMaXN0PikgPT4ge1xuICAgICAgdGhpcy5fbGlzdCQubmV4dCh0aGlzLmFmdGVyU2F2ZSh0ZW1wb3JhcnlMaXN0KSk7XG4gICAgICB0aGlzLmxpc3RJc0ZldGNoaW5nID0gZmFsc2U7XG4gICAgfSk7XG4gIH1cblxuICBlbXB0eVJlY2lwZXNUb1JlbW92ZSgpOiB2b2lkIHtcbiAgICB0aGlzLmlzUmVtb3ZpbmdSZWNpcGVzID0gdHJ1ZTtcbiAgICBjb25zdCBpZHNUb1JlbW92ZSA9IHRoaXMucmVjaXBlc1RvUmVtb3ZlLnZhbHVlLm1hcChpID0+IGkuaWQpO1xuICAgIGlmIChpZHNUb1JlbW92ZS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBldmVudFRyYWNlID0gdGhpcy5yZWNpcGVzVG9SZW1vdmUudmFsdWVbMF0uZXZlbnRUcmFjZTtcbiAgICAgIHRoaXMudGFrZUZpcnN0TGlzdCgpLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcChsaXN0ID0+IHtcbiAgICAgICAgICBpZiAobGlzdC5hdHRyaWJ1dGVzWydyZWNpcGVzLWluZm9zJ10pIHtcbiAgICAgICAgICAgIGxpc3QuYXR0cmlidXRlc1sncmVjaXBlcy1pbmZvcyddID0gbGlzdC5hdHRyaWJ1dGVzWydyZWNpcGVzLWluZm9zJ10uZmlsdGVyKGluZm8gPT4gIWlkc1RvUmVtb3ZlLmluY2x1ZGVzKGluZm8uaWQpKTtcbiAgICAgICAgICAgIHRoaXMuYW5hbHl0aWNzU2VydmljZS5zZW5kRXZlbnRXaGVuUmVhZHkodGhpcy5hbmFseXRpY3NTZXJ2aWNlLkVWRU5UX1JFQ0lQRV9SRU1PVkUsIGV2ZW50VHJhY2Uub3JpZ2luUGF0aCwgZXZlbnRUcmFjZS5wcm9wcyk7XG4gICAgICAgICAgICB0aGlzLnNhdmVPcGVyYXRpb25UeXBlID0gJ1JFTU9WRSc7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zYXZlTGlzdChsaXN0KS5waXBlKFxuICAgICAgICAgICAgICB0YWtlKDEpXG4gICAgICAgICAgICApIDtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICApLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuaXNSZW1vdmluZ1JlY2lwZXMgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5yZWNpcGVzVG9SZW1vdmUubmV4dCh0aGlzLnJlY2lwZXNUb1JlbW92ZS52YWx1ZS5maWx0ZXIoaSA9PiAhaWRzVG9SZW1vdmUuaW5jbHVkZXMoaS5pZCkpKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBzYXZlKCkgcmV0dXJucyBhbiBvYmplY3QgdGhhdCBpc24ndCBhIHJlc291cmNlIHNvIG1ldGhvZHMgYXJlbid0IGF0dGFjaGVkLCBzbyB3ZSBoYXZlIHRvIGRvIGEgbGl0dGxlIHRyaWNrXG4gICAqIEBwYXJhbSByZXMgcmVzdWx0IG9mIHRoZSBzYXZlXG4gICAqIEByZXR1cm5zIGNvcnJlY3QgR3JvY2VyaWVzTGlzdCB3aXRoIHRoZSByaWdodCBhdHRyaWJ1dGVzICYgbWV0aG9kc1xuICAgKi9cbiAgcHJpdmF0ZSBhZnRlclNhdmUocmVzOiBEb2N1bWVudFJlc291cmNlPEdyb2Nlcmllc0xpc3Q+KTogR3JvY2VyaWVzTGlzdCB7XG4gICAgY29uc3QgbGlzdCA9IHRoaXMubmV3KCk7XG4gICAgbGlzdC5maWxsKHJlcyk7XG4gICAgcmV0dXJuIGxpc3QgO1xuICB9XG5cbiAgcHJpdmF0ZSBzYXZlTGlzdChsaXN0OiBHcm9jZXJpZXNMaXN0LCBvcGVuQmFza2V0OiBib29sZWFuID0gZmFsc2UpOiBPYnNlcnZhYmxlPEdyb2Nlcmllc0xpc3Q+IHtcbiAgICBkZWxldGUobGlzdC5hdHRyaWJ1dGVzWydyZWNpcGVzLWlkcyddKTtcbiAgICBkZWxldGUobGlzdC5yZWxhdGlvbnNoaXBzWydncm9jZXJpZXMtZW50cmllcyddKTtcbiAgICByZXR1cm4gbGlzdC5zYXZlKHtpbmNsdWRlOiBbJ2dyb2Nlcmllcy1lbnRyaWVzJ119KS5waXBlKFxuICAgICAgc2tpcFdoaWxlKChsOiBEb2N1bWVudFJlc291cmNlPEdyb2Nlcmllc0xpc3Q+KSA9PiBsLmlzX2xvYWRpbmcpLFxuICAgICAgdGFwKGwgPT4ge1xuICAgICAgICBpZiAobD8uZGF0YT8uaWQpIHtcbiAgICAgICAgICB0aGlzLl9saXN0JC5uZXh0KHRoaXMuYWZ0ZXJTYXZlKGwpKTtcbiAgICAgICAgICBpZiAodGhpcy5zYXZlT3BlcmF0aW9uVHlwZSA9PT0gJ0FERCcpIHtcbiAgICAgICAgICAgIHRoaXMucmVjaXBlV2FzQWRkZWQkLm5leHQobGlzdC5yZWNpcGVJbmZvcyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh0aGlzLnNhdmVPcGVyYXRpb25UeXBlID09PSAnUkVNT1ZFJykge1xuICAgICAgICAgICAgdGhpcy5yZWNpcGVXYXNEZWxldGVkJC5uZXh0KGxpc3QucmVjaXBlSW5mb3MpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnNhdmVPcGVyYXRpb25UeXBlID0gJyc7XG4gICAgICAgICAgaWYgKG9wZW5CYXNrZXQpIHtcbiAgICAgICAgICAgIHdpbmRvdy5vcGVuKGAke3RoaXMubWlhbUJhc2tldFVSTH0vJHtsaXN0LmlkfWAsICdfYmxhbmsnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgbWFwKGwgPT4gbC5kYXRhKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGFzc2lnbkxpc3QobDogR3JvY2VyaWVzTGlzdCk6IHZvaWQge1xuICAgIC8vIFdoZW4gYSBDT1JTIGVycm9yIGhhcHBlbnMgdGhlIHJlc3BvbnNlIGlzIGEgR0wgd2l0aCBhbiBpZCBlcXVhbCB0byB0aGUgcmVxdWVzdCBVUkxcbiAgICAvLyBJbiB0aGlzIGNhc2Ugd2UgZG9uJ3QgY2hhbmdlIHRoZSBHTFxuICAgIGlmIChsLmlkLnRvU3RyaW5nKCkubWF0Y2goL15bMC05XSskLykpIHtcbiAgICAgIGlmIChsLmF0dHJpYnV0ZXNbJ3VzZXItaWQnXSkge1xuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnX21pYW0vbGlzdElkJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnX21pYW0vbGlzdElkJywgbC5pZCk7XG4gICAgICB9XG4gICAgICB0aGlzLl9saXN0JC5uZXh0KGwpO1xuICAgICAgdGhpcy5saXN0SXNGZXRjaGluZyA9IGZhbHNlO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import { HttpClient } from '@angular/common/http';
|
|
2
|
-
import { Injectable } from '@angular/core';
|
|
3
|
-
import { environment } from '../environments/environment';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "@angular/common/http";
|
|
6
|
-
export class RecipeEventsService {
|
|
7
|
-
constructor(http) {
|
|
8
|
-
this.http = http;
|
|
9
|
-
this.suggestionUrl = `${environment.miamAPI}/api/events/recipes`;
|
|
10
|
-
this.ORIGIN_SUGGESTION = 'suggestion';
|
|
11
|
-
this.ORIGIN_CATALOG = 'catalog';
|
|
12
|
-
this.ACTION_PROPOSED = 'proposed';
|
|
13
|
-
this.ACTION_SHOWN = 'shown';
|
|
14
|
-
this.ACTION_DISPLAYED = 'displayed';
|
|
15
|
-
this.ACTION_ADDED = 'added';
|
|
16
|
-
this.ACTION_PUSHED = 'pushed';
|
|
17
|
-
this.eventQueue = [];
|
|
18
|
-
this.willAlreadyProcess = false;
|
|
19
|
-
this.QUEUE_REFRESH_TIME_MS = 2000;
|
|
20
|
-
}
|
|
21
|
-
enqueueEvent(recipe, action) {
|
|
22
|
-
if (!recipe.eventOrigin) {
|
|
23
|
-
return;
|
|
24
|
-
}
|
|
25
|
-
const eventHash = {
|
|
26
|
-
recipe_id: recipe.id,
|
|
27
|
-
origin: recipe.eventOrigin,
|
|
28
|
-
action,
|
|
29
|
-
group_id: recipe.eventsGroupId
|
|
30
|
-
};
|
|
31
|
-
this.eventQueue.push(eventHash);
|
|
32
|
-
if (this.willAlreadyProcess) {
|
|
33
|
-
return;
|
|
34
|
-
}
|
|
35
|
-
this.willAlreadyProcess = true;
|
|
36
|
-
setTimeout(() => { this.processQueue(); }, this.QUEUE_REFRESH_TIME_MS);
|
|
37
|
-
}
|
|
38
|
-
processQueue() {
|
|
39
|
-
this.willAlreadyProcess = false;
|
|
40
|
-
const eventsToProcess = this.eventQueue.splice(0, this.eventQueue.length);
|
|
41
|
-
const url = `${this.suggestionUrl}/batch`;
|
|
42
|
-
this.http.post(url, { batch: eventsToProcess }).subscribe();
|
|
43
|
-
}
|
|
44
|
-
sendEvent(recipe, action) {
|
|
45
|
-
if (!recipe.eventOrigin) {
|
|
46
|
-
return;
|
|
47
|
-
}
|
|
48
|
-
let url = `${this.suggestionUrl}/${recipe.id}/${recipe.eventOrigin}/${action}`;
|
|
49
|
-
if (recipe.eventsGroupId) {
|
|
50
|
-
url += `?group_id=${recipe.eventsGroupId}`;
|
|
51
|
-
}
|
|
52
|
-
this.http.post(url, {}).subscribe();
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
RecipeEventsService.ɵfac = function RecipeEventsService_Factory(t) { return new (t || RecipeEventsService)(i0.ɵɵinject(i1.HttpClient)); };
|
|
56
|
-
RecipeEventsService.ɵprov = i0.ɵɵdefineInjectable({ token: RecipeEventsService, factory: RecipeEventsService.ɵfac, providedIn: 'root' });
|
|
57
|
-
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(RecipeEventsService, [{
|
|
58
|
-
type: Injectable,
|
|
59
|
-
args: [{
|
|
60
|
-
providedIn: 'root'
|
|
61
|
-
}]
|
|
62
|
-
}], function () { return [{ type: i1.HttpClient }]; }, null); })();
|
|
63
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjaXBlLWV2ZW50cy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Ii9idWlsZHMvbWlhbS9uZy1taWFtLXNkay9wcm9qZWN0cy9uZy1taWFtL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9fc2VydmljZXMvcmVjaXBlLWV2ZW50cy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7O0FBSzFELE1BQU0sT0FBTyxtQkFBbUI7SUFjOUIsWUFBb0IsSUFBZ0I7UUFBaEIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQWJwQyxrQkFBYSxHQUFHLEdBQUcsV0FBVyxDQUFDLE9BQU8scUJBQXFCLENBQUM7UUFDNUQsc0JBQWlCLEdBQUcsWUFBWSxDQUFDO1FBQ2pDLG1CQUFjLEdBQUcsU0FBUyxDQUFDO1FBQzNCLG9CQUFlLEdBQUcsVUFBVSxDQUFDO1FBQzdCLGlCQUFZLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLHFCQUFnQixHQUFHLFdBQVcsQ0FBQztRQUMvQixpQkFBWSxHQUFHLE9BQU8sQ0FBQztRQUN2QixrQkFBYSxHQUFHLFFBQVEsQ0FBQztRQUVqQixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLHVCQUFrQixHQUFHLEtBQUssQ0FBQztRQUMzQiwwQkFBcUIsR0FBRyxJQUFJLENBQUM7SUFFRyxDQUFDO0lBRXpDLFlBQVksQ0FBQyxNQUFjLEVBQUUsTUFBYztRQUN6QyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBQztZQUN0QixPQUFPO1NBQ1I7UUFDRCxNQUFNLFNBQVMsR0FBRztZQUNoQixTQUFTLEVBQUUsTUFBTSxDQUFDLEVBQUU7WUFDcEIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxXQUFXO1lBQzFCLE1BQU07WUFDTixRQUFRLEVBQUUsTUFBTSxDQUFDLGFBQWE7U0FDL0IsQ0FBQztRQUNGLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2hDLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQUUsT0FBTztTQUFFO1FBRXhDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUM7UUFDL0IsVUFBVSxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDaEMsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDMUUsTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsYUFBYSxRQUFRLENBQUM7UUFDMUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUMsS0FBSyxFQUFFLGVBQWUsRUFBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDNUQsQ0FBQztJQUVELFNBQVMsQ0FBQyxNQUFjLEVBQUUsTUFBYztRQUN0QyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBQztZQUN0QixPQUFPO1NBQ1I7UUFDRCxJQUFJLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxhQUFhLElBQUksTUFBTSxDQUFDLEVBQUUsSUFBSSxNQUFNLENBQUMsV0FBVyxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQy9FLElBQUksTUFBTSxDQUFDLGFBQWEsRUFBQztZQUN2QixHQUFHLElBQUksYUFBYSxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDNUM7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDdEMsQ0FBQzs7c0ZBakRVLG1CQUFtQjsyREFBbkIsbUJBQW1CLFdBQW5CLG1CQUFtQixtQkFGbEIsTUFBTTtrREFFUCxtQkFBbUI7Y0FIL0IsVUFBVTtlQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZWNpcGUgfSBmcm9tICcuLi9fbW9kZWxzJztcbmltcG9ydCB7IGVudmlyb25tZW50IH0gZnJvbSAnLi4vZW52aXJvbm1lbnRzL2Vudmlyb25tZW50JztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgUmVjaXBlRXZlbnRzU2VydmljZSAge1xuICBzdWdnZXN0aW9uVXJsID0gYCR7ZW52aXJvbm1lbnQubWlhbUFQSX0vYXBpL2V2ZW50cy9yZWNpcGVzYDtcbiAgT1JJR0lOX1NVR0dFU1RJT04gPSAnc3VnZ2VzdGlvbic7XG4gIE9SSUdJTl9DQVRBTE9HID0gJ2NhdGFsb2cnO1xuICBBQ1RJT05fUFJPUE9TRUQgPSAncHJvcG9zZWQnO1xuICBBQ1RJT05fU0hPV04gPSAnc2hvd24nO1xuICBBQ1RJT05fRElTUExBWUVEID0gJ2Rpc3BsYXllZCc7XG4gIEFDVElPTl9BRERFRCA9ICdhZGRlZCc7XG4gIEFDVElPTl9QVVNIRUQgPSAncHVzaGVkJztcblxuICBwcml2YXRlIGV2ZW50UXVldWUgPSBbXTtcbiAgcHJpdmF0ZSB3aWxsQWxyZWFkeVByb2Nlc3MgPSBmYWxzZTtcbiAgcHJpdmF0ZSBRVUVVRV9SRUZSRVNIX1RJTUVfTVMgPSAyMDAwO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCkgeyB9XG5cbiAgZW5xdWV1ZUV2ZW50KHJlY2lwZTogUmVjaXBlLCBhY3Rpb246IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghcmVjaXBlLmV2ZW50T3JpZ2luKXtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZXZlbnRIYXNoID0ge1xuICAgICAgcmVjaXBlX2lkOiByZWNpcGUuaWQsXG4gICAgICBvcmlnaW46IHJlY2lwZS5ldmVudE9yaWdpbixcbiAgICAgIGFjdGlvbixcbiAgICAgIGdyb3VwX2lkOiByZWNpcGUuZXZlbnRzR3JvdXBJZFxuICAgIH07XG4gICAgdGhpcy5ldmVudFF1ZXVlLnB1c2goZXZlbnRIYXNoKTtcbiAgICBpZiAodGhpcy53aWxsQWxyZWFkeVByb2Nlc3MpIHsgcmV0dXJuOyB9XG5cbiAgICB0aGlzLndpbGxBbHJlYWR5UHJvY2VzcyA9IHRydWU7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7IHRoaXMucHJvY2Vzc1F1ZXVlKCk7IH0sIHRoaXMuUVVFVUVfUkVGUkVTSF9USU1FX01TKTtcbiAgfVxuXG4gIHByb2Nlc3NRdWV1ZSgpOiB2b2lkIHtcbiAgICB0aGlzLndpbGxBbHJlYWR5UHJvY2VzcyA9IGZhbHNlO1xuICAgIGNvbnN0IGV2ZW50c1RvUHJvY2VzcyA9IHRoaXMuZXZlbnRRdWV1ZS5zcGxpY2UoMCwgdGhpcy5ldmVudFF1ZXVlLmxlbmd0aCk7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5zdWdnZXN0aW9uVXJsfS9iYXRjaGA7XG4gICAgdGhpcy5odHRwLnBvc3QodXJsLCB7YmF0Y2g6IGV2ZW50c1RvUHJvY2Vzc30pLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgc2VuZEV2ZW50KHJlY2lwZTogUmVjaXBlLCBhY3Rpb246IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghcmVjaXBlLmV2ZW50T3JpZ2luKXtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGV0IHVybCA9IGAke3RoaXMuc3VnZ2VzdGlvblVybH0vJHtyZWNpcGUuaWR9LyR7cmVjaXBlLmV2ZW50T3JpZ2lufS8ke2FjdGlvbn1gO1xuICAgIGlmIChyZWNpcGUuZXZlbnRzR3JvdXBJZCl7XG4gICAgICB1cmwgKz0gYD9ncm91cF9pZD0ke3JlY2lwZS5ldmVudHNHcm91cElkfWA7XG4gICAgfVxuICAgIHRoaXMuaHR0cC5wb3N0KHVybCwge30pLnN1YnNjcmliZSgpO1xuICB9XG59XG4iXX0=
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
export var Skeleton;
|
|
2
|
-
(function (Skeleton) {
|
|
3
|
-
Skeleton[Skeleton["Picture"] = 0] = "Picture";
|
|
4
|
-
Skeleton[Skeleton["Text"] = 1] = "Text";
|
|
5
|
-
Skeleton[Skeleton["IconWithInfo"] = 2] = "IconWithInfo";
|
|
6
|
-
})(Skeleton || (Skeleton = {}));
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2tlbGV0b24uZW51bS5qcyIsInNvdXJjZVJvb3QiOiIvYnVpbGRzL21pYW0vbmctbWlhbS1zZGsvcHJvamVjdHMvbmctbWlhbS9zcmMvIiwic291cmNlcyI6WyJsaWIvX3R5cGVzL3NrZWxldG9uLmVudW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksUUFJWDtBQUpELFdBQVksUUFBUTtJQUNsQiw2Q0FBTyxDQUFBO0lBQ1AsdUNBQUksQ0FBQTtJQUNKLHVEQUFZLENBQUE7QUFDZCxDQUFDLEVBSlcsUUFBUSxLQUFSLFFBQVEsUUFJbkIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBTa2VsZXRvbiB7XG4gIFBpY3R1cmUsXG4gIFRleHQsXG4gIEljb25XaXRoSW5mbyxcbn1cbiJdfQ==
|