@hestia-earth/utils 0.10.28 → 0.10.29

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.
@@ -51,6 +51,11 @@ var __read = (this && this.__read) || function (o, n) {
51
51
  }
52
52
  return ar;
53
53
  };
54
+ var __spreadArray = (this && this.__spreadArray) || function (to, from) {
55
+ for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
56
+ to[j] = from[i];
57
+ return to;
58
+ };
54
59
  Object.defineProperty(exports, "__esModule", { value: true });
55
60
  exports.run = exports.validateTerms = void 0;
56
61
  var fs_1 = require("fs");
@@ -119,30 +124,59 @@ var getAllTerms = function (data) {
119
124
  })
120
125
  .filter(function (term) { return (!!term) && (term['@type'] === 'Term') && (!!term['@id'] || !!term.name); });
121
126
  };
122
- var validateTerms = function (terms) { return __awaiter(void 0, void 0, void 0, function () {
123
- var query, results;
124
- return __generator(this, function (_a) {
125
- switch (_a.label) {
127
+ var searchLimit = 500;
128
+ var searchTerms = function (terms) { return __awaiter(void 0, void 0, void 0, function () {
129
+ var searchedTerms, results, _a, _b, _c;
130
+ return __generator(this, function (_d) {
131
+ switch (_d.label) {
126
132
  case 0:
127
- query = {
128
- bool: {
129
- must: [{
130
- match: { '@type': 'Term' }
131
- }],
132
- should: terms.map(function (_a) {
133
- var id = _a["@id"], name = _a.name;
134
- return ({ match: id ? { '@id.keyword': id } : { 'name.keyword': name } });
135
- }),
136
- minimum_should_match: 1
137
- }
138
- };
133
+ searchedTerms = terms.slice(0, searchLimit);
134
+ if (!searchedTerms.length) return [3, 2];
139
135
  return [4, search({
140
- limit: 1000,
136
+ limit: searchLimit,
141
137
  fields: ['@id', 'name'],
142
- query: query
138
+ query: {
139
+ bool: {
140
+ must: [{
141
+ match: { '@type': 'Term' }
142
+ }],
143
+ should: searchedTerms
144
+ .map(function (_a) {
145
+ var id = _a["@id"], name = _a.name;
146
+ return ({ match: id ? { '@id.keyword': id } : { 'name.keyword': name } });
147
+ }),
148
+ minimum_should_match: 1
149
+ }
150
+ }
143
151
  })];
144
152
  case 1:
145
- results = (_a.sent()).results;
153
+ _a = _d.sent();
154
+ return [3, 3];
155
+ case 2:
156
+ _a = { results: [] };
157
+ _d.label = 3;
158
+ case 3:
159
+ results = (_a).results;
160
+ _b = [__spreadArray([], __read(results))];
161
+ if (!(terms.length > searchLimit)) return [3, 5];
162
+ return [4, searchTerms(terms.slice(searchLimit))];
163
+ case 4:
164
+ _c = _d.sent();
165
+ return [3, 6];
166
+ case 5:
167
+ _c = [];
168
+ _d.label = 6;
169
+ case 6: return [2, __spreadArray.apply(void 0, _b.concat([__read.apply(void 0, [(_c)])]))];
170
+ }
171
+ });
172
+ }); };
173
+ var validateTerms = function (terms) { return __awaiter(void 0, void 0, void 0, function () {
174
+ var results;
175
+ return __generator(this, function (_a) {
176
+ switch (_a.label) {
177
+ case 0: return [4, searchTerms(terms)];
178
+ case 1:
179
+ results = _a.sent();
146
180
  return [2, terms.map(function (_a) {
147
181
  var id = _a["@id"], name = _a.name;
148
182
  var exists = results.find(function (res) { return res['@id'] === id || res.name === name; });
@@ -152,43 +186,37 @@ var validateTerms = function (terms) { return __awaiter(void 0, void 0, void 0,
152
186
  });
153
187
  }); };
154
188
  exports.validateTerms = validateTerms;
155
- var validateFile = function (_a) {
156
- var filepath = _a.filepath, data = _a.data;
157
- return __awaiter(void 0, void 0, void 0, function () {
158
- var terms, missing;
159
- return __generator(this, function (_b) {
160
- switch (_b.label) {
161
- case 0:
162
- terms = array_1.unique(getAllTerms(data));
163
- return [4, exports.validateTerms(terms)];
164
- case 1:
165
- missing = _b.sent();
166
- return [2, {
167
- filepath: filepath,
168
- missing: missing
169
- }];
170
- }
171
- });
189
+ var validateFile = function (existingTerms) { return function (_a) {
190
+ var filepath = _a.filepath, terms = _a.terms;
191
+ return ({
192
+ filepath: filepath,
193
+ missing: terms.map(function (_a) {
194
+ var id = _a["@id"], name = _a.name;
195
+ return existingTerms.find(function (res) { return res['@id'] === id || res.name === name; })
196
+ ? true
197
+ : id || name;
198
+ }).filter(function (val) { return val !== true; })
172
199
  });
173
- };
200
+ }; };
174
201
  var loadFile = function (filepath) { return __awaiter(void 0, void 0, void 0, function () {
175
- var _a, _b;
176
- var _c;
177
- return __generator(this, function (_d) {
178
- switch (_d.label) {
202
+ var _a, _b, _c;
203
+ var _d;
204
+ return __generator(this, function (_e) {
205
+ switch (_e.label) {
179
206
  case 0:
180
- _c = {
207
+ _d = {
181
208
  filepath: filepath
182
209
  };
183
- _b = (_a = JSON).parse;
210
+ _a = getAllTerms;
211
+ _c = (_b = JSON).parse;
184
212
  return [4, readFile(filepath, encoding)];
185
- case 1: return [2, (_c.data = _b.apply(_a, [_d.sent()]),
186
- _c)];
213
+ case 1: return [2, (_d.terms = _a.apply(void 0, [_c.apply(_b, [_e.sent()])]),
214
+ _d)];
187
215
  }
188
216
  });
189
217
  }); };
190
218
  var run = function () { return __awaiter(void 0, void 0, void 0, function () {
191
- var filepaths, files, results, missingFiles;
219
+ var filepaths, fileData, allTerms, existingTerms, results, missingFiles;
192
220
  return __generator(this, function (_a) {
193
221
  switch (_a.label) {
194
222
  case 0: return [4, recursiveFiles(folder)];
@@ -196,10 +224,15 @@ var run = function () { return __awaiter(void 0, void 0, void 0, function () {
196
224
  filepaths = _a.sent();
197
225
  return [4, Promise.all(filepaths.map(loadFile))];
198
226
  case 2:
199
- files = _a.sent();
200
- return [4, Promise.all(files.map(validateFile))];
227
+ fileData = _a.sent();
228
+ allTerms = array_1.unique(fileData.flatMap(function (_a) {
229
+ var terms = _a.terms;
230
+ return terms;
231
+ }));
232
+ return [4, searchTerms(allTerms)];
201
233
  case 3:
202
- results = (_a.sent()).filter(Boolean);
234
+ existingTerms = _a.sent();
235
+ results = fileData.map(validateFile(existingTerms)).filter(Boolean);
203
236
  missingFiles = results.filter(function (_a) {
204
237
  var missing = _a.missing;
205
238
  return missing.length;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hestia-earth/utils",
3
- "version": "0.10.28",
3
+ "version": "0.10.29",
4
4
  "description": "Hestia Utils library",
5
5
  "main": "dist/index.js",
6
6
  "typings": "dist/index.d.ts",
@@ -53,4 +53,4 @@
53
53
  "peerDependencies": {
54
54
  "@hestia-earth/glossary": ">=0.8.0"
55
55
  }
56
- }
56
+ }