opinionated-machine 2.3.0 → 2.5.0

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.
@@ -1,4 +1,4 @@
1
- import { type NameAndRegistrationPair } from 'awilix';
1
+ import { type AwilixContainer, type NameAndRegistrationPair } from 'awilix';
2
2
  import type { AbstractModule } from './AbstractModule.js';
3
3
  import { DIContext, type DependencyInjectionOptions } from './DIContext.js';
4
4
  type NestedPartial<T> = {
@@ -12,10 +12,11 @@ export type CreateTestContextParams<Dependencies, Config extends object> = {
12
12
  configOverrides?: ConfigOverrides<Config>;
13
13
  };
14
14
  export declare abstract class AbstractTestContextFactory<Dependencies extends object, ExternalDependencies, Config extends object> {
15
+ diContainer: AwilixContainer<Dependencies>;
15
16
  private readonly externalDependencies;
16
17
  protected configDependencyId: string;
17
18
  private readonly allModules;
18
- constructor(externalDependencies: ExternalDependencies, allModules: readonly AbstractModule<unknown>[]);
19
+ constructor(externalDependencies: ExternalDependencies, allModules: readonly AbstractModule<unknown>[], diContainer?: AwilixContainer);
19
20
  resetExternalDependencies(): void;
20
21
  abstract resolveBaseAppConfig(): Config;
21
22
  createTestContext(params?: CreateTestContextParams<Dependencies, Config>): Promise<DIContext<Dependencies, ExternalDependencies>>;
@@ -3,21 +3,24 @@ import { merge } from 'ts-deepmerge';
3
3
  import { DIContext } from './DIContext.js';
4
4
  import { asSingletonFunction } from './resolverFunctions.js';
5
5
  export class AbstractTestContextFactory {
6
+ diContainer;
6
7
  externalDependencies;
7
8
  configDependencyId = 'config'; // override in subclass if different
8
9
  allModules;
9
- constructor(externalDependencies, allModules) {
10
+ constructor(externalDependencies, allModules, diContainer) {
10
11
  this.externalDependencies = externalDependencies;
11
12
  this.allModules = allModules;
13
+ this.diContainer =
14
+ diContainer ??
15
+ createContainer({
16
+ injectionMode: 'PROXY',
17
+ });
12
18
  }
13
19
  resetExternalDependencies() {
14
20
  // Override if necessary
15
21
  }
16
22
  async createTestContext(params = {}) {
17
- const diContainer = createContainer({
18
- injectionMode: 'PROXY',
19
- });
20
- const context = new DIContext(diContainer, params.diOptions ?? {});
23
+ const context = new DIContext(this.diContainer, params.diOptions ?? {});
21
24
  const dependencyOverrides = params.configOverrides
22
25
  ? {
23
26
  ...params.dependencyOverrides,
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractTestContextFactory.js","sourceRoot":"","sources":["../../lib/AbstractTestContextFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgC,eAAe,EAAE,MAAM,QAAQ,CAAA;AACtE,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AAEpC,OAAO,EAAE,SAAS,EAAmC,MAAM,gBAAgB,CAAA;AAC3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAe5D,MAAM,OAAgB,0BAA0B;IAK7B,oBAAoB,CAAsB;IACjD,kBAAkB,GAAG,QAAQ,CAAA,CAAC,oCAAoC;IAC3D,UAAU,CAAoC;IAE/D,YACE,oBAA0C,EAC1C,UAA8C;QAE9C,IAAI,CAAC,oBAAoB,GAAG,oBAAoB,CAAA;QAChD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;IAC9B,CAAC;IAED,yBAAyB;QACvB,wBAAwB;IAC1B,CAAC;IAID,KAAK,CAAC,iBAAiB,CACrB,SAAwD,EAAE;QAE1D,MAAM,WAAW,GAAG,eAAe,CAAC;YAClC,aAAa,EAAE,OAAO;SACvB,CAAC,CAAA;QAEF,MAAM,OAAO,GAAG,IAAI,SAAS,CAC3B,WAAW,EACX,MAAM,CAAC,SAAS,IAAI,EAAE,CACvB,CAAA;QAED,MAAM,mBAAmB,GAAG,MAAM,CAAC,eAAe;YAChD,CAAC,CAAE;gBACC,GAAG,MAAM,CAAC,mBAAmB;gBAC7B,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,mBAAmB,CAAC,GAAG,EAAE;oBAClD,iFAAiF;oBACjF,OAAO,KAAK,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,MAAM,CAAC,eAAgB,CAAC,CAAA;gBACpE,CAAC,CAAC;aACuC;YAC7C,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAA;QAE9B,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,CAAA;QACjD,OAAO,CAAC,oBAAoB,CAC1B;YACE,mBAAmB;YACnB,OAAO;SACR,EACD,IAAI,CAAC,oBAAoB,EACzB,KAAK,CACN,CAAA;QAED,MAAM,OAAO,CAAC,IAAI,EAAE,CAAA;QAEpB,OAAO,OAAO,CAAA;IAChB,CAAC;CACF"}
1
+ {"version":3,"file":"AbstractTestContextFactory.js","sourceRoot":"","sources":["../../lib/AbstractTestContextFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsD,eAAe,EAAE,MAAM,QAAQ,CAAA;AAC5F,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AAEpC,OAAO,EAAE,SAAS,EAAmC,MAAM,gBAAgB,CAAA;AAC3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAe5D,MAAM,OAAgB,0BAA0B;IAKvC,WAAW,CAA+B;IAChC,oBAAoB,CAAsB;IACjD,kBAAkB,GAAG,QAAQ,CAAA,CAAC,oCAAoC;IAC3D,UAAU,CAAoC;IAE/D,YACE,oBAA0C,EAC1C,UAA8C,EAC9C,WAA6B;QAE7B,IAAI,CAAC,oBAAoB,GAAG,oBAAoB,CAAA;QAChD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,WAAW;YACd,WAAW;gBACX,eAAe,CAAC;oBACd,aAAa,EAAE,OAAO;iBACvB,CAAC,CAAA;IACN,CAAC;IAED,yBAAyB;QACvB,wBAAwB;IAC1B,CAAC;IAID,KAAK,CAAC,iBAAiB,CACrB,SAAwD,EAAE;QAE1D,MAAM,OAAO,GAAG,IAAI,SAAS,CAC3B,IAAI,CAAC,WAAW,EAChB,MAAM,CAAC,SAAS,IAAI,EAAE,CACvB,CAAA;QAED,MAAM,mBAAmB,GAAG,MAAM,CAAC,eAAe;YAChD,CAAC,CAAE;gBACC,GAAG,MAAM,CAAC,mBAAmB;gBAC7B,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,mBAAmB,CAAC,GAAG,EAAE;oBAClD,iFAAiF;oBACjF,OAAO,KAAK,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,MAAM,CAAC,eAAgB,CAAC,CAAA;gBACpE,CAAC,CAAC;aACuC;YAC7C,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAA;QAE9B,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,CAAA;QACjD,OAAO,CAAC,oBAAoB,CAC1B;YACE,mBAAmB;YACnB,OAAO;SACR,EACD,IAAI,CAAC,oBAAoB,EACzB,KAAK,CACN,CAAA;QAED,MAAM,OAAO,CAAC,IAAI,EAAE,CAAA;QAEpB,OAAO,OAAO,CAAA;IAChB,CAAC;CACF"}
@@ -19,7 +19,7 @@ export declare class DIContext<Dependencies extends object, ExternalDependencies
19
19
  readonly awilixManager: AwilixManager;
20
20
  readonly diContainer: AwilixContainer<Dependencies>;
21
21
  private readonly controllerResolvers;
22
- constructor(diContainer: AwilixContainer, options: DependencyInjectionOptions);
22
+ constructor(diContainer: AwilixContainer, options: DependencyInjectionOptions, awilixManager?: AwilixManager);
23
23
  private registerModule;
24
24
  registerDependencies(params: RegisterDependenciesParams<Dependencies, ExternalDependencies>, externalDependencies: ExternalDependencies, resolveControllers?: boolean): void;
25
25
  registerRoutes(app: FastifyInstance): void;
@@ -5,16 +5,18 @@ export class DIContext {
5
5
  diContainer;
6
6
  // biome-ignore lint/suspicious/noExplicitAny: all controllers are controllers
7
7
  controllerResolvers;
8
- constructor(diContainer, options) {
8
+ constructor(diContainer, options, awilixManager) {
9
9
  this.options = options;
10
10
  this.diContainer = diContainer;
11
- this.awilixManager = new AwilixManager({
12
- asyncDispose: true,
13
- asyncInit: true,
14
- diContainer,
15
- eagerInject: true,
16
- strictBooleanEnforced: true,
17
- });
11
+ this.awilixManager =
12
+ awilixManager ??
13
+ new AwilixManager({
14
+ asyncDispose: true,
15
+ asyncInit: true,
16
+ diContainer,
17
+ eagerInject: true,
18
+ strictBooleanEnforced: true,
19
+ });
18
20
  this.controllerResolvers = [];
19
21
  }
20
22
  registerModule(module, targetDiConfig, externalDependencies, resolveControllers, isPrimaryModule) {
@@ -1 +1 @@
1
- {"version":3,"file":"DIContext.js","sourceRoot":"","sources":["../../lib/DIContext.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DIContext.js","sourceRoot":"","sources":["../../lib/DIContext.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opinionated-machine",
3
- "version": "2.3.0",
3
+ "version": "2.5.0",
4
4
  "description": "Very opinionated DI framework for fastify, built on top of awilix ",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",