@synkro/nestjs 0.1.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.
Files changed (37) hide show
  1. package/dist/decorators/index.d.ts +5 -0
  2. package/dist/decorators/index.d.ts.map +1 -0
  3. package/dist/decorators/index.js +3 -0
  4. package/dist/decorators/index.js.map +1 -0
  5. package/dist/decorators/on-event.decorator.d.ts +7 -0
  6. package/dist/decorators/on-event.decorator.d.ts.map +1 -0
  7. package/dist/decorators/on-event.decorator.js +9 -0
  8. package/dist/decorators/on-event.decorator.js.map +1 -0
  9. package/dist/decorators/on-workflow-step.decorator.d.ts +6 -0
  10. package/dist/decorators/on-workflow-step.decorator.d.ts.map +1 -0
  11. package/dist/decorators/on-workflow-step.decorator.js +9 -0
  12. package/dist/decorators/on-workflow-step.decorator.js.map +1 -0
  13. package/dist/index.d.ts +7 -0
  14. package/dist/index.d.ts.map +1 -0
  15. package/dist/index.js +5 -0
  16. package/dist/index.js.map +1 -0
  17. package/dist/synkro.constants.d.ts +4 -0
  18. package/dist/synkro.constants.d.ts.map +1 -0
  19. package/dist/synkro.constants.js +4 -0
  20. package/dist/synkro.constants.js.map +1 -0
  21. package/dist/synkro.explorer.d.ts +21 -0
  22. package/dist/synkro.explorer.d.ts.map +1 -0
  23. package/dist/synkro.explorer.js +72 -0
  24. package/dist/synkro.explorer.js.map +1 -0
  25. package/dist/synkro.interfaces.d.ts +13 -0
  26. package/dist/synkro.interfaces.d.ts.map +1 -0
  27. package/dist/synkro.interfaces.js +2 -0
  28. package/dist/synkro.interfaces.js.map +1 -0
  29. package/dist/synkro.module.d.ts +7 -0
  30. package/dist/synkro.module.d.ts.map +1 -0
  31. package/dist/synkro.module.js +52 -0
  32. package/dist/synkro.module.js.map +1 -0
  33. package/dist/synkro.service.d.ts +15 -0
  34. package/dist/synkro.service.d.ts.map +1 -0
  35. package/dist/synkro.service.js +68 -0
  36. package/dist/synkro.service.js.map +1 -0
  37. package/package.json +35 -0
@@ -0,0 +1,5 @@
1
+ export { OnEvent } from "./on-event.decorator.js";
2
+ export type { OnEventMetadata } from "./on-event.decorator.js";
3
+ export { OnWorkflowStep } from "./on-workflow-step.decorator.js";
4
+ export type { OnWorkflowStepMetadata } from "./on-workflow-step.decorator.js";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/decorators/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,YAAY,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { OnEvent } from "./on-event.decorator.js";
2
+ export { OnWorkflowStep } from "./on-workflow-step.decorator.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/decorators/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAElD,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { RetryConfig } from "@synkro/core";
2
+ export interface OnEventMetadata {
3
+ eventType: string;
4
+ retry?: RetryConfig;
5
+ }
6
+ export declare function OnEvent(eventType: string, retry?: RetryConfig): MethodDecorator;
7
+ //# sourceMappingURL=on-event.decorator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"on-event.decorator.d.ts","sourceRoot":"","sources":["../../src/decorators/on-event.decorator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB;AAED,wBAAgB,OAAO,CACrB,SAAS,EAAE,MAAM,EACjB,KAAK,CAAC,EAAE,WAAW,GAClB,eAAe,CAKjB"}
@@ -0,0 +1,9 @@
1
+ import { SetMetadata } from "@nestjs/common";
2
+ import { ON_EVENT_METADATA } from "../synkro.constants.js";
3
+ export function OnEvent(eventType, retry) {
4
+ return SetMetadata(ON_EVENT_METADATA, {
5
+ eventType,
6
+ retry,
7
+ });
8
+ }
9
+ //# sourceMappingURL=on-event.decorator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"on-event.decorator.js","sourceRoot":"","sources":["../../src/decorators/on-event.decorator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAO3D,MAAM,UAAU,OAAO,CACrB,SAAiB,EACjB,KAAmB;IAEnB,OAAO,WAAW,CAAC,iBAAiB,EAAE;QACpC,SAAS;QACT,KAAK;KACoB,CAAC,CAAC;AAC/B,CAAC"}
@@ -0,0 +1,6 @@
1
+ export interface OnWorkflowStepMetadata {
2
+ workflowName: string;
3
+ stepType: string;
4
+ }
5
+ export declare function OnWorkflowStep(workflowName: string, stepType: string): MethodDecorator;
6
+ //# sourceMappingURL=on-workflow-step.decorator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"on-workflow-step.decorator.d.ts","sourceRoot":"","sources":["../../src/decorators/on-workflow-step.decorator.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,sBAAsB;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,cAAc,CAC5B,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,GACf,eAAe,CAKjB"}
@@ -0,0 +1,9 @@
1
+ import { SetMetadata } from "@nestjs/common";
2
+ import { ON_WORKFLOW_STEP_METADATA } from "../synkro.constants.js";
3
+ export function OnWorkflowStep(workflowName, stepType) {
4
+ return SetMetadata(ON_WORKFLOW_STEP_METADATA, {
5
+ workflowName,
6
+ stepType,
7
+ });
8
+ }
9
+ //# sourceMappingURL=on-workflow-step.decorator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"on-workflow-step.decorator.js","sourceRoot":"","sources":["../../src/decorators/on-workflow-step.decorator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAOnE,MAAM,UAAU,cAAc,CAC5B,YAAoB,EACpB,QAAgB;IAEhB,OAAO,WAAW,CAAC,yBAAyB,EAAE;QAC5C,YAAY;QACZ,QAAQ;KACwB,CAAC,CAAC;AACtC,CAAC"}
@@ -0,0 +1,7 @@
1
+ export { SynkroModule } from "./synkro.module.js";
2
+ export { SynkroService } from "./synkro.service.js";
3
+ export { SynkroExplorer } from "./synkro.explorer.js";
4
+ export { OnEvent, OnWorkflowStep } from "./decorators/index.js";
5
+ export type { OnEventMetadata, OnWorkflowStepMetadata, } from "./decorators/index.js";
6
+ export type { SynkroModuleOptions, SynkroModuleAsyncOptions, } from "./synkro.interfaces.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAChE,YAAY,EACV,eAAe,EACf,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACV,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,wBAAwB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,5 @@
1
+ export { SynkroModule } from "./synkro.module.js";
2
+ export { SynkroService } from "./synkro.service.js";
3
+ export { SynkroExplorer } from "./synkro.explorer.js";
4
+ export { OnEvent, OnWorkflowStep } from "./decorators/index.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare const SYNKRO_MODULE_OPTIONS = "SYNKRO_MODULE_OPTIONS";
2
+ export declare const ON_EVENT_METADATA = "synkro:on-event";
3
+ export declare const ON_WORKFLOW_STEP_METADATA = "synkro:on-workflow-step";
4
+ //# sourceMappingURL=synkro.constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"synkro.constants.d.ts","sourceRoot":"","sources":["../src/synkro.constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,0BAA0B,CAAC;AAC7D,eAAO,MAAM,iBAAiB,oBAAoB,CAAC;AACnD,eAAO,MAAM,yBAAyB,4BAA4B,CAAC"}
@@ -0,0 +1,4 @@
1
+ export const SYNKRO_MODULE_OPTIONS = "SYNKRO_MODULE_OPTIONS";
2
+ export const ON_EVENT_METADATA = "synkro:on-event";
3
+ export const ON_WORKFLOW_STEP_METADATA = "synkro:on-workflow-step";
4
+ //# sourceMappingURL=synkro.constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"synkro.constants.js","sourceRoot":"","sources":["../src/synkro.constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,qBAAqB,GAAG,uBAAuB,CAAC;AAC7D,MAAM,CAAC,MAAM,iBAAiB,GAAG,iBAAiB,CAAC;AACnD,MAAM,CAAC,MAAM,yBAAyB,GAAG,yBAAyB,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { DiscoveryService, MetadataScanner, Reflector } from "@nestjs/core";
2
+ import type { HandlerFunction, RetryConfig } from "@synkro/core";
3
+ export interface DiscoveredEventHandler {
4
+ eventType: string;
5
+ handler: HandlerFunction;
6
+ retry?: RetryConfig;
7
+ }
8
+ export interface DiscoveredWorkflowStepHandler {
9
+ workflowName: string;
10
+ stepType: string;
11
+ handler: HandlerFunction;
12
+ }
13
+ export declare class SynkroExplorer {
14
+ private readonly discovery;
15
+ private readonly metadataScanner;
16
+ private readonly reflector;
17
+ constructor(discovery: DiscoveryService, metadataScanner: MetadataScanner, reflector: Reflector);
18
+ exploreEventHandlers(): DiscoveredEventHandler[];
19
+ exploreWorkflowStepHandlers(): DiscoveredWorkflowStepHandler[];
20
+ }
21
+ //# sourceMappingURL=synkro.explorer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"synkro.explorer.d.ts","sourceRoot":"","sources":["../src/synkro.explorer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC5E,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAMjE,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,eAAe,CAAC;IACzB,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB;AAED,MAAM,WAAW,6BAA6B;IAC5C,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,eAAe,CAAC;CAC1B;AAED,qBACa,cAAc;IAEvB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAFT,SAAS,EAAE,gBAAgB,EAC3B,eAAe,EAAE,eAAe,EAChC,SAAS,EAAE,SAAS;IAGvC,oBAAoB,IAAI,sBAAsB,EAAE;IA4BhD,2BAA2B,IAAI,6BAA6B,EAAE;CA2B/D"}
@@ -0,0 +1,72 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { Injectable } from "@nestjs/common";
11
+ import { DiscoveryService, MetadataScanner, Reflector } from "@nestjs/core";
12
+ import { ON_EVENT_METADATA, ON_WORKFLOW_STEP_METADATA } from "./synkro.constants.js";
13
+ let SynkroExplorer = class SynkroExplorer {
14
+ discovery;
15
+ metadataScanner;
16
+ reflector;
17
+ constructor(discovery, metadataScanner, reflector) {
18
+ this.discovery = discovery;
19
+ this.metadataScanner = metadataScanner;
20
+ this.reflector = reflector;
21
+ }
22
+ exploreEventHandlers() {
23
+ const handlers = [];
24
+ for (const wrapper of this.discovery.getProviders()) {
25
+ const { instance } = wrapper;
26
+ if (!instance || typeof instance !== "object")
27
+ continue;
28
+ const prototype = Object.getPrototypeOf(instance);
29
+ const methodNames = this.metadataScanner.getAllMethodNames(prototype);
30
+ for (const methodName of methodNames) {
31
+ const metadata = this.reflector.get(ON_EVENT_METADATA, prototype[methodName]);
32
+ if (!metadata)
33
+ continue;
34
+ handlers.push({
35
+ eventType: metadata.eventType,
36
+ handler: instance[methodName].bind(instance),
37
+ retry: metadata.retry,
38
+ });
39
+ }
40
+ }
41
+ return handlers;
42
+ }
43
+ exploreWorkflowStepHandlers() {
44
+ const handlers = [];
45
+ for (const wrapper of this.discovery.getProviders()) {
46
+ const { instance } = wrapper;
47
+ if (!instance || typeof instance !== "object")
48
+ continue;
49
+ const prototype = Object.getPrototypeOf(instance);
50
+ const methodNames = this.metadataScanner.getAllMethodNames(prototype);
51
+ for (const methodName of methodNames) {
52
+ const metadata = this.reflector.get(ON_WORKFLOW_STEP_METADATA, prototype[methodName]);
53
+ if (!metadata)
54
+ continue;
55
+ handlers.push({
56
+ workflowName: metadata.workflowName,
57
+ stepType: metadata.stepType,
58
+ handler: instance[methodName].bind(instance),
59
+ });
60
+ }
61
+ }
62
+ return handlers;
63
+ }
64
+ };
65
+ SynkroExplorer = __decorate([
66
+ Injectable(),
67
+ __metadata("design:paramtypes", [DiscoveryService,
68
+ MetadataScanner,
69
+ Reflector])
70
+ ], SynkroExplorer);
71
+ export { SynkroExplorer };
72
+ //# sourceMappingURL=synkro.explorer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"synkro.explorer.js","sourceRoot":"","sources":["../src/synkro.explorer.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAG5E,OAAO,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAiB9E,IAAM,cAAc,GAApB,MAAM,cAAc;IAEN;IACA;IACA;IAHnB,YACmB,SAA2B,EAC3B,eAAgC,EAChC,SAAoB;QAFpB,cAAS,GAAT,SAAS,CAAkB;QAC3B,oBAAe,GAAf,eAAe,CAAiB;QAChC,cAAS,GAAT,SAAS,CAAW;IACpC,CAAC;IAEJ,oBAAoB;QAClB,MAAM,QAAQ,GAA6B,EAAE,CAAC;QAE9C,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,EAAE,CAAC;YACpD,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;YAC7B,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ;gBAAE,SAAS;YAExD,MAAM,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YAClD,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAEtE,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;gBACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CACjC,iBAAiB,EACjB,SAAS,CAAC,UAAU,CAAC,CACtB,CAAC;gBACF,IAAI,CAAC,QAAQ;oBAAE,SAAS;gBAExB,QAAQ,CAAC,IAAI,CAAC;oBACZ,SAAS,EAAE,QAAQ,CAAC,SAAS;oBAC7B,OAAO,EAAG,QAAgC,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;oBACrE,KAAK,EAAE,QAAQ,CAAC,KAAK;iBACtB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,2BAA2B;QACzB,MAAM,QAAQ,GAAoC,EAAE,CAAC;QAErD,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,EAAE,CAAC;YACpD,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;YAC7B,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ;gBAAE,SAAS;YAExD,MAAM,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YAClD,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAEtE,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;gBACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CACjC,yBAAyB,EACzB,SAAS,CAAC,UAAU,CAAC,CACtB,CAAC;gBACF,IAAI,CAAC,QAAQ;oBAAE,SAAS;gBAExB,QAAQ,CAAC,IAAI,CAAC;oBACZ,YAAY,EAAE,QAAQ,CAAC,YAAY;oBACnC,QAAQ,EAAE,QAAQ,CAAC,QAAQ;oBAC3B,OAAO,EAAG,QAAgC,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;iBACtE,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF,CAAA;AA9DY,cAAc;IAD1B,UAAU,EAAE;qCAGmB,gBAAgB;QACV,eAAe;QACrB,SAAS;GAJ5B,cAAc,CA8D1B"}
@@ -0,0 +1,13 @@
1
+ import type { SynkroWorkflow } from "@synkro/core";
2
+ export interface SynkroModuleOptions {
3
+ transport: "redis" | "in-memory";
4
+ redisUrl?: string;
5
+ debug?: boolean;
6
+ workflows?: SynkroWorkflow[];
7
+ }
8
+ export interface SynkroModuleAsyncOptions {
9
+ imports?: any[];
10
+ useFactory: (...args: any[]) => Promise<SynkroModuleOptions> | SynkroModuleOptions;
11
+ inject?: any[];
12
+ }
13
+ //# sourceMappingURL=synkro.interfaces.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"synkro.interfaces.d.ts","sourceRoot":"","sources":["../src/synkro.interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,OAAO,GAAG,WAAW,CAAC;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,wBAAwB;IACvC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;IAChB,UAAU,EAAE,CACV,GAAG,IAAI,EAAE,GAAG,EAAE,KACX,OAAO,CAAC,mBAAmB,CAAC,GAAG,mBAAmB,CAAC;IACxD,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC;CAChB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=synkro.interfaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"synkro.interfaces.js","sourceRoot":"","sources":["../src/synkro.interfaces.ts"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ import { DynamicModule } from "@nestjs/common";
2
+ import type { SynkroModuleAsyncOptions, SynkroModuleOptions } from "./synkro.interfaces.js";
3
+ export declare class SynkroModule {
4
+ static forRoot(options: SynkroModuleOptions): DynamicModule;
5
+ static forRootAsync(options: SynkroModuleAsyncOptions): DynamicModule;
6
+ }
7
+ //# sourceMappingURL=synkro.module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"synkro.module.d.ts","sourceRoot":"","sources":["../src/synkro.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAU,MAAM,gBAAgB,CAAC;AAMvD,OAAO,KAAK,EACV,wBAAwB,EACxB,mBAAmB,EACpB,MAAM,wBAAwB,CAAC;AAEhC,qBACa,YAAY;IACvB,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,mBAAmB,GAAG,aAAa;IAiB3D,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,wBAAwB,GAAG,aAAa;CAiBtE"}
@@ -0,0 +1,52 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var SynkroModule_1;
8
+ import { Module } from "@nestjs/common";
9
+ import { DiscoveryModule } from "@nestjs/core";
10
+ import { SYNKRO_MODULE_OPTIONS } from "./synkro.constants.js";
11
+ import { SynkroExplorer } from "./synkro.explorer.js";
12
+ import { SynkroService } from "./synkro.service.js";
13
+ let SynkroModule = SynkroModule_1 = class SynkroModule {
14
+ static forRoot(options) {
15
+ return {
16
+ module: SynkroModule_1,
17
+ imports: [DiscoveryModule],
18
+ providers: [
19
+ {
20
+ provide: SYNKRO_MODULE_OPTIONS,
21
+ useValue: options,
22
+ },
23
+ SynkroExplorer,
24
+ SynkroService,
25
+ ],
26
+ exports: [SynkroService],
27
+ global: true,
28
+ };
29
+ }
30
+ static forRootAsync(options) {
31
+ return {
32
+ module: SynkroModule_1,
33
+ imports: [...(options.imports ?? []), DiscoveryModule],
34
+ providers: [
35
+ {
36
+ provide: SYNKRO_MODULE_OPTIONS,
37
+ useFactory: options.useFactory,
38
+ inject: options.inject ?? [],
39
+ },
40
+ SynkroExplorer,
41
+ SynkroService,
42
+ ],
43
+ exports: [SynkroService],
44
+ global: true,
45
+ };
46
+ }
47
+ };
48
+ SynkroModule = SynkroModule_1 = __decorate([
49
+ Module({})
50
+ ], SynkroModule);
51
+ export { SynkroModule };
52
+ //# sourceMappingURL=synkro.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"synkro.module.js","sourceRoot":"","sources":["../src/synkro.module.ts"],"names":[],"mappings":";;;;;;;AAAA,OAAO,EAAiB,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAO7C,IAAM,YAAY,oBAAlB,MAAM,YAAY;IACvB,MAAM,CAAC,OAAO,CAAC,OAA4B;QACzC,OAAO;YACL,MAAM,EAAE,cAAY;YACpB,OAAO,EAAE,CAAC,eAAe,CAAC;YAC1B,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,qBAAqB;oBAC9B,QAAQ,EAAE,OAAO;iBAClB;gBACD,cAAc;gBACd,aAAa;aACd;YACD,OAAO,EAAE,CAAC,aAAa,CAAC;YACxB,MAAM,EAAE,IAAI;SACb,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,OAAiC;QACnD,OAAO;YACL,MAAM,EAAE,cAAY;YACpB,OAAO,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,eAAe,CAAC;YACtD,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,qBAAqB;oBAC9B,UAAU,EAAE,OAAO,CAAC,UAAU;oBAC9B,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,EAAE;iBAC7B;gBACD,cAAc;gBACd,aAAa;aACd;YACD,OAAO,EAAE,CAAC,aAAa,CAAC;YACxB,MAAM,EAAE,IAAI;SACb,CAAC;IACJ,CAAC;CACF,CAAA;AAnCY,YAAY;IADxB,MAAM,CAAC,EAAE,CAAC;GACE,YAAY,CAmCxB"}
@@ -0,0 +1,15 @@
1
+ import { OnModuleDestroy, OnModuleInit } from "@nestjs/common";
2
+ import type { HandlerFunction, RetryConfig } from "@synkro/core";
3
+ import { SynkroExplorer } from "./synkro.explorer.js";
4
+ import type { SynkroModuleOptions } from "./synkro.interfaces.js";
5
+ export declare class SynkroService implements OnModuleInit, OnModuleDestroy {
6
+ private readonly options;
7
+ private readonly explorer;
8
+ private synkro;
9
+ constructor(options: SynkroModuleOptions, explorer: SynkroExplorer);
10
+ onModuleInit(): Promise<void>;
11
+ onModuleDestroy(): Promise<void>;
12
+ publish(event: string, payload?: unknown, requestId?: string): Promise<string>;
13
+ on(eventType: string, handler: HandlerFunction, retry?: RetryConfig): void;
14
+ }
15
+ //# sourceMappingURL=synkro.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"synkro.service.d.ts","sourceRoot":"","sources":["../src/synkro.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,eAAe,EACf,YAAY,EACb,MAAM,gBAAgB,CAAC;AAExB,OAAO,KAAK,EACV,eAAe,EACf,WAAW,EAEZ,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAElE,qBACa,aAAc,YAAW,YAAY,EAAE,eAAe;IAK/D,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAL3B,OAAO,CAAC,MAAM,CAAU;gBAIL,OAAO,EAAE,mBAAmB,EAC5B,QAAQ,EAAE,cAAc;IAGrC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAkC7B,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAIhC,OAAO,CACX,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,OAAO,EACjB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC;IAIlB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,KAAK,CAAC,EAAE,WAAW,GAAG,IAAI;CAG3E"}
@@ -0,0 +1,68 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
11
+ return function (target, key) { decorator(target, key, paramIndex); }
12
+ };
13
+ import { Inject, Injectable, } from "@nestjs/common";
14
+ import { Synkro } from "@synkro/core";
15
+ import { SYNKRO_MODULE_OPTIONS } from "./synkro.constants.js";
16
+ import { SynkroExplorer } from "./synkro.explorer.js";
17
+ let SynkroService = class SynkroService {
18
+ options;
19
+ explorer;
20
+ synkro;
21
+ constructor(options, explorer) {
22
+ this.options = options;
23
+ this.explorer = explorer;
24
+ }
25
+ async onModuleInit() {
26
+ const workflows = this.options.workflows
27
+ ? structuredClone(this.options.workflows)
28
+ : [];
29
+ // Patch decorated handler functions into workflow step definitions
30
+ const stepHandlers = this.explorer.exploreWorkflowStepHandlers();
31
+ for (const workflow of workflows) {
32
+ for (const step of workflow.steps) {
33
+ const discovered = stepHandlers.find((h) => h.workflowName === workflow.name && h.stepType === step.type);
34
+ if (discovered) {
35
+ step.handler = discovered.handler;
36
+ }
37
+ }
38
+ }
39
+ const synkroOptions = {
40
+ transport: this.options.transport,
41
+ redisUrl: this.options.redisUrl,
42
+ debug: this.options.debug,
43
+ workflows,
44
+ };
45
+ this.synkro = await Synkro.start(synkroOptions);
46
+ // Register discovered event handlers
47
+ const eventHandlers = this.explorer.exploreEventHandlers();
48
+ for (const { eventType, handler, retry } of eventHandlers) {
49
+ this.synkro.on(eventType, handler, retry);
50
+ }
51
+ }
52
+ async onModuleDestroy() {
53
+ await this.synkro.stop();
54
+ }
55
+ async publish(event, payload, requestId) {
56
+ return this.synkro.publish(event, payload, requestId);
57
+ }
58
+ on(eventType, handler, retry) {
59
+ this.synkro.on(eventType, handler, retry);
60
+ }
61
+ };
62
+ SynkroService = __decorate([
63
+ Injectable(),
64
+ __param(0, Inject(SYNKRO_MODULE_OPTIONS)),
65
+ __metadata("design:paramtypes", [Object, SynkroExplorer])
66
+ ], SynkroService);
67
+ export { SynkroService };
68
+ //# sourceMappingURL=synkro.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"synkro.service.js","sourceRoot":"","sources":["../src/synkro.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EACL,MAAM,EACN,UAAU,GAGX,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAOtC,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAI/C,IAAM,aAAa,GAAnB,MAAM,aAAa;IAKL;IACA;IALX,MAAM,CAAU;IAExB,YAEmB,OAA4B,EAC5B,QAAwB;QADxB,YAAO,GAAP,OAAO,CAAqB;QAC5B,aAAQ,GAAR,QAAQ,CAAgB;IACxC,CAAC;IAEJ,KAAK,CAAC,YAAY;QAChB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS;YACtC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;YACzC,CAAC,CAAC,EAAE,CAAC;QAEP,mEAAmE;QACnE,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,2BAA2B,EAAE,CAAC;QACjE,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;gBAClC,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAClC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,IAAI,CACpE,CAAC;gBACF,IAAI,UAAU,EAAE,CAAC;oBACf,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;gBACpC,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,aAAa,GAAkB;YACnC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS;YACjC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ;YAC/B,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;YACzB,SAAS;SACV,CAAC;QAEF,IAAI,CAAC,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAEhD,qCAAqC;QACrC,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,oBAAoB,EAAE,CAAC;QAC3D,KAAK,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,aAAa,EAAE,CAAC;YAC1D,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,OAAO,CACX,KAAa,EACb,OAAiB,EACjB,SAAkB;QAElB,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IACxD,CAAC;IAED,EAAE,CAAC,SAAiB,EAAE,OAAwB,EAAE,KAAmB;QACjE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAC5C,CAAC;CACF,CAAA;AA1DY,aAAa;IADzB,UAAU,EAAE;IAKR,WAAA,MAAM,CAAC,qBAAqB,CAAC,CAAA;6CAEH,cAAc;GANhC,aAAa,CA0DzB"}
package/package.json ADDED
@@ -0,0 +1,35 @@
1
+ {
2
+ "name": "@synkro/nestjs",
3
+ "version": "0.1.0",
4
+ "description": "NestJS integration module for @synkro/core",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/index.d.ts",
10
+ "import": "./dist/index.js",
11
+ "default": "./dist/index.js"
12
+ }
13
+ },
14
+ "files": ["dist"],
15
+ "type": "module",
16
+ "scripts": {
17
+ "build": "tsc",
18
+ "type-check": "tsc --noEmit"
19
+ },
20
+ "peerDependencies": {
21
+ "@nestjs/common": "^10.0.0 || ^11.0.0",
22
+ "@nestjs/core": "^10.0.0 || ^11.0.0",
23
+ "@synkro/core": "^0.5.0",
24
+ "reflect-metadata": "^0.1.13 || ^0.2.0"
25
+ },
26
+ "devDependencies": {
27
+ "@nestjs/common": "^11.0.0",
28
+ "@nestjs/core": "^11.0.0",
29
+ "@synkro/core": "file:../core",
30
+ "reflect-metadata": "^0.2.0",
31
+ "rxjs": "^7.8.0",
32
+ "typescript": "^5.7.0"
33
+ },
34
+ "license": "ISC"
35
+ }