diff --git a/packages/docs/lumberjack-docs-app/docs/log-drivers/http-driver.md b/packages/docs/lumberjack-docs-app/docs/log-drivers/http-driver.md index e37d0cb60..7294183be 100644 --- a/packages/docs/lumberjack-docs-app/docs/log-drivers/http-driver.md +++ b/packages/docs/lumberjack-docs-app/docs/log-drivers/http-driver.md @@ -115,58 +115,14 @@ export interface LumberjackHttpDriverRetryOptions { The `sendLog` method has been optimized to run outside Angular's `NgZone`, avoiding unnecessary change detection cycles. -### LumberjackHttpDriverModule +### provideLumberjackHttpDriver -> Note: Lumberjack NgModules are deprecated and will be removed in version 18. Use the Standalone API, provider functions, instead. +The `provideLumberjackHttpDriver` is similar to the `provideLumberjackConsoleDriver`. -The `LumberjackHttpDriverModule` is similar to the `LumberjackConsoleDriverModule`. - -Novelty appears with the static `withOptions` function that allows us to pass `LumberjackHttpDriverOptions` to fall back to the settings in `LumberjackLogDriverConfig`. +Novelty appears with the `withHttpOptions` and `withHttpConfig` functions that allow to allow to configure the driver. Additionally, we can configure the underlaying `HttpClient` by passing any features it receives like interceptors. -```typescript -@NgModule() -export class LumberjackHttpDriverModule { - /** - * Configure and register the HTTP driver, including settings that log drivers - * have in common. - * - * @param config Settings used by the HTTP driver. - */ - static forRoot( - config: LumberjackHttpDriverConfig, - ...features: HttpClientFeatures - ): ModuleWithProviders { - return { - ngModule: LumberjackHttpDriverRootModule, - providers: [provideLumberjackHttpDriver(withHttpConfig(config), ...features)], - }; - } - - /** - * Configure and register the HTTP driver, but fall back on the default log - * driver settings for settings that log drivers have in common. - * @param options Settings used by the HTTP driver. - */ - static withOptions( - options: LumberjackHttpDriverOptions, - ...features: HttpClientFeatures - ): ModuleWithProviders { - return { - ngModule: LumberjackHttpDriverRootModule, - providers: [provideLumberjackHttpDriver(withHttpOptions(options), ...features)], - }; - } - - constructor() { - throw new Error('Do not import LumberjackHttpDriverModule directly. Use LumberjackHttpDriverModule.forRoot.'); - } -} -``` - -The most interesting behavior exist on the `provideLumberjackHttpDriver` function - ```typescript export type LumberjackHttpDriverConfigurationKind = 'options' | 'config'; export type LumberjackHttpDriverConfiguration = { @@ -226,65 +182,9 @@ export function provideLumberjackHttpDriverv14. - -This is where the heaviest configuration happens and it is used to boost the classic APIs - The following is an example of how both API can be used -Classic: - -> Note: Lumberjack NgModules are deprecated and will be removed in version 18. Use the Standalone API, provider functions, instead. - ```typescript -@NgModule({ - ..., - imports: [ - ..., - LumberjackModule.forRoot(), - LumberjackConsoleDriverModule.forRoot(), - LumberjackHttpDriverModule.forRoot({ - levels: ['error'], - origin: 'ForestApp', - retryOptions: { maxRetries: 5, delayMs: 250 }, - storeUrl: '/api/logs', - }, - withInterceptors([ - (req, next) => { - const easy = inject(easyToken); - console.log('are interceptors working?', easy); - return next(req); - }, - ]) - ), - ... - ], - ... -}) -export class AppModule {} -``` - -or - -```typescript -@NgModule({ - ..., - providers: [ - ..., - provideLumberjack(), provideLumberjackConsoleDriver(), provideLumberjackHttpDriver(withHttpConfig({ - levels: ['error'], - origin: 'ForestApp', - retryOptions: { maxRetries: 5, delayMs: 250 }, - storeUrl: '/api/logs', - })) - ... - ], - ... -}) -export class AppModule {} - -Standalone: - bootstrapApplication(AppComponent, { providers: [ provideLumberjack(), diff --git a/packages/docs/lumberjack-docs-app/docs/log-drivers/log-drivers.md b/packages/docs/lumberjack-docs-app/docs/log-drivers/log-drivers.md index 6bb6417f5..a7d36a940 100644 --- a/packages/docs/lumberjack-docs-app/docs/log-drivers/log-drivers.md +++ b/packages/docs/lumberjack-docs-app/docs/log-drivers/log-drivers.md @@ -48,35 +48,6 @@ Log drivers should make it possible to configure the logging levels on a per dri For example, we could use the default logging levels for the console driver, but only enable the critical and error levels for the HTTP driver as seen in the following example. -> Note: Lumberjack NgModules are deprecated and will be removed in version 18. Use the Standalone API, provider functions, instead. - -```ts -import { NgModule } from '@angular/core'; -import { Level as LumberjackLevel, LumberjackModule } from '@ngworker/lumberjack'; -import { LumberjackConsoleDriverModule } from '@ngworker/lumberjack/console-driver'; -import { LumberjackHttpDriverModule } from '@ngworker/lumberjack/http-driver'; - -@NgModule({ - imports: [ - LumberjackModule.forRoot({ - levels: ['verbose'], - }), - LumberjackConsoleDriverModule.forRoot(), - LumberjackHttpDriverModule.forRoot({ - levels: ['critical', 'error'], - origin: 'ForestApp', - storeUrl: '/api/logs', - retryOptions: { maxRetries: 5, delayMs: 250 }, - }), - // (...) - ], - // (...) -}) -export class AppModule {} -``` - -Or use the standalone version of the API - ```ts import { bootstrapApplication } from '@angular/platform-browser'; @@ -229,7 +200,7 @@ export class ConsoleDriver implements LumberjackLogDriver { } ``` -#### Creating a custom log driver module and provider functions +#### Creating a custom log driver provider functions The provide functions provides configuration and other dependencies to a log driver. It also provides the log driver, making @@ -269,36 +240,6 @@ export function provideLumberjackConsoleDriver(config: Partial Note: Lumberjack NgModules are deprecated and will be removed in version 18. Use the Standalone API, provider functions, instead. - -```ts -import { ModuleWithProviders, NgModule } from '@angular/core'; - -import { LumberjackConsoleDriverRootModule } from './lumberjack-console-driver-root.module'; -import { LumberjackConsoleDriverConfig } from './lumberjack-console-driver.config'; -import { provideLumberjackConsoleDriver } from './lumberjack-console-driver.providers'; - -@NgModule() -export class LumberjackConsoleDriverModule { - static forRoot( - config: Partial = {} - ): ModuleWithProviders { - return { - ngModule: LumberjackConsoleDriverRootModule, - providers: [provideLumberjackConsoleDriver(config)], - }; - } - - constructor() { - throw new Error('Do not import LumberjackConsoleDriverModule directly. Use LumberjackConsoleDriverModule.forRoot.'); - } -} -``` - -The static `forRoot()` method provides the `consoleDriverConfigToken`. - If no configuration is passed, then the root `LogDriverConfig` is used. ```ts @@ -314,33 +255,17 @@ This is possible because the `ConsoleDriver` has the same configuration options only have to include the driver identifier since it cannot be predefined. For adding custom settings, -see [LumberjackHttpDriver](https://github.com/ngworker/lumberjack/blob/main/packages/ngworker/lumberjack/http-driver/src/lib/configuration/lumberjack-http-driver-root.module.ts). +see [LumberjackHttpDriver](https://github.com/ngworker/lumberjack/blob/main/packages/ngworker/lumberjack/http-driver/src/lib/configuration/provide-lumberjack-http-driver.ts). -The most important thing about the `LumberjackConsoleDriverModule` is that it provides the `LumberjackConsoleDriver` +The most important thing about the `provideLumberjackConsoleDriver` function is that it provides the `LumberjackConsoleDriver` using the `lumberjackLogDriverToken` with the `multi` flag on. This allows us to provide multiple log drivers for Lumberjack at the same time. #### Using a custom log driver -The last step is to import this module at the root module of our application, as seen in the first [_Usage_](../usage) +The last step is to provide this driver at the `bootstrapApplication` function, as seen in the first [_Usage_](../usage) section. -> Note: Lumberjack NgModules are deprecated and will be removed in version 18. Use the Standalone API, provider functions, instead. - -```ts -@NgModule({ - imports: [ - LumberjackModule.forRoot(), - ConsoleDriverModule.forRoot(), - // (...) - ], - // (...) -}) -export class AppModule {} -``` - -Or using the standalone API. - ```typescript import { bootstrapApplication } from '@angular/platform-browser'; diff --git a/packages/docs/lumberjack-docs-app/docs/usage.md b/packages/docs/lumberjack-docs-app/docs/usage.md index e672990b7..9dac52541 100644 --- a/packages/docs/lumberjack-docs-app/docs/usage.md +++ b/packages/docs/lumberjack-docs-app/docs/usage.md @@ -6,25 +6,7 @@ title: Usage > For a complete walkthrough video please > visit [@ngworker/lumberjack v2 - Show & Tell BLS024](https://youtu.be/OV1ONtLAJnI) -To register Lumberjack, add `LumberjackModule.forRoot()` to your root or core Angular module. - -> Note: Lumberjack NgModules are deprecated and will be removed in version 18. Use the Standalone API, provider functions, instead. - -```ts -// (...) -import {LumberjackModule} from '@ngworker/lumberjack'; - -@NgModule({ - imports: [ - // (...) - LumberjackModule.forRoot(), - // (...) - ], - // (...) -}) -``` - -Or if you prefer a prefer standalone approach using the `provideLumberjack()`. +To register Lumberjack, add `provideLumberjack()` to your root or `bootstrapApplication` function. ```ts bootstrapApplication(AppComponent, { @@ -36,37 +18,10 @@ bootstrapApplication(AppComponent, { }); ``` -You must also register the log driver modules for the log drivers that you want to enable. +You must also register the log driver provider functions for the log drivers that you want to enable. If you want to add the `LumberjackHttpDriver` and the `LumberjackConsoleDriver`, add the following code -> Note: Lumberjack NgModules are deprecated and will be removed in version 18. Use the Standalone API, provider functions, instead. - -```ts -// (...) -import { LumberjackModule } from '@ngworker/lumberjack'; -import { LumberjackHttpDriverModule } from '@ngworker/lumberjack/http-driver'; -import { LumberjackConsoleDriverModule } from '@ngworker/lumberjack/console-driver'; - -@NgModule({ - imports: [ - // (...) - LumberjackModule.forRoot(), - LumberjackConsoleDriverModule.forRoot(), - LumberjackHttpDriverModule.withOptions({ - origin: '', - storeUrl: '/api/logs', - retryOptions: { maxRetries: 5, delayMs: 250 }, - }), - // (...) - ], - // (...) -}) -export class AppModule {} -``` - -Or using the standalone version - ```ts bootstrapApplication(AppComponent, { providers: [ @@ -160,9 +115,9 @@ export class MyComponent implements OnInit { > Each log level has its associated shorthand version: `'info'` is `logInfo`, `'debug'` is `logDebug`, etc. -### LumberjackModule and provideLumberjack +### provideLumberjack -Optionally, we can pass one or more options to `LumberjackModule.forRoot` or to the `provideLumberjack` function. +Optionally, we can pass one or more options to the `provideLumberjack` function. | Option | Type | Optional? | Description | | -------- | ------------------------------ | --------- | -------------------------------------------------------------------- | diff --git a/packages/examples/lumberjack-app/src/app/app.component.spec.ts b/packages/examples/lumberjack-app/src/app/app.component.spec.ts index 774f81926..38f2ef700 100644 --- a/packages/examples/lumberjack-app/src/app/app.component.spec.ts +++ b/packages/examples/lumberjack-app/src/app/app.component.spec.ts @@ -1,13 +1,13 @@ import { TestBed } from '@angular/core/testing'; -import { LumberjackModule } from '@ngworker/lumberjack'; +import { provideLumberjack } from '@ngworker/lumberjack'; import { AppComponent } from './app.component'; describe('AppComponent', () => { beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [LumberjackModule.forRoot()], + providers: [provideLumberjack()], }).compileComponents(); }); diff --git a/packages/internal/test-util/src/index.ts b/packages/internal/test-util/src/index.ts index 03eeeb9fd..576c4a0f4 100644 --- a/packages/internal/test-util/src/index.ts +++ b/packages/internal/test-util/src/index.ts @@ -2,10 +2,6 @@ * Public API surface of @internal/test-util */ -// Angular -export * from './lib/angular/expect-ng-module-to-be-guarded-against-direct-import'; -export * from './lib/angular/expect-ng-module-to-be-guarded-against-duplicate-registration'; - // Error-throwing driver export * from './lib/error-throwing-driver/error-throwing-driver.config'; export * from './lib/error-throwing-driver/error-throwing.driver'; diff --git a/packages/internal/test-util/src/lib/angular/expect-ng-module-to-be-guarded-against-direct-import.ts b/packages/internal/test-util/src/lib/angular/expect-ng-module-to-be-guarded-against-direct-import.ts deleted file mode 100644 index 6ee2d9947..000000000 --- a/packages/internal/test-util/src/lib/angular/expect-ng-module-to-be-guarded-against-direct-import.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { Type } from '@angular/core'; -import { TestBed } from '@angular/core/testing'; - -/** - * Assert that an NgModule is guarded against direct import. - */ -export const expectNgModuleToBeGuardedAgainstDirectImport = (ngModuleType: Type): void => { - let ngModule: TModule | undefined; - - TestBed.configureTestingModule({ - imports: [ngModuleType], - }); - - expect(() => { - ngModule = TestBed.inject(ngModuleType); - }).toThrow(); - expect(ngModule).toBeUndefined(); -}; diff --git a/packages/internal/test-util/src/lib/angular/expect-ng-module-to-be-guarded-against-duplicate-registration.ts b/packages/internal/test-util/src/lib/angular/expect-ng-module-to-be-guarded-against-duplicate-registration.ts deleted file mode 100644 index eea6eee44..000000000 --- a/packages/internal/test-util/src/lib/angular/expect-ng-module-to-be-guarded-against-duplicate-registration.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { NgModule, NgZone, Type } from '@angular/core'; -import { fakeAsync, TestBed, tick } from '@angular/core/testing'; -import { Router, RouterModule } from '@angular/router'; -import { RouterTestingModule } from '@angular/router/testing'; - -/** - * Assert that an NgModule is guarded against being registered in multiple - * environment injectors. - */ -export const expectNgModuleToBeGuardedAgainstDuplicateRegistration = ( - ngModuleType: Type -): Promise => { - @NgModule({ - imports: [ngModuleType, RouterModule.forChild([])], - }) - class LazyTestModule {} - - expect.assertions(3); - - TestBed.configureTestingModule({ - imports: [ - ngModuleType, - RouterTestingModule.withRoutes([ - { - path: 'lazy', - loadChildren: () => LazyTestModule, - }, - ]), - ], - }); - - const ngZone = TestBed.inject(NgZone); - const router = TestBed.inject(Router); - const initialNavigationSync = () => - ngZone.run( - fakeAsync(() => { - router.initialNavigation(); - tick(); - }) - ); - - // The NgModule is not guarded against the first environment injector that - // registers it - expect(() => TestBed.inject(ngModuleType)).not.toThrow(); - expect(initialNavigationSync).not.toThrow(); - // The NgModule is guarded against being registered in multiple environment - // injectors - return expect(ngZone.run(() => router.navigateByUrl('/lazy'))).rejects.toThrowError(/multiple injectors/); -}; diff --git a/packages/internal/test-util/src/lib/error-throwing-driver/error-throwing.driver.spec.ts b/packages/internal/test-util/src/lib/error-throwing-driver/error-throwing.driver.spec.ts index bda9f8f95..6a9b7d630 100644 --- a/packages/internal/test-util/src/lib/error-throwing-driver/error-throwing.driver.spec.ts +++ b/packages/internal/test-util/src/lib/error-throwing-driver/error-throwing.driver.spec.ts @@ -7,7 +7,7 @@ import { LumberjackLogDriverLog, lumberjackLogDriverToken, LumberjackLogLevel, - LumberjackModule, + provideLumberjack, } from '@ngworker/lumberjack'; import { repeatSideEffect } from '../functions/repeat-side-effect'; @@ -19,8 +19,10 @@ import { provideErrorThrowingDriver } from './provide-error-throwing-driver'; describe(ErrorThrowingDriver.name, () => { function setup(logsBeforeThrowing?: number) { TestBed.configureTestingModule({ - imports: [LumberjackModule.forRoot()], - providers: [provideErrorThrowingDriver(logsBeforeThrowing != null ? { logsBeforeThrowing } : undefined)], + providers: [ + provideLumberjack(), + provideErrorThrowingDriver(logsBeforeThrowing != null ? { logsBeforeThrowing } : undefined), + ], }); const [driver] = TestBed.inject(lumberjackLogDriverToken) as unknown as LumberjackLogDriver[]; diff --git a/packages/internal/test-util/src/lib/object-driver/object.driver.spec.ts b/packages/internal/test-util/src/lib/object-driver/object.driver.spec.ts index b5d31cd6e..b77dc32ca 100644 --- a/packages/internal/test-util/src/lib/object-driver/object.driver.spec.ts +++ b/packages/internal/test-util/src/lib/object-driver/object.driver.spec.ts @@ -8,7 +8,7 @@ import { LumberjackLogDriverLog, lumberjackLogDriverToken, LumberjackLogLevel, - LumberjackModule, + provideLumberjack, } from '@ngworker/lumberjack'; import { ObjectDriver } from './object.driver'; @@ -21,8 +21,7 @@ describe(ObjectDriver.name, () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [LumberjackModule.forRoot()], - providers: [provideObjectDriver()], + providers: [provideLumberjack(), provideObjectDriver()], }); [objectDriver] = TestBed.inject(lumberjackLogDriverToken) as unknown as LumberjackLogDriver[]; diff --git a/packages/ngworker/lumberjack/console-driver/src/configuration-api.spec.ts b/packages/ngworker/lumberjack/console-driver/src/configuration-api.spec.ts index 45bc2220e..64b6c024e 100644 --- a/packages/ngworker/lumberjack/console-driver/src/configuration-api.spec.ts +++ b/packages/ngworker/lumberjack/console-driver/src/configuration-api.spec.ts @@ -1,26 +1,8 @@ -import { isClass, isFunction } from '@internal/test-util'; +import { isFunction } from '@internal/test-util'; -import { - LumberjackConsoleDriverModule, - LumberjackConsoleDriverRootModule, - provideLumberjackConsoleDriver, -} from './index'; +import { provideLumberjackConsoleDriver } from './index'; describe('Configuration API', () => { - describe('Angular modules', () => { - it(`exposes ${LumberjackConsoleDriverModule.name}`, () => { - const sut = LumberjackConsoleDriverModule; - - expect(isClass(sut)).toBeTruthy(); - }); - - it(`exposes ${LumberjackConsoleDriverRootModule.name}`, () => { - const sut = LumberjackConsoleDriverRootModule; - - expect(isClass(sut)).toBeTruthy(); - }); - }); - describe('Provider functions', () => { it(`exposes ${provideLumberjackConsoleDriver.name}`, () => { const sut = provideLumberjackConsoleDriver; diff --git a/packages/ngworker/lumberjack/console-driver/src/index.ts b/packages/ngworker/lumberjack/console-driver/src/index.ts index 9e9b5ae00..b6a2469a7 100644 --- a/packages/ngworker/lumberjack/console-driver/src/index.ts +++ b/packages/ngworker/lumberjack/console-driver/src/index.ts @@ -3,8 +3,6 @@ */ // Configuration -export { LumberjackConsoleDriverModule } from './lib/configuration/lumberjack-console-driver.module'; -export { LumberjackConsoleDriverRootModule } from './lib/configuration/lumberjack-console-driver-root.module'; export { provideLumberjackConsoleDriver } from './lib/configuration/provide-lumberjack-console-driver'; // Console diff --git a/packages/ngworker/lumberjack/console-driver/src/lib/configuration/lumberjack-console-driver-root.module.spec.ts b/packages/ngworker/lumberjack/console-driver/src/lib/configuration/lumberjack-console-driver-root.module.spec.ts deleted file mode 100644 index 605121360..000000000 --- a/packages/ngworker/lumberjack/console-driver/src/lib/configuration/lumberjack-console-driver-root.module.spec.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { expectNgModuleToBeGuardedAgainstDuplicateRegistration } from '@internal/test-util'; - -import { LumberjackConsoleDriverRootModule } from './lumberjack-console-driver-root.module'; - -describe(LumberjackConsoleDriverRootModule.name, () => { - it('guards against being registered in multiple injectors', async () => { - await expectNgModuleToBeGuardedAgainstDuplicateRegistration(LumberjackConsoleDriverRootModule); - }); -}); diff --git a/packages/ngworker/lumberjack/console-driver/src/lib/configuration/lumberjack-console-driver-root.module.ts b/packages/ngworker/lumberjack/console-driver/src/lib/configuration/lumberjack-console-driver-root.module.ts deleted file mode 100644 index ba8f4723b..000000000 --- a/packages/ngworker/lumberjack/console-driver/src/lib/configuration/lumberjack-console-driver-root.module.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { inject, NgModule } from '@angular/core'; - -/** - * Do not import directly. Use `LumberjackConsoleDriverModule.forRoot`. - * @deprecated Use standalone provider function `provideLumberjackConsoleDriver` instead. NgModules will be removed in Lumberjack 18. - */ -@NgModule() -export class LumberjackConsoleDriverRootModule { - readonly #maybeNgModuleFromParentInjector = inject(LumberjackConsoleDriverRootModule, { - optional: true, - skipSelf: true, - }); - - constructor() { - if (this.#maybeNgModuleFromParentInjector) { - throw new Error( - 'LumberjackConsoleDriverModule.forRoot registered in multiple injectors. Only call it from your root injector such as in AppModule.' - ); - } - } -} diff --git a/packages/ngworker/lumberjack/console-driver/src/lib/configuration/lumberjack-console-driver.module.spec.ts b/packages/ngworker/lumberjack/console-driver/src/lib/configuration/lumberjack-console-driver.module.spec.ts deleted file mode 100644 index 2450688d4..000000000 --- a/packages/ngworker/lumberjack/console-driver/src/lib/configuration/lumberjack-console-driver.module.spec.ts +++ /dev/null @@ -1,103 +0,0 @@ -import { TestBed } from '@angular/core/testing'; - -import { expectNgModuleToBeGuardedAgainstDirectImport } from '@internal/test-util'; -import { - lumberjackConfigToken, - LumberjackLogDriver, - LumberjackLogDriverConfig, - lumberjackLogDriverToken, - LumberjackModule, -} from '@ngworker/lumberjack'; - -import { LumberjackConsoleDriver } from '../log-drivers/lumberjack-console.driver'; - -import { LumberjackConsoleDriverConfig } from './lumberjack-console-driver.config'; -import { LumberjackConsoleDriverModule } from './lumberjack-console-driver.module'; - -const createConsoleDriver = ({ - config, - isLumberjackModuleImportedFirst = true, -}: { - config?: LumberjackConsoleDriverConfig; - isLumberjackModuleImportedFirst?: boolean; -} = {}) => { - TestBed.configureTestingModule({ - imports: [ - isLumberjackModuleImportedFirst ? LumberjackModule.forRoot() : [], - LumberjackConsoleDriverModule.forRoot(config), - isLumberjackModuleImportedFirst ? [] : LumberjackModule.forRoot(), - ], - }); - - const [consoleDriver] = TestBed.inject(lumberjackLogDriverToken) as unknown as LumberjackLogDriver[]; - - return consoleDriver; -}; - -describe(LumberjackConsoleDriverModule.name, () => { - it(`cannot be imported without using the ${LumberjackConsoleDriverModule.forRoot.name} method`, () => { - expectNgModuleToBeGuardedAgainstDirectImport(LumberjackConsoleDriverModule); - }); - - describe(LumberjackConsoleDriverModule.forRoot.name, () => { - it('provides the console driver', () => { - const consoleDriver = createConsoleDriver(); - - expect(consoleDriver).toBeInstanceOf(LumberjackConsoleDriver); - }); - - it('registers the specified log driver configuration given the specified identifier', () => { - const expectedConfig: LumberjackLogDriverConfig = { - levels: ['error'], - identifier: 'TestDriverIdentifier', - }; - - const consoleDriver = createConsoleDriver({ config: expectedConfig }); - - const actualConfig = consoleDriver.config; - expect(actualConfig).toEqual(expectedConfig); - }); - - it('registers the specified log driver configuration given no identifier', () => { - const config: LumberjackConsoleDriverConfig = { - levels: ['error'], - }; - const expectedConfig: LumberjackLogDriverConfig = { - ...config, - identifier: LumberjackConsoleDriver.driverIdentifier, - }; - - const consoleDriver = createConsoleDriver({ config }); - - const actualConfig = consoleDriver.config; - expect(actualConfig).toEqual(expectedConfig); - }); - - it('registers a default configuration if none is specified', () => { - const consoleDriver = createConsoleDriver(); - - const actualConfig = consoleDriver.config; - const logConfig = TestBed.inject(lumberjackConfigToken); - const defaultLogDriverConfig: LumberjackLogDriverConfig = { - levels: logConfig.levels, - identifier: LumberjackConsoleDriver.driverIdentifier, - }; - expect(actualConfig).toEqual(defaultLogDriverConfig); - }); - - it('registers the specified log driver configuration when the Lumberjack module is imported after the console driver module', () => { - const expectedConfig: LumberjackLogDriverConfig = { - levels: ['debug'], - identifier: 'TestConsoleDriver', - }; - - const consoleDriver = createConsoleDriver({ - config: expectedConfig, - isLumberjackModuleImportedFirst: false, - }); - - const actualConfig = consoleDriver.config; - expect(actualConfig).toEqual(expectedConfig); - }); - }); -}); diff --git a/packages/ngworker/lumberjack/console-driver/src/lib/configuration/lumberjack-console-driver.module.ts b/packages/ngworker/lumberjack/console-driver/src/lib/configuration/lumberjack-console-driver.module.ts deleted file mode 100644 index 06f9f038c..000000000 --- a/packages/ngworker/lumberjack/console-driver/src/lib/configuration/lumberjack-console-driver.module.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { ModuleWithProviders, NgModule } from '@angular/core'; - -import { LumberjackConsoleDriverRootModule } from './lumberjack-console-driver-root.module'; -import { LumberjackConsoleDriverConfig } from './lumberjack-console-driver.config'; -import { provideLumberjackConsoleDriver } from './provide-lumberjack-console-driver'; - -/** - * The console driver Angular module is used to configure and register the - * console driver. - * - * NOTE! Do not import `LumberjackConsoleDriverModule` directly. Use - * `LumberjackConsoleDriverModule.forRoot`. - * - * @deprecated Use standalone provider function `provideLumberjackConsoleDriver` instead. NgModules will be removed in Lumberjack 18. - */ -@NgModule() -export class LumberjackConsoleDriverModule { - /** - * Configure and register the console driver. - * - * @param config Settings used by the console driver. - */ - static forRoot( - config: Partial = {} - ): ModuleWithProviders { - return { - ngModule: LumberjackConsoleDriverRootModule, - providers: [provideLumberjackConsoleDriver(config)], - }; - } - - constructor() { - throw new Error('Do not import LumberjackConsoleDriverModule directly. Use LumberjackConsoleDriverModule.forRoot.'); - } -} diff --git a/packages/ngworker/lumberjack/console-driver/src/lib/configuration/provide-lumberjack-console-driver.spec.ts b/packages/ngworker/lumberjack/console-driver/src/lib/configuration/provide-lumberjack-console-driver.spec.ts index 6f3bcf3cf..d52761217 100644 --- a/packages/ngworker/lumberjack/console-driver/src/lib/configuration/provide-lumberjack-console-driver.spec.ts +++ b/packages/ngworker/lumberjack/console-driver/src/lib/configuration/provide-lumberjack-console-driver.spec.ts @@ -15,16 +15,16 @@ import { provideLumberjackConsoleDriver } from './provide-lumberjack-console-dri const createConsoleDriver = ({ config, - isLumberjackModuleProvidedFirst = true, + isLumberjackProvidedFirst = true, }: { config?: LumberjackConsoleDriverConfig; - isLumberjackModuleProvidedFirst?: boolean; + isLumberjackProvidedFirst?: boolean; } = {}) => { TestBed.configureTestingModule({ providers: [ - isLumberjackModuleProvidedFirst ? provideLumberjack() : [], + isLumberjackProvidedFirst ? provideLumberjack() : [], provideLumberjackConsoleDriver(config), - isLumberjackModuleProvidedFirst ? [] : provideLumberjack(), + isLumberjackProvidedFirst ? [] : provideLumberjack(), ], }); @@ -87,7 +87,7 @@ describe(provideLumberjackConsoleDriver.name, () => { const consoleDriver = createConsoleDriver({ config: expectedConfig, - isLumberjackModuleProvidedFirst: false, + isLumberjackProvidedFirst: false, }); const actualConfig = consoleDriver.config; diff --git a/packages/ngworker/lumberjack/console-driver/src/lib/log-drivers/lumberjack-console.driver.spec.ts b/packages/ngworker/lumberjack/console-driver/src/lib/log-drivers/lumberjack-console.driver.spec.ts index ea1c625ba..7d14f1ad0 100644 --- a/packages/ngworker/lumberjack/console-driver/src/lib/log-drivers/lumberjack-console.driver.spec.ts +++ b/packages/ngworker/lumberjack/console-driver/src/lib/log-drivers/lumberjack-console.driver.spec.ts @@ -5,25 +5,25 @@ import { LumberjackLogDriver, lumberjackLogDriverToken, LumberjackLogFactory, - LumberjackModule, + provideLumberjack, } from '@ngworker/lumberjack'; -import { LumberjackConsoleDriverModule } from '../configuration/lumberjack-console-driver.module'; import { lumberjackConsoleToken } from '../console/lumberjack-console.token'; +import { provideLumberjackConsoleDriver } from '../configuration/provide-lumberjack-console-driver'; import { LumberjackConsoleDriver } from './lumberjack-console.driver'; describe(LumberjackConsoleDriver.name, () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [ - LumberjackModule.forRoot(), - LumberjackConsoleDriverModule.forRoot({ + providers: [ + provideLumberjack(), + provideLumberjackConsoleDriver({ levels: ['verbose'], identifier: LumberjackConsoleDriver.driverIdentifier, }), + provideSpyConsole(), ], - providers: [provideSpyConsole()], }); const [_driver] = TestBed.inject(lumberjackLogDriverToken) as unknown as LumberjackLogDriver[]; diff --git a/packages/ngworker/lumberjack/http-driver/README.md b/packages/ngworker/lumberjack/http-driver/README.md index 5c1f51f3e..7d0d0fdc7 100644 --- a/packages/ngworker/lumberjack/http-driver/README.md +++ b/packages/ngworker/lumberjack/http-driver/README.md @@ -109,56 +109,14 @@ export interface LumberjackHttpDriverRetryOptions { The `sendLog` method has been optimized to run outside Angular's `NgZone`, avoiding unnecessary change detection cycles. -### LumberjackHttpDriverModule +### provideLumberjackHttpDriver -The `LumberjackHttpDriverModule` is similar to the `LumberjackConsoleDriverModule`. +The `provideLumberjackHttpDriver` is similar to the `provideLumberjackConsoleDriver`. -Novelty appears with the static `withOptions` function that allows us to pass `LumberjackHttpDriverOptions` to fall back to the settings in `LumberjackLogDriverConfig`. +Novelty appears with the `withHttpOptions` and `withHttpConfig` functions that allow to allow to configure the driver. Additionally, we can configure the underlaying `HttpClient` by passing any features it receives like interceptors. -```typescript -@NgModule() -export class LumberjackHttpDriverModule { - /** - * Configure and register the HTTP driver, including settings that log drivers - * have in common. - * - * @param config Settings used by the HTTP driver. - */ - static forRoot( - config: LumberjackHttpDriverConfig, - ...features: HttpClientFeatures - ): ModuleWithProviders { - return { - ngModule: LumberjackHttpDriverRootModule, - providers: [provideLumberjackHttpDriver(withHttpConfig(config), ...features)], - }; - } - - /** - * Configure and register the HTTP driver, but fall back on the default log - * driver settings for settings that log drivers have in common. - * @param options Settings used by the HTTP driver. - */ - static withOptions( - options: LumberjackHttpDriverOptions, - ...features: HttpClientFeatures - ): ModuleWithProviders { - return { - ngModule: LumberjackHttpDriverRootModule, - providers: [provideLumberjackHttpDriver(withHttpOptions(options), ...features)], - }; - } - - constructor() { - throw new Error('Do not import LumberjackHttpDriverModule directly. Use LumberjackHttpDriverModule.forRoot.'); - } -} -``` - -The most interesting behavior exist on the `provideLumberjackHttpDriver` function - ```typescript export type LumberjackHttpDriverConfigurationKind = 'options' | 'config'; export type LumberjackHttpDriverConfiguration = { @@ -218,63 +176,9 @@ export function provideLumberjackHttpDriverv14. - -This is where the heaviest configuration happens and it is used to boost the classic APIs - The following is an example of how both API can be used -Classic: - -```typescript -@NgModule({ - ..., - imports: [ - ..., - LumberjackModule.forRoot(), - LumberjackConsoleDriverModule.forRoot(), - LumberjackHttpDriverModule.forRoot({ - levels: ['error'], - origin: 'ForestApp', - retryOptions: { maxRetries: 5, delayMs: 250 }, - storeUrl: '/api/logs', - }, - withInterceptors([ - (req, next) => { - const easy = inject(easyToken); - console.log('are interceptors working?', easy); - return next(req); - }, - ]) - ), - ... - ], - ... -}) -export class AppModule {} -``` - -or - ```typescript -@NgModule({ - ..., - providers: [ - ..., - provideLumberjack(), provideLumberjackConsoleDriver(), provideLumberjackHttpDriver(withHttpConfig({ - levels: ['error'], - origin: 'ForestApp', - retryOptions: { maxRetries: 5, delayMs: 250 }, - storeUrl: '/api/logs', - })) - ... - ], - ... -}) -export class AppModule {} - -Standalone: - bootstrapApplication(AppComponent, { providers: [ provideLumberjack(), diff --git a/packages/ngworker/lumberjack/http-driver/src/configuration-api.spec.ts b/packages/ngworker/lumberjack/http-driver/src/configuration-api.spec.ts index 80a7e40b0..e0f5662ef 100644 --- a/packages/ngworker/lumberjack/http-driver/src/configuration-api.spec.ts +++ b/packages/ngworker/lumberjack/http-driver/src/configuration-api.spec.ts @@ -1,11 +1,7 @@ -import { isClass } from '@internal/test-util'; - import { LumberjackHttpDriverConfig, - LumberjackHttpDriverModule, LumberjackHttpDriverOptions, LumberjackHttpDriverRetryOptions, - LumberjackHttpDriverRootModule, provideLumberjackHttpDriver, withHttpConfig, withHttpOptions, @@ -34,20 +30,6 @@ describe('Configuration API', () => { }); }); - describe('Angular modules', () => { - it(`exposes ${LumberjackHttpDriverModule.name}`, () => { - const sut = LumberjackHttpDriverModule; - - expect(isClass(sut)).toBeTruthy(); - }); - - it(`exposes ${LumberjackHttpDriverRootModule.name}`, () => { - const sut = LumberjackHttpDriverRootModule; - - expect(isClass(sut)).toBeTruthy(); - }); - }); - describe('Providers functions', () => { it('exposes provideLumberjackHttpDriver and its configurations', () => { const value: typeof provideLumberjackHttpDriver | undefined = undefined; diff --git a/packages/ngworker/lumberjack/http-driver/src/index.ts b/packages/ngworker/lumberjack/http-driver/src/index.ts index 683703315..34d157483 100644 --- a/packages/ngworker/lumberjack/http-driver/src/index.ts +++ b/packages/ngworker/lumberjack/http-driver/src/index.ts @@ -4,9 +4,7 @@ // Configuration export { LumberjackHttpDriverRetryOptions } from './lib/configuration/lumberjack-http-driver-retry.options'; -export { LumberjackHttpDriverRootModule } from './lib/configuration/lumberjack-http-driver-root.module'; export { LumberjackHttpDriverConfig } from './lib/configuration/lumberjack-http-driver.config'; -export { LumberjackHttpDriverModule } from './lib/configuration/lumberjack-http-driver.module'; export { LumberjackHttpDriverOptions } from './lib/configuration/lumberjack-http-driver.options'; export { provideLumberjackHttpDriver, diff --git a/packages/ngworker/lumberjack/http-driver/src/lib/configuration/lumberjack-http-driver-root.module.spec.ts b/packages/ngworker/lumberjack/http-driver/src/lib/configuration/lumberjack-http-driver-root.module.spec.ts deleted file mode 100644 index 2761c03ce..000000000 --- a/packages/ngworker/lumberjack/http-driver/src/lib/configuration/lumberjack-http-driver-root.module.spec.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { expectNgModuleToBeGuardedAgainstDuplicateRegistration } from '@internal/test-util'; - -import { LumberjackHttpDriverRootModule } from './lumberjack-http-driver-root.module'; - -describe(LumberjackHttpDriverRootModule.name, () => { - it('guards against being registered in multiple injectors', async () => { - await expectNgModuleToBeGuardedAgainstDuplicateRegistration(LumberjackHttpDriverRootModule); - }); -}); diff --git a/packages/ngworker/lumberjack/http-driver/src/lib/configuration/lumberjack-http-driver-root.module.ts b/packages/ngworker/lumberjack/http-driver/src/lib/configuration/lumberjack-http-driver-root.module.ts deleted file mode 100644 index 0e2fd1089..000000000 --- a/packages/ngworker/lumberjack/http-driver/src/lib/configuration/lumberjack-http-driver-root.module.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { inject, NgModule } from '@angular/core'; - -/** - * Do not import directly. Use `LumberjackHttpDriverModule.forRoot`. - * @deprecated Use standalone provider function `provideLumberjackHttpDriver` instead. NgModules will be removed in Lumberjack 18. - */ -@NgModule() -export class LumberjackHttpDriverRootModule { - readonly #maybeNgModuleFromParentInjector = inject(LumberjackHttpDriverRootModule, { - optional: true, - skipSelf: true, - }); - - constructor() { - if (this.#maybeNgModuleFromParentInjector) { - throw new Error( - 'LumberjackHttpDriverModule.forRoot registered in multiple injectors. Only call it from your root injector such as in AppModule.' - ); - } - } -} diff --git a/packages/ngworker/lumberjack/http-driver/src/lib/configuration/lumberjack-http-driver.module.spec.ts b/packages/ngworker/lumberjack/http-driver/src/lib/configuration/lumberjack-http-driver.module.spec.ts deleted file mode 100644 index bb8203d9c..000000000 --- a/packages/ngworker/lumberjack/http-driver/src/lib/configuration/lumberjack-http-driver.module.spec.ts +++ /dev/null @@ -1,216 +0,0 @@ -import { TestBed } from '@angular/core/testing'; - -import { expectNgModuleToBeGuardedAgainstDirectImport } from '@internal/test-util'; -import { - ConfigLevels, - LumberjackConfigLevels, - LumberjackLogDriver, - lumberjackLogDriverToken, - LumberjackModule, -} from '@ngworker/lumberjack'; - -import { LumberjackHttpDriver } from '../log-drivers/lumberjack-http.driver'; - -import { LumberjackHttpDriverInternalConfig } from './lumberjack-http-driver-internal.config'; -import { LumberjackHttpDriverConfig } from './lumberjack-http-driver.config'; -import { LumberjackHttpDriverModule } from './lumberjack-http-driver.module'; -import { LumberjackHttpDriverOptions } from './lumberjack-http-driver.options'; - -function createHttpOptions( - extraOptions: { levels?: LumberjackConfigLevels | ConfigLevels; identifier?: string } = {} -): LumberjackHttpDriverOptions { - return { - origin: 'TEST_MODULE', - retryOptions: { maxRetries: 5, delayMs: 250 }, - storeUrl: 'api/logstore', - ...extraOptions, - }; -} - -function createHttpConfig( - levels: LumberjackConfigLevels | ConfigLevels, - identifier?: string -): LumberjackHttpDriverConfig { - const config = { - levels, - origin: 'TEST_MODULE', - retryOptions: { maxRetries: 5, delayMs: 250 }, - storeUrl: 'api/logstore', - identifier, - }; - - if (!identifier) { - delete config.identifier; - } - - return config; -} - -const createHttpDriver = ( - { - config, - isLumberjackModuleImportedFirst = true, - }: { - config: LumberjackHttpDriverConfig; - isLumberjackModuleImportedFirst?: boolean; - } = { - config: createHttpConfig(['verbose'], LumberjackHttpDriver.driverIdentifier), - } -) => { - TestBed.configureTestingModule({ - imports: [ - isLumberjackModuleImportedFirst ? LumberjackModule.forRoot() : [], - LumberjackHttpDriverModule.forRoot(config), - isLumberjackModuleImportedFirst ? [] : LumberjackModule.forRoot(), - ], - }); - - const [httpDriver] = TestBed.inject(lumberjackLogDriverToken) as unknown as LumberjackLogDriver[]; - - return httpDriver; -}; - -const createHttpDriverWithOptions = ( - { - isLumberjackModuleImportedFirst = true, - options, - }: { - isLumberjackModuleImportedFirst?: boolean; - options: LumberjackHttpDriverOptions; - } = { options: createHttpOptions() } -) => { - TestBed.configureTestingModule({ - imports: [ - isLumberjackModuleImportedFirst ? LumberjackModule.forRoot() : [], - LumberjackHttpDriverModule.withOptions(options), - isLumberjackModuleImportedFirst ? [] : LumberjackModule.forRoot(), - ], - }); - - const [httpDriver] = TestBed.inject(lumberjackLogDriverToken) as unknown as LumberjackLogDriver[]; - - return httpDriver; -}; - -describe(LumberjackHttpDriverModule.name, () => { - it(`cannot be imported without using the ${LumberjackHttpDriverModule.forRoot.name} method`, () => { - expectNgModuleToBeGuardedAgainstDirectImport(LumberjackHttpDriverModule); - }); - - describe(LumberjackHttpDriverModule.forRoot.name, () => { - it('provides the HTTP driver', () => { - const httpDriver = createHttpDriver(); - - expect(httpDriver).toBeInstanceOf(LumberjackHttpDriver); - }); - - it('registers the specified log driver configuration WITH a specified identifier', () => { - const expectedConfig = createHttpConfig(['error'], 'TestDriverIdentifier'); - - const httpDriver = createHttpDriver({ config: expectedConfig }); - - const actualConfig = httpDriver.config; - expect(actualConfig).toEqual(expectedConfig as LumberjackHttpDriverInternalConfig); - }); - - it('registers the specified log driver configuration WITHOUT a specified identifier', () => { - const config = createHttpConfig(['error']); - const expectedConfig = { ...config, identifier: LumberjackHttpDriver.driverIdentifier }; - const httpDriver = createHttpDriver({ config }); - - const actualConfig = httpDriver.config; - expect(actualConfig).toEqual(expectedConfig as LumberjackHttpDriverInternalConfig); - }); - - it('does register the specified log driver configuration when the lumberjack module is imported after the http driver module', () => { - const expectedConfig = createHttpConfig(['debug'], 'TestDriverIdentifier'); - - const httpDriver = createHttpDriver({ - config: expectedConfig, - isLumberjackModuleImportedFirst: false, - }); - - const actualConfig = httpDriver.config; - expect(actualConfig).toEqual(expectedConfig as LumberjackHttpDriverInternalConfig); - }); - }); - - describe(LumberjackHttpDriverModule.withOptions.name, () => { - it('provides the HTTP driver', () => { - const httpDriver = createHttpDriverWithOptions(); - - expect(httpDriver).toBeInstanceOf(LumberjackHttpDriver); - }); - - it('registers the specified options', () => { - const options = createHttpOptions(); - - const httpDriver = createHttpDriverWithOptions({ options }); - - const actualConfig = httpDriver.config; - const expectedConfig: LumberjackHttpDriverInternalConfig = { - ...options, - levels: ['verbose'], - identifier: 'LumberjackHttpDriver', - }; - expect(actualConfig).toEqual(expectedConfig); - }); - - it('registers the specified options with custom levels', () => { - const customLevels: ConfigLevels = ['critical']; - const options = createHttpOptions({ levels: customLevels }); - - const httpDriver = createHttpDriverWithOptions({ options }); - - const actualConfig = httpDriver.config; - const expectedConfig: LumberjackHttpDriverInternalConfig = { - ...options, - levels: customLevels, - identifier: 'LumberjackHttpDriver', - }; - expect(actualConfig).toEqual(expectedConfig); - }); - - it('registers the specified options with custom identifier', () => { - const customIdentifier = 'TestDriverIdentifier'; - const options = createHttpOptions({ identifier: customIdentifier }); - - const httpDriver = createHttpDriverWithOptions({ options }); - - const actualConfig = httpDriver.config; - const expectedConfig: LumberjackHttpDriverInternalConfig = { - ...options, - levels: ['verbose'], - identifier: customIdentifier, - }; - expect(actualConfig).toEqual(expectedConfig); - }); - - it('gets default options from the log driver config', () => { - const options = createHttpOptions(); - - const httpDriver = createHttpDriverWithOptions({ options }); - - const { levels, identifier } = httpDriver.config; - expect(levels).toEqual(['verbose']); - expect(identifier).toEqual(LumberjackHttpDriver.driverIdentifier); - }); - - it('does register the specified log driver configuration when the lumberjack module is imported after the http driver module', () => { - const options = createHttpOptions(); - - const httpDriver = createHttpDriverWithOptions({ - options, - isLumberjackModuleImportedFirst: false, - }); - - const actualConfig = httpDriver.config; - const expectedConfig: LumberjackHttpDriverInternalConfig = { - ...options, - levels: ['verbose'], - identifier: LumberjackHttpDriver.driverIdentifier, - }; - expect(actualConfig).toEqual(expectedConfig); - }); - }); -}); diff --git a/packages/ngworker/lumberjack/http-driver/src/lib/configuration/lumberjack-http-driver.module.ts b/packages/ngworker/lumberjack/http-driver/src/lib/configuration/lumberjack-http-driver.module.ts deleted file mode 100644 index 45974b76b..000000000 --- a/packages/ngworker/lumberjack/http-driver/src/lib/configuration/lumberjack-http-driver.module.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { ModuleWithProviders, NgModule } from '@angular/core'; - -import { LumberjackHttpDriverRootModule } from './lumberjack-http-driver-root.module'; -import { LumberjackHttpDriverConfig } from './lumberjack-http-driver.config'; -import { LumberjackHttpDriverOptions } from './lumberjack-http-driver.options'; -import { - HttpClientFeatures, - provideLumberjackHttpDriver, - withHttpConfig, - withHttpOptions, -} from './provide-lumberjack-http-driver'; - -/** - * The HTTP driver Angular module is used to configure and register the HTTP - * driver. - * - * NOTE! Do not import `LumberjackHttpDriverModule` directly. Use - * `LumberjackHttpDriverModule.forRoot` or - * `LumberjackHttpDriverModule.withOptions`. - * - * @deprecated Use standalone provider function `provideLumberjackHttpDriver` instead. NgModules will be removed in Lumberjack 18. - * - */ -@NgModule() -export class LumberjackHttpDriverModule { - /** - * Configure and register the HTTP driver, including settings that log drivers - * have in common. - * - * @param config Settings used by the HTTP driver. - */ - static forRoot( - config: LumberjackHttpDriverConfig, - ...features: HttpClientFeatures - ): ModuleWithProviders { - return { - ngModule: LumberjackHttpDriverRootModule, - providers: [provideLumberjackHttpDriver(withHttpConfig(config), ...features)], - }; - } - - /** - * Configure and register the HTTP driver, but fall back on the default log - * driver settings for settings that log drivers have in common. - * @param options Settings used by the HTTP driver. - */ - static withOptions( - options: LumberjackHttpDriverOptions, - ...features: HttpClientFeatures - ): ModuleWithProviders { - return { - ngModule: LumberjackHttpDriverRootModule, - providers: [provideLumberjackHttpDriver(withHttpOptions(options), ...features)], - }; - } - - constructor() { - throw new Error('Do not import LumberjackHttpDriverModule directly. Use LumberjackHttpDriverModule.forRoot.'); - } -} diff --git a/packages/ngworker/lumberjack/http-driver/src/lib/configuration/provide-lumberjack-http-driver.spec.ts b/packages/ngworker/lumberjack/http-driver/src/lib/configuration/provide-lumberjack-http-driver.spec.ts index fc31aec18..ae5bd4f29 100644 --- a/packages/ngworker/lumberjack/http-driver/src/lib/configuration/provide-lumberjack-http-driver.spec.ts +++ b/packages/ngworker/lumberjack/http-driver/src/lib/configuration/provide-lumberjack-http-driver.spec.ts @@ -55,11 +55,11 @@ function createHttpConfig( const createHttpDriver = ( { config, - isLumberjackModuleProvidedFirst = true, + isLumberjackProvidedFirst = true, features = [], }: { config: LumberjackHttpDriverConfig; - isLumberjackModuleProvidedFirst?: boolean; + isLumberjackProvidedFirst?: boolean; features?: HttpClientFeatures; } = { config: createHttpConfig(['verbose'], LumberjackHttpDriver.driverIdentifier), @@ -67,9 +67,9 @@ const createHttpDriver = ( ) => { TestBed.configureTestingModule({ providers: [ - isLumberjackModuleProvidedFirst ? provideLumberjack() : [], + isLumberjackProvidedFirst ? provideLumberjack() : [], provideLumberjackHttpDriver(withHttpConfig(config), ...features), - isLumberjackModuleProvidedFirst ? [] : provideLumberjack(), + isLumberjackProvidedFirst ? [] : provideLumberjack(), ], }); @@ -80,20 +80,20 @@ const createHttpDriver = ( const createHttpDriverWithOptions = ( { - isLumberjackModuleProvidedFirst = true, + isLumberjackProvidedFirst = true, options, features = [], }: { - isLumberjackModuleProvidedFirst?: boolean; + isLumberjackProvidedFirst?: boolean; options: LumberjackHttpDriverOptions; features?: HttpClientFeatures; } = { options: createHttpOptions() } ) => { TestBed.configureTestingModule({ providers: [ - isLumberjackModuleProvidedFirst ? provideLumberjack() : [], + isLumberjackProvidedFirst ? provideLumberjack() : [], provideLumberjackHttpDriver(withHttpOptions(options), ...features), - isLumberjackModuleProvidedFirst ? [] : provideLumberjack(), + isLumberjackProvidedFirst ? [] : provideLumberjack(), ], }); @@ -133,7 +133,7 @@ describe(provideLumberjackHttpDriver.name, () => { const httpDriver = createHttpDriver({ config: expectedConfig, - isLumberjackModuleProvidedFirst: false, + isLumberjackProvidedFirst: false, }); const actualConfig = httpDriver.config; @@ -213,7 +213,7 @@ describe(provideLumberjackHttpDriver.name, () => { const httpDriver = createHttpDriverWithOptions({ options, - isLumberjackModuleProvidedFirst: false, + isLumberjackProvidedFirst: false, }); const actualConfig = httpDriver.config; diff --git a/packages/ngworker/lumberjack/src/configuration-api.spec.ts b/packages/ngworker/lumberjack/src/configuration-api.spec.ts index 05906650b..f45dc03c7 100644 --- a/packages/ngworker/lumberjack/src/configuration-api.spec.ts +++ b/packages/ngworker/lumberjack/src/configuration-api.spec.ts @@ -1,6 +1,6 @@ import { InjectionToken } from '@angular/core'; -import { isClass, isFunction } from '@internal/test-util'; +import { isFunction } from '@internal/test-util'; import { LumberjackConfig, @@ -8,9 +8,7 @@ import { LumberjackFormatFunction, LumberjackLogDriverConfig, lumberjackLogDriverConfigToken, - LumberjackModule, LumberjackOptions, - LumberjackRootModule, provideLumberjack, } from './index'; @@ -43,20 +41,6 @@ describe('Configuration API', () => { }); }); - describe('Angular modules', () => { - it(`exposes ${LumberjackModule.name}`, () => { - const sut = LumberjackModule; - - expect(isClass(sut)).toBeTruthy(); - }); - - it(`exposes ${LumberjackRootModule.name}`, () => { - const sut = LumberjackRootModule; - - expect(isClass(sut)).toBeTruthy(); - }); - }); - describe('Provider functions', () => { it(`exposes ${provideLumberjack.name}`, () => { const sut = provideLumberjack; diff --git a/packages/ngworker/lumberjack/src/index.ts b/packages/ngworker/lumberjack/src/index.ts index af80a4ec0..2637f9039 100644 --- a/packages/ngworker/lumberjack/src/index.ts +++ b/packages/ngworker/lumberjack/src/index.ts @@ -8,9 +8,7 @@ export { LumberjackFormatFunction } from './lib/configuration/lumberjack-format- export { LumberjackLogDriverConfig } from './lib/configuration/lumberjack-log-driver.config'; export { lumberjackLogDriverConfigToken } from './lib/configuration/lumberjack-log-driver-config.token'; export { LumberjackConfig } from './lib/configuration/lumberjack.config'; -export { LumberjackModule } from './lib/configuration/lumberjack.module'; export { LumberjackOptions } from './lib/configuration/lumberjack.options'; -export { LumberjackRootModule } from './lib/configuration/lumberjack-root.module'; export { provideLumberjack } from './lib/configuration/provide-lumberjack'; // Log drivers diff --git a/packages/ngworker/lumberjack/src/lib/configuration/lumberjack-config.token.ts b/packages/ngworker/lumberjack/src/lib/configuration/lumberjack-config.token.ts index 1d5eb151e..3cbdbf2a6 100644 --- a/packages/ngworker/lumberjack/src/lib/configuration/lumberjack-config.token.ts +++ b/packages/ngworker/lumberjack/src/lib/configuration/lumberjack-config.token.ts @@ -3,7 +3,7 @@ import { InjectionToken } from '@angular/core'; import { LumberjackConfig } from './lumberjack.config'; /** - * The Lumberjack configuration token is used internally by `LumberjackModule` + * The Lumberjack configuration token is used internally by `provideLumberjack` function. * and various Lumberjack services. */ export const lumberjackConfigToken: InjectionToken = new InjectionToken('__LUMBERJACK_CONFIG__'); diff --git a/packages/ngworker/lumberjack/src/lib/configuration/lumberjack-log-driver-config.token.ts b/packages/ngworker/lumberjack/src/lib/configuration/lumberjack-log-driver-config.token.ts index 6a83c2b6c..ae95c3054 100644 --- a/packages/ngworker/lumberjack/src/lib/configuration/lumberjack-log-driver-config.token.ts +++ b/packages/ngworker/lumberjack/src/lib/configuration/lumberjack-log-driver-config.token.ts @@ -4,7 +4,7 @@ import { LumberjackLogDriverConfig } from './lumberjack-log-driver.config'; /** * The Lumberjack log driver configuration token is used internally by - * `LumberjackModule`, various internal Lumberjack services, and log drivers. + * `provideLumberjack` function, various internal Lumberjack services, and log drivers. */ export const lumberjackLogDriverConfigToken: InjectionToken = new InjectionToken( '__LUMBERJACK_LOG_DRIVER_CONFIG__' diff --git a/packages/ngworker/lumberjack/src/lib/configuration/lumberjack-root.module.spec.ts b/packages/ngworker/lumberjack/src/lib/configuration/lumberjack-root.module.spec.ts deleted file mode 100644 index cb36a41d2..000000000 --- a/packages/ngworker/lumberjack/src/lib/configuration/lumberjack-root.module.spec.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { expectNgModuleToBeGuardedAgainstDuplicateRegistration } from '@internal/test-util'; - -import { LumberjackRootModule } from './lumberjack-root.module'; - -describe(LumberjackRootModule.name, () => { - it('guards against being registered in multiple injectors', async () => { - await expectNgModuleToBeGuardedAgainstDuplicateRegistration(LumberjackRootModule); - }); -}); diff --git a/packages/ngworker/lumberjack/src/lib/configuration/lumberjack-root.module.ts b/packages/ngworker/lumberjack/src/lib/configuration/lumberjack-root.module.ts deleted file mode 100644 index 01754a47b..000000000 --- a/packages/ngworker/lumberjack/src/lib/configuration/lumberjack-root.module.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { inject, NgModule } from '@angular/core'; - -/** - * Do not import directly. Use `LumberjackModule.forRoot`. - * - * @deprecated Use standalone provider function `provideLumberjack` instead. NgModules will be removed in Lumberjack 18. - */ -@NgModule() -export class LumberjackRootModule { - readonly #maybeNgModuleFromParentInjector = inject(LumberjackRootModule, { - optional: true, - skipSelf: true, - }); - - constructor() { - if (this.#maybeNgModuleFromParentInjector) { - throw new Error( - 'LumberjackModule.forRoot registered in multiple injectors. Only call it from your root injector such as in AppModule.' - ); - } - } -} diff --git a/packages/ngworker/lumberjack/src/lib/configuration/lumberjack.module.spec.ts b/packages/ngworker/lumberjack/src/lib/configuration/lumberjack.module.spec.ts deleted file mode 100644 index 80b9bdb08..000000000 --- a/packages/ngworker/lumberjack/src/lib/configuration/lumberjack.module.spec.ts +++ /dev/null @@ -1,158 +0,0 @@ -import { TestBed } from '@angular/core/testing'; - -import { expectNgModuleToBeGuardedAgainstDirectImport } from '@internal/test-util'; - -import { isProductionEnvironmentToken } from '../environment/is-production-environment.token'; -import { lumberjackFormatLog } from '../formatting/lumberjack-format-log'; -import { utcTimestampFor } from '../formatting/utc-timestamp-for'; -import { LumberjackLog } from '../logs/lumberjack.log'; - -import { defaultDevelopmentLevels } from './default-development-levels'; -import { defaultProductionLevels } from './default-production-levels'; -import { lumberjackConfigToken } from './lumberjack-config.token'; -import { lumberjackLogDriverConfigToken } from './lumberjack-log-driver-config.token'; -import { LumberjackLogDriverConfig } from './lumberjack-log-driver.config'; -import { LumberjackConfig } from './lumberjack.config'; -import { LumberjackModule } from './lumberjack.module'; -import { LumberjackOptions } from './lumberjack.options'; - -describe(LumberjackModule.name, () => { - it(`cannot be imported without using the ${LumberjackModule.forRoot.name} method`, () => { - expectNgModuleToBeGuardedAgainstDirectImport(LumberjackModule); - }); - - describe(LumberjackModule.forRoot.name, () => { - it('accepts a Lumberjack configuration', () => { - const expectedConfig: LumberjackConfig = { - format: ({ message }) => message, - levels: ['debug'], - }; - - TestBed.configureTestingModule({ - imports: [LumberjackModule.forRoot(expectedConfig)], - }); - - const actualConfig = TestBed.inject(lumberjackConfigToken); - expect(actualConfig).toEqual(expectedConfig); - }); - - it('accepts Lumberjack options in development mode', () => { - const config: LumberjackOptions = { - format: ({ message }) => message, - }; - const expectedConfig: LumberjackOptions = { - ...config, - levels: defaultDevelopmentLevels, - }; - - TestBed.configureTestingModule({ - imports: [LumberjackModule.forRoot(config)], - providers: [{ provide: isProductionEnvironmentToken, useValue: false }], - }); - - const actualConfig = TestBed.inject(lumberjackConfigToken); - expect(actualConfig).toEqual(expectedConfig as LumberjackConfig); - }); - - it('accepts Lumberjack options in production mode', () => { - const config: LumberjackOptions = { - format: ({ message }) => message, - }; - const expectedConfig: LumberjackOptions = { - ...config, - levels: defaultProductionLevels, - }; - - TestBed.configureTestingModule({ - imports: [LumberjackModule.forRoot(config)], - providers: [{ provide: isProductionEnvironmentToken, useValue: true }], - }); - - const actualConfig = TestBed.inject(lumberjackConfigToken); - expect(actualConfig).toEqual(expectedConfig as LumberjackConfig); - }); - - it('provides a default Lumberjack configuration in development mode', () => { - TestBed.configureTestingModule({ - imports: [LumberjackModule.forRoot()], - providers: [{ provide: isProductionEnvironmentToken, useValue: false }], - }); - - const actualConfig = TestBed.inject(lumberjackConfigToken); - expect(actualConfig).toEqual({ - levels: defaultDevelopmentLevels, - format: expect.any(Function), - }); - }); - - it('provides a default Lumberjack configuration in production mode', () => { - TestBed.configureTestingModule({ - imports: [LumberjackModule.forRoot()], - providers: [{ provide: isProductionEnvironmentToken, useValue: true }], - }); - - const actualConfig = TestBed.inject(lumberjackConfigToken); - expect(actualConfig).toEqual({ - format: lumberjackFormatLog, - levels: defaultProductionLevels, - }); - }); - - it('provides a default log driver configuration', () => { - TestBed.configureTestingModule({ - imports: [LumberjackModule.forRoot()], - }); - const logConfig = TestBed.inject(lumberjackConfigToken); - const defaultLogDriverConfig: Omit = { - levels: logConfig.levels, - }; - - const actualConfig = TestBed.inject(lumberjackLogDriverConfigToken); - expect(actualConfig).toEqual(defaultLogDriverConfig as LumberjackLogDriverConfig); - }); - - describe('Default format function', () => { - const fakeTicks = Date.now(); - let fakeTimestamp: string; - beforeEach(() => { - TestBed.configureTestingModule({ - imports: [LumberjackModule.forRoot()], - }); - fakeTimestamp = utcTimestampFor(fakeTicks); - }); - - it('formats a log with a scope', () => { - const logWithScope: LumberjackLog = { - scope: 'TestSuite', - createdAt: fakeTicks, - level: 'critical', - message: 'Test Message', - }; - - const { scope, level, message } = logWithScope; - - const expectedFormattedLog = `${level} ${fakeTimestamp} [${scope}] ${message}`; - - const { format } = TestBed.inject(lumberjackConfigToken); - - expect(format(logWithScope)).toBe(expectedFormattedLog); - }); - - it('formats a log with no scope', () => { - const logWithoutScope: LumberjackLog = { - createdAt: fakeTicks, - level: 'critical', - message: 'Test Message', - }; - - const { level, message } = logWithoutScope; - - const expectedFormattedLog = `${level} ${fakeTimestamp} ${message}`; - - const { format } = TestBed.inject(lumberjackConfigToken); - - expect(format(logWithoutScope)).toEqual(expectedFormattedLog); - }); - }); - }); -}); diff --git a/packages/ngworker/lumberjack/src/lib/configuration/lumberjack.module.ts b/packages/ngworker/lumberjack/src/lib/configuration/lumberjack.module.ts deleted file mode 100644 index 10c9e8a54..000000000 --- a/packages/ngworker/lumberjack/src/lib/configuration/lumberjack.module.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { ModuleWithProviders, NgModule } from '@angular/core'; - -import { LumberjackRootModule } from './lumberjack-root.module'; -import { LumberjackOptions } from './lumberjack.options'; -import { provideLumberjack } from './provide-lumberjack'; - -/** - * The Lumberjack Angular module is used to register necessary Lumberjack - * services and configure shared settings. - * - * NOTE! Do not import `LumberjackModule` directly. Use - * `LumberjackModule.forRoot`. - * - * @deprecated Use standalone provider function `provideLumberjack` instead. NgModules will be removed in Lumberjack 18. - */ -@NgModule() -export class LumberjackModule { - /** - * Register necessary Lumberjack services and configure shared settings. - * - * @param options Settings shared throughout Lumberjack services and log - * drivers. - */ - static forRoot(options?: LumberjackOptions): ModuleWithProviders { - return { - ngModule: LumberjackRootModule, - providers: [provideLumberjack(options)], - }; - } - - constructor() { - throw new Error('Do not import LumberjackModule directly. Use LumberjackModule.forRoot.'); - } -} diff --git a/packages/ngworker/lumberjack/src/lib/configuration/lumberjack.options.ts b/packages/ngworker/lumberjack/src/lib/configuration/lumberjack.options.ts index 53a5a1e2e..f52f576b8 100644 --- a/packages/ngworker/lumberjack/src/lib/configuration/lumberjack.options.ts +++ b/packages/ngworker/lumberjack/src/lib/configuration/lumberjack.options.ts @@ -1,6 +1,6 @@ import { LumberjackConfig } from './lumberjack.config'; /** - * Shared Lumberjack settings used by `LumberjackModule`. + * Shared Lumberjack settings used by `provideLumberjack` function. */ export type LumberjackOptions = Partial; diff --git a/packages/ngworker/lumberjack/src/lib/formatting/format-log-driver-error.spec.ts b/packages/ngworker/lumberjack/src/lib/formatting/format-log-driver-error.spec.ts index df651f494..ac7b04886 100644 --- a/packages/ngworker/lumberjack/src/lib/formatting/format-log-driver-error.spec.ts +++ b/packages/ngworker/lumberjack/src/lib/formatting/format-log-driver-error.spec.ts @@ -2,13 +2,13 @@ import { TestBed } from '@angular/core/testing'; import { NoopDriver, provideNoopDriver } from '@internal/test-util'; -import { LumberjackModule } from '../configuration/lumberjack.module'; import { LumberjackLogDriver } from '../log-drivers/lumberjack-log-driver'; import { LumberjackLogDriverError } from '../log-drivers/lumberjack-log-driver-error'; import { lumberjackLogDriverToken } from '../log-drivers/lumberjack-log-driver.token'; import { LumberjackLogFactory } from '../logging/lumberjack-log-factory'; import { LumberjackLogPayload } from '../logs/lumberjack-log-payload'; import { LumberjackLog } from '../logs/lumberjack.log'; +import { provideLumberjack } from '../configuration/provide-lumberjack'; import { formatLogDriverError } from './format-log-driver-error'; import { lumberjackFormatLog } from './lumberjack-format-log'; @@ -16,8 +16,7 @@ import { lumberjackFormatLog } from './lumberjack-format-log'; describe(formatLogDriverError.name, () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [LumberjackModule.forRoot()], - providers: [provideNoopDriver()], + providers: [provideLumberjack(), provideNoopDriver()], }); const [_logDriver] = TestBed.inject(lumberjackLogDriverToken) as unknown as LumberjackLogDriver[]; logDriver = _logDriver; diff --git a/packages/ngworker/lumberjack/src/lib/formatting/lumberjack-format-log.spec.ts b/packages/ngworker/lumberjack/src/lib/formatting/lumberjack-format-log.spec.ts index 0eac5d4f4..cd096d223 100644 --- a/packages/ngworker/lumberjack/src/lib/formatting/lumberjack-format-log.spec.ts +++ b/packages/ngworker/lumberjack/src/lib/formatting/lumberjack-format-log.spec.ts @@ -1,12 +1,12 @@ import { TestBed } from '@angular/core/testing'; -import { LumberjackModule } from '../configuration/lumberjack.module'; import { LumberjackLogFactory } from '../logging/lumberjack-log-factory'; import { LumberjackLogBuilder } from '../logging/lumberjack-log.builder'; import { LumberjackLevel } from '../logs/lumberjack-level'; import { LogLevel, LumberjackLogLevel } from '../logs/lumberjack-log-level'; import { LumberjackLog } from '../logs/lumberjack.log'; import { LumberjackTimeService } from '../time/lumberjack-time.service'; +import { provideLumberjack } from '../configuration/provide-lumberjack'; import { lumberjackFormatLog } from './lumberjack-format-log'; @@ -29,7 +29,7 @@ function parseFormattedLog(formattedLog: string) { describe(lumberjackFormatLog.name, () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [LumberjackModule.forRoot()], + providers: [provideLumberjack()], }); logFactory = TestBed.inject(LumberjackLogFactory); diff --git a/packages/ngworker/lumberjack/src/lib/formatting/lumberjack-log-formatter.service.spec.ts b/packages/ngworker/lumberjack/src/lib/formatting/lumberjack-log-formatter.service.spec.ts index 5a6ef1e5a..802ae3828 100644 --- a/packages/ngworker/lumberjack/src/lib/formatting/lumberjack-log-formatter.service.spec.ts +++ b/packages/ngworker/lumberjack/src/lib/formatting/lumberjack-log-formatter.service.spec.ts @@ -2,11 +2,11 @@ import { TestBed } from '@angular/core/testing'; import { FakeTimeService } from '@internal/test-util'; -import { LumberjackModule } from '../configuration/lumberjack.module'; import { LumberjackOptions } from '../configuration/lumberjack.options'; import { LumberjackLogFactory } from '../logging/lumberjack-log-factory'; import { LumberjackLog } from '../logs/lumberjack.log'; import { LumberjackTimeService } from '../time/lumberjack-time.service'; +import { provideLumberjack } from '../configuration/provide-lumberjack'; import { LumberjackLogFormatter } from './lumberjack-log-formatter.service'; @@ -24,8 +24,7 @@ const logFormattingErrorScope = 'LumberjackLogFormattingError'; describe(LumberjackLogFormatter.name, () => { function setup(options?: LumberjackOptions) { TestBed.configureTestingModule({ - imports: [LumberjackModule.forRoot(options)], - providers: [{ provide: LumberjackTimeService, useClass: FakeTimeService }], + providers: [provideLumberjack(options), { provide: LumberjackTimeService, useClass: FakeTimeService }], }); const service = TestBed.inject(LumberjackLogFormatter); diff --git a/packages/ngworker/lumberjack/src/lib/logging/lumberjack-log-factory.spec.ts b/packages/ngworker/lumberjack/src/lib/logging/lumberjack-log-factory.spec.ts index 81d8de820..312950ea5 100644 --- a/packages/ngworker/lumberjack/src/lib/logging/lumberjack-log-factory.spec.ts +++ b/packages/ngworker/lumberjack/src/lib/logging/lumberjack-log-factory.spec.ts @@ -4,6 +4,7 @@ import { FakeTimeService } from '@internal/test-util'; import { LumberjackLogPayload } from '../logs/lumberjack-log-payload'; import { LumberjackTimeService } from '../time/lumberjack-time.service'; +import { provideLumberjack } from '../configuration/provide-lumberjack'; import { LumberjackLogFactory } from './lumberjack-log-factory'; import { LumberjackLogBuilder } from './lumberjack-log.builder'; @@ -11,7 +12,11 @@ import { LumberjackLogBuilder } from './lumberjack-log.builder'; describe(LumberjackLogFactory.name, () => { beforeEach(() => { TestBed.configureTestingModule({ - providers: [{ provide: LumberjackTimeService, useClass: FakeTimeService }, LumberjackLogFactory], + providers: [ + provideLumberjack(), + { provide: LumberjackTimeService, useClass: FakeTimeService }, + LumberjackLogFactory, + ], }); fakeTime = TestBed.inject(LumberjackTimeService) as FakeTimeService; diff --git a/packages/ngworker/lumberjack/src/lib/logging/lumberjack-logger.builder.spec.ts b/packages/ngworker/lumberjack/src/lib/logging/lumberjack-logger.builder.spec.ts index 0027db9f6..04e3c678e 100644 --- a/packages/ngworker/lumberjack/src/lib/logging/lumberjack-logger.builder.spec.ts +++ b/packages/ngworker/lumberjack/src/lib/logging/lumberjack-logger.builder.spec.ts @@ -2,11 +2,11 @@ import { TestBed } from '@angular/core/testing'; import { FakeTimeService } from '@internal/test-util'; -import { LumberjackModule } from '../configuration/lumberjack.module'; import { LogLevel, LumberjackLogLevel } from '../logs/lumberjack-log-level'; import { LumberjackLogPayload } from '../logs/lumberjack-log-payload'; import { LumberjackLog } from '../logs/lumberjack.log'; import { LumberjackTimeService } from '../time/lumberjack-time.service'; +import { provideLumberjack } from '../configuration/provide-lumberjack'; import { LumberjackLogBuilder } from './lumberjack-log.builder'; import { LumberjackLoggerBuilder } from './lumberjack-logger.builder'; @@ -23,8 +23,7 @@ describe(LumberjackLoggerBuilder.name, () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [LumberjackModule.forRoot()], - providers: [{ provide: LumberjackTimeService, useClass: FakeTimeService }], + providers: [provideLumberjack(), { provide: LumberjackTimeService, useClass: FakeTimeService }], }); fakeTime = TestBed.inject(LumberjackTimeService) as FakeTimeService; diff --git a/packages/ngworker/lumberjack/src/lib/logging/lumberjack-logger.service.spec.ts b/packages/ngworker/lumberjack/src/lib/logging/lumberjack-logger.service.spec.ts index 8830a433d..a56e8e2cb 100644 --- a/packages/ngworker/lumberjack/src/lib/logging/lumberjack-logger.service.spec.ts +++ b/packages/ngworker/lumberjack/src/lib/logging/lumberjack-logger.service.spec.ts @@ -3,10 +3,10 @@ import { TestBed } from '@angular/core/testing'; import { FakeTimeService } from '@internal/test-util'; -import { LumberjackModule } from '../configuration/lumberjack.module'; import { LumberjackLogPayload } from '../logs/lumberjack-log-payload'; import { LumberjackLog } from '../logs/lumberjack.log'; import { LumberjackTimeService } from '../time/lumberjack-time.service'; +import { provideLumberjack } from '../configuration/provide-lumberjack'; import { LumberjackLogFactory } from './lumberjack-log-factory'; import { LumberjackLogger } from './lumberjack-logger.service'; @@ -29,8 +29,7 @@ export class TestLogger extends LumberjackLogger { describe(LumberjackLogger.name, () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [LumberjackModule.forRoot()], - providers: [{ provide: LumberjackTimeService, useClass: FakeTimeService }], + providers: [provideLumberjack(), { provide: LumberjackTimeService, useClass: FakeTimeService }], }); const lumberjack = TestBed.inject(LumberjackService); lumberjackLogSpy = jest.spyOn(lumberjack, 'log').mockImplementation(() => { diff --git a/packages/ngworker/lumberjack/src/lib/logging/scoped-lumberjack-logger.service.spec.ts b/packages/ngworker/lumberjack/src/lib/logging/scoped-lumberjack-logger.service.spec.ts index 607303916..f604e88a6 100644 --- a/packages/ngworker/lumberjack/src/lib/logging/scoped-lumberjack-logger.service.spec.ts +++ b/packages/ngworker/lumberjack/src/lib/logging/scoped-lumberjack-logger.service.spec.ts @@ -3,10 +3,10 @@ import { TestBed } from '@angular/core/testing'; import { FakeTimeService } from '@internal/test-util'; -import { LumberjackModule } from '../configuration/lumberjack.module'; import { LumberjackLogPayload } from '../logs/lumberjack-log-payload'; import { LumberjackLog } from '../logs/lumberjack.log'; import { LumberjackTimeService } from '../time/lumberjack-time.service'; +import { provideLumberjack } from '../configuration/provide-lumberjack'; import { LumberjackLogFactory } from './lumberjack-log-factory'; import { LumberjackService } from './lumberjack.service'; @@ -31,8 +31,7 @@ export class TestLogger extends ScopedLumberjackLogger { describe(ScopedLumberjackLogger.name, () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [LumberjackModule.forRoot()], - providers: [{ provide: LumberjackTimeService, useClass: FakeTimeService }], + providers: [provideLumberjack(), { provide: LumberjackTimeService, useClass: FakeTimeService }], }); logger = TestBed.inject(TestLogger); logFactory = TestBed.inject(LumberjackLogFactory); diff --git a/packages/ngworker/lumberjack/src/lib/time/lumberjack-time.service.spec.ts b/packages/ngworker/lumberjack/src/lib/time/lumberjack-time.service.spec.ts index e94979a1a..67f6600cc 100644 --- a/packages/ngworker/lumberjack/src/lib/time/lumberjack-time.service.spec.ts +++ b/packages/ngworker/lumberjack/src/lib/time/lumberjack-time.service.spec.ts @@ -1,13 +1,13 @@ import { TestBed } from '@angular/core/testing'; -import { LumberjackModule } from '../configuration/lumberjack.module'; +import { provideLumberjack } from '../configuration/provide-lumberjack'; import { LumberjackTimeService } from './lumberjack-time.service'; describe(LumberjackTimeService.name, () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [LumberjackModule.forRoot()], + providers: [provideLumberjack()], }); service = TestBed.inject(LumberjackTimeService); });