Quellcode durchsuchen

fix(core): DefaultSearchPlugin correctly indexes language variants

Fixes #493
Michael Bromley vor 5 Jahren
Ursprung
Commit
909479bad1

+ 123 - 123
packages/admin-ui/src/lib/core/src/common/generated-types.ts

@@ -939,13 +939,6 @@ export type MutationUpdateZoneArgs = {
   input: UpdateZoneInput;
 };
 
-export type AdministratorListOptions = {
-  skip?: Maybe<Scalars['Int']>;
-  take?: Maybe<Scalars['Int']>;
-  sort?: Maybe<AdministratorSortParameter>;
-  filter?: Maybe<AdministratorFilterParameter>;
-};
-
 export type CreateAdministratorInput = {
   firstName: Scalars['String'];
   lastName: Scalars['String'];
@@ -973,13 +966,6 @@ export type MimeTypeError = ErrorResult & {
 
 export type CreateAssetResult = Asset | MimeTypeError;
 
-export type AssetListOptions = {
-  skip?: Maybe<Scalars['Int']>;
-  take?: Maybe<Scalars['Int']>;
-  sort?: Maybe<AssetSortParameter>;
-  filter?: Maybe<AssetFilterParameter>;
-};
-
 export type CreateAssetInput = {
   file: Scalars['Upload'];
 };
@@ -995,10 +981,6 @@ export type UpdateAssetInput = {
   focalPoint?: Maybe<CoordinateInput>;
 };
 
-export type AuthenticationInput = {
-  native?: Maybe<NativeAuthInput>;
-};
-
 export type NativeAuthenticationResult = CurrentUser | InvalidCredentialsError | NativeAuthStrategyError;
 
 export type AuthenticationResult = CurrentUser | InvalidCredentialsError;
@@ -1063,13 +1045,6 @@ export type CollectionProductVariantsArgs = {
   options?: Maybe<ProductVariantListOptions>;
 };
 
-export type CollectionListOptions = {
-  skip?: Maybe<Scalars['Int']>;
-  take?: Maybe<Scalars['Int']>;
-  sort?: Maybe<CollectionSortParameter>;
-  filter?: Maybe<CollectionFilterParameter>;
-};
-
 export type MoveCollectionInput = {
   collectionId: Scalars['ID'];
   parentId: Scalars['ID'];
@@ -1133,26 +1108,12 @@ export type UpdateCountryInput = {
   enabled?: Maybe<Scalars['Boolean']>;
 };
 
-export type CountryListOptions = {
-  skip?: Maybe<Scalars['Int']>;
-  take?: Maybe<Scalars['Int']>;
-  sort?: Maybe<CountrySortParameter>;
-  filter?: Maybe<CountryFilterParameter>;
-};
-
 export type CustomerGroupList = PaginatedList & {
   __typename?: 'CustomerGroupList';
   items: Array<CustomerGroup>;
   totalItems: Scalars['Int'];
 };
 
-export type CustomerGroupListOptions = {
-  skip?: Maybe<Scalars['Int']>;
-  take?: Maybe<Scalars['Int']>;
-  sort?: Maybe<CustomerGroupSortParameter>;
-  filter?: Maybe<CustomerGroupFilterParameter>;
-};
-
 export type CreateCustomerGroupInput = {
   name: Scalars['String'];
   customerIds?: Maybe<Array<Scalars['ID']>>;
@@ -1201,13 +1162,6 @@ export type UpdateCustomerInput = {
   customFields?: Maybe<Scalars['JSON']>;
 };
 
-export type CustomerListOptions = {
-  skip?: Maybe<Scalars['Int']>;
-  take?: Maybe<Scalars['Int']>;
-  sort?: Maybe<CustomerSortParameter>;
-  filter?: Maybe<CustomerFilterParameter>;
-};
-
 export type AddNoteToCustomerInput = {
   id: Scalars['ID'];
   note: Scalars['String'];
@@ -1237,13 +1191,6 @@ export type Facet = Node & {
   customFields?: Maybe<Scalars['JSON']>;
 };
 
-export type FacetListOptions = {
-  skip?: Maybe<Scalars['Int']>;
-  take?: Maybe<Scalars['Int']>;
-  sort?: Maybe<FacetSortParameter>;
-  filter?: Maybe<FacetFilterParameter>;
-};
-
 export type FacetTranslationInput = {
   id?: Maybe<Scalars['ID']>;
   languageCode: LanguageCode;
@@ -1339,13 +1286,6 @@ export enum JobState {
   FAILED = 'FAILED'
 }
 
-export type JobListOptions = {
-  skip?: Maybe<Scalars['Int']>;
-  take?: Maybe<Scalars['Int']>;
-  sort?: Maybe<JobSortParameter>;
-  filter?: Maybe<JobFilterParameter>;
-};
-
 export type JobList = PaginatedList & {
   __typename?: 'JobList';
   items: Array<Job>;
@@ -1415,13 +1355,6 @@ export type OrderHistoryArgs = {
   options?: Maybe<HistoryEntryListOptions>;
 };
 
-export type OrderListOptions = {
-  skip?: Maybe<Scalars['Int']>;
-  take?: Maybe<Scalars['Int']>;
-  sort?: Maybe<OrderSortParameter>;
-  filter?: Maybe<OrderFilterParameter>;
-};
-
 export type UpdateOrderInput = {
   id: Scalars['ID'];
   customFields?: Maybe<Scalars['JSON']>;
@@ -1595,13 +1528,6 @@ export type PaymentMethodList = PaginatedList & {
   totalItems: Scalars['Int'];
 };
 
-export type PaymentMethodListOptions = {
-  skip?: Maybe<Scalars['Int']>;
-  take?: Maybe<Scalars['Int']>;
-  sort?: Maybe<PaymentMethodSortParameter>;
-  filter?: Maybe<PaymentMethodFilterParameter>;
-};
-
 export type UpdatePaymentMethodInput = {
   id: Scalars['ID'];
   code?: Maybe<Scalars['String']>;
@@ -1745,13 +1671,6 @@ export type StockMovementListOptions = {
   take?: Maybe<Scalars['Int']>;
 };
 
-export type ProductListOptions = {
-  skip?: Maybe<Scalars['Int']>;
-  take?: Maybe<Scalars['Int']>;
-  sort?: Maybe<ProductSortParameter>;
-  filter?: Maybe<ProductFilterParameter>;
-};
-
 export type ProductTranslationInput = {
   id?: Maybe<Scalars['ID']>;
   languageCode: LanguageCode;
@@ -1843,13 +1762,6 @@ export type ProductOptionInUseError = ErrorResult & {
 
 export type RemoveOptionGroupFromProductResult = Product | ProductOptionInUseError;
 
-export type PromotionListOptions = {
-  skip?: Maybe<Scalars['Int']>;
-  take?: Maybe<Scalars['Int']>;
-  sort?: Maybe<PromotionSortParameter>;
-  filter?: Maybe<PromotionFilterParameter>;
-};
-
 export type CreatePromotionInput = {
   name: Scalars['String'];
   enabled: Scalars['Boolean'];
@@ -1884,13 +1796,6 @@ export type CreatePromotionResult = Promotion | MissingConditionsError;
 
 export type UpdatePromotionResult = Promotion | MissingConditionsError;
 
-export type RoleListOptions = {
-  skip?: Maybe<Scalars['Int']>;
-  take?: Maybe<Scalars['Int']>;
-  sort?: Maybe<RoleSortParameter>;
-  filter?: Maybe<RoleFilterParameter>;
-};
-
 export type CreateRoleInput = {
   code: Scalars['String'];
   description: Scalars['String'];
@@ -1906,13 +1811,6 @@ export type UpdateRoleInput = {
   channelIds?: Maybe<Array<Scalars['ID']>>;
 };
 
-export type ShippingMethodListOptions = {
-  skip?: Maybe<Scalars['Int']>;
-  take?: Maybe<Scalars['Int']>;
-  sort?: Maybe<ShippingMethodSortParameter>;
-  filter?: Maybe<ShippingMethodFilterParameter>;
-};
-
 export type CreateShippingMethodInput = {
   code: Scalars['String'];
   description: Scalars['String'];
@@ -1970,13 +1868,6 @@ export type UpdateTaxCategoryInput = {
   name?: Maybe<Scalars['String']>;
 };
 
-export type TaxRateListOptions = {
-  skip?: Maybe<Scalars['Int']>;
-  take?: Maybe<Scalars['Int']>;
-  sort?: Maybe<TaxRateSortParameter>;
-  filter?: Maybe<TaxRateFilterParameter>;
-};
-
 export type CreateTaxRateInput = {
   name: Scalars['String'];
   enabled: Scalars['Boolean'];
@@ -3187,13 +3078,6 @@ export type ProductVariantList = PaginatedList & {
   totalItems: Scalars['Int'];
 };
 
-export type ProductVariantListOptions = {
-  skip?: Maybe<Scalars['Int']>;
-  take?: Maybe<Scalars['Int']>;
-  sort?: Maybe<ProductVariantSortParameter>;
-  filter?: Maybe<ProductVariantFilterParameter>;
-};
-
 export type Country = Node & {
   __typename?: 'Country';
   id: Scalars['ID'];
@@ -3345,13 +3229,6 @@ export type HistoryEntryList = PaginatedList & {
   totalItems: Scalars['Int'];
 };
 
-export type HistoryEntryListOptions = {
-  skip?: Maybe<Scalars['Int']>;
-  take?: Maybe<Scalars['Int']>;
-  sort?: Maybe<HistoryEntrySortParameter>;
-  filter?: Maybe<HistoryEntryFilterParameter>;
-};
-
 export type ImportInfo = {
   __typename?: 'ImportInfo';
   errors?: Maybe<Array<Scalars['String']>>;
@@ -3759,6 +3636,125 @@ export type Zone = Node & {
   members: Array<Country>;
 };
 
+export type AdministratorListOptions = {
+  skip?: Maybe<Scalars['Int']>;
+  take?: Maybe<Scalars['Int']>;
+  sort?: Maybe<AdministratorSortParameter>;
+  filter?: Maybe<AdministratorFilterParameter>;
+};
+
+export type AssetListOptions = {
+  skip?: Maybe<Scalars['Int']>;
+  take?: Maybe<Scalars['Int']>;
+  sort?: Maybe<AssetSortParameter>;
+  filter?: Maybe<AssetFilterParameter>;
+};
+
+export type CollectionListOptions = {
+  skip?: Maybe<Scalars['Int']>;
+  take?: Maybe<Scalars['Int']>;
+  sort?: Maybe<CollectionSortParameter>;
+  filter?: Maybe<CollectionFilterParameter>;
+};
+
+export type CountryListOptions = {
+  skip?: Maybe<Scalars['Int']>;
+  take?: Maybe<Scalars['Int']>;
+  sort?: Maybe<CountrySortParameter>;
+  filter?: Maybe<CountryFilterParameter>;
+};
+
+export type CustomerGroupListOptions = {
+  skip?: Maybe<Scalars['Int']>;
+  take?: Maybe<Scalars['Int']>;
+  sort?: Maybe<CustomerGroupSortParameter>;
+  filter?: Maybe<CustomerGroupFilterParameter>;
+};
+
+export type CustomerListOptions = {
+  skip?: Maybe<Scalars['Int']>;
+  take?: Maybe<Scalars['Int']>;
+  sort?: Maybe<CustomerSortParameter>;
+  filter?: Maybe<CustomerFilterParameter>;
+};
+
+export type FacetListOptions = {
+  skip?: Maybe<Scalars['Int']>;
+  take?: Maybe<Scalars['Int']>;
+  sort?: Maybe<FacetSortParameter>;
+  filter?: Maybe<FacetFilterParameter>;
+};
+
+export type JobListOptions = {
+  skip?: Maybe<Scalars['Int']>;
+  take?: Maybe<Scalars['Int']>;
+  sort?: Maybe<JobSortParameter>;
+  filter?: Maybe<JobFilterParameter>;
+};
+
+export type OrderListOptions = {
+  skip?: Maybe<Scalars['Int']>;
+  take?: Maybe<Scalars['Int']>;
+  sort?: Maybe<OrderSortParameter>;
+  filter?: Maybe<OrderFilterParameter>;
+};
+
+export type PaymentMethodListOptions = {
+  skip?: Maybe<Scalars['Int']>;
+  take?: Maybe<Scalars['Int']>;
+  sort?: Maybe<PaymentMethodSortParameter>;
+  filter?: Maybe<PaymentMethodFilterParameter>;
+};
+
+export type ProductListOptions = {
+  skip?: Maybe<Scalars['Int']>;
+  take?: Maybe<Scalars['Int']>;
+  sort?: Maybe<ProductSortParameter>;
+  filter?: Maybe<ProductFilterParameter>;
+};
+
+export type PromotionListOptions = {
+  skip?: Maybe<Scalars['Int']>;
+  take?: Maybe<Scalars['Int']>;
+  sort?: Maybe<PromotionSortParameter>;
+  filter?: Maybe<PromotionFilterParameter>;
+};
+
+export type RoleListOptions = {
+  skip?: Maybe<Scalars['Int']>;
+  take?: Maybe<Scalars['Int']>;
+  sort?: Maybe<RoleSortParameter>;
+  filter?: Maybe<RoleFilterParameter>;
+};
+
+export type ShippingMethodListOptions = {
+  skip?: Maybe<Scalars['Int']>;
+  take?: Maybe<Scalars['Int']>;
+  sort?: Maybe<ShippingMethodSortParameter>;
+  filter?: Maybe<ShippingMethodFilterParameter>;
+};
+
+export type TaxRateListOptions = {
+  skip?: Maybe<Scalars['Int']>;
+  take?: Maybe<Scalars['Int']>;
+  sort?: Maybe<TaxRateSortParameter>;
+  filter?: Maybe<TaxRateFilterParameter>;
+};
+
+export type ProductVariantListOptions = {
+  skip?: Maybe<Scalars['Int']>;
+  take?: Maybe<Scalars['Int']>;
+  sort?: Maybe<ProductVariantSortParameter>;
+  filter?: Maybe<ProductVariantFilterParameter>;
+};
+
+export type HistoryEntryListOptions = {
+  skip?: Maybe<Scalars['Int']>;
+  take?: Maybe<Scalars['Int']>;
+  sort?: Maybe<HistoryEntrySortParameter>;
+  filter?: Maybe<HistoryEntryFilterParameter>;
+};
+
 export type AdministratorFilterParameter = {
   createdAt?: Maybe<DateOperators>;
   updatedAt?: Maybe<DateOperators>;
@@ -4102,6 +4098,10 @@ export type CustomFields = {
   ShippingMethod: Array<CustomFieldConfig>;
 };
 
+export type AuthenticationInput = {
+  native?: Maybe<NativeAuthInput>;
+};
+
 export type NativeAuthInput = {
   username: Scalars['String'];
   password: Scalars['String'];

+ 123 - 123
packages/asset-server-plugin/e2e/graphql/generated-e2e-asset-server-plugin-types.ts

@@ -777,13 +777,6 @@ export type MutationRemoveMembersFromZoneArgs = {
     memberIds: Array<Scalars['ID']>;
 };
 
-export type AdministratorListOptions = {
-    skip?: Maybe<Scalars['Int']>;
-    take?: Maybe<Scalars['Int']>;
-    sort?: Maybe<AdministratorSortParameter>;
-    filter?: Maybe<AdministratorFilterParameter>;
-};
-
 export type CreateAdministratorInput = {
     firstName: Scalars['String'];
     lastName: Scalars['String'];
@@ -810,13 +803,6 @@ export type MimeTypeError = ErrorResult & {
 
 export type CreateAssetResult = Asset | MimeTypeError;
 
-export type AssetListOptions = {
-    skip?: Maybe<Scalars['Int']>;
-    take?: Maybe<Scalars['Int']>;
-    sort?: Maybe<AssetSortParameter>;
-    filter?: Maybe<AssetFilterParameter>;
-};
-
 export type CreateAssetInput = {
     file: Scalars['Upload'];
 };
@@ -832,10 +818,6 @@ export type UpdateAssetInput = {
     focalPoint?: Maybe<CoordinateInput>;
 };
 
-export type AuthenticationInput = {
-    native?: Maybe<NativeAuthInput>;
-};
-
 export type NativeAuthenticationResult = CurrentUser | InvalidCredentialsError | NativeAuthStrategyError;
 
 export type AuthenticationResult = CurrentUser | InvalidCredentialsError;
@@ -897,13 +879,6 @@ export type CollectionProductVariantsArgs = {
     options?: Maybe<ProductVariantListOptions>;
 };
 
-export type CollectionListOptions = {
-    skip?: Maybe<Scalars['Int']>;
-    take?: Maybe<Scalars['Int']>;
-    sort?: Maybe<CollectionSortParameter>;
-    filter?: Maybe<CollectionFilterParameter>;
-};
-
 export type MoveCollectionInput = {
     collectionId: Scalars['ID'];
     parentId: Scalars['ID'];
@@ -967,25 +942,11 @@ export type UpdateCountryInput = {
     enabled?: Maybe<Scalars['Boolean']>;
 };
 
-export type CountryListOptions = {
-    skip?: Maybe<Scalars['Int']>;
-    take?: Maybe<Scalars['Int']>;
-    sort?: Maybe<CountrySortParameter>;
-    filter?: Maybe<CountryFilterParameter>;
-};
-
 export type CustomerGroupList = PaginatedList & {
     items: Array<CustomerGroup>;
     totalItems: Scalars['Int'];
 };
 
-export type CustomerGroupListOptions = {
-    skip?: Maybe<Scalars['Int']>;
-    take?: Maybe<Scalars['Int']>;
-    sort?: Maybe<CustomerGroupSortParameter>;
-    filter?: Maybe<CustomerGroupFilterParameter>;
-};
-
 export type CreateCustomerGroupInput = {
     name: Scalars['String'];
     customerIds?: Maybe<Array<Scalars['ID']>>;
@@ -1031,13 +992,6 @@ export type UpdateCustomerInput = {
     customFields?: Maybe<Scalars['JSON']>;
 };
 
-export type CustomerListOptions = {
-    skip?: Maybe<Scalars['Int']>;
-    take?: Maybe<Scalars['Int']>;
-    sort?: Maybe<CustomerSortParameter>;
-    filter?: Maybe<CustomerFilterParameter>;
-};
-
 export type AddNoteToCustomerInput = {
     id: Scalars['ID'];
     note: Scalars['String'];
@@ -1066,13 +1020,6 @@ export type Facet = Node & {
     customFields?: Maybe<Scalars['JSON']>;
 };
 
-export type FacetListOptions = {
-    skip?: Maybe<Scalars['Int']>;
-    take?: Maybe<Scalars['Int']>;
-    sort?: Maybe<FacetSortParameter>;
-    filter?: Maybe<FacetFilterParameter>;
-};
-
 export type FacetTranslationInput = {
     id?: Maybe<Scalars['ID']>;
     languageCode: LanguageCode;
@@ -1166,13 +1113,6 @@ export enum JobState {
     FAILED = 'FAILED',
 }
 
-export type JobListOptions = {
-    skip?: Maybe<Scalars['Int']>;
-    take?: Maybe<Scalars['Int']>;
-    sort?: Maybe<JobSortParameter>;
-    filter?: Maybe<JobFilterParameter>;
-};
-
 export type JobList = PaginatedList & {
     items: Array<Job>;
     totalItems: Scalars['Int'];
@@ -1237,13 +1177,6 @@ export type OrderHistoryArgs = {
     options?: Maybe<HistoryEntryListOptions>;
 };
 
-export type OrderListOptions = {
-    skip?: Maybe<Scalars['Int']>;
-    take?: Maybe<Scalars['Int']>;
-    sort?: Maybe<OrderSortParameter>;
-    filter?: Maybe<OrderFilterParameter>;
-};
-
 export type UpdateOrderInput = {
     id: Scalars['ID'];
     customFields?: Maybe<Scalars['JSON']>;
@@ -1425,13 +1358,6 @@ export type PaymentMethodList = PaginatedList & {
     totalItems: Scalars['Int'];
 };
 
-export type PaymentMethodListOptions = {
-    skip?: Maybe<Scalars['Int']>;
-    take?: Maybe<Scalars['Int']>;
-    sort?: Maybe<PaymentMethodSortParameter>;
-    filter?: Maybe<PaymentMethodFilterParameter>;
-};
-
 export type UpdatePaymentMethodInput = {
     id: Scalars['ID'];
     code?: Maybe<Scalars['String']>;
@@ -1571,13 +1497,6 @@ export type StockMovementListOptions = {
     take?: Maybe<Scalars['Int']>;
 };
 
-export type ProductListOptions = {
-    skip?: Maybe<Scalars['Int']>;
-    take?: Maybe<Scalars['Int']>;
-    sort?: Maybe<ProductSortParameter>;
-    filter?: Maybe<ProductFilterParameter>;
-};
-
 export type ProductTranslationInput = {
     id?: Maybe<Scalars['ID']>;
     languageCode: LanguageCode;
@@ -1668,13 +1587,6 @@ export type ProductOptionInUseError = ErrorResult & {
 
 export type RemoveOptionGroupFromProductResult = Product | ProductOptionInUseError;
 
-export type PromotionListOptions = {
-    skip?: Maybe<Scalars['Int']>;
-    take?: Maybe<Scalars['Int']>;
-    sort?: Maybe<PromotionSortParameter>;
-    filter?: Maybe<PromotionFilterParameter>;
-};
-
 export type CreatePromotionInput = {
     name: Scalars['String'];
     enabled: Scalars['Boolean'];
@@ -1708,13 +1620,6 @@ export type CreatePromotionResult = Promotion | MissingConditionsError;
 
 export type UpdatePromotionResult = Promotion | MissingConditionsError;
 
-export type RoleListOptions = {
-    skip?: Maybe<Scalars['Int']>;
-    take?: Maybe<Scalars['Int']>;
-    sort?: Maybe<RoleSortParameter>;
-    filter?: Maybe<RoleFilterParameter>;
-};
-
 export type CreateRoleInput = {
     code: Scalars['String'];
     description: Scalars['String'];
@@ -1730,13 +1635,6 @@ export type UpdateRoleInput = {
     channelIds?: Maybe<Array<Scalars['ID']>>;
 };
 
-export type ShippingMethodListOptions = {
-    skip?: Maybe<Scalars['Int']>;
-    take?: Maybe<Scalars['Int']>;
-    sort?: Maybe<ShippingMethodSortParameter>;
-    filter?: Maybe<ShippingMethodFilterParameter>;
-};
-
 export type CreateShippingMethodInput = {
     code: Scalars['String'];
     description: Scalars['String'];
@@ -1792,13 +1690,6 @@ export type UpdateTaxCategoryInput = {
     name?: Maybe<Scalars['String']>;
 };
 
-export type TaxRateListOptions = {
-    skip?: Maybe<Scalars['Int']>;
-    take?: Maybe<Scalars['Int']>;
-    sort?: Maybe<TaxRateSortParameter>;
-    filter?: Maybe<TaxRateFilterParameter>;
-};
-
 export type CreateTaxRateInput = {
     name: Scalars['String'];
     enabled: Scalars['Boolean'];
@@ -2980,13 +2871,6 @@ export type ProductVariantList = PaginatedList & {
     totalItems: Scalars['Int'];
 };
 
-export type ProductVariantListOptions = {
-    skip?: Maybe<Scalars['Int']>;
-    take?: Maybe<Scalars['Int']>;
-    sort?: Maybe<ProductVariantSortParameter>;
-    filter?: Maybe<ProductVariantFilterParameter>;
-};
-
 export type Country = Node & {
     id: Scalars['ID'];
     createdAt: Scalars['DateTime'];
@@ -3123,13 +3007,6 @@ export type HistoryEntryList = PaginatedList & {
     totalItems: Scalars['Int'];
 };
 
-export type HistoryEntryListOptions = {
-    skip?: Maybe<Scalars['Int']>;
-    take?: Maybe<Scalars['Int']>;
-    sort?: Maybe<HistoryEntrySortParameter>;
-    filter?: Maybe<HistoryEntryFilterParameter>;
-};
-
 export type ImportInfo = {
     errors?: Maybe<Array<Scalars['String']>>;
     processed: Scalars['Int'];
@@ -3502,6 +3379,125 @@ export type Zone = Node & {
     members: Array<Country>;
 };
 
+export type AdministratorListOptions = {
+    skip?: Maybe<Scalars['Int']>;
+    take?: Maybe<Scalars['Int']>;
+    sort?: Maybe<AdministratorSortParameter>;
+    filter?: Maybe<AdministratorFilterParameter>;
+};
+
+export type AssetListOptions = {
+    skip?: Maybe<Scalars['Int']>;
+    take?: Maybe<Scalars['Int']>;
+    sort?: Maybe<AssetSortParameter>;
+    filter?: Maybe<AssetFilterParameter>;
+};
+
+export type CollectionListOptions = {
+    skip?: Maybe<Scalars['Int']>;
+    take?: Maybe<Scalars['Int']>;
+    sort?: Maybe<CollectionSortParameter>;
+    filter?: Maybe<CollectionFilterParameter>;
+};
+
+export type CountryListOptions = {
+    skip?: Maybe<Scalars['Int']>;
+    take?: Maybe<Scalars['Int']>;
+    sort?: Maybe<CountrySortParameter>;
+    filter?: Maybe<CountryFilterParameter>;
+};
+
+export type CustomerGroupListOptions = {
+    skip?: Maybe<Scalars['Int']>;
+    take?: Maybe<Scalars['Int']>;
+    sort?: Maybe<CustomerGroupSortParameter>;
+    filter?: Maybe<CustomerGroupFilterParameter>;
+};
+
+export type CustomerListOptions = {
+    skip?: Maybe<Scalars['Int']>;
+    take?: Maybe<Scalars['Int']>;
+    sort?: Maybe<CustomerSortParameter>;
+    filter?: Maybe<CustomerFilterParameter>;
+};
+
+export type FacetListOptions = {
+    skip?: Maybe<Scalars['Int']>;
+    take?: Maybe<Scalars['Int']>;
+    sort?: Maybe<FacetSortParameter>;
+    filter?: Maybe<FacetFilterParameter>;
+};
+
+export type JobListOptions = {
+    skip?: Maybe<Scalars['Int']>;
+    take?: Maybe<Scalars['Int']>;
+    sort?: Maybe<JobSortParameter>;
+    filter?: Maybe<JobFilterParameter>;
+};
+
+export type OrderListOptions = {
+    skip?: Maybe<Scalars['Int']>;
+    take?: Maybe<Scalars['Int']>;
+    sort?: Maybe<OrderSortParameter>;
+    filter?: Maybe<OrderFilterParameter>;
+};
+
+export type PaymentMethodListOptions = {
+    skip?: Maybe<Scalars['Int']>;
+    take?: Maybe<Scalars['Int']>;
+    sort?: Maybe<PaymentMethodSortParameter>;
+    filter?: Maybe<PaymentMethodFilterParameter>;
+};
+
+export type ProductListOptions = {
+    skip?: Maybe<Scalars['Int']>;
+    take?: Maybe<Scalars['Int']>;
+    sort?: Maybe<ProductSortParameter>;
+    filter?: Maybe<ProductFilterParameter>;
+};
+
+export type PromotionListOptions = {
+    skip?: Maybe<Scalars['Int']>;
+    take?: Maybe<Scalars['Int']>;
+    sort?: Maybe<PromotionSortParameter>;
+    filter?: Maybe<PromotionFilterParameter>;
+};
+
+export type RoleListOptions = {
+    skip?: Maybe<Scalars['Int']>;
+    take?: Maybe<Scalars['Int']>;
+    sort?: Maybe<RoleSortParameter>;
+    filter?: Maybe<RoleFilterParameter>;
+};
+
+export type ShippingMethodListOptions = {
+    skip?: Maybe<Scalars['Int']>;
+    take?: Maybe<Scalars['Int']>;
+    sort?: Maybe<ShippingMethodSortParameter>;
+    filter?: Maybe<ShippingMethodFilterParameter>;
+};
+
+export type TaxRateListOptions = {
+    skip?: Maybe<Scalars['Int']>;
+    take?: Maybe<Scalars['Int']>;
+    sort?: Maybe<TaxRateSortParameter>;
+    filter?: Maybe<TaxRateFilterParameter>;
+};
+
+export type ProductVariantListOptions = {
+    skip?: Maybe<Scalars['Int']>;
+    take?: Maybe<Scalars['Int']>;
+    sort?: Maybe<ProductVariantSortParameter>;
+    filter?: Maybe<ProductVariantFilterParameter>;
+};
+
+export type HistoryEntryListOptions = {
+    skip?: Maybe<Scalars['Int']>;
+    take?: Maybe<Scalars['Int']>;
+    sort?: Maybe<HistoryEntrySortParameter>;
+    filter?: Maybe<HistoryEntryFilterParameter>;
+};
+
 export type AdministratorFilterParameter = {
     createdAt?: Maybe<DateOperators>;
     updatedAt?: Maybe<DateOperators>;
@@ -3844,6 +3840,10 @@ export type CustomFields = {
     ShippingMethod: Array<CustomFieldConfig>;
 };
 
+export type AuthenticationInput = {
+    native?: Maybe<NativeAuthInput>;
+};
+
 export type NativeAuthInput = {
     username: Scalars['String'];
     password: Scalars['String'];

+ 50 - 50
packages/common/src/generated-shop-types.ts

@@ -1346,10 +1346,6 @@ export enum Permission {
     DeleteSettings = 'DeleteSettings',
 }
 
-export type AuthenticationInput = {
-    native?: Maybe<NativeAuthInput>;
-};
-
 export type RegisterCustomerInput = {
     emailAddress: Scalars['String'];
     title?: Maybe<Scalars['String']>;
@@ -1367,10 +1363,6 @@ export type UpdateCustomerInput = {
     customFields?: Maybe<Scalars['JSON']>;
 };
 
-export type UpdateOrderInput = {
-    customFields?: Maybe<Scalars['JSON']>;
-};
-
 /** Passed as input to the `addPaymentToOrder` mutation. */
 export type PaymentInput = {
     /** This field should correspond to the `code` property of a PaymentMethodHandler. */
@@ -1383,27 +1375,6 @@ export type PaymentInput = {
     metadata: Scalars['JSON'];
 };
 
-export type CollectionListOptions = {
-    skip?: Maybe<Scalars['Int']>;
-    take?: Maybe<Scalars['Int']>;
-    sort?: Maybe<CollectionSortParameter>;
-    filter?: Maybe<CollectionFilterParameter>;
-};
-
-export type OrderListOptions = {
-    skip?: Maybe<Scalars['Int']>;
-    take?: Maybe<Scalars['Int']>;
-    sort?: Maybe<OrderSortParameter>;
-    filter?: Maybe<OrderFilterParameter>;
-};
-
-export type ProductListOptions = {
-    skip?: Maybe<Scalars['Int']>;
-    take?: Maybe<Scalars['Int']>;
-    sort?: Maybe<ProductSortParameter>;
-    filter?: Maybe<ProductFilterParameter>;
-};
-
 /** Returned when attempting to modify the contents of an Order that is not in the `AddingItems` state. */
 export type OrderModificationError = ErrorResult & {
     __typename?: 'OrderModificationError';
@@ -1770,13 +1741,6 @@ export type ProductVariantList = PaginatedList & {
     totalItems: Scalars['Int'];
 };
 
-export type ProductVariantListOptions = {
-    skip?: Maybe<Scalars['Int']>;
-    take?: Maybe<Scalars['Int']>;
-    sort?: Maybe<ProductVariantSortParameter>;
-    filter?: Maybe<ProductVariantFilterParameter>;
-};
-
 export type Country = Node & {
     __typename?: 'Country';
     id: Scalars['ID'];
@@ -1817,13 +1781,6 @@ export type CustomerGroupCustomersArgs = {
     options?: Maybe<CustomerListOptions>;
 };
 
-export type CustomerListOptions = {
-    skip?: Maybe<Scalars['Int']>;
-    take?: Maybe<Scalars['Int']>;
-    sort?: Maybe<CustomerSortParameter>;
-    filter?: Maybe<CustomerFilterParameter>;
-};
-
 export type Customer = Node & {
     __typename?: 'Customer';
     id: Scalars['ID'];
@@ -1967,13 +1924,6 @@ export type HistoryEntryList = PaginatedList & {
     totalItems: Scalars['Int'];
 };
 
-export type HistoryEntryListOptions = {
-    skip?: Maybe<Scalars['Int']>;
-    take?: Maybe<Scalars['Int']>;
-    sort?: Maybe<HistoryEntrySortParameter>;
-    filter?: Maybe<HistoryEntryFilterParameter>;
-};
-
 export type ImportInfo = {
     __typename?: 'ImportInfo';
     errors?: Maybe<Array<Scalars['String']>>;
@@ -2504,6 +2454,48 @@ export type Zone = Node & {
     members: Array<Country>;
 };
 
+export type CollectionListOptions = {
+    skip?: Maybe<Scalars['Int']>;
+    take?: Maybe<Scalars['Int']>;
+    sort?: Maybe<CollectionSortParameter>;
+    filter?: Maybe<CollectionFilterParameter>;
+};
+
+export type ProductListOptions = {
+    skip?: Maybe<Scalars['Int']>;
+    take?: Maybe<Scalars['Int']>;
+    sort?: Maybe<ProductSortParameter>;
+    filter?: Maybe<ProductFilterParameter>;
+};
+
+export type ProductVariantListOptions = {
+    skip?: Maybe<Scalars['Int']>;
+    take?: Maybe<Scalars['Int']>;
+    sort?: Maybe<ProductVariantSortParameter>;
+    filter?: Maybe<ProductVariantFilterParameter>;
+};
+
+export type CustomerListOptions = {
+    skip?: Maybe<Scalars['Int']>;
+    take?: Maybe<Scalars['Int']>;
+    sort?: Maybe<CustomerSortParameter>;
+    filter?: Maybe<CustomerFilterParameter>;
+};
+
+export type OrderListOptions = {
+    skip?: Maybe<Scalars['Int']>;
+    take?: Maybe<Scalars['Int']>;
+    sort?: Maybe<OrderSortParameter>;
+    filter?: Maybe<OrderFilterParameter>;
+};
+
+export type HistoryEntryListOptions = {
+    skip?: Maybe<Scalars['Int']>;
+    take?: Maybe<Scalars['Int']>;
+    sort?: Maybe<HistoryEntrySortParameter>;
+    filter?: Maybe<HistoryEntryFilterParameter>;
+};
+
 export type CollectionFilterParameter = {
     createdAt?: Maybe<DateOperators>;
     updatedAt?: Maybe<DateOperators>;
@@ -2630,6 +2622,10 @@ export type HistoryEntrySortParameter = {
     updatedAt?: Maybe<SortOrder>;
 };
 
+export type UpdateOrderInput = {
+    customFields?: Maybe<Scalars['JSON']>;
+};
+
 export type CustomFields = {
     __typename?: 'CustomFields';
     Address: Array<CustomFieldConfig>;
@@ -2648,6 +2644,10 @@ export type CustomFields = {
     ShippingMethod: Array<CustomFieldConfig>;
 };
 
+export type AuthenticationInput = {
+    native?: Maybe<NativeAuthInput>;
+};
+
 export type NativeAuthInput = {
     username: Scalars['String'];
     password: Scalars['String'];

+ 123 - 123
packages/common/src/generated-types.ts

@@ -908,13 +908,6 @@ export type MutationRemoveMembersFromZoneArgs = {
   memberIds: Array<Scalars['ID']>;
 };
 
-export type AdministratorListOptions = {
-  skip?: Maybe<Scalars['Int']>;
-  take?: Maybe<Scalars['Int']>;
-  sort?: Maybe<AdministratorSortParameter>;
-  filter?: Maybe<AdministratorFilterParameter>;
-};
-
 export type CreateAdministratorInput = {
   firstName: Scalars['String'];
   lastName: Scalars['String'];
@@ -942,13 +935,6 @@ export type MimeTypeError = ErrorResult & {
 
 export type CreateAssetResult = Asset | MimeTypeError;
 
-export type AssetListOptions = {
-  skip?: Maybe<Scalars['Int']>;
-  take?: Maybe<Scalars['Int']>;
-  sort?: Maybe<AssetSortParameter>;
-  filter?: Maybe<AssetFilterParameter>;
-};
-
 export type CreateAssetInput = {
   file: Scalars['Upload'];
 };
@@ -964,10 +950,6 @@ export type UpdateAssetInput = {
   focalPoint?: Maybe<CoordinateInput>;
 };
 
-export type AuthenticationInput = {
-  native?: Maybe<NativeAuthInput>;
-};
-
 export type NativeAuthenticationResult = CurrentUser | InvalidCredentialsError | NativeAuthStrategyError;
 
 export type AuthenticationResult = CurrentUser | InvalidCredentialsError;
@@ -1032,13 +1014,6 @@ export type CollectionProductVariantsArgs = {
   options?: Maybe<ProductVariantListOptions>;
 };
 
-export type CollectionListOptions = {
-  skip?: Maybe<Scalars['Int']>;
-  take?: Maybe<Scalars['Int']>;
-  sort?: Maybe<CollectionSortParameter>;
-  filter?: Maybe<CollectionFilterParameter>;
-};
-
 export type MoveCollectionInput = {
   collectionId: Scalars['ID'];
   parentId: Scalars['ID'];
@@ -1102,26 +1077,12 @@ export type UpdateCountryInput = {
   enabled?: Maybe<Scalars['Boolean']>;
 };
 
-export type CountryListOptions = {
-  skip?: Maybe<Scalars['Int']>;
-  take?: Maybe<Scalars['Int']>;
-  sort?: Maybe<CountrySortParameter>;
-  filter?: Maybe<CountryFilterParameter>;
-};
-
 export type CustomerGroupList = PaginatedList & {
   __typename?: 'CustomerGroupList';
   items: Array<CustomerGroup>;
   totalItems: Scalars['Int'];
 };
 
-export type CustomerGroupListOptions = {
-  skip?: Maybe<Scalars['Int']>;
-  take?: Maybe<Scalars['Int']>;
-  sort?: Maybe<CustomerGroupSortParameter>;
-  filter?: Maybe<CustomerGroupFilterParameter>;
-};
-
 export type CreateCustomerGroupInput = {
   name: Scalars['String'];
   customerIds?: Maybe<Array<Scalars['ID']>>;
@@ -1170,13 +1131,6 @@ export type UpdateCustomerInput = {
   customFields?: Maybe<Scalars['JSON']>;
 };
 
-export type CustomerListOptions = {
-  skip?: Maybe<Scalars['Int']>;
-  take?: Maybe<Scalars['Int']>;
-  sort?: Maybe<CustomerSortParameter>;
-  filter?: Maybe<CustomerFilterParameter>;
-};
-
 export type AddNoteToCustomerInput = {
   id: Scalars['ID'];
   note: Scalars['String'];
@@ -1206,13 +1160,6 @@ export type Facet = Node & {
   customFields?: Maybe<Scalars['JSON']>;
 };
 
-export type FacetListOptions = {
-  skip?: Maybe<Scalars['Int']>;
-  take?: Maybe<Scalars['Int']>;
-  sort?: Maybe<FacetSortParameter>;
-  filter?: Maybe<FacetFilterParameter>;
-};
-
 export type FacetTranslationInput = {
   id?: Maybe<Scalars['ID']>;
   languageCode: LanguageCode;
@@ -1308,13 +1255,6 @@ export enum JobState {
   FAILED = 'FAILED'
 }
 
-export type JobListOptions = {
-  skip?: Maybe<Scalars['Int']>;
-  take?: Maybe<Scalars['Int']>;
-  sort?: Maybe<JobSortParameter>;
-  filter?: Maybe<JobFilterParameter>;
-};
-
 export type JobList = PaginatedList & {
   __typename?: 'JobList';
   items: Array<Job>;
@@ -1384,13 +1324,6 @@ export type OrderHistoryArgs = {
   options?: Maybe<HistoryEntryListOptions>;
 };
 
-export type OrderListOptions = {
-  skip?: Maybe<Scalars['Int']>;
-  take?: Maybe<Scalars['Int']>;
-  sort?: Maybe<OrderSortParameter>;
-  filter?: Maybe<OrderFilterParameter>;
-};
-
 export type UpdateOrderInput = {
   id: Scalars['ID'];
   customFields?: Maybe<Scalars['JSON']>;
@@ -1564,13 +1497,6 @@ export type PaymentMethodList = PaginatedList & {
   totalItems: Scalars['Int'];
 };
 
-export type PaymentMethodListOptions = {
-  skip?: Maybe<Scalars['Int']>;
-  take?: Maybe<Scalars['Int']>;
-  sort?: Maybe<PaymentMethodSortParameter>;
-  filter?: Maybe<PaymentMethodFilterParameter>;
-};
-
 export type UpdatePaymentMethodInput = {
   id: Scalars['ID'];
   code?: Maybe<Scalars['String']>;
@@ -1714,13 +1640,6 @@ export type StockMovementListOptions = {
   take?: Maybe<Scalars['Int']>;
 };
 
-export type ProductListOptions = {
-  skip?: Maybe<Scalars['Int']>;
-  take?: Maybe<Scalars['Int']>;
-  sort?: Maybe<ProductSortParameter>;
-  filter?: Maybe<ProductFilterParameter>;
-};
-
 export type ProductTranslationInput = {
   id?: Maybe<Scalars['ID']>;
   languageCode: LanguageCode;
@@ -1812,13 +1731,6 @@ export type ProductOptionInUseError = ErrorResult & {
 
 export type RemoveOptionGroupFromProductResult = Product | ProductOptionInUseError;
 
-export type PromotionListOptions = {
-  skip?: Maybe<Scalars['Int']>;
-  take?: Maybe<Scalars['Int']>;
-  sort?: Maybe<PromotionSortParameter>;
-  filter?: Maybe<PromotionFilterParameter>;
-};
-
 export type CreatePromotionInput = {
   name: Scalars['String'];
   enabled: Scalars['Boolean'];
@@ -1853,13 +1765,6 @@ export type CreatePromotionResult = Promotion | MissingConditionsError;
 
 export type UpdatePromotionResult = Promotion | MissingConditionsError;
 
-export type RoleListOptions = {
-  skip?: Maybe<Scalars['Int']>;
-  take?: Maybe<Scalars['Int']>;
-  sort?: Maybe<RoleSortParameter>;
-  filter?: Maybe<RoleFilterParameter>;
-};
-
 export type CreateRoleInput = {
   code: Scalars['String'];
   description: Scalars['String'];
@@ -1875,13 +1780,6 @@ export type UpdateRoleInput = {
   channelIds?: Maybe<Array<Scalars['ID']>>;
 };
 
-export type ShippingMethodListOptions = {
-  skip?: Maybe<Scalars['Int']>;
-  take?: Maybe<Scalars['Int']>;
-  sort?: Maybe<ShippingMethodSortParameter>;
-  filter?: Maybe<ShippingMethodFilterParameter>;
-};
-
 export type CreateShippingMethodInput = {
   code: Scalars['String'];
   description: Scalars['String'];
@@ -1939,13 +1837,6 @@ export type UpdateTaxCategoryInput = {
   name?: Maybe<Scalars['String']>;
 };
 
-export type TaxRateListOptions = {
-  skip?: Maybe<Scalars['Int']>;
-  take?: Maybe<Scalars['Int']>;
-  sort?: Maybe<TaxRateSortParameter>;
-  filter?: Maybe<TaxRateFilterParameter>;
-};
-
 export type CreateTaxRateInput = {
   name: Scalars['String'];
   enabled: Scalars['Boolean'];
@@ -3156,13 +3047,6 @@ export type ProductVariantList = PaginatedList & {
   totalItems: Scalars['Int'];
 };
 
-export type ProductVariantListOptions = {
-  skip?: Maybe<Scalars['Int']>;
-  take?: Maybe<Scalars['Int']>;
-  sort?: Maybe<ProductVariantSortParameter>;
-  filter?: Maybe<ProductVariantFilterParameter>;
-};
-
 export type Country = Node & {
   __typename?: 'Country';
   id: Scalars['ID'];
@@ -3314,13 +3198,6 @@ export type HistoryEntryList = PaginatedList & {
   totalItems: Scalars['Int'];
 };
 
-export type HistoryEntryListOptions = {
-  skip?: Maybe<Scalars['Int']>;
-  take?: Maybe<Scalars['Int']>;
-  sort?: Maybe<HistoryEntrySortParameter>;
-  filter?: Maybe<HistoryEntryFilterParameter>;
-};
-
 export type ImportInfo = {
   __typename?: 'ImportInfo';
   errors?: Maybe<Array<Scalars['String']>>;
@@ -3728,6 +3605,125 @@ export type Zone = Node & {
   members: Array<Country>;
 };
 
+export type AdministratorListOptions = {
+  skip?: Maybe<Scalars['Int']>;
+  take?: Maybe<Scalars['Int']>;
+  sort?: Maybe<AdministratorSortParameter>;
+  filter?: Maybe<AdministratorFilterParameter>;
+};
+
+export type AssetListOptions = {
+  skip?: Maybe<Scalars['Int']>;
+  take?: Maybe<Scalars['Int']>;
+  sort?: Maybe<AssetSortParameter>;
+  filter?: Maybe<AssetFilterParameter>;
+};
+
+export type CollectionListOptions = {
+  skip?: Maybe<Scalars['Int']>;
+  take?: Maybe<Scalars['Int']>;
+  sort?: Maybe<CollectionSortParameter>;
+  filter?: Maybe<CollectionFilterParameter>;
+};
+
+export type CountryListOptions = {
+  skip?: Maybe<Scalars['Int']>;
+  take?: Maybe<Scalars['Int']>;
+  sort?: Maybe<CountrySortParameter>;
+  filter?: Maybe<CountryFilterParameter>;
+};
+
+export type CustomerGroupListOptions = {
+  skip?: Maybe<Scalars['Int']>;
+  take?: Maybe<Scalars['Int']>;
+  sort?: Maybe<CustomerGroupSortParameter>;
+  filter?: Maybe<CustomerGroupFilterParameter>;
+};
+
+export type CustomerListOptions = {
+  skip?: Maybe<Scalars['Int']>;
+  take?: Maybe<Scalars['Int']>;
+  sort?: Maybe<CustomerSortParameter>;
+  filter?: Maybe<CustomerFilterParameter>;
+};
+
+export type FacetListOptions = {
+  skip?: Maybe<Scalars['Int']>;
+  take?: Maybe<Scalars['Int']>;
+  sort?: Maybe<FacetSortParameter>;
+  filter?: Maybe<FacetFilterParameter>;
+};
+
+export type JobListOptions = {
+  skip?: Maybe<Scalars['Int']>;
+  take?: Maybe<Scalars['Int']>;
+  sort?: Maybe<JobSortParameter>;
+  filter?: Maybe<JobFilterParameter>;
+};
+
+export type OrderListOptions = {
+  skip?: Maybe<Scalars['Int']>;
+  take?: Maybe<Scalars['Int']>;
+  sort?: Maybe<OrderSortParameter>;
+  filter?: Maybe<OrderFilterParameter>;
+};
+
+export type PaymentMethodListOptions = {
+  skip?: Maybe<Scalars['Int']>;
+  take?: Maybe<Scalars['Int']>;
+  sort?: Maybe<PaymentMethodSortParameter>;
+  filter?: Maybe<PaymentMethodFilterParameter>;
+};
+
+export type ProductListOptions = {
+  skip?: Maybe<Scalars['Int']>;
+  take?: Maybe<Scalars['Int']>;
+  sort?: Maybe<ProductSortParameter>;
+  filter?: Maybe<ProductFilterParameter>;
+};
+
+export type PromotionListOptions = {
+  skip?: Maybe<Scalars['Int']>;
+  take?: Maybe<Scalars['Int']>;
+  sort?: Maybe<PromotionSortParameter>;
+  filter?: Maybe<PromotionFilterParameter>;
+};
+
+export type RoleListOptions = {
+  skip?: Maybe<Scalars['Int']>;
+  take?: Maybe<Scalars['Int']>;
+  sort?: Maybe<RoleSortParameter>;
+  filter?: Maybe<RoleFilterParameter>;
+};
+
+export type ShippingMethodListOptions = {
+  skip?: Maybe<Scalars['Int']>;
+  take?: Maybe<Scalars['Int']>;
+  sort?: Maybe<ShippingMethodSortParameter>;
+  filter?: Maybe<ShippingMethodFilterParameter>;
+};
+
+export type TaxRateListOptions = {
+  skip?: Maybe<Scalars['Int']>;
+  take?: Maybe<Scalars['Int']>;
+  sort?: Maybe<TaxRateSortParameter>;
+  filter?: Maybe<TaxRateFilterParameter>;
+};
+
+export type ProductVariantListOptions = {
+  skip?: Maybe<Scalars['Int']>;
+  take?: Maybe<Scalars['Int']>;
+  sort?: Maybe<ProductVariantSortParameter>;
+  filter?: Maybe<ProductVariantFilterParameter>;
+};
+
+export type HistoryEntryListOptions = {
+  skip?: Maybe<Scalars['Int']>;
+  take?: Maybe<Scalars['Int']>;
+  sort?: Maybe<HistoryEntrySortParameter>;
+  filter?: Maybe<HistoryEntryFilterParameter>;
+};
+
 export type AdministratorFilterParameter = {
   createdAt?: Maybe<DateOperators>;
   updatedAt?: Maybe<DateOperators>;
@@ -4071,6 +4067,10 @@ export type CustomFields = {
   ShippingMethod: Array<CustomFieldConfig>;
 };
 
+export type AuthenticationInput = {
+  native?: Maybe<NativeAuthInput>;
+};
+
 export type NativeAuthInput = {
   username: Scalars['String'];
   password: Scalars['String'];

+ 84 - 2
packages/core/e2e/default-search-plugin.e2e-spec.ts

@@ -8,11 +8,10 @@ import {
 } from '@vendure/core';
 import { createTestEnvironment, E2E_DEFAULT_CHANNEL_TOKEN, SimpleGraphQLClient } from '@vendure/testing';
 import gql from 'graphql-tag';
-import so from 'i18next-icu/locale-data/so';
 import path from 'path';
 
 import { initialData } from '../../../e2e-common/e2e-initial-data';
-import { TEST_SETUP_TIMEOUT_MS, testConfig } from '../../../e2e-common/test-config';
+import { testConfig, TEST_SETUP_TIMEOUT_MS } from '../../../e2e-common/test-config';
 
 import {
     AssignProductsToChannel,
@@ -923,6 +922,87 @@ describe('Default search plugin', () => {
                 expect(search.items.map(i => i.productId)).toEqual(['T_1']);
             }, 10000);
         });
+
+        describe('multiple language handling', () => {
+            function searchInLanguage(languageCode: LanguageCode) {
+                return adminClient.query<SearchProductsShop.Query, SearchProductsShop.Variables>(
+                    SEARCH_PRODUCTS,
+                    {
+                        input: {
+                            take: 1,
+                        },
+                    },
+                    {
+                        languageCode,
+                    },
+                );
+            }
+
+            beforeAll(async () => {
+                const { updateProduct } = await adminClient.query<
+                    UpdateProduct.Mutation,
+                    UpdateProduct.Variables
+                >(UPDATE_PRODUCT, {
+                    input: {
+                        id: 'T_1',
+                        translations: [
+                            {
+                                languageCode: LanguageCode.de,
+                                name: 'laptop name de',
+                                slug: 'laptop-slug-de',
+                                description: 'laptop description de',
+                            },
+                            {
+                                languageCode: LanguageCode.zh,
+                                name: 'laptop name zh',
+                                slug: 'laptop-slug-zh',
+                                description: 'laptop description zh',
+                            },
+                        ],
+                    },
+                });
+
+                await adminClient.query<UpdateProductVariants.Mutation, UpdateProductVariants.Variables>(
+                    UPDATE_PRODUCT_VARIANTS,
+                    {
+                        input: [
+                            {
+                                id: updateProduct.variants[0].id,
+                                translations: [
+                                    {
+                                        languageCode: LanguageCode.fr,
+                                        name: 'laptop variant fr',
+                                    },
+                                ],
+                            },
+                        ],
+                    },
+                );
+
+                await awaitRunningJobs(adminClient);
+            });
+
+            it('indexes product-level languages', async () => {
+                const { search: search1 } = await searchInLanguage(LanguageCode.de);
+
+                expect(search1.items[0].productName).toBe('laptop name de');
+                expect(search1.items[0].slug).toBe('laptop-slug-de');
+                expect(search1.items[0].description).toBe('laptop description de');
+
+                const { search: search2 } = await searchInLanguage(LanguageCode.zh);
+
+                expect(search2.items[0].productName).toBe('laptop name zh');
+                expect(search2.items[0].slug).toBe('laptop-slug-zh');
+                expect(search2.items[0].description).toBe('laptop description zh');
+            });
+
+            it('indexes product variant-level languages', async () => {
+                const { search: search1 } = await searchInLanguage(LanguageCode.fr);
+
+                expect(search1.items[0].productName).toBe('Laptop');
+                expect(search1.items[0].productVariantName).toBe('laptop variant fr');
+            });
+        });
     });
 });
 
@@ -942,6 +1022,8 @@ export const SEARCH_PRODUCTS = gql`
                 enabled
                 productId
                 productName
+                slug
+                description
                 productPreview
                 productVariantId
                 productVariantName

+ 125 - 123
packages/core/e2e/graphql/generated-e2e-admin-types.ts

@@ -777,13 +777,6 @@ export type MutationRemoveMembersFromZoneArgs = {
     memberIds: Array<Scalars['ID']>;
 };
 
-export type AdministratorListOptions = {
-    skip?: Maybe<Scalars['Int']>;
-    take?: Maybe<Scalars['Int']>;
-    sort?: Maybe<AdministratorSortParameter>;
-    filter?: Maybe<AdministratorFilterParameter>;
-};
-
 export type CreateAdministratorInput = {
     firstName: Scalars['String'];
     lastName: Scalars['String'];
@@ -810,13 +803,6 @@ export type MimeTypeError = ErrorResult & {
 
 export type CreateAssetResult = Asset | MimeTypeError;
 
-export type AssetListOptions = {
-    skip?: Maybe<Scalars['Int']>;
-    take?: Maybe<Scalars['Int']>;
-    sort?: Maybe<AssetSortParameter>;
-    filter?: Maybe<AssetFilterParameter>;
-};
-
 export type CreateAssetInput = {
     file: Scalars['Upload'];
 };
@@ -832,10 +818,6 @@ export type UpdateAssetInput = {
     focalPoint?: Maybe<CoordinateInput>;
 };
 
-export type AuthenticationInput = {
-    native?: Maybe<NativeAuthInput>;
-};
-
 export type NativeAuthenticationResult = CurrentUser | InvalidCredentialsError | NativeAuthStrategyError;
 
 export type AuthenticationResult = CurrentUser | InvalidCredentialsError;
@@ -897,13 +879,6 @@ export type CollectionProductVariantsArgs = {
     options?: Maybe<ProductVariantListOptions>;
 };
 
-export type CollectionListOptions = {
-    skip?: Maybe<Scalars['Int']>;
-    take?: Maybe<Scalars['Int']>;
-    sort?: Maybe<CollectionSortParameter>;
-    filter?: Maybe<CollectionFilterParameter>;
-};
-
 export type MoveCollectionInput = {
     collectionId: Scalars['ID'];
     parentId: Scalars['ID'];
@@ -967,25 +942,11 @@ export type UpdateCountryInput = {
     enabled?: Maybe<Scalars['Boolean']>;
 };
 
-export type CountryListOptions = {
-    skip?: Maybe<Scalars['Int']>;
-    take?: Maybe<Scalars['Int']>;
-    sort?: Maybe<CountrySortParameter>;
-    filter?: Maybe<CountryFilterParameter>;
-};
-
 export type CustomerGroupList = PaginatedList & {
     items: Array<CustomerGroup>;
     totalItems: Scalars['Int'];
 };
 
-export type CustomerGroupListOptions = {
-    skip?: Maybe<Scalars['Int']>;
-    take?: Maybe<Scalars['Int']>;
-    sort?: Maybe<CustomerGroupSortParameter>;
-    filter?: Maybe<CustomerGroupFilterParameter>;
-};
-
 export type CreateCustomerGroupInput = {
     name: Scalars['String'];
     customerIds?: Maybe<Array<Scalars['ID']>>;
@@ -1031,13 +992,6 @@ export type UpdateCustomerInput = {
     customFields?: Maybe<Scalars['JSON']>;
 };
 
-export type CustomerListOptions = {
-    skip?: Maybe<Scalars['Int']>;
-    take?: Maybe<Scalars['Int']>;
-    sort?: Maybe<CustomerSortParameter>;
-    filter?: Maybe<CustomerFilterParameter>;
-};
-
 export type AddNoteToCustomerInput = {
     id: Scalars['ID'];
     note: Scalars['String'];
@@ -1066,13 +1020,6 @@ export type Facet = Node & {
     customFields?: Maybe<Scalars['JSON']>;
 };
 
-export type FacetListOptions = {
-    skip?: Maybe<Scalars['Int']>;
-    take?: Maybe<Scalars['Int']>;
-    sort?: Maybe<FacetSortParameter>;
-    filter?: Maybe<FacetFilterParameter>;
-};
-
 export type FacetTranslationInput = {
     id?: Maybe<Scalars['ID']>;
     languageCode: LanguageCode;
@@ -1166,13 +1113,6 @@ export enum JobState {
     FAILED = 'FAILED',
 }
 
-export type JobListOptions = {
-    skip?: Maybe<Scalars['Int']>;
-    take?: Maybe<Scalars['Int']>;
-    sort?: Maybe<JobSortParameter>;
-    filter?: Maybe<JobFilterParameter>;
-};
-
 export type JobList = PaginatedList & {
     items: Array<Job>;
     totalItems: Scalars['Int'];
@@ -1237,13 +1177,6 @@ export type OrderHistoryArgs = {
     options?: Maybe<HistoryEntryListOptions>;
 };
 
-export type OrderListOptions = {
-    skip?: Maybe<Scalars['Int']>;
-    take?: Maybe<Scalars['Int']>;
-    sort?: Maybe<OrderSortParameter>;
-    filter?: Maybe<OrderFilterParameter>;
-};
-
 export type UpdateOrderInput = {
     id: Scalars['ID'];
     customFields?: Maybe<Scalars['JSON']>;
@@ -1425,13 +1358,6 @@ export type PaymentMethodList = PaginatedList & {
     totalItems: Scalars['Int'];
 };
 
-export type PaymentMethodListOptions = {
-    skip?: Maybe<Scalars['Int']>;
-    take?: Maybe<Scalars['Int']>;
-    sort?: Maybe<PaymentMethodSortParameter>;
-    filter?: Maybe<PaymentMethodFilterParameter>;
-};
-
 export type UpdatePaymentMethodInput = {
     id: Scalars['ID'];
     code?: Maybe<Scalars['String']>;
@@ -1571,13 +1497,6 @@ export type StockMovementListOptions = {
     take?: Maybe<Scalars['Int']>;
 };
 
-export type ProductListOptions = {
-    skip?: Maybe<Scalars['Int']>;
-    take?: Maybe<Scalars['Int']>;
-    sort?: Maybe<ProductSortParameter>;
-    filter?: Maybe<ProductFilterParameter>;
-};
-
 export type ProductTranslationInput = {
     id?: Maybe<Scalars['ID']>;
     languageCode: LanguageCode;
@@ -1668,13 +1587,6 @@ export type ProductOptionInUseError = ErrorResult & {
 
 export type RemoveOptionGroupFromProductResult = Product | ProductOptionInUseError;
 
-export type PromotionListOptions = {
-    skip?: Maybe<Scalars['Int']>;
-    take?: Maybe<Scalars['Int']>;
-    sort?: Maybe<PromotionSortParameter>;
-    filter?: Maybe<PromotionFilterParameter>;
-};
-
 export type CreatePromotionInput = {
     name: Scalars['String'];
     enabled: Scalars['Boolean'];
@@ -1708,13 +1620,6 @@ export type CreatePromotionResult = Promotion | MissingConditionsError;
 
 export type UpdatePromotionResult = Promotion | MissingConditionsError;
 
-export type RoleListOptions = {
-    skip?: Maybe<Scalars['Int']>;
-    take?: Maybe<Scalars['Int']>;
-    sort?: Maybe<RoleSortParameter>;
-    filter?: Maybe<RoleFilterParameter>;
-};
-
 export type CreateRoleInput = {
     code: Scalars['String'];
     description: Scalars['String'];
@@ -1730,13 +1635,6 @@ export type UpdateRoleInput = {
     channelIds?: Maybe<Array<Scalars['ID']>>;
 };
 
-export type ShippingMethodListOptions = {
-    skip?: Maybe<Scalars['Int']>;
-    take?: Maybe<Scalars['Int']>;
-    sort?: Maybe<ShippingMethodSortParameter>;
-    filter?: Maybe<ShippingMethodFilterParameter>;
-};
-
 export type CreateShippingMethodInput = {
     code: Scalars['String'];
     description: Scalars['String'];
@@ -1792,13 +1690,6 @@ export type UpdateTaxCategoryInput = {
     name?: Maybe<Scalars['String']>;
 };
 
-export type TaxRateListOptions = {
-    skip?: Maybe<Scalars['Int']>;
-    take?: Maybe<Scalars['Int']>;
-    sort?: Maybe<TaxRateSortParameter>;
-    filter?: Maybe<TaxRateFilterParameter>;
-};
-
 export type CreateTaxRateInput = {
     name: Scalars['String'];
     enabled: Scalars['Boolean'];
@@ -2980,13 +2871,6 @@ export type ProductVariantList = PaginatedList & {
     totalItems: Scalars['Int'];
 };
 
-export type ProductVariantListOptions = {
-    skip?: Maybe<Scalars['Int']>;
-    take?: Maybe<Scalars['Int']>;
-    sort?: Maybe<ProductVariantSortParameter>;
-    filter?: Maybe<ProductVariantFilterParameter>;
-};
-
 export type Country = Node & {
     id: Scalars['ID'];
     createdAt: Scalars['DateTime'];
@@ -3123,13 +3007,6 @@ export type HistoryEntryList = PaginatedList & {
     totalItems: Scalars['Int'];
 };
 
-export type HistoryEntryListOptions = {
-    skip?: Maybe<Scalars['Int']>;
-    take?: Maybe<Scalars['Int']>;
-    sort?: Maybe<HistoryEntrySortParameter>;
-    filter?: Maybe<HistoryEntryFilterParameter>;
-};
-
 export type ImportInfo = {
     errors?: Maybe<Array<Scalars['String']>>;
     processed: Scalars['Int'];
@@ -3502,6 +3379,125 @@ export type Zone = Node & {
     members: Array<Country>;
 };
 
+export type AdministratorListOptions = {
+    skip?: Maybe<Scalars['Int']>;
+    take?: Maybe<Scalars['Int']>;
+    sort?: Maybe<AdministratorSortParameter>;
+    filter?: Maybe<AdministratorFilterParameter>;
+};
+
+export type AssetListOptions = {
+    skip?: Maybe<Scalars['Int']>;
+    take?: Maybe<Scalars['Int']>;
+    sort?: Maybe<AssetSortParameter>;
+    filter?: Maybe<AssetFilterParameter>;
+};
+
+export type CollectionListOptions = {
+    skip?: Maybe<Scalars['Int']>;
+    take?: Maybe<Scalars['Int']>;
+    sort?: Maybe<CollectionSortParameter>;
+    filter?: Maybe<CollectionFilterParameter>;
+};
+
+export type CountryListOptions = {
+    skip?: Maybe<Scalars['Int']>;
+    take?: Maybe<Scalars['Int']>;
+    sort?: Maybe<CountrySortParameter>;
+    filter?: Maybe<CountryFilterParameter>;
+};
+
+export type CustomerGroupListOptions = {
+    skip?: Maybe<Scalars['Int']>;
+    take?: Maybe<Scalars['Int']>;
+    sort?: Maybe<CustomerGroupSortParameter>;
+    filter?: Maybe<CustomerGroupFilterParameter>;
+};
+
+export type CustomerListOptions = {
+    skip?: Maybe<Scalars['Int']>;
+    take?: Maybe<Scalars['Int']>;
+    sort?: Maybe<CustomerSortParameter>;
+    filter?: Maybe<CustomerFilterParameter>;
+};
+
+export type FacetListOptions = {
+    skip?: Maybe<Scalars['Int']>;
+    take?: Maybe<Scalars['Int']>;
+    sort?: Maybe<FacetSortParameter>;
+    filter?: Maybe<FacetFilterParameter>;
+};
+
+export type JobListOptions = {
+    skip?: Maybe<Scalars['Int']>;
+    take?: Maybe<Scalars['Int']>;
+    sort?: Maybe<JobSortParameter>;
+    filter?: Maybe<JobFilterParameter>;
+};
+
+export type OrderListOptions = {
+    skip?: Maybe<Scalars['Int']>;
+    take?: Maybe<Scalars['Int']>;
+    sort?: Maybe<OrderSortParameter>;
+    filter?: Maybe<OrderFilterParameter>;
+};
+
+export type PaymentMethodListOptions = {
+    skip?: Maybe<Scalars['Int']>;
+    take?: Maybe<Scalars['Int']>;
+    sort?: Maybe<PaymentMethodSortParameter>;
+    filter?: Maybe<PaymentMethodFilterParameter>;
+};
+
+export type ProductListOptions = {
+    skip?: Maybe<Scalars['Int']>;
+    take?: Maybe<Scalars['Int']>;
+    sort?: Maybe<ProductSortParameter>;
+    filter?: Maybe<ProductFilterParameter>;
+};
+
+export type PromotionListOptions = {
+    skip?: Maybe<Scalars['Int']>;
+    take?: Maybe<Scalars['Int']>;
+    sort?: Maybe<PromotionSortParameter>;
+    filter?: Maybe<PromotionFilterParameter>;
+};
+
+export type RoleListOptions = {
+    skip?: Maybe<Scalars['Int']>;
+    take?: Maybe<Scalars['Int']>;
+    sort?: Maybe<RoleSortParameter>;
+    filter?: Maybe<RoleFilterParameter>;
+};
+
+export type ShippingMethodListOptions = {
+    skip?: Maybe<Scalars['Int']>;
+    take?: Maybe<Scalars['Int']>;
+    sort?: Maybe<ShippingMethodSortParameter>;
+    filter?: Maybe<ShippingMethodFilterParameter>;
+};
+
+export type TaxRateListOptions = {
+    skip?: Maybe<Scalars['Int']>;
+    take?: Maybe<Scalars['Int']>;
+    sort?: Maybe<TaxRateSortParameter>;
+    filter?: Maybe<TaxRateFilterParameter>;
+};
+
+export type ProductVariantListOptions = {
+    skip?: Maybe<Scalars['Int']>;
+    take?: Maybe<Scalars['Int']>;
+    sort?: Maybe<ProductVariantSortParameter>;
+    filter?: Maybe<ProductVariantFilterParameter>;
+};
+
+export type HistoryEntryListOptions = {
+    skip?: Maybe<Scalars['Int']>;
+    take?: Maybe<Scalars['Int']>;
+    sort?: Maybe<HistoryEntrySortParameter>;
+    filter?: Maybe<HistoryEntryFilterParameter>;
+};
+
 export type AdministratorFilterParameter = {
     createdAt?: Maybe<DateOperators>;
     updatedAt?: Maybe<DateOperators>;
@@ -3844,6 +3840,10 @@ export type CustomFields = {
     ShippingMethod: Array<CustomFieldConfig>;
 };
 
+export type AuthenticationInput = {
+    native?: Maybe<NativeAuthInput>;
+};
+
 export type NativeAuthInput = {
     username: Scalars['String'];
     password: Scalars['String'];
@@ -4149,6 +4149,8 @@ export type SearchProductsAdminQuery = {
                 | 'enabled'
                 | 'productId'
                 | 'productName'
+                | 'slug'
+                | 'description'
                 | 'productPreview'
                 | 'productVariantId'
                 | 'productVariantName'

+ 50 - 50
packages/core/e2e/graphql/generated-e2e-shop-types.ts

@@ -1325,10 +1325,6 @@ export enum Permission {
     DeleteSettings = 'DeleteSettings',
 }
 
-export type AuthenticationInput = {
-    native?: Maybe<NativeAuthInput>;
-};
-
 export type RegisterCustomerInput = {
     emailAddress: Scalars['String'];
     title?: Maybe<Scalars['String']>;
@@ -1346,10 +1342,6 @@ export type UpdateCustomerInput = {
     customFields?: Maybe<Scalars['JSON']>;
 };
 
-export type UpdateOrderInput = {
-    customFields?: Maybe<Scalars['JSON']>;
-};
-
 /** Passed as input to the `addPaymentToOrder` mutation. */
 export type PaymentInput = {
     /** This field should correspond to the `code` property of a PaymentMethodHandler. */
@@ -1362,27 +1354,6 @@ export type PaymentInput = {
     metadata: Scalars['JSON'];
 };
 
-export type CollectionListOptions = {
-    skip?: Maybe<Scalars['Int']>;
-    take?: Maybe<Scalars['Int']>;
-    sort?: Maybe<CollectionSortParameter>;
-    filter?: Maybe<CollectionFilterParameter>;
-};
-
-export type OrderListOptions = {
-    skip?: Maybe<Scalars['Int']>;
-    take?: Maybe<Scalars['Int']>;
-    sort?: Maybe<OrderSortParameter>;
-    filter?: Maybe<OrderFilterParameter>;
-};
-
-export type ProductListOptions = {
-    skip?: Maybe<Scalars['Int']>;
-    take?: Maybe<Scalars['Int']>;
-    sort?: Maybe<ProductSortParameter>;
-    filter?: Maybe<ProductFilterParameter>;
-};
-
 /** Returned when attempting to modify the contents of an Order that is not in the `AddingItems` state. */
 export type OrderModificationError = ErrorResult & {
     errorCode: ErrorCode;
@@ -1717,13 +1688,6 @@ export type ProductVariantList = PaginatedList & {
     totalItems: Scalars['Int'];
 };
 
-export type ProductVariantListOptions = {
-    skip?: Maybe<Scalars['Int']>;
-    take?: Maybe<Scalars['Int']>;
-    sort?: Maybe<ProductVariantSortParameter>;
-    filter?: Maybe<ProductVariantFilterParameter>;
-};
-
 export type Country = Node & {
     id: Scalars['ID'];
     createdAt: Scalars['DateTime'];
@@ -1760,13 +1724,6 @@ export type CustomerGroupCustomersArgs = {
     options?: Maybe<CustomerListOptions>;
 };
 
-export type CustomerListOptions = {
-    skip?: Maybe<Scalars['Int']>;
-    take?: Maybe<Scalars['Int']>;
-    sort?: Maybe<CustomerSortParameter>;
-    filter?: Maybe<CustomerFilterParameter>;
-};
-
 export type Customer = Node & {
     id: Scalars['ID'];
     createdAt: Scalars['DateTime'];
@@ -1898,13 +1855,6 @@ export type HistoryEntryList = PaginatedList & {
     totalItems: Scalars['Int'];
 };
 
-export type HistoryEntryListOptions = {
-    skip?: Maybe<Scalars['Int']>;
-    take?: Maybe<Scalars['Int']>;
-    sort?: Maybe<HistoryEntrySortParameter>;
-    filter?: Maybe<HistoryEntryFilterParameter>;
-};
-
 export type ImportInfo = {
     errors?: Maybe<Array<Scalars['String']>>;
     processed: Scalars['Int'];
@@ -2391,6 +2341,48 @@ export type Zone = Node & {
     members: Array<Country>;
 };
 
+export type CollectionListOptions = {
+    skip?: Maybe<Scalars['Int']>;
+    take?: Maybe<Scalars['Int']>;
+    sort?: Maybe<CollectionSortParameter>;
+    filter?: Maybe<CollectionFilterParameter>;
+};
+
+export type ProductListOptions = {
+    skip?: Maybe<Scalars['Int']>;
+    take?: Maybe<Scalars['Int']>;
+    sort?: Maybe<ProductSortParameter>;
+    filter?: Maybe<ProductFilterParameter>;
+};
+
+export type ProductVariantListOptions = {
+    skip?: Maybe<Scalars['Int']>;
+    take?: Maybe<Scalars['Int']>;
+    sort?: Maybe<ProductVariantSortParameter>;
+    filter?: Maybe<ProductVariantFilterParameter>;
+};
+
+export type CustomerListOptions = {
+    skip?: Maybe<Scalars['Int']>;
+    take?: Maybe<Scalars['Int']>;
+    sort?: Maybe<CustomerSortParameter>;
+    filter?: Maybe<CustomerFilterParameter>;
+};
+
+export type OrderListOptions = {
+    skip?: Maybe<Scalars['Int']>;
+    take?: Maybe<Scalars['Int']>;
+    sort?: Maybe<OrderSortParameter>;
+    filter?: Maybe<OrderFilterParameter>;
+};
+
+export type HistoryEntryListOptions = {
+    skip?: Maybe<Scalars['Int']>;
+    take?: Maybe<Scalars['Int']>;
+    sort?: Maybe<HistoryEntrySortParameter>;
+    filter?: Maybe<HistoryEntryFilterParameter>;
+};
+
 export type CollectionFilterParameter = {
     createdAt?: Maybe<DateOperators>;
     updatedAt?: Maybe<DateOperators>;
@@ -2517,6 +2509,10 @@ export type HistoryEntrySortParameter = {
     updatedAt?: Maybe<SortOrder>;
 };
 
+export type UpdateOrderInput = {
+    customFields?: Maybe<Scalars['JSON']>;
+};
+
 export type CustomFields = {
     Address: Array<CustomFieldConfig>;
     Collection: Array<CustomFieldConfig>;
@@ -2534,6 +2530,10 @@ export type CustomFields = {
     ShippingMethod: Array<CustomFieldConfig>;
 };
 
+export type AuthenticationInput = {
+    native?: Maybe<NativeAuthInput>;
+};
+
 export type NativeAuthInput = {
     username: Scalars['String'];
     password: Scalars['String'];

+ 59 - 35
packages/core/src/plugin/default-search-plugin/indexer/indexer.controller.ts

@@ -8,6 +8,8 @@ import { FindOptionsUtils } from 'typeorm/find-options/FindOptionsUtils';
 
 import { RequestContext } from '../../../api/common/request-context';
 import { AsyncQueue } from '../../../common/async-queue';
+import { Translatable, Translation } from '../../../common/types/locale-types';
+import { ConfigService } from '../../../config/config.service';
 import { Logger } from '../../../config/logger/vendure-logger';
 import { FacetValue } from '../../../entity/facet-value/facet-value.entity';
 import { ProductVariant } from '../../../entity/product-variant/product-variant.entity';
@@ -53,6 +55,7 @@ export class IndexerController {
     constructor(
         private connection: TransactionalConnection,
         private productVariantService: ProductVariantService,
+        private configService: ConfigService,
     ) {}
 
     @MessagePattern(ReindexMessage.pattern)
@@ -79,7 +82,7 @@ export class IndexerController {
                     .skip(i * BATCH_SIZE)
                     .getMany();
                 const hydratedVariants = this.hydrateVariants(ctx, variants);
-                await this.saveVariants(ctx.languageCode, ctx.channelId, hydratedVariants);
+                await this.saveVariants(ctx.channelId, hydratedVariants);
                 observer.next({
                     total: count,
                     completed: Math.min((i + 1) * BATCH_SIZE, count),
@@ -118,7 +121,7 @@ export class IndexerController {
                         where: { deletedAt: null },
                     });
                     const variants = this.hydrateVariants(ctx, batch);
-                    await this.saveVariants(ctx.languageCode, ctx.channelId, variants);
+                    await this.saveVariants(ctx.channelId, variants);
                     observer.next({
                         total: ids.length,
                         completed: Math.min((i + 1) * BATCH_SIZE, ids.length),
@@ -249,7 +252,7 @@ export class IndexerController {
             Logger.verbose(`Updating ${updatedVariants.length} variants`, workerLoggerCtx);
             updatedVariants = this.hydrateVariants(ctx, updatedVariants);
             if (updatedVariants.length) {
-                await this.saveVariants(ctx.languageCode, channelId, updatedVariants);
+                await this.saveVariants(channelId, updatedVariants);
             }
         }
         return true;
@@ -267,7 +270,7 @@ export class IndexerController {
         if (variants) {
             const updatedVariants = this.hydrateVariants(ctx, variants);
             Logger.verbose(`Updating ${updatedVariants.length} variants`, workerLoggerCtx);
-            await this.saveVariants(ctx.languageCode, channelId, updatedVariants);
+            await this.saveVariants(channelId, updatedVariants);
         }
         return true;
     }
@@ -316,40 +319,61 @@ export class IndexerController {
             .map(v => translateDeep(v, ctx.languageCode, ['product', 'collections']));
     }
 
-    private async saveVariants(languageCode: LanguageCode, channelId: ID, variants: ProductVariant[]) {
-        const items = variants.map(
-            (v: ProductVariant) =>
-                new SearchIndexItem({
-                    productVariantId: v.id,
-                    channelId,
-                    languageCode,
-                    sku: v.sku,
-                    enabled: v.product.enabled === false ? false : v.enabled,
-                    slug: v.product.slug,
-                    price: v.price,
-                    priceWithTax: v.priceWithTax,
-                    productId: v.product.id,
-                    productName: v.product.name,
-                    description: v.product.description,
-                    productVariantName: v.name,
-                    productAssetId: v.product.featuredAsset ? v.product.featuredAsset.id : null,
-                    productPreviewFocalPoint: v.product.featuredAsset
-                        ? v.product.featuredAsset.focalPoint
-                        : null,
-                    productVariantPreviewFocalPoint: v.featuredAsset ? v.featuredAsset.focalPoint : null,
-                    productVariantAssetId: v.featuredAsset ? v.featuredAsset.id : null,
-                    productPreview: v.product.featuredAsset ? v.product.featuredAsset.preview : '',
-                    productVariantPreview: v.featuredAsset ? v.featuredAsset.preview : '',
-                    channelIds: v.product.channels.map(c => c.id as string),
-                    facetIds: this.getFacetIds(v),
-                    facetValueIds: this.getFacetValueIds(v),
-                    collectionIds: v.collections.map(c => c.id.toString()),
-                    collectionSlugs: v.collections.map(c => c.slug),
-                }),
-        );
+    private async saveVariants(channelId: ID, variants: ProductVariant[]) {
+        const items: SearchIndexItem[] = [];
+
+        for (const v of variants) {
+            const languageVariants = unique([
+                ...v.translations.map(t => t.languageCode),
+                ...v.product.translations.map(t => t.languageCode),
+            ]);
+            for (const languageCode of languageVariants) {
+                const productTranslation = this.getTranslation(v.product, languageCode);
+                const variantTranslation = this.getTranslation(v, languageCode);
+                items.push(
+                    new SearchIndexItem({
+                        productVariantId: v.id,
+                        channelId,
+                        languageCode,
+                        sku: v.sku,
+                        enabled: v.product.enabled === false ? false : v.enabled,
+                        slug: productTranslation.slug,
+                        price: v.price,
+                        priceWithTax: v.priceWithTax,
+                        productId: v.product.id,
+                        productName: productTranslation.name,
+                        description: productTranslation.description,
+                        productVariantName: variantTranslation.name,
+                        productAssetId: v.product.featuredAsset ? v.product.featuredAsset.id : null,
+                        productPreviewFocalPoint: v.product.featuredAsset
+                            ? v.product.featuredAsset.focalPoint
+                            : null,
+                        productVariantPreviewFocalPoint: v.featuredAsset ? v.featuredAsset.focalPoint : null,
+                        productVariantAssetId: v.featuredAsset ? v.featuredAsset.id : null,
+                        productPreview: v.product.featuredAsset ? v.product.featuredAsset.preview : '',
+                        productVariantPreview: v.featuredAsset ? v.featuredAsset.preview : '',
+                        channelIds: v.product.channels.map(c => c.id as string),
+                        facetIds: this.getFacetIds(v),
+                        facetValueIds: this.getFacetValueIds(v),
+                        collectionIds: v.collections.map(c => c.id.toString()),
+                        collectionSlugs: v.collections.map(c => c.slug),
+                    }),
+                );
+            }
+        }
+
         await this.queue.push(() => this.connection.getRepository(SearchIndexItem).save(items));
     }
 
+    private getTranslation<T extends Translatable>(
+        translatable: T,
+        languageCode: LanguageCode,
+    ): Translation<T> {
+        return ((translatable.translations.find(t => t.languageCode === languageCode) ||
+            translatable.translations.find(t => t.languageCode === this.configService.defaultLanguageCode) ||
+            translatable.translations[0]) as unknown) as Translation<T>;
+    }
+
     private getFacetIds(variant: ProductVariant): string[] {
         const facetIds = (fv: FacetValue) => fv.facet.id.toString();
         const variantFacetIds = variant.facetValues.map(facetIds);

+ 123 - 123
packages/elasticsearch-plugin/e2e/graphql/generated-e2e-elasticsearch-plugin-types.ts

@@ -777,13 +777,6 @@ export type MutationRemoveMembersFromZoneArgs = {
     memberIds: Array<Scalars['ID']>;
 };
 
-export type AdministratorListOptions = {
-    skip?: Maybe<Scalars['Int']>;
-    take?: Maybe<Scalars['Int']>;
-    sort?: Maybe<AdministratorSortParameter>;
-    filter?: Maybe<AdministratorFilterParameter>;
-};
-
 export type CreateAdministratorInput = {
     firstName: Scalars['String'];
     lastName: Scalars['String'];
@@ -810,13 +803,6 @@ export type MimeTypeError = ErrorResult & {
 
 export type CreateAssetResult = Asset | MimeTypeError;
 
-export type AssetListOptions = {
-    skip?: Maybe<Scalars['Int']>;
-    take?: Maybe<Scalars['Int']>;
-    sort?: Maybe<AssetSortParameter>;
-    filter?: Maybe<AssetFilterParameter>;
-};
-
 export type CreateAssetInput = {
     file: Scalars['Upload'];
 };
@@ -832,10 +818,6 @@ export type UpdateAssetInput = {
     focalPoint?: Maybe<CoordinateInput>;
 };
 
-export type AuthenticationInput = {
-    native?: Maybe<NativeAuthInput>;
-};
-
 export type NativeAuthenticationResult = CurrentUser | InvalidCredentialsError | NativeAuthStrategyError;
 
 export type AuthenticationResult = CurrentUser | InvalidCredentialsError;
@@ -897,13 +879,6 @@ export type CollectionProductVariantsArgs = {
     options?: Maybe<ProductVariantListOptions>;
 };
 
-export type CollectionListOptions = {
-    skip?: Maybe<Scalars['Int']>;
-    take?: Maybe<Scalars['Int']>;
-    sort?: Maybe<CollectionSortParameter>;
-    filter?: Maybe<CollectionFilterParameter>;
-};
-
 export type MoveCollectionInput = {
     collectionId: Scalars['ID'];
     parentId: Scalars['ID'];
@@ -967,25 +942,11 @@ export type UpdateCountryInput = {
     enabled?: Maybe<Scalars['Boolean']>;
 };
 
-export type CountryListOptions = {
-    skip?: Maybe<Scalars['Int']>;
-    take?: Maybe<Scalars['Int']>;
-    sort?: Maybe<CountrySortParameter>;
-    filter?: Maybe<CountryFilterParameter>;
-};
-
 export type CustomerGroupList = PaginatedList & {
     items: Array<CustomerGroup>;
     totalItems: Scalars['Int'];
 };
 
-export type CustomerGroupListOptions = {
-    skip?: Maybe<Scalars['Int']>;
-    take?: Maybe<Scalars['Int']>;
-    sort?: Maybe<CustomerGroupSortParameter>;
-    filter?: Maybe<CustomerGroupFilterParameter>;
-};
-
 export type CreateCustomerGroupInput = {
     name: Scalars['String'];
     customerIds?: Maybe<Array<Scalars['ID']>>;
@@ -1031,13 +992,6 @@ export type UpdateCustomerInput = {
     customFields?: Maybe<Scalars['JSON']>;
 };
 
-export type CustomerListOptions = {
-    skip?: Maybe<Scalars['Int']>;
-    take?: Maybe<Scalars['Int']>;
-    sort?: Maybe<CustomerSortParameter>;
-    filter?: Maybe<CustomerFilterParameter>;
-};
-
 export type AddNoteToCustomerInput = {
     id: Scalars['ID'];
     note: Scalars['String'];
@@ -1066,13 +1020,6 @@ export type Facet = Node & {
     customFields?: Maybe<Scalars['JSON']>;
 };
 
-export type FacetListOptions = {
-    skip?: Maybe<Scalars['Int']>;
-    take?: Maybe<Scalars['Int']>;
-    sort?: Maybe<FacetSortParameter>;
-    filter?: Maybe<FacetFilterParameter>;
-};
-
 export type FacetTranslationInput = {
     id?: Maybe<Scalars['ID']>;
     languageCode: LanguageCode;
@@ -1166,13 +1113,6 @@ export enum JobState {
     FAILED = 'FAILED',
 }
 
-export type JobListOptions = {
-    skip?: Maybe<Scalars['Int']>;
-    take?: Maybe<Scalars['Int']>;
-    sort?: Maybe<JobSortParameter>;
-    filter?: Maybe<JobFilterParameter>;
-};
-
 export type JobList = PaginatedList & {
     items: Array<Job>;
     totalItems: Scalars['Int'];
@@ -1237,13 +1177,6 @@ export type OrderHistoryArgs = {
     options?: Maybe<HistoryEntryListOptions>;
 };
 
-export type OrderListOptions = {
-    skip?: Maybe<Scalars['Int']>;
-    take?: Maybe<Scalars['Int']>;
-    sort?: Maybe<OrderSortParameter>;
-    filter?: Maybe<OrderFilterParameter>;
-};
-
 export type UpdateOrderInput = {
     id: Scalars['ID'];
     customFields?: Maybe<Scalars['JSON']>;
@@ -1425,13 +1358,6 @@ export type PaymentMethodList = PaginatedList & {
     totalItems: Scalars['Int'];
 };
 
-export type PaymentMethodListOptions = {
-    skip?: Maybe<Scalars['Int']>;
-    take?: Maybe<Scalars['Int']>;
-    sort?: Maybe<PaymentMethodSortParameter>;
-    filter?: Maybe<PaymentMethodFilterParameter>;
-};
-
 export type UpdatePaymentMethodInput = {
     id: Scalars['ID'];
     code?: Maybe<Scalars['String']>;
@@ -1571,13 +1497,6 @@ export type StockMovementListOptions = {
     take?: Maybe<Scalars['Int']>;
 };
 
-export type ProductListOptions = {
-    skip?: Maybe<Scalars['Int']>;
-    take?: Maybe<Scalars['Int']>;
-    sort?: Maybe<ProductSortParameter>;
-    filter?: Maybe<ProductFilterParameter>;
-};
-
 export type ProductTranslationInput = {
     id?: Maybe<Scalars['ID']>;
     languageCode: LanguageCode;
@@ -1668,13 +1587,6 @@ export type ProductOptionInUseError = ErrorResult & {
 
 export type RemoveOptionGroupFromProductResult = Product | ProductOptionInUseError;
 
-export type PromotionListOptions = {
-    skip?: Maybe<Scalars['Int']>;
-    take?: Maybe<Scalars['Int']>;
-    sort?: Maybe<PromotionSortParameter>;
-    filter?: Maybe<PromotionFilterParameter>;
-};
-
 export type CreatePromotionInput = {
     name: Scalars['String'];
     enabled: Scalars['Boolean'];
@@ -1708,13 +1620,6 @@ export type CreatePromotionResult = Promotion | MissingConditionsError;
 
 export type UpdatePromotionResult = Promotion | MissingConditionsError;
 
-export type RoleListOptions = {
-    skip?: Maybe<Scalars['Int']>;
-    take?: Maybe<Scalars['Int']>;
-    sort?: Maybe<RoleSortParameter>;
-    filter?: Maybe<RoleFilterParameter>;
-};
-
 export type CreateRoleInput = {
     code: Scalars['String'];
     description: Scalars['String'];
@@ -1730,13 +1635,6 @@ export type UpdateRoleInput = {
     channelIds?: Maybe<Array<Scalars['ID']>>;
 };
 
-export type ShippingMethodListOptions = {
-    skip?: Maybe<Scalars['Int']>;
-    take?: Maybe<Scalars['Int']>;
-    sort?: Maybe<ShippingMethodSortParameter>;
-    filter?: Maybe<ShippingMethodFilterParameter>;
-};
-
 export type CreateShippingMethodInput = {
     code: Scalars['String'];
     description: Scalars['String'];
@@ -1792,13 +1690,6 @@ export type UpdateTaxCategoryInput = {
     name?: Maybe<Scalars['String']>;
 };
 
-export type TaxRateListOptions = {
-    skip?: Maybe<Scalars['Int']>;
-    take?: Maybe<Scalars['Int']>;
-    sort?: Maybe<TaxRateSortParameter>;
-    filter?: Maybe<TaxRateFilterParameter>;
-};
-
 export type CreateTaxRateInput = {
     name: Scalars['String'];
     enabled: Scalars['Boolean'];
@@ -2980,13 +2871,6 @@ export type ProductVariantList = PaginatedList & {
     totalItems: Scalars['Int'];
 };
 
-export type ProductVariantListOptions = {
-    skip?: Maybe<Scalars['Int']>;
-    take?: Maybe<Scalars['Int']>;
-    sort?: Maybe<ProductVariantSortParameter>;
-    filter?: Maybe<ProductVariantFilterParameter>;
-};
-
 export type Country = Node & {
     id: Scalars['ID'];
     createdAt: Scalars['DateTime'];
@@ -3123,13 +3007,6 @@ export type HistoryEntryList = PaginatedList & {
     totalItems: Scalars['Int'];
 };
 
-export type HistoryEntryListOptions = {
-    skip?: Maybe<Scalars['Int']>;
-    take?: Maybe<Scalars['Int']>;
-    sort?: Maybe<HistoryEntrySortParameter>;
-    filter?: Maybe<HistoryEntryFilterParameter>;
-};
-
 export type ImportInfo = {
     errors?: Maybe<Array<Scalars['String']>>;
     processed: Scalars['Int'];
@@ -3502,6 +3379,125 @@ export type Zone = Node & {
     members: Array<Country>;
 };
 
+export type AdministratorListOptions = {
+    skip?: Maybe<Scalars['Int']>;
+    take?: Maybe<Scalars['Int']>;
+    sort?: Maybe<AdministratorSortParameter>;
+    filter?: Maybe<AdministratorFilterParameter>;
+};
+
+export type AssetListOptions = {
+    skip?: Maybe<Scalars['Int']>;
+    take?: Maybe<Scalars['Int']>;
+    sort?: Maybe<AssetSortParameter>;
+    filter?: Maybe<AssetFilterParameter>;
+};
+
+export type CollectionListOptions = {
+    skip?: Maybe<Scalars['Int']>;
+    take?: Maybe<Scalars['Int']>;
+    sort?: Maybe<CollectionSortParameter>;
+    filter?: Maybe<CollectionFilterParameter>;
+};
+
+export type CountryListOptions = {
+    skip?: Maybe<Scalars['Int']>;
+    take?: Maybe<Scalars['Int']>;
+    sort?: Maybe<CountrySortParameter>;
+    filter?: Maybe<CountryFilterParameter>;
+};
+
+export type CustomerGroupListOptions = {
+    skip?: Maybe<Scalars['Int']>;
+    take?: Maybe<Scalars['Int']>;
+    sort?: Maybe<CustomerGroupSortParameter>;
+    filter?: Maybe<CustomerGroupFilterParameter>;
+};
+
+export type CustomerListOptions = {
+    skip?: Maybe<Scalars['Int']>;
+    take?: Maybe<Scalars['Int']>;
+    sort?: Maybe<CustomerSortParameter>;
+    filter?: Maybe<CustomerFilterParameter>;
+};
+
+export type FacetListOptions = {
+    skip?: Maybe<Scalars['Int']>;
+    take?: Maybe<Scalars['Int']>;
+    sort?: Maybe<FacetSortParameter>;
+    filter?: Maybe<FacetFilterParameter>;
+};
+
+export type JobListOptions = {
+    skip?: Maybe<Scalars['Int']>;
+    take?: Maybe<Scalars['Int']>;
+    sort?: Maybe<JobSortParameter>;
+    filter?: Maybe<JobFilterParameter>;
+};
+
+export type OrderListOptions = {
+    skip?: Maybe<Scalars['Int']>;
+    take?: Maybe<Scalars['Int']>;
+    sort?: Maybe<OrderSortParameter>;
+    filter?: Maybe<OrderFilterParameter>;
+};
+
+export type PaymentMethodListOptions = {
+    skip?: Maybe<Scalars['Int']>;
+    take?: Maybe<Scalars['Int']>;
+    sort?: Maybe<PaymentMethodSortParameter>;
+    filter?: Maybe<PaymentMethodFilterParameter>;
+};
+
+export type ProductListOptions = {
+    skip?: Maybe<Scalars['Int']>;
+    take?: Maybe<Scalars['Int']>;
+    sort?: Maybe<ProductSortParameter>;
+    filter?: Maybe<ProductFilterParameter>;
+};
+
+export type PromotionListOptions = {
+    skip?: Maybe<Scalars['Int']>;
+    take?: Maybe<Scalars['Int']>;
+    sort?: Maybe<PromotionSortParameter>;
+    filter?: Maybe<PromotionFilterParameter>;
+};
+
+export type RoleListOptions = {
+    skip?: Maybe<Scalars['Int']>;
+    take?: Maybe<Scalars['Int']>;
+    sort?: Maybe<RoleSortParameter>;
+    filter?: Maybe<RoleFilterParameter>;
+};
+
+export type ShippingMethodListOptions = {
+    skip?: Maybe<Scalars['Int']>;
+    take?: Maybe<Scalars['Int']>;
+    sort?: Maybe<ShippingMethodSortParameter>;
+    filter?: Maybe<ShippingMethodFilterParameter>;
+};
+
+export type TaxRateListOptions = {
+    skip?: Maybe<Scalars['Int']>;
+    take?: Maybe<Scalars['Int']>;
+    sort?: Maybe<TaxRateSortParameter>;
+    filter?: Maybe<TaxRateFilterParameter>;
+};
+
+export type ProductVariantListOptions = {
+    skip?: Maybe<Scalars['Int']>;
+    take?: Maybe<Scalars['Int']>;
+    sort?: Maybe<ProductVariantSortParameter>;
+    filter?: Maybe<ProductVariantFilterParameter>;
+};
+
+export type HistoryEntryListOptions = {
+    skip?: Maybe<Scalars['Int']>;
+    take?: Maybe<Scalars['Int']>;
+    sort?: Maybe<HistoryEntrySortParameter>;
+    filter?: Maybe<HistoryEntryFilterParameter>;
+};
+
 export type AdministratorFilterParameter = {
     createdAt?: Maybe<DateOperators>;
     updatedAt?: Maybe<DateOperators>;
@@ -3844,6 +3840,10 @@ export type CustomFields = {
     ShippingMethod: Array<CustomFieldConfig>;
 };
 
+export type AuthenticationInput = {
+    native?: Maybe<NativeAuthInput>;
+};
+
 export type NativeAuthInput = {
     username: Scalars['String'];
     password: Scalars['String'];

Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
schema-admin.json


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
schema-shop.json


Einige Dateien werden nicht angezeigt, da zu viele Dateien in diesem Diff geändert wurden.