From 0f20924324c2c293b467525f76ab384dda6536c3 Mon Sep 17 00:00:00 2001 From: griest024 Date: Mon, 13 May 2024 16:15:00 -0400 Subject: [PATCH] feat(navigation)!: standardize magento driver config (#2784) BREAKING CHANGE: `MagentoNavigationDriverConfiguration` -> `MagentoNavigationDriverConfig` --- .../driver/magento/src/config/default.ts | 8 ++++++++ .../driver/magento/src/config/interface.ts | 11 ++++++++++ .../driver/magento/src/config/public_api.ts | 3 +++ .../driver/magento/src/config/token.ts | 18 +++++++++++++++++ .../interfaces/navigation-config.interface.ts | 12 ----------- .../magento/src/navigation-driver.module.ts | 20 +++++++++---------- .../magento/src/navigation.service.spec.ts | 9 ++++----- .../driver/magento/src/navigation.service.ts | 9 ++++++--- .../driver/magento/src/public_api.ts | 10 ++-------- 9 files changed, 62 insertions(+), 38 deletions(-) create mode 100644 libs/navigation/driver/magento/src/config/default.ts create mode 100644 libs/navigation/driver/magento/src/config/interface.ts create mode 100644 libs/navigation/driver/magento/src/config/public_api.ts create mode 100644 libs/navigation/driver/magento/src/config/token.ts delete mode 100644 libs/navigation/driver/magento/src/interfaces/navigation-config.interface.ts diff --git a/libs/navigation/driver/magento/src/config/default.ts b/libs/navigation/driver/magento/src/config/default.ts new file mode 100644 index 0000000000..f47a11dd3b --- /dev/null +++ b/libs/navigation/driver/magento/src/config/default.ts @@ -0,0 +1,8 @@ +import { MagentoNavigationDriverConfig } from './interface'; + +/** + * The default configuration for the {@link MagentoNavigationDriverConfig}. + */ +export const MAGENTO_NAVIGATION_DRIVER_CONFIG_DEFAULT: MagentoNavigationDriverConfig = { + navigationTreeQueryDepth: 3, +}; diff --git a/libs/navigation/driver/magento/src/config/interface.ts b/libs/navigation/driver/magento/src/config/interface.ts new file mode 100644 index 0000000000..2f8e687d09 --- /dev/null +++ b/libs/navigation/driver/magento/src/config/interface.ts @@ -0,0 +1,11 @@ + +/** + * An interface for providing @daffodil/search/state with necessary config values. + */ +export interface MagentoNavigationDriverConfig { + /** + * The maximum depth of category children that the navigation driver will query. + * Defaults to 3. + */ + navigationTreeQueryDepth: number; +} diff --git a/libs/navigation/driver/magento/src/config/public_api.ts b/libs/navigation/driver/magento/src/config/public_api.ts new file mode 100644 index 0000000000..7835eb146a --- /dev/null +++ b/libs/navigation/driver/magento/src/config/public_api.ts @@ -0,0 +1,3 @@ +export { MAGENTO_NAVIGATION_DRIVER_CONFIG_DEFAULT } from './default'; +export { MagentoNavigationDriverConfig } from './interface'; +export * from './token'; diff --git a/libs/navigation/driver/magento/src/config/token.ts b/libs/navigation/driver/magento/src/config/token.ts new file mode 100644 index 0000000000..91366c4ece --- /dev/null +++ b/libs/navigation/driver/magento/src/config/token.ts @@ -0,0 +1,18 @@ +import { createConfigInjectionToken } from '@daffodil/core'; + +import { MAGENTO_NAVIGATION_DRIVER_CONFIG_DEFAULT } from './default'; +import { MagentoNavigationDriverConfig } from './interface'; + +export const { + /** + * The token used to provide @daffodil/navigation/driver/magento config data. + */ + token: MAGENTO_NAVIGATION_DRIVER_CONFIG, + /** + * Provider function for {@link MAGENTO_NAVIGATION_DRIVER_CONFIG}. + */ + provider: provideMagentoNavigationDriverConfig, +} = createConfigInjectionToken( + MAGENTO_NAVIGATION_DRIVER_CONFIG_DEFAULT, + 'MAGENTO_NAVIGATION_DRIVER_CONFIG', +); diff --git a/libs/navigation/driver/magento/src/interfaces/navigation-config.interface.ts b/libs/navigation/driver/magento/src/interfaces/navigation-config.interface.ts deleted file mode 100644 index 3d66b00f43..0000000000 --- a/libs/navigation/driver/magento/src/interfaces/navigation-config.interface.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { InjectionToken } from '@angular/core'; - -/** - * The maximum depth of category children that the navigation driver will query. - * Defaults to 3. - */ -export const MAGENTO_NAVIGATION_TREE_QUERY_DEPTH = - new InjectionToken('MAGENTO_NAVIGATION_TREE_QUERY_DEPTH', { factory: () => 3 }); - -export interface MagentoNavigationDriverConfiguration { - navigationTreeQueryDepth: number; -} diff --git a/libs/navigation/driver/magento/src/navigation-driver.module.ts b/libs/navigation/driver/magento/src/navigation-driver.module.ts index b0edf18ea5..dc60bd8db8 100644 --- a/libs/navigation/driver/magento/src/navigation-driver.module.ts +++ b/libs/navigation/driver/magento/src/navigation-driver.module.ts @@ -11,24 +11,21 @@ import { } from '@daffodil/navigation/driver'; import { - MagentoNavigationDriverConfiguration, - MAGENTO_NAVIGATION_TREE_QUERY_DEPTH, -} from './interfaces/navigation-config.interface'; + MagentoNavigationDriverConfig, + MAGENTO_NAVIGATION_DRIVER_CONFIG_DEFAULT, + MAGENTO_NAVIGATION_DRIVER_CONFIG, +} from './config/public_api'; import { DaffMagentoNavigationService } from './navigation.service'; import { DAFF_MAGENTO_GET_CATEGORY_TREE_QUERY_NAME } from './queries/get-category-tree'; import { DaffMagentoNavigationTransformerService } from './transformers/navigation-transformer'; -export const MAGENTO_NAVIGATION_DEFAULT_CONFIGURATION: MagentoNavigationDriverConfiguration = { - navigationTreeQueryDepth: 3, -}; - @NgModule({ imports: [ CommonModule, ], }) export class DaffNavigationMagentoDriverModule { - static forRoot(config: MagentoNavigationDriverConfiguration = MAGENTO_NAVIGATION_DEFAULT_CONFIGURATION): ModuleWithProviders { + static forRoot(config: MagentoNavigationDriverConfig = MAGENTO_NAVIGATION_DRIVER_CONFIG_DEFAULT): ModuleWithProviders { return { ngModule: DaffNavigationMagentoDriverModule, providers: [ @@ -41,8 +38,11 @@ export class DaffNavigationMagentoDriverModule { useExisting: DaffMagentoNavigationTransformerService, }, { - provide: MAGENTO_NAVIGATION_TREE_QUERY_DEPTH, - useValue: config.navigationTreeQueryDepth, + provide: MAGENTO_NAVIGATION_DRIVER_CONFIG, + useValue: { + ...MAGENTO_NAVIGATION_DRIVER_CONFIG_DEFAULT, + ...config, + }, }, { provide: DAFF_MAGENTO_CACHEABLE_OPERATIONS, diff --git a/libs/navigation/driver/magento/src/navigation.service.spec.ts b/libs/navigation/driver/magento/src/navigation.service.spec.ts index c8447a967d..c5c20e1005 100644 --- a/libs/navigation/driver/magento/src/navigation.service.spec.ts +++ b/libs/navigation/driver/magento/src/navigation.service.spec.ts @@ -11,8 +11,8 @@ import { schema } from '@daffodil/driver/magento'; import { DaffNavigationTransformer } from '@daffodil/navigation/driver'; import { DaffMagentoNavigationTransformerService, - MAGENTO_NAVIGATION_TREE_QUERY_DEPTH, daffMagentoGetCategoryTree, + provideMagentoNavigationDriverConfig, } from '@daffodil/navigation/driver/magento'; import { DaffNavigationTreeFactory } from '@daffodil/navigation/testing'; @@ -34,10 +34,9 @@ describe('Driver | Magento | Navigation | NavigationService', () => { providers: [ DaffMagentoNavigationService, { provide: DaffNavigationTransformer, useExisting: DaffMagentoNavigationTransformerService }, - { - provide: MAGENTO_NAVIGATION_TREE_QUERY_DEPTH, - useValue: queryDepth, - }, + provideMagentoNavigationDriverConfig({ + navigationTreeQueryDepth: queryDepth, + }), { provide: APOLLO_TESTING_CACHE, useValue: new InMemoryCache({ diff --git a/libs/navigation/driver/magento/src/navigation.service.ts b/libs/navigation/driver/magento/src/navigation.service.ts index db69a191f2..e862b1131b 100644 --- a/libs/navigation/driver/magento/src/navigation.service.ts +++ b/libs/navigation/driver/magento/src/navigation.service.ts @@ -13,7 +13,10 @@ import { DaffNavigationTransformerInterface, } from '@daffodil/navigation/driver'; -import { MAGENTO_NAVIGATION_TREE_QUERY_DEPTH } from './interfaces/navigation-config.interface'; +import { + MAGENTO_NAVIGATION_DRIVER_CONFIG, + MagentoNavigationDriverConfig, +} from './config/public_api'; import { GetCategoryTreeResponse } from './models/get-category-tree-response'; import { daffMagentoGetCategoryTree } from './queries/get-category-tree'; @@ -28,12 +31,12 @@ export class DaffMagentoNavigationService implements DaffNavigationServiceInterf constructor( private apollo: Apollo, @Inject(DaffNavigationTransformer) private transformer: DaffNavigationTransformerInterface, - @Inject(MAGENTO_NAVIGATION_TREE_QUERY_DEPTH) private categoryTreeQueryDepth: number, + @Inject(MAGENTO_NAVIGATION_DRIVER_CONFIG) private config: MagentoNavigationDriverConfig, ) {} get(categoryId: string): Observable { return this.apollo.query({ - query: daffMagentoGetCategoryTree(this.categoryTreeQueryDepth), + query: daffMagentoGetCategoryTree(this.config.navigationTreeQueryDepth), variables: { filters: { category_uid: { eq: categoryId }}, }, diff --git a/libs/navigation/driver/magento/src/public_api.ts b/libs/navigation/driver/magento/src/public_api.ts index 69a0ee3342..3100176fe1 100644 --- a/libs/navigation/driver/magento/src/public_api.ts +++ b/libs/navigation/driver/magento/src/public_api.ts @@ -1,13 +1,7 @@ -export { - MAGENTO_NAVIGATION_TREE_QUERY_DEPTH, - MagentoNavigationDriverConfiguration, -} from './interfaces/navigation-config.interface'; -export { - DaffNavigationMagentoDriverModule, - MAGENTO_NAVIGATION_DEFAULT_CONFIGURATION, -} from './navigation-driver.module'; +export { DaffNavigationMagentoDriverModule } from './navigation-driver.module'; export { DaffMagentoNavigationService } from './navigation.service'; export { DaffMagentoNavigationTransformerService } from './transformers/navigation-transformer'; export * from './queries/get-category-tree'; +export * from './config/public_api'; export * from './models/public_api'; export * from './transforms/public_api';