atomic-queues 2.2.0 → 3.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 +296 -417
- package/dist/cli/generators/classes.d.ts +1 -1
- package/dist/cli/generators/json-schema.d.ts +1 -1
- package/dist/cli/generators/typescript.d.ts +1 -1
- package/dist/cli/index.js +147 -5
- package/dist/cli/index.js.map +1 -1
- package/dist/cluster/cluster-discovery.service.d.ts +91 -0
- package/dist/cluster/cluster-discovery.service.d.ts.map +1 -0
- package/dist/cluster/cluster-discovery.service.js +423 -0
- package/dist/cluster/cluster-discovery.service.js.map +1 -0
- package/dist/cluster/grpc-peer-monitor.service.d.ts +31 -0
- package/dist/cluster/grpc-peer-monitor.service.d.ts.map +1 -0
- package/dist/cluster/grpc-peer-monitor.service.js +192 -0
- package/dist/cluster/grpc-peer-monitor.service.js.map +1 -0
- package/dist/cluster/index.d.ts +7 -0
- package/dist/cluster/index.d.ts.map +1 -0
- package/dist/cluster/index.js +23 -0
- package/dist/cluster/index.js.map +1 -0
- package/dist/cluster/leader-election.service.d.ts +38 -0
- package/dist/cluster/leader-election.service.d.ts.map +1 -0
- package/dist/cluster/leader-election.service.js +184 -0
- package/dist/cluster/leader-election.service.js.map +1 -0
- package/dist/cluster/master-coordinator.d.ts +50 -0
- package/dist/cluster/master-coordinator.d.ts.map +1 -0
- package/dist/cluster/master-coordinator.js +307 -0
- package/dist/cluster/master-coordinator.js.map +1 -0
- package/dist/cluster/redis-health-monitor.service.d.ts +23 -0
- package/dist/cluster/redis-health-monitor.service.d.ts.map +1 -0
- package/dist/cluster/redis-health-monitor.service.js +100 -0
- package/dist/cluster/redis-health-monitor.service.js.map +1 -0
- package/dist/cluster/server-ring.service.d.ts +48 -0
- package/dist/cluster/server-ring.service.d.ts.map +1 -0
- package/dist/cluster/server-ring.service.js +136 -0
- package/dist/cluster/server-ring.service.js.map +1 -0
- package/dist/decorators/constants.d.ts +0 -3
- package/dist/decorators/constants.d.ts.map +1 -1
- package/dist/decorators/constants.js +1 -5
- package/dist/decorators/constants.js.map +1 -1
- package/dist/decorators/entity.decorators.d.ts +16 -24
- package/dist/decorators/entity.decorators.d.ts.map +1 -1
- package/dist/decorators/entity.decorators.js +0 -39
- package/dist/decorators/entity.decorators.js.map +1 -1
- package/dist/decorators/index.d.ts +0 -1
- package/dist/decorators/index.d.ts.map +1 -1
- package/dist/decorators/index.js +0 -1
- package/dist/decorators/index.js.map +1 -1
- package/dist/decorators/interfaces.d.ts +10 -28
- package/dist/decorators/interfaces.d.ts.map +1 -1
- package/dist/decorators/job.decorators.d.ts +4 -52
- package/dist/decorators/job.decorators.d.ts.map +1 -1
- package/dist/decorators/job.decorators.js +6 -54
- package/dist/decorators/job.decorators.js.map +1 -1
- package/dist/decorators/metadata-readers.d.ts +5 -5
- package/dist/decorators/metadata-readers.d.ts.map +1 -1
- package/dist/decorators/metadata-readers.js +2 -8
- package/dist/decorators/metadata-readers.js.map +1 -1
- package/dist/decorators/schema.decorators.d.ts +1 -1
- package/dist/decorators/schema.decorators.d.ts.map +1 -1
- package/dist/decorators/schema.decorators.js.map +1 -1
- package/dist/decorators/utils.d.ts +1 -1
- package/dist/decorators/utils.d.ts.map +1 -1
- package/dist/decorators/utils.js +5 -1
- package/dist/decorators/utils.js.map +1 -1
- package/dist/domain/interfaces/config.interfaces.d.ts +92 -35
- package/dist/domain/interfaces/config.interfaces.d.ts.map +1 -1
- package/dist/domain/interfaces/index.d.ts +1 -0
- package/dist/domain/interfaces/index.d.ts.map +1 -1
- package/dist/domain/interfaces/index.js +1 -0
- package/dist/domain/interfaces/index.js.map +1 -1
- package/dist/{services/registry → domain/interfaces}/registry.types.d.ts.map +1 -1
- package/dist/domain/interfaces/registry.types.js.map +1 -0
- package/dist/grpc/grpc-client-pool.service.d.ts +71 -0
- package/dist/grpc/grpc-client-pool.service.d.ts.map +1 -0
- package/dist/grpc/grpc-client-pool.service.js +307 -0
- package/dist/grpc/grpc-client-pool.service.js.map +1 -0
- package/dist/grpc/grpc-server.service.d.ts +47 -0
- package/dist/grpc/grpc-server.service.d.ts.map +1 -0
- package/dist/grpc/grpc-server.service.js +494 -0
- package/dist/grpc/grpc-server.service.js.map +1 -0
- package/dist/grpc/index.d.ts +3 -0
- package/dist/grpc/index.d.ts.map +1 -0
- package/dist/{services/gate → grpc}/index.js +2 -1
- package/dist/grpc/index.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/module/atomic-queues.module.d.ts +1 -0
- package/dist/module/atomic-queues.module.d.ts.map +1 -1
- package/dist/module/atomic-queues.module.js +60 -11
- package/dist/module/atomic-queues.module.js.map +1 -1
- package/dist/services/command-discovery/command-discovery.service.js +2 -2
- package/dist/services/command-discovery/command-discovery.service.js.map +1 -1
- package/dist/services/entity-type-registry/entity-type-registry.service.d.ts +13 -0
- package/dist/services/entity-type-registry/entity-type-registry.service.d.ts.map +1 -0
- package/dist/services/entity-type-registry/entity-type-registry.service.js +75 -0
- package/dist/services/entity-type-registry/entity-type-registry.service.js.map +1 -0
- package/dist/services/entity-type-registry/index.d.ts +2 -0
- package/dist/services/entity-type-registry/index.d.ts.map +1 -0
- package/dist/services/{actor-system → entity-type-registry}/index.js +1 -1
- package/dist/services/entity-type-registry/index.js.map +1 -0
- package/dist/services/handler-executor/handler-executor.service.d.ts +0 -2
- package/dist/services/handler-executor/handler-executor.service.d.ts.map +1 -1
- package/dist/services/handler-executor/handler-executor.service.js +0 -19
- package/dist/services/handler-executor/handler-executor.service.js.map +1 -1
- package/dist/services/index.d.ts +3 -9
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +3 -9
- package/dist/services/index.js.map +1 -1
- package/dist/services/message-router/index.d.ts +2 -0
- package/dist/services/message-router/index.d.ts.map +1 -0
- package/dist/services/{actor-registry → message-router}/index.js +1 -1
- package/dist/services/message-router/index.js.map +1 -0
- package/dist/services/message-router/message-router.service.d.ts +53 -0
- package/dist/services/message-router/message-router.service.d.ts.map +1 -0
- package/dist/services/message-router/message-router.service.js +519 -0
- package/dist/services/message-router/message-router.service.js.map +1 -0
- package/dist/services/queue-bus/cluster-contracts.d.ts +1 -1
- package/dist/services/queue-bus/cluster-contracts.d.ts.map +1 -1
- package/dist/services/queue-bus/cluster-contracts.js.map +1 -1
- package/dist/services/queue-bus/queue-bus.service.d.ts +3 -21
- package/dist/services/queue-bus/queue-bus.service.d.ts.map +1 -1
- package/dist/services/queue-bus/queue-bus.service.js +15 -119
- package/dist/services/queue-bus/queue-bus.service.js.map +1 -1
- package/dist/utils/id.utils.d.ts +3 -0
- package/dist/utils/id.utils.d.ts.map +1 -0
- package/dist/utils/id.utils.js +14 -0
- package/dist/utils/id.utils.js.map +1 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/wal/index.d.ts +4 -0
- package/dist/wal/index.d.ts.map +1 -0
- package/dist/{services/executor-pool → wal}/index.js +3 -1
- package/dist/wal/index.js.map +1 -0
- package/dist/wal/wal.scripts.d.ts +51 -0
- package/dist/wal/wal.scripts.d.ts.map +1 -0
- package/dist/wal/wal.scripts.js +84 -0
- package/dist/wal/wal.scripts.js.map +1 -0
- package/dist/wal/wal.service.d.ts +46 -0
- package/dist/wal/wal.service.d.ts.map +1 -0
- package/dist/wal/wal.service.js +243 -0
- package/dist/wal/wal.service.js.map +1 -0
- package/dist/wal/wal.types.d.ts +23 -0
- package/dist/wal/wal.types.d.ts.map +1 -0
- package/dist/wal/wal.types.js +3 -0
- package/dist/wal/wal.types.js.map +1 -0
- package/dist/workers/consistent-hash.d.ts +97 -0
- package/dist/workers/consistent-hash.d.ts.map +1 -0
- package/dist/workers/consistent-hash.js +231 -0
- package/dist/workers/consistent-hash.js.map +1 -0
- package/dist/workers/entity-worker-manager.d.ts +35 -0
- package/dist/workers/entity-worker-manager.d.ts.map +1 -0
- package/dist/workers/entity-worker-manager.js +237 -0
- package/dist/workers/entity-worker-manager.js.map +1 -0
- package/dist/workers/entity-worker.d.ts +54 -0
- package/dist/workers/entity-worker.d.ts.map +1 -0
- package/dist/workers/entity-worker.js +142 -0
- package/dist/workers/entity-worker.js.map +1 -0
- package/dist/workers/index.d.ts +4 -0
- package/dist/workers/index.d.ts.map +1 -0
- package/dist/workers/index.js +20 -0
- package/dist/workers/index.js.map +1 -0
- package/package.json +17 -4
- package/dist/decorators/actor.decorators.d.ts +0 -4
- package/dist/decorators/actor.decorators.d.ts.map +0 -1
- package/dist/decorators/actor.decorators.js +0 -32
- package/dist/decorators/actor.decorators.js.map +0 -1
- package/dist/services/actor-registry/actor-registry.service.d.ts +0 -32
- package/dist/services/actor-registry/actor-registry.service.d.ts.map +0 -1
- package/dist/services/actor-registry/actor-registry.service.js +0 -220
- package/dist/services/actor-registry/actor-registry.service.js.map +0 -1
- package/dist/services/actor-registry/index.d.ts +0 -2
- package/dist/services/actor-registry/index.d.ts.map +0 -1
- package/dist/services/actor-registry/index.js.map +0 -1
- package/dist/services/actor-system/actor-system.service.d.ts +0 -19
- package/dist/services/actor-system/actor-system.service.d.ts.map +0 -1
- package/dist/services/actor-system/actor-system.service.js +0 -86
- package/dist/services/actor-system/actor-system.service.js.map +0 -1
- package/dist/services/actor-system/index.d.ts +0 -2
- package/dist/services/actor-system/index.d.ts.map +0 -1
- package/dist/services/actor-system/index.js.map +0 -1
- package/dist/services/executor-pool/executor-pool.service.d.ts +0 -38
- package/dist/services/executor-pool/executor-pool.service.d.ts.map +0 -1
- package/dist/services/executor-pool/executor-pool.service.js +0 -180
- package/dist/services/executor-pool/executor-pool.service.js.map +0 -1
- package/dist/services/executor-pool/index.d.ts +0 -2
- package/dist/services/executor-pool/index.d.ts.map +0 -1
- package/dist/services/executor-pool/index.js.map +0 -1
- package/dist/services/gate/gate.service.d.ts +0 -17
- package/dist/services/gate/gate.service.d.ts.map +0 -1
- package/dist/services/gate/gate.service.js +0 -81
- package/dist/services/gate/gate.service.js.map +0 -1
- package/dist/services/gate/index.d.ts +0 -2
- package/dist/services/gate/index.d.ts.map +0 -1
- package/dist/services/gate/index.js.map +0 -1
- package/dist/services/log/index.d.ts +0 -2
- package/dist/services/log/index.d.ts.map +0 -1
- package/dist/services/log/index.js +0 -18
- package/dist/services/log/index.js.map +0 -1
- package/dist/services/log/log.service.d.ts +0 -21
- package/dist/services/log/log.service.d.ts.map +0 -1
- package/dist/services/log/log.service.js +0 -92
- package/dist/services/log/log.service.js.map +0 -1
- package/dist/services/registry/index.d.ts +0 -4
- package/dist/services/registry/index.d.ts.map +0 -1
- package/dist/services/registry/index.js +0 -20
- package/dist/services/registry/index.js.map +0 -1
- package/dist/services/registry/registry.service.d.ts +0 -43
- package/dist/services/registry/registry.service.d.ts.map +0 -1
- package/dist/services/registry/registry.service.js +0 -402
- package/dist/services/registry/registry.service.js.map +0 -1
- package/dist/services/registry/registry.types.js.map +0 -1
- package/dist/services/registry/schema-converter.d.ts +0 -2
- package/dist/services/registry/schema-converter.d.ts.map +0 -1
- package/dist/services/registry/schema-converter.js +0 -27
- package/dist/services/registry/schema-converter.js.map +0 -1
- package/dist/services/result-collector/index.d.ts +0 -2
- package/dist/services/result-collector/index.d.ts.map +0 -1
- package/dist/services/result-collector/index.js +0 -18
- package/dist/services/result-collector/index.js.map +0 -1
- package/dist/services/result-collector/result-collector.service.d.ts +0 -17
- package/dist/services/result-collector/result-collector.service.d.ts.map +0 -1
- package/dist/services/result-collector/result-collector.service.js +0 -92
- package/dist/services/result-collector/result-collector.service.js.map +0 -1
- package/dist/services/scheduler/index.d.ts +0 -2
- package/dist/services/scheduler/index.d.ts.map +0 -1
- package/dist/services/scheduler/index.js +0 -18
- package/dist/services/scheduler/index.js.map +0 -1
- package/dist/services/scheduler/scheduler.service.d.ts +0 -17
- package/dist/services/scheduler/scheduler.service.d.ts.map +0 -1
- package/dist/services/scheduler/scheduler.service.js +0 -140
- package/dist/services/scheduler/scheduler.service.js.map +0 -1
- /package/dist/{services/registry → domain/interfaces}/registry.types.d.ts +0 -0
- /package/dist/{services/registry → domain/interfaces}/registry.types.js +0 -0
|
@@ -0,0 +1,494 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
19
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
20
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
21
|
+
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;
|
|
22
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
23
|
+
};
|
|
24
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
+
var ownKeys = function(o) {
|
|
26
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
+
var ar = [];
|
|
28
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
+
return ar;
|
|
30
|
+
};
|
|
31
|
+
return ownKeys(o);
|
|
32
|
+
};
|
|
33
|
+
return function (mod) {
|
|
34
|
+
if (mod && mod.__esModule) return mod;
|
|
35
|
+
var result = {};
|
|
36
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
+
__setModuleDefault(result, mod);
|
|
38
|
+
return result;
|
|
39
|
+
};
|
|
40
|
+
})();
|
|
41
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
42
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
43
|
+
};
|
|
44
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
45
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
46
|
+
};
|
|
47
|
+
var GrpcServerService_1;
|
|
48
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
49
|
+
exports.GrpcServerService = void 0;
|
|
50
|
+
const common_1 = require("@nestjs/common");
|
|
51
|
+
const path = __importStar(require("path"));
|
|
52
|
+
const message_router_1 = require("../services/message-router");
|
|
53
|
+
const workers_1 = require("../workers");
|
|
54
|
+
const cluster_1 = require("../cluster");
|
|
55
|
+
const constants_1 = require("../services/constants");
|
|
56
|
+
/**
|
|
57
|
+
* gRPC Server — handles all cross-replica and cross-service communication.
|
|
58
|
+
*
|
|
59
|
+
* RPCs:
|
|
60
|
+
* - SpawnWorker / TeardownWorker / ListWorkers: Master → Replica
|
|
61
|
+
* - EnqueueToWorker / EnqueueToWorkerAndWait: Master → Replica (dispatch)
|
|
62
|
+
* - Petition / PetitionAndWait: Replica → Master (routing)
|
|
63
|
+
* - ReportIdle: Replica → Master (idle teardown)
|
|
64
|
+
* - Forward / ForwardAndWait: Master → Master (cross-service)
|
|
65
|
+
*/
|
|
66
|
+
let GrpcServerService = GrpcServerService_1 = class GrpcServerService {
|
|
67
|
+
constructor(config, router, workerManager, masterCoordinator, leaderElection, clusterDiscovery) {
|
|
68
|
+
this.config = config;
|
|
69
|
+
this.router = router;
|
|
70
|
+
this.workerManager = workerManager;
|
|
71
|
+
this.masterCoordinator = masterCoordinator;
|
|
72
|
+
this.leaderElection = leaderElection;
|
|
73
|
+
this.clusterDiscovery = clusterDiscovery;
|
|
74
|
+
this.logger = new common_1.Logger(GrpcServerService_1.name);
|
|
75
|
+
this.server = null;
|
|
76
|
+
this.activePetitions = 0;
|
|
77
|
+
this.nodeAddressCache = null;
|
|
78
|
+
this.maxConcurrentPetitions = config.grpc?.maxConcurrentPetitions ?? 50;
|
|
79
|
+
}
|
|
80
|
+
async onModuleInit() {
|
|
81
|
+
if (!this.config.grpc?.enabled)
|
|
82
|
+
return;
|
|
83
|
+
let grpc;
|
|
84
|
+
let protoLoader;
|
|
85
|
+
try {
|
|
86
|
+
/* eslint-disable @typescript-eslint/no-var-requires */
|
|
87
|
+
grpc = require('@grpc/grpc-js');
|
|
88
|
+
protoLoader = require('@grpc/proto-loader');
|
|
89
|
+
/* eslint-enable @typescript-eslint/no-var-requires */
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
throw new Error('gRPC is enabled but @grpc/grpc-js and/or @grpc/proto-loader are not installed. ' +
|
|
93
|
+
'Run: npm install @grpc/grpc-js @grpc/proto-loader');
|
|
94
|
+
}
|
|
95
|
+
const protoPath = path.join(__dirname, 'atomicqueues.proto');
|
|
96
|
+
const packageDef = protoLoader.loadSync(protoPath, {
|
|
97
|
+
keepCase: false,
|
|
98
|
+
longs: String,
|
|
99
|
+
enums: String,
|
|
100
|
+
defaults: true,
|
|
101
|
+
oneofs: true,
|
|
102
|
+
});
|
|
103
|
+
const proto = grpc.loadPackageDefinition(packageDef);
|
|
104
|
+
const ServiceDef = proto.atomicqueues.v1
|
|
105
|
+
.AtomicQueuesNode;
|
|
106
|
+
const service = ServiceDef.service ?? ServiceDef;
|
|
107
|
+
this.server = new grpc.Server();
|
|
108
|
+
this.server.addService(service, {
|
|
109
|
+
// Master → Replica: worker management
|
|
110
|
+
spawnWorker: this.handleSpawnWorker.bind(this),
|
|
111
|
+
enqueueToWorker: this.handleEnqueueToWorker.bind(this),
|
|
112
|
+
enqueueToWorkerAndWait: this.handleEnqueueToWorkerAndWait.bind(this),
|
|
113
|
+
teardownWorker: this.handleTeardownWorker.bind(this),
|
|
114
|
+
listWorkers: this.handleListWorkers.bind(this),
|
|
115
|
+
// Replica → Master: petitions
|
|
116
|
+
petition: this.handlePetition.bind(this),
|
|
117
|
+
petitionAndWait: this.handlePetitionAndWait.bind(this),
|
|
118
|
+
reportIdle: this.handleReportIdle.bind(this),
|
|
119
|
+
reportWorkers: this.handleReportWorkers.bind(this),
|
|
120
|
+
// Master → Master: cross-service
|
|
121
|
+
forward: this.handleForward.bind(this),
|
|
122
|
+
forwardAndWait: this.handleForwardAndWait.bind(this),
|
|
123
|
+
// Health
|
|
124
|
+
ping: this.handlePing.bind(this),
|
|
125
|
+
});
|
|
126
|
+
const listenAddress = this.config.grpc.listenAddress ?? '0.0.0.0:50051';
|
|
127
|
+
const server = this.server;
|
|
128
|
+
await new Promise((resolve, reject) => {
|
|
129
|
+
server.bindAsync(listenAddress, grpc.ServerCredentials.createInsecure(), (err) => {
|
|
130
|
+
if (err)
|
|
131
|
+
reject(err);
|
|
132
|
+
else
|
|
133
|
+
resolve();
|
|
134
|
+
});
|
|
135
|
+
});
|
|
136
|
+
this.logger.log(`gRPC server listening on ${listenAddress}`);
|
|
137
|
+
this.masterCoordinator.setWorkerListProvider(() => Promise.resolve(this.workerManager.listWorkers()));
|
|
138
|
+
}
|
|
139
|
+
async onApplicationShutdown() {
|
|
140
|
+
const server = this.server;
|
|
141
|
+
if (!server)
|
|
142
|
+
return;
|
|
143
|
+
return new Promise((resolve) => {
|
|
144
|
+
server.tryShutdown(() => {
|
|
145
|
+
this.logger.log('gRPC server shut down');
|
|
146
|
+
resolve();
|
|
147
|
+
});
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
// =========================================================================
|
|
151
|
+
// Master → Replica: worker management
|
|
152
|
+
// =========================================================================
|
|
153
|
+
handleSpawnWorker(call, callback) {
|
|
154
|
+
try {
|
|
155
|
+
const entityKey = call.request.entityKey;
|
|
156
|
+
const spawned = this.workerManager.spawn(entityKey);
|
|
157
|
+
callback(null, { spawned, error: '' });
|
|
158
|
+
}
|
|
159
|
+
catch (err) {
|
|
160
|
+
callback(null, { spawned: false, error: err.message });
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
async handleEnqueueToWorker(call, callback) {
|
|
164
|
+
try {
|
|
165
|
+
const requestEpoch = call.request.masterEpoch;
|
|
166
|
+
const currentEpoch = this.leaderElection.epoch;
|
|
167
|
+
if (currentEpoch > 0 && requestEpoch < currentEpoch) {
|
|
168
|
+
callback(null, {
|
|
169
|
+
accepted: false,
|
|
170
|
+
rejectReason: `Stale epoch ${requestEpoch} < ${currentEpoch}`,
|
|
171
|
+
});
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
if (requestEpoch > 0) {
|
|
175
|
+
this.leaderElection.updateSeenEpoch(requestEpoch);
|
|
176
|
+
}
|
|
177
|
+
const entityKey = call.request.entityKey;
|
|
178
|
+
const envelope = call.request.message;
|
|
179
|
+
const message = this.deserializeEnvelope(envelope);
|
|
180
|
+
await this.workerManager.enqueue(entityKey, message);
|
|
181
|
+
callback(null, { accepted: true, rejectReason: '' });
|
|
182
|
+
}
|
|
183
|
+
catch (err) {
|
|
184
|
+
const errorMsg = err.message;
|
|
185
|
+
const rejectReason = errorMsg === 'WORKER_LIMIT_EXCEEDED' || errorMsg === 'QUEUE_DEPTH_EXCEEDED'
|
|
186
|
+
? 'RESOURCE_EXHAUSTED'
|
|
187
|
+
: errorMsg;
|
|
188
|
+
callback(null, { accepted: false, rejectReason });
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
async handleEnqueueToWorkerAndWait(call) {
|
|
192
|
+
const abortController = new AbortController();
|
|
193
|
+
call.on('cancelled', () => abortController.abort());
|
|
194
|
+
try {
|
|
195
|
+
const requestEpoch = call.request.masterEpoch;
|
|
196
|
+
const currentEpoch = this.leaderElection.epoch;
|
|
197
|
+
if (currentEpoch > 0 && requestEpoch < currentEpoch) {
|
|
198
|
+
if (!call.cancelled) {
|
|
199
|
+
call.write({ correlationId: '', error: `Stale epoch ${requestEpoch} < ${currentEpoch}` });
|
|
200
|
+
call.end();
|
|
201
|
+
}
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
204
|
+
if (requestEpoch > 0) {
|
|
205
|
+
this.leaderElection.updateSeenEpoch(requestEpoch);
|
|
206
|
+
}
|
|
207
|
+
const entityKey = call.request.entityKey;
|
|
208
|
+
const envelope = call.request.message;
|
|
209
|
+
const message = this.deserializeEnvelope(envelope);
|
|
210
|
+
const result = await this.workerManager.enqueueAndWait(entityKey, message, this.resolveAndWaitTimeout(message.entityType), abortController.signal);
|
|
211
|
+
if (!call.cancelled) {
|
|
212
|
+
call.write({
|
|
213
|
+
correlationId: message.correlationId ?? '',
|
|
214
|
+
result: Buffer.from(JSON.stringify(result), 'utf-8'),
|
|
215
|
+
});
|
|
216
|
+
call.end();
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
catch (err) {
|
|
220
|
+
if (!call.cancelled) {
|
|
221
|
+
const errorMsg = err.message;
|
|
222
|
+
const error = errorMsg === 'WORKER_LIMIT_EXCEEDED' || errorMsg === 'QUEUE_DEPTH_EXCEEDED'
|
|
223
|
+
? 'RESOURCE_EXHAUSTED'
|
|
224
|
+
: errorMsg;
|
|
225
|
+
call.write({ correlationId: '', error });
|
|
226
|
+
call.end();
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
async handleTeardownWorker(call, callback) {
|
|
231
|
+
try {
|
|
232
|
+
const entityKey = call.request.entityKey;
|
|
233
|
+
await this.workerManager.teardown(entityKey);
|
|
234
|
+
callback(null, { tornDown: true });
|
|
235
|
+
}
|
|
236
|
+
catch (err) {
|
|
237
|
+
callback(null, { tornDown: false });
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
handleListWorkers(_call, callback) {
|
|
241
|
+
const workerKeys = this.workerManager.listWorkers();
|
|
242
|
+
const workers = workerKeys.map((key) => ({
|
|
243
|
+
entityKey: key,
|
|
244
|
+
queueDepth: 0,
|
|
245
|
+
isProcessing: false,
|
|
246
|
+
lastActive: Date.now(),
|
|
247
|
+
}));
|
|
248
|
+
callback(null, { workers });
|
|
249
|
+
}
|
|
250
|
+
// =========================================================================
|
|
251
|
+
// Replica → Master: petitions
|
|
252
|
+
// =========================================================================
|
|
253
|
+
async handlePetition(call, callback) {
|
|
254
|
+
if (!this.masterCoordinator.isMaster()) {
|
|
255
|
+
callback(null, { accepted: false, rejectReason: 'NOT_MASTER' });
|
|
256
|
+
return;
|
|
257
|
+
}
|
|
258
|
+
const requestEpoch = call.request.masterEpoch;
|
|
259
|
+
const currentEpoch = this.leaderElection.epoch;
|
|
260
|
+
if (requestEpoch > 0 && requestEpoch > currentEpoch) {
|
|
261
|
+
callback(null, { accepted: false, rejectReason: 'STALE_MASTER' });
|
|
262
|
+
return;
|
|
263
|
+
}
|
|
264
|
+
if (this.masterCoordinator.isRebuildingTable()) {
|
|
265
|
+
callback(null, { accepted: false, rejectReason: 'MASTER_REBUILDING' });
|
|
266
|
+
return;
|
|
267
|
+
}
|
|
268
|
+
if (this.maxConcurrentPetitions > 0 && this.activePetitions >= this.maxConcurrentPetitions) {
|
|
269
|
+
callback(null, { accepted: false, rejectReason: 'RESOURCE_EXHAUSTED' });
|
|
270
|
+
return;
|
|
271
|
+
}
|
|
272
|
+
this.activePetitions++;
|
|
273
|
+
try {
|
|
274
|
+
const entityKey = call.request.entityKey;
|
|
275
|
+
const envelope = call.request.message;
|
|
276
|
+
const message = this.deserializeEnvelope(envelope);
|
|
277
|
+
await this.router.dispatchAsMaster(entityKey, message);
|
|
278
|
+
const resolution = this.masterCoordinator.resolve(entityKey);
|
|
279
|
+
const assignedReplicaAddr = await this.getReplicaAddress(resolution.replicaId);
|
|
280
|
+
callback(null, {
|
|
281
|
+
accepted: true,
|
|
282
|
+
rejectReason: '',
|
|
283
|
+
assignedReplicaId: resolution.replicaId,
|
|
284
|
+
assignedReplicaAddr,
|
|
285
|
+
});
|
|
286
|
+
}
|
|
287
|
+
catch (err) {
|
|
288
|
+
callback(null, { accepted: false, rejectReason: err.message });
|
|
289
|
+
}
|
|
290
|
+
finally {
|
|
291
|
+
this.activePetitions--;
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
async handlePetitionAndWait(call) {
|
|
295
|
+
if (!this.masterCoordinator.isMaster()) {
|
|
296
|
+
call.write({ correlationId: '', error: 'NOT_MASTER' });
|
|
297
|
+
call.end();
|
|
298
|
+
return;
|
|
299
|
+
}
|
|
300
|
+
const requestEpoch = call.request.masterEpoch;
|
|
301
|
+
const currentEpoch = this.leaderElection.epoch;
|
|
302
|
+
if (requestEpoch > 0 && requestEpoch > currentEpoch) {
|
|
303
|
+
call.write({ correlationId: '', error: 'STALE_MASTER' });
|
|
304
|
+
call.end();
|
|
305
|
+
return;
|
|
306
|
+
}
|
|
307
|
+
if (this.masterCoordinator.isRebuildingTable()) {
|
|
308
|
+
call.write({ correlationId: '', error: 'MASTER_REBUILDING' });
|
|
309
|
+
call.end();
|
|
310
|
+
return;
|
|
311
|
+
}
|
|
312
|
+
if (this.maxConcurrentPetitions > 0 && this.activePetitions >= this.maxConcurrentPetitions) {
|
|
313
|
+
call.write({ correlationId: '', error: 'RESOURCE_EXHAUSTED' });
|
|
314
|
+
call.end();
|
|
315
|
+
return;
|
|
316
|
+
}
|
|
317
|
+
this.activePetitions++;
|
|
318
|
+
let cancelled = false;
|
|
319
|
+
const cancelPromise = new Promise((_, reject) => {
|
|
320
|
+
call.on('cancelled', () => {
|
|
321
|
+
cancelled = true;
|
|
322
|
+
reject(new Error('Stream cancelled by client'));
|
|
323
|
+
});
|
|
324
|
+
});
|
|
325
|
+
try {
|
|
326
|
+
const entityKey = call.request.entityKey;
|
|
327
|
+
const envelope = call.request.message;
|
|
328
|
+
const message = this.deserializeEnvelope(envelope);
|
|
329
|
+
const result = await Promise.race([
|
|
330
|
+
this.router.dispatchAsMasterAndWait(entityKey, message, this.resolveAndWaitTimeout(message.entityType)),
|
|
331
|
+
cancelPromise,
|
|
332
|
+
]);
|
|
333
|
+
if (!cancelled) {
|
|
334
|
+
call.write({
|
|
335
|
+
correlationId: message.correlationId ?? '',
|
|
336
|
+
result: Buffer.from(JSON.stringify(result), 'utf-8'),
|
|
337
|
+
});
|
|
338
|
+
call.end();
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
catch (err) {
|
|
342
|
+
if (!cancelled) {
|
|
343
|
+
call.write({ correlationId: '', error: err.message });
|
|
344
|
+
call.end();
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
finally {
|
|
348
|
+
this.activePetitions--;
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
handleReportIdle(call, callback) {
|
|
352
|
+
const entityKey = call.request.entityKey;
|
|
353
|
+
this.masterCoordinator.release(entityKey);
|
|
354
|
+
callback(null, { shouldTeardown: true });
|
|
355
|
+
}
|
|
356
|
+
handleReportWorkers(call, callback) {
|
|
357
|
+
const replicaId = call.request.replicaId;
|
|
358
|
+
const entityKeys = call.request.entityKeys;
|
|
359
|
+
const epoch = call.request.epoch;
|
|
360
|
+
const accepted = this.masterCoordinator.acceptWorkerReport(replicaId, entityKeys, epoch);
|
|
361
|
+
callback(null, { accepted, rejectReason: accepted ? '' : 'EPOCH_MISMATCH_OR_NOT_MASTER' });
|
|
362
|
+
}
|
|
363
|
+
// =========================================================================
|
|
364
|
+
// Master → Master: cross-service
|
|
365
|
+
// =========================================================================
|
|
366
|
+
async handleForward(call, callback) {
|
|
367
|
+
try {
|
|
368
|
+
const envelope = call.request;
|
|
369
|
+
const senderEpoch = envelope.senderEpoch;
|
|
370
|
+
if (senderEpoch > 0) {
|
|
371
|
+
this.logger.debug(`Forward from origin=${envelope.originServer} epoch=${senderEpoch}`);
|
|
372
|
+
}
|
|
373
|
+
const data = JSON.parse(Buffer.from(envelope.payload).toString('utf-8'));
|
|
374
|
+
await this.router.enqueue(envelope.entityType, envelope.name, envelope.entityId, data, {
|
|
375
|
+
correlationId: envelope.correlationId || undefined,
|
|
376
|
+
isQuery: envelope.isQuery,
|
|
377
|
+
maxAttempts: envelope.maxAttempts,
|
|
378
|
+
});
|
|
379
|
+
callback(null, { accepted: true, rejectReason: '' });
|
|
380
|
+
}
|
|
381
|
+
catch (err) {
|
|
382
|
+
callback(null, { accepted: false, rejectReason: err.message });
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
async handleForwardAndWait(call) {
|
|
386
|
+
let cancelled = false;
|
|
387
|
+
const cancelPromise = new Promise((_, reject) => {
|
|
388
|
+
call.on('cancelled', () => {
|
|
389
|
+
cancelled = true;
|
|
390
|
+
reject(new Error('Stream cancelled by client'));
|
|
391
|
+
});
|
|
392
|
+
});
|
|
393
|
+
try {
|
|
394
|
+
const envelope = call.request;
|
|
395
|
+
const senderEpoch = envelope.senderEpoch;
|
|
396
|
+
if (senderEpoch > 0) {
|
|
397
|
+
this.logger.debug(`ForwardAndWait from origin=${envelope.originServer} epoch=${senderEpoch}`);
|
|
398
|
+
}
|
|
399
|
+
const data = JSON.parse(Buffer.from(envelope.payload).toString('utf-8'));
|
|
400
|
+
const result = await Promise.race([
|
|
401
|
+
this.router.enqueueAndWait(envelope.entityType, envelope.name, envelope.entityId, data, this.resolveAndWaitTimeout(envelope.entityType), { maxAttempts: envelope.maxAttempts }),
|
|
402
|
+
cancelPromise,
|
|
403
|
+
]);
|
|
404
|
+
if (!cancelled) {
|
|
405
|
+
call.write({
|
|
406
|
+
correlationId: envelope.correlationId,
|
|
407
|
+
result: Buffer.from(JSON.stringify(result), 'utf-8'),
|
|
408
|
+
});
|
|
409
|
+
call.end();
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
catch (err) {
|
|
413
|
+
if (!cancelled) {
|
|
414
|
+
call.write({
|
|
415
|
+
correlationId: call.request.correlationId,
|
|
416
|
+
error: err.message,
|
|
417
|
+
});
|
|
418
|
+
call.end();
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
// =========================================================================
|
|
423
|
+
// Health
|
|
424
|
+
// =========================================================================
|
|
425
|
+
handlePing(_call, callback) {
|
|
426
|
+
callback(null, {
|
|
427
|
+
serverId: this.config.grpc?.serverId ?? 'unknown',
|
|
428
|
+
isMaster: this.masterCoordinator.isMaster(),
|
|
429
|
+
activeWorkers: this.workerManager.workerCount(),
|
|
430
|
+
queueDepth: this.workerManager.totalQueueDepth(),
|
|
431
|
+
entityTypes: [],
|
|
432
|
+
});
|
|
433
|
+
}
|
|
434
|
+
// =========================================================================
|
|
435
|
+
// Helpers
|
|
436
|
+
// =========================================================================
|
|
437
|
+
resolveAndWaitTimeout(entityType) {
|
|
438
|
+
if (entityType) {
|
|
439
|
+
const entityConfig = this.config.entities?.[entityType];
|
|
440
|
+
if (entityConfig?.replyTimeout)
|
|
441
|
+
return entityConfig.replyTimeout;
|
|
442
|
+
}
|
|
443
|
+
return this.config.grpc?.deadlines?.andWaitMs ?? 60000;
|
|
444
|
+
}
|
|
445
|
+
async getReplicaAddress(replicaId) {
|
|
446
|
+
const localId = this.config.grpc?.serverId ?? 'local';
|
|
447
|
+
if (replicaId === localId) {
|
|
448
|
+
return this.config.grpc?.advertisedAddress ?? this.config.grpc?.listenAddress ?? '';
|
|
449
|
+
}
|
|
450
|
+
if (!this.clusterDiscovery)
|
|
451
|
+
return '';
|
|
452
|
+
if (this.nodeAddressCache && Date.now() < this.nodeAddressCache.expiresAt) {
|
|
453
|
+
return this.nodeAddressCache.map.get(replicaId) ?? '';
|
|
454
|
+
}
|
|
455
|
+
const nodes = await this.clusterDiscovery.getNodes();
|
|
456
|
+
const map = new Map();
|
|
457
|
+
for (const node of nodes) {
|
|
458
|
+
map.set(node.serverId, node.grpcAddress);
|
|
459
|
+
}
|
|
460
|
+
this.nodeAddressCache = { map, expiresAt: Date.now() + 2000 };
|
|
461
|
+
return map.get(replicaId) ?? '';
|
|
462
|
+
}
|
|
463
|
+
deserializeEnvelope(envelope) {
|
|
464
|
+
const payload = envelope.payload
|
|
465
|
+
? JSON.parse(Buffer.from(envelope.payload).toString('utf-8'))
|
|
466
|
+
: {};
|
|
467
|
+
return {
|
|
468
|
+
id: envelope.id ?? '',
|
|
469
|
+
name: envelope.name ?? '',
|
|
470
|
+
data: payload,
|
|
471
|
+
entityType: envelope.entityType ?? '',
|
|
472
|
+
entityId: envelope.entityId ?? '',
|
|
473
|
+
correlationId: envelope.correlationId || undefined,
|
|
474
|
+
isQuery: envelope.isQuery || undefined,
|
|
475
|
+
enqueuedAt: envelope.enqueuedAt ?? Date.now(),
|
|
476
|
+
attempts: envelope.attempts ?? 0,
|
|
477
|
+
maxAttempts: envelope.maxAttempts ?? 1,
|
|
478
|
+
};
|
|
479
|
+
}
|
|
480
|
+
};
|
|
481
|
+
exports.GrpcServerService = GrpcServerService;
|
|
482
|
+
exports.GrpcServerService = GrpcServerService = GrpcServerService_1 = __decorate([
|
|
483
|
+
(0, common_1.Injectable)(),
|
|
484
|
+
__param(0, (0, common_1.Inject)(constants_1.ATOMIC_QUEUES_CONFIG)),
|
|
485
|
+
__param(1, (0, common_1.Inject)((0, common_1.forwardRef)(() => message_router_1.MessageRouter))),
|
|
486
|
+
__param(3, (0, common_1.Inject)((0, common_1.forwardRef)(() => cluster_1.MasterCoordinator))),
|
|
487
|
+
__param(5, (0, common_1.Optional)()),
|
|
488
|
+
__metadata("design:paramtypes", [Object, message_router_1.MessageRouter,
|
|
489
|
+
workers_1.EntityWorkerManager,
|
|
490
|
+
cluster_1.MasterCoordinator,
|
|
491
|
+
cluster_1.LeaderElectionService,
|
|
492
|
+
cluster_1.ClusterDiscoveryService])
|
|
493
|
+
], GrpcServerService);
|
|
494
|
+
//# sourceMappingURL=grpc-server.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grpc-server.service.js","sourceRoot":"","sources":["../../src/grpc/grpc-server.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/grpc/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC"}
|
|
@@ -14,5 +14,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./
|
|
17
|
+
__exportStar(require("./grpc-server.service"), exports);
|
|
18
|
+
__exportStar(require("./grpc-client-pool.service"), exports);
|
|
18
19
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/grpc/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wDAAsC;AACtC,6DAA2C"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,OAAO,CAAC;AACtB,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -19,4 +19,8 @@ __exportStar(require("./module"), exports);
|
|
|
19
19
|
__exportStar(require("./services"), exports);
|
|
20
20
|
__exportStar(require("./decorators"), exports);
|
|
21
21
|
__exportStar(require("./utils"), exports);
|
|
22
|
+
__exportStar(require("./workers"), exports);
|
|
23
|
+
__exportStar(require("./wal"), exports);
|
|
24
|
+
__exportStar(require("./grpc"), exports);
|
|
25
|
+
__exportStar(require("./cluster"), exports);
|
|
22
26
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,2CAAyB;AACzB,6CAA2B;AAC3B,+CAA6B;AAC7B,0CAAwB"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,2CAAyB;AACzB,6CAA2B;AAC3B,+CAA6B;AAC7B,0CAAwB;AACxB,4CAA0B;AAC1B,wCAAsB;AACtB,yCAAuB;AACvB,4CAA0B"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { DynamicModule, Type } from '@nestjs/common';
|
|
2
2
|
import { IAtomicQueuesModuleConfig } from '../domain';
|
|
3
|
+
export declare const ATOMIC_QUEUES_SERVER_ID = "ATOMIC_QUEUES_SERVER_ID";
|
|
3
4
|
export interface AtomicQueuesModuleAsyncOptions {
|
|
4
5
|
imports?: Type<unknown>[];
|
|
5
6
|
useFactory: (...args: unknown[]) => Promise<IAtomicQueuesModuleConfig> | IAtomicQueuesModuleConfig;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"atomic-queues.module.d.ts","sourceRoot":"","sources":["../../src/module/atomic-queues.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA4B,IAAI,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"atomic-queues.module.d.ts","sourceRoot":"","sources":["../../src/module/atomic-queues.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA4B,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAI/E,OAAO,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAC;AAwBtD,eAAO,MAAM,uBAAuB,4BAA4B,CAAC;AAoBjE,MAAM,WAAW,8BAA8B;IAC7C,OAAO,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;IAC1B,UAAU,EAAE,CACV,GAAG,IAAI,EAAE,OAAO,EAAE,KACf,OAAO,CAAC,yBAAyB,CAAC,GAAG,yBAAyB,CAAC;IACpE,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,qBAEa,kBAAkB;IAC7B,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,yBAAyB,GAAG,aAAa;IAmChE,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,8BAA8B,GAAG,aAAa;IA+C3E,OAAO,CAAC,MAAM,CAAC,oBAAoB;CAcpC"}
|