@aggdirect/coolmap-services 1.4.9 → 4.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/README.md +43 -18
- package/fesm2022/coolmap-services.mjs +1339 -0
- package/fesm2022/coolmap-services.mjs.map +1 -0
- package/index.d.ts +212 -5
- package/package.json +19 -28
- package/esm2022/aggdirect-coolmap-services.mjs +0 -5
- package/esm2022/lib/service/coolmap.service.mjs +0 -637
- package/esm2022/lib/service/data-model.mjs +0 -92
- package/esm2022/lib/service/utils.service.mjs +0 -400
- package/esm2022/public-api.mjs +0 -7
- package/fesm2022/aggdirect-coolmap-services.mjs +0 -1134
- package/fesm2022/aggdirect-coolmap-services.mjs.map +0 -1
- package/lib/service/coolmap.service.d.ts +0 -47
- package/lib/service/data-model.d.ts +0 -94
- package/lib/service/utils.service.d.ts +0 -78
- package/public-api.d.ts +0 -3
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
export class Route {
|
|
2
|
-
index = 0;
|
|
3
|
-
type;
|
|
4
|
-
// Job Code
|
|
5
|
-
customer_contact;
|
|
6
|
-
customer_name;
|
|
7
|
-
delivery_contact;
|
|
8
|
-
delivery_lat;
|
|
9
|
-
delivery_location;
|
|
10
|
-
delivery_lon;
|
|
11
|
-
driver_list;
|
|
12
|
-
material;
|
|
13
|
-
order_number;
|
|
14
|
-
pickup_lat;
|
|
15
|
-
pickup_location;
|
|
16
|
-
pickup_lon;
|
|
17
|
-
project;
|
|
18
|
-
total_count;
|
|
19
|
-
unit;
|
|
20
|
-
values;
|
|
21
|
-
job_id;
|
|
22
|
-
isSelected;
|
|
23
|
-
date;
|
|
24
|
-
// Add Route
|
|
25
|
-
created_at;
|
|
26
|
-
created_by_name;
|
|
27
|
-
customer_id;
|
|
28
|
-
delivery_lat_lng;
|
|
29
|
-
estimated_distance;
|
|
30
|
-
estimated_time;
|
|
31
|
-
materials_id;
|
|
32
|
-
path;
|
|
33
|
-
pickup_lat_lng;
|
|
34
|
-
route_id;
|
|
35
|
-
route_name;
|
|
36
|
-
unit_id;
|
|
37
|
-
note;
|
|
38
|
-
materialLabel;
|
|
39
|
-
isActive;
|
|
40
|
-
prevent;
|
|
41
|
-
is_system_pickup;
|
|
42
|
-
is_system_delivery;
|
|
43
|
-
}
|
|
44
|
-
export const EstinationData = ['estimated_distance', 'estimated_time'];
|
|
45
|
-
export var EstinationEnum;
|
|
46
|
-
(function (EstinationEnum) {
|
|
47
|
-
EstinationEnum["estimated_distance"] = "miles";
|
|
48
|
-
EstinationEnum["estimated_time"] = "time";
|
|
49
|
-
})(EstinationEnum || (EstinationEnum = {}));
|
|
50
|
-
export const JobCodeOverviewData = ['order_number', 'customer_name', 'project', 'unit', 'material', 'customer_contact', 'delivery_contact', 'pickup_location', 'delivery_location'];
|
|
51
|
-
export var JobCodeOverviewEnum;
|
|
52
|
-
(function (JobCodeOverviewEnum) {
|
|
53
|
-
JobCodeOverviewEnum["material"] = "Material";
|
|
54
|
-
JobCodeOverviewEnum["order_number"] = "Job Code";
|
|
55
|
-
JobCodeOverviewEnum["customer_name"] = "Customer";
|
|
56
|
-
JobCodeOverviewEnum["customer_contact"] = "Customer Contact";
|
|
57
|
-
JobCodeOverviewEnum["delivery_contact"] = "Delivery Contact";
|
|
58
|
-
JobCodeOverviewEnum["project"] = "Project Name";
|
|
59
|
-
JobCodeOverviewEnum["unit"] = "Job Type";
|
|
60
|
-
JobCodeOverviewEnum["pickup_location"] = "Pickup";
|
|
61
|
-
JobCodeOverviewEnum["delivery_location"] = "Delivery";
|
|
62
|
-
})(JobCodeOverviewEnum || (JobCodeOverviewEnum = {}));
|
|
63
|
-
export const DriversmsCardKey = ['order_number', 'date', 'values', 'material', 'unit', 'pickup_location', 'delivery_location'];
|
|
64
|
-
export var DriverSmsCardEnum;
|
|
65
|
-
(function (DriverSmsCardEnum) {
|
|
66
|
-
DriverSmsCardEnum["order_number"] = "Jobcode";
|
|
67
|
-
DriverSmsCardEnum["date"] = "Date";
|
|
68
|
-
DriverSmsCardEnum["values"] = "Total tasks";
|
|
69
|
-
DriverSmsCardEnum["material"] = "Material";
|
|
70
|
-
DriverSmsCardEnum["unit"] = "Unit";
|
|
71
|
-
DriverSmsCardEnum["pickup_location"] = "Pickup Address";
|
|
72
|
-
DriverSmsCardEnum["delivery_location"] = "Delivery Address";
|
|
73
|
-
})(DriverSmsCardEnum || (DriverSmsCardEnum = {}));
|
|
74
|
-
export class PopupData {
|
|
75
|
-
coordinate;
|
|
76
|
-
pickup;
|
|
77
|
-
jobCode;
|
|
78
|
-
customer;
|
|
79
|
-
drop;
|
|
80
|
-
routeType;
|
|
81
|
-
title;
|
|
82
|
-
material;
|
|
83
|
-
type;
|
|
84
|
-
}
|
|
85
|
-
export class CoolmapConfigModel {
|
|
86
|
-
analyticsRESTURL;
|
|
87
|
-
RESTURLPrefix;
|
|
88
|
-
repository;
|
|
89
|
-
mapboxStyle;
|
|
90
|
-
mapboxAccessToken;
|
|
91
|
-
}
|
|
92
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvb2xtYXAtc2VydmljZXMvc3JjL2xpYi9zZXJ2aWNlL2RhdGEtbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsTUFBTSxPQUFPLEtBQUs7SUFDaEIsS0FBSyxHQUFXLENBQUMsQ0FBQztJQUNsQixJQUFJLENBQWlCO0lBQ3JCLFdBQVc7SUFDWCxnQkFBZ0IsQ0FBaUI7SUFDakMsYUFBYSxDQUFpQjtJQUM5QixnQkFBZ0IsQ0FBaUI7SUFDakMsWUFBWSxDQUFpQjtJQUM3QixpQkFBaUIsQ0FBNkI7SUFDOUMsWUFBWSxDQUFpQjtJQUM3QixXQUFXLENBQWM7SUFDekIsUUFBUSxDQUFpQjtJQUN6QixZQUFZLENBQWlCO0lBQzdCLFVBQVUsQ0FBaUI7SUFDM0IsZUFBZSxDQUE2QjtJQUM1QyxVQUFVLENBQWlCO0lBQzNCLE9BQU8sQ0FBaUI7SUFDeEIsV0FBVyxDQUFVO0lBQ3JCLElBQUksQ0FBaUI7SUFDckIsTUFBTSxDQUFNO0lBQ1osTUFBTSxDQUFVO0lBQ2hCLFVBQVUsQ0FBVztJQUNyQixJQUFJLENBQVU7SUFDZCxZQUFZO0lBQ1osVUFBVSxDQUFpQjtJQUMzQixlQUFlLENBQWlCO0lBQ2hDLFdBQVcsQ0FBaUI7SUFDNUIsZ0JBQWdCLENBQWlCO0lBQ2pDLGtCQUFrQixDQUFpQjtJQUNuQyxjQUFjLENBQWlCO0lBQy9CLFlBQVksQ0FBaUI7SUFDN0IsSUFBSSxDQUFvQjtJQUN4QixjQUFjLENBQWlCO0lBQy9CLFFBQVEsQ0FBaUI7SUFDekIsVUFBVSxDQUFpQjtJQUMzQixPQUFPLENBQWlCO0lBQ3hCLElBQUksQ0FBaUI7SUFDckIsYUFBYSxDQUFpQjtJQUM5QixRQUFRLENBQVc7SUFDbkIsT0FBTyxDQUFXO0lBQ2xCLGdCQUFnQixDQUFXO0lBQzNCLGtCQUFrQixDQUFXO0NBQzlCO0FBRUQsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsb0JBQW9CLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQTtBQUN0RSxNQUFNLENBQU4sSUFBWSxjQUdYO0FBSEQsV0FBWSxjQUFjO0lBQ3hCLDhDQUE0QixDQUFBO0lBQzVCLHlDQUF1QixDQUFBO0FBQ3pCLENBQUMsRUFIVyxjQUFjLEtBQWQsY0FBYyxRQUd6QjtBQUVELE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsY0FBYyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUIsQ0FBQyxDQUFBO0FBQ25MLE1BQU0sQ0FBTixJQUFZLG1CQVVYO0FBVkQsV0FBWSxtQkFBbUI7SUFDN0IsNENBQXFCLENBQUE7SUFDckIsZ0RBQXlCLENBQUE7SUFDekIsaURBQTBCLENBQUE7SUFDMUIsNERBQXFDLENBQUE7SUFDckMsNERBQXFDLENBQUE7SUFDckMsK0NBQXdCLENBQUE7SUFDeEIsd0NBQWlCLENBQUE7SUFDakIsaURBQTBCLENBQUE7SUFDMUIscURBQThCLENBQUE7QUFDaEMsQ0FBQyxFQVZXLG1CQUFtQixLQUFuQixtQkFBbUIsUUFVOUI7QUFFRCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLGNBQWMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsbUJBQW1CLENBQUMsQ0FBQTtBQUM5SCxNQUFNLENBQU4sSUFBWSxpQkFRWDtBQVJELFdBQVksaUJBQWlCO0lBQzNCLDZDQUF3QixDQUFBO0lBQ3hCLGtDQUFhLENBQUE7SUFDYiwyQ0FBc0IsQ0FBQTtJQUN0QiwwQ0FBcUIsQ0FBQTtJQUNyQixrQ0FBYSxDQUFBO0lBQ2IsdURBQWtDLENBQUE7SUFDbEMsMkRBQXNDLENBQUE7QUFDeEMsQ0FBQyxFQVJXLGlCQUFpQixLQUFqQixpQkFBaUIsUUFRNUI7QUFFRCxNQUFNLE9BQU8sU0FBUztJQUNwQixVQUFVLENBQW1CO0lBQzdCLE1BQU0sQ0FBZ0I7SUFDdEIsT0FBTyxDQUFpQjtJQUN4QixRQUFRLENBQWlCO0lBQ3pCLElBQUksQ0FBZ0I7SUFDcEIsU0FBUyxDQUFnQjtJQUN6QixLQUFLLENBQWdCO0lBQ3JCLFFBQVEsQ0FBZ0I7SUFDeEIsSUFBSSxDQUFnQjtDQUNyQjtBQUVELE1BQU0sT0FBTyxrQkFBa0I7SUFDN0IsZ0JBQWdCLENBQWdCO0lBQ2hDLGFBQWEsQ0FBZ0I7SUFDN0IsVUFBVSxDQUFnQjtJQUMxQixXQUFXLENBQWdCO0lBQzNCLGlCQUFpQixDQUFnQjtDQUNsQyIsInNvdXJjZXNDb250ZW50IjpbIlxuZXhwb3J0IGNsYXNzIFJvdXRlIHtcbiAgaW5kZXg6IG51bWJlciA9IDA7XG4gIHR5cGU/OiBzdHJpbmcgfCBudWxsO1xuICAvLyBKb2IgQ29kZVxuICBjdXN0b21lcl9jb250YWN0Pzogc3RyaW5nIHwgbnVsbDtcbiAgY3VzdG9tZXJfbmFtZT86IHN0cmluZyB8IG51bGw7XG4gIGRlbGl2ZXJ5X2NvbnRhY3Q/OiBzdHJpbmcgfCBudWxsO1xuICBkZWxpdmVyeV9sYXQ/OiBudW1iZXIgfCBudWxsO1xuICBkZWxpdmVyeV9sb2NhdGlvbj86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIGRlbGl2ZXJ5X2xvbj86IG51bWJlciB8IG51bGw7XG4gIGRyaXZlcl9saXN0PzogQXJyYXk8YW55PjtcbiAgbWF0ZXJpYWw/OiBzdHJpbmcgfCBudWxsO1xuICBvcmRlcl9udW1iZXI/OiBzdHJpbmcgfCBudWxsO1xuICBwaWNrdXBfbGF0PzogbnVtYmVyIHwgbnVsbDtcbiAgcGlja3VwX2xvY2F0aW9uPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgcGlja3VwX2xvbj86IG51bWJlciB8IG51bGw7XG4gIHByb2plY3Q/OiBzdHJpbmcgfCBudWxsO1xuICB0b3RhbF9jb3VudD86IG51bWJlcjtcbiAgdW5pdD86IHN0cmluZyB8IG51bGw7XG4gIHZhbHVlczogYW55O1xuICBqb2JfaWQ/OiBzdHJpbmc7XG4gIGlzU2VsZWN0ZWQ/OiBib29sZWFuO1xuICBkYXRlPzogc3RyaW5nO1xuICAvLyBBZGQgUm91dGVcbiAgY3JlYXRlZF9hdD86IHN0cmluZyB8IG51bGw7XG4gIGNyZWF0ZWRfYnlfbmFtZT86IHN0cmluZyB8IG51bGw7XG4gIGN1c3RvbWVyX2lkPzogc3RyaW5nIHwgbnVsbDtcbiAgZGVsaXZlcnlfbGF0X2xuZz86IHN0cmluZyB8IG51bGw7XG4gIGVzdGltYXRlZF9kaXN0YW5jZT86IHN0cmluZyB8IG51bGw7XG4gIGVzdGltYXRlZF90aW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgbWF0ZXJpYWxzX2lkPzogc3RyaW5nIHwgbnVsbDtcbiAgcGF0aD86IFtudW1iZXIsIG51bWJlcl07XG4gIHBpY2t1cF9sYXRfbG5nPzogc3RyaW5nIHwgbnVsbDtcbiAgcm91dGVfaWQ/OiBzdHJpbmcgfCBudWxsO1xuICByb3V0ZV9uYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgdW5pdF9pZD86IHN0cmluZyB8IG51bGw7XG4gIG5vdGU/OiBzdHJpbmcgfCBudWxsO1xuICBtYXRlcmlhbExhYmVsPzogc3RyaW5nIHwgbnVsbDtcbiAgaXNBY3RpdmU/OiBib29sZWFuO1xuICBwcmV2ZW50PzogYm9vbGVhbjtcbiAgaXNfc3lzdGVtX3BpY2t1cD86IGJvb2xlYW47XG4gIGlzX3N5c3RlbV9kZWxpdmVyeT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCBFc3RpbmF0aW9uRGF0YSA9IFsnZXN0aW1hdGVkX2Rpc3RhbmNlJywgJ2VzdGltYXRlZF90aW1lJ11cbmV4cG9ydCBlbnVtIEVzdGluYXRpb25FbnVtIHtcbiAgZXN0aW1hdGVkX2Rpc3RhbmNlID0gXCJtaWxlc1wiLFxuICBlc3RpbWF0ZWRfdGltZSA9IFwidGltZVwiXG59XG5cbmV4cG9ydCBjb25zdCBKb2JDb2RlT3ZlcnZpZXdEYXRhID0gWydvcmRlcl9udW1iZXInLCAnY3VzdG9tZXJfbmFtZScsICdwcm9qZWN0JywgJ3VuaXQnLCAnbWF0ZXJpYWwnLCAnY3VzdG9tZXJfY29udGFjdCcsICdkZWxpdmVyeV9jb250YWN0JywgJ3BpY2t1cF9sb2NhdGlvbicsICdkZWxpdmVyeV9sb2NhdGlvbiddXG5leHBvcnQgZW51bSBKb2JDb2RlT3ZlcnZpZXdFbnVtIHtcbiAgbWF0ZXJpYWwgPSBcIk1hdGVyaWFsXCIsXG4gIG9yZGVyX251bWJlciA9IFwiSm9iIENvZGVcIixcbiAgY3VzdG9tZXJfbmFtZSA9IFwiQ3VzdG9tZXJcIixcbiAgY3VzdG9tZXJfY29udGFjdCA9IFwiQ3VzdG9tZXIgQ29udGFjdFwiLFxuICBkZWxpdmVyeV9jb250YWN0ID0gXCJEZWxpdmVyeSBDb250YWN0XCIsXG4gIHByb2plY3QgPSBcIlByb2plY3QgTmFtZVwiLFxuICB1bml0ID0gXCJKb2IgVHlwZVwiLFxuICBwaWNrdXBfbG9jYXRpb24gPSBcIlBpY2t1cFwiLFxuICBkZWxpdmVyeV9sb2NhdGlvbiA9IFwiRGVsaXZlcnlcIixcbn1cblxuZXhwb3J0IGNvbnN0IERyaXZlcnNtc0NhcmRLZXkgPSBbJ29yZGVyX251bWJlcicsICdkYXRlJywgJ3ZhbHVlcycsICdtYXRlcmlhbCcsICd1bml0JywgJ3BpY2t1cF9sb2NhdGlvbicsICdkZWxpdmVyeV9sb2NhdGlvbiddXG5leHBvcnQgZW51bSBEcml2ZXJTbXNDYXJkRW51bSB7XG4gIG9yZGVyX251bWJlciA9ICdKb2Jjb2RlJyxcbiAgZGF0ZSA9ICdEYXRlJyxcbiAgdmFsdWVzID0gJ1RvdGFsIHRhc2tzJyxcbiAgbWF0ZXJpYWwgPSAnTWF0ZXJpYWwnLFxuICB1bml0ID0gJ1VuaXQnLFxuICBwaWNrdXBfbG9jYXRpb24gPSAnUGlja3VwIEFkZHJlc3MnLFxuICBkZWxpdmVyeV9sb2NhdGlvbiA9ICdEZWxpdmVyeSBBZGRyZXNzJ1xufVxuXG5leHBvcnQgY2xhc3MgUG9wdXBEYXRhIHtcbiAgY29vcmRpbmF0ZTogW251bWJlciwgbnVtYmVyXTtcbiAgcGlja3VwOiBzdHJpbmcgfCBudWxsO1xuICBqb2JDb2RlPzogc3RyaW5nIHwgbnVsbDtcbiAgY3VzdG9tZXI/OiBzdHJpbmcgfCBudWxsO1xuICBkcm9wOiBzdHJpbmcgfCBudWxsO1xuICByb3V0ZVR5cGU6IHN0cmluZyB8IG51bGw7XG4gIHRpdGxlOiBzdHJpbmcgfCBudWxsO1xuICBtYXRlcmlhbDogc3RyaW5nIHwgbnVsbDtcbiAgdHlwZTogc3RyaW5nIHwgbnVsbDtcbn1cblxuZXhwb3J0IGNsYXNzIENvb2xtYXBDb25maWdNb2RlbCB7XG4gIGFuYWx5dGljc1JFU1RVUkw6IHN0cmluZyB8IG51bGw7XG4gIFJFU1RVUkxQcmVmaXg6IHN0cmluZyB8IG51bGw7XG4gIHJlcG9zaXRvcnk6IHN0cmluZyB8IG51bGw7XG4gIG1hcGJveFN0eWxlOiBzdHJpbmcgfCBudWxsO1xuICBtYXBib3hBY2Nlc3NUb2tlbjogc3RyaW5nIHwgbnVsbDtcbn1cblxuZXhwb3J0IGRlY2xhcmUgY2xhc3MgQ3VzdG9tZXJSZXBvRGV0YWlsc01vZGVsIHtcbiAgY3VzdG9tZXI6IEN1c3RvbWVyRGV0YWlsc01vZGVsIHwgbnVsbDtcbiAgcHJvamVjdElkOiBzdHJpbmcgfCBudWxsO1xufVxuXG5leHBvcnQgZGVjbGFyZSBjbGFzcyBDdXN0b21lckRldGFpbHNNb2RlbCB7XG4gIGlkOiBzdHJpbmcgfCBudWxsO1xuICBuYW1lOiBzdHJpbmcgfCBudWxsO1xufVxuIl19
|
|
@@ -1,400 +0,0 @@
|
|
|
1
|
-
import { Injectable, Inject } from '@angular/core';
|
|
2
|
-
import { BehaviorSubject } from 'rxjs';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@angular/common/http";
|
|
5
|
-
import * as i2 from "@angular/material/snack-bar";
|
|
6
|
-
import * as i3 from "./data-model";
|
|
7
|
-
export class UtilsService {
|
|
8
|
-
http;
|
|
9
|
-
snackBar;
|
|
10
|
-
config;
|
|
11
|
-
ngZone;
|
|
12
|
-
analyticsRESTURL = '';
|
|
13
|
-
RESTURLPrefix = '';
|
|
14
|
-
pickupOptions = [];
|
|
15
|
-
destOptions = [];
|
|
16
|
-
ownerOptions = [];
|
|
17
|
-
customerOptions = [];
|
|
18
|
-
unitOptions = [];
|
|
19
|
-
materialOptions = [];
|
|
20
|
-
jcodeOptions = [];
|
|
21
|
-
driverOption = [];
|
|
22
|
-
truckingCompanayOption = [];
|
|
23
|
-
routeNameOptions = [];
|
|
24
|
-
preventnavChange = new BehaviorSubject(false);
|
|
25
|
-
navChangeObserve = this.preventnavChange.asObservable();
|
|
26
|
-
clearViewRouteforJobCode = new BehaviorSubject(false);
|
|
27
|
-
clearViewRouteforJobCodeObserve = this.clearViewRouteforJobCode.asObservable();
|
|
28
|
-
preVentJobdetailclose = new BehaviorSubject(false);
|
|
29
|
-
getpreVentJobdetailclose = this.preVentJobdetailclose.asObservable();
|
|
30
|
-
routeDetailsUtility = new BehaviorSubject({});
|
|
31
|
-
getrouteDetailsUtility = this.routeDetailsUtility.asObservable();
|
|
32
|
-
removeMapEntity = new BehaviorSubject({});
|
|
33
|
-
removeMapEntityUtility = this.removeMapEntity.asObservable();
|
|
34
|
-
dict = new Map();
|
|
35
|
-
unitsList;
|
|
36
|
-
materialsList;
|
|
37
|
-
materialsListForCustomer;
|
|
38
|
-
customersList;
|
|
39
|
-
locationList;
|
|
40
|
-
pickUpAutocomplete;
|
|
41
|
-
constructor(http, snackBar, config, ngZone) {
|
|
42
|
-
this.http = http;
|
|
43
|
-
this.snackBar = snackBar;
|
|
44
|
-
this.config = config;
|
|
45
|
-
this.ngZone = ngZone;
|
|
46
|
-
this.analyticsRESTURL = config.analyticsRESTURL;
|
|
47
|
-
this.RESTURLPrefix = config.RESTURLPrefix;
|
|
48
|
-
}
|
|
49
|
-
getDateFormat(strVal, seprater) {
|
|
50
|
-
seprater = seprater ? seprater : '-';
|
|
51
|
-
const mydate = strVal;
|
|
52
|
-
return (mydate?.getFullYear() +
|
|
53
|
-
seprater +
|
|
54
|
-
((mydate ? mydate.getMonth() : 0) + 1) +
|
|
55
|
-
seprater +
|
|
56
|
-
mydate?.getDate());
|
|
57
|
-
}
|
|
58
|
-
getData(path) {
|
|
59
|
-
return this.http.get(`${this.analyticsRESTURL}${this.config.repository}/${path}`);
|
|
60
|
-
}
|
|
61
|
-
getRestData(path) {
|
|
62
|
-
return this.http.get(`${this.RESTURLPrefix}${path}`);
|
|
63
|
-
}
|
|
64
|
-
postdata(path, data) {
|
|
65
|
-
return this.http.post(`${this.analyticsRESTURL}${this.config.repository}/${path}`, data);
|
|
66
|
-
}
|
|
67
|
-
postDataWithRestUrl(path, data) {
|
|
68
|
-
return this.http.post(`${this.RESTURLPrefix}${path}`, data);
|
|
69
|
-
}
|
|
70
|
-
autocomplete(searchElementRef, type) {
|
|
71
|
-
return new Promise((resolve, reject) => {
|
|
72
|
-
const autocomplete = new google.maps.places.Autocomplete(searchElementRef.nativeElement, {
|
|
73
|
-
types: ['address']
|
|
74
|
-
});
|
|
75
|
-
google.maps.event.addListener(autocomplete, 'place_changed', () => {
|
|
76
|
-
this.ngZone.run(() => {
|
|
77
|
-
const place = autocomplete.getPlace();
|
|
78
|
-
resolve({ lat: place.geometry.location.lat(), lng: place.geometry.location.lng(), formatted_address: place['formatted_address'] });
|
|
79
|
-
});
|
|
80
|
-
});
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
openSnackBar(message, className) {
|
|
84
|
-
this.snackBar.open(message, '', {
|
|
85
|
-
duration: 5000,
|
|
86
|
-
verticalPosition: 'top',
|
|
87
|
-
horizontalPosition: 'center',
|
|
88
|
-
panelClass: [className ? className : 'default'],
|
|
89
|
-
});
|
|
90
|
-
}
|
|
91
|
-
makeOptions(item) {
|
|
92
|
-
if (item.order_number) {
|
|
93
|
-
this.jcodeOptions.findIndex((elem) => elem.job_id === item.job_id) === -1
|
|
94
|
-
? this.jcodeOptions.push({
|
|
95
|
-
job_code: item.order_number,
|
|
96
|
-
job_id: item.job_id,
|
|
97
|
-
})
|
|
98
|
-
: null;
|
|
99
|
-
if (item.driver_list && item.driver_list?.length > 0) {
|
|
100
|
-
item.driver_list.forEach((driver) => {
|
|
101
|
-
this.driverOption.findIndex((elem) => elem === driver['driver_name']) === -1
|
|
102
|
-
? this.driverOption.push(driver['driver_name'])
|
|
103
|
-
: null;
|
|
104
|
-
this.truckingCompanayOption.findIndex((elem) => elem === driver['trucking_company']) === -1
|
|
105
|
-
? this.truckingCompanayOption.push(driver['trucking_company'])
|
|
106
|
-
: null;
|
|
107
|
-
});
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
this.pickupOptions.findIndex((elem) => elem === item.pickup_location) === -1
|
|
111
|
-
? this.pickupOptions.push(item.pickup_location)
|
|
112
|
-
: null;
|
|
113
|
-
this.destOptions.findIndex((elem) => elem === item.delivery_location) === -1
|
|
114
|
-
? this.destOptions.push(item.delivery_location)
|
|
115
|
-
: null;
|
|
116
|
-
this.customerOptions.findIndex((customer) => customer === item.customer_name) === -1
|
|
117
|
-
? this.customerOptions.push(item.customer_name)
|
|
118
|
-
: null;
|
|
119
|
-
this.unitOptions.findIndex((elem) => elem === item.unit) === -1
|
|
120
|
-
? this.unitOptions.push(item.unit)
|
|
121
|
-
: null;
|
|
122
|
-
if (item.material) {
|
|
123
|
-
this.materialOptions.findIndex((elem) => elem === item.material) === -1
|
|
124
|
-
? this.materialOptions.push(item.material)
|
|
125
|
-
: null;
|
|
126
|
-
}
|
|
127
|
-
if (item.route_name)
|
|
128
|
-
this.routeNameOptions.findIndex((elem) => elem === item.route_name) === -1
|
|
129
|
-
? this.routeNameOptions.push(item.route_name)
|
|
130
|
-
: null;
|
|
131
|
-
}
|
|
132
|
-
filter(value, filters) {
|
|
133
|
-
if (typeof value !== 'string') {
|
|
134
|
-
return [];
|
|
135
|
-
}
|
|
136
|
-
const filterValue = value.toLowerCase();
|
|
137
|
-
if (filterValue === '') {
|
|
138
|
-
return [];
|
|
139
|
-
}
|
|
140
|
-
const searchResults = [];
|
|
141
|
-
this.unitOptions.map((unit) => {
|
|
142
|
-
if (unit.toLowerCase().includes(filterValue)) {
|
|
143
|
-
searchResults.push({ type: 'unit', label: unit, value: unit });
|
|
144
|
-
}
|
|
145
|
-
});
|
|
146
|
-
this.customerOptions.map((unit) => {
|
|
147
|
-
if (unit.toLowerCase().includes(filterValue)) {
|
|
148
|
-
searchResults.push({ type: 'customer', label: unit, value: unit });
|
|
149
|
-
}
|
|
150
|
-
});
|
|
151
|
-
if (this.materialOptions.length) {
|
|
152
|
-
this.materialOptions.map((unit) => {
|
|
153
|
-
if (unit.toLowerCase().includes(filterValue)) {
|
|
154
|
-
searchResults.push({ type: 'material', label: unit, value: unit });
|
|
155
|
-
}
|
|
156
|
-
});
|
|
157
|
-
}
|
|
158
|
-
this.pickupOptions.map((unit) => {
|
|
159
|
-
if (unit.toLowerCase().includes(filterValue)) {
|
|
160
|
-
searchResults.push({
|
|
161
|
-
type: 'pickup location',
|
|
162
|
-
label: unit,
|
|
163
|
-
value: unit,
|
|
164
|
-
});
|
|
165
|
-
}
|
|
166
|
-
});
|
|
167
|
-
this.destOptions.map((unit) => {
|
|
168
|
-
if (unit.toLowerCase().includes(filterValue)) {
|
|
169
|
-
searchResults.push({
|
|
170
|
-
type: 'destination location',
|
|
171
|
-
label: unit,
|
|
172
|
-
value: unit,
|
|
173
|
-
});
|
|
174
|
-
}
|
|
175
|
-
});
|
|
176
|
-
this.jcodeOptions.map((unit) => {
|
|
177
|
-
if (unit.job_code.toLowerCase().includes(filterValue)) {
|
|
178
|
-
searchResults.push({
|
|
179
|
-
type: 'job',
|
|
180
|
-
label: unit['job_code'],
|
|
181
|
-
value: unit,
|
|
182
|
-
});
|
|
183
|
-
}
|
|
184
|
-
});
|
|
185
|
-
this.driverOption.map((unit) => {
|
|
186
|
-
if (unit.toLowerCase().includes(filterValue)) {
|
|
187
|
-
searchResults.push({ type: 'Driver', label: unit, value: unit });
|
|
188
|
-
}
|
|
189
|
-
});
|
|
190
|
-
this.truckingCompanayOption.map((unit) => {
|
|
191
|
-
if (unit.toLowerCase().includes(filterValue)) {
|
|
192
|
-
searchResults.push({
|
|
193
|
-
type: 'Trucking Company',
|
|
194
|
-
label: unit,
|
|
195
|
-
value: unit,
|
|
196
|
-
});
|
|
197
|
-
}
|
|
198
|
-
});
|
|
199
|
-
this.routeNameOptions.map((unit) => {
|
|
200
|
-
if (unit.toLowerCase().includes(filterValue)) {
|
|
201
|
-
searchResults.push({ type: 'Route name', label: unit, value: unit });
|
|
202
|
-
}
|
|
203
|
-
});
|
|
204
|
-
const searchDict = {};
|
|
205
|
-
filters.map((filter) => {
|
|
206
|
-
searchDict[filter['name'] + filter['type']] = filter;
|
|
207
|
-
});
|
|
208
|
-
const furtherFilter = [];
|
|
209
|
-
searchResults.map((search) => {
|
|
210
|
-
if (search['label'] + search['type'] in searchDict) {
|
|
211
|
-
}
|
|
212
|
-
else {
|
|
213
|
-
furtherFilter.push(search);
|
|
214
|
-
}
|
|
215
|
-
});
|
|
216
|
-
return furtherFilter;
|
|
217
|
-
}
|
|
218
|
-
getSearchResults(list, filterval) {
|
|
219
|
-
return list.filter((element) => {
|
|
220
|
-
const result_list_boolean = [];
|
|
221
|
-
if (filterval.length > 0) {
|
|
222
|
-
if (filterval[0]['type'] === 'unit') {
|
|
223
|
-
result_list_boolean.push(filterval[0]['name'] ===
|
|
224
|
-
element[filterval[0]['type']]);
|
|
225
|
-
}
|
|
226
|
-
if (filterval[0]['type'] === 'customer') {
|
|
227
|
-
result_list_boolean.push(filterval[0]['name'] === element['customer_name']);
|
|
228
|
-
}
|
|
229
|
-
if (filterval[0]['type'] === 'material') {
|
|
230
|
-
result_list_boolean.push(filterval[0]['name'] ===
|
|
231
|
-
element[filterval[0]['type']]);
|
|
232
|
-
}
|
|
233
|
-
if (filterval[0]['type'] === 'pickup location') {
|
|
234
|
-
result_list_boolean.push(filterval[0]['name'] === element['pickup_location']);
|
|
235
|
-
}
|
|
236
|
-
if (filterval[0]['type'] === 'destination location') {
|
|
237
|
-
result_list_boolean.push(filterval[0]['name'] === element['delivery_location']);
|
|
238
|
-
}
|
|
239
|
-
if (filterval[0]['type'] === 'job') {
|
|
240
|
-
result_list_boolean.push(filterval[0]['name'] === element['order_number']);
|
|
241
|
-
}
|
|
242
|
-
if (filterval[0]['type'] === 'Route name') {
|
|
243
|
-
result_list_boolean.push(filterval[0]['name'] === element['route_name']);
|
|
244
|
-
}
|
|
245
|
-
if (filterval[0]['type'] === 'Driver') {
|
|
246
|
-
const index = element.driver_list?.findIndex((ele) => {
|
|
247
|
-
return filterval[0]['name'] === ele['driver_name'];
|
|
248
|
-
});
|
|
249
|
-
if (index !== -1)
|
|
250
|
-
result_list_boolean.push(true);
|
|
251
|
-
}
|
|
252
|
-
if (filterval[0]['type'] === 'Trucking Company') {
|
|
253
|
-
const index = element.driver_list?.findIndex((ele) => {
|
|
254
|
-
return filterval[0]['name'] === ele['trucking_company'];
|
|
255
|
-
});
|
|
256
|
-
if (index !== -1)
|
|
257
|
-
result_list_boolean.push(true);
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
if (result_list_boolean.length > 0) {
|
|
261
|
-
return result_list_boolean.reduce((prev, curr) => prev && curr);
|
|
262
|
-
}
|
|
263
|
-
return false;
|
|
264
|
-
});
|
|
265
|
-
}
|
|
266
|
-
clearOptions() {
|
|
267
|
-
this.pickupOptions = [];
|
|
268
|
-
this.destOptions = [];
|
|
269
|
-
this.ownerOptions = [];
|
|
270
|
-
this.customerOptions = [];
|
|
271
|
-
this.unitOptions = [];
|
|
272
|
-
this.materialOptions = [];
|
|
273
|
-
this.jcodeOptions = [];
|
|
274
|
-
this.routeNameOptions = [];
|
|
275
|
-
}
|
|
276
|
-
setdictValue(key, value) {
|
|
277
|
-
this.dict.set(key, value);
|
|
278
|
-
}
|
|
279
|
-
getdictValue(key) {
|
|
280
|
-
return JSON.parse(this.dict.get(key));
|
|
281
|
-
}
|
|
282
|
-
removedictValue(key) {
|
|
283
|
-
this.dict.delete(key);
|
|
284
|
-
}
|
|
285
|
-
conveySearchIcon(value) {
|
|
286
|
-
if (value && typeof value !== 'object')
|
|
287
|
-
return true;
|
|
288
|
-
return false;
|
|
289
|
-
}
|
|
290
|
-
fetchUnitsList() {
|
|
291
|
-
return new Promise((resolve, reject) => {
|
|
292
|
-
if (!this.unitsList) {
|
|
293
|
-
this.getData('unit/list/view').subscribe((res) => {
|
|
294
|
-
if (res) {
|
|
295
|
-
this.unitsList = res.data;
|
|
296
|
-
resolve(this.unitsList);
|
|
297
|
-
}
|
|
298
|
-
});
|
|
299
|
-
}
|
|
300
|
-
else {
|
|
301
|
-
resolve(this.unitsList);
|
|
302
|
-
}
|
|
303
|
-
});
|
|
304
|
-
}
|
|
305
|
-
fetchMaterialsList() {
|
|
306
|
-
return new Promise((resolve, reject) => {
|
|
307
|
-
if (!this.materialsList) {
|
|
308
|
-
this.getData('material/list/view').subscribe((res) => {
|
|
309
|
-
this.materialsList = this.filtermaterialList(res.data);
|
|
310
|
-
resolve(this.materialsList);
|
|
311
|
-
});
|
|
312
|
-
}
|
|
313
|
-
else {
|
|
314
|
-
resolve(this.materialsList);
|
|
315
|
-
}
|
|
316
|
-
});
|
|
317
|
-
}
|
|
318
|
-
fetchMaterialsListForCustomer() {
|
|
319
|
-
return new Promise((resolve, reject) => {
|
|
320
|
-
if (!this.materialsListForCustomer) {
|
|
321
|
-
this.getData('material/list/view').subscribe((res) => {
|
|
322
|
-
this.materialsListForCustomer = this.filtermaterialList(res.data);
|
|
323
|
-
resolve(this.materialsListForCustomer);
|
|
324
|
-
});
|
|
325
|
-
}
|
|
326
|
-
else {
|
|
327
|
-
resolve(this.materialsListForCustomer);
|
|
328
|
-
}
|
|
329
|
-
});
|
|
330
|
-
}
|
|
331
|
-
filtermaterialList(list) {
|
|
332
|
-
let meterialList = [];
|
|
333
|
-
list.map((item) => {
|
|
334
|
-
if (item.sub.length > 0) {
|
|
335
|
-
item.sub.map((subItem) => {
|
|
336
|
-
if (subItem.add_to_marketplace) {
|
|
337
|
-
subItem.material = item.material;
|
|
338
|
-
subItem.material_id = item.material_id;
|
|
339
|
-
subItem.label = item.material + ' | ' + subItem.sub_material;
|
|
340
|
-
meterialList.push(subItem);
|
|
341
|
-
}
|
|
342
|
-
});
|
|
343
|
-
}
|
|
344
|
-
});
|
|
345
|
-
meterialList.sort((a, b) => a.label.localeCompare(b.label));
|
|
346
|
-
return meterialList;
|
|
347
|
-
}
|
|
348
|
-
fetchCustomersList() {
|
|
349
|
-
return new Promise((resolve, reject) => {
|
|
350
|
-
if (!this.customersList) {
|
|
351
|
-
this.getData('company/list/view').subscribe((res) => {
|
|
352
|
-
if (res) {
|
|
353
|
-
this.customersList = res.data;
|
|
354
|
-
resolve(this.customersList);
|
|
355
|
-
}
|
|
356
|
-
});
|
|
357
|
-
}
|
|
358
|
-
else {
|
|
359
|
-
resolve(this.customersList);
|
|
360
|
-
}
|
|
361
|
-
});
|
|
362
|
-
}
|
|
363
|
-
fetchLocationlist() {
|
|
364
|
-
return new Promise((resolve, reject) => {
|
|
365
|
-
this.getRestData('locations/all').subscribe((res) => {
|
|
366
|
-
if (res) {
|
|
367
|
-
this.locationList = res.data;
|
|
368
|
-
this.locationList = this.locationList.map((object) => {
|
|
369
|
-
object.formatted_address = `${object.name} | ${object.street} ${object.city}, ${object.state} ${object.zip}`;
|
|
370
|
-
const newItem = {
|
|
371
|
-
city: object.city,
|
|
372
|
-
lng: object.longitude,
|
|
373
|
-
location_id: object.location_id,
|
|
374
|
-
lat: object.latitude,
|
|
375
|
-
name: object.name,
|
|
376
|
-
state: object.state,
|
|
377
|
-
street: object.street,
|
|
378
|
-
zip: object.zip,
|
|
379
|
-
formatted_address: object.formatted_address
|
|
380
|
-
};
|
|
381
|
-
return newItem;
|
|
382
|
-
});
|
|
383
|
-
resolve(this.locationList);
|
|
384
|
-
}
|
|
385
|
-
}, err => {
|
|
386
|
-
console.log(err);
|
|
387
|
-
});
|
|
388
|
-
});
|
|
389
|
-
}
|
|
390
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: UtilsService, deps: [{ token: i1.HttpClient }, { token: i2.MatSnackBar }, { token: 'memberData' }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
391
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: UtilsService, providedIn: 'root' });
|
|
392
|
-
}
|
|
393
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: UtilsService, decorators: [{
|
|
394
|
-
type: Injectable,
|
|
395
|
-
args: [{ providedIn: 'root' }]
|
|
396
|
-
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.MatSnackBar }, { type: i3.CoolmapConfigModel, decorators: [{
|
|
397
|
-
type: Inject,
|
|
398
|
-
args: ['memberData']
|
|
399
|
-
}] }, { type: i0.NgZone }] });
|
|
400
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvb2xtYXAtc2VydmljZXMvc3JjL2xpYi9zZXJ2aWNlL3V0aWxzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFFM0QsT0FBTyxFQUFFLGVBQWUsRUFBTyxNQUFNLE1BQU0sQ0FBQzs7Ozs7QUFrQjVDLE1BQU0sT0FBTyxZQUFZO0lBaUNkO0lBQ0E7SUFDdUI7SUFDdkI7SUFuQ1QsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLGFBQWEsR0FBRyxFQUFFLENBQUM7SUFDbkIsYUFBYSxHQUFVLEVBQUUsQ0FBQztJQUMxQixXQUFXLEdBQVUsRUFBRSxDQUFDO0lBQ3hCLFlBQVksR0FBVSxFQUFFLENBQUM7SUFDekIsZUFBZSxHQUFVLEVBQUUsQ0FBQztJQUM1QixXQUFXLEdBQVUsRUFBRSxDQUFDO0lBQ3hCLGVBQWUsR0FBVSxFQUFFLENBQUM7SUFDNUIsWUFBWSxHQUFVLEVBQUUsQ0FBQztJQUN6QixZQUFZLEdBQVUsRUFBRSxDQUFDO0lBQ3pCLHNCQUFzQixHQUFVLEVBQUUsQ0FBQztJQUNuQyxnQkFBZ0IsR0FBVSxFQUFFLENBQUM7SUFDdEIsZ0JBQWdCLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckQsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3hELHdCQUF3QixHQUFHLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RELCtCQUErQixHQUM3QixJQUFJLENBQUMsd0JBQXdCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDL0MscUJBQXFCLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkQsd0JBQXdCLEdBQUcs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TUFBTSxDQUFDLGlCQUFpQixHQUFHLEdBQUcsTUFBTSxDQUFDLElBQUksTUFBTSxNQUFNLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLEtBQUssSUFBSSxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUM7d0JBQzNHLE1BQU0sT0FBTyxHQUFHOzRCQUNoQixJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7NEJBQ2pCLEdBQUcsRUFBRSxNQUFNLENBQUMsU0FBUzs0QkFDckIsV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXOzRCQUMvQixHQUFHLEVBQUUsTUFBTSxDQUFDLFFBQVE7NEJBQ3BCLElBQUksRUFBRyxNQUFNLENBQUMsSUFBSTs0QkFDbEIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLOzRCQUNuQixNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU07NEJBQ3JCLEdBQUcsRUFBRSxNQUFNLENBQUMsR0FBRzs0QkFDZixpQkFBaUIsRUFBRSxNQUFNLENBQUMsaUJBQWlCO3lCQUMxQyxDQUFBO3dCQUNILE9BQU8sT0FBTyxDQUFDO29CQUNqQixDQUFDLENBQUMsQ0FBQTtvQkFDRixPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUM3QixDQUFDO1lBQ0gsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFO2dCQUNQLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbkIsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7dUdBN1pVLFlBQVksdUVBbUNiLFlBQVk7MkdBbkNYLFlBQVksY0FEQyxNQUFNOzsyRkFDbkIsWUFBWTtrQkFEeEIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7OzBCQW9DN0IsTUFBTTsyQkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRTbmFja0JhciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIG1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ29vbG1hcENvbmZpZ01vZGVsLCBSb3V0ZSB9IGZyb20gJy4vZGF0YS1tb2RlbCc7XG5kZWNsYXJlIHZhciBnb29nbGU6IGFueTtcbmV4cG9ydCBpbnRlcmZhY2UgTG9jYXRpb25BbGwge1xuICBjaXR5OiAgICAgICAgICBzdHJpbmc7XG4gIGxhdGl0dWRlOiAgICAgIHN0cmluZztcbiAgbG9jYXRpb25faWQ6ICAgc3RyaW5nO1xuICBsb25naXR1ZGU6ICAgICBzdHJpbmc7XG4gIG5hbWU6ICAgICAgICAgIHN0cmluZztcbiAgc3RhdGU6ICAgICAgICAgc3RyaW5nO1xuICBzdHJlZXQ6ICAgICAgICBzdHJpbmc7XG4gIHN1aXRlOiAgICAgICAgIG51bGw7XG4gIHppcDogICAgICAgICAgIHN0cmluZztcbiAgZm9ybWF0dGVkX2FkZHJlc3M6IHN0cmluZztcbiAgY29tcGxldGVfYWRkcmVzczogc3RyaW5nO1xufVxuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFV0aWxzU2VydmljZSB7XG4gIGFuYWx5dGljc1JFU1RVUkwgPSAnJztcbiAgUkVTVFVSTFByZWZpeCA9ICcnO1xuICBwaWNrdXBPcHRpb25zOiBhbnlbXSA9IFtdO1xuICBkZXN0T3B0aW9uczogYW55W10gPSBbXTtcbiAgb3duZXJPcHRpb25zOiBhbnlbXSA9IFtdO1xuICBjdXN0b21lck9wdGlvbnM6IGFueVtdID0gW107XG4gIHVuaXRPcHRpb25zOiBhbnlbXSA9IFtdO1xuICBtYXRlcmlhbE9wdGlvbnM6IGFueVtdID0gW107XG4gIGpjb2RlT3B0aW9uczogYW55W10gPSBbXTtcbiAgZHJpdmVyT3B0aW9uOiBhbnlbXSA9IFtdO1xuICB0cnVja2luZ0NvbXBhbmF5T3B0aW9uOiBhbnlbXSA9IFtdO1xuICByb3V0ZU5hbWVPcHRpb25zOiBhbnlbXSA9IFtdO1xuICBwdWJsaWMgcHJldmVudG5hdkNoYW5nZSA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICBuYXZDaGFuZ2VPYnNlcnZlID0gdGhpcy5wcmV2ZW50bmF2Q2hhbmdlLmFzT2JzZXJ2YWJsZSgpO1xuICBjbGVhclZpZXdSb3V0ZWZvckpvYkNvZGUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgY2xlYXJWaWV3Um91dGVmb3JKb2JDb2RlT2JzZXJ2ZSA9XG4gICAgdGhpcy5jbGVhclZpZXdSb3V0ZWZvckpvYkNvZGUuYXNPYnNlcnZhYmxlKCk7XG4gIHByZVZlbnRKb2JkZXRhaWxjbG9zZSA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICBnZXRwcmVWZW50Sm9iZGV0YWlsY2xvc2UgPSB0aGlzLnByZVZlbnRKb2JkZXRhaWxjbG9zZS5hc09ic2VydmFibGUoKTtcbiAgcm91dGVEZXRhaWxzVXRpbGl0eSA9IG5ldyBCZWhhdmlvclN1YmplY3Qoe30pO1xuICBnZXRyb3V0ZURldGFpbHNVdGlsaXR5ID0gdGhpcy5yb3V0ZURldGFpbHNVdGlsaXR5LmFzT2JzZXJ2YWJsZSgpO1xuICByZW1vdmVNYXBFbnRpdHkgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHt9KTtcbiAgcmVtb3ZlTWFwRW50aXR5VXRpbGl0eSA9IHRoaXMucmVtb3ZlTWFwRW50aXR5LmFzT2JzZXJ2YWJsZSgpO1xuICBkaWN0ID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcbiAgdW5pdHNMaXN0OiBhbnk7XG4gIG1hdGVyaWFsc0xpc3Q6IGFueTtcbiAgbWF0ZXJpYWxzTGlzdEZvckN1c3RvbWVyOiBhbnk7XG4gIGN1c3RvbWVyc0xpc3Q6IGFueTtcbiAgbG9jYXRpb25MaXN0OiBhbnk7XG4gIHBpY2tVcEF1dG9jb21wbGV0ZTogYW55O1xuICBcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHVibGljIHNuYWNrQmFyOiBNYXRTbmFja0JhcixcbiAgICBASW5qZWN0KCdtZW1iZXJEYXRhJykgcHJpdmF0ZSBjb25maWc6IENvb2xtYXBDb25maWdNb2RlbCxcbiAgICBwdWJsaWMgbmdab25lOiBOZ1pvbmUsXG4gICkge1xuICAgIHRoaXMuYW5hbHl0aWNzUkVTVFVSTCA9IGNvbmZpZy5hbmFseXRpY3NSRVNUVVJMO1xuICAgIHRoaXMuUkVTVFVSTFByZWZpeCA9IGNvbmZpZy5SRVNUVVJMUHJlZml4O1xuICB9XG4gIGdldERhdGVGb3JtYXQoc3RyVmFsOiBEYXRlIHwgbnVsbCwgc2VwcmF0ZXI/OiBzdHJpbmcpIHtcbiAgICBzZXByYXRlciA9IHNlcHJhdGVyID8gc2VwcmF0ZXIgOiAnLSc7XG4gICAgY29uc3QgbXlkYXRlID0gc3RyVmFsO1xuICAgIHJldHVybiAoXG4gICAgICBteWRhdGU/LmdldEZ1bGxZZWFyKCkgK1xuICAgICAgc2VwcmF0ZXIgK1xuICAgICAgKChteWRhdGUgPyBteWRhdGUuZ2V0TW9udGgoKSA6IDApICsgMSkgK1xuICAgICAgc2VwcmF0ZXIgK1xuICAgICAgbXlkYXRlPy5nZXREYXRlKClcbiAgICApO1xuICB9XG4gIGdldERhdGEocGF0aDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXG4gICAgICBgJHt0aGlzLmFuYWx5dGljc1JFU1RVUkx9JHt0aGlzLmNvbmZpZy5yZXBvc2l0b3J5fS8ke3BhdGh9YFxuICAgICk7XG4gIH1cbiAgZ2V0UmVzdERhdGEocGF0aDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXG4gICAgICBgJHt0aGlzLlJFU1RVUkxQcmVmaXh9JHtwYXRofWBcbiAgICApO1xuICB9XG4gIHBvc3RkYXRhKHBhdGg6IHN0cmluZywgZGF0YTogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxuICAgICAgYCR7dGhpcy5hbmFseXRpY3NSRVNUVVJMfSR7dGhpcy5jb25maWcucmVwb3NpdG9yeX0vJHtwYXRofWAsXG4gICAgICBkYXRhXG4gICAgKTtcbiAgfVxuICBwb3N0RGF0YVdpdGhSZXN0VXJsKHBhdGg6IHN0cmluZywgZGF0YTogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuUkVTVFVSTFByZWZpeH0ke3BhdGh9YCwgZGF0YSk7XG4gIH1cbiAgXG4gIGF1dG9jb21wbGV0ZShzZWFyY2hFbGVtZW50UmVmLCB0eXBlPykge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCBhdXRvY29tcGxldGUgPSBuZXcgZ29vZ2xlLm1hcHMucGxhY2VzLkF1dG9jb21wbGV0ZShzZWFyY2hFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIHtcbiAgICAgICAgdHlwZXM6IFsnYWRkcmVzcyddXG4gICAgICB9KTtcbiAgICAgIGdvb2dsZS5tYXBzLmV2ZW50LmFkZExpc3RlbmVyKGF1dG9jb21wbGV0ZSwgJ3BsYWNlX2NoYW5nZWQnLCAoKSA9PiB7XG4gICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgY29uc3QgcGxhY2UgPSBhdXRvY29tcGxldGUuZ2V0UGxhY2UoKTtcbiAgICAgICAgICByZXNvbHZlKHtsYXQ6IHBsYWNlLmdlb21ldHJ5LmxvY2F0aW9uLmxhdCgpLCBsbmc6IHBsYWNlLmdlb21ldHJ5LmxvY2F0aW9uLmxuZygpLCBmb3JtYXR0ZWRfYWRkcmVzczogcGxhY2VbJ2Zvcm1hdHRlZF9hZGRyZXNzJ119KVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgb3BlblNuYWNrQmFyKG1lc3NhZ2U6IHN0cmluZywgY2xhc3NOYW1lPzogc3RyaW5nKSB7XG4gICAgdGhpcy5zbmFja0Jhci5vcGVuKG1lc3NhZ2UsICcnLCB7XG4gICAgICBkdXJhdGlvbjogNTAwMCxcbiAgICAgIHZlcnRpY2FsUG9zaXRpb246ICd0b3AnLFxuICAgICAgaG9yaXpvbnRhbFBvc2l0aW9uOiAnY2VudGVyJyxcbiAgICAgIHBhbmVsQ2xhc3M6IFtjbGFzc05hbWUgPyBjbGFzc05hbWUgOiAnZGVmYXVsdCddLFxuICAgIH0pO1xuICB9XG5cbiAgbWFrZU9wdGlvbnMoaXRlbTogUm91dGUpIHtcbiAgICBpZiAoaXRlbS5vcmRlcl9udW1iZXIpIHtcbiAgICAgIHRoaXMuamNvZGVPcHRpb25zLmZpbmRJbmRleCgoZWxlbSkgPT4gZWxlbS5qb2JfaWQgPT09IGl0ZW0uam9iX2lkKSA9PT0gLTFcbiAgICAgICAgPyB0aGlzLmpjb2RlT3B0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgIGpvYl9jb2RlOiBpdGVtLm9yZGVyX251bWJlcixcbiAgICAgICAgICAgIGpvYl9pZDogaXRlbS5qb2JfaWQsXG4gICAgICAgICAgfSlcbiAgICAgICAgOiBudWxsO1xuICAgICAgaWYgKGl0ZW0uZHJpdmVyX2xpc3QgJiYgaXRlbS5kcml2ZXJfbGlzdD8ubGVuZ3RoID4gMCkge1xuICAgICAgICBpdGVtLmRyaXZlcl9saXN0LmZvckVhY2goKGRyaXZlcikgPT4ge1xuICAgICAgICAgIHRoaXMuZHJpdmVyT3B0aW9uLmZpbmRJbmRleChcbiAgICAgICAgICAgIChlbGVtKSA9PiBlbGVtID09PSBkcml2ZXJbJ2RyaXZlcl9uYW1lJ11cbiAgICAgICAgICApID09PSAtMVxuICAgICAgICAgICAgPyB0aGlzLmRyaXZlck9wdGlvbi5wdXNoKGRyaXZlclsnZHJpdmVyX25hbWUnXSlcbiAgICAgICAgICAgIDogbnVsbDtcbiAgICAgICAgICB0aGlzLnRydWNraW5nQ29tcGFuYXlPcHRpb24uZmluZEluZGV4KFxuICAgICAgICAgICAgKGVsZW0pID0+IGVsZW0gPT09IGRyaXZlclsndHJ1Y2tpbmdfY29tcGFueSddXG4gICAgICAgICAgKSA9PT0gLTFcbiAgICAgICAgICAgID8gdGhpcy50cnVja2luZ0NvbXBhbmF5T3B0aW9uLnB1c2goZHJpdmVyWyd0cnVja2luZ19jb21wYW55J10pXG4gICAgICAgICAgICA6IG51bGw7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnBpY2t1cE9wdGlvbnMuZmluZEluZGV4KChlbGVtKSA9PiBlbGVtID09PSBpdGVtLnBpY2t1cF9sb2NhdGlvbikgPT09IC0xXG4gICAgICA/IHRoaXMucGlja3VwT3B0aW9ucy5wdXNoKGl0ZW0ucGlja3VwX2xvY2F0aW9uKVxuICAgICAgOiBudWxsO1xuICAgIHRoaXMuZGVzdE9wdGlvbnMuZmluZEluZGV4KChlbGVtKSA9PiBlbGVtID09PSBpdGVtLmRlbGl2ZXJ5X2xvY2F0aW9uKSA9PT0gLTFcbiAgICAgID8gdGhpcy5kZXN0T3B0aW9ucy5wdXNoKGl0ZW0uZGVsaXZlcnlfbG9jYXRpb24pXG4gICAgICA6IG51bGw7XG4gICAgdGhpcy5jdXN0b21lck9wdGlvbnMuZmluZEluZGV4KFxuICAgICAgKGN1c3RvbWVyKSA9PiBjdXN0b21lciA9PT0gaXRlbS5jdXN0b21lcl9uYW1lXG4gICAgKSA9PT0gLTFcbiAgICAgID8gdGhpcy5jdXN0b21lck9wdGlvbnMucHVzaChpdGVtLmN1c3RvbWVyX25hbWUpXG4gICAgICA6IG51bGw7XG4gICAgdGhpcy51bml0T3B0aW9ucy5maW5kSW5kZXgoKGVsZW0pID0+IGVsZW0gPT09IGl0ZW0udW5pdCkgPT09IC0xXG4gICAgICA/IHRoaXMudW5pdE9wdGlvbnMucHVzaChpdGVtLnVuaXQpXG4gICAgICA6IG51bGw7XG5cbiAgICBpZihpdGVtLm1hdGVyaWFsKSB7XG4gICAgICB0aGlzLm1hdGVyaWFsT3B0aW9ucy5maW5kSW5kZXgoKGVsZW0pID0+IGVsZW0gPT09IGl0ZW0ubWF0ZXJpYWwpID09PSAtMVxuICAgICAgPyB0aGlzLm1hdGVyaWFsT3B0aW9ucy5wdXNoKGl0ZW0ubWF0ZXJpYWwpXG4gICAgICA6IG51bGw7XG4gICAgfVxuICAgIGlmIChpdGVtLnJvdXRlX25hbWUpXG4gICAgICB0aGlzLnJvdXRlTmFtZU9wdGlvbnMuZmluZEluZGV4KChlbGVtKSA9PiBlbGVtID09PSBpdGVtLnJvdXRlX25hbWUpID09PSAtMVxuICAgICAgICA/IHRoaXMucm91dGVOYW1lT3B0aW9ucy5wdXNoKGl0ZW0ucm91dGVfbmFtZSlcbiAgICAgICAgOiBudWxsO1xuICB9XG5cbiAgZmlsdGVyKHZhbHVlOiBzdHJpbmcsIGZpbHRlcnM6IGFueSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIGNvbnN0IGZpbHRlclZhbHVlID0gdmFsdWUudG9Mb3dlckNhc2UoKTtcbiAgICBpZiAoZmlsdGVyVmFsdWUgPT09ICcnKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIGNvbnN0IHNlYXJjaFJlc3VsdHM6IGFueVtdID0gW107XG4gICAgdGhpcy51bml0T3B0aW9ucy5tYXAoKHVuaXQpID0+IHtcbiAgICAgIGlmICh1bml0LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZmlsdGVyVmFsdWUpKSB7XG4gICAgICAgIHNlYXJjaFJlc3VsdHMucHVzaCh7IHR5cGU6ICd1bml0JywgbGFiZWw6IHVuaXQsIHZhbHVlOiB1bml0IH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuY3VzdG9tZXJPcHRpb25zLm1hcCgodW5pdCkgPT4ge1xuICAgICAgaWYgKHVuaXQudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhmaWx0ZXJWYWx1ZSkpIHtcbiAgICAgICAgc2VhcmNoUmVzdWx0cy5wdXNoKHsgdHlwZTogJ2N1c3RvbWVyJywgbGFiZWw6IHVuaXQsIHZhbHVlOiB1bml0IH0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYodGhpcy5tYXRlcmlhbE9wdGlvbnMubGVuZ3RoKSB7XG4gICAgICB0aGlzLm1hdGVyaWFsT3B0aW9ucy5tYXAoKHVuaXQpID0+IHtcbiAgICAgICAgaWYgKHVuaXQudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhmaWx0ZXJWYWx1ZSkpIHtcbiAgICAgICAgICBzZWFyY2hSZXN1bHRzLnB1c2goeyB0eXBlOiAnbWF0ZXJpYWwnLCBsYWJlbDogdW5pdCwgdmFsdWU6IHVuaXQgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLnBpY2t1cE9wdGlvbnMubWFwKCh1bml0KSA9PiB7XG4gICAgICBpZiAodW5pdC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGZpbHRlclZhbHVlKSkge1xuICAgICAgICBzZWFyY2hSZXN1bHRzLnB1c2goe1xuICAgICAgICAgIHR5cGU6ICdwaWNrdXAgbG9jYXRpb24nLFxuICAgICAgICAgIGxhYmVsOiB1bml0LFxuICAgICAgICAgIHZhbHVlOiB1bml0LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmRlc3RPcHRpb25zLm1hcCgodW5pdCkgPT4ge1xuICAgICAgaWYgKHVuaXQudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhmaWx0ZXJWYWx1ZSkpIHtcbiAgICAgICAgc2VhcmNoUmVzdWx0cy5wdXNoKHtcbiAgICAgICAgICB0eXBlOiAnZGVzdGluYXRpb24gbG9jYXRpb24nLFxuICAgICAgICAgIGxhYmVsOiB1bml0LFxuICAgICAgICAgIHZhbHVlOiB1bml0LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmpjb2RlT3B0aW9ucy5tYXAoKHVuaXQpID0+IHtcbiAgICAgIGlmICh1bml0LmpvYl9jb2RlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZmlsdGVyVmFsdWUpKSB7XG4gICAgICAgIHNlYXJjaFJlc3VsdHMucHVzaCh7XG4gICAgICAgICAgdHlwZTogJ2pvYicsXG4gICAgICAgICAgbGFiZWw6IHVuaXRbJ2pvYl9jb2RlJ10sXG4gICAgICAgICAgdmFsdWU6IHVuaXQsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuZHJpdmVyT3B0aW9uLm1hcCgodW5pdCkgPT4ge1xuICAgICAgaWYgKHVuaXQudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhmaWx0ZXJWYWx1ZSkpIHtcbiAgICAgICAgc2VhcmNoUmVzdWx0cy5wdXNoKHsgdHlwZTogJ0RyaXZlcicsIGxhYmVsOiB1bml0LCB2YWx1ZTogdW5pdCB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMudHJ1Y2tpbmdDb21wYW5heU9wdGlvbi5tYXAoKHVuaXQpID0+IHtcbiAgICAgIGlmICh1bml0LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZmlsdGVyVmFsdWUpKSB7XG4gICAgICAgIHNlYXJjaFJlc3VsdHMucHVzaCh7XG4gICAgICAgICAgdHlwZTogJ1RydWNraW5nIENvbXBhbnknLFxuICAgICAgICAgIGxhYmVsOiB1bml0LFxuICAgICAgICAgIHZhbHVlOiB1bml0LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLnJvdXRlTmFtZU9wdGlvbnMubWFwKCh1bml0KSA9PiB7XG4gICAgICBpZiAodW5pdC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGZpbHRlclZhbHVlKSkge1xuICAgICAgICBzZWFyY2hSZXN1bHRzLnB1c2goeyB0eXBlOiAnUm91dGUgbmFtZScsIGxhYmVsOiB1bml0LCB2YWx1ZTogdW5pdCB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBzZWFyY2hEaWN0OiBhbnkgPSB7fTtcbiAgICBmaWx0ZXJzLm1hcCgoZmlsdGVyOiB7IFt4OiBzdHJpbmddOiBhbnkgfSkgPT4ge1xuICAgICAgc2VhcmNoRGljdFtmaWx0ZXJbJ25hbWUnXSArIGZpbHRlclsndHlwZSddXSA9IGZpbHRlcjtcbiAgICB9KTtcbiAgICBjb25zdCBmdXJ0aGVyRmlsdGVyOiBhbnlbXSA9IFtdO1xuICAgIHNlYXJjaFJlc3VsdHMubWFwKChzZWFyY2gpID0+IHtcbiAgICAgIGlmIChzZWFyY2hbJ2xhYmVsJ10gKyBzZWFyY2hbJ3R5cGUnXSBpbiBzZWFyY2hEaWN0KSB7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmdXJ0aGVyRmlsdGVyLnB1c2goc2VhcmNoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZnVydGhlckZpbHRlcjtcbiAgfVxuXG4gIGdldFNlYXJjaFJlc3VsdHMobGlzdDogUm91dGVbXSwgZmlsdGVydmFsOiBhbnkpOiBhbnkge1xuICAgIHJldHVybiBsaXN0LmZpbHRlcigoZWxlbWVudCkgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0X2xpc3RfYm9vbGVhbiA9IFtdO1xuICAgICAgaWYgKGZpbHRlcnZhbC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGlmIChmaWx0ZXJ2YWxbMF1bJ3R5cGUnXSA9PT0gJ3VuaXQnKSB7XG4gICAgICAgICAgcmVzdWx0X2xpc3RfYm9vbGVhbi5wdXNoKFxuICAgICAgICAgICAgZmlsdGVydmFsWzBdWyduYW1lJ10gPT09XG4gICAgICAgICAgICAgIGVsZW1lbnRbZmlsdGVydmFsWzBdWyd0eXBlJ10gYXMga2V5b2YgUm91dGVdXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmlsdGVydmFsWzBdWyd0eXBlJ10gPT09ICdjdXN0b21lcicpIHtcbiAgICAgICAgICByZXN1bHRfbGlzdF9ib29sZWFuLnB1c2goXG4gICAgICAgICAgICBmaWx0ZXJ2YWxbMF1bJ25hbWUnXSA9PT0gZWxlbWVudFsnY3VzdG9tZXJfbmFtZSddXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmlsdGVydmFsWzBdWyd0eXBlJ10gPT09ICdtYXRlcmlhbCcpIHtcbiAgICAgICAgICByZXN1bHRfbGlzdF9ib29sZWFuLnB1c2goXG4gICAgICAgICAgICBmaWx0ZXJ2YWxbMF1bJ25hbWUnXSA9PT1cbiAgICAgICAgICAgICAgZWxlbWVudFtmaWx0ZXJ2YWxbMF1bJ3R5cGUnXSBhcyBrZXlvZiBSb3V0ZV1cbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmaWx0ZXJ2YWxbMF1bJ3R5cGUnXSA9PT0gJ3BpY2t1cCBsb2NhdGlvbicpIHtcbiAgICAgICAgICByZXN1bHRfbGlzdF9ib29sZWFuLnB1c2goXG4gICAgICAgICAgICBmaWx0ZXJ2YWxbMF1bJ25hbWUnXSA9PT0gZWxlbWVudFsncGlja3VwX2xvY2F0aW9uJ11cbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmaWx0ZXJ2YWxbMF1bJ3R5cGUnXSA9PT0gJ2Rlc3RpbmF0aW9uIGxvY2F0aW9uJykge1xuICAgICAgICAgIHJlc3VsdF9saXN0X2Jvb2xlYW4ucHVzaChcbiAgICAgICAgICAgIGZpbHRlcnZhbFswXVsnbmFtZSddID09PSBlbGVtZW50WydkZWxpdmVyeV9sb2NhdGlvbiddXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmlsdGVydmFsWzBdWyd0eXBlJ10gPT09ICdqb2InKSB7XG4gICAgICAgICAgcmVzdWx0X2xpc3RfYm9vbGVhbi5wdXNoKFxuICAgICAgICAgICAgZmlsdGVydmFsWzBdWyduYW1lJ10gPT09IGVsZW1lbnRbJ29yZGVyX251bWJlciddXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmlsdGVydmFsWzBdWyd0eXBlJ10gPT09ICdSb3V0ZSBuYW1lJykge1xuICAgICAgICAgIHJlc3VsdF9saXN0X2Jvb2xlYW4ucHVzaChcbiAgICAgICAgICAgIGZpbHRlcnZhbFswXVsnbmFtZSddID09PSBlbGVtZW50Wydyb3V0ZV9uYW1lJ11cbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmaWx0ZXJ2YWxbMF1bJ3R5cGUnXSA9PT0gJ0RyaXZlcicpIHtcbiAgICAgICAgICBjb25zdCBpbmRleCA9IGVsZW1lbnQuZHJpdmVyX2xpc3Q/LmZpbmRJbmRleCgoZWxlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gZmlsdGVydmFsWzBdWyduYW1lJ10gPT09IGVsZVsnZHJpdmVyX25hbWUnXTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBpZiAoaW5kZXggIT09IC0xKSByZXN1bHRfbGlzdF9ib29sZWFuLnB1c2godHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZpbHRlcnZhbFswXVsndHlwZSddID09PSAnVHJ1Y2tpbmcgQ29tcGFueScpIHtcbiAgICAgICAgICBjb25zdCBpbmRleCA9IGVsZW1lbnQuZHJpdmVyX2xpc3Q/LmZpbmRJbmRleCgoZWxlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gZmlsdGVydmFsWzBdWyduYW1lJ10gPT09IGVsZVsndHJ1Y2tpbmdfY29tcGFueSddO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGlmIChpbmRleCAhPT0gLTEpIHJlc3VsdF9saXN0X2Jvb2xlYW4ucHVzaCh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHJlc3VsdF9saXN0X2Jvb2xlYW4ubGVuZ3RoID4gMCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0X2xpc3RfYm9vbGVhbi5yZWR1Y2UoKHByZXYsIGN1cnIpID0+IHByZXYgJiYgY3Vycik7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSk7XG4gIH1cblxuICBjbGVhck9wdGlvbnMoKSB7XG4gICAgdGhpcy5waWNrdXBPcHRpb25zID0gW107XG4gICAgdGhpcy5kZXN0T3B0aW9ucyA9IFtdO1xuICAgIHRoaXMub3duZXJPcHRpb25zID0gW107XG4gICAgdGhpcy5jdXN0b21lck9wdGlvbnMgPSBbXTtcbiAgICB0aGlzLnVuaXRPcHRpb25zID0gW107XG4gICAgdGhpcy5tYXRlcmlhbE9wdGlvbnMgPSBbXTtcbiAgICB0aGlzLmpjb2RlT3B0aW9ucyA9IFtdO1xuICAgIHRoaXMucm91dGVOYW1lT3B0aW9ucyA9IFtdO1xuICB9XG4gIHNldGRpY3RWYWx1ZShrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuZGljdC5zZXQoa2V5LCB2YWx1ZSk7XG4gIH1cbiAgZ2V0ZGljdFZhbHVlKGtleTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UodGhpcy5kaWN0LmdldChrZXkpKTtcbiAgfVxuICByZW1vdmVkaWN0VmFsdWUoa2V5OiBzdHJpbmcpIHtcbiAgICB0aGlzLmRpY3QuZGVsZXRlKGtleSk7XG4gIH1cbiAgY29udmV5U2VhcmNoSWNvbih2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gICAgaWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcpIHJldHVybiB0cnVlO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBmZXRjaFVuaXRzTGlzdCgpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLnVuaXRzTGlzdCkge1xuICAgICAgICB0aGlzLmdldERhdGEoJ3VuaXQvbGlzdC92aWV3Jykuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgICAgIHRoaXMudW5pdHNMaXN0ID0gcmVzLmRhdGE7XG4gICAgICAgICAgICByZXNvbHZlKHRoaXMudW5pdHNMaXN0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzb2x2ZSh0aGlzLnVuaXRzTGlzdCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBmZXRjaE1hdGVyaWFsc0xpc3QoKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGlmICghdGhpcy5tYXRlcmlhbHNMaXN0KSB7XG4gICAgICAgIHRoaXMuZ2V0RGF0YSgnbWF0ZXJpYWwvbGlzdC92aWV3Jykuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMubWF0ZXJpYWxzTGlzdCA9IHRoaXMuZmlsdGVybWF0ZXJpYWxMaXN0KHJlcy5kYXRhKTtcbiAgICAgICAgICByZXNvbHZlKHRoaXMubWF0ZXJpYWxzTGlzdCk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzb2x2ZSh0aGlzLm1hdGVyaWFsc0xpc3QpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIGZldGNoTWF0ZXJpYWxzTGlzdEZvckN1c3RvbWVyKCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBpZiAoIXRoaXMubWF0ZXJpYWxzTGlzdEZvckN1c3RvbWVyKSB7XG4gICAgICAgIHRoaXMuZ2V0RGF0YSgnbWF0ZXJpYWwvbGlzdC92aWV3Jykuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMubWF0ZXJpYWxzTGlzdEZvckN1c3RvbWVyID0gdGhpcy5maWx0ZXJtYXRlcmlhbExpc3QocmVzLmRhdGEpO1xuICAgICAgICAgIHJlc29sdmUodGhpcy5tYXRlcmlhbHNMaXN0Rm9yQ3VzdG9tZXIpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc29sdmUodGhpcy5tYXRlcmlhbHNMaXN0Rm9yQ3VzdG9tZXIpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIGZpbHRlcm1hdGVyaWFsTGlzdChsaXN0KSB7XG4gICAgbGV0IG1ldGVyaWFsTGlzdCA9IFtdO1xuICAgIGxpc3QubWFwKChpdGVtKSA9PiB7XG4gICAgICBpZiAoaXRlbS5zdWIubGVuZ3RoID4gMCkge1xuICAgICAgICBpdGVtLnN1Yi5tYXAoKHN1Ykl0ZW0pID0+IHtcbiAgICAgICAgICBpZiAoc3ViSXRlbS5hZGRfdG9fbWFya2V0cGxhY2UpIHtcbiAgICAgICAgICAgIHN1Ykl0ZW0ubWF0ZXJpYWwgPSBpdGVtLm1hdGVyaWFsO1xuICAgICAgICAgICAgc3ViSXRlbS5tYXRlcmlhbF9pZCA9IGl0ZW0ubWF0ZXJpYWxfaWQ7XG4gICAgICAgICAgICBzdWJJdGVtLmxhYmVsID0gaXRlbS5tYXRlcmlhbCArICcgfCAnICsgc3ViSXRlbS5zdWJfbWF0ZXJpYWw7XG4gICAgICAgICAgICBtZXRlcmlhbExpc3QucHVzaChzdWJJdGVtKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIG1ldGVyaWFsTGlzdC5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4gYS5sYWJlbC5sb2NhbGVDb21wYXJlKGIubGFiZWwpKTtcbiAgICByZXR1cm4gbWV0ZXJpYWxMaXN0O1xuICB9XG4gIGZldGNoQ3VzdG9tZXJzTGlzdCgpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLmN1c3RvbWVyc0xpc3QpIHtcbiAgICAgICAgdGhpcy5nZXREYXRhKCdjb21wYW55L2xpc3QvdmlldycpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAocmVzKSB7XG4gICAgICAgICAgICB0aGlzLmN1c3RvbWVyc0xpc3QgPSByZXMuZGF0YTtcbiAgICAgICAgICAgIHJlc29sdmUodGhpcy5jdXN0b21lcnNMaXN0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzb2x2ZSh0aGlzLmN1c3RvbWVyc0xpc3QpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZmV0Y2hMb2NhdGlvbmxpc3QoKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMuZ2V0UmVzdERhdGEoJ2xvY2F0aW9ucy9hbGwnKS5zdWJzY3JpYmUoKHJlczogeyBkYXRhOiBMb2NhdGlvbkFsbCB9KSA9PiB7XG4gICAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgICB0aGlzLmxvY2F0aW9uTGlzdCA9IHJlcy5kYXRhO1xuICAgICAgICAgIHRoaXMubG9jYXRpb25MaXN0ID0gdGhpcy5sb2NhdGlvbkxpc3QubWFwKChvYmplY3QpID0+IHtcbiAgICAgICAgICAgIG9iamVjdC5mb3JtYXR0ZWRfYWRkcmVzcyA9IGAke29iamVjdC5uYW1lfSB8ICR7b2JqZWN0LnN0cmVldH0gJHtvYmplY3QuY2l0eX0sICR7b2JqZWN0LnN0YXRlfSAke29iamVjdC56aXB9YDtcbiAgICAgICAgICAgICAgY29uc3QgbmV3SXRlbSA9IHtcbiAgICAgICAgICAgICAgY2l0eTogb2JqZWN0LmNpdHksXG4gICAgICAgICAgICAgIGxuZzogb2JqZWN0LmxvbmdpdHVkZSxcbiAgICAgICAgICAgICAgbG9jYXRpb25faWQ6IG9iamVjdC5sb2NhdGlvbl9pZCxcbiAgICAgICAgICAgICAgbGF0OiBvYmplY3QubGF0aXR1ZGUsXG4gICAgICAgICAgICAgIG5hbWU6ICBvYmplY3QubmFtZSxcbiAgICAgICAgICAgICAgc3RhdGU6IG9iamVjdC5zdGF0ZSxcbiAgICAgICAgICAgICAgc3RyZWV0OiBvYmplY3Quc3RyZWV0LFxuICAgICAgICAgICAgICB6aXA6IG9iamVjdC56aXAsXG4gICAgICAgICAgICAgIGZvcm1hdHRlZF9hZGRyZXNzOiBvYmplY3QuZm9ybWF0dGVkX2FkZHJlc3NcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG5ld0l0ZW07XG4gICAgICAgICAgfSlcbiAgICAgICAgICByZXNvbHZlKHRoaXMubG9jYXRpb25MaXN0KTtcbiAgICAgICAgfVxuICAgICAgfSwgZXJyID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59XG4iXX0=
|
package/esm2022/public-api.mjs
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Public API Surface of @aggdirect/coolmap-services
|
|
3
|
-
*/
|
|
4
|
-
export * from './lib/service/coolmap.service';
|
|
5
|
-
export * from './lib/service/utils.service';
|
|
6
|
-
export * from './lib/service/data-model';
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvb2xtYXAtc2VydmljZXMvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFDSCxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYywwQkFBMEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgQGFnZ2RpcmVjdC9jb29sbWFwLXNlcnZpY2VzXG4gKi9cbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2UvY29vbG1hcC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2UvdXRpbHMuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlL2RhdGEtbW9kZWwnO1xuIl19
|