@infrab4a/connect 4.23.2 → 4.24.0-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.
Files changed (26) hide show
  1. package/index.cjs.js +1595 -1597
  2. package/index.esm.js +1592 -1597
  3. package/package.json +1 -1
  4. package/src/domain/catalog/models/category.d.ts +48 -6
  5. package/src/domain/catalog/models/filter.d.ts +2 -2
  6. package/src/domain/catalog/models/index.d.ts +1 -1
  7. package/src/domain/catalog/models/kit-product.d.ts +5 -4
  8. package/src/domain/catalog/models/product-base.d.ts +12 -8
  9. package/src/domain/catalog/models/product-errors.d.ts +2 -1
  10. package/src/domain/catalog/models/{product-reviews.d.ts → product-review.d.ts} +2 -2
  11. package/src/domain/catalog/models/product.d.ts +4 -7
  12. package/src/domain/catalog/models/types/index.d.ts +0 -1
  13. package/src/domain/catalog/models/types/product-evaluation.type.d.ts +1 -1
  14. package/src/domain/catalog/models/variant.d.ts +3 -16
  15. package/src/domain/catalog/repositories/product-reviews.repository.d.ts +5 -5
  16. package/src/domain/catalog/repositories/product.repository.d.ts +1 -1
  17. package/src/infra/elasticsearch/indexes/products-index.d.ts +5 -5
  18. package/src/infra/hasura-graphql/models/variant-hasura-graphql.d.ts +0 -2
  19. package/src/infra/hasura-graphql/repositories/catalog/product-review-hasura-graphql.repository.d.ts +10 -10
  20. package/src/utils/circular-dependencies.d.ts +7 -0
  21. package/src/utils/index.d.ts +1 -0
  22. package/src/domain/catalog/models/category-base.d.ts +0 -47
  23. package/src/domain/catalog/models/category-for-product.d.ts +0 -5
  24. package/src/domain/catalog/models/product-for-category.d.ts +0 -7
  25. package/src/domain/catalog/models/product-for-kit.d.ts +0 -7
  26. package/src/domain/catalog/models/types/product-review.type.d.ts +0 -17
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@infrab4a/connect",
3
- "version": "4.23.2",
3
+ "version": "4.24.0-beta.1",
4
4
  "publishConfig": {
5
5
  "registry": "https://registry.npmjs.org"
6
6
  },
@@ -1,9 +1,51 @@
1
- import { GenericIdentifier } from '../../generic/model';
2
- import { CategoryBase } from './category-base';
3
- import { Filter } from './filter';
4
- import { ProductForCategory } from './product-for-category';
5
- export declare class Category extends CategoryBase<Category, GenericIdentifier> {
6
- childrenProducts?: ProductForCategory[];
1
+ import { BaseModel, GenericIdentifier } from '../../generic/model';
2
+ import { Shops } from './enums';
3
+ import type { Filter } from './filter';
4
+ import type { Product } from './product';
5
+ import { CategoryCondition, CategoryImages, CategoryMetadata, CategoryMostRelevant } from './types';
6
+ export declare class Category extends BaseModel<Category> {
7
+ id: string;
8
+ brandCategory: boolean;
9
+ brandLogo?: string;
10
+ name: string;
11
+ slug: string;
12
+ image?: string;
13
+ images?: CategoryImages;
14
+ brandCategoryBanner?: string;
15
+ brandCategoryBannerMobile?: string;
16
+ description: string;
17
+ conditions?: CategoryCondition;
18
+ products?: string[];
19
+ createdAt?: Date;
20
+ updatedAt?: Date;
21
+ shop?: Shops;
22
+ shops?: string[];
23
+ published: boolean;
24
+ metadata: CategoryMetadata;
25
+ metadatas: CategoryMetadata[];
26
+ isCollection?: boolean;
27
+ isWishlist?: boolean;
28
+ reference?: string;
29
+ parentId?: number;
30
+ theme?: string;
31
+ bannerUrl?: string;
32
+ mostRelevant?: string[];
33
+ mostRelevants?: CategoryMostRelevant;
34
+ parent?: Category;
35
+ childrenProducts?: Product[];
7
36
  filters?: Filter[];
8
37
  static get identifiersFields(): GenericIdentifier[];
38
+ get glamImages(): {
39
+ image: string;
40
+ brandBanner: string;
41
+ brandBannerMobile: string;
42
+ };
43
+ get mensImages(): {
44
+ image: string;
45
+ brandBanner: string;
46
+ brandBannerMobile: string;
47
+ };
48
+ get glamMetadata(): CategoryMetadata;
49
+ get mensMetadata(): CategoryMetadata;
50
+ getMostRelevantByShop(shop: Shops): string[];
9
51
  }
@@ -1,5 +1,5 @@
1
1
  import { BaseModel, GenericIdentifier } from '../../generic/model';
2
- import { CategoryBase } from './category-base';
2
+ import { Category } from './category';
3
3
  import { FilterOption } from './filter-option';
4
4
  export declare class Filter extends BaseModel<Filter> {
5
5
  id: number;
@@ -10,6 +10,6 @@ export declare class Filter extends BaseModel<Filter> {
10
10
  options?: FilterOption[];
11
11
  createdAt?: Date;
12
12
  updatedAt?: Date;
13
- categories?: CategoryBase[];
13
+ categories?: Category[];
14
14
  static get identifiersFields(): GenericIdentifier[];
15
15
  }
@@ -8,7 +8,7 @@ export * from './filter-option';
8
8
  export * from './kit-product';
9
9
  export * from './product';
10
10
  export * from './product-errors';
11
- export * from './product-reviews';
11
+ export * from './product-review';
12
12
  export * from './product-stock-notification';
13
13
  export * from './types';
14
14
  export * from './variant';
@@ -1,12 +1,13 @@
1
1
  import { BaseModel } from '../../generic/model';
2
- import { ProductForKit } from './product-for-kit';
2
+ import type { Product } from './product';
3
3
  type KitProductIdentifiers = 'productId' | 'kitProductId';
4
- export declare class KitProduct extends BaseModel<KitProduct, KitProductIdentifiers> {
4
+ export declare class KitProduct extends BaseModel<KitProduct> {
5
+ id: string;
5
6
  productId: string;
6
7
  kitProductId: string;
7
8
  quantity: number;
8
- kit: ProductForKit;
9
- product: ProductForKit;
9
+ kit: Product;
10
+ product: Product;
10
11
  static get identifiersFields(): KitProductIdentifiers[];
11
12
  }
12
13
  export {};
@@ -1,14 +1,16 @@
1
- import { BaseModel, GenericIdentifier, ModelBaseStructure } from '../../generic/model';
2
- import { ProductEvaluation, ProductGender, ProductLabel, ProductMetadata, ProductReview, ShopDescription, ShopPrice, Stock } from './types';
3
- import { Variant } from './variant';
4
- export declare class ProductBase<ChildProduct extends ModelBaseStructure<ChildProduct, Identifiers>, Identifiers = ChildProduct['identifiersFields']> extends BaseModel<ChildProduct, Identifiers> {
1
+ import { BaseModel } from '../../generic/model';
2
+ import { Category } from './category';
3
+ import { KitProduct } from './kit-product';
4
+ import { ProductReview } from './product-review';
5
+ import { ProductEvaluation, ProductGender, ProductLabel, ProductMetadata, ShopDescription, ShopPrice, Stock } from './types';
6
+ type ProductIdentifiers = 'id';
7
+ export declare class ProductBase<T extends ProductBase<T, I>, I = ProductIdentifiers> extends BaseModel<T, I> {
5
8
  id: string;
6
9
  name: string;
7
10
  slug: string;
8
11
  description: ShopDescription;
9
12
  sku: string;
10
13
  price: ShopPrice;
11
- hasVariants: boolean;
12
14
  NCM: string;
13
15
  EAN: string;
14
16
  CEST: string;
@@ -25,8 +27,6 @@ export declare class ProductBase<ChildProduct extends ModelBaseStructure<ChildPr
25
27
  filters?: string[];
26
28
  type?: string;
27
29
  categories?: string[];
28
- reviews?: ProductReview[];
29
- variants?: Variant[];
30
30
  video?: string;
31
31
  isKit?: boolean;
32
32
  rate?: number;
@@ -37,8 +37,12 @@ export declare class ProductBase<ChildProduct extends ModelBaseStructure<ChildPr
37
37
  label?: ProductLabel;
38
38
  group?: number;
39
39
  validity: boolean;
40
+ category: Category;
41
+ kitProducts?: KitProduct[];
42
+ reviews?: ProductReview[];
40
43
  private reviewsTotal?;
41
44
  get evaluation(): ProductEvaluation;
42
45
  set evaluation(evaluation: ProductEvaluation);
43
- static get identifiersFields(): GenericIdentifier[];
46
+ static get identifiersFields(): string[];
44
47
  }
48
+ export {};
@@ -2,7 +2,8 @@ import { BaseModel } from '../../generic/model';
2
2
  import { Product } from './product';
3
3
  import { Variant } from './variant';
4
4
  type ProductErrorsIdentifiers = 'productId' | 'source' | 'error';
5
- export declare class ProductErrors<T extends Product | Variant = Product | Variant> extends BaseModel<ProductErrors<T>, ProductErrorsIdentifiers> {
5
+ type ProductAndVariant = Product | Variant;
6
+ export declare class ProductErrors<T extends ProductAndVariant = ProductAndVariant> extends BaseModel<ProductErrors<T>, ProductErrorsIdentifiers> {
6
7
  productId: string;
7
8
  source: string;
8
9
  error: string;
@@ -1,8 +1,8 @@
1
1
  import { BaseModel, GenericIdentifier } from '../../generic/model';
2
2
  import { Shops } from './enums';
3
- export declare class ProductReviews extends BaseModel<ProductReviews> {
3
+ export declare class ProductReview extends BaseModel<ProductReview> {
4
4
  id: number;
5
- productId: number;
5
+ productId: string;
6
6
  shop: Shops;
7
7
  rate: number;
8
8
  author?: string;
@@ -1,9 +1,6 @@
1
- import { GenericIdentifier } from '../../generic/model';
2
- import { CategoryForProduct } from './category-for-product';
3
- import { KitProduct } from './kit-product';
4
1
  import { ProductBase } from './product-base';
5
- export declare class Product extends ProductBase<Product, GenericIdentifier> {
6
- category: CategoryForProduct;
7
- kitProducts?: KitProduct[];
8
- static get identifiersFields(): GenericIdentifier[];
2
+ import { Variant } from './variant';
3
+ export declare class Product extends ProductBase<Product> {
4
+ hasVariants: boolean;
5
+ variants?: Variant[];
9
6
  }
@@ -6,7 +6,6 @@ export * from './product-evaluation.type';
6
6
  export * from './product-gender.type';
7
7
  export * from './product-label.type';
8
8
  export * from './product-metadata.type';
9
- export * from './product-review.type';
10
9
  export * from './product-variant-report.type';
11
10
  export * from './report-stock-notification.type';
12
11
  export * from './shop-description.type';
@@ -1,4 +1,4 @@
1
- import { ProductReview } from './product-review.type';
1
+ import { ProductReview } from '../product-review';
2
2
  export type ProductEvaluation = {
3
3
  reviews?: ProductReview[];
4
4
  rating?: number;
@@ -1,21 +1,8 @@
1
- import { BaseModel } from '../../generic/model';
2
- import { ShopPrice, Stock, VariantGrade } from './types';
1
+ import { ProductBase } from './product-base';
2
+ import { VariantGrade } from './types';
3
3
  export type ProductVariantIdentifiers = 'id' | 'productId';
4
- export declare class Variant extends BaseModel<Variant, ProductVariantIdentifiers> {
5
- id: string;
4
+ export declare class Variant extends ProductBase<Variant, ProductVariantIdentifiers> {
6
5
  productId: string;
7
- sku: string;
8
- price: ShopPrice;
9
- EAN: string;
10
- stock: Stock;
11
6
  grade?: VariantGrade[];
12
- costPrice: number;
13
- weight: number;
14
- createdAt?: Date;
15
- updatedAt?: Date;
16
- group?: number;
17
- validity: boolean;
18
- tags: string[];
19
- published: boolean;
20
7
  static get identifiersFields(): ProductVariantIdentifiers[];
21
8
  }
@@ -1,7 +1,7 @@
1
1
  import { CrudRepository } from '../../generic/repository/crud.repository';
2
- import { ProductReviews } from '../models';
3
- export interface ProductReviewsRepository extends CrudRepository<ProductReviews> {
4
- aproveReview(id: number): Promise<ProductReviews>;
5
- disaproveReview(id: number): Promise<ProductReviews>;
6
- updateManyStatus(reviews: Pick<ProductReviews, 'id' | 'status'>[]): Promise<void>;
2
+ import { ProductReview } from '../models';
3
+ export interface ProductReviewRepository extends CrudRepository<ProductReview> {
4
+ aproveReview(id: number): Promise<ProductReview>;
5
+ disaproveReview(id: number): Promise<ProductReview>;
6
+ updateManyStatus(reviews: Pick<ProductReview, 'id' | 'status'>[]): Promise<void>;
7
7
  }
@@ -2,7 +2,7 @@ import { FindRepositoryParams, RepositoryFindResult } from '../../generic';
2
2
  import { CrudRepository } from '../../generic/repository/crud.repository';
3
3
  import { Product, ProductGender, ProductReview, ProductVariantReport } from '../models';
4
4
  export type ReviewStatusParams = 'pending' | 'approved' | 'rejected';
5
- export type ReviewWithProductData = ProductReview & {
5
+ export type ReviewWithProductData = Omit<ProductReview, 'identifier' | 'identifiersFields' | 'toPlain'> & {
6
6
  productId: string;
7
7
  productName: string;
8
8
  productSku: string;
@@ -8,15 +8,14 @@ export declare class ProductsIndex {
8
8
  getById(id: string): Promise<Product>;
9
9
  search(searchTerm: string, total: number, shop?: string): Promise<{
10
10
  stock: number;
11
- category: import("../../../domain/catalog/models/category-for-product").CategoryForProduct;
12
- kitProducts?: import("../../../domain").KitProduct[];
11
+ hasVariants: boolean;
12
+ variants?: import("../../../domain").Variant[];
13
13
  id: string;
14
14
  name: string;
15
15
  slug: string;
16
16
  description: import("../../../domain").ShopDescription;
17
17
  sku: string;
18
18
  price: import("../../../domain").ShopPrice;
19
- hasVariants: boolean;
20
19
  NCM: string;
21
20
  EAN: string;
22
21
  CEST: string;
@@ -32,8 +31,6 @@ export declare class ProductsIndex {
32
31
  filters?: string[];
33
32
  type?: string;
34
33
  categories?: string[];
35
- reviews?: import("../../../domain").ProductReview[];
36
- variants?: import("../../../domain").Variant[];
37
34
  video?: string;
38
35
  isKit?: boolean;
39
36
  rate?: number;
@@ -44,6 +41,9 @@ export declare class ProductsIndex {
44
41
  label?: "outlet" | "on-sale" | "last-units" | "glamstar";
45
42
  group?: number;
46
43
  validity: boolean;
44
+ category: import("../../../domain").Category;
45
+ kitProducts?: import("../../../domain").KitProduct[];
46
+ reviews?: import("../../../domain").ProductReview[];
47
47
  }[]>;
48
48
  save(product: ProductHasuraGraphQL): Promise<void>;
49
49
  update(product: ProductHasuraGraphQL): Promise<void>;
@@ -5,6 +5,4 @@ export declare class VariantHasuraGraphQL extends Variant {
5
5
  subscriberDiscountPercentage?: number;
6
6
  subscriberPrice?: number;
7
7
  hasStock?: boolean;
8
- name?: string;
9
- hasVariants?: boolean;
10
8
  }
@@ -1,13 +1,13 @@
1
- import { ProductReviews } from '../../../../domain';
2
- import { ProductReviewsRepository } from '../../../../domain/catalog/repositories';
1
+ import { ProductReview } from '../../../../domain';
2
+ import { ProductReviewRepository } from '../../../../domain/catalog/repositories';
3
3
  import { HasuraConstructorParams } from '../../mixins';
4
- declare const ProductReviewsHasuraGraphQLRepository_base: import("../../../../utils").MixinCtor<import("../..").GraphQLRepository<ProductReviews> & import("../../../../domain").CrudRepository<ProductReviews, import("../../../../domain").CrudParams<ProductReviews>> & import("../../../../domain").UpdateRepository<ProductReviews, import("../../../../domain").RepositoryUpdateParams<ProductReviews>> & {
5
- paramsToPlain(params: import("../../../../domain").RepositoryUpdateParams<ProductReviews>): Partial<ProductReviews>;
6
- }, [HasuraConstructorParams<ProductReviews> & import("../../mixins").CreateConstructorParams & import("../../mixins").DeleteConstructorParams & import("../../mixins").GetConstructorParams & import("../../mixins").UpdateConstructorParams, ...any[]]>;
7
- export declare class ProductReviewsHasuraGraphQLRepository extends ProductReviewsHasuraGraphQLRepository_base implements ProductReviewsRepository {
8
- constructor({ endpoint, authOptions, interceptors, }: Pick<HasuraConstructorParams<ProductReviews>, 'endpoint' | 'authOptions' | 'interceptors'>);
9
- updateManyStatus(reviews: Pick<ProductReviews, 'id' | 'status'>[]): Promise<void>;
10
- aproveReview(id: number): Promise<ProductReviews>;
11
- disaproveReview(id: number): Promise<ProductReviews>;
4
+ declare const ProductReviewHasuraGraphQLRepository_base: import("../../../../utils").MixinCtor<import("../..").GraphQLRepository<ProductReview> & import("../../../../domain").CrudRepository<ProductReview, import("../../../../domain").CrudParams<ProductReview>> & import("../../../../domain").UpdateRepository<ProductReview, import("../../../../domain").RepositoryUpdateParams<ProductReview>> & {
5
+ paramsToPlain(params: import("../../../../domain").RepositoryUpdateParams<ProductReview>): Partial<ProductReview>;
6
+ }, [HasuraConstructorParams<ProductReview> & import("../../mixins").CreateConstructorParams & import("../../mixins").DeleteConstructorParams & import("../../mixins").GetConstructorParams & import("../../mixins").UpdateConstructorParams, ...any[]]>;
7
+ export declare class ProductReviewHasuraGraphQLRepository extends ProductReviewHasuraGraphQLRepository_base implements ProductReviewRepository {
8
+ constructor({ endpoint, authOptions, interceptors, }: Pick<HasuraConstructorParams<ProductReview>, 'endpoint' | 'authOptions' | 'interceptors'>);
9
+ updateManyStatus(reviews: Pick<ProductReview, 'id' | 'status'>[]): Promise<void>;
10
+ aproveReview(id: number): Promise<ProductReview>;
11
+ disaproveReview(id: number): Promise<ProductReview>;
12
12
  }
13
13
  export {};
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Este arquivo define funções para resolver dependências circulares
3
+ * em ambiente ESM, onde não podemos usar require()
4
+ */
5
+ export declare function registerClass(name: string, classConstructor: any): void;
6
+ export declare function getClass(name: string): any;
7
+ export declare function resolveClass(name: string): () => any;
@@ -1,6 +1,7 @@
1
1
  import { add, addBusinessDays, addDays, addMonths, addYears, Duration, endOfDay, format, formatISO9075, parseISO, startOfDay, sub, subDays } from 'date-fns';
2
2
  import { chunk, each, get, isBoolean, isDate, isEmpty, isInteger, isNaN, isNil, isNumber, isObject, isString, now, omit, pick, set, sortBy, unset } from 'lodash';
3
3
  export type DateDuration = Duration;
4
+ export * from './circular-dependencies';
4
5
  export * from './decorators';
5
6
  export * from './get';
6
7
  export * from './helpers';
@@ -1,47 +0,0 @@
1
- import { BaseModel, GenericIdentifier, ModelBaseStructure } from '../../generic/model';
2
- import { Shops } from './enums';
3
- import { CategoryCondition, CategoryImages, CategoryMetadata, CategoryMostRelevant } from './types';
4
- export declare class CategoryBase<ChildCategory extends ModelBaseStructure<ChildCategory, Identifiers> = ModelBaseStructure<any, any>, Identifiers = ChildCategory['identifiersFields']> extends BaseModel<ChildCategory, Identifiers> {
5
- id: string;
6
- brandCategory: boolean;
7
- brandLogo?: string;
8
- name: string;
9
- slug: string;
10
- image?: string;
11
- images?: CategoryImages;
12
- brandCategoryBanner?: string;
13
- brandCategoryBannerMobile?: string;
14
- description: string;
15
- conditions?: CategoryCondition;
16
- products?: string[];
17
- createdAt?: Date;
18
- updatedAt?: Date;
19
- shop?: Shops;
20
- shops?: string[];
21
- published: boolean;
22
- metadata: CategoryMetadata;
23
- metadatas: CategoryMetadata[];
24
- isCollection?: boolean;
25
- isWishlist?: boolean;
26
- reference?: string;
27
- parentId?: number;
28
- theme?: string;
29
- bannerUrl?: string;
30
- mostRelevant?: string[];
31
- mostRelevants?: CategoryMostRelevant;
32
- parent?: CategoryBase;
33
- static get identifiersFields(): GenericIdentifier[];
34
- get glamImages(): {
35
- image: string;
36
- brandBanner: string;
37
- brandBannerMobile: string;
38
- };
39
- get mensImages(): {
40
- image: string;
41
- brandBanner: string;
42
- brandBannerMobile: string;
43
- };
44
- get glamMetadata(): CategoryMetadata;
45
- get mensMetadata(): CategoryMetadata;
46
- getMostRelevantByShop(shop: Shops): string[];
47
- }
@@ -1,5 +0,0 @@
1
- import { GenericIdentifier } from '../../generic/model';
2
- import { CategoryBase } from './category-base';
3
- export declare class CategoryForProduct extends CategoryBase<CategoryForProduct, GenericIdentifier> {
4
- static get identifiersFields(): GenericIdentifier[];
5
- }
@@ -1,7 +0,0 @@
1
- import { GenericIdentifier } from '../../generic/model';
2
- import { KitProduct } from './kit-product';
3
- import { ProductBase } from './product-base';
4
- export declare class ProductForCategory extends ProductBase<ProductForCategory, GenericIdentifier> {
5
- kitProducts?: KitProduct[];
6
- static get identifiersFields(): GenericIdentifier[];
7
- }
@@ -1,7 +0,0 @@
1
- import { GenericIdentifier } from '../../generic/model';
2
- import { CategoryForProduct } from './category-for-product';
3
- import { ProductBase } from './product-base';
4
- export declare class ProductForKit extends ProductBase<ProductForKit, GenericIdentifier> {
5
- category: CategoryForProduct;
6
- static get identifiersFields(): GenericIdentifier[];
7
- }
@@ -1,17 +0,0 @@
1
- import { Shops } from '../enums/shops.enum';
2
- export type ProductReview = {
3
- id?: string;
4
- shop: Shops;
5
- rate: number;
6
- author?: string;
7
- email?: string;
8
- location?: string;
9
- review?: string;
10
- status?: boolean;
11
- title?: string;
12
- personId?: number;
13
- points?: number;
14
- orderId?: string;
15
- createdAt?: Date;
16
- updatedAt?: Date;
17
- };