opinionated-machine 2.5.0 → 2.7.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.
package/dist/index.d.ts CHANGED
@@ -1,7 +1,8 @@
1
1
  export { DIContext, type DependencyInjectionOptions, type RegisterDependenciesParams, } from './lib/DIContext.js';
2
2
  export { AbstractModule, type MandatoryNameAndRegistrationPair, type UnionToIntersection, } from './lib/AbstractModule.js';
3
- export { ENABLE_ALL, resolveJobQueuesEnabled, isJobQueueEnabled, isMessageQueueConsumerEnabled, isJobWorkersEnabled, isPeriodicJobEnabled, } from './lib/diConfigUtils.js';
3
+ export { ENABLE_ALL, resolveJobQueuesEnabled, isAnyMessageQueueConsumerEnabled, isJobQueueEnabled, isMessageQueueConsumerEnabled, isJobWorkersEnabled, isPeriodicJobEnabled, } from './lib/diConfigUtils.js';
4
4
  export { AbstractController } from './lib/AbstractController.js';
5
5
  export { asJobQueueClass, asJobWorkerClass, asMessageQueueHandlerClass, asControllerClass, asSingletonClass, asPeriodicJobClass, asSingletonFunction, asServiceClass, asRepositoryClass, asUseCaseClass, } from './lib/resolverFunctions.js';
6
6
  export type { PeriodicJobOptions, JobQueueModuleOptions, MessageQueueConsumerModuleOptions, JobWorkerModuleOptions, } from './lib/resolverFunctions.js';
7
- export { AbstractTestContextFactory, type CreateTestContextParams, type ConfigOverrides, } from './lib/AbstractTestContextFactory.js';
7
+ export { AbstractTestContextFactory, type CreateTestContextParams, } from './lib/AbstractTestContextFactory.js';
8
+ export type { NestedPartial } from './lib/configUtils.ts';
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  export { DIContext, } from './lib/DIContext.js';
2
2
  export { AbstractModule, } from './lib/AbstractModule.js';
3
- export { ENABLE_ALL, resolveJobQueuesEnabled, isJobQueueEnabled, isMessageQueueConsumerEnabled, isJobWorkersEnabled, isPeriodicJobEnabled, } from './lib/diConfigUtils.js';
3
+ export { ENABLE_ALL, resolveJobQueuesEnabled, isAnyMessageQueueConsumerEnabled, isJobQueueEnabled, isMessageQueueConsumerEnabled, isJobWorkersEnabled, isPeriodicJobEnabled, } from './lib/diConfigUtils.js';
4
4
  export { AbstractController } from './lib/AbstractController.js';
5
5
  export { asJobQueueClass, asJobWorkerClass, asMessageQueueHandlerClass, asControllerClass, asSingletonClass, asPeriodicJobClass, asSingletonFunction, asServiceClass, asRepositoryClass, asUseCaseClass, } from './lib/resolverFunctions.js';
6
6
  export { AbstractTestContextFactory, } from './lib/AbstractTestContextFactory.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,GAGV,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACL,cAAc,GAGf,MAAM,yBAAyB,CAAA;AAChC,OAAO,EACL,UAAU,EACV,uBAAuB,EACvB,iBAAiB,EACjB,6BAA6B,EAC7B,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AAChE,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,0BAA0B,EAC1B,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,iBAAiB,EACjB,cAAc,GACf,MAAM,4BAA4B,CAAA;AASnC,OAAO,EACL,0BAA0B,GAG3B,MAAM,qCAAqC,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,GAGV,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACL,cAAc,GAGf,MAAM,yBAAyB,CAAA;AAChC,OAAO,EACL,UAAU,EACV,uBAAuB,EACvB,gCAAgC,EAChC,iBAAiB,EACjB,6BAA6B,EAC7B,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AAChE,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,0BAA0B,EAC1B,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,iBAAiB,EACjB,cAAc,GACf,MAAM,4BAA4B,CAAA;AASnC,OAAO,EACL,0BAA0B,GAE3B,MAAM,qCAAqC,CAAA"}
@@ -1,15 +1,12 @@
1
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
- type NestedPartial<T> = {
5
- [P in keyof T]?: NestedPartial<T[P]>;
6
- };
7
- export type ConfigOverrides<Config> = NestedPartial<Config>;
4
+ import type { NestedPartial } from './configUtils.js';
8
5
  export type CreateTestContextParams<Dependencies, Config extends object> = {
9
6
  modules?: readonly AbstractModule<unknown>[];
10
7
  diOptions?: DependencyInjectionOptions;
11
8
  dependencyOverrides?: NameAndRegistrationPair<Dependencies>;
12
- configOverrides?: ConfigOverrides<Config>;
9
+ configOverrides?: NestedPartial<Config>;
13
10
  };
14
11
  export declare abstract class AbstractTestContextFactory<Dependencies extends object, ExternalDependencies, Config extends object> {
15
12
  diContainer: AwilixContainer<Dependencies>;
@@ -19,6 +16,5 @@ export declare abstract class AbstractTestContextFactory<Dependencies extends ob
19
16
  constructor(externalDependencies: ExternalDependencies, allModules: readonly AbstractModule<unknown>[], diContainer?: AwilixContainer);
20
17
  resetExternalDependencies(): void;
21
18
  abstract resolveBaseAppConfig(): Config;
22
- createTestContext(params?: CreateTestContextParams<Dependencies, Config>): Promise<DIContext<Dependencies, ExternalDependencies>>;
19
+ createTestContext(params?: CreateTestContextParams<Dependencies, Config>): Promise<DIContext<Dependencies, Config, ExternalDependencies>>;
23
20
  }
24
- export {};
@@ -1,7 +1,5 @@
1
1
  import { createContainer } from 'awilix';
2
- import { merge } from 'ts-deepmerge';
3
2
  import { DIContext } from './DIContext.js';
4
- import { asSingletonFunction } from './resolverFunctions.js';
5
3
  export class AbstractTestContextFactory {
6
4
  diContainer;
7
5
  externalDependencies;
@@ -20,19 +18,11 @@ export class AbstractTestContextFactory {
20
18
  // Override if necessary
21
19
  }
22
20
  async createTestContext(params = {}) {
23
- const context = new DIContext(this.diContainer, params.diOptions ?? {});
24
- const dependencyOverrides = params.configOverrides
25
- ? {
26
- ...params.dependencyOverrides,
27
- [this.configDependencyId]: asSingletonFunction(() => {
28
- // biome-ignore lint/style/noNonNullAssertion: there is a ternary condition above
29
- return merge(this.resolveBaseAppConfig(), params.configOverrides);
30
- }),
31
- }
32
- : params.dependencyOverrides;
21
+ const context = new DIContext(this.diContainer, params.diOptions ?? {}, this.resolveBaseAppConfig());
33
22
  const modules = params.modules ?? this.allModules;
34
23
  context.registerDependencies({
35
- dependencyOverrides,
24
+ dependencyOverrides: params.dependencyOverrides,
25
+ configOverrides: params.configOverrides,
36
26
  modules,
37
27
  }, this.externalDependencies, false);
38
28
  await context.init();
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"AbstractTestContextFactory.js","sourceRoot":"","sources":["../../lib/AbstractTestContextFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsD,eAAe,EAAE,MAAM,QAAQ,CAAA;AAE5F,OAAO,EAAE,SAAS,EAAmC,MAAM,gBAAgB,CAAA;AAU3E,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,EACtB,IAAI,CAAC,oBAAoB,EAAE,CAC5B,CAAA;QAED,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,CAAA;QACjD,OAAO,CAAC,oBAAoB,CAC1B;YACE,mBAAmB,EAAE,MAAM,CAAC,mBAAmB;YAC/C,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,OAAO;SACR,EACD,IAAI,CAAC,oBAAoB,EACzB,KAAK,CACN,CAAA;QAED,MAAM,OAAO,CAAC,IAAI,EAAE,CAAA;QAEpB,OAAO,OAAO,CAAA;IAChB,CAAC;CACF"}
@@ -2,11 +2,13 @@ import type { AwilixContainer, NameAndRegistrationPair } from 'awilix';
2
2
  import { AwilixManager } from 'awilix-manager';
3
3
  import type { FastifyInstance } from 'fastify';
4
4
  import type { AbstractModule } from './AbstractModule.js';
5
+ import { type NestedPartial } from './configUtils.js';
5
6
  import type { ENABLE_ALL } from './diConfigUtils.js';
6
- export type RegisterDependenciesParams<Dependencies, ExternalDependencies> = {
7
+ export type RegisterDependenciesParams<Dependencies, Config, ExternalDependencies> = {
7
8
  modules: readonly AbstractModule<unknown, ExternalDependencies>[];
8
9
  secondaryModules?: readonly AbstractModule<unknown, ExternalDependencies>[];
9
10
  dependencyOverrides?: NameAndRegistrationPair<Dependencies>;
11
+ configOverrides?: NestedPartial<Config>;
10
12
  };
11
13
  export type DependencyInjectionOptions = {
12
14
  jobQueuesEnabled?: false | typeof ENABLE_ALL | string[];
@@ -14,14 +16,15 @@ export type DependencyInjectionOptions = {
14
16
  messageQueueConsumersEnabled?: false | typeof ENABLE_ALL | string[];
15
17
  periodicJobsEnabled?: false | typeof ENABLE_ALL | string[];
16
18
  };
17
- export declare class DIContext<Dependencies extends object, ExternalDependencies = undefined> {
19
+ export declare class DIContext<Dependencies extends object, Config extends object, ExternalDependencies = undefined> {
18
20
  private readonly options;
19
21
  readonly awilixManager: AwilixManager;
20
22
  readonly diContainer: AwilixContainer<Dependencies>;
21
23
  private readonly controllerResolvers;
22
- constructor(diContainer: AwilixContainer, options: DependencyInjectionOptions, awilixManager?: AwilixManager);
24
+ private readonly appConfig;
25
+ constructor(diContainer: AwilixContainer, options: DependencyInjectionOptions, appConfig: Config, awilixManager?: AwilixManager);
23
26
  private registerModule;
24
- registerDependencies(params: RegisterDependenciesParams<Dependencies, ExternalDependencies>, externalDependencies: ExternalDependencies, resolveControllers?: boolean): void;
27
+ registerDependencies(params: RegisterDependenciesParams<Dependencies, Config, ExternalDependencies>, externalDependencies: ExternalDependencies, resolveControllers?: boolean): void;
25
28
  registerRoutes(app: FastifyInstance): void;
26
29
  destroy(): Promise<void>;
27
30
  init(): Promise<void>;
@@ -1,13 +1,16 @@
1
1
  import { AwilixManager } from 'awilix-manager';
2
+ import { mergeConfigAndDependencyOverrides } from './configUtils.js';
2
3
  export class DIContext {
3
4
  options;
4
5
  awilixManager;
5
6
  diContainer;
6
7
  // biome-ignore lint/suspicious/noExplicitAny: all controllers are controllers
7
8
  controllerResolvers;
8
- constructor(diContainer, options, awilixManager) {
9
+ appConfig;
10
+ constructor(diContainer, options, appConfig, awilixManager) {
9
11
  this.options = options;
10
12
  this.diContainer = diContainer;
13
+ this.appConfig = appConfig;
11
14
  this.awilixManager =
12
15
  awilixManager ??
13
16
  new AwilixManager({
@@ -33,7 +36,7 @@ export class DIContext {
33
36
  }
34
37
  }
35
38
  registerDependencies(params, externalDependencies, resolveControllers = true) {
36
- const _dependencyOverrides = params.dependencyOverrides ?? {};
39
+ const mergedOverrides = mergeConfigAndDependencyOverrides(this.appConfig, params.configOverrides, params.dependencyOverrides ?? {});
37
40
  const targetDiConfig = {};
38
41
  for (const primaryModule of params.modules) {
39
42
  this.registerModule(primaryModule, targetDiConfig, externalDependencies, resolveControllers, true);
@@ -44,7 +47,9 @@ export class DIContext {
44
47
  }
45
48
  }
46
49
  this.diContainer.register(targetDiConfig);
47
- for (const [dependencyKey, _dependencyValue] of Object.entries(_dependencyOverrides)) {
50
+ // append dependency overrides
51
+ // @ts-expect-error FixMe check this later
52
+ for (const [dependencyKey, _dependencyValue] of Object.entries(mergedOverrides)) {
48
53
  const dependencyValue = { ..._dependencyValue };
49
54
  // preserve lifetime from original resolver
50
55
  const originalResolver = this.diContainer.getRegistration(dependencyKey);
@@ -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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"}
@@ -0,0 +1,8 @@
1
+ import type { NameAndRegistrationPair } from 'awilix';
2
+ export type NestedPartial<T> = {
3
+ [P in keyof T]?: NestedPartial<T[P]>;
4
+ };
5
+ /**
6
+ * Merges incremental changes for config entity with general dependency config overrides
7
+ */
8
+ export declare function mergeConfigAndDependencyOverrides<Dependencies, Config extends object>(baseConfig: Config, configOverrides?: NestedPartial<Config>, dependencyOverrides?: NameAndRegistrationPair<Dependencies>): NameAndRegistrationPair<Dependencies> | undefined;
@@ -0,0 +1,18 @@
1
+ import { merge } from 'ts-deepmerge';
2
+ import { asSingletonFunction } from './resolverFunctions.js';
3
+ /**
4
+ * Merges incremental changes for config entity with general dependency config overrides
5
+ */
6
+ export function mergeConfigAndDependencyOverrides(baseConfig, configOverrides, dependencyOverrides) {
7
+ return configOverrides
8
+ ? {
9
+ ...dependencyOverrides,
10
+ // @ts-expect-error we can't make this type-safe
11
+ [this.configDependencyId]: asSingletonFunction(() => {
12
+ // biome-ignore lint/style/noNonNullAssertion: there is a ternary condition above
13
+ return merge(baseConfig, configOverrides);
14
+ }),
15
+ }
16
+ : dependencyOverrides;
17
+ }
18
+ //# sourceMappingURL=configUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configUtils.js","sourceRoot":"","sources":["../../lib/configUtils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AACpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAM5D;;GAEG;AACH,MAAM,UAAU,iCAAiC,CAC/C,UAAkB,EAClB,eAAuC,EACvC,mBAA2D;IAE3D,OAAO,eAAe;QACpB,CAAC,CAAE;YACC,GAAG,mBAAmB;YACtB,gDAAgD;YAChD,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,mBAAmB,CAAC,GAAG,EAAE;gBAClD,iFAAiF;gBACjF,OAAO,KAAK,CAAC,UAAU,EAAE,eAAgB,CAAC,CAAA;YAC5C,CAAC,CAAC;SACuC;QAC7C,CAAC,CAAC,mBAAmB,CAAA;AACzB,CAAC"}
@@ -5,3 +5,4 @@ export declare const isJobWorkersEnabled: (enabled?: false | typeof ENABLE_ALL |
5
5
  export declare const isPeriodicJobEnabled: (enabled?: false | typeof ENABLE_ALL | string[], name?: string) => boolean;
6
6
  export declare const isJobQueueEnabled: (enabled?: false | typeof ENABLE_ALL | string[], name?: string) => boolean;
7
7
  export declare const isMessageQueueConsumerEnabled: (messageQueueConsumersEnabled?: false | typeof ENABLE_ALL | string[], name?: string) => boolean;
8
+ export declare const isAnyMessageQueueConsumerEnabled: (options: DependencyInjectionOptions) => boolean;
@@ -27,6 +27,7 @@ export const isJobQueueEnabled = (enabled, name) => {
27
27
  return false;
28
28
  };
29
29
  export const isMessageQueueConsumerEnabled = (messageQueueConsumersEnabled, name) => isEnabled(messageQueueConsumersEnabled, name);
30
+ export const isAnyMessageQueueConsumerEnabled = (options) => !!options.messageQueueConsumersEnabled;
30
31
  const isEnabled = (option, name) => {
31
32
  if (!option) {
32
33
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"diConfigUtils.js","sourceRoot":"","sources":["../../lib/diConfigUtils.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;AAElD,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,OAAmC,EACf,EAAE;IACtB,MAAM,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAA;IACpC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,OAAO,KAAK,CAAA;IACd,CAAC;IACD,IAAI,gBAAgB,KAAK,UAAU,EAAE,CAAC;QACpC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACpC,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAA;IAC3D,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,OAA8C,EAC9C,IAAa,EACJ,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;AAEtC,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,OAA8C,EAC9C,IAAa,EACJ,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;AAEtC,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,OAA8C,EAC9C,IAAa,EACJ,EAAE;IACX,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,KAAK,CAAA;IACd,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAChE,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAA;IACb,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAC3C,4BAAmE,EACnE,IAAa,EACJ,EAAE,CAAC,SAAS,CAAC,4BAA4B,EAAE,IAAI,CAAC,CAAA;AAE3D,MAAM,SAAS,GAAG,CAChB,MAAwD,EACxD,IAAa,EACJ,EAAE;IACX,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,KAAK,CAAA;IACd,CAAC;IACD,IAAI,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClC,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IAC9B,CAAC;IAED,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAA;IACb,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC,CAAA"}
1
+ {"version":3,"file":"diConfigUtils.js","sourceRoot":"","sources":["../../lib/diConfigUtils.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;AAElD,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,OAAmC,EACf,EAAE;IACtB,MAAM,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAA;IACpC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,OAAO,KAAK,CAAA;IACd,CAAC;IACD,IAAI,gBAAgB,KAAK,UAAU,EAAE,CAAC;QACpC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACpC,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAA;IAC3D,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,OAA8C,EAC9C,IAAa,EACJ,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;AAEtC,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,OAA8C,EAC9C,IAAa,EACJ,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;AAEtC,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,OAA8C,EAC9C,IAAa,EACJ,EAAE;IACX,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,KAAK,CAAA;IACd,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAChE,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAA;IACb,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAC3C,4BAAmE,EACnE,IAAa,EACJ,EAAE,CAAC,SAAS,CAAC,4BAA4B,EAAE,IAAI,CAAC,CAAA;AAE3D,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,OAAmC,EAAW,EAAE,CAC/F,CAAC,CAAC,OAAO,CAAC,4BAA4B,CAAA;AAExC,MAAM,SAAS,GAAG,CAChB,MAAwD,EACxD,IAAa,EACJ,EAAE;IACX,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,KAAK,CAAA;IACd,CAAC;IACD,IAAI,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClC,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IAC9B,CAAC;IAED,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAA;IACb,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opinionated-machine",
3
- "version": "2.5.0",
3
+ "version": "2.7.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",