@rayondigital/nest-dapr 0.9.2

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.
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.patchActorManagerForNest = void 0;
16
+ const ActorManager_1 = __importDefault(require("@dapr/dapr/actors/runtime/ActorManager"));
17
+ const common_1 = require("@nestjs/common");
18
+ const instance_wrapper_1 = require("@nestjs/core/injector/instance-wrapper");
19
+ function patchActorManagerForNest(moduleRef, invokeWrapperFn) {
20
+ const originalCreateActor = ActorManager_1.default.prototype.createActor;
21
+ const originalCallActor = ActorManager_1.default.prototype.callActorMethod;
22
+ ActorManager_1.default.prototype.createActor = function (actorId) {
23
+ return __awaiter(this, void 0, void 0, function* () {
24
+ const instance = yield originalCreateActor.bind(this)(actorId);
25
+ try {
26
+ yield resolveDependencies(moduleRef, instance);
27
+ }
28
+ catch (error) {
29
+ console.error(error);
30
+ throw error;
31
+ }
32
+ return instance;
33
+ });
34
+ };
35
+ if (invokeWrapperFn) {
36
+ ActorManager_1.default.prototype.callActorMethod = function (actorId, methodName, data) {
37
+ return __awaiter(this, void 0, void 0, function* () {
38
+ return yield invokeWrapperFn(actorId, methodName, data, originalCallActor.bind(this));
39
+ });
40
+ };
41
+ }
42
+ }
43
+ exports.patchActorManagerForNest = patchActorManagerForNest;
44
+ function resolveDependencies(moduleRef, instance) {
45
+ return __awaiter(this, void 0, void 0, function* () {
46
+ const type = instance.constructor;
47
+ try {
48
+ const injector = moduleRef['injector'];
49
+ const wrapper = new instance_wrapper_1.InstanceWrapper({
50
+ name: type && type.name,
51
+ metatype: type,
52
+ isResolved: false,
53
+ scope: common_1.Scope.TRANSIENT,
54
+ durable: true,
55
+ });
56
+ const properties = injector.reflectProperties(wrapper.metatype);
57
+ for (const item of properties) {
58
+ if ('type' in item && item.type) {
59
+ const propertyType = item.type;
60
+ const resolved = yield moduleRef.get(propertyType, { strict: false });
61
+ if (resolved) {
62
+ instance[item.key] = resolved;
63
+ }
64
+ }
65
+ }
66
+ }
67
+ catch (error) {
68
+ console.error(error);
69
+ throw error;
70
+ }
71
+ });
72
+ }
@@ -0,0 +1,6 @@
1
+ import { StatefulActor } from './stateful.actor';
2
+ export declare class StatefulActorOf<TState> extends StatefulActor {
3
+ state: TState;
4
+ saveStateObject(): Promise<void>;
5
+ getStateObject(): Promise<TState>;
6
+ }
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.StatefulActorOf = void 0;
13
+ const stateful_actor_1 = require("./stateful.actor");
14
+ class StatefulActorOf extends stateful_actor_1.StatefulActor {
15
+ saveStateObject() {
16
+ return __awaiter(this, void 0, void 0, function* () {
17
+ yield this.setState('state', this.state);
18
+ yield this.getStateManager().saveState();
19
+ });
20
+ }
21
+ getStateObject() {
22
+ return __awaiter(this, void 0, void 0, function* () {
23
+ return yield this.getState('state');
24
+ });
25
+ }
26
+ }
27
+ exports.StatefulActorOf = StatefulActorOf;
@@ -0,0 +1,7 @@
1
+ import { AbstractActor } from '@dapr/dapr';
2
+ export declare class StatefulActor extends AbstractActor {
3
+ setState<T>(stateName: string, value: T): Promise<void>;
4
+ removeState(stateName: string): Promise<void>;
5
+ saveState(): Promise<void>;
6
+ getState<T>(stateName: string, defaultValue?: T): Promise<T | undefined>;
7
+ }
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.StatefulActor = void 0;
13
+ const dapr_1 = require("@dapr/dapr");
14
+ class StatefulActor extends dapr_1.AbstractActor {
15
+ setState(stateName, value) {
16
+ return __awaiter(this, void 0, void 0, function* () {
17
+ yield this.getStateManager().setState(stateName, value);
18
+ });
19
+ }
20
+ removeState(stateName) {
21
+ return __awaiter(this, void 0, void 0, function* () {
22
+ yield this.getStateManager().removeState(stateName);
23
+ });
24
+ }
25
+ saveState() {
26
+ return __awaiter(this, void 0, void 0, function* () {
27
+ yield this.getStateManager().saveState();
28
+ });
29
+ }
30
+ getState(stateName, defaultValue = undefined) {
31
+ return __awaiter(this, void 0, void 0, function* () {
32
+ try {
33
+ const value = yield this.getStateManager().getState(stateName);
34
+ if (value === undefined) {
35
+ return defaultValue;
36
+ }
37
+ return value;
38
+ }
39
+ catch (e) {
40
+ const exists = yield this.getStateManager().containsState(stateName);
41
+ if (!exists) {
42
+ return defaultValue;
43
+ }
44
+ throw e;
45
+ }
46
+ });
47
+ }
48
+ }
49
+ exports.StatefulActor = StatefulActor;
@@ -0,0 +1,3 @@
1
+ export declare const DAPR_BINDING_METADATA = "DAPR_BINDING_METADATA";
2
+ export declare const DAPR_PUBSUB_METADATA = "DAPR_PUBSUB_METADATA";
3
+ export declare const DAPR_ACTOR_METADATA = "DAPR_ACTOR_METADATA";
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DAPR_ACTOR_METADATA = exports.DAPR_PUBSUB_METADATA = exports.DAPR_BINDING_METADATA = void 0;
4
+ exports.DAPR_BINDING_METADATA = 'DAPR_BINDING_METADATA';
5
+ exports.DAPR_PUBSUB_METADATA = 'DAPR_PUBSUB_METADATA';
6
+ exports.DAPR_ACTOR_METADATA = 'DAPR_ACTOR_METADATA';
@@ -0,0 +1,6 @@
1
+ import { Type } from '@nestjs/common';
2
+ export interface DaprActorMetadata {
3
+ interfaceType: Type<any> | Function;
4
+ name?: string;
5
+ }
6
+ export declare function DaprActor(options: DaprActorMetadata): ClassDecorator;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DaprActor = void 0;
4
+ const common_1 = require("@nestjs/common");
5
+ const constants_1 = require("./constants");
6
+ function DaprActor(options) {
7
+ return (target) => {
8
+ var _a;
9
+ (0, common_1.SetMetadata)(constants_1.DAPR_ACTOR_METADATA, {
10
+ name: (_a = options.name) !== null && _a !== void 0 ? _a : target.constructor.name,
11
+ interfaceType: options.interfaceType,
12
+ })(target);
13
+ (0, common_1.Injectable)({ scope: common_1.Scope.TRANSIENT })(target);
14
+ };
15
+ }
16
+ exports.DaprActor = DaprActor;
@@ -0,0 +1,4 @@
1
+ export interface DaprBindingMetadata {
2
+ name: string;
3
+ }
4
+ export declare const DaprBinding: (name: string) => MethodDecorator;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DaprBinding = void 0;
4
+ const common_1 = require("@nestjs/common");
5
+ const constants_1 = require("./constants");
6
+ const DaprBinding = (name) => (0, common_1.SetMetadata)(constants_1.DAPR_BINDING_METADATA, { name });
7
+ exports.DaprBinding = DaprBinding;
@@ -0,0 +1,12 @@
1
+ import { Type } from '@nestjs/common';
2
+ import { Reflector } from '@nestjs/core';
3
+ import { DaprActorMetadata } from './dapr-actor.decorator';
4
+ import { DaprBindingMetadata } from './dapr-binding.decorator';
5
+ import { DaprPubSubMetadata } from './dapr-pubsub.decorator';
6
+ export declare class DaprMetadataAccessor {
7
+ private readonly reflector;
8
+ constructor(reflector: Reflector);
9
+ getDaprPubSubHandlerMetadata(target: Type<unknown>): DaprPubSubMetadata | undefined;
10
+ getDaprBindingHandlerMetadata(target: Type<unknown>): DaprBindingMetadata | undefined;
11
+ getDaprActorMetadata(target: Function | Type<unknown>): DaprActorMetadata | undefined;
12
+ }
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ 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;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.DaprMetadataAccessor = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const core_1 = require("@nestjs/core");
15
+ const constants_1 = require("./constants");
16
+ let DaprMetadataAccessor = class DaprMetadataAccessor {
17
+ constructor(reflector) {
18
+ this.reflector = reflector;
19
+ }
20
+ getDaprPubSubHandlerMetadata(target) {
21
+ return this.reflector.get(constants_1.DAPR_PUBSUB_METADATA, target);
22
+ }
23
+ getDaprBindingHandlerMetadata(target) {
24
+ return this.reflector.get(constants_1.DAPR_BINDING_METADATA, target);
25
+ }
26
+ getDaprActorMetadata(target) {
27
+ return this.reflector.get(constants_1.DAPR_ACTOR_METADATA, target);
28
+ }
29
+ };
30
+ DaprMetadataAccessor = __decorate([
31
+ (0, common_1.Injectable)(),
32
+ __metadata("design:paramtypes", [core_1.Reflector])
33
+ ], DaprMetadataAccessor);
34
+ exports.DaprMetadataAccessor = DaprMetadataAccessor;
@@ -0,0 +1,6 @@
1
+ export interface DaprPubSubMetadata {
2
+ name: string;
3
+ topicName: string;
4
+ route?: string;
5
+ }
6
+ export declare const DaprPubSub: (name: string, topicName: string, route?: string) => MethodDecorator;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DaprPubSub = void 0;
4
+ const common_1 = require("@nestjs/common");
5
+ const constants_1 = require("./constants");
6
+ const DaprPubSub = (name, topicName, route) => (0, common_1.SetMetadata)(constants_1.DAPR_PUBSUB_METADATA, {
7
+ name,
8
+ topicName,
9
+ route,
10
+ });
11
+ exports.DaprPubSub = DaprPubSub;
@@ -0,0 +1,23 @@
1
+ import { DaprServer } from '@dapr/dapr';
2
+ import { OnApplicationBootstrap, OnApplicationShutdown } from '@nestjs/common';
3
+ import { DiscoveryService, MetadataScanner, ModuleRef } from '@nestjs/core';
4
+ import { DaprActorClient } from './actors/dapr-actor-client.service';
5
+ import { DaprMetadataAccessor } from './dapr-metadata.accessor';
6
+ import { DaprModuleOptions } from './dapr.module';
7
+ export declare class DaprLoader implements OnApplicationBootstrap, OnApplicationShutdown {
8
+ private readonly discoveryService;
9
+ private readonly metadataScanner;
10
+ private readonly daprServer;
11
+ private readonly daprMetadataAccessor;
12
+ private readonly options;
13
+ private readonly daprActorClient;
14
+ private readonly moduleRef;
15
+ private readonly logger;
16
+ constructor(discoveryService: DiscoveryService, metadataScanner: MetadataScanner, daprServer: DaprServer, daprMetadataAccessor: DaprMetadataAccessor, options: DaprModuleOptions, daprActorClient: DaprActorClient, moduleRef: ModuleRef);
17
+ onApplicationBootstrap(): Promise<void>;
18
+ onApplicationShutdown(): Promise<void>;
19
+ loadDaprHandlers(): void;
20
+ private subscribeToDaprPubSubEventIfListener;
21
+ private subscribeToDaprBindingEventIfListener;
22
+ private registerActor;
23
+ }
@@ -0,0 +1,157 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ 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;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
15
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
16
+ return new (P || (P = Promise))(function (resolve, reject) {
17
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
18
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
19
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
20
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
21
+ });
22
+ };
23
+ var DaprLoader_1;
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ exports.DaprLoader = void 0;
26
+ const dapr_1 = require("@dapr/dapr");
27
+ const common_1 = require("@nestjs/common");
28
+ const core_1 = require("@nestjs/core");
29
+ const dapr_actor_client_service_1 = require("./actors/dapr-actor-client.service");
30
+ const nest_actor_manager_1 = require("./actors/nest-actor-manager");
31
+ const dapr_metadata_accessor_1 = require("./dapr-metadata.accessor");
32
+ const dapr_module_1 = require("./dapr.module");
33
+ let DaprLoader = DaprLoader_1 = class DaprLoader {
34
+ constructor(discoveryService, metadataScanner, daprServer, daprMetadataAccessor, options, daprActorClient, moduleRef) {
35
+ this.discoveryService = discoveryService;
36
+ this.metadataScanner = metadataScanner;
37
+ this.daprServer = daprServer;
38
+ this.daprMetadataAccessor = daprMetadataAccessor;
39
+ this.options = options;
40
+ this.daprActorClient = daprActorClient;
41
+ this.moduleRef = moduleRef;
42
+ this.logger = new common_1.Logger(DaprLoader_1.name);
43
+ }
44
+ onApplicationBootstrap() {
45
+ return __awaiter(this, void 0, void 0, function* () {
46
+ (0, nest_actor_manager_1.patchActorManagerForNest)(this.moduleRef);
47
+ yield this.daprServer.actor.init();
48
+ this.loadDaprHandlers();
49
+ this.logger.log('Starting Dapr server');
50
+ yield this.daprServer.start();
51
+ this.daprServer.invoker.listen('test', (data) => __awaiter(this, void 0, void 0, function* () {
52
+ console.log('data', data);
53
+ return { status: 200, data: { message: 'ok' } };
54
+ }), { method: dapr_1.HttpMethod.POST });
55
+ this.logger.log('Dapr server started');
56
+ const resRegisteredActors = yield this.daprServer.actor.getRegisteredActors();
57
+ this.logger.log(`Registered Actors: ${resRegisteredActors.join(', ')}`);
58
+ });
59
+ }
60
+ onApplicationShutdown() {
61
+ return __awaiter(this, void 0, void 0, function* () {
62
+ this.logger.log('Stopping Dapr server');
63
+ yield this.daprServer.stop();
64
+ this.logger.log('Dapr server stopped');
65
+ });
66
+ }
67
+ loadDaprHandlers() {
68
+ const providers = this.discoveryService.getProviders();
69
+ providers
70
+ .filter((wrapper) => wrapper.isDependencyTreeStatic() &&
71
+ wrapper.metatype &&
72
+ this.daprMetadataAccessor.getDaprActorMetadata(wrapper.metatype))
73
+ .forEach((wrapper) => __awaiter(this, void 0, void 0, function* () {
74
+ yield this.registerActor(wrapper.metatype);
75
+ }));
76
+ const controllers = this.discoveryService.getControllers();
77
+ [...providers, ...controllers]
78
+ .filter((wrapper) => wrapper.isDependencyTreeStatic())
79
+ .filter((wrapper) => wrapper.instance)
80
+ .forEach((wrapper) => __awaiter(this, void 0, void 0, function* () {
81
+ const { instance } = wrapper;
82
+ const prototype = Object.getPrototypeOf(instance) || {};
83
+ this.metadataScanner.scanFromPrototype(instance, prototype, (methodKey) => __awaiter(this, void 0, void 0, function* () {
84
+ yield this.subscribeToDaprPubSubEventIfListener(instance, methodKey);
85
+ yield this.subscribeToDaprBindingEventIfListener(instance, methodKey);
86
+ }));
87
+ }));
88
+ }
89
+ subscribeToDaprPubSubEventIfListener(instance, methodKey) {
90
+ return __awaiter(this, void 0, void 0, function* () {
91
+ const daprPubSubMetadata = this.daprMetadataAccessor.getDaprPubSubHandlerMetadata(instance[methodKey]);
92
+ if (!daprPubSubMetadata) {
93
+ return;
94
+ }
95
+ const { name, topicName, route } = daprPubSubMetadata;
96
+ this.logger.log(`Subscribing to Dapr: ${name}, Topic: ${topicName}${route ? ' on route ' + route : ''}`);
97
+ yield this.daprServer.pubsub.subscribe(name, topicName, (data) => __awaiter(this, void 0, void 0, function* () {
98
+ try {
99
+ yield instance[methodKey].call(instance, data);
100
+ }
101
+ catch (err) {
102
+ if (this.options.onError) {
103
+ const response = this.options.onError(name, topicName, err);
104
+ if (response == dapr_1.DaprPubSubStatusEnum.RETRY) {
105
+ this.logger.debug('Retrying pubsub handler operation');
106
+ }
107
+ else if (response == dapr_1.DaprPubSubStatusEnum.DROP) {
108
+ this.logger.debug('Dropping message');
109
+ }
110
+ return response;
111
+ }
112
+ }
113
+ return dapr_1.DaprPubSubStatusEnum.SUCCESS;
114
+ }), route);
115
+ });
116
+ }
117
+ subscribeToDaprBindingEventIfListener(instance, methodKey) {
118
+ return __awaiter(this, void 0, void 0, function* () {
119
+ const daprBindingMetadata = this.daprMetadataAccessor.getDaprBindingHandlerMetadata(instance[methodKey]);
120
+ if (!daprBindingMetadata) {
121
+ return;
122
+ }
123
+ const { name } = daprBindingMetadata;
124
+ this.logger.log(`Registering Dapr binding: ${name}`);
125
+ yield this.daprServer.binding.receive(name, (data) => __awaiter(this, void 0, void 0, function* () {
126
+ yield instance[methodKey].call(instance, data);
127
+ }));
128
+ });
129
+ }
130
+ registerActor(actorType) {
131
+ var _a, _b, _c, _d;
132
+ return __awaiter(this, void 0, void 0, function* () {
133
+ if (!actorType)
134
+ return;
135
+ const actorTypeName = (_a = actorType.name) !== null && _a !== void 0 ? _a : actorType.constructor.name;
136
+ const daprActorMetadata = this.daprMetadataAccessor.getDaprActorMetadata(actorType);
137
+ const interfaceTypeName = (_c = (_b = daprActorMetadata === null || daprActorMetadata === void 0 ? void 0 : daprActorMetadata.interfaceType) === null || _b === void 0 ? void 0 : _b.name) !== null && _c !== void 0 ? _c : (_d = daprActorMetadata === null || daprActorMetadata === void 0 ? void 0 : daprActorMetadata.interfaceType) === null || _d === void 0 ? void 0 : _d.constructor.name;
138
+ this.logger.log(`Registering Dapr Actor: ${actorTypeName} of type ${interfaceTypeName !== null && interfaceTypeName !== void 0 ? interfaceTypeName : 'unknown'}`);
139
+ yield this.daprServer.actor.registerActor(actorType);
140
+ this.daprActorClient.register(actorTypeName, actorType, this.daprServer.client);
141
+ if (daprActorMetadata.interfaceType) {
142
+ this.daprActorClient.registerInterface(actorType, daprActorMetadata.interfaceType, this.daprServer.client);
143
+ }
144
+ return actorTypeName;
145
+ });
146
+ }
147
+ };
148
+ DaprLoader = DaprLoader_1 = __decorate([
149
+ (0, common_1.Injectable)(),
150
+ __param(4, (0, common_1.Inject)(dapr_module_1.DAPR_MODULE_OPTIONS_TOKEN)),
151
+ __metadata("design:paramtypes", [core_1.DiscoveryService,
152
+ core_1.MetadataScanner,
153
+ dapr_1.DaprServer,
154
+ dapr_metadata_accessor_1.DaprMetadataAccessor, Object, dapr_actor_client_service_1.DaprActorClient,
155
+ core_1.ModuleRef])
156
+ ], DaprLoader);
157
+ exports.DaprLoader = DaprLoader;
@@ -0,0 +1,28 @@
1
+ import { CommunicationProtocolEnum, DaprPubSubStatusEnum } from '@dapr/dapr';
2
+ import { DaprClientOptions } from '@dapr/dapr/types/DaprClientOptions';
3
+ import { DynamicModule, ModuleMetadata, Provider, Type } from '@nestjs/common';
4
+ export declare const DAPR_MODULE_OPTIONS_TOKEN = "DAPR_MODULE_OPTIONS_TOKEN";
5
+ export interface DaprModuleOptions {
6
+ serverHost?: string;
7
+ serverPort?: string;
8
+ communicationProtocol?: CommunicationProtocolEnum;
9
+ clientOptions?: DaprClientOptions;
10
+ onError?: (name: string, topicName: string, error: any) => DaprPubSubStatusEnum;
11
+ }
12
+ export interface DaprModuleOptionsFactory {
13
+ createDaprModuleOptions(): Promise<DaprModuleOptions> | DaprModuleOptions;
14
+ }
15
+ export declare function createOptionsProvider(options: DaprModuleOptions): any;
16
+ export interface DaprModuleAsyncOptions extends Pick<ModuleMetadata, 'imports'> {
17
+ useExisting?: Type<DaprModuleOptionsFactory>;
18
+ useClass?: Type<DaprModuleOptionsFactory>;
19
+ useFactory?: (...args: any[]) => Promise<DaprModuleOptions> | DaprModuleOptions;
20
+ inject?: any[];
21
+ extraProviders?: Provider[];
22
+ }
23
+ export declare class DaprModule {
24
+ static register(options?: DaprModuleOptions): DynamicModule;
25
+ static registerAsync(options: DaprModuleAsyncOptions): DynamicModule;
26
+ private static createAsyncProviders;
27
+ private static createAsyncOptionsProvider;
28
+ }
@@ -0,0 +1,133 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ 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;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
9
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
10
+ return new (P || (P = Promise))(function (resolve, reject) {
11
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
12
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
13
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
14
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
15
+ });
16
+ };
17
+ var DaprModule_1;
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.DaprModule = exports.createOptionsProvider = exports.DAPR_MODULE_OPTIONS_TOKEN = void 0;
20
+ const dapr_1 = require("@dapr/dapr");
21
+ const common_1 = require("@nestjs/common");
22
+ const core_1 = require("@nestjs/core");
23
+ const dapr_actor_client_service_1 = require("./actors/dapr-actor-client.service");
24
+ const dapr_metadata_accessor_1 = require("./dapr-metadata.accessor");
25
+ const dapr_loader_1 = require("./dapr.loader");
26
+ exports.DAPR_MODULE_OPTIONS_TOKEN = 'DAPR_MODULE_OPTIONS_TOKEN';
27
+ function createOptionsProvider(options) {
28
+ if (!options.clientOptions.actor) {
29
+ options.clientOptions.actor = {
30
+ reentrancy: {
31
+ enabled: true,
32
+ maxStackDepth: 6,
33
+ },
34
+ actorIdleTimeout: '15m',
35
+ actorScanInterval: '1m',
36
+ };
37
+ }
38
+ return { provide: exports.DAPR_MODULE_OPTIONS_TOKEN, useValue: options || {} };
39
+ }
40
+ exports.createOptionsProvider = createOptionsProvider;
41
+ let DaprModule = DaprModule_1 = class DaprModule {
42
+ static register(options) {
43
+ return {
44
+ global: true,
45
+ module: DaprModule_1,
46
+ imports: [core_1.DiscoveryModule],
47
+ providers: [
48
+ createOptionsProvider(options),
49
+ {
50
+ provide: dapr_1.DaprServer,
51
+ useValue: new dapr_1.DaprServer({
52
+ serverHost: options.serverHost,
53
+ serverPort: options.serverPort,
54
+ clientOptions: options.clientOptions,
55
+ communicationProtocol: options.communicationProtocol,
56
+ }),
57
+ },
58
+ {
59
+ provide: dapr_1.DaprClient,
60
+ useFactory: (daprServer) => daprServer.client,
61
+ inject: [dapr_1.DaprServer],
62
+ },
63
+ dapr_loader_1.DaprLoader,
64
+ dapr_metadata_accessor_1.DaprMetadataAccessor,
65
+ core_1.Reflector,
66
+ ],
67
+ exports: [dapr_1.DaprClient],
68
+ };
69
+ }
70
+ static registerAsync(options) {
71
+ return {
72
+ global: true,
73
+ module: DaprModule_1,
74
+ imports: [...options.imports, core_1.DiscoveryModule],
75
+ providers: [
76
+ ...this.createAsyncProviders(options),
77
+ {
78
+ provide: dapr_1.DaprServer,
79
+ useFactory: ({ serverHost, serverPort, communicationProtocol, clientOptions, }) => new dapr_1.DaprServer({
80
+ serverHost,
81
+ serverPort,
82
+ clientOptions,
83
+ communicationProtocol,
84
+ }),
85
+ inject: [exports.DAPR_MODULE_OPTIONS_TOKEN],
86
+ },
87
+ {
88
+ provide: dapr_1.DaprClient,
89
+ useFactory: (daprServer) => daprServer.client,
90
+ inject: [dapr_1.DaprServer],
91
+ },
92
+ dapr_loader_1.DaprLoader,
93
+ dapr_metadata_accessor_1.DaprMetadataAccessor,
94
+ core_1.Reflector,
95
+ ...(options.extraProviders || []),
96
+ ],
97
+ exports: [dapr_1.DaprClient],
98
+ };
99
+ }
100
+ static createAsyncProviders(options) {
101
+ if (options.useExisting || options.useFactory) {
102
+ return [this.createAsyncOptionsProvider(options)];
103
+ }
104
+ return [
105
+ this.createAsyncOptionsProvider(options),
106
+ {
107
+ provide: options.useClass,
108
+ useClass: options.useClass,
109
+ },
110
+ ];
111
+ }
112
+ static createAsyncOptionsProvider(options) {
113
+ if (options.useFactory) {
114
+ return {
115
+ provide: exports.DAPR_MODULE_OPTIONS_TOKEN,
116
+ useFactory: options.useFactory,
117
+ inject: options.inject || [],
118
+ };
119
+ }
120
+ return {
121
+ provide: exports.DAPR_MODULE_OPTIONS_TOKEN,
122
+ useFactory: (optionsFactory) => __awaiter(this, void 0, void 0, function* () { return optionsFactory.createDaprModuleOptions(); }),
123
+ inject: [options.useExisting || options.useClass],
124
+ };
125
+ }
126
+ };
127
+ DaprModule = DaprModule_1 = __decorate([
128
+ (0, common_1.Module)({
129
+ providers: [dapr_actor_client_service_1.DaprActorClient],
130
+ exports: [dapr_actor_client_service_1.DaprActorClient],
131
+ })
132
+ ], DaprModule);
133
+ exports.DaprModule = DaprModule;
@@ -0,0 +1,11 @@
1
+ import { DaprActorClient } from './actors/dapr-actor-client.service';
2
+ import { StatefulActorOf } from './actors/stateful-actor-of';
3
+ import { StatefulActor } from './actors/stateful.actor';
4
+ import { DAPR_BINDING_METADATA, DAPR_PUBSUB_METADATA } from './constants';
5
+ import { DaprActor, DaprActorMetadata } from './dapr-actor.decorator';
6
+ import { DaprBinding, DaprBindingMetadata } from './dapr-binding.decorator';
7
+ import { DaprMetadataAccessor } from './dapr-metadata.accessor';
8
+ import { DaprPubSub, DaprPubSubMetadata } from './dapr-pubsub.decorator';
9
+ import { DaprLoader } from './dapr.loader';
10
+ import { DaprModule } from './dapr.module';
11
+ export { DAPR_BINDING_METADATA, DAPR_PUBSUB_METADATA, DaprMetadataAccessor, DaprBindingMetadata, DaprBinding, DaprPubSubMetadata, DaprPubSub, DaprActorMetadata, DaprActor, DaprLoader, DaprModule, DaprActorClient, StatefulActor, StatefulActorOf, };