@infrab4a/connect 3.9.0-beta.0 → 3.9.0-beta.10
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/infrab4a-connect.umd.js +150 -178
- package/bundles/infrab4a-connect.umd.js.map +1 -1
- package/esm2015/infra/elasticsearch/adapters/axios.adapter.js +30 -11
- package/esm2015/infra/elasticsearch/adapters/elastic-search.adapter.js +2 -62
- package/esm2015/infra/elasticsearch/adapters/index.js +1 -2
- package/esm2015/infra/elasticsearch/indexes/products-index.js +84 -104
- package/fesm2015/infrab4a-connect.js +110 -171
- package/fesm2015/infrab4a-connect.js.map +1 -1
- package/infra/elasticsearch/adapters/axios.adapter.d.ts +5 -3
- package/infra/elasticsearch/adapters/elastic-search.adapter.d.ts +7 -21
- package/infra/elasticsearch/adapters/index.d.ts +0 -1
- package/infra/elasticsearch/indexes/products-index.d.ts +8 -9
- package/package.json +1 -2
|
@@ -5,13 +5,17 @@ export class AxiosAdapter {
|
|
|
5
5
|
constructor(config) {
|
|
6
6
|
this.config = config;
|
|
7
7
|
}
|
|
8
|
-
get(index) {
|
|
8
|
+
get(index, id) {
|
|
9
9
|
return __awaiter(this, void 0, void 0, function* () {
|
|
10
10
|
try {
|
|
11
11
|
const { data } = yield axios({
|
|
12
|
-
url: `${this.config.url}/${index}`,
|
|
12
|
+
url: `${this.config.url}/${index}/_doc/${id}`,
|
|
13
13
|
method: 'GET',
|
|
14
|
-
|
|
14
|
+
responseType: 'json',
|
|
15
|
+
headers: {
|
|
16
|
+
'Content-Type': 'application/json',
|
|
17
|
+
Authorization: `ApiKey ${this.config.credential}`,
|
|
18
|
+
},
|
|
15
19
|
});
|
|
16
20
|
return data._source;
|
|
17
21
|
}
|
|
@@ -23,9 +27,14 @@ export class AxiosAdapter {
|
|
|
23
27
|
query(index, query) {
|
|
24
28
|
return __awaiter(this, void 0, void 0, function* () {
|
|
25
29
|
const { data } = yield axios({
|
|
26
|
-
url: `${this.config.url}/${index}`,
|
|
30
|
+
url: `${this.config.url}/${index}/_search`,
|
|
27
31
|
method: 'POST',
|
|
28
|
-
|
|
32
|
+
responseType: 'json',
|
|
33
|
+
headers: {
|
|
34
|
+
Accept: 'application/vnd.elasticsearch+json;compatible-with=7',
|
|
35
|
+
'Content-Type': 'application/vnd.elasticsearch+json;compatible-with=7',
|
|
36
|
+
Authorization: `ApiKey ${this.config.credential}`,
|
|
37
|
+
},
|
|
29
38
|
data: query,
|
|
30
39
|
});
|
|
31
40
|
return {
|
|
@@ -37,21 +46,31 @@ export class AxiosAdapter {
|
|
|
37
46
|
save(index, data) {
|
|
38
47
|
return __awaiter(this, void 0, void 0, function* () {
|
|
39
48
|
yield axios({
|
|
40
|
-
url: `${this.config.url}/${index}`,
|
|
49
|
+
url: `${this.config.url}/${index}/_doc`,
|
|
50
|
+
method: 'POST',
|
|
51
|
+
headers: { Authorization: `ApiKey ${this.config.credential}` },
|
|
52
|
+
data,
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
update(index, id, data) {
|
|
57
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
58
|
+
yield axios({
|
|
59
|
+
url: `${this.config.url}/${index}/_update/${id}`,
|
|
41
60
|
method: 'PUT',
|
|
42
|
-
headers: { Authorization: `
|
|
61
|
+
headers: { Authorization: `ApiKey ${this.config.credential}` },
|
|
43
62
|
data,
|
|
44
63
|
});
|
|
45
64
|
});
|
|
46
65
|
}
|
|
47
|
-
delete(index) {
|
|
66
|
+
delete(index, id) {
|
|
48
67
|
return __awaiter(this, void 0, void 0, function* () {
|
|
49
68
|
yield axios({
|
|
50
|
-
url: `${this.config.url}/${index}`,
|
|
69
|
+
url: `${this.config.url}/${index}/_doc/${id}`,
|
|
51
70
|
method: 'DELETE',
|
|
52
|
-
headers: { Authorization: `
|
|
71
|
+
headers: { Authorization: `ApiKey ${this.config.credential}` },
|
|
53
72
|
});
|
|
54
73
|
});
|
|
55
74
|
}
|
|
56
75
|
}
|
|
57
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXhpb3MuYWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvbm5lY3Qvc3JjL2luZnJhL2VsYXN0aWNzZWFyY2gvYWRhcHRlcnMvYXhpb3MuYWRhcHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFBO0FBR3pCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQVMvQyxNQUFNLE9BQU8sWUFBWTtJQUN2QixZQUE2QixNQUFnQztRQUFoQyxXQUFNLEdBQU4sTUFBTSxDQUEwQjtJQUFHLENBQUM7SUFFM0QsR0FBRyxDQUFDLEtBQWEsRUFBRSxFQUFVOztZQUNqQyxJQUFJO2dCQUNGLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEtBQUssQ0FBQztvQkFDM0IsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksS0FBSyxTQUFTLEVBQUUsRUFBRTtvQkFDN0MsTUFBTSxFQUFFLEtBQUs7b0JBQ2IsWUFBWSxFQUFFLE1BQU07b0JBQ3BCLE9BQU8sRUFBRTt3QkFDUCxjQUFjLEVBQUUsa0JBQWtCO3dCQUNsQyxhQUFhLEVBQUUsVUFBVSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRTtxQkFDbEQ7aUJBQ0YsQ0FBQyxDQUFBO2dCQUVGLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQTthQUNwQjtZQUFDLE9BQU8sS0FBSyxFQUFFO2dCQUNkLE1BQU0sSUFBSSxhQUFhLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFBO2FBQ3ZDO1FBQ0gsQ0FBQztLQUFBO0lBRUssS0FBSyxDQUFDLEtBQWEsRUFBRSxLQUFVOztZQUNuQyxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxLQUFLLENBQUM7Z0JBQzNCLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLEtBQUssVUFBVTtnQkFDMUMsTUFBTSxFQUFFLE1BQU07Z0JBQ2QsWUFBWSxFQUFFLE1BQU07Z0JBQ3BCLE9BQU8sRUFBRTtvQkFDUCxNQUFNLEVBQUUsc0RBQXNEO29CQUM5RCxjQUFjLEVBQUUsc0RBQXNEO29CQUN0RSxhQUFhLEVBQUUsVUFBVSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRTtpQkFDbEQ7Z0JBQ0QsSUFBSSxFQUFFLEtBQUs7YUFDWixDQUFDLENBQUE7WUFFRixPQUFPO2dCQUNMLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLO2dCQUM1QixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJO2FBQ3JCLENBQUE7UUFDSCxDQUFDO0tBQUE7SUFFSyxJQUFJLENBQUMsS0FBYSxFQUFFLElBQWdCOztZQUN4QyxNQUFNLEtBQUssQ0FBQztnQkFDVixHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxLQUFLLE9BQU87Z0JBQ3ZDLE1BQU0sRUFBRSxNQUFNO2dCQUNkLE9BQU8sRUFBRSxFQUFFLGFBQWEsRUFBRSxVQUFVLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLEVBQUU7Z0JBQzlELElBQUk7YUFDTCxDQUFDLENBQUE7UUFDSixDQUFDO0tBQUE7SUFFSyxNQUFNLENBQUMsS0FBYSxFQUFFLEVBQVUsRUFBRSxJQUFnQjs7WUFDdEQsTUFBTSxLQUFLLENBQUM7Z0JBQ1YsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksS0FBSyxZQUFZLEVBQUUsRUFBRTtnQkFDaEQsTUFBTSxFQUFFLEtBQUs7Z0JBQ2IsT0FBTyxFQUFFLEVBQUUsYUFBYSxFQUFFLFVBQVUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsRUFBRTtnQkFDOUQsSUFBSTthQUNMLENBQUMsQ0FBQTtRQUNKLENBQUM7S0FBQTtJQUVLLE1BQU0sQ0FBQyxLQUFhLEVBQUUsRUFBVTs7WUFDcEMsTUFBTSxLQUFLLENBQUM7Z0JBQ1YsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksS0FBSyxTQUFTLEVBQUUsRUFBRTtnQkFDN0MsTUFBTSxFQUFFLFFBQVE7Z0JBQ2hCLE9BQU8sRUFBRSxFQUFFLGFBQWEsRUFBRSxVQUFVLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLEVBQUU7YUFDL0QsQ0FBQyxDQUFBO1FBQ0osQ0FBQztLQUFBO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnXHJcblxyXG5pbXBvcnQgeyBCYXNlTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9kb21haW4nXHJcbmltcG9ydCB7IE5vdEZvdW5kRXJyb3IgfSBmcm9tICcuLi8uLi8uLi9lcnJvcnMnXHJcbmltcG9ydCB7IEVsYXN0aWNTZWFyY2hSZXN1bHQgfSBmcm9tICcuLi90eXBlcy9lbGFzdGljLXNlYXJjaC1yZXN1bHQnXHJcbmltcG9ydCB7IEVsYXN0aWNTZWFyY2hBZGFwdGVyIH0gZnJvbSAnLi9lbGFzdGljLXNlYXJjaC5hZGFwdGVyJ1xyXG5cclxuZXhwb3J0IHR5cGUgQXhpb3NFbGFzdGljU2VhcmNoQ29uZmlnID0ge1xyXG4gIHVybDogc3RyaW5nXHJcbiAgY3JlZGVudGlhbDogc3RyaW5nXHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBBeGlvc0FkYXB0ZXI8VCBleHRlbmRzIEJhc2VNb2RlbDxUPj4gaW1wbGVtZW50cyBFbGFzdGljU2VhcmNoQWRhcHRlciB7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBjb25maWc6IEF4aW9zRWxhc3RpY1NlYXJjaENvbmZpZykge31cclxuXHJcbiAgYXN5bmMgZ2V0KGluZGV4OiBzdHJpbmcsIGlkOiBzdHJpbmcpOiBQcm9taXNlPFBhcnRpYWw8VD4+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgYXhpb3Moe1xyXG4gICAgICAgIHVybDogYCR7dGhpcy5jb25maWcudXJsfS8ke2luZGV4fS9fZG9jLyR7aWR9YCxcclxuICAgICAgICBtZXRob2Q6ICdHRVQnLFxyXG4gICAgICAgIHJlc3BvbnNlVHlwZTogJ2pzb24nLFxyXG4gICAgICAgIGhlYWRlcnM6IHtcclxuICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXHJcbiAgICAgICAgICBBdXRob3JpemF0aW9uOiBgQXBpS2V5ICR7dGhpcy5jb25maWcuY3JlZGVudGlhbH1gLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pXHJcblxyXG4gICAgICByZXR1cm4gZGF0YS5fc291cmNlXHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihlcnJvci5tZXNzYWdlKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgcXVlcnkoaW5kZXg6IHN0cmluZywgcXVlcnk6IGFueSk6IFByb21pc2U8RWxhc3RpY1NlYXJjaFJlc3VsdDxQYXJ0aWFsPFQ+Pj4ge1xyXG4gICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCBheGlvcyh7XHJcbiAgICAgIHVybDogYCR7dGhpcy5jb25maWcudXJsfS8ke2luZGV4fS9fc2VhcmNoYCxcclxuICAgICAgbWV0aG9kOiAnUE9TVCcsXHJcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2pzb24nLFxyXG4gICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgQWNjZXB0OiAnYXBwbGljYXRpb24vdm5kLmVsYXN0aWNzZWFyY2granNvbjtjb21wYXRpYmxlLXdpdGg9NycsXHJcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi92bmQuZWxhc3RpY3NlYXJjaCtqc29uO2NvbXBhdGlibGUtd2l0aD03JyxcclxuICAgICAgICBBdXRob3JpemF0aW9uOiBgQXBpS2V5ICR7dGhpcy5jb25maWcuY3JlZGVudGlhbH1gLFxyXG4gICAgICB9LFxyXG4gICAgICBkYXRhOiBxdWVyeSxcclxuICAgIH0pXHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgdG90YWw6IGRhdGEuaGl0cy50b3RhbC52YWx1ZSxcclxuICAgICAgaGl0czogZGF0YS5oaXRzLmhpdHMsXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBzYXZlKGluZGV4OiBzdHJpbmcsIGRhdGE6IFBhcnRpYWw8VD4pOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGF3YWl0IGF4aW9zKHtcclxuICAgICAgdXJsOiBgJHt0aGlzLmNvbmZpZy51cmx9LyR7aW5kZXh9L19kb2NgLFxyXG4gICAgICBtZXRob2Q6ICdQT1NUJyxcclxuICAgICAgaGVhZGVyczogeyBBdXRob3JpemF0aW9uOiBgQXBpS2V5ICR7dGhpcy5jb25maWcuY3JlZGVudGlhbH1gIH0sXHJcbiAgICAgIGRhdGEsXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgdXBkYXRlKGluZGV4OiBzdHJpbmcsIGlkOiBzdHJpbmcsIGRhdGE6IFBhcnRpYWw8VD4pOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGF3YWl0IGF4aW9zKHtcclxuICAgICAgdXJsOiBgJHt0aGlzLmNvbmZpZy51cmx9LyR7aW5kZXh9L191cGRhdGUvJHtpZH1gLFxyXG4gICAgICBtZXRob2Q6ICdQVVQnLFxyXG4gICAgICBoZWFkZXJzOiB7IEF1dGhvcml6YXRpb246IGBBcGlLZXkgJHt0aGlzLmNvbmZpZy5jcmVkZW50aWFsfWAgfSxcclxuICAgICAgZGF0YSxcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBhc3luYyBkZWxldGUoaW5kZXg6IHN0cmluZywgaWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgYXdhaXQgYXhpb3Moe1xyXG4gICAgICB1cmw6IGAke3RoaXMuY29uZmlnLnVybH0vJHtpbmRleH0vX2RvYy8ke2lkfWAsXHJcbiAgICAgIG1ldGhvZDogJ0RFTEVURScsXHJcbiAgICAgIGhlYWRlcnM6IHsgQXV0aG9yaXphdGlvbjogYEFwaUtleSAke3RoaXMuY29uZmlnLmNyZWRlbnRpYWx9YCB9LFxyXG4gICAgfSlcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -1,62 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import { NotFoundError } from '../../../errors';
|
|
4
|
-
export class ElasticSearchAdapter {
|
|
5
|
-
constructor(config) {
|
|
6
|
-
this.client = new Client(config);
|
|
7
|
-
}
|
|
8
|
-
getById(index, id) {
|
|
9
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
10
|
-
try {
|
|
11
|
-
const data = yield this.client.get({ index, id });
|
|
12
|
-
return data._source;
|
|
13
|
-
}
|
|
14
|
-
catch (erro) {
|
|
15
|
-
throw new NotFoundError(erro.message);
|
|
16
|
-
}
|
|
17
|
-
});
|
|
18
|
-
}
|
|
19
|
-
search(indice, query) {
|
|
20
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
21
|
-
const result = yield this.client.search({
|
|
22
|
-
index: indice,
|
|
23
|
-
query,
|
|
24
|
-
});
|
|
25
|
-
return {
|
|
26
|
-
total: result.hits.total,
|
|
27
|
-
hits: result.hits.hits,
|
|
28
|
-
};
|
|
29
|
-
});
|
|
30
|
-
}
|
|
31
|
-
save(index, data) {
|
|
32
|
-
return this.client.index({
|
|
33
|
-
index,
|
|
34
|
-
document: data,
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
update(index, id, data) {
|
|
38
|
-
try {
|
|
39
|
-
return this.client.update({
|
|
40
|
-
index,
|
|
41
|
-
id,
|
|
42
|
-
doc: data,
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
catch (error) {
|
|
46
|
-
console.log(error);
|
|
47
|
-
throw new Error(error.message);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
delete(index, id) {
|
|
51
|
-
try {
|
|
52
|
-
this.client.delete({
|
|
53
|
-
index,
|
|
54
|
-
id,
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
catch (error) {
|
|
58
|
-
console.log(error);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxhc3RpYy1zZWFyY2guYWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvbm5lY3Qvc3JjL2luZnJhL2VsYXN0aWNzZWFyY2gvYWRhcHRlcnMvZWxhc3RpYy1zZWFyY2guYWRhcHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBRS9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQWEvQyxNQUFNLE9BQU8sb0JBQW9CO0lBRy9CLFlBQVksTUFBdUI7UUFDakMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUNsQyxDQUFDO0lBRUssT0FBTyxDQUFDLEtBQWEsRUFBRSxFQUFVOztZQUNyQyxJQUFJO2dCQUNGLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQTtnQkFDakQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFBO2FBQ3BCO1lBQUMsT0FBTyxJQUFJLEVBQUU7Z0JBQ2IsTUFBTSxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7YUFDdEM7UUFDSCxDQUFDO0tBQUE7SUFFSyxNQUFNLENBQUMsTUFBYyxFQUFFLEtBQUs7O1lBQ2hDLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7Z0JBQ3RDLEtBQUssRUFBRSxNQUFNO2dCQUNiLEtBQUs7YUFDTixDQUFDLENBQUE7WUFFRixPQUFPO2dCQUNMLEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUs7Z0JBQ3hCLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUk7YUFDdkIsQ0FBQTtRQUNILENBQUM7S0FBQTtJQUVELElBQUksQ0FBQyxLQUFhLEVBQUUsSUFBc0I7UUFDeEMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztZQUN2QixLQUFLO1lBQ0wsUUFBUSxFQUFFLElBQUk7U0FDZixDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQWEsRUFBRSxFQUFVLEVBQUUsSUFBc0I7UUFDdEQsSUFBSTtZQUNGLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7Z0JBQ3hCLEtBQUs7Z0JBQ0wsRUFBRTtnQkFDRixHQUFHLEVBQUUsSUFBSTthQUNWLENBQUMsQ0FBQTtTQUNIO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDZCxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQ2xCLE1BQU0sSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFBO1NBQy9CO0lBQ0gsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFhLEVBQUUsRUFBVTtRQUM5QixJQUFJO1lBQ0YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7Z0JBQ2pCLEtBQUs7Z0JBQ0wsRUFBRTthQUNILENBQUMsQ0FBQTtTQUNIO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDZCxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFBO1NBQ25CO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2xpZW50IH0gZnJvbSAnQGVsYXN0aWMvZWxhc3RpY3NlYXJjaCdcclxuaW1wb3J0IHsgQmFzZU1vZGVsLCBQcm9kdWN0IH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluJ1xyXG5pbXBvcnQgeyBOb3RGb3VuZEVycm9yIH0gZnJvbSAnLi4vLi4vLi4vZXJyb3JzJ1xyXG4vLyBleHBvcnQgaW50ZXJmYWNlIEVsYXN0aWNTZWFyY2hBZGFwdGVyPFQgPSBhbnk+IHtcclxuLy8gICBnZXQoaW5kZXg6IHN0cmluZyk6IFByb21pc2U8VD5cclxuLy8gICBzZWFyY2goaW5kZXg6IHN0cmluZywgcXVlcnk6IGFueSk6IFByb21pc2U8RWxhc3RpY1NlYXJjaFJlc3VsdDxUPj5cclxuLy8gICBzYXZlKGluZGV4OiBzdHJpbmcsIGRhdGE6IFBhcnRpYWw8VD4pOiBQcm9taXNlPHZvaWQ+XHJcbi8vICAgZGVsZXRlKGluZGV4OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+XHJcbi8vIH1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRVNDbGllbnRPcHRpb25zIHtcclxuICBjbG91ZDogeyBpZDogc3RyaW5nIH1cclxuICBhdXRoOiB7IGFwaUtleTogc3RyaW5nIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEVsYXN0aWNTZWFyY2hBZGFwdGVyPFQgZXh0ZW5kcyBCYXNlTW9kZWw8VD4+IHtcclxuICBjbGllbnQ6IENsaWVudFxyXG5cclxuICBjb25zdHJ1Y3Rvcihjb25maWc6IEVTQ2xpZW50T3B0aW9ucykge1xyXG4gICAgdGhpcy5jbGllbnQgPSBuZXcgQ2xpZW50KGNvbmZpZylcclxuICB9XHJcblxyXG4gIGFzeW5jIGdldEJ5SWQoaW5kZXg6IHN0cmluZywgaWQ6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5jbGllbnQuZ2V0KHsgaW5kZXgsIGlkIH0pXHJcbiAgICAgIHJldHVybiBkYXRhLl9zb3VyY2VcclxuICAgIH0gY2F0Y2ggKGVycm8pIHtcclxuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXJyb3IoZXJyby5tZXNzYWdlKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgc2VhcmNoKGluZGljZTogc3RyaW5nLCBxdWVyeSkge1xyXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5jbGllbnQuc2VhcmNoKHtcclxuICAgICAgaW5kZXg6IGluZGljZSxcclxuICAgICAgcXVlcnksXHJcbiAgICB9KVxyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgIHRvdGFsOiByZXN1bHQuaGl0cy50b3RhbCxcclxuICAgICAgaGl0czogcmVzdWx0LmhpdHMuaGl0cyxcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNhdmUoaW5kZXg6IHN0cmluZywgZGF0YTogUGFydGlhbDxQcm9kdWN0Pikge1xyXG4gICAgcmV0dXJuIHRoaXMuY2xpZW50LmluZGV4KHtcclxuICAgICAgaW5kZXgsXHJcbiAgICAgIGRvY3VtZW50OiBkYXRhLFxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHVwZGF0ZShpbmRleDogc3RyaW5nLCBpZDogc3RyaW5nLCBkYXRhOiBQYXJ0aWFsPFByb2R1Y3Q+KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICByZXR1cm4gdGhpcy5jbGllbnQudXBkYXRlKHtcclxuICAgICAgICBpbmRleCxcclxuICAgICAgICBpZCxcclxuICAgICAgICBkb2M6IGRhdGEsXHJcbiAgICAgIH0pXHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBjb25zb2xlLmxvZyhlcnJvcilcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkZWxldGUoaW5kZXg6IHN0cmluZywgaWQ6IHN0cmluZykge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5jbGllbnQuZGVsZXRlKHtcclxuICAgICAgICBpbmRleCxcclxuICAgICAgICBpZCxcclxuICAgICAgfSlcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKGVycm9yKVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxhc3RpYy1zZWFyY2guYWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvbm5lY3Qvc3JjL2luZnJhL2VsYXN0aWNzZWFyY2gvYWRhcHRlcnMvZWxhc3RpYy1zZWFyY2guYWRhcHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxhc3RpY1NlYXJjaFJlc3VsdCB9IGZyb20gJy4uL3R5cGVzL2VsYXN0aWMtc2VhcmNoLXJlc3VsdCdcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRWxhc3RpY1NlYXJjaEFkYXB0ZXI8VCA9IGFueT4ge1xyXG4gIGdldChpbmRleDogc3RyaW5nLCBpZDogc3RyaW5nKTogUHJvbWlzZTxUPlxyXG4gIHF1ZXJ5KGluZGV4OiBzdHJpbmcsIHF1ZXJ5OiBhbnkpOiBQcm9taXNlPEVsYXN0aWNTZWFyY2hSZXN1bHQ8VD4+XHJcbiAgc2F2ZShpbmRleDogc3RyaW5nLCBkYXRhOiBQYXJ0aWFsPFQ+KTogUHJvbWlzZTx2b2lkPlxyXG4gIHVwZGF0ZShpbmRleDogc3RyaW5nLCBpZDogc3RyaW5nLCBkYXRhOiBQYXJ0aWFsPFQ+KTogUHJvbWlzZTx2b2lkPlxyXG4gIGRlbGV0ZShpbmRleDogc3RyaW5nLCBpZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPlxyXG59XHJcbiJdfQ==
|
|
@@ -1,3 +1,2 @@
|
|
|
1
1
|
export * from './axios.adapter';
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0L3NyYy9pbmZyYS9lbGFzdGljc2VhcmNoL2FkYXB0ZXJzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsaUJBQWlCLENBQUE7QUFDL0IsY0FBYywwQkFBMEIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYXhpb3MuYWRhcHRlcidcclxuZXhwb3J0ICogZnJvbSAnLi9lbGFzdGljLXNlYXJjaC5hZGFwdGVyJ1xyXG4iXX0=
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0L3NyYy9pbmZyYS9lbGFzdGljc2VhcmNoL2FkYXB0ZXJzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsaUJBQWlCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2F4aW9zLmFkYXB0ZXInXHJcbiJdfQ==
|
|
@@ -1,146 +1,126 @@
|
|
|
1
1
|
import { __awaiter, __rest } from "tslib";
|
|
2
|
-
import { Product } from '../../../domain';
|
|
2
|
+
import { Product, Shops } from '../../../domain';
|
|
3
3
|
export class ProductsIndex {
|
|
4
|
-
constructor(
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
this.esadapter = esadapter;
|
|
4
|
+
constructor(adapter) {
|
|
5
|
+
this.adapter = adapter;
|
|
6
|
+
this.index = `products`;
|
|
8
7
|
}
|
|
9
|
-
|
|
8
|
+
getById(id) {
|
|
10
9
|
return __awaiter(this, void 0, void 0, function* () {
|
|
11
|
-
const data = yield this.
|
|
12
|
-
// const data = await this.adapter.get(`products/_doc/${id}`)
|
|
10
|
+
const data = yield this.adapter.get(this.index, id);
|
|
13
11
|
return Product.toInstance(data);
|
|
14
12
|
});
|
|
15
13
|
}
|
|
16
|
-
|
|
14
|
+
getByAlloyId(id) {
|
|
17
15
|
return __awaiter(this, void 0, void 0, function* () {
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
16
|
+
const data = yield this.adapter.query(this.index, {
|
|
17
|
+
query: {
|
|
18
|
+
bool: {
|
|
19
|
+
must: {
|
|
20
|
+
match: {
|
|
21
|
+
id: id,
|
|
22
|
+
},
|
|
25
23
|
},
|
|
26
24
|
},
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
25
|
+
},
|
|
26
|
+
});
|
|
27
|
+
return Product.toInstance(data.hits[0]._source);
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
search(searchTerm, total, shop) {
|
|
31
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
32
|
+
const size = total >= 10 ? 500 : 9;
|
|
33
|
+
const fields = [
|
|
34
|
+
'EAN',
|
|
35
|
+
'brand',
|
|
36
|
+
'id',
|
|
37
|
+
'images',
|
|
38
|
+
'miniatures',
|
|
39
|
+
'name',
|
|
40
|
+
'price',
|
|
41
|
+
'sku',
|
|
42
|
+
'stock',
|
|
43
|
+
'slug',
|
|
44
|
+
'reviews',
|
|
45
|
+
'hasVariants',
|
|
46
|
+
'rate',
|
|
47
|
+
];
|
|
48
|
+
const filter = [{ term: { published: true } }];
|
|
49
|
+
if (size > 9) {
|
|
50
|
+
fields.push(...['pricePaid', 'isGift', 'stock', 'weight', 'tags']);
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
filter.push({ term: { tags: shop == Shops.GLAMSHOP ? 'feminino' : 'masculino' } });
|
|
54
|
+
}
|
|
55
|
+
const search = yield this.adapter.query(this.index, {
|
|
56
|
+
size,
|
|
57
|
+
_source: fields,
|
|
58
|
+
query: {
|
|
59
|
+
bool: {
|
|
60
|
+
must: {
|
|
61
|
+
multi_match: {
|
|
30
62
|
query: `${searchTerm}`,
|
|
31
|
-
|
|
63
|
+
type: 'bool_prefix',
|
|
64
|
+
fields: [
|
|
65
|
+
'name',
|
|
66
|
+
'name.folded',
|
|
67
|
+
'name.search',
|
|
68
|
+
'description',
|
|
69
|
+
'description.search',
|
|
70
|
+
'description.folded',
|
|
71
|
+
'brand',
|
|
72
|
+
'brand.search',
|
|
73
|
+
'brand.folded',
|
|
74
|
+
],
|
|
75
|
+
fuzziness: 2,
|
|
76
|
+
},
|
|
77
|
+
},
|
|
78
|
+
should: {
|
|
79
|
+
match_phrase_prefix: {
|
|
80
|
+
'name.search': {
|
|
81
|
+
query: `${searchTerm}`,
|
|
82
|
+
slop: 10,
|
|
83
|
+
},
|
|
32
84
|
},
|
|
33
85
|
},
|
|
86
|
+
filter,
|
|
34
87
|
},
|
|
35
|
-
filter: [{ term: { published: true } }],
|
|
36
88
|
},
|
|
37
89
|
});
|
|
38
|
-
search.hits.forEach((row) => {
|
|
39
|
-
row._source.price = Object.assign(Object.assign({}, row._source.price), (!!row._source.price.Glamshop && row._source.price.Glamshop));
|
|
40
|
-
});
|
|
41
90
|
search.hits = search.hits.filter((e) => e._source.name !== '');
|
|
42
91
|
return search;
|
|
43
92
|
});
|
|
44
93
|
}
|
|
45
|
-
// async findById(ids: string[], options?: { hasStock: boolean; size: number; shop: Shops }): Promise<Product[]> {
|
|
46
|
-
// const fields = [
|
|
47
|
-
// 'brand',
|
|
48
|
-
// 'id',
|
|
49
|
-
// 'images',
|
|
50
|
-
// 'miniatures',
|
|
51
|
-
// 'name',
|
|
52
|
-
// 'price',
|
|
53
|
-
// 'sku',
|
|
54
|
-
// 'stock',
|
|
55
|
-
// 'slug',
|
|
56
|
-
// 'reviews',
|
|
57
|
-
// 'pricePaid',
|
|
58
|
-
// 'isGift',
|
|
59
|
-
// 'stock',
|
|
60
|
-
// 'weight',
|
|
61
|
-
// 'tags',
|
|
62
|
-
// 'filters',
|
|
63
|
-
// 'hasVariants',
|
|
64
|
-
// 'type',
|
|
65
|
-
// ]
|
|
66
|
-
// const { hits } = await this.adapter.query('products/_search', {
|
|
67
|
-
// _source: fields,
|
|
68
|
-
// query: {
|
|
69
|
-
// bool: {
|
|
70
|
-
// filter: [
|
|
71
|
-
// {
|
|
72
|
-
// terms: {
|
|
73
|
-
// _id: ids,
|
|
74
|
-
// },
|
|
75
|
-
// },
|
|
76
|
-
// {
|
|
77
|
-
// term: {
|
|
78
|
-
// published: true,
|
|
79
|
-
// },
|
|
80
|
-
// },
|
|
81
|
-
// ...(options.hasStock
|
|
82
|
-
// ? [
|
|
83
|
-
// {
|
|
84
|
-
// range: {
|
|
85
|
-
// 'stock.quantity': {
|
|
86
|
-
// gt: 0,
|
|
87
|
-
// },
|
|
88
|
-
// },
|
|
89
|
-
// },
|
|
90
|
-
// ]
|
|
91
|
-
// : []),
|
|
92
|
-
// ],
|
|
93
|
-
// },
|
|
94
|
-
// },
|
|
95
|
-
// ...(options.size ? { size: options.size } : {}),
|
|
96
|
-
// })
|
|
97
|
-
// return hits.map((hit) => Product.toInstance(hit._source))
|
|
98
|
-
// }
|
|
99
94
|
save(product) {
|
|
100
95
|
return __awaiter(this, void 0, void 0, function* () {
|
|
101
96
|
try {
|
|
102
97
|
const { createdAt, updatedAt, kitProducts } = product, data = __rest(product, ["createdAt", "updatedAt", "kitProducts"]);
|
|
103
|
-
this.
|
|
98
|
+
this.adapter.save(this.index, data);
|
|
104
99
|
}
|
|
105
100
|
catch (error) {
|
|
106
101
|
console.error(error);
|
|
107
102
|
}
|
|
108
|
-
// delete product.createdAt
|
|
109
|
-
// delete product.updatedAt
|
|
110
|
-
// delete product.kitProducts
|
|
111
|
-
// try {
|
|
112
|
-
// if (!product.firestoreId) throw new Error('Is not a product from firestore')
|
|
113
|
-
// await this.get(product.firestoreId)
|
|
114
|
-
// await this.adapter.save(`products/_doc/${product.firestoreId}`, product.toPlain())
|
|
115
|
-
// } catch (error) {
|
|
116
|
-
// console.error(error.message)
|
|
117
|
-
// await this.adapter.save(`products/_doc/${product.id}`, product.toPlain())
|
|
118
|
-
// }
|
|
119
103
|
});
|
|
120
104
|
}
|
|
121
105
|
update(product) {
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
106
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
107
|
+
try {
|
|
108
|
+
yield this.adapter.update(this.index, product.id, product);
|
|
109
|
+
}
|
|
110
|
+
catch (error) {
|
|
111
|
+
console.error(error);
|
|
112
|
+
}
|
|
113
|
+
});
|
|
128
114
|
}
|
|
129
115
|
delete(id) {
|
|
130
116
|
return __awaiter(this, void 0, void 0, function* () {
|
|
131
117
|
try {
|
|
132
|
-
this.
|
|
118
|
+
yield this.adapter.delete(this.index, id);
|
|
133
119
|
}
|
|
134
120
|
catch (error) {
|
|
135
121
|
console.error(error);
|
|
136
122
|
}
|
|
137
|
-
// try {
|
|
138
|
-
// await this.get(product.firestoreId)
|
|
139
|
-
// await this.adapter.delete(`products/_doc/${product.firestoreId}`)
|
|
140
|
-
// } catch (error) {
|
|
141
|
-
// await this.adapter.delete(`products/_doc/${product.id}`)
|
|
142
|
-
// }
|
|
143
123
|
});
|
|
144
124
|
}
|
|
145
125
|
}
|
|
146
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
126
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdHMtaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0L3NyYy9pbmZyYS9lbGFzdGljc2VhcmNoL2luZGV4ZXMvcHJvZHVjdHMtaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFJaEQsTUFBTSxPQUFPLGFBQWE7SUFFeEIsWUFBNkIsT0FBOEI7UUFBOUIsWUFBTyxHQUFQLE9BQU8sQ0FBdUI7UUFEbkQsVUFBSyxHQUFHLFVBQVUsQ0FBQTtJQUNvQyxDQUFDO0lBRXpELE9BQU8sQ0FBQyxFQUFVOztZQUN0QixNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUE7WUFDbkQsT0FBTyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ2pDLENBQUM7S0FBQTtJQUVLLFlBQVksQ0FBQyxFQUFVOztZQUMzQixNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBQ2hELEtBQUssRUFBRTtvQkFDTCxJQUFJLEVBQUU7d0JBQ0osSUFBSSxFQUFFOzRCQUNKLEtBQUssRUFBRTtnQ0FDTCxFQUFFLEVBQUUsRUFBRTs2QkFDUDt5QkFDRjtxQkFDRjtpQkFDRjthQUNGLENBQUMsQ0FBQTtZQUVGLE9BQU8sT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQ2pELENBQUM7S0FBQTtJQUVLLE1BQU0sQ0FBQyxVQUFrQixFQUFFLEtBQWEsRUFBRSxJQUFZOztZQUMxRCxNQUFNLElBQUksR0FBVyxLQUFLLElBQUks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QUE7SUFFSyxNQUFNLENBQUMsRUFBVTs7WUFDckIsSUFBSTtnQkFDRixNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUE7YUFDMUM7WUFBQyxPQUFPLEtBQUssRUFBRTtnQkFDZCxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFBO2FBQ3JCO1FBQ0gsQ0FBQztLQUFBO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQcm9kdWN0LCBTaG9wcyB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbidcclxuaW1wb3J0IHsgUHJvZHVjdEhhc3VyYUdyYXBoUUwgfSBmcm9tICcuLi8uLi9oYXN1cmEtZ3JhcGhxbCdcclxuaW1wb3J0IHsgQXhpb3NBZGFwdGVyIH0gZnJvbSAnLi4vYWRhcHRlcnMnXHJcblxyXG5leHBvcnQgY2xhc3MgUHJvZHVjdHNJbmRleCB7XHJcbiAgcHJpdmF0ZSBpbmRleCA9IGBwcm9kdWN0c2BcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGFkYXB0ZXI6IEF4aW9zQWRhcHRlcjxQcm9kdWN0Pikge31cclxuXHJcbiAgYXN5bmMgZ2V0QnlJZChpZDogc3RyaW5nKTogUHJvbWlzZTxQcm9kdWN0PiB7XHJcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5hZGFwdGVyLmdldCh0aGlzLmluZGV4LCBpZClcclxuICAgIHJldHVybiBQcm9kdWN0LnRvSW5zdGFuY2UoZGF0YSlcclxuICB9XHJcblxyXG4gIGFzeW5jIGdldEJ5QWxsb3lJZChpZDogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5hZGFwdGVyLnF1ZXJ5KHRoaXMuaW5kZXgsIHtcclxuICAgICAgcXVlcnk6IHtcclxuICAgICAgICBib29sOiB7XHJcbiAgICAgICAgICBtdXN0OiB7XHJcbiAgICAgICAgICAgIG1hdGNoOiB7XHJcbiAgICAgICAgICAgICAgaWQ6IGlkLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9LFxyXG4gICAgICB9LFxyXG4gICAgfSlcclxuXHJcbiAgICByZXR1cm4gUHJvZHVjdC50b0luc3RhbmNlKGRhdGEuaGl0c1swXS5fc291cmNlKVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgc2VhcmNoKHNlYXJjaFRlcm06IHN0cmluZywgdG90YWw6IG51bWJlciwgc2hvcDogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBzaXplOiBudW1iZXIgPSB0b3RhbCA+PSAxMCA/IDUwMCA6IDlcclxuXHJcbiAgICBjb25zdCBmaWVsZHMgPSBbXHJcbiAgICAgICdFQU4nLFxyXG4gICAgICAnYnJhbmQnLFxyXG4gICAgICAnaWQnLFxyXG4gICAgICAnaW1hZ2VzJyxcclxuICAgICAgJ21pbmlhdHVyZXMnLFxyXG4gICAgICAnbmFtZScsXHJcbiAgICAgICdwcmljZScsXHJcbiAgICAgICdza3UnLFxyXG4gICAgICAnc3RvY2snLFxyXG4gICAgICAnc2x1ZycsXHJcbiAgICAgICdyZXZpZXdzJyxcclxuICAgICAgJ2hhc1ZhcmlhbnRzJyxcclxuICAgICAgJ3JhdGUnLFxyXG4gICAgXVxyXG5cclxuICAgIGNvbnN0IGZpbHRlcjogQXJyYXk8eyB0ZXJtOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB8IGJvb2xlYW4gfCBudW1iZXIgfSB9PiA9IFt7IHRlcm06IHsgcHVibGlzaGVkOiB0cnVlIH0gfV1cclxuXHJcbiAgICBpZiAoc2l6ZSA+IDkpIHtcclxuICAgICAgZmllbGRzLnB1c2goLi4uWydwcmljZVBhaWQnLCAnaXNHaWZ0JywgJ3N0b2NrJywgJ3dlaWdodCcsICd0YWdzJ10pXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBmaWx0ZXIucHVzaCh7IHRlcm06IHsgdGFnczogc2hvcCA9PSBTaG9wcy5HTEFNU0hPUCA/ICdmZW1pbmlubycgOiAnbWFzY3VsaW5vJyB9IH0pXHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc2VhcmNoID0gYXdhaXQgdGhpcy5hZGFwdGVyLnF1ZXJ5KHRoaXMuaW5kZXgsIHtcclxuICAgICAgc2l6ZSxcclxuICAgICAgX3NvdXJjZTogZmllbGRzLFxyXG4gICAgICBxdWVyeToge1xyXG4gICAgICAgIGJvb2w6IHtcclxuICAgICAgICAgIG11c3Q6IHtcclxuICAgICAgICAgICAgbXVsdGlfbWF0Y2g6IHtcclxuICAgICAgICAgICAgICBxdWVyeTogYCR7c2VhcmNoVGVybX1gLFxyXG4gICAgICAgICAgICAgIHR5cGU6ICdib29sX3ByZWZpeCcsXHJcbiAgICAgICAgICAgICAgZmllbGRzOiBbXHJcbiAgICAgICAgICAgICAgICAnbmFtZScsXHJcbiAgICAgICAgICAgICAgICAnbmFtZS5mb2xkZWQnLFxyXG4gICAgICAgICAgICAgICAgJ25hbWUuc2VhcmNoJyxcclxuICAgICAgICAgICAgICAgICdkZXNjcmlwdGlvbicsXHJcbiAgICAgICAgICAgICAgICAnZGVzY3JpcHRpb24uc2VhcmNoJyxcclxuICAgICAgICAgICAgICAgICdkZXNjcmlwdGlvbi5mb2xkZWQnLFxyXG4gICAgICAgICAgICAgICAgJ2JyYW5kJyxcclxuICAgICAgICAgICAgICAgICdicmFuZC5zZWFyY2gnLFxyXG4gICAgICAgICAgICAgICAgJ2JyYW5kLmZvbGRlZCcsXHJcbiAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgICBmdXp6aW5lc3M6IDIsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgc2hvdWxkOiB7XHJcbiAgICAgICAgICAgIG1hdGNoX3BocmFzZV9wcmVmaXg6IHtcclxuICAgICAgICAgICAgICAnbmFtZS5zZWFyY2gnOiB7XHJcbiAgICAgICAgICAgICAgICBxdWVyeTogYCR7c2VhcmNoVGVybX1gLFxyXG4gICAgICAgICAgICAgICAgc2xvcDogMTAsXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBmaWx0ZXIsXHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgIH0pXHJcblxyXG4gICAgc2VhcmNoLmhpdHMgPSBzZWFyY2guaGl0cy5maWx0ZXIoKGU6IGFueSkgPT4gZS5fc291cmNlLm5hbWUgIT09ICcnKVxyXG5cclxuICAgIHJldHVybiBzZWFyY2hcclxuICB9XHJcblxyXG4gIGFzeW5jIHNhdmUocHJvZHVjdDogUHJvZHVjdEhhc3VyYUdyYXBoUUwpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHsgY3JlYXRlZEF0LCB1cGRhdGVkQXQsIGtpdFByb2R1Y3RzLCAuLi5kYXRhIH0gPSBwcm9kdWN0XHJcblxyXG4gICAgICB0aGlzLmFkYXB0ZXIuc2F2ZSh0aGlzLmluZGV4LCBkYXRhKVxyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc29sZS5lcnJvcihlcnJvcilcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIHVwZGF0ZShwcm9kdWN0OiBQcm9kdWN0SGFzdXJhR3JhcGhRTCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgYXdhaXQgdGhpcy5hZGFwdGVyLnVwZGF0ZSh0aGlzLmluZGV4LCBwcm9kdWN0LmlkLCBwcm9kdWN0KVxyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc29sZS5lcnJvcihlcnJvcilcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIGRlbGV0ZShpZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBhd2FpdCB0aGlzLmFkYXB0ZXIuZGVsZXRlKHRoaXMuaW5kZXgsIGlkKVxyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc29sZS5lcnJvcihlcnJvcilcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
|