@infrab4a/connect 0.14.4 → 0.14.5-beta.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.
- package/bundles/infrab4a-connect.umd.js +61 -63
- package/bundles/infrab4a-connect.umd.js.map +1 -1
- package/esm2015/lib/infra/firebase/firestore/repositories/catalog/category-firestore.repository.js +19 -23
- package/fesm2015/infrab4a-connect.js +18 -22
- package/fesm2015/infrab4a-connect.js.map +1 -1
- package/lib/infra/firebase/firestore/repositories/catalog/category-firestore.repository.d.ts +4 -1
- package/package.json +1 -1
package/esm2015/lib/infra/firebase/firestore/repositories/catalog/category-firestore.repository.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { __awaiter } from "tslib";
|
|
2
|
-
import { Base } from '../../../../../utils';
|
|
2
|
+
import { Base, chunk } from '../../../../../utils';
|
|
3
3
|
import { Category, Shops } from '../../../../../domain';
|
|
4
4
|
import { withCrudFirestore, withFirestore, withHelpers } from '../../mixins';
|
|
5
5
|
import { DuplicatedResultsError, NotFoundError, RequiredArgumentError } from '../../../../../errors';
|
|
@@ -34,41 +34,37 @@ export class CategoryFirestoreRepository extends withCrudFirestore(withHelpers(w
|
|
|
34
34
|
if (categorySnap.empty)
|
|
35
35
|
throw new NotFoundError('Categories not found');
|
|
36
36
|
const categories = categorySnap.docs.map((doc) => doc.data());
|
|
37
|
-
const homeSections =
|
|
38
|
-
|
|
39
|
-
const products = yield this.mountCategory(category);
|
|
40
|
-
homeSections.push({
|
|
37
|
+
const homeSections = yield Promise.all(categories.map((category) => __awaiter(this, void 0, void 0, function* () {
|
|
38
|
+
return ({
|
|
41
39
|
category,
|
|
42
|
-
products:
|
|
40
|
+
products: yield this.mountCategory(category, { limit, hasStock: true }),
|
|
43
41
|
});
|
|
44
|
-
}
|
|
42
|
+
})));
|
|
45
43
|
return homeSections;
|
|
46
44
|
});
|
|
47
45
|
}
|
|
48
|
-
mountCategory(category) {
|
|
46
|
+
mountCategory(category, options) {
|
|
49
47
|
return __awaiter(this, void 0, void 0, function* () {
|
|
50
48
|
if (!category.products)
|
|
51
49
|
throw new RequiredArgumentError(['Category products is empty']);
|
|
52
|
-
const chunks = category.products
|
|
53
|
-
const chunkIndex = Math.floor(index / 10);
|
|
54
|
-
if (!resultArray[chunkIndex])
|
|
55
|
-
resultArray[chunkIndex] = [];
|
|
56
|
-
resultArray[chunkIndex].push(item);
|
|
57
|
-
return resultArray;
|
|
58
|
-
}, []);
|
|
50
|
+
const chunks = chunk(category.products, 10);
|
|
59
51
|
const products = [];
|
|
60
52
|
const publishedField = category.shop === Shops.GLAMSHOP ? 'publishedGlam' : 'published';
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
53
|
+
for (const productIds of chunks) {
|
|
54
|
+
if ((options === null || options === void 0 ? void 0 : options.limit) && products.length >= (options === null || options === void 0 ? void 0 : options.limit))
|
|
55
|
+
break;
|
|
56
|
+
let query = yield this.collection('products').where(publishedField, '==', true).where('id', 'in', productIds);
|
|
57
|
+
if (options === null || options === void 0 ? void 0 : options.hasStock)
|
|
58
|
+
query = query.where('stock.quantity', '>', 0);
|
|
59
|
+
if (options === null || options === void 0 ? void 0 : options.limit)
|
|
60
|
+
query = query.limit(options === null || options === void 0 ? void 0 : options.limit);
|
|
61
|
+
const productSnap = yield query.get();
|
|
66
62
|
if (productSnap.empty)
|
|
67
|
-
|
|
63
|
+
continue;
|
|
68
64
|
products.push(...productSnap.docs.map((doc) => doc.data()));
|
|
69
|
-
}
|
|
65
|
+
}
|
|
70
66
|
return products;
|
|
71
67
|
});
|
|
72
68
|
}
|
|
73
69
|
}
|
|
74
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0ZWdvcnktZmlyZXN0b3JlLnJlcG9zaXRvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0L3NyYy9saWIvaW5mcmEvZmlyZWJhc2UvZmlyZXN0b3JlL3JlcG9zaXRvcmllcy9jYXRhbG9nL2NhdGVnb3J5LWZpcmVzdG9yZS5yZXBvc2l0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFFQSxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBQ2xELE9BQU8sRUFBRSxRQUFRLEVBQStCLEtBQUssRUFBRSxNQUFNLHVCQUF1QixDQUFBO0FBRXBGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQzVFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxhQUFhLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUVwRyxNQUFNLE9BQU8sMkJBQ1gsU0FBUSxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFXLElBQUksQ0FBQyxDQUFDLENBQUM7SUFHckUsWUFBcUIsU0FBNEI7UUFDL0MsS0FBSyxFQUFFLENBQUE7UUFEWSxjQUFTLEdBQVQsU0FBUyxDQUFtQjtRQUUvQyxJQUFJLENBQUMsY0FBYyxHQUFHLFlBQVksQ0FBQTtRQUNsQyxJQUFJLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQTtJQUN2QixDQUFDO0lBRUQsaUJBQWlCLENBQUMsSUFBWSxFQUFFLElBQVc7UUFDekMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUM7YUFDeEMsS0FBSyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDO2FBQ3pCLEtBQUssQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQzthQUN6QixLQUFLLENBQUMsV0FBVyxF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QyxDQUFDLENBQUE7Z0JBQ3BFLElBQUksT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLEtBQUs7b0JBQUUsS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLEtBQUssQ0FBQyxDQUFBO2dCQUV2RCxNQUFNLFdBQVcsR0FBRyxNQUFNLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQTtnQkFFckMsSUFBSSxXQUFXLENBQUMsS0FBSztvQkFBRSxTQUFRO2dCQUUvQixRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUE7YUFDNUQ7WUFFRCxPQUFPLFFBQVEsQ0FBQTtRQUNqQixDQUFDO0tBQUE7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZpcmViYXNlRmlyZXN0b3JlIH0gZnJvbSAnQGZpcmViYXNlL2ZpcmVzdG9yZS10eXBlcydcblxuaW1wb3J0IHsgQmFzZSwgY2h1bmsgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi91dGlscydcbmltcG9ydCB7IENhdGVnb3J5LCBDYXRlZ29yeVJlcG9zaXRvcnksIFByb2R1Y3QsIFNob3BzIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vZG9tYWluJ1xuXG5pbXBvcnQgeyB3aXRoQ3J1ZEZpcmVzdG9yZSwgd2l0aEZpcmVzdG9yZSwgd2l0aEhlbHBlcnMgfSBmcm9tICcuLi8uLi9taXhpbnMnXG5pbXBvcnQgeyBEdXBsaWNhdGVkUmVzdWx0c0Vycm9yLCBOb3RGb3VuZEVycm9yLCBSZXF1aXJlZEFyZ3VtZW50RXJyb3IgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9lcnJvcnMnXG5cbmV4cG9ydCBjbGFzcyBDYXRlZ29yeUZpcmVzdG9yZVJlcG9zaXRvcnlcbiAgZXh0ZW5kcyB3aXRoQ3J1ZEZpcmVzdG9yZSh3aXRoSGVscGVycyh3aXRoRmlyZXN0b3JlPENhdGVnb3J5PihCYXNlKSkpXG4gIGltcGxlbWVudHMgQ2F0ZWdvcnlSZXBvc2l0b3J5XG57XG4gIGNvbnN0cnVjdG9yKHJlYWRvbmx5IGZpcmVzdG9yZTogRmlyZWJhc2VGaXJlc3RvcmUpIHtcbiAgICBzdXBlcigpXG4gICAgdGhpcy5jb2xsZWN0aW9uTmFtZSA9ICdjYXRlZ29yaWVzJ1xuICAgIHRoaXMubW9kZWwgPSBDYXRlZ29yeVxuICB9XG5cbiAgZ2V0Q2F0ZWdvcnlCeVNsdWcoc2x1Zzogc3RyaW5nLCBzaG9wOiBTaG9wcyk6IFByb21pc2U8Q2F0ZWdvcnk+IHtcbiAgICByZXR1cm4gdGhpcy5jb2xsZWN0aW9uKHRoaXMuY29sbGVjdGlvbk5hbWUpXG4gICAgICAud2hlcmUoJ3NsdWcnLCAnPT0nLCBzbHVnKVxuICAgICAgLndoZXJlKCdzaG9wJywgJz09Jywgc2hvcClcbiAgICAgIC53aGVyZSgncHVibGlzaGVkJywgJz09JywgdHJ1ZSlcbiAgICAgIC5nZXQoKVxuICAgICAgLnRoZW4oKHNuYXApID0+IHtcbiAgICAgICAgaWYgKHNuYXAuc2l6ZSA+IDEpIHRocm93IG5ldyBEdXBsaWNhdGVkUmVzdWx0c0Vycm9yKCdRdWVyeSByZXR1cm5lZCBkdXBsaWNhdGVkIHZhbHVlcycpXG5cbiAgICAgICAgaWYgKHNuYXAuZW1wdHkpIHRocm93IG5ldyBOb3RGb3VuZEVycm9yKGBEb2N1bWVudCB3aXRoIHNsdWcgJHtzbHVnfSBub3QgZm91bmRgKVxuXG4gICAgICAgIHJldHVybiBzbmFwLmRvY3NbMF0uZGF0YSgpXG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnJvcikgPT4gZXJyb3IpXG4gIH1cblxuICBhc3luYyBnZXRDYXRlZ29yaWVzRm9ySG9tZShjYXRlZ29yeUlkczogc3RyaW5nW10sIGxpbWl0ID0gNCk6IFByb21pc2U8eyBjYXRlZ29yeTogQ2F0ZWdvcnk7IHByb2R1Y3RzOiBQcm9kdWN0W10gfVtdPiB7XG4gICAgY29uc3QgY2F0ZWdvcnlTbmFwID0gYXdhaXQgdGhpcy5jb2xsZWN0aW9uKHRoaXMuY29sbGVjdGlvbk5hbWUpXG4gICAgICAud2hlcmUoJ2lkJywgJ2luJywgY2F0ZWdvcnlJZHMpXG4gICAgICAud2hlcmUoJ3B1Ymxpc2hlZCcsICc9PScsIHRydWUpXG4gICAgICAuZ2V0KClcblxuICAgIGlmIChjYXRlZ29yeVNuYXAuZW1wdHkpIHRocm93IG5ldyBOb3RGb3VuZEVycm9yKCdDYXRlZ29yaWVzIG5vdCBmb3VuZCcpXG5cbiAgICBjb25zdCBjYXRlZ29yaWVzID0gY2F0ZWdvcnlTbmFwLmRvY3MubWFwKChkb2MpID0+IGRvYy5kYXRhKCkpXG4gICAgY29uc3QgaG9tZVNlY3Rpb25zID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICBjYXRlZ29yaWVzLm1hcChhc3luYyAoY2F0ZWdvcnkpID0+ICh7XG4gICAgICAgIGNhdGVnb3J5LFxuICAgICAgICBwcm9kdWN0czogYXdhaXQgdGhpcy5tb3VudENhdGVnb3J5KGNhdGVnb3J5LCB7IGxpbWl0LCBoYXNTdG9jazogdHJ1ZSB9KSxcbiAgICAgIH0pKSxcbiAgICApXG5cbiAgICByZXR1cm4gaG9tZVNlY3Rpb25zXG4gIH1cblxuICBhc3luYyBtb3VudENhdGVnb3J5KGNhdGVnb3J5OiBDYXRlZ29yeSwgb3B0aW9ucz86IHsgbGltaXQ/OiBudW1iZXI7IGhhc1N0b2NrPzogYm9vbGVhbiB9KTogUHJvbWlzZTxQcm9kdWN0W10+IHtcbiAgICBpZiAoIWNhdGVnb3J5LnByb2R1Y3RzKSB0aHJvdyBuZXcgUmVxdWlyZWRBcmd1bWVudEVycm9yKFsnQ2F0ZWdvcnkgcHJvZHVjdHMgaXMgZW1wdHknXSlcblxuICAgIGNvbnN0IGNodW5rcyA9IGNodW5rKGNhdGVnb3J5LnByb2R1Y3RzLCAxMClcbiAgICBjb25zdCBwcm9kdWN0cyA9IFtdXG4gICAgY29uc3QgcHVibGlzaGVkRmllbGQgPSBjYXRlZ29yeS5zaG9wID09PSBTaG9wcy5HTEFNU0hPUCA/ICdwdWJsaXNoZWRHbGFtJyA6ICdwdWJsaXNoZWQnXG5cbiAgICBmb3IgKGNvbnN0IHByb2R1Y3RJZHMgb2YgY2h1bmtzKSB7XG4gICAgICBpZiAob3B0aW9ucz8ubGltaXQgJiYgcHJvZHVjdHMubGVuZ3RoID49IG9wdGlvbnM/LmxpbWl0KSBicmVha1xuXG4gICAgICBsZXQgcXVlcnkgPSBhd2FpdCB0aGlzLmNvbGxlY3Rpb24oJ3Byb2R1Y3RzJykud2hlcmUocHVibGlzaGVkRmllbGQsICc9PScsIHRydWUpLndoZXJlKCdpZCcsICdpbicsIHByb2R1Y3RJZHMpXG5cbiAgICAgIGlmIChvcHRpb25zPy5oYXNTdG9jaykgcXVlcnkgPSBxdWVyeS53aGVyZSgnc3RvY2sucXVhbnRpdHknLCAnPicsIDApXG4gICAgICBpZiAob3B0aW9ucz8ubGltaXQpIHF1ZXJ5ID0gcXVlcnkubGltaXQob3B0aW9ucz8ubGltaXQpXG5cbiAgICAgIGNvbnN0IHByb2R1Y3RTbmFwID0gYXdhaXQgcXVlcnkuZ2V0KClcblxuICAgICAgaWYgKHByb2R1Y3RTbmFwLmVtcHR5KSBjb250aW51ZVxuXG4gICAgICBwcm9kdWN0cy5wdXNoKC4uLnByb2R1Y3RTbmFwLmRvY3MubWFwKChkb2MpID0+IGRvYy5kYXRhKCkpKVxuICAgIH1cblxuICAgIHJldHVybiBwcm9kdWN0c1xuICB9XG59XG4iXX0=
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import 'reflect-metadata';
|
|
2
2
|
import { plainToClass, classToPlain, Expose, Type } from 'class-transformer';
|
|
3
3
|
import { __decorate, __metadata, __awaiter } from 'tslib';
|
|
4
|
-
import { isNil, isObject, isNumber, isString, isEmpty } from 'lodash';
|
|
4
|
+
import { isNil, isObject, isNumber, isString, isEmpty, chunk } from 'lodash';
|
|
5
5
|
export { chunk, isEmpty, isNil, isNumber, isObject, isString, pick } from 'lodash';
|
|
6
6
|
import { Md5 } from 'ts-md5';
|
|
7
7
|
import firebase from 'firebase';
|
|
@@ -1387,39 +1387,35 @@ class CategoryFirestoreRepository extends withCrudFirestore(withHelpers(withFire
|
|
|
1387
1387
|
if (categorySnap.empty)
|
|
1388
1388
|
throw new NotFoundError('Categories not found');
|
|
1389
1389
|
const categories = categorySnap.docs.map((doc) => doc.data());
|
|
1390
|
-
const homeSections =
|
|
1391
|
-
|
|
1392
|
-
const products = yield this.mountCategory(category);
|
|
1393
|
-
homeSections.push({
|
|
1390
|
+
const homeSections = yield Promise.all(categories.map((category) => __awaiter(this, void 0, void 0, function* () {
|
|
1391
|
+
return ({
|
|
1394
1392
|
category,
|
|
1395
|
-
products:
|
|
1393
|
+
products: yield this.mountCategory(category, { limit, hasStock: true }),
|
|
1396
1394
|
});
|
|
1397
|
-
}
|
|
1395
|
+
})));
|
|
1398
1396
|
return homeSections;
|
|
1399
1397
|
});
|
|
1400
1398
|
}
|
|
1401
|
-
mountCategory(category) {
|
|
1399
|
+
mountCategory(category, options) {
|
|
1402
1400
|
return __awaiter(this, void 0, void 0, function* () {
|
|
1403
1401
|
if (!category.products)
|
|
1404
1402
|
throw new RequiredArgumentError(['Category products is empty']);
|
|
1405
|
-
const chunks = category.products
|
|
1406
|
-
const chunkIndex = Math.floor(index / 10);
|
|
1407
|
-
if (!resultArray[chunkIndex])
|
|
1408
|
-
resultArray[chunkIndex] = [];
|
|
1409
|
-
resultArray[chunkIndex].push(item);
|
|
1410
|
-
return resultArray;
|
|
1411
|
-
}, []);
|
|
1403
|
+
const chunks = chunk(category.products, 10);
|
|
1412
1404
|
const products = [];
|
|
1413
1405
|
const publishedField = category.shop === Shops.GLAMSHOP ? 'publishedGlam' : 'published';
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
|
-
|
|
1417
|
-
|
|
1418
|
-
|
|
1406
|
+
for (const productIds of chunks) {
|
|
1407
|
+
if ((options === null || options === void 0 ? void 0 : options.limit) && products.length >= (options === null || options === void 0 ? void 0 : options.limit))
|
|
1408
|
+
break;
|
|
1409
|
+
let query = yield this.collection('products').where(publishedField, '==', true).where('id', 'in', productIds);
|
|
1410
|
+
if (options === null || options === void 0 ? void 0 : options.hasStock)
|
|
1411
|
+
query = query.where('stock.quantity', '>', 0);
|
|
1412
|
+
if (options === null || options === void 0 ? void 0 : options.limit)
|
|
1413
|
+
query = query.limit(options === null || options === void 0 ? void 0 : options.limit);
|
|
1414
|
+
const productSnap = yield query.get();
|
|
1419
1415
|
if (productSnap.empty)
|
|
1420
|
-
|
|
1416
|
+
continue;
|
|
1421
1417
|
products.push(...productSnap.docs.map((doc) => doc.data()));
|
|
1422
|
-
}
|
|
1418
|
+
}
|
|
1423
1419
|
return products;
|
|
1424
1420
|
});
|
|
1425
1421
|
}
|