opinionated-machine 2.2.0 → 2.4.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 +2 -2
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/lib/AbstractModule.d.ts +4 -0
- package/dist/lib/AbstractModule.js.map +1 -1
- package/dist/lib/DIContext.d.ts +3 -1
- package/dist/lib/DIContext.js +31 -18
- package/dist/lib/DIContext.js.map +1 -1
- package/dist/lib/resolverFunctions.d.ts +8 -0
- package/dist/lib/resolverFunctions.js +26 -0
- package/dist/lib/resolverFunctions.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { DIContext, type DependencyInjectionOptions, type RegisterDependenciesParams, } from './lib/DIContext.js';
|
|
2
|
-
export { AbstractModule, type MandatoryNameAndRegistrationPair } from './lib/AbstractModule.js';
|
|
2
|
+
export { AbstractModule, type MandatoryNameAndRegistrationPair, type UnionToIntersection, } from './lib/AbstractModule.js';
|
|
3
3
|
export { ENABLE_ALL, resolveJobQueuesEnabled, isJobQueueEnabled, isMessageQueueConsumerEnabled, isJobWorkersEnabled, isPeriodicJobEnabled, } from './lib/diConfigUtils.js';
|
|
4
4
|
export { AbstractController } from './lib/AbstractController.js';
|
|
5
|
-
export { asJobQueueClass, asJobWorkerClass, asMessageQueueHandlerClass, asControllerClass, asSingletonClass, asPeriodicJobClass, asSingletonFunction, } from './lib/resolverFunctions.js';
|
|
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
7
|
export { AbstractTestContextFactory, type CreateTestContextParams, type ConfigOverrides, } from './lib/AbstractTestContextFactory.js';
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { DIContext, } from './lib/DIContext.js';
|
|
2
|
-
export { AbstractModule } from './lib/AbstractModule.js';
|
|
2
|
+
export { AbstractModule, } from './lib/AbstractModule.js';
|
|
3
3
|
export { ENABLE_ALL, resolveJobQueuesEnabled, isJobQueueEnabled, isMessageQueueConsumerEnabled, isJobWorkersEnabled, isPeriodicJobEnabled, } from './lib/diConfigUtils.js';
|
|
4
4
|
export { AbstractController } from './lib/AbstractController.js';
|
|
5
|
-
export { asJobQueueClass, asJobWorkerClass, asMessageQueueHandlerClass, asControllerClass, asSingletonClass, asPeriodicJobClass, asSingletonFunction, } from './lib/resolverFunctions.js';
|
|
5
|
+
export { asJobQueueClass, asJobWorkerClass, asMessageQueueHandlerClass, asControllerClass, asSingletonClass, asPeriodicJobClass, asSingletonFunction, asServiceClass, asRepositoryClass, asUseCaseClass, } from './lib/resolverFunctions.js';
|
|
6
6
|
export { AbstractTestContextFactory, } from './lib/AbstractTestContextFactory.js';
|
|
7
7
|
//# sourceMappingURL=index.js.map
|
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,
|
|
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"}
|
|
@@ -3,6 +3,10 @@ import type { DependencyInjectionOptions } from './DIContext.js';
|
|
|
3
3
|
export type MandatoryNameAndRegistrationPair<T> = {
|
|
4
4
|
[U in keyof T]: Resolver<T[U]>;
|
|
5
5
|
};
|
|
6
|
+
/**
|
|
7
|
+
* Use this utility type to combine dependencies from multiple modules into full context list of dependencies
|
|
8
|
+
*/
|
|
9
|
+
export type UnionToIntersection<U> = (U extends any ? (x: U) => void : never) extends (x: infer I) => void ? I : never;
|
|
6
10
|
export declare abstract class AbstractModule<ModuleDependencies, ExternalDependencies = never> {
|
|
7
11
|
abstract resolveDependencies(diOptions: DependencyInjectionOptions, externalDependencies: ExternalDependencies): MandatoryNameAndRegistrationPair<ModuleDependencies>;
|
|
8
12
|
abstract resolveControllers(): MandatoryNameAndRegistrationPair<unknown>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractModule.js","sourceRoot":"","sources":["../../lib/AbstractModule.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AbstractModule.js","sourceRoot":"","sources":["../../lib/AbstractModule.ts"],"names":[],"mappings":"AAcA,MAAM,OAAgB,cAAc;CAOnC"}
|
package/dist/lib/DIContext.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ import type { AbstractModule } from './AbstractModule.js';
|
|
|
5
5
|
import type { ENABLE_ALL } from './diConfigUtils.js';
|
|
6
6
|
export type RegisterDependenciesParams<Dependencies, ExternalDependencies> = {
|
|
7
7
|
modules: readonly AbstractModule<unknown, ExternalDependencies>[];
|
|
8
|
+
secondaryModules?: readonly AbstractModule<unknown, ExternalDependencies>[];
|
|
8
9
|
dependencyOverrides?: NameAndRegistrationPair<Dependencies>;
|
|
9
10
|
};
|
|
10
11
|
export type DependencyInjectionOptions = {
|
|
@@ -18,7 +19,8 @@ export declare class DIContext<Dependencies extends object, ExternalDependencies
|
|
|
18
19
|
readonly awilixManager: AwilixManager;
|
|
19
20
|
readonly diContainer: AwilixContainer<Dependencies>;
|
|
20
21
|
private readonly controllerResolvers;
|
|
21
|
-
constructor(diContainer: AwilixContainer, options: DependencyInjectionOptions);
|
|
22
|
+
constructor(diContainer: AwilixContainer, options: DependencyInjectionOptions, awilixManager?: AwilixManager);
|
|
23
|
+
private registerModule;
|
|
22
24
|
registerDependencies(params: RegisterDependenciesParams<Dependencies, ExternalDependencies>, externalDependencies: ExternalDependencies, resolveControllers?: boolean): void;
|
|
23
25
|
registerRoutes(app: FastifyInstance): void;
|
|
24
26
|
destroy(): Promise<void>;
|
package/dist/lib/DIContext.js
CHANGED
|
@@ -5,32 +5,45 @@ 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 =
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
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
|
-
|
|
21
|
-
const
|
|
22
|
-
const
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
for (const key in resolvedDIConfig) {
|
|
22
|
+
registerModule(module, targetDiConfig, externalDependencies, resolveControllers, isPrimaryModule) {
|
|
23
|
+
const resolvedDIConfig = module.resolveDependencies(this.options, externalDependencies);
|
|
24
|
+
for (const key in resolvedDIConfig) {
|
|
25
|
+
// @ts-expect-error we can't really ensure type-safety here
|
|
26
|
+
if (isPrimaryModule || resolvedDIConfig[key].public) {
|
|
26
27
|
// @ts-expect-error we can't really ensure type-safety here
|
|
27
|
-
|
|
28
|
+
targetDiConfig[key] = resolvedDIConfig[key];
|
|
28
29
|
}
|
|
29
|
-
|
|
30
|
-
|
|
30
|
+
}
|
|
31
|
+
if (isPrimaryModule && resolveControllers) {
|
|
32
|
+
this.controllerResolvers.push(...Object.values(module.resolveControllers()));
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
registerDependencies(params, externalDependencies, resolveControllers = true) {
|
|
36
|
+
const _dependencyOverrides = params.dependencyOverrides ?? {};
|
|
37
|
+
const targetDiConfig = {};
|
|
38
|
+
for (const primaryModule of params.modules) {
|
|
39
|
+
this.registerModule(primaryModule, targetDiConfig, externalDependencies, resolveControllers, true);
|
|
40
|
+
}
|
|
41
|
+
if (params.secondaryModules) {
|
|
42
|
+
for (const secondaryModule of params.secondaryModules) {
|
|
43
|
+
this.registerModule(secondaryModule, targetDiConfig, externalDependencies, resolveControllers, false);
|
|
31
44
|
}
|
|
32
45
|
}
|
|
33
|
-
this.diContainer.register(
|
|
46
|
+
this.diContainer.register(targetDiConfig);
|
|
34
47
|
for (const [dependencyKey, _dependencyValue] of Object.entries(_dependencyOverrides)) {
|
|
35
48
|
const dependencyValue = { ..._dependencyValue };
|
|
36
49
|
// preserve lifetime from original resolver
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DIContext.js","sourceRoot":"","sources":["../../lib/DIContext.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"DIContext.js","sourceRoot":"","sources":["../../lib/DIContext.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,16 @@
|
|
|
1
1
|
import type { BuildResolver, BuildResolverOptions, Constructor, DisposableResolver } from 'awilix';
|
|
2
2
|
import type { FunctionReturning } from 'awilix/lib/container';
|
|
3
3
|
import type { DependencyInjectionOptions } from './DIContext.js';
|
|
4
|
+
declare module 'awilix' {
|
|
5
|
+
interface ResolverOptions<T> {
|
|
6
|
+
public?: boolean;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
4
9
|
export declare function asSingletonClass<T = object>(Type: Constructor<T>, opts?: BuildResolverOptions<T>): BuildResolver<T> & DisposableResolver<T>;
|
|
5
10
|
export declare function asSingletonFunction<T>(fn: FunctionReturning<T>, opts?: BuildResolverOptions<T>): BuildResolver<T> & DisposableResolver<T>;
|
|
11
|
+
export declare function asServiceClass<T = object>(Type: Constructor<T>, opts?: BuildResolverOptions<T>): BuildResolver<T> & DisposableResolver<T>;
|
|
12
|
+
export declare function asUseCaseClass<T = object>(Type: Constructor<T>, opts?: BuildResolverOptions<T>): BuildResolver<T> & DisposableResolver<T>;
|
|
13
|
+
export declare function asRepositoryClass<T = object>(Type: Constructor<T>, opts?: BuildResolverOptions<T>): BuildResolver<T> & DisposableResolver<T>;
|
|
6
14
|
export declare function asControllerClass<T = object>(Type: Constructor<T>, opts?: BuildResolverOptions<T>): BuildResolver<T> & DisposableResolver<T>;
|
|
7
15
|
export type MessageQueueConsumerModuleOptions = {
|
|
8
16
|
queueName: string;
|
|
@@ -12,8 +12,30 @@ export function asSingletonFunction(fn, opts) {
|
|
|
12
12
|
lifetime: 'SINGLETON',
|
|
13
13
|
});
|
|
14
14
|
}
|
|
15
|
+
export function asServiceClass(Type, opts) {
|
|
16
|
+
return asClass(Type, {
|
|
17
|
+
public: true,
|
|
18
|
+
...opts,
|
|
19
|
+
lifetime: 'SINGLETON',
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
export function asUseCaseClass(Type, opts) {
|
|
23
|
+
return asClass(Type, {
|
|
24
|
+
public: true,
|
|
25
|
+
...opts,
|
|
26
|
+
lifetime: 'SINGLETON',
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
export function asRepositoryClass(Type, opts) {
|
|
30
|
+
return asClass(Type, {
|
|
31
|
+
public: false,
|
|
32
|
+
...opts,
|
|
33
|
+
lifetime: 'SINGLETON',
|
|
34
|
+
});
|
|
35
|
+
}
|
|
15
36
|
export function asControllerClass(Type, opts) {
|
|
16
37
|
return asClass(Type, {
|
|
38
|
+
public: false,
|
|
17
39
|
...opts,
|
|
18
40
|
lifetime: 'SINGLETON',
|
|
19
41
|
});
|
|
@@ -26,6 +48,7 @@ export function asMessageQueueHandlerClass(Type, mqOptions, opts) {
|
|
|
26
48
|
asyncDisposePriority: 10,
|
|
27
49
|
enabled: isMessageQueueConsumerEnabled(mqOptions.diOptions.messageQueueConsumersEnabled, mqOptions.queueName),
|
|
28
50
|
lifetime: 'SINGLETON',
|
|
51
|
+
public: false,
|
|
29
52
|
...opts,
|
|
30
53
|
});
|
|
31
54
|
}
|
|
@@ -35,6 +58,7 @@ export function asJobWorkerClass(Type, workerOptions, opts) {
|
|
|
35
58
|
asyncInit: 'start',
|
|
36
59
|
asyncDispose: 'dispose',
|
|
37
60
|
asyncDisposePriority: 15,
|
|
61
|
+
public: false,
|
|
38
62
|
enabled: isJobWorkersEnabled(workerOptions.diOptions.jobWorkersEnabled, workerOptions.queueName),
|
|
39
63
|
lifetime: 'SINGLETON',
|
|
40
64
|
...opts,
|
|
@@ -45,6 +69,7 @@ export function asPeriodicJobClass(Type, workerOptions, opts) {
|
|
|
45
69
|
// this follows background-jobs-common conventions
|
|
46
70
|
eagerInject: 'register',
|
|
47
71
|
asyncDispose: 'dispose',
|
|
72
|
+
public: false,
|
|
48
73
|
enabled: isPeriodicJobEnabled(workerOptions.diOptions.periodicJobsEnabled, workerOptions.jobName),
|
|
49
74
|
lifetime: 'SINGLETON',
|
|
50
75
|
...opts,
|
|
@@ -56,6 +81,7 @@ export function asJobQueueClass(Type, queueOptions, opts) {
|
|
|
56
81
|
asyncInit: 'start',
|
|
57
82
|
asyncDispose: 'dispose',
|
|
58
83
|
asyncDisposePriority: 20,
|
|
84
|
+
public: true,
|
|
59
85
|
enabled: isJobQueueEnabled(queueOptions.diOptions.jobQueuesEnabled, queueOptions.queueName),
|
|
60
86
|
lifetime: 'SINGLETON',
|
|
61
87
|
...opts,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolverFunctions.js","sourceRoot":"","sources":["../../lib/resolverFunctions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AAI5C,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,6BAA6B,EAC7B,oBAAoB,GACrB,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"resolverFunctions.js","sourceRoot":"","sources":["../../lib/resolverFunctions.ts"],"names":[],"mappings":"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"}
|