@infrab4a/connect 0.4.5 → 0.4.7-beta.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/bundles/infrab4a-connect.umd.js +79 -1
- package/bundles/infrab4a-connect.umd.js.map +1 -1
- package/esm2015/lib/domain/catalog/repositories/category.repository.js +1 -1
- package/esm2015/lib/errors/duplicated-results.error.js +7 -0
- package/esm2015/lib/errors/index.js +2 -1
- package/esm2015/lib/infra/firebase/firestore/repositories/catalog/category-firestore.repository.js +39 -1
- package/esm2015/lib/infra/firebase/firestore/repositories/catalog/product-variant-firestore.repository.js +2 -2
- package/fesm2015/infrab4a-connect.js +45 -2
- package/fesm2015/infrab4a-connect.js.map +1 -1
- package/lib/domain/catalog/repositories/category.repository.d.ts +7 -0
- package/lib/errors/duplicated-results.error.d.ts +4 -0
- package/lib/errors/index.d.ts +1 -0
- package/lib/infra/firebase/firestore/repositories/catalog/category-firestore.repository.d.ts +6 -1
- package/package.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0ZWdvcnkucmVwb3NpdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvbm5lY3Qvc3JjL2xpYi9kb21haW4vY2F0YWxvZy9yZXBvc2l0b3JpZXMvY2F0ZWdvcnkucmVwb3NpdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2F0ZWdvcnkgfSBmcm9tICcuLi9tb2RlbHMvY2F0ZWdvcnknXG5pbXBvcnQgeyBDcnVkUmVwb3NpdG9yeSB9IGZyb20gJy4uLy4uL2dlbmVyYWwvcmVwb3NpdG9yeS9jcnVkLnJlcG9zaXRvcnknXG5pbXBvcnQgeyBTaG9wcyB9IGZyb20gJy4uL21vZGVscy9lbnVtcy9zaG9wcy5lbnVtJ1xuaW1wb3J0IHsgUHJvZHVjdCB9IGZyb20gJy4uL21vZGVscydcblxuZXhwb3J0IGludGVyZmFjZSBDYXRlZ29yeVJlcG9zaXRvcnkgZXh0ZW5kcyBDcnVkUmVwb3NpdG9yeTxDYXRlZ29yeT4ge1xuICBnZXRDYXRlZ29yeUJ5U2x1ZyhzbHVnOiBzdHJpbmcsIHNob3A6IFNob3BzKTogUHJvbWlzZTxDYXRlZ29yeT5cbiAgZ2V0Q2F0ZWdvcmllc0ZvckhvbWUoY2F0ZWdvcnlJZHM6IHN0cmluZ1tdKTogUHJvbWlzZTx7IHRpdGxlOiBzdHJpbmcsIHByb2R1Y3RzOiBQcm9kdWN0W10gfVtdPlxufVxuIl19
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export class DuplicatedResultsError extends Error {
|
|
2
|
+
constructor(message) {
|
|
3
|
+
super(message);
|
|
4
|
+
this.message = message;
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHVwbGljYXRlZC1yZXN1bHRzLmVycm9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29ubmVjdC9zcmMvbGliL2Vycm9ycy9kdXBsaWNhdGVkLXJlc3VsdHMuZXJyb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLHNCQUF1QixTQUFRLEtBQUs7SUFDL0MsWUFBcUIsT0FBTztRQUMxQixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUE7UUFESyxZQUFPLEdBQVAsT0FBTyxDQUFBO0lBRTVCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBEdXBsaWNhdGVkUmVzdWx0c0Vycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihyZWFkb25seSBtZXNzYWdlKSB7XG4gICAgc3VwZXIobWVzc2FnZSlcbiAgfVxufVxuIl19
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export * from './invalid-argument.error';
|
|
2
2
|
export * from './required-argument.error';
|
|
3
3
|
export * from './not-found.error';
|
|
4
|
-
|
|
4
|
+
export * from './duplicated-results.error';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0L3NyYy9saWIvZXJyb3JzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsMEJBQTBCLENBQUE7QUFDeEMsY0FBYywyQkFBMkIsQ0FBQTtBQUN6QyxjQUFjLG1CQUFtQixDQUFBO0FBQ2pDLGNBQWMsNEJBQTRCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2ludmFsaWQtYXJndW1lbnQuZXJyb3InXG5leHBvcnQgKiBmcm9tICcuL3JlcXVpcmVkLWFyZ3VtZW50LmVycm9yJ1xuZXhwb3J0ICogZnJvbSAnLi9ub3QtZm91bmQuZXJyb3InXG5leHBvcnQgKiBmcm9tICcuL2R1cGxpY2F0ZWQtcmVzdWx0cy5lcnJvcidcbiJdfQ==
|
package/esm2015/lib/infra/firebase/firestore/repositories/catalog/category-firestore.repository.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
import { __awaiter } from "tslib";
|
|
1
2
|
import { Base } from '../../../../../utils';
|
|
2
3
|
import { Category } from '../../../../../domain';
|
|
3
4
|
import { withCrudFirestore, withFirestore, withHelpers } from '../../mixins';
|
|
5
|
+
import { DuplicatedResultsError, NotFoundError } from '../../../../../errors';
|
|
4
6
|
export class CategoryFirestoreRepository extends withCrudFirestore(withHelpers(withFirestore(Base))) {
|
|
5
7
|
constructor(firestore) {
|
|
6
8
|
super();
|
|
@@ -8,5 +10,41 @@ export class CategoryFirestoreRepository extends withCrudFirestore(withHelpers(w
|
|
|
8
10
|
this.collectionName = 'categories';
|
|
9
11
|
this.model = Category;
|
|
10
12
|
}
|
|
13
|
+
getCategoryBySlug(slug, shop) {
|
|
14
|
+
return this.collection(this.collectionName)
|
|
15
|
+
.where("slug", "==", slug)
|
|
16
|
+
.where("shop", "==", shop)
|
|
17
|
+
.where("published", "==", true)
|
|
18
|
+
.get().then(snap => {
|
|
19
|
+
if (snap.size > 1)
|
|
20
|
+
throw new DuplicatedResultsError("Query returned duplicated values");
|
|
21
|
+
if (snap.empty)
|
|
22
|
+
throw new NotFoundError(`Document with slug ${slug} not found`);
|
|
23
|
+
return snap.docs[0].data();
|
|
24
|
+
}).catch(error => error);
|
|
25
|
+
}
|
|
26
|
+
getCategoriesForHome(categoryIds) {
|
|
27
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
28
|
+
const categorySnap = yield this.collection(this.collectionName)
|
|
29
|
+
.where("id", "in", categoryIds)
|
|
30
|
+
.where("published", "==", true)
|
|
31
|
+
.get();
|
|
32
|
+
if (categorySnap.empty)
|
|
33
|
+
throw new NotFoundError("Categories not found");
|
|
34
|
+
const categories = categorySnap.docs.map(doc => doc.data());
|
|
35
|
+
const homeSections = [];
|
|
36
|
+
for (const category of categories) {
|
|
37
|
+
const productSnap = yield this.collection("products")
|
|
38
|
+
.where("categories", "array-contains", category.id)
|
|
39
|
+
.where("published", "==", true)
|
|
40
|
+
.where("stock.quantity", ">", 1)
|
|
41
|
+
.limit(4)
|
|
42
|
+
.get();
|
|
43
|
+
const products = productSnap.docs.map(doc => doc.data());
|
|
44
|
+
homeSections.push({ title: category.name, products });
|
|
45
|
+
}
|
|
46
|
+
return homeSections;
|
|
47
|
+
});
|
|
48
|
+
}
|
|
11
49
|
}
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0ZWdvcnktZmlyZXN0b3JlLnJlcG9zaXRvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0L3NyYy9saWIvaW5mcmEvZmlyZWJhc2UvZmlyZXN0b3JlL3JlcG9zaXRvcmllcy9jYXRhbG9nL2NhdGVnb3J5LWZpcmVzdG9yZS5yZXBvc2l0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFFQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDM0MsT0FBTyxFQUFFLFFBQVEsRUFBc0MsTUFBTSx1QkFBdUIsQ0FBQTtBQUVwRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUM1RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFFN0UsTUFBTSxPQUFPLDJCQUNYLFNBQVEsaUJBQWlCLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBVyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBRXJFLFlBQXFCLFNBQTRCO1FBQy9DLEtBQUssRUFBRSxDQUFBO1FBRFksY0FBUyxHQUFULFNBQVMsQ0FBbUI7UUFFL0MsSUFBSSxDQUFDLGNBQWMsR0FBRyxZQUFZLENBQUE7UUFDbEMsSUFBSSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUE7SUFDdkIsQ0FBQztJQUVELGlCQUFpQixDQUFDLElBQVksRUFBRSxJQUFXO1FBQ3pDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDO2FBQ3hDLEtBQUssQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQzthQUN6QixLQUFLLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUM7YUFDekIsS0FBSyxDQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDO2FBQzlCLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUVqQixJQUFJLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQztnQkFDZixNQUFNLElBQUksc0JBQXNCLENBQUMsa0NBQWtDLENBQUMsQ0FBQztZQUV2RSxJQUFJLElBQUksQ0FBQyxLQUFLO2dCQUNaLE1BQU0sSUFBSSxhQUFhLENBQUMsc0JBQXNCLElBQUksWUFBWSxDQUFDLENBQUE7WUFFakUsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFBO1FBQzVCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQzVCLENBQUM7SUFFSyxvQkFBb0IsQ0FBQyxXQUFxQjs7WUFFOUMsTUFBTSxZQUFZLEdBQUcsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUM7aUJBQzVELEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLFdBQVcsQ0FBQztpQkFDOUIsS0FBSyxDQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDO2lCQUM5QixHQUFHLEVBQUUsQ0FBQTtZQUVSLElBQUksWUFBWSxDQUFDLEtBQUs7Z0JBQ3BCLE1BQU0sSUFBSSxhQUFhLENBQUMsc0JBQXNCLENBQUMsQ0FBQTtZQUVqRCxNQUFNLFVBQVUsR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFBO1lBRTNELE1BQU0sWUFBWSxHQUFHLEVBQUUsQ0FBQTtZQUV2QixLQUFLLE1BQU0sUUFBUSxJQUFJLFVBQVUsRUFBRTtnQkFDakMsTUFBTSxXQUFXLEdBQUcsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQztxQkFDbEQsS0FBSyxDQUFDLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDO3FCQUNsRCxLQUFLLENBQUMsV0FBVyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUM7cUJBQzlCLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO3FCQUMvQixLQUFLLENBQUMsQ0FBQyxDQUFDO3FCQUNSLEdBQUcsRUFBRSxDQUFBO2dCQUVSLE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUE7Z0JBRXhELFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFBO2FBQ3REO1lBRUQsT0FBTyxZQUFZLENBQUM7UUFDdEIsQ0FBQztLQUFBO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGaXJlYmFzZUZpcmVzdG9yZSB9IGZyb20gJ0BmaXJlYmFzZS9maXJlc3RvcmUtdHlwZXMnXG5cbmltcG9ydCB7IEJhc2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi91dGlscydcbmltcG9ydCB7IENhdGVnb3J5LCBDYXRlZ29yeVJlcG9zaXRvcnksIFByb2R1Y3QsIFNob3BzIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vZG9tYWluJ1xuXG5pbXBvcnQgeyB3aXRoQ3J1ZEZpcmVzdG9yZSwgd2l0aEZpcmVzdG9yZSwgd2l0aEhlbHBlcnMgfSBmcm9tICcuLi8uLi9taXhpbnMnXG5pbXBvcnQgeyBEdXBsaWNhdGVkUmVzdWx0c0Vycm9yLCBOb3RGb3VuZEVycm9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vZXJyb3JzJ1xuXG5leHBvcnQgY2xhc3MgQ2F0ZWdvcnlGaXJlc3RvcmVSZXBvc2l0b3J5XG4gIGV4dGVuZHMgd2l0aENydWRGaXJlc3RvcmUod2l0aEhlbHBlcnMod2l0aEZpcmVzdG9yZTxDYXRlZ29yeT4oQmFzZSkpKVxuICBpbXBsZW1lbnRzIENhdGVnb3J5UmVwb3NpdG9yeSB7XG4gIGNvbnN0cnVjdG9yKHJlYWRvbmx5IGZpcmVzdG9yZTogRmlyZWJhc2VGaXJlc3RvcmUpIHtcbiAgICBzdXBlcigpXG4gICAgdGhpcy5jb2xsZWN0aW9uTmFtZSA9ICdjYXRlZ29yaWVzJ1xuICAgIHRoaXMubW9kZWwgPSBDYXRlZ29yeVxuICB9XG5cbiAgZ2V0Q2F0ZWdvcnlCeVNsdWcoc2x1Zzogc3RyaW5nLCBzaG9wOiBTaG9wcyk6IFByb21pc2U8Q2F0ZWdvcnk+IHtcbiAgICByZXR1cm4gdGhpcy5jb2xsZWN0aW9uKHRoaXMuY29sbGVjdGlvbk5hbWUpXG4gICAgICAud2hlcmUoXCJzbHVnXCIsIFwiPT1cIiwgc2x1ZylcbiAgICAgIC53aGVyZShcInNob3BcIiwgXCI9PVwiLCBzaG9wKVxuICAgICAgLndoZXJlKFwicHVibGlzaGVkXCIsIFwiPT1cIiwgdHJ1ZSlcbiAgICAgIC5nZXQoKS50aGVuKHNuYXAgPT4ge1xuXG4gICAgICAgIGlmIChzbmFwLnNpemUgPiAxKVxuICAgICAgICAgIHRocm93IG5ldyBEdXBsaWNhdGVkUmVzdWx0c0Vycm9yKFwiUXVlcnkgcmV0dXJuZWQgZHVwbGljYXRlZCB2YWx1ZXNcIik7XG5cbiAgICAgICAgaWYgKHNuYXAuZW1wdHkpXG4gICAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXJyb3IoYERvY3VtZW50IHdpdGggc2x1ZyAke3NsdWd9IG5vdCBmb3VuZGApXG5cbiAgICAgICAgcmV0dXJuIHNuYXAuZG9jc1swXS5kYXRhKClcbiAgICAgIH0pLmNhdGNoKGVycm9yID0+IGVycm9yKVxuICB9XG5cbiAgYXN5bmMgZ2V0Q2F0ZWdvcmllc0ZvckhvbWUoY2F0ZWdvcnlJZHM6IHN0cmluZ1tdKTogUHJvbWlzZTx7IHRpdGxlOiBzdHJpbmcsIHByb2R1Y3RzOiBQcm9kdWN0W10gfVtdPiB7XG5cbiAgICBjb25zdCBjYXRlZ29yeVNuYXAgPSBhd2FpdCB0aGlzLmNvbGxlY3Rpb24odGhpcy5jb2xsZWN0aW9uTmFtZSlcbiAgICAgIC53aGVyZShcImlkXCIsIFwiaW5cIiwgY2F0ZWdvcnlJZHMpXG4gICAgICAud2hlcmUoXCJwdWJsaXNoZWRcIiwgXCI9PVwiLCB0cnVlKVxuICAgICAgLmdldCgpXG5cbiAgICBpZiAoY2F0ZWdvcnlTbmFwLmVtcHR5KVxuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXJyb3IoXCJDYXRlZ29yaWVzIG5vdCBmb3VuZFwiKVxuXG4gICAgY29uc3QgY2F0ZWdvcmllcyA9IGNhdGVnb3J5U25hcC5kb2NzLm1hcChkb2MgPT4gZG9jLmRhdGEoKSlcblxuICAgIGNvbnN0IGhvbWVTZWN0aW9ucyA9IFtdXG5cbiAgICBmb3IgKGNvbnN0IGNhdGVnb3J5IG9mIGNhdGVnb3JpZXMpIHtcbiAgICAgIGNvbnN0IHByb2R1Y3RTbmFwID0gYXdhaXQgdGhpcy5jb2xsZWN0aW9uKFwicHJvZHVjdHNcIilcbiAgICAgICAgLndoZXJlKFwiY2F0ZWdvcmllc1wiLCBcImFycmF5LWNvbnRhaW5zXCIsIGNhdGVnb3J5LmlkKVxuICAgICAgICAud2hlcmUoXCJwdWJsaXNoZWRcIiwgXCI9PVwiLCB0cnVlKVxuICAgICAgICAud2hlcmUoXCJzdG9jay5xdWFudGl0eVwiLCBcIj5cIiwgMSlcbiAgICAgICAgLmxpbWl0KDQpXG4gICAgICAgIC5nZXQoKVxuXG4gICAgICBjb25zdCBwcm9kdWN0cyA9IHByb2R1Y3RTbmFwLmRvY3MubWFwKGRvYyA9PiBkb2MuZGF0YSgpKVxuXG4gICAgICBob21lU2VjdGlvbnMucHVzaCh7IHRpdGxlOiBjYXRlZ29yeS5uYW1lLCBwcm9kdWN0cyB9KVxuICAgIH1cblxuICAgIHJldHVybiBob21lU2VjdGlvbnM7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -6,9 +6,9 @@ export class ProductVariantFirestoreRepository extends withSubCollection(withCru
|
|
|
6
6
|
super();
|
|
7
7
|
this.firestore = firestore;
|
|
8
8
|
this.parentRepository = parentRepository;
|
|
9
|
-
this.collectionName = '
|
|
9
|
+
this.collectionName = 'variants';
|
|
10
10
|
this.parentIdField = 'productId';
|
|
11
11
|
this.model = Variant;
|
|
12
12
|
}
|
|
13
13
|
}
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC12YXJpYW50LWZpcmVzdG9yZS5yZXBvc2l0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29ubmVjdC9zcmMvbGliL2luZnJhL2ZpcmViYXNlL2ZpcmVzdG9yZS9yZXBvc2l0b3JpZXMvY2F0YWxvZy9wcm9kdWN0LXZhcmlhbnQtZmlyZXN0b3JlLnJlcG9zaXRvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFxQixNQUFNLHVCQUF1QixDQUFBO0FBQzNFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sY0FBYyxDQUFBO0FBSS9GLE1BQU0sT0FBTyxpQ0FDWCxTQUFRLGlCQUFpQixDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQVUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQztJQUdoRyxZQUFxQixTQUE0QixFQUFXLGdCQUE0QztRQUN0RyxLQUFLLEVBQUUsQ0FBQTtRQURZLGNBQVMsR0FBVCxTQUFTLENBQW1CO1FBQVcscUJBQWdCLEdBQWhCLGdCQUFnQixDQUE0QjtRQUV0RyxJQUFJLENBQUMsY0FBYyxHQUFHLFVBQVUsQ0FBQTtRQUNoQyxJQUFJLENBQUMsYUFBYSxHQUFHLFdBQVcsQ0FBQTtRQUNoQyxJQUFJLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQTtJQUN0QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGaXJlYmFzZUZpcmVzdG9yZSB9IGZyb20gJ0BmaXJlYmFzZS9maXJlc3RvcmUtdHlwZXMnXG5cbmltcG9ydCB7IEJhc2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi91dGlscydcbmltcG9ydCB7IFByb2R1Y3QsIFZhcmlhbnQsIFZhcmlhbnRSZXBvc2l0b3J5IH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vZG9tYWluJ1xuaW1wb3J0IHsgd2l0aENydWRGaXJlc3RvcmUsIHdpdGhGaXJlc3RvcmUsIHdpdGhIZWxwZXJzLCB3aXRoU3ViQ29sbGVjdGlvbiB9IGZyb20gJy4uLy4uL21peGlucydcblxuaW1wb3J0IHsgUHJvZHVjdEZpcmVzdG9yZVJlcG9zaXRvcnkgfSBmcm9tICcuL3Byb2R1Y3QtZmlyZXN0b3JlLnJlcG9zaXRvcnknXG5cbmV4cG9ydCBjbGFzcyBQcm9kdWN0VmFyaWFudEZpcmVzdG9yZVJlcG9zaXRvcnlcbiAgZXh0ZW5kcyB3aXRoU3ViQ29sbGVjdGlvbih3aXRoQ3J1ZEZpcmVzdG9yZSh3aXRoSGVscGVycyh3aXRoRmlyZXN0b3JlPFZhcmlhbnQ+
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC12YXJpYW50LWZpcmVzdG9yZS5yZXBvc2l0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29ubmVjdC9zcmMvbGliL2luZnJhL2ZpcmViYXNlL2ZpcmVzdG9yZS9yZXBvc2l0b3JpZXMvY2F0YWxvZy9wcm9kdWN0LXZhcmlhbnQtZmlyZXN0b3JlLnJlcG9zaXRvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFxQixNQUFNLHVCQUF1QixDQUFBO0FBQzNFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sY0FBYyxDQUFBO0FBSS9GLE1BQU0sT0FBTyxpQ0FDWCxTQUFRLGlCQUFpQixDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQVUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQztJQUdoRyxZQUFxQixTQUE0QixFQUFXLGdCQUE0QztRQUN0RyxLQUFLLEVBQUUsQ0FBQTtRQURZLGNBQVMsR0FBVCxTQUFTLENBQW1CO1FBQVcscUJBQWdCLEdBQWhCLGdCQUFnQixDQUE0QjtRQUV0RyxJQUFJLENBQUMsY0FBYyxHQUFHLFVBQVUsQ0FBQTtRQUNoQyxJQUFJLENBQUMsYUFBYSxHQUFHLFdBQVcsQ0FBQTtRQUNoQyxJQUFJLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQTtJQUN0QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGaXJlYmFzZUZpcmVzdG9yZSB9IGZyb20gJ0BmaXJlYmFzZS9maXJlc3RvcmUtdHlwZXMnXG5cbmltcG9ydCB7IEJhc2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi91dGlscydcbmltcG9ydCB7IFByb2R1Y3QsIFZhcmlhbnQsIFZhcmlhbnRSZXBvc2l0b3J5IH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vZG9tYWluJ1xuaW1wb3J0IHsgd2l0aENydWRGaXJlc3RvcmUsIHdpdGhGaXJlc3RvcmUsIHdpdGhIZWxwZXJzLCB3aXRoU3ViQ29sbGVjdGlvbiB9IGZyb20gJy4uLy4uL21peGlucydcblxuaW1wb3J0IHsgUHJvZHVjdEZpcmVzdG9yZVJlcG9zaXRvcnkgfSBmcm9tICcuL3Byb2R1Y3QtZmlyZXN0b3JlLnJlcG9zaXRvcnknXG5cbmV4cG9ydCBjbGFzcyBQcm9kdWN0VmFyaWFudEZpcmVzdG9yZVJlcG9zaXRvcnlcbiAgZXh0ZW5kcyB3aXRoU3ViQ29sbGVjdGlvbih3aXRoQ3J1ZEZpcmVzdG9yZSh3aXRoSGVscGVycyh3aXRoRmlyZXN0b3JlPFZhcmlhbnQ+KEJhc2UpKSksIFByb2R1Y3QpXG4gIGltcGxlbWVudHMgVmFyaWFudFJlcG9zaXRvcnlcbntcbiAgY29uc3RydWN0b3IocmVhZG9ubHkgZmlyZXN0b3JlOiBGaXJlYmFzZUZpcmVzdG9yZSwgcmVhZG9ubHkgcGFyZW50UmVwb3NpdG9yeTogUHJvZHVjdEZpcmVzdG9yZVJlcG9zaXRvcnkpIHtcbiAgICBzdXBlcigpXG4gICAgdGhpcy5jb2xsZWN0aW9uTmFtZSA9ICd2YXJpYW50cydcbiAgICB0aGlzLnBhcmVudElkRmllbGQgPSAncHJvZHVjdElkJ1xuICAgIHRoaXMubW9kZWwgPSBWYXJpYW50XG4gIH1cbn1cbiJdfQ==
|
|
@@ -518,6 +518,13 @@ class NotFoundError extends Error {
|
|
|
518
518
|
}
|
|
519
519
|
}
|
|
520
520
|
|
|
521
|
+
class DuplicatedResultsError extends Error {
|
|
522
|
+
constructor(message) {
|
|
523
|
+
super(message);
|
|
524
|
+
this.message = message;
|
|
525
|
+
}
|
|
526
|
+
}
|
|
527
|
+
|
|
521
528
|
const withFirestore = (MixinBase) => {
|
|
522
529
|
return class extends MixinBase {
|
|
523
530
|
constructor(...args) {
|
|
@@ -839,6 +846,42 @@ class CategoryFirestoreRepository extends withCrudFirestore(withHelpers(withFire
|
|
|
839
846
|
this.collectionName = 'categories';
|
|
840
847
|
this.model = Category;
|
|
841
848
|
}
|
|
849
|
+
getCategoryBySlug(slug, shop) {
|
|
850
|
+
return this.collection(this.collectionName)
|
|
851
|
+
.where("slug", "==", slug)
|
|
852
|
+
.where("shop", "==", shop)
|
|
853
|
+
.where("published", "==", true)
|
|
854
|
+
.get().then(snap => {
|
|
855
|
+
if (snap.size > 1)
|
|
856
|
+
throw new DuplicatedResultsError("Query returned duplicated values");
|
|
857
|
+
if (snap.empty)
|
|
858
|
+
throw new NotFoundError(`Document with slug ${slug} not found`);
|
|
859
|
+
return snap.docs[0].data();
|
|
860
|
+
}).catch(error => error);
|
|
861
|
+
}
|
|
862
|
+
getCategoriesForHome(categoryIds) {
|
|
863
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
864
|
+
const categorySnap = yield this.collection(this.collectionName)
|
|
865
|
+
.where("id", "in", categoryIds)
|
|
866
|
+
.where("published", "==", true)
|
|
867
|
+
.get();
|
|
868
|
+
if (categorySnap.empty)
|
|
869
|
+
throw new NotFoundError("Categories not found");
|
|
870
|
+
const categories = categorySnap.docs.map(doc => doc.data());
|
|
871
|
+
const homeSections = [];
|
|
872
|
+
for (const category of categories) {
|
|
873
|
+
const productSnap = yield this.collection("products")
|
|
874
|
+
.where("categories", "array-contains", category.id)
|
|
875
|
+
.where("published", "==", true)
|
|
876
|
+
.where("stock.quantity", ">", 1)
|
|
877
|
+
.limit(4)
|
|
878
|
+
.get();
|
|
879
|
+
const products = productSnap.docs.map(doc => doc.data());
|
|
880
|
+
homeSections.push({ title: category.name, products });
|
|
881
|
+
}
|
|
882
|
+
return homeSections;
|
|
883
|
+
});
|
|
884
|
+
}
|
|
842
885
|
}
|
|
843
886
|
|
|
844
887
|
class ProductFirestoreRepository extends withCrudFirestore(withHelpers(withFirestore(Base))) {
|
|
@@ -855,7 +898,7 @@ class ProductVariantFirestoreRepository extends withSubCollection(withCrudFirest
|
|
|
855
898
|
super();
|
|
856
899
|
this.firestore = firestore;
|
|
857
900
|
this.parentRepository = parentRepository;
|
|
858
|
-
this.collectionName = '
|
|
901
|
+
this.collectionName = 'variants';
|
|
859
902
|
this.parentIdField = 'productId';
|
|
860
903
|
this.model = Variant;
|
|
861
904
|
}
|
|
@@ -971,5 +1014,5 @@ class AuthenticationFirebaseAuthService {
|
|
|
971
1014
|
* Generated bundle index. Do not edit.
|
|
972
1015
|
*/
|
|
973
1016
|
|
|
974
|
-
export { Address, Area, Authentication, AuthenticationFirebaseAuthService, Base, BaseModel, BeardSizes, BeautyProfile, BillingStatus, Buy2Win, Buy2WinFirestoreRepository, Category, CategoryFirestoreRepository, Checkout, CheckoutFirestoreRepository, CheckoutSubscription, CheckoutSubscriptionFirestoreRepository, CheckoutTypes, Coupon, CouponFirestoreRepository, CouponSubtypes, CouponTypes, Edition, EditionStatus, Exclusivities, FinancialCoupon, HairTypes, Home, HomeFirestoreRepository, InvalidArgumentError, LineItem, NotFoundError, OfficePosition, Order, OrderFirestoreRepository, OrderStatus, Payment, PaymentFirestoreRepository, PaymentType, Product, ProductFirestoreRepository, ProductVariantFirestoreRepository, RequiredArgumentError, ShippingMethod, ShopMenu, ShopMenuFirestoreRepository, Shops, SignInMethods, SignOut, Status, Subscription, SubscriptionEditionFirestoreRepository, SubscriptionFirestoreRepository, SubscriptionPayment, SubscriptionPaymentFirestoreRepository, SubscriptionPlan, SubscriptionPlanFirestoreRepository, UnauthorizedError, UpdateOptionActions, User, UserAddress, UserAddressFirestoreRepository, UserBeautyProfileFirestoreRepository, UserFirestoreRepository, UserType, Variant, Where, withCreateFirestore, withCrudFirestore, withDeleteFirestore, withFindFirestore, withFirestore, withGetFirestore, withHelpers, withSubCollection, withUpdateFirestore };
|
|
1017
|
+
export { Address, Area, Authentication, AuthenticationFirebaseAuthService, Base, BaseModel, BeardSizes, BeautyProfile, BillingStatus, Buy2Win, Buy2WinFirestoreRepository, Category, CategoryFirestoreRepository, Checkout, CheckoutFirestoreRepository, CheckoutSubscription, CheckoutSubscriptionFirestoreRepository, CheckoutTypes, Coupon, CouponFirestoreRepository, CouponSubtypes, CouponTypes, DuplicatedResultsError, Edition, EditionStatus, Exclusivities, FinancialCoupon, HairTypes, Home, HomeFirestoreRepository, InvalidArgumentError, LineItem, NotFoundError, OfficePosition, Order, OrderFirestoreRepository, OrderStatus, Payment, PaymentFirestoreRepository, PaymentType, Product, ProductFirestoreRepository, ProductVariantFirestoreRepository, RequiredArgumentError, ShippingMethod, ShopMenu, ShopMenuFirestoreRepository, Shops, SignInMethods, SignOut, Status, Subscription, SubscriptionEditionFirestoreRepository, SubscriptionFirestoreRepository, SubscriptionPayment, SubscriptionPaymentFirestoreRepository, SubscriptionPlan, SubscriptionPlanFirestoreRepository, UnauthorizedError, UpdateOptionActions, User, UserAddress, UserAddressFirestoreRepository, UserBeautyProfileFirestoreRepository, UserFirestoreRepository, UserType, Variant, Where, withCreateFirestore, withCrudFirestore, withDeleteFirestore, withFindFirestore, withFirestore, withGetFirestore, withHelpers, withSubCollection, withUpdateFirestore };
|
|
975
1018
|
//# sourceMappingURL=infrab4a-connect.js.map
|