opinionated-machine 3.0.1 → 4.0.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/README.md +1 -2
- package/dist/index.d.ts +5 -5
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/dist/lib/AbstractController.d.ts +3 -3
- package/dist/lib/AbstractController.js.map +1 -1
- package/dist/lib/AbstractTestContextFactory.d.ts +1 -1
- package/dist/lib/AbstractTestContextFactory.js.map +1 -1
- package/dist/lib/DIContext.js +2 -2
- package/dist/lib/DIContext.js.map +1 -1
- package/dist/lib/diConfigUtils.d.ts +5 -0
- package/dist/lib/diConfigUtils.js +5 -0
- package/dist/lib/diConfigUtils.js.map +1 -1
- package/dist/lib/resolverFunctions.d.ts +4 -0
- package/dist/lib/resolverFunctions.js +14 -1
- package/dist/lib/resolverFunctions.js.map +1 -1
- package/package.json +26 -15
package/README.md
CHANGED
|
@@ -70,7 +70,7 @@ Controllers require using fastify-api-contracts and allow to define application
|
|
|
70
70
|
```ts
|
|
71
71
|
import { buildFastifyNoPayloadRoute } from '@lokalise/fastify-api-contracts'
|
|
72
72
|
import { buildDeleteRoute } from '@lokalise/universal-ts-utils/api-contracts/apiContracts'
|
|
73
|
-
import { z } from 'zod'
|
|
73
|
+
import { z } from 'zod/v4'
|
|
74
74
|
import { AbstractController } from 'opinionated-machine'
|
|
75
75
|
|
|
76
76
|
const BODY_SCHEMA = z.object({})
|
|
@@ -144,7 +144,6 @@ const context = new DIContext<ModuleDependencies, AppConfig, ExternalDependencie
|
|
|
144
144
|
|
|
145
145
|
context.registerDependencies({
|
|
146
146
|
modules: [module],
|
|
147
|
-
secondaryModules: [someOtherModule] // only dependencies marked as public are injected from secondary modules. This is useful for catching encapsulation violations in integration tests.
|
|
148
147
|
dependencyOverrides: {}, // dependency overrides if necessary, usually for testing purposes
|
|
149
148
|
configOverrides: {}, // config overrides if necessary, will be merged with value inside existing config
|
|
150
149
|
configDependencyId?: string // what is the dependency id in the graph for the config entity. Only used for config overrides. Default value is `config`
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export { DIContext, type DependencyInjectionOptions, type RegisterDependenciesParams, } from './lib/DIContext.js';
|
|
2
|
-
export { AbstractModule, type MandatoryNameAndRegistrationPair, type UnionToIntersection, } from './lib/AbstractModule.js';
|
|
3
|
-
export { ENABLE_ALL, resolveJobQueuesEnabled, isAnyMessageQueueConsumerEnabled, isJobQueueEnabled, isMessageQueueConsumerEnabled, isEnqueuedJobWorkersEnabled, isPeriodicJobEnabled, } from './lib/diConfigUtils.js';
|
|
4
1
|
export { AbstractController, type BuildRoutesReturnType } from './lib/AbstractController.js';
|
|
5
|
-
export {
|
|
6
|
-
export type { PeriodicJobOptions, JobQueueModuleOptions, MessageQueueConsumerModuleOptions, EnqueuedJobWorkerModuleOptions, } from './lib/resolverFunctions.js';
|
|
2
|
+
export { AbstractModule, type MandatoryNameAndRegistrationPair, type UnionToIntersection, } from './lib/AbstractModule.js';
|
|
7
3
|
export { AbstractTestContextFactory, type CreateTestContextParams, } from './lib/AbstractTestContextFactory.js';
|
|
8
4
|
export type { NestedPartial } from './lib/configUtils.ts';
|
|
5
|
+
export { type DependencyInjectionOptions, DIContext, type RegisterDependenciesParams, } from './lib/DIContext.js';
|
|
6
|
+
export { ENABLE_ALL, isAnyMessageQueueConsumerEnabled, isEnqueuedJobWorkersEnabled, isJobQueueEnabled, isMessageQueueConsumerEnabled, isPeriodicJobEnabled, resolveJobQueuesEnabled, } from './lib/diConfigUtils.js';
|
|
7
|
+
export type { EnqueuedJobWorkerModuleOptions, JobQueueModuleOptions, MessageQueueConsumerModuleOptions, PeriodicJobOptions, } from './lib/resolverFunctions.js';
|
|
8
|
+
export { asControllerClass, asEnqueuedJobQueueManagerFunction, asEnqueuedJobWorkerClass, asJobQueueClass, asMessageQueueHandlerClass, asPeriodicJobClass, asRepositoryClass, asServiceClass, asSingletonClass, asSingletonFunction, asUseCaseClass, type EnqueuedJobQueueManager, } from './lib/resolverFunctions.js';
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export { DIContext, } from './lib/DIContext.js';
|
|
2
|
-
export { AbstractModule, } from './lib/AbstractModule.js';
|
|
3
|
-
export { ENABLE_ALL, resolveJobQueuesEnabled, isAnyMessageQueueConsumerEnabled, isJobQueueEnabled, isMessageQueueConsumerEnabled, isEnqueuedJobWorkersEnabled, isPeriodicJobEnabled, } from './lib/diConfigUtils.js';
|
|
4
1
|
export { AbstractController } from './lib/AbstractController.js';
|
|
5
|
-
export {
|
|
2
|
+
export { AbstractModule, } from './lib/AbstractModule.js';
|
|
6
3
|
export { AbstractTestContextFactory, } from './lib/AbstractTestContextFactory.js';
|
|
4
|
+
export { DIContext, } from './lib/DIContext.js';
|
|
5
|
+
export { ENABLE_ALL, isAnyMessageQueueConsumerEnabled, isEnqueuedJobWorkersEnabled, isJobQueueEnabled, isMessageQueueConsumerEnabled, isPeriodicJobEnabled, resolveJobQueuesEnabled, } from './lib/diConfigUtils.js';
|
|
6
|
+
export { asControllerClass, asEnqueuedJobQueueManagerFunction, asEnqueuedJobWorkerClass, asJobQueueClass, asMessageQueueHandlerClass, asPeriodicJobClass, asRepositoryClass, asServiceClass, asSingletonClass, asSingletonFunction, asUseCaseClass, } from './lib/resolverFunctions.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,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAA8B,MAAM,6BAA6B,CAAA;AAC5F,OAAO,EACL,cAAc,GAGf,MAAM,yBAAyB,CAAA;AAChC,OAAO,EACL,0BAA0B,GAE3B,MAAM,qCAAqC,CAAA;AAE5C,OAAO,EAEL,SAAS,GAEV,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACL,UAAU,EACV,gCAAgC,EAChC,2BAA2B,EAC3B,iBAAiB,EACjB,6BAA6B,EAC7B,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,wBAAwB,CAAA;AAO/B,OAAO,EACL,iBAAiB,EACjB,iCAAiC,EACjC,wBAAwB,EACxB,eAAe,EACf,0BAA0B,EAC1B,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,GAEf,MAAM,4BAA4B,CAAA"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
+
import type { CommonRouteDefinition, DeleteRouteDefinition, GetRouteDefinition, PayloadRouteDefinition } from '@lokalise/api-contracts';
|
|
1
2
|
import type { buildFastifyNoPayloadRoute, buildFastifyPayloadRoute } from '@lokalise/fastify-api-contracts';
|
|
2
|
-
import type {
|
|
3
|
-
import type { z } from 'zod';
|
|
3
|
+
import type { z } from 'zod/v4';
|
|
4
4
|
type AnyCommonRouteDefinition = CommonRouteDefinition<any, any, any, any, any, any, any>;
|
|
5
5
|
type OptionalZodSchema = z.Schema | undefined;
|
|
6
6
|
type FastifyPayloadRouteReturnType<RequestBody extends OptionalZodSchema, ResponseBody extends OptionalZodSchema, Path extends OptionalZodSchema, Query extends OptionalZodSchema, Headers extends OptionalZodSchema, IsNonJSONResponseExpected extends boolean, IsEmptyResponseExpected extends boolean> = ReturnType<typeof buildFastifyPayloadRoute<RequestBody, ResponseBody, Path, Query, Headers, IsNonJSONResponseExpected, IsEmptyResponseExpected>>;
|
|
7
7
|
type FastifyNoPayloadRouteReturnType<RequestBody extends OptionalZodSchema, Path extends OptionalZodSchema, Query extends OptionalZodSchema, Headers extends OptionalZodSchema> = ReturnType<typeof buildFastifyNoPayloadRoute<RequestBody, Path, Query, Headers>>;
|
|
8
8
|
export type BuildRoutesReturnType<APIContracts extends Record<string, AnyCommonRouteDefinition>> = {
|
|
9
|
-
[K in keyof APIContracts]: APIContracts[K] extends PayloadRouteDefinition<
|
|
9
|
+
[K in keyof APIContracts]: APIContracts[K] extends PayloadRouteDefinition<infer RequestBody, infer ResponseBody, infer Path, infer Query, infer Headers, infer IsNonJSONResponseExpected, infer IsEmptyResponseExpected, infer _ResponseSchemasByStatusCode> ? FastifyPayloadRouteReturnType<RequestBody, ResponseBody, Path, Query, Headers, IsNonJSONResponseExpected, IsEmptyResponseExpected> : APIContracts[K] extends GetRouteDefinition<infer GetResponseBody, infer GetPath, infer GetQuery, infer GetHeaders, infer _GetIsNonJSONResponseExpected, infer _GetIsEmptyResponseExpected, infer _GetResponseSchemasByStatusCode> | DeleteRouteDefinition<infer DeleteResponseBody, infer DeletePath, infer DeleteQuery, infer DeleteHeaders, infer _DeleteIsNonJSONResponseExpected, infer _DeleteIsEmptyResponseExpected, infer _DeleteResponseSchemasByStatusCode> ? FastifyNoPayloadRouteReturnType<GetResponseBody | DeleteResponseBody, GetPath | DeletePath, GetQuery | DeleteQuery, GetHeaders | DeleteHeaders> : never;
|
|
10
10
|
};
|
|
11
11
|
export declare abstract class AbstractController<APIContracts extends Record<string, AnyCommonRouteDefinition>> {
|
|
12
12
|
abstract buildRoutes(): BuildRoutesReturnType<APIContracts>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractController.js","sourceRoot":"","sources":["../../lib/AbstractController.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AbstractController.js","sourceRoot":"","sources":["../../lib/AbstractController.ts"],"names":[],"mappings":"AA0FA,MAAM,OAAgB,kBAAkB;CAIvC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type AwilixContainer, type NameAndRegistrationPair } from 'awilix';
|
|
2
2
|
import type { AbstractModule } from './AbstractModule.js';
|
|
3
|
-
import { DIContext, type DependencyInjectionOptions } from './DIContext.js';
|
|
4
3
|
import type { NestedPartial } from './configUtils.js';
|
|
4
|
+
import { type DependencyInjectionOptions, DIContext } from './DIContext.js';
|
|
5
5
|
export type CreateTestContextParams<Dependencies, Config extends object> = {
|
|
6
6
|
modules?: readonly AbstractModule<unknown>[];
|
|
7
7
|
secondaryModules?: readonly AbstractModule<unknown>[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractTestContextFactory.js","sourceRoot":"","sources":["../../lib/AbstractTestContextFactory.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"AbstractTestContextFactory.js","sourceRoot":"","sources":["../../lib/AbstractTestContextFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,eAAe,EAAgC,MAAM,QAAQ,CAAA;AAG5F,OAAO,EAAmC,SAAS,EAAE,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;YACP,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;YACzC,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;SAC5C,EACD,IAAI,CAAC,oBAAoB,EACzB,KAAK,CACN,CAAA;QAED,MAAM,OAAO,CAAC,IAAI,EAAE,CAAA;QAEpB,OAAO,OAAO,CAAA;IAChB,CAAC;CACF"}
|
package/dist/lib/DIContext.js
CHANGED
|
@@ -53,9 +53,9 @@ export class DIContext {
|
|
|
53
53
|
const dependencyValue = { ..._dependencyValue };
|
|
54
54
|
// preserve lifetime from original resolver
|
|
55
55
|
const originalResolver = this.diContainer.getRegistration(dependencyKey);
|
|
56
|
-
// @ts-
|
|
56
|
+
// @ts-expect-error
|
|
57
57
|
if (dependencyValue.lifetime !== originalResolver.lifetime) {
|
|
58
|
-
// @ts-
|
|
58
|
+
// @ts-expect-error
|
|
59
59
|
dependencyValue.lifetime = originalResolver.lifetime;
|
|
60
60
|
}
|
|
61
61
|
this.diContainer.register(dependencyKey, dependencyValue);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DIContext.js","sourceRoot":"","sources":["../../lib/DIContext.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAI9C,OAAO,
|
|
1
|
+
{"version":3,"file":"DIContext.js","sourceRoot":"","sources":["../../lib/DIContext.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,11 @@ export declare const ENABLE_ALL: unique symbol;
|
|
|
3
3
|
export declare const resolveJobQueuesEnabled: (options: DependencyInjectionOptions) => boolean | string[];
|
|
4
4
|
export declare const isEnqueuedJobWorkersEnabled: (enabled?: false | typeof ENABLE_ALL | string[], name?: string) => boolean;
|
|
5
5
|
export declare const isPeriodicJobEnabled: (enabled?: false | typeof ENABLE_ALL | string[], name?: string) => boolean;
|
|
6
|
+
/**
|
|
7
|
+
* Returns true if either specific queue is enabled (if name is specified), or if any queue is enabled (if no name is provided)
|
|
8
|
+
* @param enabled
|
|
9
|
+
* @param name
|
|
10
|
+
*/
|
|
6
11
|
export declare const isJobQueueEnabled: (enabled?: false | typeof ENABLE_ALL | string[], name?: string) => boolean;
|
|
7
12
|
export declare const isMessageQueueConsumerEnabled: (messageQueueConsumersEnabled?: false | typeof ENABLE_ALL | string[], name?: string) => boolean;
|
|
8
13
|
export declare const isAnyMessageQueueConsumerEnabled: (options: DependencyInjectionOptions) => boolean;
|
|
@@ -14,6 +14,11 @@ export const resolveJobQueuesEnabled = (options) => {
|
|
|
14
14
|
};
|
|
15
15
|
export const isEnqueuedJobWorkersEnabled = (enabled, name) => isEnabled(enabled, name);
|
|
16
16
|
export const isPeriodicJobEnabled = (enabled, name) => isEnabled(enabled, name);
|
|
17
|
+
/**
|
|
18
|
+
* Returns true if either specific queue is enabled (if name is specified), or if any queue is enabled (if no name is provided)
|
|
19
|
+
* @param enabled
|
|
20
|
+
* @param name
|
|
21
|
+
*/
|
|
17
22
|
export const isJobQueueEnabled = (enabled, name) => {
|
|
18
23
|
if (!enabled) {
|
|
19
24
|
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,2BAA2B,GAAG,CACzC,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"}
|
|
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,2BAA2B,GAAG,CACzC,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;;;;GAIG;AACH,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"}
|
|
@@ -6,6 +6,9 @@ declare module 'awilix' {
|
|
|
6
6
|
public?: boolean;
|
|
7
7
|
}
|
|
8
8
|
}
|
|
9
|
+
export interface EnqueuedJobQueueManager {
|
|
10
|
+
start(enabled?: string[] | boolean): Promise<void>;
|
|
11
|
+
}
|
|
9
12
|
export declare function asSingletonClass<T = object>(Type: Constructor<T>, opts?: BuildResolverOptions<T>): BuildResolver<T> & DisposableResolver<T>;
|
|
10
13
|
export declare function asSingletonFunction<T>(fn: FunctionReturning<T>, opts?: BuildResolverOptions<T>): BuildResolver<T> & DisposableResolver<T>;
|
|
11
14
|
export declare function asServiceClass<T = object>(Type: Constructor<T>, opts?: BuildResolverOptions<T>): BuildResolver<T> & DisposableResolver<T>;
|
|
@@ -32,3 +35,4 @@ export type JobQueueModuleOptions = {
|
|
|
32
35
|
diOptions: DependencyInjectionOptions;
|
|
33
36
|
};
|
|
34
37
|
export declare function asJobQueueClass<T = object>(Type: Constructor<T>, queueOptions: JobQueueModuleOptions, opts?: BuildResolverOptions<T>): BuildResolver<T> & DisposableResolver<T>;
|
|
38
|
+
export declare function asEnqueuedJobQueueManagerFunction<T extends EnqueuedJobQueueManager>(fn: FunctionReturning<T>, diOptions: DependencyInjectionOptions, opts?: BuildResolverOptions<T>): BuildResolver<T> & DisposableResolver<T>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { asClass, asFunction } from 'awilix';
|
|
2
|
-
import { isEnqueuedJobWorkersEnabled, isJobQueueEnabled, isMessageQueueConsumerEnabled, isPeriodicJobEnabled, } from './diConfigUtils.js';
|
|
2
|
+
import { isEnqueuedJobWorkersEnabled, isJobQueueEnabled, isMessageQueueConsumerEnabled, isPeriodicJobEnabled, resolveJobQueuesEnabled, } from './diConfigUtils.js';
|
|
3
3
|
export function asSingletonClass(Type, opts) {
|
|
4
4
|
return asClass(Type, {
|
|
5
5
|
...opts,
|
|
@@ -87,4 +87,17 @@ export function asJobQueueClass(Type, queueOptions, opts) {
|
|
|
87
87
|
...opts,
|
|
88
88
|
});
|
|
89
89
|
}
|
|
90
|
+
export function asEnqueuedJobQueueManagerFunction(fn, diOptions, opts) {
|
|
91
|
+
return asFunction(fn, {
|
|
92
|
+
// these follow background-jobs-common conventions
|
|
93
|
+
asyncInit: (manager) => manager.start(resolveJobQueuesEnabled(diOptions)),
|
|
94
|
+
asyncDispose: 'dispose',
|
|
95
|
+
asyncInitPriority: 20,
|
|
96
|
+
asyncDisposePriority: 20,
|
|
97
|
+
public: true,
|
|
98
|
+
enabled: isJobQueueEnabled(diOptions.jobQueuesEnabled),
|
|
99
|
+
lifetime: 'SINGLETON',
|
|
100
|
+
...opts,
|
|
101
|
+
});
|
|
102
|
+
}
|
|
90
103
|
//# sourceMappingURL=resolverFunctions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolverFunctions.js","sourceRoot":"","sources":["../../lib/resolverFunctions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"resolverFunctions.js","sourceRoot":"","sources":["../../lib/resolverFunctions.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "opinionated-machine",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "4.0.0",
|
|
4
4
|
"description": "Very opinionated DI framework for fastify, built on top of awilix ",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
},
|
|
34
34
|
"peerDependencies": {
|
|
35
35
|
"@lokalise/fastify-api-contracts": ">=2.0.0",
|
|
36
|
-
"@lokalise/
|
|
36
|
+
"@lokalise/api-contracts": ">=4.3.0",
|
|
37
37
|
"awilix": ">=12.0.0",
|
|
38
38
|
"awilix-manager": ">=6.0.0",
|
|
39
39
|
"fastify": ">=5.0.0",
|
|
@@ -42,26 +42,37 @@
|
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
44
|
"@types/node": "^22.13.13",
|
|
45
|
-
"@biomejs/biome": "
|
|
46
|
-
"@lokalise/biome-config": "^
|
|
47
|
-
"@lokalise/fastify-api-contracts": "^
|
|
48
|
-
"@lokalise/tsconfig": "^
|
|
49
|
-
"@lokalise/
|
|
50
|
-
"@vitest/coverage-v8": "^3.
|
|
45
|
+
"@biomejs/biome": "2.2.2",
|
|
46
|
+
"@lokalise/biome-config": "^3.1.0",
|
|
47
|
+
"@lokalise/fastify-api-contracts": "^4.1.0",
|
|
48
|
+
"@lokalise/tsconfig": "^2.0.0",
|
|
49
|
+
"@lokalise/api-contracts": "^5.2.0",
|
|
50
|
+
"@vitest/coverage-v8": "^3.2.4",
|
|
51
51
|
"awilix": "^12.0.5",
|
|
52
52
|
"awilix-manager": "^6.1.0",
|
|
53
|
-
"fastify": "^5.
|
|
54
|
-
"fastify-type-provider-zod": "^
|
|
55
|
-
"vitest": "^3.
|
|
53
|
+
"fastify": "^5.5.0",
|
|
54
|
+
"fastify-type-provider-zod": "^5.0.0",
|
|
55
|
+
"vitest": "^3.2.4",
|
|
56
56
|
"rimraf": "^6.0.1",
|
|
57
|
-
"typescript": "^5.
|
|
58
|
-
"zod": "^3.
|
|
57
|
+
"typescript": "^5.9.2",
|
|
58
|
+
"zod": "^3.25.76"
|
|
59
59
|
},
|
|
60
60
|
"private": false,
|
|
61
61
|
"publishConfig": {
|
|
62
62
|
"access": "public"
|
|
63
63
|
},
|
|
64
|
-
"keywords": [
|
|
64
|
+
"keywords": [
|
|
65
|
+
"dependency",
|
|
66
|
+
"injection",
|
|
67
|
+
"opinionated",
|
|
68
|
+
"awilix",
|
|
69
|
+
"di",
|
|
70
|
+
"fastify"
|
|
71
|
+
],
|
|
65
72
|
"homepage": "https://github.com/kibertoad/opinionated-machine",
|
|
66
|
-
"files": [
|
|
73
|
+
"files": [
|
|
74
|
+
"README.md",
|
|
75
|
+
"LICENSE",
|
|
76
|
+
"dist/*"
|
|
77
|
+
]
|
|
67
78
|
}
|