@infrab4a/connect-angular 5.5.0-alpha.0 → 5.5.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (125) hide show
  1. package/angular-connect.module.d.ts +6 -9
  2. package/angular-firebase-auth.module.d.ts +1 -2
  3. package/angular-firestore.module.d.ts +1 -2
  4. package/esm2022/angular-connect.module.mjs +288 -0
  5. package/esm2022/angular-elastic-search.module.mjs +34 -0
  6. package/esm2022/angular-firebase-auth.module.mjs +140 -0
  7. package/esm2022/angular-firestore.module.mjs +538 -0
  8. package/esm2022/angular-hasura-graphql.module.mjs +333 -0
  9. package/esm2022/angular-vertex-search.module.mjs +34 -0
  10. package/{esm2020 → esm2022}/persistence/cookie-data-persistence.mjs +4 -4
  11. package/{esm2020 → esm2022}/services/auth.service.mjs +6 -6
  12. package/{esm2020 → esm2022}/services/cart/cart-services.facade.mjs +5 -5
  13. package/{esm2020 → esm2022}/services/cart.service.mjs +5 -5
  14. package/{esm2020 → esm2022}/services/catalog/adapters/new-category-structure.adapter.mjs +6 -6
  15. package/{esm2020 → esm2022}/services/catalog/adapters/old-category-structure.adapter.mjs +6 -6
  16. package/esm2022/services/catalog/catalog.service.mjs +111 -0
  17. package/esm2022/services/catalog/category.service.mjs +42 -0
  18. package/esm2022/services/catalog/context/catalog-search.context.mjs +40 -0
  19. package/{esm2020 → esm2022}/services/catalog/facades/catalog-service.facade.mjs +6 -6
  20. package/{esm2020 → esm2022}/services/catalog/facades/catalog-strategies.facade.mjs +5 -5
  21. package/{esm2020 → esm2022}/services/catalog/facades/category-repository.facade.mjs +6 -6
  22. package/{esm2020 → esm2022}/services/catalog/facades/category-service.facade.mjs +6 -6
  23. package/{esm2020 → esm2022}/services/catalog/facades/product-catalog.facade.mjs +6 -6
  24. package/esm2022/services/catalog/helpers/brand-manager.helper.mjs +57 -0
  25. package/esm2022/services/catalog/helpers/catalog-filter.helper.mjs +44 -0
  26. package/esm2022/services/catalog/helpers/catalog-sort.helper.mjs +52 -0
  27. package/{esm2020 → esm2022}/services/catalog/helpers/product-fields.helper.mjs +4 -4
  28. package/{esm2020 → esm2022}/services/catalog/models/category-with-tree.model.mjs +1 -1
  29. package/{esm2020 → esm2022}/services/catalog/services/catalog-helpers.service.mjs +5 -5
  30. package/{esm2020 → esm2022}/services/catalog/services/catalog-operations.facade.mjs +5 -5
  31. package/{esm2020 → esm2022}/services/catalog/services/catalog-repository.service.mjs +6 -6
  32. package/{esm2020 → esm2022}/services/catalog/services/product-management.facade.mjs +6 -6
  33. package/esm2022/services/catalog/strategies/category-search.strategy.mjs +133 -0
  34. package/esm2022/services/catalog/strategies/profile-search.strategy.mjs +42 -0
  35. package/esm2022/services/catalog/strategies/term-search.strategy.mjs +123 -0
  36. package/esm2022/services/catalog/wishlist.service.mjs +254 -0
  37. package/{esm2020 → esm2022}/services/checkout/checkout-dependencies.facade.mjs +6 -6
  38. package/{esm2020 → esm2022}/services/checkout/checkout-repositories.facade.mjs +6 -6
  39. package/{esm2020 → esm2022}/services/checkout-subscription.service.mjs +6 -6
  40. package/{esm2020 → esm2022}/services/checkout.service.mjs +7 -7
  41. package/{esm2020 → esm2022}/services/coupon/coupon-repositories.facade.mjs +6 -6
  42. package/esm2022/services/coupon.service.mjs +248 -0
  43. package/{esm2020 → esm2022}/services/home-shop/home-shop-repositories.facade.mjs +6 -6
  44. package/{esm2020 → esm2022}/services/home-shop.service.mjs +5 -5
  45. package/esm2022/services/order-product-review.service.mjs +110 -0
  46. package/{esm2020 → esm2022}/services/order.service.mjs +6 -6
  47. package/{esm2020 → esm2022}/services/shared/configuration.facade.mjs +6 -6
  48. package/{fesm2020 → fesm2022}/infrab4a-connect-angular.mjs +782 -784
  49. package/fesm2022/infrab4a-connect-angular.mjs.map +1 -0
  50. package/package.json +9 -15
  51. package/services/catalog/category.service.d.ts +1 -0
  52. package/services/checkout.service.d.ts +1 -1
  53. package/esm2020/angular-connect.module.mjs +0 -291
  54. package/esm2020/angular-elastic-search.module.mjs +0 -34
  55. package/esm2020/angular-firebase-auth.module.mjs +0 -141
  56. package/esm2020/angular-firestore.module.mjs +0 -541
  57. package/esm2020/angular-hasura-graphql.module.mjs +0 -333
  58. package/esm2020/angular-vertex-search.module.mjs +0 -34
  59. package/esm2020/services/catalog/catalog.service.mjs +0 -111
  60. package/esm2020/services/catalog/category.service.mjs +0 -39
  61. package/esm2020/services/catalog/context/catalog-search.context.mjs +0 -40
  62. package/esm2020/services/catalog/helpers/brand-manager.helper.mjs +0 -57
  63. package/esm2020/services/catalog/helpers/catalog-filter.helper.mjs +0 -44
  64. package/esm2020/services/catalog/helpers/catalog-sort.helper.mjs +0 -52
  65. package/esm2020/services/catalog/strategies/category-search.strategy.mjs +0 -133
  66. package/esm2020/services/catalog/strategies/profile-search.strategy.mjs +0 -42
  67. package/esm2020/services/catalog/strategies/term-search.strategy.mjs +0 -123
  68. package/esm2020/services/catalog/wishlist.service.mjs +0 -254
  69. package/esm2020/services/coupon.service.mjs +0 -248
  70. package/esm2020/services/order-product-review.service.mjs +0 -110
  71. package/fesm2015/infrab4a-connect-angular.mjs +0 -3486
  72. package/fesm2015/infrab4a-connect-angular.mjs.map +0 -1
  73. package/fesm2020/infrab4a-connect-angular.mjs.map +0 -1
  74. /package/{esm2020 → esm2022}/consts/backend-url.const.mjs +0 -0
  75. /package/{esm2020 → esm2022}/consts/category-structure.mjs +0 -0
  76. /package/{esm2020 → esm2022}/consts/default-shop.const.mjs +0 -0
  77. /package/{esm2020 → esm2022}/consts/es-config.const.mjs +0 -0
  78. /package/{esm2020 → esm2022}/consts/firebase-const.mjs +0 -0
  79. /package/{esm2020 → esm2022}/consts/hasura-options.const.mjs +0 -0
  80. /package/{esm2020 → esm2022}/consts/index.mjs +0 -0
  81. /package/{esm2020 → esm2022}/consts/persistence.const.mjs +0 -0
  82. /package/{esm2020 → esm2022}/consts/storage-base-url.const.mjs +0 -0
  83. /package/{esm2020 → esm2022}/consts/vertex-config.const.mjs +0 -0
  84. /package/{esm2020 → esm2022}/helpers/index.mjs +0 -0
  85. /package/{esm2020 → esm2022}/helpers/mobile-operation-system-checker.helper.mjs +0 -0
  86. /package/{esm2020 → esm2022}/index.mjs +0 -0
  87. /package/{esm2020 → esm2022}/infrab4a-connect-angular.mjs +0 -0
  88. /package/{esm2020 → esm2022}/interfaces/catalog-strategies.interface.mjs +0 -0
  89. /package/{esm2020 → esm2022}/interfaces/category-facades.interface.mjs +0 -0
  90. /package/{esm2020 → esm2022}/interfaces/index.mjs +0 -0
  91. /package/{esm2020 → esm2022}/persistence/data-persistence.mjs +0 -0
  92. /package/{esm2020 → esm2022}/persistence/index.mjs +0 -0
  93. /package/{esm2020 → esm2022}/services/cart/index.mjs +0 -0
  94. /package/{esm2020 → esm2022}/services/catalog/adapters/category-structure.adapter.mjs +0 -0
  95. /package/{esm2020 → esm2022}/services/catalog/adapters/index.mjs +0 -0
  96. /package/{esm2020 → esm2022}/services/catalog/enums/index.mjs +0 -0
  97. /package/{esm2020 → esm2022}/services/catalog/enums/product-sorts.enum.mjs +0 -0
  98. /package/{esm2020 → esm2022}/services/catalog/facades/index.mjs +0 -0
  99. /package/{esm2020 → esm2022}/services/catalog/helpers/index.mjs +0 -0
  100. /package/{esm2020 → esm2022}/services/catalog/index.mjs +0 -0
  101. /package/{esm2020 → esm2022}/services/catalog/models/index.mjs +0 -0
  102. /package/{esm2020 → esm2022}/services/catalog/services/index.mjs +0 -0
  103. /package/{esm2020 → esm2022}/services/catalog/strategies/index.mjs +0 -0
  104. /package/{esm2020 → esm2022}/services/catalog/strategies/types/strategy-params.type.mjs +0 -0
  105. /package/{esm2020 → esm2022}/services/catalog/types/fetch-products-options.type.mjs +0 -0
  106. /package/{esm2020 → esm2022}/services/catalog/types/fetch-products-params.type.mjs +0 -0
  107. /package/{esm2020 → esm2022}/services/catalog/types/fetch-products-response.type.mjs +0 -0
  108. /package/{esm2020 → esm2022}/services/catalog/types/index.mjs +0 -0
  109. /package/{esm2020 → esm2022}/services/catalog/types/method-params.type.mjs +0 -0
  110. /package/{esm2020 → esm2022}/services/catalog/types/product-sort.type.mjs +0 -0
  111. /package/{esm2020 → esm2022}/services/checkout/index.mjs +0 -0
  112. /package/{esm2020 → esm2022}/services/coupon/index.mjs +0 -0
  113. /package/{esm2020 → esm2022}/services/coupon/types/coupon-params.type.mjs +0 -0
  114. /package/{esm2020 → esm2022}/services/helpers/index.mjs +0 -0
  115. /package/{esm2020 → esm2022}/services/helpers/util.helper.mjs +0 -0
  116. /package/{esm2020 → esm2022}/services/home-shop/index.mjs +0 -0
  117. /package/{esm2020 → esm2022}/services/index.mjs +0 -0
  118. /package/{esm2020 → esm2022}/services/shared/index.mjs +0 -0
  119. /package/{esm2020 → esm2022}/services/types/index.mjs +0 -0
  120. /package/{esm2020 → esm2022}/services/types/pending-product-review.type.mjs +0 -0
  121. /package/{esm2020 → esm2022}/services/types/product-review-create.type.mjs +0 -0
  122. /package/{esm2020 → esm2022}/services/types/required-checkout-data.type.mjs +0 -0
  123. /package/{esm2020 → esm2022}/services/types/required-checkout-subscription-data.type.mjs +0 -0
  124. /package/{esm2020 → esm2022}/types/firebase-app-config.type.mjs +0 -0
  125. /package/{esm2020 → esm2022}/types/index.mjs +0 -0
@@ -1,110 +0,0 @@
1
- import { Inject, Injectable } from '@angular/core';
2
- import { OrderFirestoreRepository, OrderStatus, ProductReview, Where, } from '@infrab4a/connect';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@infrab4a/connect";
5
- export class OrderProductReviewService {
6
- constructor(orderRepository, productReviewRepository, variantRepository) {
7
- this.orderRepository = orderRepository;
8
- this.productReviewRepository = productReviewRepository;
9
- this.variantRepository = variantRepository;
10
- }
11
- async getPendingReviewsByEmail(email) {
12
- const products = [];
13
- const orders = await this.getOrdersByEmail(email);
14
- if (orders.length) {
15
- for (const order of orders) {
16
- const lineItems = order.lineItems.filter((item) => !item.isGift);
17
- for (const item of lineItems) {
18
- const productReview = await this.getProductReview(order, item);
19
- if (productReview?.status != null)
20
- continue;
21
- products.push(this.buildProductReview(order, item, productReview));
22
- }
23
- }
24
- }
25
- return products;
26
- }
27
- async getOrdersByEmail(email) {
28
- const { data: orders } = await this.orderRepository.find({
29
- filters: {
30
- user: {
31
- email: email,
32
- },
33
- status: OrderStatus.ENTREGUE,
34
- createdAt: {
35
- operator: Where.GTE,
36
- value: new Date(2024, 0, 0, 0, 0, 0).getTime(),
37
- },
38
- },
39
- orderBy: {
40
- createdAt: 'desc',
41
- },
42
- });
43
- return orders;
44
- }
45
- async getProductReview(order, item) {
46
- const products = [item.id];
47
- const isVariant = await this.variantRepository
48
- .find({
49
- filters: {
50
- id: item.id,
51
- },
52
- })
53
- .then((res) => res.data.at(0));
54
- if (isVariant)
55
- products.push(isVariant.productId);
56
- const productReview = await this.productReviewRepository
57
- .find({
58
- filters: {
59
- orderId: { operator: Where.IN, value: [order.id, order.orderNumber].filter(Boolean) },
60
- productId: { operator: Where.IN, value: products },
61
- },
62
- })
63
- .then((res) => res.data.at(0));
64
- return productReview;
65
- }
66
- buildProductReview(order, item, review) {
67
- return {
68
- id: item.id,
69
- orderId: order.id,
70
- orderNumber: order.orderNumber,
71
- isEdition: false,
72
- name: item.name,
73
- image: item.image,
74
- deliveryDate: order.deliveredAt || null,
75
- evaluationInAnalysis: review ? true : false,
76
- rating: review ? review.rate : null,
77
- shopProductSlug: item.slug,
78
- };
79
- }
80
- async createReview(review) {
81
- return this.productReviewRepository.create(ProductReview.toInstance({
82
- productId: review.productId.toString(),
83
- shop: review.shop,
84
- rate: review.rate,
85
- author: review.author,
86
- email: review.email,
87
- location: review.location,
88
- review: review.comment,
89
- title: review.title,
90
- personId: review.personId,
91
- points: review.points,
92
- orderId: review.orderId,
93
- }));
94
- }
95
- }
96
- OrderProductReviewService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: OrderProductReviewService, deps: [{ token: 'OrderRepository' }, { token: 'ProductReviewRepository' }, { token: 'VariantRepository' }], target: i0.ɵɵFactoryTarget.Injectable });
97
- OrderProductReviewService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: OrderProductReviewService });
98
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: OrderProductReviewService, decorators: [{
99
- type: Injectable
100
- }], ctorParameters: function () { return [{ type: i1.OrderFirestoreRepository, decorators: [{
101
- type: Inject,
102
- args: ['OrderRepository']
103
- }] }, { type: undefined, decorators: [{
104
- type: Inject,
105
- args: ['ProductReviewRepository']
106
- }] }, { type: undefined, decorators: [{
107
- type: Inject,
108
- args: ['VariantRepository']
109
- }] }]; } });
110
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXItcHJvZHVjdC1yZXZpZXcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvbm5lY3QtYW5ndWxhci9zcmMvc2VydmljZXMvb3JkZXItcHJvZHVjdC1yZXZpZXcuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUNsRCxPQUFPLEVBR0wsd0JBQXdCLEVBQ3hCLFdBQVcsRUFDWCxhQUFhLEVBR2IsS0FBSyxHQUNOLE1BQU0sbUJBQW1CLENBQUE7OztBQUsxQixNQUFNLE9BQU8seUJBQXlCO0lBQ3BDLFlBQzhDLGVBQXlDLEVBQ2pDLHVCQUFnRCxFQUN0RCxpQkFBb0M7UUFGdEMsb0JBQWUsR0FBZixlQUFlLENBQTBCO1FBQ2pDLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBeUI7UUFDdEQsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtJQUNqRixDQUFDO0lBRUosS0FBSyxDQUFDLHdCQUF3QixDQUFDLEtBQWE7UUFDMUMsTUFBTSxRQUFRLEdBQTJCLEVBQUUsQ0FBQTtRQUMzQyxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUVqRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUU7WUFDakIsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFNLEVBQUU7Z0JBQzFCLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtnQkFFaEUsS0FBSyxNQUFNLElBQUksSUFBSSxTQUFTLEVBQUU7b0JBQzVCLE1BQU0sYUFBYSxHQUFHLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQTtv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QyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUk7WUFDbkMsZUFBZSxFQUFFLElBQUksQ0FBQyxJQUFJO1NBQzNCLENBQUE7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLFlBQVksQ0FBQyxNQUEyQjtRQUM1QyxPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLENBQ3hDLGFBQWEsQ0FBQyxVQUFVLENBQUM7WUFDdkIsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFO1lBQ3RDLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtZQUNqQixJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7WUFDakIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNO1lBQ3JCLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSztZQUNuQixRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVE7WUFDekIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxPQUFPO1lBQ3RCLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSztZQUNuQixRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVE7WUFDekIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNO1lBQ3JCLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTztTQUN4QixDQUFDLENBQ0gsQ0FBQTtJQUNILENBQUM7O3NIQXRHVSx5QkFBeUIsa0JBRTFCLGlCQUFpQixhQUNqQix5QkFBeUIsYUFDekIsbUJBQW1COzBIQUpsQix5QkFBeUI7MkZBQXpCLHlCQUF5QjtrQkFEckMsVUFBVTs7MEJBR04sTUFBTTsyQkFBQyxpQkFBaUI7OzBCQUN4QixNQUFNOzJCQUFDLHlCQUF5Qjs7MEJBQ2hDLE1BQU07MkJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7XG4gIExpbmVJdGVtLFxuICBPcmRlcixcbiAgT3JkZXJGaXJlc3RvcmVSZXBvc2l0b3J5LFxuICBPcmRlclN0YXR1cyxcbiAgUHJvZHVjdFJldmlldyxcbiAgUHJvZHVjdFJldmlld1JlcG9zaXRvcnksXG4gIFZhcmlhbnRSZXBvc2l0b3J5LFxuICBXaGVyZSxcbn0gZnJvbSAnQGluZnJhYjRhL2Nvbm5lY3QnXG5cbmltcG9ydCB7IFBlbmRpbmdQcm9kdWN0UmV2aWV3LCBQcm9kdWN0UmV2aWV3Q3JlYXRlIH0gZnJvbSAnLi90eXBlcydcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE9yZGVyUHJvZHVjdFJldmlld1NlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KCdPcmRlclJlcG9zaXRvcnknKSBwcml2YXRlIHJlYWRvbmx5IG9yZGVyUmVwb3NpdG9yeTogT3JkZXJGaXJlc3RvcmVSZXBvc2l0b3J5LFxuICAgIEBJbmplY3QoJ1Byb2R1Y3RSZXZpZXdSZXBvc2l0b3J5JykgcHJpdmF0ZSByZWFkb25seSBwcm9kdWN0UmV2aWV3UmVwb3NpdG9yeTogUHJvZHVjdFJldmlld1JlcG9zaXRvcnksXG4gICAgQEluamVjdCgnVmFyaWFudFJlcG9zaXRvcnknKSBwcml2YXRlIHJlYWRvbmx5IHZhcmlhbnRSZXBvc2l0b3J5OiBWYXJpYW50UmVwb3NpdG9yeSxcbiAgKSB7fVxuXG4gIGFzeW5jIGdldFBlbmRpbmdSZXZpZXdzQnlFbWFpbChlbWFpbDogc3RyaW5nKTogUHJvbWlzZTxQZW5kaW5nUHJvZHVjdFJldmlld1tdPiB7XG4gICAgY29uc3QgcHJvZHVjdHM6IFBlbmRpbmdQcm9kdWN0UmV2aWV3W10gPSBbXVxuICAgIGNvbnN0IG9yZGVycyA9IGF3YWl0IHRoaXMuZ2V0T3JkZXJzQnlFbWFpbChlbWFpbClcblxuICAgIGlmIChvcmRlcnMubGVuZ3RoKSB7XG4gICAgICBmb3IgKGNvbnN0IG9yZGVyIG9mIG9yZGVycykge1xuICAgICAgICBjb25zdCBsaW5lSXRlbXMgPSBvcmRlci5saW5lSXRlbXMuZmlsdGVyKChpdGVtKSA9PiAhaXRlbS5pc0dpZnQpXG5cbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGxpbmVJdGVtcykge1xuICAgICAgICAgIGNvbnN0IHByb2R1Y3RSZXZpZXcgPSBhd2FpdCB0aGlzLmdldFByb2R1Y3RSZXZpZXcob3JkZXIsIGl0ZW0pXG5cbiAgICAgICAgICBpZiAocHJvZHVjdFJldmlldz8uc3RhdHVzICE9IG51bGwpIGNvbnRpbnVlXG5cbiAgICAgICAgICBwcm9kdWN0cy5wdXNoKHRoaXMuYnVpbGRQcm9kdWN0UmV2aWV3KG9yZGVyLCBpdGVtLCBwcm9kdWN0UmV2aWV3KSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBwcm9kdWN0c1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRPcmRlcnNCeUVtYWlsKGVtYWlsOiBzdHJpbmcpOiBQcm9taXNlPE9yZGVyW10+IHtcbiAgICBjb25zdCB7IGRhdGE6IG9yZGVycyB9ID0gYXdhaXQgdGhpcy5vcmRlclJlcG9zaXRvcnkuZmluZCh7XG4gICAgICBmaWx0ZXJzOiB7XG4gICAgICAgIHVzZXI6IHtcbiAgICAgICAgICBlbWFpbDogZW1haWwsXG4gICAgICAgIH0sXG4gICAgICAgIHN0YXR1czogT3JkZXJTdGF0dXMuRU5UUkVHVUUsXG4gICAgICAgIGNyZWF0ZWRBdDoge1xuICAgICAgICAgIG9wZXJhdG9yOiBXaGVyZS5HVEUsXG4gICAgICAgICAgdmFsdWU6IG5ldyBEYXRlKDIwMjQsIDAsIDAsIDAsIDAsIDApLmdldFRpbWUoKSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBvcmRlckJ5OiB7XG4gICAgICAgIGNyZWF0ZWRBdDogJ2Rlc2MnLFxuICAgICAgfSxcbiAgICB9KVxuXG4gICAgcmV0dXJuIG9yZGVyc1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRQcm9kdWN0UmV2aWV3KG9yZGVyOiBPcmRlciwgaXRlbTogTGluZUl0ZW0pIHtcbiAgICBjb25zdCBwcm9kdWN0czogc3RyaW5nW10gPSBbaXRlbS5pZF1cbiAgICBjb25zdCBpc1ZhcmlhbnQgPSBhd2FpdCB0aGlzLnZhcmlhbnRSZXBvc2l0b3J5XG4gICAgICAuZmluZCh7XG4gICAgICAgIGZpbHRlcnM6IHtcbiAgICAgICAgICBpZDogaXRlbS5pZCxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgICAudGhlbigocmVzKSA9PiByZXMuZGF0YS5hdCgwKSlcblxuICAgIGlmIChpc1ZhcmlhbnQpIHByb2R1Y3RzLnB1c2goaXNWYXJpYW50LnByb2R1Y3RJZClcbiAgICBjb25zdCBwcm9kdWN0UmV2aWV3ID0gYXdhaXQgdGhpcy5wcm9kdWN0UmV2aWV3UmVwb3NpdG9yeVxuICAgICAgLmZpbmQoe1xuICAgICAgICBmaWx0ZXJzOiB7XG4gICAgICAgICAgb3JkZXJJZDogeyBvcGVyYXRvcjogV2hlcmUuSU4sIHZhbHVlOiBbb3JkZXIuaWQsIG9yZGVyLm9yZGVyTnVtYmVyXS5maWx0ZXIoQm9vbGVhbikgfSxcbiAgICAgICAgICBwcm9kdWN0SWQ6IHsgb3BlcmF0b3I6IFdoZXJlLklOLCB2YWx1ZTogcHJvZHVjdHMgfSxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgICAudGhlbigocmVzKSA9PiByZXMuZGF0YS5hdCgwKSlcblxuICAgIHJldHVybiBwcm9kdWN0UmV2aWV3XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkUHJvZHVjdFJldmlldyhvcmRlcjogT3JkZXIsIGl0ZW06IExpbmVJdGVtLCByZXZpZXc6IFByb2R1Y3RSZXZpZXcpIHtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IGl0ZW0uaWQsXG4gICAgICBvcmRlcklkOiBvcmRlci5pZCxcbiAgICAgIG9yZGVyTnVtYmVyOiBvcmRlci5vcmRlck51bWJlcixcbiAgICAgIGlzRWRpdGlvbjogZmFsc2UsXG4gICAgICBuYW1lOiBpdGVtLm5hbWUsXG4gICAgICBpbWFnZTogaXRlbS5pbWFnZSxcbiAgICAgIGRlbGl2ZXJ5RGF0ZTogb3JkZXIuZGVsaXZlcmVkQXQgfHwgbnVsbCxcbiAgICAgIGV2YWx1YXRpb25JbkFuYWx5c2lzOiByZXZpZXcgPyB0cnVlIDogZmFsc2UsXG4gICAgICByYXRpbmc6IHJldmlldyA/IHJldmlldy5yYXRlIDogbnVsbCxcbiAgICAgIHNob3BQcm9kdWN0U2x1ZzogaXRlbS5zbHVnLFxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZVJldmlldyhyZXZpZXc6IFByb2R1Y3RSZXZpZXdDcmVhdGUpOiBQcm9taXNlPFByb2R1Y3RSZXZpZXc+IHtcbiAgICByZXR1cm4gdGhpcy5wcm9kdWN0UmV2aWV3UmVwb3NpdG9yeS5jcmVhdGUoXG4gICAgICBQcm9kdWN0UmV2aWV3LnRvSW5zdGFuY2Uoe1xuICAgICAgICBwcm9kdWN0SWQ6IHJldmlldy5wcm9kdWN0SWQudG9TdHJpbmcoKSxcbiAgICAgICAgc2hvcDogcmV2aWV3LnNob3AsXG4gICAgICAgIHJhdGU6IHJldmlldy5yYXRlLFxuICAgICAgICBhdXRob3I6IHJldmlldy5hdXRob3IsXG4gICAgICAgIGVtYWlsOiByZXZpZXcuZW1haWwsXG4gICAgICAgIGxvY2F0aW9uOiByZXZpZXcubG9jYXRpb24sXG4gICAgICAgIHJldmlldzogcmV2aWV3LmNvbW1lbnQsXG4gICAgICAgIHRpdGxlOiByZXZpZXcudGl0bGUsXG4gICAgICAgIHBlcnNvbklkOiByZXZpZXcucGVyc29uSWQsXG4gICAgICAgIHBvaW50czogcmV2aWV3LnBvaW50cyxcbiAgICAgICAgb3JkZXJJZDogcmV2aWV3Lm9yZGVySWQsXG4gICAgICB9KSxcbiAgICApXG4gIH1cbn1cbiJdfQ==