@reactionary/commercetools 0.6.5 → 0.6.7

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 (31) hide show
  1. package/capabilities/company-registration.capability.js +137 -0
  2. package/capabilities/company.capability.js +306 -0
  3. package/capabilities/employee-invitation.capability.js +398 -0
  4. package/capabilities/employee.capability.js +346 -0
  5. package/capabilities/index.js +3 -0
  6. package/capabilities/profile.capability.js +10 -0
  7. package/core/capability-descriptors.js +65 -1
  8. package/core/client.js +2 -2
  9. package/factories/checkout/checkout.factory.js +6 -1
  10. package/factories/company/company.factory.js +80 -0
  11. package/factories/company-registration/company-registration.factory.js +36 -0
  12. package/factories/employee/employee.factory.js +61 -0
  13. package/factories/employee-invitation/employee-invitation.factory.js +61 -0
  14. package/index.js +8 -0
  15. package/package.json +2 -2
  16. package/schema/capabilities.schema.js +4 -0
  17. package/schema/commercetools.schema.js +18 -1
  18. package/src/capabilities/company-registration.capability.d.ts +21 -0
  19. package/src/capabilities/company.capability.d.ts +30 -0
  20. package/src/capabilities/employee-invitation.capability.d.ts +34 -0
  21. package/src/capabilities/employee.capability.d.ts +33 -0
  22. package/src/capabilities/index.d.ts +3 -0
  23. package/src/core/capability-descriptors.d.ts +1 -1
  24. package/src/core/initialize.types.d.ts +20 -0
  25. package/src/factories/company/company.factory.d.ts +25 -0
  26. package/src/factories/company-registration/company-registration.factory.d.ts +25 -0
  27. package/src/factories/employee/employee.factory.d.ts +22 -0
  28. package/src/factories/employee-invitation/employee-invitation.factory.d.ts +94 -0
  29. package/src/index.d.ts +8 -0
  30. package/src/schema/capabilities.schema.d.ts +24 -1
  31. package/src/schema/commercetools.schema.d.ts +57 -0
@@ -0,0 +1,61 @@
1
+ import {
2
+ EmployeeInvitationPaginatedListSchema,
3
+ EmployeeInvitationSchema,
4
+ EmployeeIssuedInvitationSchema
5
+ } from "@reactionary/core";
6
+ const COMMERCERTOOLS_CUSTOM_OBJECT_CONTAINER_EMPLOYEE_INVITATIONS = "reactionary-employee-invitation";
7
+ const COMMERCERTOOLS_CUSTOM_OBJECT_CONTAINER_EMPLOYEE_INVITATIONS_INDEX = "reactionary-employee-invitation-index";
8
+ class CommercetoolsEmployeeInvitationFactory {
9
+ employeeInvitationSchema = EmployeeInvitationSchema;
10
+ employeeIssuedInvitationSchema = EmployeeIssuedInvitationSchema;
11
+ employeeInvitationPaginatedListSchema = EmployeeInvitationPaginatedListSchema;
12
+ parseEmployeeInvitation(context, data, payload) {
13
+ const result = {
14
+ identifier: {
15
+ key: data.key
16
+ },
17
+ company: data.value.company,
18
+ status: data.value.status,
19
+ email: data.value.email,
20
+ role: data.value.role,
21
+ validUntil: data.value.validUntil
22
+ };
23
+ return EmployeeInvitationSchema.parse(result);
24
+ }
25
+ parseEmployeeIssuedInvitation(context, data, payload) {
26
+ const invitation = this.parseEmployeeInvitation(context, data.invite, payload);
27
+ const result = {
28
+ ...invitation,
29
+ securityToken: data.securityToken
30
+ };
31
+ return EmployeeIssuedInvitationSchema.parse(result);
32
+ }
33
+ parseEmployeeInvitationPaginatedList(context, data, query) {
34
+ const totalPages = query.search.paginationOptions.pageSize > 0 ? Math.ceil(data.length / query.search.paginationOptions.pageSize) : 0;
35
+ const result = {
36
+ identifier: query.search,
37
+ pageNumber: query.search.paginationOptions.pageNumber,
38
+ pageSize: query.search.paginationOptions.pageSize,
39
+ totalCount: data.length,
40
+ totalPages,
41
+ items: data.map((invitation) => this.parseEmployeeInvitation(context, invitation))
42
+ };
43
+ return EmployeeInvitationPaginatedListSchema.parse(result);
44
+ }
45
+ mapRole(role) {
46
+ switch (role) {
47
+ case "admin":
48
+ return "buyer-admin";
49
+ case "manager":
50
+ return "buyer-approver";
51
+ case "employee":
52
+ return "buyer";
53
+ }
54
+ return "buyer";
55
+ }
56
+ }
57
+ export {
58
+ COMMERCERTOOLS_CUSTOM_OBJECT_CONTAINER_EMPLOYEE_INVITATIONS,
59
+ COMMERCERTOOLS_CUSTOM_OBJECT_CONTAINER_EMPLOYEE_INVITATIONS_INDEX,
60
+ CommercetoolsEmployeeInvitationFactory
61
+ };
package/index.js CHANGED
@@ -9,6 +9,10 @@ export * from "./capabilities/product-associations.capability.js";
9
9
  export * from "./capabilities/product.capability.js";
10
10
  export * from "./capabilities/product-reviews.capability.js";
11
11
  export * from "./capabilities/product-search.capability.js";
12
+ export * from "./capabilities/company-registration.capability.js";
13
+ export * from "./capabilities/company.capability.js";
14
+ export * from "./capabilities/employee.capability.js";
15
+ export * from "./capabilities/employee-invitation.capability.js";
12
16
  export * from "./factories/product/product.factory.js";
13
17
  export * from "./factories/checkout/checkout.factory.js";
14
18
  export * from "./factories/product-search/product-search.factory.js";
@@ -24,5 +28,9 @@ export * from "./factories/product-associations/product-associations.factory.js"
24
28
  export * from "./factories/product-reviews/product-reviews.factory.js";
25
29
  export * from "./factories/product-list/product-list.factory.js";
26
30
  export * from "./factories/identity/identity.factory.js";
31
+ export * from "./factories/company-registration/company-registration.factory.js";
32
+ export * from "./factories/company/company.factory.js";
33
+ export * from "./factories/employee/employee.factory.js";
34
+ export * from "./factories/employee-invitation/employee-invitation.factory.js";
27
35
  export * from "./schema/capabilities.schema.js";
28
36
  export * from "./schema/configuration.schema.js";
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@reactionary/commercetools",
3
- "version": "0.6.5",
3
+ "version": "0.6.7",
4
4
  "type": "module",
5
5
  "main": "./index.js",
6
6
  "types": "./src/index.d.ts",
7
7
  "dependencies": {
8
8
  "vitest": "^4.0.9",
9
9
  "@nx/vite": "22.4.5",
10
- "@reactionary/core": "0.6.5",
10
+ "@reactionary/core": "0.6.7",
11
11
  "zod": "4.1.9",
12
12
  "@commercetools/ts-client": "^4.9.1",
13
13
  "@commercetools/platform-sdk": "^8.25.0",
@@ -38,6 +38,10 @@ const CommercetoolsCapabilitiesSchema = CapabilitiesSchema.pick({
38
38
  category: EnabledCapabilitySchema.optional(),
39
39
  store: EnabledCapabilitySchema.optional(),
40
40
  profile: EnabledCapabilitySchema.optional(),
41
+ companyRegistration: EnabledCapabilitySchema.optional(),
42
+ company: EnabledCapabilitySchema.optional(),
43
+ employee: EnabledCapabilitySchema.optional(),
44
+ employeeInvitation: EnabledCapabilitySchema.optional(),
41
45
  product: OverridableCapabilitySchema.optional(),
42
46
  checkout: OverridableCapabilitySchema.optional()
43
47
  }).partial();
@@ -1,4 +1,4 @@
1
- import { BaseModelSchema, CartIdentifierSchema, CategoryIdentifierSchema, CheckoutIdentifierSchema, OrderIdentifierSchema } from "@reactionary/core";
1
+ import { BaseModelSchema, CartIdentifierSchema, CheckoutIdentifierSchema, OrderIdentifierSchema, EmployeeInvitationSchema } from "@reactionary/core";
2
2
  import * as z from "zod";
3
3
  const CommercetoolsCartIdentifierSchema = CartIdentifierSchema.extend({
4
4
  version: z.number().default(0)
@@ -20,10 +20,27 @@ const CommercetoolsCategoryLookupSchema = BaseModelSchema.extend({
20
20
  key: z.string().optional(),
21
21
  name: z.record(z.string(), z.string())
22
22
  });
23
+ const CommercetoolsEmployeeInviteCustomObjectValueSchema = EmployeeInvitationSchema.omit({ identifier: true }).extend({
24
+ tokenHash: z.string(),
25
+ invitedBy: z.string(),
26
+ invitedDate: z.string(),
27
+ acceptedBy: z.string().optional(),
28
+ acceptedDate: z.string().optional(),
29
+ lastUpdatedBy: z.string(),
30
+ lastUpdatedDate: z.string()
31
+ });
32
+ const CommercetoolsEmployeeInviteCustomObjectSchema = z.looseObject({
33
+ key: z.string().meta({ description: "The unique identifier for the employee invitation." }),
34
+ value: CommercetoolsEmployeeInviteCustomObjectValueSchema,
35
+ container: z.string().meta({ description: "The container for the custom object. This is used to group related custom objects together and can be used as a namespace to avoid key collisions." }),
36
+ version: z.number().default(0)
37
+ });
23
38
  export {
24
39
  CommercetoolsCartIdentifierSchema,
25
40
  CommercetoolsCategoryLookupSchema,
26
41
  CommercetoolsCheckoutIdentifierSchema,
42
+ CommercetoolsEmployeeInviteCustomObjectSchema,
43
+ CommercetoolsEmployeeInviteCustomObjectValueSchema,
27
44
  CommercetoolsOrderIdentifierSchema,
28
45
  CommercetoolsResolveCategoryQueryByIdSchema,
29
46
  CommercetoolsResolveCategoryQueryByKeySchema
@@ -0,0 +1,21 @@
1
+ import type { MyCompanyDraft } from '@commercetools/platform-sdk';
2
+ import type { Cache, CompanyRegistrationFactory, CompanyRegistrationFactoryWithOutput, CompanyRegistrationMutationRegister, CompanyRegistrationQueryCheckRegistrationStatus, CompanyRegistrationRequest, RequestContext, Result } from '@reactionary/core';
3
+ import { CompanyRegistrationCapability } from '@reactionary/core';
4
+ import type { CommercetoolsAPI } from '../core/client.js';
5
+ import type { CommercetoolsCompanyRegistrationFactory } from '../factories/company-registration/company-registration.factory.js';
6
+ import type { CommercetoolsConfiguration } from '../schema/configuration.schema.js';
7
+ export declare class CommercetoolsCompanyRegistrationCapability<TFactory extends CompanyRegistrationFactory = CommercetoolsCompanyRegistrationFactory> extends CompanyRegistrationCapability {
8
+ protected config: CommercetoolsConfiguration;
9
+ protected commercetools: CommercetoolsAPI;
10
+ protected factory: CompanyRegistrationFactoryWithOutput<TFactory>;
11
+ constructor(config: CommercetoolsConfiguration, cache: Cache, context: RequestContext, commercetools: CommercetoolsAPI, factory: CompanyRegistrationFactoryWithOutput<TFactory>);
12
+ protected getClient(): Promise<import("@commercetools/platform-sdk").ByProjectKeyMeRequestBuilder>;
13
+ /**
14
+ * Extension point.
15
+ * @param payload
16
+ * @returns
17
+ */
18
+ protected requestRegistrationPayload(payload: CompanyRegistrationMutationRegister): MyCompanyDraft;
19
+ requestRegistration(payload: CompanyRegistrationMutationRegister): Promise<Result<CompanyRegistrationRequest>>;
20
+ checkRequestStatus(payload: CompanyRegistrationQueryCheckRegistrationStatus): Promise<Result<CompanyRegistrationRequest>>;
21
+ }
@@ -0,0 +1,30 @@
1
+ import type { BusinessUnit, MyBusinessUnitUpdateAction, Address as CTAddress } from '@commercetools/platform-sdk';
2
+ import type { Cache, CompanyFactory, CompanyFactoryWithOutput, NotFoundError, Company, CompanyMutationAddShippingAddress, CompanyMutationMakeShippingAddressDefault, CompanyMutationRemoveShippingAddress, CompanyMutationUpdateShippingAddress, CompanyQueryById, RequestContext, Result, Address, CompanyPaginatedList, CompanyQueryList } from '@reactionary/core';
3
+ import { CompanyCapability } from '@reactionary/core';
4
+ import type { CommercetoolsAPI } from '../core/client.js';
5
+ import type { CommercetoolsCompanyFactory } from '../factories/company/company.factory.js';
6
+ import type { CommercetoolsConfiguration } from '../schema/configuration.schema.js';
7
+ export declare class CommercetoolsCompanyCapability<TFactory extends CompanyFactory = CommercetoolsCompanyFactory> extends CompanyCapability {
8
+ protected config: CommercetoolsConfiguration;
9
+ protected commercetools: CommercetoolsAPI;
10
+ protected factory: CompanyFactoryWithOutput<TFactory>;
11
+ constructor(config: CommercetoolsConfiguration, cache: Cache, context: RequestContext, commercetools: CommercetoolsAPI, factory: CompanyFactoryWithOutput<TFactory>);
12
+ protected getClient(): Promise<import("@commercetools/platform-sdk").ByProjectKeyMeRequestBuilder>;
13
+ protected createCTAddressDraft(address: Address): CTAddress;
14
+ protected getBusinessUnit(key: string): Promise<BusinessUnit | null>;
15
+ protected updateBusinessUnit(key: string, version: number, actions: MyBusinessUnitUpdateAction[]): Promise<BusinessUnit>;
16
+ getById(payload: CompanyQueryById): Promise<Result<Company>>;
17
+ protected addShippingAddressPayload(payload: CompanyMutationAddShippingAddress): MyBusinessUnitUpdateAction[];
18
+ addShippingAddress(payload: CompanyMutationAddShippingAddress): Promise<Result<Company, NotFoundError>>;
19
+ protected updateShippingAddressPayload(payload: CompanyMutationUpdateShippingAddress, businessUnit: BusinessUnit): MyBusinessUnitUpdateAction[] | undefined;
20
+ updateShippingAddress(payload: CompanyMutationUpdateShippingAddress): Promise<Result<Company, NotFoundError>>;
21
+ protected removeShippingAddressPayload(payload: CompanyMutationRemoveShippingAddress, businessUnit: BusinessUnit): MyBusinessUnitUpdateAction[] | undefined;
22
+ removeShippingAddress(payload: CompanyMutationRemoveShippingAddress): Promise<Result<Company, NotFoundError>>;
23
+ protected makeShippingAddressDefaultPayload(payload: CompanyMutationMakeShippingAddressDefault, businessUnit: BusinessUnit): MyBusinessUnitUpdateAction[] | undefined;
24
+ makeShippingAddressDefault(payload: CompanyMutationMakeShippingAddressDefault): Promise<Result<Company, NotFoundError>>;
25
+ protected listCompaniesPayload(payload: CompanyQueryList): {
26
+ limit: number;
27
+ offset: number;
28
+ };
29
+ listCompanies(payload: CompanyQueryList): Promise<Result<CompanyPaginatedList>>;
30
+ }
@@ -0,0 +1,34 @@
1
+ import type { Associate, BusinessUnit, ByProjectKeyRequestBuilder, CustomObjectDraft } from '@commercetools/platform-sdk';
2
+ import type { Cache, EmployeeInvitationFactory, EmployeeInvitationFactoryWithOutput, NotFoundError, EmployeeInvitation, EmployeeInvitationQueryList, EmployeeInvitationStatus, EmployeeIssuedInvitation, EmployeeInvitationPaginatedList, EmployeeInvitationMutationAcceptInvitation, EmployeeInvitationMutationInviteEmployee, EmployeeInvitationMutationRevokeInvitation, CompanyIdentifier, PaginationOptions, RequestContext, Result } from '@reactionary/core';
3
+ import { EmployeeInvitationCapability } from '@reactionary/core';
4
+ import type { CommercetoolsAPI } from '../core/client.js';
5
+ import { type CommercetoolsEmployeeInvitationFactory } from '../factories/employee-invitation/employee-invitation.factory.js';
6
+ import type { CommercetoolsEmployeeInviteCustomObject } from '../schema/commercetools.schema.js';
7
+ import type { CommercetoolsConfiguration } from '../schema/configuration.schema.js';
8
+ export declare class CommercetoolsEmployeeInvitationCapability<TFactory extends EmployeeInvitationFactory = CommercetoolsEmployeeInvitationFactory> extends EmployeeInvitationCapability {
9
+ protected config: CommercetoolsConfiguration;
10
+ protected commercetools: CommercetoolsAPI;
11
+ protected factory: EmployeeInvitationFactoryWithOutput<TFactory>;
12
+ constructor(config: CommercetoolsConfiguration, cache: Cache, context: RequestContext, commercetools: CommercetoolsAPI, factory: EmployeeInvitationFactoryWithOutput<TFactory>);
13
+ protected getClient(): Promise<import("@commercetools/platform-sdk").ByProjectKeyAsAssociateByAssociateIdRequestBuilder>;
14
+ protected getBusinessUnit(key: string, extraExpands?: string[]): Promise<BusinessUnit | null>;
15
+ protected findAssociateByEmail(businessUnit: BusinessUnit, email: string): Associate | undefined;
16
+ protected getAdminClient(): Promise<ByProjectKeyRequestBuilder>;
17
+ protected makeKeyFromCompanyIdentifier(companyIdentifier: CompanyIdentifier): string;
18
+ protected makeKeyFromEmail(email: string): string;
19
+ protected fetchInvitationIdsByKey(adminClient: ByProjectKeyRequestBuilder, key: string): Promise<string[]>;
20
+ protected addInvitationToEntityIndex(adminClient: ByProjectKeyRequestBuilder, indexKey: string, invitationId: string): Promise<void>;
21
+ protected addInvitationToEmailIndex(adminClient: ByProjectKeyRequestBuilder, email: string, invitationId: string): Promise<void>;
22
+ protected addInvitationToCompanyIndex(adminClient: ByProjectKeyRequestBuilder, companyIdentifier: CompanyIdentifier, invitationId: string): Promise<void>;
23
+ protected updateInvitationStatus(adminClient: ByProjectKeyRequestBuilder, invitationKey: string, invitation: CommercetoolsEmployeeInviteCustomObject, newStatus: EmployeeInvitationStatus): Promise<void>;
24
+ protected fetchInvitations(adminClient: ByProjectKeyRequestBuilder, indexKey: string, onlyActive: boolean, paginationOptions?: PaginationOptions): Promise<CommercetoolsEmployeeInviteCustomObject[]>;
25
+ protected fetchAllInvitationsForCompany(adminClient: ByProjectKeyRequestBuilder, companyIdentifier: CompanyIdentifier, onlyActive: boolean, paginationOptions?: PaginationOptions): Promise<CommercetoolsEmployeeInviteCustomObject[]>;
26
+ protected fetchAllInvitationsForUser(adminClient: ByProjectKeyRequestBuilder, userEmail: string, onlyActive: boolean, paginationOptions?: PaginationOptions): Promise<CommercetoolsEmployeeInviteCustomObject[]>;
27
+ protected fetchInvitationByKey(adminClient: ByProjectKeyRequestBuilder, invitationKey: string): Promise<CommercetoolsEmployeeInviteCustomObject | null>;
28
+ protected inviteEmployeePayload(payload: EmployeeInvitationMutationInviteEmployee, tokenHash: string): CustomObjectDraft;
29
+ protected createTokenHash(rawToken: string): Promise<string>;
30
+ inviteEmployee(payload: EmployeeInvitationMutationInviteEmployee): Promise<Result<EmployeeIssuedInvitation>>;
31
+ acceptInvitation(payload: EmployeeInvitationMutationAcceptInvitation): Promise<Result<EmployeeInvitation>>;
32
+ revokeInvitation(payload: EmployeeInvitationMutationRevokeInvitation): Promise<Result<void, NotFoundError>>;
33
+ listInvitations(payload: EmployeeInvitationQueryList): Promise<Result<EmployeeInvitationPaginatedList>>;
34
+ }
@@ -0,0 +1,33 @@
1
+ import type { Associate, BusinessUnit, MyBusinessUnitUpdateAction } from '@commercetools/platform-sdk';
2
+ import type { Cache, EmployeeFactory, EmployeeFactoryWithOutput, EmployeeMutationAssignRole, EmployeeMutationRemoveEmployee, EmployeeMutationUnassignRole, EmployeeQueryByEmail, EmployeeQueryList, NotFoundError, Employee, EmployeePaginatedList, RequestContext, Result } from '@reactionary/core';
3
+ import { EmployeeCapability } from '@reactionary/core';
4
+ import type { CommercetoolsAPI } from '../core/client.js';
5
+ import { type CommercetoolsEmployeeFactory } from '../factories/employee/employee.factory.js';
6
+ import type { CommercetoolsConfiguration } from '../schema/configuration.schema.js';
7
+ export declare class CommercetoolsEmployeeCapability<TFactory extends EmployeeFactory = CommercetoolsEmployeeFactory> extends EmployeeCapability {
8
+ protected config: CommercetoolsConfiguration;
9
+ protected commercetools: CommercetoolsAPI;
10
+ protected factory: EmployeeFactoryWithOutput<TFactory>;
11
+ constructor(config: CommercetoolsConfiguration, cache: Cache, context: RequestContext, commercetools: CommercetoolsAPI, factory: EmployeeFactoryWithOutput<TFactory>);
12
+ protected getClient(): Promise<import("@commercetools/platform-sdk").ByProjectKeyAsAssociateByAssociateIdRequestBuilder>;
13
+ protected getAdminClient(): Promise<import("@commercetools/platform-sdk").ByProjectKeyRequestBuilder>;
14
+ getBusinessUnit(key: string, extraExpands?: string[]): Promise<BusinessUnit | null>;
15
+ protected updateBusinessUnit(key: string, version: number, actions: MyBusinessUnitUpdateAction[]): Promise<BusinessUnit>;
16
+ protected getAssociateRole(associate: Associate): string | undefined;
17
+ protected getRoles(associate: Associate): string[];
18
+ protected findAssociateByCustomerId(businessUnit: BusinessUnit, customerId: string): Associate | undefined;
19
+ findAssociateByEmail(businessUnit: BusinessUnit, email: string): Associate | undefined;
20
+ listEmployees(payload: EmployeeQueryList): Promise<Result<EmployeePaginatedList>>;
21
+ getByEmail(payload: EmployeeQueryByEmail): Promise<Result<Employee>>;
22
+ protected assignRolePayload(payload: EmployeeMutationAssignRole): MyBusinessUnitUpdateAction[];
23
+ assignRole(payload: EmployeeMutationAssignRole): Promise<Result<Employee, NotFoundError>>;
24
+ /**
25
+ * The CT role assigned when you have no other roles in the org
26
+ * @returns
27
+ */
28
+ protected getDefaultRole(): string;
29
+ protected unassignRolePayload(payload: EmployeeMutationUnassignRole, associate: Associate): MyBusinessUnitUpdateAction[];
30
+ unassignRole(payload: EmployeeMutationUnassignRole): Promise<Result<Employee, NotFoundError>>;
31
+ protected removeEmployeePayload(payload: EmployeeMutationRemoveEmployee): MyBusinessUnitUpdateAction[];
32
+ removeEmployee(payload: EmployeeMutationRemoveEmployee): Promise<Result<void, NotFoundError>>;
33
+ }
@@ -13,3 +13,6 @@ export * from './product-search.capability.js';
13
13
  export * from './store.capability.js';
14
14
  export * from './order.capability.js';
15
15
  export * from './checkout.capability.js';
16
+ export * from './company-registration.capability.js';
17
+ export * from './company.capability.js';
18
+ export * from './employee.capability.js';
@@ -1,6 +1,6 @@
1
1
  import type * as z from 'zod';
2
2
  import { type CommercetoolsCapabilities, type CommercetoolsCapabilitiesSchema } from '../schema/capabilities.schema.js';
3
- export declare const capabilityKeys: readonly ["product", "profile", "productSearch", "productAssociations", "productList", "productReviews", "identity", "cart", "inventory", "price", "category", "checkout", "store", "order", "orderSearch"];
3
+ export declare const capabilityKeys: readonly ["product", "profile", "productSearch", "productAssociations", "productList", "productReviews", "identity", "cart", "inventory", "price", "category", "checkout", "store", "order", "orderSearch", "companyRegistration", "company", "employee", "employeeInvitation"];
4
4
  export type OverridableCapabilityKey = (typeof capabilityKeys)[number];
5
5
  type ParsedCapabilities = z.infer<typeof CommercetoolsCapabilitiesSchema>;
6
6
  export type CapabilityDescriptor = {
@@ -16,6 +16,10 @@ import type { CommercetoolsProductReviewsFactory } from '../factories/product-re
16
16
  import type { CommercetoolsProductSearchFactory } from '../factories/product-search/product-search.factory.js';
17
17
  import type { CommercetoolsProfileFactory } from '../factories/profile/profile.factory.js';
18
18
  import type { CommercetoolsStoreFactory } from '../factories/store/store.factory.js';
19
+ import type { CommercetoolsCompanyRegistrationFactory } from '../factories/company-registration/company-registration.factory.js';
20
+ import type { CommercetoolsCompanyFactory } from '../factories/company/company.factory.js';
21
+ import type { CommercetoolsEmployeeFactory } from '../factories/employee/employee.factory.js';
22
+ import type { CommercetoolsEmployeeInvitationFactory } from '../factories/employee-invitation/employee-invitation.factory.js';
19
23
  import type { CommercetoolsCartCapability } from '../capabilities/cart.capability.js';
20
24
  import type { CommercetoolsCategoryCapability } from '../capabilities/category.capability.js';
21
25
  import type { CommercetoolsCheckoutCapability } from '../capabilities/checkout.capability.js';
@@ -31,6 +35,10 @@ import type { CommercetoolsProductReviewsCapability } from '../capabilities/prod
31
35
  import type { CommercetoolsProductSearchCapability } from '../capabilities/product-search.capability.js';
32
36
  import type { CommercetoolsProfileCapability } from '../capabilities/profile.capability.js';
33
37
  import type { CommercetoolsStoreCapability } from '../capabilities/store.capability.js';
38
+ import type { CommercetoolsCompanyRegistrationCapability } from '../capabilities/company-registration.capability.js';
39
+ import type { CommercetoolsCompanyCapability } from '../capabilities/company.capability.js';
40
+ import type { CommercetoolsEmployeeCapability } from '../capabilities/employee.capability.js';
41
+ import type { CommercetoolsEmployeeInvitationCapability } from '../capabilities/employee-invitation.capability.js';
34
42
  type EnabledCapability<TCapability> = TCapability extends {
35
43
  enabled: true;
36
44
  } ? true : false;
@@ -61,6 +69,10 @@ type FactoryContractMap = {
61
69
  category: CategoryFactory;
62
70
  store: StoreFactory;
63
71
  profile: ProfileFactory;
72
+ companyRegistration: CommercetoolsCompanyRegistrationFactory;
73
+ company: CommercetoolsCompanyFactory;
74
+ employee: CommercetoolsEmployeeFactory;
75
+ employeeInvitation: CommercetoolsEmployeeInvitationFactory;
64
76
  };
65
77
  type DefaultFactoryMap = {
66
78
  product: CommercetoolsProductFactory;
@@ -78,6 +90,10 @@ type DefaultFactoryMap = {
78
90
  category: CommercetoolsCategoryFactory;
79
91
  store: CommercetoolsStoreFactory;
80
92
  profile: CommercetoolsProfileFactory;
93
+ companyRegistration: CommercetoolsCompanyRegistrationFactory;
94
+ company: CommercetoolsCompanyFactory;
95
+ employee: CommercetoolsEmployeeFactory;
96
+ employeeInvitation: CommercetoolsEmployeeInvitationFactory;
81
97
  };
82
98
  type ResolvedFactoryMap<T extends CommercetoolsCapabilities> = {
83
99
  [K in OverridableCapabilityKey]: ExtractCapabilityFactory<T[K], FactoryContractMap[K], DefaultFactoryMap[K]>;
@@ -98,6 +114,10 @@ type DefaultCapabilityMap<T extends CommercetoolsCapabilities> = {
98
114
  category: CommercetoolsCategoryCapability<ResolvedFactoryMap<T>['category']>;
99
115
  store: CommercetoolsStoreCapability<ResolvedFactoryMap<T>['store']>;
100
116
  profile: CommercetoolsProfileCapability<ResolvedFactoryMap<T>['profile']>;
117
+ companyRegistration: CommercetoolsCompanyRegistrationCapability;
118
+ company: CommercetoolsCompanyCapability;
119
+ employee: CommercetoolsEmployeeCapability;
120
+ employeeInvitation: CommercetoolsEmployeeInvitationCapability;
101
121
  };
102
122
  type CapabilityImplementationMap<T extends CommercetoolsCapabilities> = {
103
123
  [K in OverridableCapabilityKey]: ExtractCapabilityImplementation<T[K], DefaultCapabilityMap<T>[K]>;
@@ -0,0 +1,25 @@
1
+ import type { BusinessUnit, BusinessUnitPagedQueryResponse, Address as CTAddress } from '@commercetools/platform-sdk';
2
+ import type { CompanyPaginatedListSchema, CompanySchema } from '@reactionary/core';
3
+ import { type AnyCompanyPaginatedListSchema, type AnyCompanySchema, type CompanyFactory, type CompanyQueryList, type RequestContext } from '@reactionary/core';
4
+ import type * as z from 'zod';
5
+ export declare class CommercetoolsCompanyFactory<TCompanySchema extends AnyCompanySchema = typeof CompanySchema, TCompanyPaginatedListSchema extends AnyCompanyPaginatedListSchema = typeof CompanyPaginatedListSchema> implements CompanyFactory<TCompanySchema, TCompanyPaginatedListSchema> {
6
+ readonly companySchema: TCompanySchema;
7
+ readonly companyPaginatedListSchema: TCompanyPaginatedListSchema;
8
+ constructor(companySchema: TCompanySchema, companyPaginatedListSchema: TCompanyPaginatedListSchema);
9
+ parseCompanyPaginatedList(context: RequestContext, data: BusinessUnitPagedQueryResponse, payload: CompanyQueryList): z.output<TCompanyPaginatedListSchema>;
10
+ parseCompany(_context: RequestContext, data: BusinessUnit): z.output<TCompanySchema>;
11
+ protected mapBusinessUnitStatus(status: string): 'active' | 'blocked';
12
+ protected parseAddress(address: CTAddress): {
13
+ identifier: {
14
+ nickName: string;
15
+ };
16
+ firstName: string;
17
+ lastName: string;
18
+ streetAddress: string;
19
+ streetNumber: string;
20
+ city: string;
21
+ region: string;
22
+ postalCode: string;
23
+ countryCode: string;
24
+ };
25
+ }
@@ -0,0 +1,25 @@
1
+ import type { BusinessUnit } from '@commercetools/platform-sdk';
2
+ import type { CompanyRegistrationFactory, CompanyRegistrationRequest, CompanyRegistrationRequestApprovalStatus, RequestContext } from '@reactionary/core';
3
+ export declare class CommercetoolsCompanyRegistrationFactory implements CompanyRegistrationFactory {
4
+ companyRegistrationRequestSchema: import("zod").ZodObject<{
5
+ identifier: import("zod").ZodObject<{
6
+ key: import("zod").ZodString;
7
+ }, import("zod/v4/core").$loose>;
8
+ companyIdentifier: import("zod").ZodObject<{
9
+ taxIdentifier: import("zod").ZodString;
10
+ }, import("zod/v4/core").$loose>;
11
+ name: import("zod").ZodString;
12
+ pointOfContact: import("zod").ZodObject<{
13
+ email: import("zod").ZodEmail;
14
+ phone: import("zod").ZodOptional<import("zod").ZodString>;
15
+ }, import("zod/v4/core").$loose>;
16
+ status: import("zod").ZodEnum<{
17
+ pending: "pending";
18
+ approved: "approved";
19
+ denied: "denied";
20
+ }>;
21
+ comment: import("zod").ZodOptional<import("zod").ZodString>;
22
+ }, import("zod/v4/core").$strip>;
23
+ parseCompanyRegistrationRequest(_context: RequestContext, data: BusinessUnit): CompanyRegistrationRequest;
24
+ mapBusinessUnitStatus(status: string): CompanyRegistrationRequestApprovalStatus;
25
+ }
@@ -0,0 +1,22 @@
1
+ import type { Associate } from '@commercetools/platform-sdk';
2
+ import type { EmployeePaginatedListSchema, EmployeeSchema } from '@reactionary/core';
3
+ import { type AnyEmployeePaginatedListSchema, type AnyEmployeeSchema, type CompanyIdentifier, type EmployeeFactory, type EmployeeQueryList, type EmployeeRole, type RequestContext } from '@reactionary/core';
4
+ import type * as z from 'zod';
5
+ type ParseEmployeeInput = {
6
+ company: CompanyIdentifier;
7
+ associate: Associate;
8
+ };
9
+ export type CommercetoolsEmployeeFactoryPaginatedInput = {
10
+ items: Associate[];
11
+ totalCount: number;
12
+ };
13
+ export declare class CommercetoolsEmployeeFactory<TEmployeeSchema extends AnyEmployeeSchema = typeof EmployeeSchema, TEmployeePaginatedListSchema extends AnyEmployeePaginatedListSchema = typeof EmployeePaginatedListSchema> implements EmployeeFactory<TEmployeeSchema, TEmployeePaginatedListSchema> {
14
+ readonly employeeSchema: TEmployeeSchema;
15
+ readonly employeePaginatedListSchema: TEmployeePaginatedListSchema;
16
+ constructor(employeeSchema: TEmployeeSchema, employeePaginatedListSchema: TEmployeePaginatedListSchema);
17
+ parseEmployee(_context: RequestContext, input: ParseEmployeeInput): z.output<TEmployeeSchema>;
18
+ parseEmployeePaginatedList(context: RequestContext, data: CommercetoolsEmployeeFactoryPaginatedInput, query: EmployeeQueryList): z.output<TEmployeePaginatedListSchema>;
19
+ mapRole(role: EmployeeRole): string;
20
+ protected parseRole(role: string | undefined): EmployeeRole;
21
+ }
22
+ export {};
@@ -0,0 +1,94 @@
1
+ import type { EmployeeInvitationFactory, EmployeeInvitation, EmployeeInvitationPaginatedList, EmployeeIssuedInvitation, EmployeeInvitationMutationInviteEmployee, EmployeeInvitationQueryList, EmployeeRole, RequestContext } from '@reactionary/core';
2
+ import type { CommercetoolsEmployeeInviteCustomObject } from '../../schema/commercetools.schema.js';
3
+ export declare const COMMERCERTOOLS_CUSTOM_OBJECT_CONTAINER_EMPLOYEE_INVITATIONS = "reactionary-employee-invitation";
4
+ export declare const COMMERCERTOOLS_CUSTOM_OBJECT_CONTAINER_EMPLOYEE_INVITATIONS_INDEX = "reactionary-employee-invitation-index";
5
+ export type CommercetoolsEmployeeInvitationFactoryIssuedInvitationInput = {
6
+ invite: CommercetoolsEmployeeInviteCustomObject;
7
+ securityToken: string;
8
+ };
9
+ export declare class CommercetoolsEmployeeInvitationFactory implements EmployeeInvitationFactory {
10
+ employeeInvitationSchema: import("zod").ZodObject<{
11
+ identifier: import("zod").ZodObject<{
12
+ key: import("zod").ZodString;
13
+ }, import("zod/v4/core").$loose>;
14
+ company: import("zod").ZodObject<{
15
+ taxIdentifier: import("zod").ZodString;
16
+ }, import("zod/v4/core").$loose>;
17
+ status: import("zod").ZodEnum<{
18
+ invited: "invited";
19
+ accepted: "accepted";
20
+ revoked: "revoked";
21
+ rejected: "rejected";
22
+ }>;
23
+ email: import("zod").ZodEmail;
24
+ role: import("zod").ZodEnum<{
25
+ admin: "admin";
26
+ manager: "manager";
27
+ employee: "employee";
28
+ }>;
29
+ validUntil: import("zod").ZodString;
30
+ }, import("zod/v4/core").$loose>;
31
+ employeeIssuedInvitationSchema: import("zod").ZodObject<{
32
+ identifier: import("zod").ZodObject<{
33
+ key: import("zod").ZodString;
34
+ }, import("zod/v4/core").$loose>;
35
+ company: import("zod").ZodObject<{
36
+ taxIdentifier: import("zod").ZodString;
37
+ }, import("zod/v4/core").$loose>;
38
+ status: import("zod").ZodEnum<{
39
+ invited: "invited";
40
+ accepted: "accepted";
41
+ revoked: "revoked";
42
+ rejected: "rejected";
43
+ }>;
44
+ email: import("zod").ZodEmail;
45
+ role: import("zod").ZodEnum<{
46
+ admin: "admin";
47
+ manager: "manager";
48
+ employee: "employee";
49
+ }>;
50
+ validUntil: import("zod").ZodString;
51
+ securityToken: import("zod").ZodString;
52
+ }, import("zod/v4/core").$loose>;
53
+ employeeInvitationPaginatedListSchema: import("zod").ZodObject<{
54
+ pageNumber: import("zod").ZodNumber;
55
+ pageSize: import("zod").ZodNumber;
56
+ totalCount: import("zod").ZodNumber;
57
+ totalPages: import("zod").ZodNumber;
58
+ items: import("zod").ZodArray<import("zod").ZodObject<{
59
+ identifier: import("zod").ZodObject<{
60
+ key: import("zod").ZodString;
61
+ }, import("zod/v4/core").$loose>;
62
+ company: import("zod").ZodObject<{
63
+ taxIdentifier: import("zod").ZodString;
64
+ }, import("zod/v4/core").$loose>;
65
+ status: import("zod").ZodEnum<{
66
+ invited: "invited";
67
+ accepted: "accepted";
68
+ revoked: "revoked";
69
+ rejected: "rejected";
70
+ }>;
71
+ email: import("zod").ZodEmail;
72
+ role: import("zod").ZodEnum<{
73
+ admin: "admin";
74
+ manager: "manager";
75
+ employee: "employee";
76
+ }>;
77
+ validUntil: import("zod").ZodString;
78
+ }, import("zod/v4/core").$loose>>;
79
+ identifier: import("zod").ZodObject<{
80
+ company: import("zod").ZodOptional<import("zod").ZodObject<{
81
+ taxIdentifier: import("zod").ZodString;
82
+ }, import("zod/v4/core").$loose>>;
83
+ email: import("zod").ZodOptional<import("zod").ZodEmail>;
84
+ paginationOptions: import("zod").ZodObject<{
85
+ pageNumber: import("zod").ZodDefault<import("zod").ZodNumber>;
86
+ pageSize: import("zod").ZodDefault<import("zod").ZodNumber>;
87
+ }, import("zod/v4/core").$loose>;
88
+ }, import("zod/v4/core").$loose>;
89
+ }, import("zod/v4/core").$strip>;
90
+ parseEmployeeInvitation(context: RequestContext, data: CommercetoolsEmployeeInviteCustomObject, payload?: EmployeeInvitationMutationInviteEmployee): EmployeeInvitation;
91
+ parseEmployeeIssuedInvitation(context: RequestContext, data: CommercetoolsEmployeeInvitationFactoryIssuedInvitationInput, payload?: EmployeeInvitationMutationInviteEmployee): EmployeeIssuedInvitation;
92
+ parseEmployeeInvitationPaginatedList(context: RequestContext, data: CommercetoolsEmployeeInviteCustomObject[], query: EmployeeInvitationQueryList): EmployeeInvitationPaginatedList;
93
+ mapRole(role: EmployeeRole): string;
94
+ }
package/src/index.d.ts CHANGED
@@ -9,6 +9,10 @@ export * from './capabilities/product-associations.capability.js';
9
9
  export * from './capabilities/product.capability.js';
10
10
  export * from './capabilities/product-reviews.capability.js';
11
11
  export * from './capabilities/product-search.capability.js';
12
+ export * from './capabilities/company-registration.capability.js';
13
+ export * from './capabilities/company.capability.js';
14
+ export * from './capabilities/employee.capability.js';
15
+ export * from './capabilities/employee-invitation.capability.js';
12
16
  export * from './factories/product/product.factory.js';
13
17
  export * from './factories/checkout/checkout.factory.js';
14
18
  export * from './factories/product-search/product-search.factory.js';
@@ -24,5 +28,9 @@ export * from './factories/product-associations/product-associations.factory.js'
24
28
  export * from './factories/product-reviews/product-reviews.factory.js';
25
29
  export * from './factories/product-list/product-list.factory.js';
26
30
  export * from './factories/identity/identity.factory.js';
31
+ export * from './factories/company-registration/company-registration.factory.js';
32
+ export * from './factories/company/company.factory.js';
33
+ export * from './factories/employee/employee.factory.js';
34
+ export * from './factories/employee-invitation/employee-invitation.factory.js';
27
35
  export * from './schema/capabilities.schema.js';
28
36
  export * from './schema/configuration.schema.js';
@@ -1,6 +1,10 @@
1
- import type { Cache, CartFactory, CartFactoryWithOutput, CartCapability, CategoryFactory, CategoryFactoryWithOutput, CategoryCapability, CheckoutFactory, CheckoutFactoryWithOutput, CheckoutCapability, IdentityFactory, IdentityFactoryWithOutput, IdentityCapability, InventoryFactory, InventoryFactoryWithOutput, InventoryCapability, OrderFactory, OrderFactoryWithOutput, OrderCapability, OrderSearchFactory, OrderSearchFactoryWithOutput, OrderSearchCapability, PriceFactory, PriceFactoryWithOutput, PriceCapability, ProductAssociationsFactory, ProductAssociationsFactoryWithOutput, ProductAssociationsCapability, ProductFactory, ProductFactoryWithOutput, ProductListFactory, ProductListFactoryWithOutput, ProductListCapability, ProductCapability, ProductReviewsFactory, ProductReviewsFactoryWithOutput, ProductReviewsCapability, ProductSearchFactory, ProductSearchFactoryWithOutput, ProductSearchCapability, ProfileFactory, ProfileFactoryWithOutput, ProfileCapability, RequestContext, StoreFactory, StoreFactoryWithOutput, StoreCapability } from '@reactionary/core';
1
+ import type { Cache, CartFactory, CartFactoryWithOutput, CartCapability, CategoryFactory, CategoryFactoryWithOutput, CategoryCapability, CheckoutFactory, CheckoutFactoryWithOutput, CheckoutCapability, IdentityFactory, IdentityFactoryWithOutput, IdentityCapability, InventoryFactory, InventoryFactoryWithOutput, InventoryCapability, OrderFactory, OrderFactoryWithOutput, OrderCapability, OrderSearchFactory, OrderSearchFactoryWithOutput, OrderSearchCapability, PriceFactory, PriceFactoryWithOutput, PriceCapability, ProductAssociationsFactory, ProductAssociationsFactoryWithOutput, ProductAssociationsCapability, ProductFactory, ProductFactoryWithOutput, ProductListFactory, ProductListFactoryWithOutput, ProductListCapability, ProductCapability, ProductReviewsFactory, ProductReviewsFactoryWithOutput, ProductReviewsCapability, ProductSearchFactory, ProductSearchFactoryWithOutput, ProductSearchCapability, ProfileFactory, ProfileFactoryWithOutput, ProfileCapability, RequestContext, StoreFactory, StoreFactoryWithOutput, StoreCapability, CompanyRegistrationCapability, CompanyCapability, EmployeeCapability, EmployeeInvitationCapability } from '@reactionary/core';
2
2
  import type { CommercetoolsAPI } from '../core/client.js';
3
3
  import type { CommercetoolsConfiguration } from './configuration.schema.js';
4
+ import type { CommercetoolsCompanyRegistrationFactory } from '../factories/company-registration/company-registration.factory.js';
5
+ import type { CommercetoolsCompanyFactory } from '../factories/company/company.factory.js';
6
+ import type { CommercetoolsEmployeeFactory } from '../factories/employee/employee.factory.js';
7
+ import type { CommercetoolsEmployeeInvitationFactory } from '../factories/employee-invitation/employee-invitation.factory.js';
4
8
  import * as z from 'zod';
5
9
  export declare const CommercetoolsCapabilitiesSchema: z.ZodObject<{
6
10
  productSearch: z.ZodOptional<z.ZodOptional<z.ZodObject<{
@@ -42,6 +46,18 @@ export declare const CommercetoolsCapabilitiesSchema: z.ZodObject<{
42
46
  profile: z.ZodOptional<z.ZodOptional<z.ZodObject<{
43
47
  enabled: z.ZodBoolean;
44
48
  }, z.core.$loose>>>;
49
+ companyRegistration: z.ZodOptional<z.ZodOptional<z.ZodObject<{
50
+ enabled: z.ZodBoolean;
51
+ }, z.core.$loose>>>;
52
+ company: z.ZodOptional<z.ZodOptional<z.ZodObject<{
53
+ enabled: z.ZodBoolean;
54
+ }, z.core.$loose>>>;
55
+ employee: z.ZodOptional<z.ZodOptional<z.ZodObject<{
56
+ enabled: z.ZodBoolean;
57
+ }, z.core.$loose>>>;
58
+ employeeInvitation: z.ZodOptional<z.ZodOptional<z.ZodObject<{
59
+ enabled: z.ZodBoolean;
60
+ }, z.core.$loose>>>;
45
61
  product: z.ZodOptional<z.ZodOptional<z.ZodObject<{
46
62
  enabled: z.ZodBoolean;
47
63
  factory: z.ZodOptional<z.ZodUnknown>;
@@ -82,6 +98,9 @@ export type CommercetoolsStoreCapabilityConfig = CommercetoolsCapabilityConfig<S
82
98
  export type CommercetoolsProfileCapabilityConfig = CommercetoolsCapabilityConfig<ProfileFactoryWithOutput<ProfileFactory>, ProfileCapability>;
83
99
  export type CommercetoolsOrderCapabilityConfig = CommercetoolsCapabilityConfig<OrderFactoryWithOutput<OrderFactory>, OrderCapability>;
84
100
  export type CommercetoolsOrderSearchCapabilityConfig = CommercetoolsCapabilityConfig<OrderSearchFactoryWithOutput<OrderSearchFactory>, OrderSearchCapability>;
101
+ export type CommercetoolsCompanyRegistrationCapabilityConfig = CommercetoolsCapabilityConfig<CommercetoolsCompanyRegistrationFactory, CompanyRegistrationCapability>;
102
+ export type CommercetoolsCompanyCapabilityConfig = CommercetoolsCapabilityConfig<CommercetoolsCompanyFactory, CompanyCapability>;
103
+ export type CommercetoolsEmployeeCapabilityConfig = CommercetoolsCapabilityConfig<CommercetoolsEmployeeFactory, EmployeeCapability>;
85
104
  export type CommercetoolsCapabilityConfigMap<TProductFactory extends ProductFactory = ProductFactory, TProductCapability extends ProductCapability = ProductCapability, TCheckoutFactory extends CheckoutFactory = CheckoutFactory, TCheckoutCapability extends CheckoutCapability = CheckoutCapability> = {
86
105
  product: EnabledCapabilityConfig<ProductFactoryWithOutput<TProductFactory>, TProductCapability>;
87
106
  checkout: EnabledCapabilityConfig<CheckoutFactoryWithOutput<TCheckoutFactory>, TCheckoutCapability>;
@@ -98,6 +117,10 @@ export type CommercetoolsCapabilityConfigMap<TProductFactory extends ProductFact
98
117
  profile: EnabledCapabilityConfig<ProfileFactoryWithOutput<ProfileFactory>, ProfileCapability>;
99
118
  order: EnabledCapabilityConfig<OrderFactoryWithOutput<OrderFactory>, OrderCapability>;
100
119
  orderSearch: EnabledCapabilityConfig<OrderSearchFactoryWithOutput<OrderSearchFactory>, OrderSearchCapability>;
120
+ companyRegistration: EnabledCapabilityConfig<CommercetoolsCompanyRegistrationFactory, CompanyRegistrationCapability>;
121
+ company: EnabledCapabilityConfig<CommercetoolsCompanyFactory, CompanyCapability>;
122
+ employee: EnabledCapabilityConfig<CommercetoolsEmployeeFactory, EmployeeCapability>;
123
+ employeeInvitation: EnabledCapabilityConfig<CommercetoolsEmployeeInvitationFactory, EmployeeInvitationCapability>;
101
124
  };
102
125
  type CommercetoolsCapabilitiesBase = z.infer<typeof CommercetoolsCapabilitiesSchema>;
103
126
  export type CommercetoolsCapabilities<TProductFactory extends ProductFactory = ProductFactory, TProductCapability extends ProductCapability = ProductCapability, TCheckoutFactory extends CheckoutFactory = CheckoutFactory, TCheckoutCapability extends CheckoutCapability = CheckoutCapability> = Omit<CommercetoolsCapabilitiesBase, keyof CommercetoolsCapabilityConfigMap<TProductFactory, TProductCapability, TCheckoutFactory, TCheckoutCapability>> & Partial<CommercetoolsCapabilityConfigMap<TProductFactory, TProductCapability, TCheckoutFactory, TCheckoutCapability>>;